Уязвимость в TLS, допускающая определение ключа для соединений на базе шифров DH

Раскрыты сведения о новой уязвимости (CVE-2020-1968) в протоколе TLS, получившей кодовое имя
Raccoon и позволяющей при редком стечении обстоятельств определить предварительный первичный ключ (pre-master), который можно использовать для расшифровки TLS-соединений, в том числе HTTPS, при перехвате транзитного трафика (MITM). Отмечается, что атака очень сложна для практической реализации и больше носит теоретический характер. Для проведения атаки требуется специфичная конфигурация TLS-сервера и возможность очень точного замера времени обработки операций сервером.

Проблема присутствует непосредственно в спецификации TLS и затрагивает только соединения, использующие шифры на основе протокола обмена ключами DH (Diffie-Hellman, TLS_DH_*»). С шифрами ECDH проблема не проявляется, и они остаются безопасными. Уязвимы только протоколы TLS до версии 1.2 включительно, протокол TLS 1.3 проблеме не подвержен. Уязвимость проявляется в реализациях TLS, повторно использующих секретный ключ DH в разных TLS-соединениях (подобное поведение наблюдается примерно на 4.4% серверов из рейтинга Alexa Top 1M).

В OpenSSL 1.0.2e и более ранних выпусках первичный ключ DH повторно используется во всех серверных соединениях, если явно не выставлена опция SSL_OP_SINGLE_DH_USE. Начиная с OpenSSL 1.0.2f первичный ключ DH повторно используется только при использовании статических DH-шифров («DH-*», например «DH-RSA-AES256-SHA»). В OpenSSL 1.1.1 уязвимость не проявляется, так как в данной ветке не используется первичный ключ DH и не применяются статические DH-шифры.

При использовании метода обмена ключами DH обе стороны соединения генерируют случайные закрытые ключи (далее ключ «a» и ключ «b»), на основе которых вычисляются и отправляются открытые ключи (ga mod p и gb mod p). После получения открытых ключей каждой стороной вычисляется общий первичный ключ (gab mod p), который применяется для формирования сессионных ключей. Атака Raccoon позволяет определить первичный ключ через анализ информации по сторонним каналам, отталкиваясь от того, что в спецификациях TLS вплоть до версии 1.2 предписывается отбрасывать все начальные нулевые байты первичного ключа перед вычислениями с его участием.

В том числе урезанный первичный ключ передаётся в функцию генерации сессионного ключа, основанную на хэш-функциях с отличающимися задержками при обработке разных данных. Точное измерения времени выполняемых сервером операций с ключом позволяет атакующему определить подсказки (oracle), которые дают возможность судить о том, начинается первичный ключ с нуля или нет. Например, атакующий может перехватить отправленный клиентом открытый ключ (ga), переотправить его на сервер и определить
начинается ли с нуля результирующий первичный ключ.

Само по себе определение одного байта ключа ничего не даёт, но перехватив переданное при согласовании соединения клиентом значение «ga» атакующий может сформировать набор других значений, связанных с «ga» и отправить их на сервер в отдельных сеансах согласования соединения. Формируя и отправляя значения «gri*ga», атакующий может через анализ изменения задержек в ответе сервера определить значения, приводящие к получению первичных ключей, начинающихся с нуля. Определив подобные значения атакующий, может составить набор уравнений для решения проблемы скрытых чисел и вычислить исходный первичный ключ.

Уязвимость в TLS, допускающая определение ключа для соединений на базе шифров DH

В OpenSSL уязвимости присвоен низкий уровень опасности, а исправление свелось к перемещению в выпуске 1.0.2w проблемных шифров «TLS_DH_*» в отключённую по умолчанию категорию шифров с недостаточным уровнем защиты («weak-ssl-ciphers»). Аналогично поступили разработчики Mozilla, которые отключили в библиотеке NSS, используемой в Firefox, наборы шифров DH и DHE. Начиная с Firefox 78 проблемные шифры отключены. В Chrome поддержка DH была прекращена ещё в 2016 году. Библиотеки BearSSL, BoringSSL, Botan, Mbed TLS и s2n проблеме не подвержены, так как не поддерживают шифры DH или статические варианты шифров DH.

Отдельно отмечаются дополнительные проблемы (CVE-2020-5929) в TLS-стеке устройств F5 BIG-IP, делающие атаку более реалистичной. В частности, были выявлены отклонения в поведении устройств при наличии нулевого байта в начале первичного ключа, которые можно использовать вместо измерения точного времени задержки при вычислениях.

Источник: opennet.ru

Добавить комментарий