Logjam

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Logjam — атака на TLS/SSL. Данная атака способна полностью расшифровать или взломать любое TLS соединение, установленное с недобросовестно сконфигурированными веб-сервисами или почтовыми серверами. Также как и FREAK Logjam основана на понижении уровня шифрования до экспортного уровня, где длина ключа составляет 512 бит. Отличие состоит в том, что Logjam атакует алгоритм Диффи — Хеллмана.

Атака на алгоритм Диффи — Хеллмана[править | править код]

Наиболее известный и распространённый способ атаковать Диффи — Хеллмана заключается в перехвате сообщения и извлечения величины ga , потом находится «секрет» a. Задача нахождения этого «секрета» называется дискретно-логарифмической задачей, которая считается математически нерешаемой, если Диффи — Хеллман был имплементирован из простого числа p размером 2048 бит или больше.

Когда простое число p имеет размер 512 бит или меньше, то становится возможным получить значение a из ga mod p и прочитать трафик соединения. Найти a можно, используя NFS (Number Field Sieve).

Работа Logjam[править | править код]

Существует мало современных TLS/SSL серверов, которые используют 512-битный ключ Диффи — Хеллмана, по большей части такие сервера используются в маршрутизаторах или в видеоконференционных шлюзах. Тем не менее, есть второй класс серверов, которые способны поддерживать 512-битный Диффи — Хеллман по просьбе клиента, используя специальный режим EXPORT_DHE. По данным Alexa, из миллиона самых популярных сайтов 8,4 % являются уязвимыми к Logjam.

Хотя большинство приличных клиентов (популярные браузеры) не поддерживают EXPORT_DHE, существует уязвимость, позволяющая им принимать ослабленный ключ.

До того как клиенты и сервер начнут процесс шифрования, им надо решить каким шифром пользоваться. Это происходит в процессе «переговоров», когда клиент предлагает некоторые опции (RSA, DHE, DHE_EXPORT, RSA_EXPORT и т. д.) и сервер выбирает один из них. Однако существует уязвимость, которая заключается в том, что в SSL/TLS протоколах плохо сделана аутентификация «переговорных» сообщениях. В более ранних версиях протокола SSL не было аутентификации, только в TLS и в SSL 3.0 ввели аутентификацию, но она происходила в конце процесса «рукопожатия». Слабость реализации TLS состоит в том, что TLS сервера могут подписывать свои сообщения цифровой подписью, но в реализации данного протокола это не используется. Во время процесса «переговоров», если был выбран Диффи — Хеллман, то параметры, которые присылает сервер, находятся в подписанном сообщении ServerKeyExchange. Подписанная часть сообщения содержит только параметры, но не содержит информации о том, какой шифр использовать.

Таким образом, если сервер поддерживает DHE_EXPORT, то злоумышленник может воспользоваться атакой «человек посередине» и перехватить сообщение между клиентом и сервером, поменять список поддерживающих шифров, оставив только поддержку DHE_EXPORT (даже если клиент его не поддерживает). Сервер в ответ отправит своё сообщение, подписанное 512-битным ключом Диффи — Хеллмана. Клиент, ничего не подозревая, примет данное сообщение. Злоумышленнику осталось найти «секрет» Диффи — Хеллмана, но он должен это сделать до того, как кончится процесс «рукопожатия» и сгенерировать своё сообщение о конце данного процесса.

См. также[править | править код]

Примечания[править | править код]

Ссылки[править | править код]