Вопросы безопасности сетевых протоколов
Безопасность: надёжность и секретность.
- Ненадёжная природа всемирной сети и борьба с ней
- Повышение связности
- Резервирование ресурсов (например, IPv6) и оverprovisioning
- Репликация и «приближение» сервисов
- ЗБЧ
- Секретность и Интернет ☺
- Проблемы аутентичности данных
- Проблемы скрытия данных
Чрезмерно упрощённая классификация видов атак:
- Порча канала и DOS
- Чтение / деанонимизация
- Модификация / полная подмена данных
История сетевых протоколов в свете защиты данных
«Просто» протоколы: FTP, SMTP, POP, … (см. dsniff)
- Security through obscurity и другие наивные методы шифрования (например, обмен ключами в начале сеанса), Basic HTTP Auth, MIT-MAGIC-COOKIE-1 и т. п.
- Проблема «прозрачного» обмена ключами — тот же dsniff will do
- Введение алгоритмов шифрования:
- в прикладной протокол (STARTTLS в SMTP)
- в «уровень представления» согласно модели ISO/OSI
- в «межъящичное пространство» TCP/IP (TLS)
- Использование асимметричного шифрования
- Как шифрованные тоннели победили шифрованный payload.
- Пассивный анализ
- Лёгкая дешифрация мелких/стандартных пакетов
- Даже если шифровать только payload, перестаёт работать разумный контент-анализатор (например, NAT)
«Полицейские и воры» в современной криптографии (см. историю атак на SSL/T%LS)
Симметричное и асимметричное шифрование
Симметричное шифрование:
- Обмен ключами ⇒ вероятность засвечивания
- Мнение папаши Мюллера: «Что знают двое, знает и свинья»
- Нет аутентичности
Асимметричное шифрование (Диффи, Хеллман, Меркель 1975), (Ривест, Шамир, Адельман 1977), (неизвестные британские учёные ранних 70-х):
- Начало:
- (Диффи, Хеллман, Меркель 1975) Использование различных, не выводимых друг из друга функций шифрования и дешифрования
- (Ривест, Шамир, Адельман 1977) RSA
- (неизвестные британские учёные ранних 70-х) «Мы это раньше открыли, но нас засекретили»
- Открытый (передаваемый) и закрытый (секретный) ключи:
- запрет передачи секретного ключа
обеспечение секретности: A: ОБ(данные) → B: ЗБ(данные)
обеспечение аутентичности: A: ЗА(данные) → B: ОА(данные)
- Вычислительная сложность, использование симметричного шифрования
- Проблема надёжности первоначального обмена ключами
- Атака «man-in-the-middle»
- Подписывание ключа?
SSL-сертификаты и цепочка доверия
HTTPS:
- 443 порт
- Частичная передача заголовков (например, доменного имени)
- Первоначальный обмен ключами?
- Организации, подписывающие вам ключи (обычно за деньги)
www.cacert.org и https://letsencrypt.org
TODO
- Можно самому себе подписать
- Первоначальный обмен ключами? ☺
- Можно добавить собственный ключ в список доверенных
Пример: настройка lighttpd
Для начала:
- NAT и forwarding
- resolved как базовый DNS-сервер
- lighttpd и elinks
На клиенте: elinks работает, wget — нет, потому что самоподписанные
https://www.howtouselinux.com/post/install-a-ca-certificate-on-linux (update-ca-trust)
Использование SSH
См. LecturesCMC/LinuxApplicationDevelopment2021/00_GitSsh
TODO