Воссоздание RSA-ключей через анализ SSH-соединений к сбойным серверам

Группа исследователей из Калифорнийского университета в Сан-Диего продемонстрировала возможность воссоздания закрытых хостовых RSA-ключей SSH-сервера, используя пассивный анализ трафика SSH. Атака может быть совершена на серверы, на которых в силу стечения обстоятельств или действий атакующего возникают сбои во время вычисления цифровой подписи при установке SSH-соединения. Сбои могут быть как программными (некорректное выполнение математических операций, повреждение памяти), так и аппаратными (ошибки при работе NVRAM и DRAM или сбои при перебоях с питанием).

Одним из вариантов стимулирования сбоев могут стать атаки класса RowHammer, среди прочего позволяющие удалённо или при обработке JavaScript-кода в браузере добиться искажения содержимого отдельных битов памяти при интенсивном цикличном чтении данных из соседних ячеек памяти. Ещё одним вариантом вызова сбоев может стать эксплуатация уязвимостей, приводящих к переполнению буфера и повреждению данных с ключами в памяти.

В опубликованном исследовании показано, что при использовании в SSH цифровых подписей на базе алгоритма RSA, к параметрам цифровой подписи применимы атаки по воссозданию закрытых ключей RSA методом Lattice (Fault Attack), в случае возникновения программных или аппаратных сбоев во время процесса вычисления подписи. Суть метода в том, что сравнивая корректную и сбойную цифровые подписи RSA можно определить наибольший общий делитель для вывода одного из простых чисел, использованных при формирования ключа.

В основе шифрования RSA лежит операция возведения в степень по модулю большого числа. В открытом ключе содержится модуль и степень. Модуль формируется на основании двух случайных простых чисел, которые известны только владельцу закрытого ключа. Атака может быть применена к реализациям RSA, использующим Китайскую теорему об остатках и детерминированные схемы добавочного заполнения, такие как PKCS#1 v1.5.

Для совершения атаки достаточно пассивного отслеживания легитимных соединений к SSH-серверу до выявления в трафике сбойной цифровой подписи, которую можно использовать в качестве источника информации для воссоздания закрытого RSA-ключа. После воссоздания хостового RSA-ключа атакующий может в ходе MITM-атаки незаметно перенаправить запросы на подставной хост, выдающий себя за скомпрометированный SSH-сервер и организовать перехват передаваемых на этот сервер данных.

В результате изучения коллекции перехваченных сетевых данных, включающей примерно 5.2 миллиардов записей, связанных с использованием протокола SSH, исследователи выявили примерно 3.2 млрд открытых хостовых ключей и цифровых подписей, применяемых во время согласования сеанса SSH. Из них 1.2 млрд (39.1%) были сформированы при помощи алгоритма RSA. В 593671 случаях (0.048%) RSA-подпись была повреждена и не проходила проверку. Для 4962 сбойных подписей удалось применить метод факторизации Lattice для определения закрытого ключа по известному отрытому ключу, что в итоге позволило воссоздать 189 уникальных пар ключей RSA (во многих случаях для генерации разных повреждённых подписей использовались одни и те же ключи и сбойные устройства). На воссоздание ключей потребовалось около 26 часов процессорного времени.


Проблема затрагивает только специфичные реализации протокола SSH, используемые в основном на встраиваемых устройствах. В качестве примеров устройств с проблемными реализациями SSH упомянуты продукты Zyxel, Cisco, Mocana и Hillstone Networks. OpenSSH проблеме не подвержен, так как использует для генерации ключей библиотеку OpenSSL (или LibreSSL), в которой защита от атак на основе анализа сбоев (Fault Attack) присутствует с 2001 года. Более того, в OpenSSH схема цифровых подписей ssh-rsa с 2020 года объявлена устаревшей и отключена в версии 8.8. Потенциально атака может оказаться применима и для протокола IPsec, но у исследователей не было достаточных экспериментальных данных для подтверждения подобной атаки на практике.

Release. Ссылка here.