Атака, которую мы называем Logjam, изображена на рисунке 2.
и полагается на недостаток в том, как TLS составляет DHE и
DHE_EXPORT
. Когда сервер выбирает DHE_EXPORT
для
рукопожатие, оно продолжается путем выдачи подписанного Обмен ключами сервера
сообщение, содержащее 512-битный $p_{512}$, но структура этого
сообщение идентично сообщению, отправляемому во время стандартного DHE
наборы шифров. Важно отметить, что подписанная часть сервера
сообщение не содержит каких-либо указаний на конкретный набор шифров
который выбрал сервер. При условии, что клиент предлагает
DHE, активный злоумышленник может переписать КлиентПривет
к
предложить соответствующий DHE_EXPORT
набор шифров, принятый
сервер и удалить другие наборы шифров, которые можно было выбрать
вместо. Злоумышленник переписывает СерверПривет
ответ на
заменить выбранный DHE_EXPORT
набор шифров с совпадением
неэкспортный набор шифров и пересылает Обмен ключами сервера
сообщение клиенту как есть. Клиент будет интерпретировать
кортеж экспортного класса $(p_{512}, г, г^б)$ выбраны действительные параметры DHE
сервером и продолжите рукопожатие.
клиент и сервер имеют разные расшифровки рукопожатия в этом
этапе, но злоумышленник, который может вычислить $б$ близко к реальному
время может затем получить мастер-секрет и ключи подключения
завершить рукопожатие с клиентом, а затем свободно
читать и записывать данные приложения, притворяясь сервером.
И ваш вопрос гласит:
Я читаю об атаке с тупиком. Меня спросили, можно ли предотвратить атаку, проверив целостность сообщения Server Hello.
И я думаю, что ответ да, но только в том случае, если он подпишет/проверит набор наборов шифров, предлагаемых в рамках СерверПривет
, и кажется, что по крайней мере TLS до 1.2 не может этого сделать. Другими словами, вам придется изменить протокол TLS, чтобы включить предлагаемые наборы шифров в генерацию/проверку подписи, что сделает его несовместимым с любым другим программным обеспечением TLS.
Так что в настоящее время кажется, что просто запретить выполнение выполнить DHE_EXPORT
(или 1024-битный эфемерный DH) — это путь вперед для TLS до версии 1.2.