
Объединенная группа международных ученых из Рурского университета, Тель-Авивского университета, Университета Падерборна и Федерального управления по информационной безопасности Германии обнаружила метод раскрытия секрета в алгоритме Диффи-Хеллмана при использовании в TLS. Уязвимость сложно эксплуатировать, но все же риски ее не нулевые. Успешная атака приведет к перехвату и утечке любой конфиденциальной информации, передаваемой между сервером и клиентом внутри криптографического туннеля.
Алгоритм обмена ключами Диффи-Хеллмана используется для получения сторонами закрытого ключа симметричного шифрования по незащищенному каналу связи. Он использует метод обмена открытыми ключами и выработки общего сессионного ключа на основании закрытого и открытого ключей. Кстати, создателей у алгоритма все же трое: Уитфилд Диффи (Whitfield Diffie), Мартин Хеллман (Martin Hellman), а также независимо от них Ральф Меркл (Ralph Merkle).
Атака основана на свойствах вычислительных средств тратить разное фактическое время на криптографические операции – временная атака или Timing side-channel attack. В данном случае ученым удалось восстановить премастер-ключ, который используется дальше для базовых криптографических операций. То есть с его получением возможен перехват всей зашифрованной информации. Высокоуровнево шаги атаки выглядят так:
- Злоумышленник записывает весь процесс рукопожатия и обмена открытыми ключами жертвы: TLS handshake, включая открытые ключи Диффи-Хеллман (далее – DH).
- Злоумышленник инициирует новое рукопожатие к тому же серверу. Поэтому с тем же закрытым серверным ключом, используя у себя случайные параметры ключа. И таким образом получает рабочее уравнение, из которого может вычислить свой секретный ключ.
- Для каждого шага атакующий измеряет время ответа сервера. Для некоторых величин модулей DH секрет с ведущими нулями будет рассчитываться более быстро и давать более быстрый серверный ответ.
- Если принять за рабочий вариант возможность точного измерения злоумышленником времени ответа сервера, атакующий может получить систему уравнений, результатом решения которой является искомый закрытый ключ.
- С полученным ключом злоумышленник может восстановить все перехваченные ранее данные жертвы.
Для осуществления атаки необходимо:
- перехватывать канал в Man-In-The-Middle режиме, причем близко к серверной стороне для выполнения измерений тайминга,
- версия TLS 1.2 или ниже,
- выполнить несколько обменов ключами по алгоритму Диффи-Хеллман с тем же серверным ключом.
Указанные условия маловероятно реализуемы на практике. Но все же в некоторых случаях имеет смысл обратить внимание на этот возможный риск.
Как защититься от подобной атаки:
- Перестать использовать устаревшие протоколы: SSL 3.0, TLS 1.0 и 1.1 и другие.
- Установить необходимые патчи: Microsoft (CVE-2020-1596), Mozilla, OpenSSL (CVE-2020-1968) и F5 Networks (CVE-2020-5929) и т. д.
- Отключить повторное использование ключа DH.
- Уравнять время отклика сервера, независимо от скорости криптографических операций, например, отключив использование начальных 0-вых байт в ключе. Для SSH это можно сделать через mpint. Или установив константным размер секретного ключа.