Похожие презентации:
Использование безопасных соединений по протоколам 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 локального
сервера, получим соответствующее
предупреждение