Использование безопасных соединений по протоколам HTTPS с использованием ключей шифрования для SSL/TLS (Two-way TLS)
Что такое HTTPS, SSL/TLS?
Назначение
Возможности
Ограничения TLS
Обеспечение безопасности TLS
Принцип работы HTTPS и SSL/TLS
Установление связи в TLS (one-way)
Обмен ключами
Возобновление сессии
Установление связи в TLS (two-way)
Основные уязвимости TLS
Пример использования (HTTPS-сайт)
Серверная часть
Итог
592.77K
Category: internetinternet

Использование безопасных соединений по протоколам HTTPS с использованием ключей шифрования для SSL/TLS (Two-way TLS)

1. Использование безопасных соединений по протоколам HTTPS с использованием ключей шифрования для SSL/TLS (Two-way TLS)

Подготовил Иванов Алексей

2. Что такое HTTPS, SSL/TLS?

• HTTPS (HTTP Secure) - зашифрованная
версия HTTP протокола. Использует SSL
или TLS для шифрования соединения.
• SSL (Secure Sockets Layer) и TLS
(Transport Level Security) —
криптографические протоколы,
обеспечивающие защищенную
передачу данных в компьютерной сети.
• Разработан в 1994, первая «рабочая»
версия SSL 2.0 выпущена в 1995 году
• TLS является развитием SLL 3.0, но они
несовместимы

3. Назначение

• Первоначально в браузере Netscape Navigator для развития
Интернета как инструмента бизнеса
• Затем стандартизирован для общего использования поверх TCP и
прочих протоколов передачи данных для их защиты
• Также позволяет производить идентификацию сервера и клиента
(two-way authentication)

4. Возможности

• Протокол TLS можно использовать также в мессенджерах, IPтелефонии и любых каналах данных
• Предоставляет защиту от снифферских атак и атак man-in-themiddle (при правильной настройке)
• TLS даёт возможность клиент-серверным приложениям
осуществлять связь в сети таким образом, что нельзя
производить прослушивание пакетов и
осуществить несанкционированный доступ
• Возможно использовать разные типы и алгоритмы шифрования, в
зависимости от договоренности

5. Ограничения TLS

• Не работает с протоколами UDP и ICMP;
• Необходимо отслеживать состояния соединения;
• Дополнительные требования к программному обеспечению о
поддержке TLS;
• Возможно использование нестойких алгоритмов шифрования,
неправильная настройка и программная реализация;
• Существуют известные уязвимости, если используется не
последняя версия.

6. Обеспечение безопасности TLS

• Защита от понижения версии протокола к предыдущей версии
или менее надёжному алгоритму шифрования;
• Нумерация последовательных записей приложения и
использование порядкового номера в коде аутентификации
сообщения (MAC);
• Использование ключа в идентификаторе сообщения (только
владелец ключа может сгенерировать код аутентификации
сообщения);
• Сообщение, которым заканчивается подтверждение связи
(«Finished»), используется для подтверждения аутентичности
ранее переданных сообщений и, таким образом, выбранных
параметров TLS-соединения.

7. Принцип работы HTTPS и SSL/TLS

• Основаны на криптографии с открытым ключом. Используется как
используется как асимметричная схема шифрования (для
выработки общего секретного ключа), так и симметричная (для
обмена данными, зашифрованными общим ключом).
• Стандартный порт TCP-443 или настраивать отдельно.
• Для подготовки веб-серверу необходимо установить сертификат
открытого ключа.
• То же самое для two-way необходимо сделать клиентам.
• На одном IP – один HTTPS-сайт.

8. Установление связи в TLS (one-way)

9. Обмен ключами

• Очень долгий процесс – есть система восстановления сессии;
• Чаще всего происходит по алгоритму RSA – если злоумышленник
получит закрытый ключ, то получит доступ ко всей сессии;
• Современными браузерами предпочтителен алгоритм ДиффиХеллмана + временные ключи;
• Шифрование с открытым ключом только при TLS-handshake,
после симметричная криптография – так дешевле.

10. Возобновление сессии

11. Установление связи в TLS (two-way)

12. Основные уязвимости TLS

• Совместное использование HTTP и HTTPS – доступ к HTTPS через HTTP.
Решается принудительным использованием HTTPS.
• Атаки с использованием анализа трафика – измерение размера
трафика и времени передачи и вывод из этого свойств соединения.
Нет решения в рамках технологии.
• Man in the middle – подмена сертификата сервера самозаверенным
путем встраивания злоумышленника между клиентом и сервером.
Возможна из-за игнорирования пользователем двойной проверки
сертификата браузером.
• Атака протокола рукопожатия – подмена сообщений рукопожатия
(Finished), что не позволяет установить безопасное соединение.
• Раскрытие шифров.

13. Пример использования (HTTPS-сайт)

• Создадим самоподписанный сертификат и сгенерируем закрытый
ключ с помощью программы OpenSSL
• Для этого воспользуемся командой ниже. Она генерирует пару
сертификат (cert.pem)/ключ (4096 битный rsa ключ в файл
key.pem) сроком на 365 дней

14. Серверная часть

• Используем Node.js + Express
• Создадим файл server.js со следующим
содержанием
• В нем мы подключаем наши файлы
сертификата и закрытого ключа
• Обращаясь к порту 3000 локального
сервера, получим соответствующее
предупреждение

15.

16. Итог

English     Русский Rules