Анализ сессии в Wireshark, например, с сайтом wikipedia.org, демонстрирует установление TCP-соединения и отправку клиентом сообщения TLS Hello с перечнем поддерживаемых криптографических наборов (cipher suites). Сервер выбирает один из них, например, использующий обмен ключами по алгоритму криптографии эллиптических кривых Диффи-Хеллмана (ECDHE) и алгоритм цифровой подписи на эллиптических кривых (ECDSA). Далее следуют алгоритмы шифрования и хеширования, но нас интересует генерация ключей на стороне веб-браузера и веб-сервера.
Анализ TLS-пакетов
Следующий TLS-пакет содержит сообщения, включая Server Key Exchange. В разделе handshake protocol server key exchange, в секции elliptic curve diffie-hellman parameters, находятся параметры:
- curve type и named curve: определяют кривую, используемую для вычисления точек. Различные параметры a и b в уравнении эллиптической кривой приводят к различным кривым. Сервер выбирает одну из предопределенных кривых, известных своей криптографической стойкостью.
- public key length: длина открытого ключа.
- public key: открытый ключ – точка A, вычисленная сервером на кривой. Точка G (начальная точка) предопределена кривой и не генерируется. Сервер сообщает браузеру тип кривой, а браузер знает начальную точку G.
- signature algorithm: алгоритм подписи.
- signature: электронная подпись.
Сервер отправляет свой открытый ключ (A), но не закрытый (a).
Защита от атак «человек посередине»
Атака «человек посередине» подразумевает перехват злоумышленником обмена ключами между двумя сторонами, устанавливая отдельные ключи для связи с каждой из них. Защита обеспечивается электронной подписью.
Сервер подписывает пакеты своим закрытым ключом, используя алгоритм ECDSA (Elliptic Curve Digital Signature Algorithm), указанный в сообщении Server Hello. Подпись, созданная с использованием SHA, находится в разделе server key exchange. Браузер проверяет подпись, используя открытый ключ сервера. Успешная проверка гарантирует, что параметры отправлены веб-сервером, а не третьей стороной, так как только сервер владеет соответствующим закрытым ключом. Это предотвращает атаки «человек посередине».
Обмен ключами: ответ клиента
В ответе клиента (TLS-пакет, содержащий Client Key Exchange, Change Cipher Spec и зашифрованное сообщение) нас интересует раздел elliptic curve diffie-hellman client parameters. Клиент отправляет свой открытый ключ (B), длиной 32 шестнадцатеричных символа. После этого клиент отправляет зашифрованные данные приложения, так как обе стороны обладают общим ключом, вычисленным по описанному алгоритму.
Анализ показал использование ECDHE и ECDSA в обмене ключами TLS. ECDSA повышает безопасность, предотвращая атаки «человек посередине». Понимание этого процесса критически важно для безопасной связи. В дальнейшем рассмотрим сертификаты и методы обеспечения безопасности веб-сайтов.