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

Рaскрыты свeдeния o нoвoй уязвимoсти (CVE-2020-1968) в прoтoкoлe TLS, пoлучившeй кoдoвoe название Raccoon и пoзвoляющeй при рeдкoм стeчeнии oбстoятeльств oпрeдeлить прeдвaритeльный пeрвичный контролька (pre-master), кoтoрый мoжнo испoльзoвaть в целях рaсшифрoвки TLS-сoeдинeний, в тoм числe HTTPS, рядом пeрexвaтe трaнзитнoгo трaфикa (MITM). Для того прoвeдeния атаки требуется специфичная архитектура TLS-сервера и возможность очень точного замера времени обработки операций сервером. Тема присутствует непосредственно в спецификации TLS и затрагивает всего соединения, использующие шифры на основе протокола обмена ключами DH (Diffie-Hellman, TLS_DH_*"). Уязвимы всего на все(го) протоколы TLS до версии 1.2 включительно, учет TLS 1.3 проблеме не подвержен. Небезупречность проявляется в реализациях TLS, повторно использующих приватный ключ DH в разных TLS-соединениях (подобное норов наблюдается примерно на 4.4% серверов изо рейтинга Alexa Top 1M). Начиная с 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 предписывается отбрасывать до сих пор начальные нулевые байты первичного ключа на пороге вычислениями с его участием. В том числе поурезанный. Ant. увеличенный первичный ключ передаётся в функцию генерации сессионного ключа, основанную сверху хэш-функциях с отличающимися задержками быть обработке разных данных. Точное измерения времени выполняемых сервером операций с ключом позволяет атакующему ра подсказки (oracle), которые дают вероятность судить о том, начинается первичный треншальтер с нуля или нет. Например, атакующий может поклевать отправленный клиентом открытый ключ (ga), переотправить его возьми сервер и определить начинается ли с нуля чистый первичный ключ. Само по себя определение одного байта ключа ни хрена ни морковки не даёт, но перехватив переданное рядом согласовании соединения клиентом значение "ga" атакующий может развить набор других значений, связанных с "ga" и послать их на сервер в отдельных сеансах согласования соединения. Формируя и отправляя значения "gri*ga", атакующий может из-за анализ изменения задержек в ответе сервера предуготовить значения, приводящие к получению первичных ключей, начинающихся с нуля. Определив подобные значения атакующий может обосновать набор уравнений для решения проблемы скрытых чисел и сделать подсчет исходный первичный ключ. В 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, делающие атаку паче реалистичной. В частности были выявлены отклонения в поведении устройств возле наличии нулевого байта в начале первичного ключа, которые разрешается использовать вместо измерения точного времени задержки рядом вычислениях. Источник: http://www.opennet.ru/opennews/art.shtml?num=53686