Вопросы безопасности сетевых протоколов

Безопасность: надёжность и секретность.

  1. Ненадёжная природа всемирной сети и борьба с ней
    • Повышение связности
    • Резервирование ресурсов (например, IPv6) и оverprovisioning
    • Репликация и «приближение» сервисов
    • ЗБЧ
  2. Секретность и Интернет ☺
    • Проблемы аутентичности данных
    • Проблемы скрытия данных

Чрезмерно упрощённая классификация видов атак:

История сетевых протоколов в свете защиты данных

  1. «Просто» протоколы: FTP, SMTP, POP, … (см. dsniff), Basic HTTP Auth

  2. Security through obscurity и другие наивные методы шифрования (например, обмен ключами в начале сеанса): MIT-MAGIC-COOKIE-1 и т. п.
    • Проблема «прозрачного» обмена ключами. Например, MMC-1 предназначены для локальных клиентов: ключ записывается в файл (из которого его читает сервер), а подключение происходит по сети к тому же серверу

  3. Введение алгоритмов шифрования:
    • в уровень представления согласно модели ISO/OSI (примерно работал SSL-1.0): сначала защищённый канал, потом — прикладной протокол

    • в прикладной протокол: HTTPS, STARTTLS в почтовых и некоторых других прикладных протоколах и т. п.

    • в «межъящичное пространство» TCP/IP TLS, более

  4. Использование асимметричного шифрования
  5. Как шифрованные тоннели победили шифрованный payload.
    • Пассивный анализ
    • Лёгкая дешифрация мелких/стандартных пакетов
    • Даже если шифровать только payload, перестаёт работать разумный контент-анализатор (например, NAT)
  6. «Полицейские и воры» в современной криптографии (см. Возможные атаки на TLS, История атак на TLS/SSL)

Несекретность протоколов «первого поколения»

Давно нигде не применяются.

простейший сервер в BASIC HTTP auth

Симметричное шифрование

Симметричное шифрование:

Учётные данные: дайджест вместо пароля

Если шифрование используется для аутентификации, можно обмениваться не ключами, а т. н. дайджестами — невосстановимыми хешами достаточно большого размера.

Пример: HTTP Digest Access Authentication

Если вы храните на сервере какие-то данные и сравниваете ответ пользователя с ними, то эти данные и есть пароль

Асимметричное шифрование

Проблема надёжности первоначального обмена ключами

Если вся значимая информация доступна для перехвата (чтения и воспроизведения) стороннему наблюдателю (например, и открытый ключ, и шифруемые им данные передаются в одном сеансе), возможна т. н. «Атака посредника» (man-in-the-middle, MItM):

Использование SSH

См. LecturesCMC/LinuxApplicationDevelopment2021/00_GitSsh

Пример MItM-атаки в классической литературе

SSL-сертификаты и цепочка доверия

SSH редко требует передачи ключа, можно потратиться на сравнение хешей вручную.

Другое дело HTTPS:

Пример для socat (чуть-чуть усложняя создание самоподписанного сертификата)

Запустим сервер

# socat openssl-listen:1234,reuseaddr,fork,cert=srv.crt,key=srv.key,verify=0 EXEC:/usr/bin/cal

Запустим клиент:

# socat openssl:server_name:1234,cafile=rootCA.crt -

<!> Если указать не такой server_name, как в сертификате, поверка не пройдёт!

Д/З

TODO в идеале — сделать ssh-mitm (если это просто), если нет — повторить последний раздел лекции

LecturesCMC/LinuxNetwork2025/12_NetworkSecurity (последним исправлял пользователь FrBrGeorge 2025-05-12 16:26:48)