Уязвимость ROCA представляет собой криптографическую слабость, которая позволяет восстановить закрытый ключ пары ключей из открытого ключа в ключах, сгенерированных устройствами с уязвимостью. «ROCA» — это аббревиатура от «Return of Coppersmith's attack ». [1] Уязвимости присвоен идентификатор CVE - 2017-15361.
Уязвимость возникает из-за проблемы с подходом к генерации ключей RSA , используемым в уязвимых версиях программной библиотеки RSALib , предоставляемой Infineon Technologies и встроенной во многие реализации смарт-карт , доверенных платформенных модулей (TPM) и аппаратных модулей безопасности (HSM), включая токены YubiKey 4, часто используемые для генерации ключей PGP . Ключи длиной 512, 1024 и 2048 бит, сгенерированные с использованием этих версий библиотеки Infineon, уязвимы для практической атаки ROCA. [2] [3] Исследовательская группа, обнаружившая атаку (все из Университета Масарика под руководством Матуша Немеца и Марека Шиша) [2], подсчитала, что она затронула около четверти всех текущих устройств TPM во всем мире. [4] Считается, что затронуты миллионы смарт-карт . [1]
Команда сообщила Infineon о проблеме RSALib в феврале 2017 года, но воздержалась от публичного уведомления до середины октября, ссылаясь на ответственное раскрытие информации . В то время они объявили об атаке и предоставили инструмент для проверки открытых ключей на уязвимость. Они опубликовали подробности атаки в ноябре. [2]
Генерация ключа RSA включает выбор двух больших случайно сгенерированных простых чисел , процесс, который может быть трудоемким, особенно на небольших устройствах, таких как смарт-карты. Помимо того, что числа являются простыми, они должны иметь определенные другие свойства для лучшей безопасности. Уязвимый процесс выбора RSALib быстро создает простые числа нужного типа, проверяя только на простые числа вида:
где — произведение первых n последовательных простых чисел (2, 3, 5, 7, 11, 13,...), а n — константа, зависящая только от желаемого размера ключа. Безопасность основана на секретных константах и . Атака ROCA использует этот конкретный формат для простых чисел, используя вариацию метода Копперсмита . Кроме того, открытые ключи, сгенерированные таким образом, имеют отличительный отпечаток, который можно быстро распознать, попытавшись вычислить дискретный логарифм открытого ключа по модулю 65537 . Вычисление дискретных логарифмов в большой группе обычно чрезвычайно сложно, но в этом случае это можно сделать эффективно с помощью алгоритма Полига–Хеллмана, поскольку — гладкое число . Тестовый сайт доступен в Интернете. [2] [5] [6] [7] Короче говоря, ключи, соответствующие этому формату, имеют значительно низкую энтропию и могут быть атакованы относительно эффективно (недели или месяцы), а формат может быть подтвержден («снят») злоумышленником очень быстро (микросекунды). Несколько реализаций атаки доступны публично. [8] [9] [10]
Авторы ROCA считают, что открытые ключи длиной 512, 1024 и 2048 бит, сгенерированные RSALib , уязвимы. Поскольку детали генерации ключей различаются для разных длин ключей, более короткие ключи не обязательно более уязвимы, чем длинные. Например, 1952-битный ключ RSAlib сильнее 2048-битного, а 4096-битный ключ слабее 3072-битного.
Лучшим смягчением, по мнению авторов, является генерация ключей RSA с использованием более сильного метода, например OpenSSL . Если это невозможно, авторы ROCA предлагают использовать длины ключей, которые менее восприимчивы к ROCA, например, 3936 бит, 3072 бита или, если максимальный размер ключа составляет 2048 бит, 1952 бита. [2] : Раздел 5.1
Компания Infineon выпустила обновления прошивки для своих модулей Trusted Platform Modules для производителей, которые использовали ее TPM. [11]
Уязвимость выявила несколько недостатков схемы сертификации Common Criteria , поскольку уязвимость присутствовала в списке сертифицированных Common Criteria продуктов смарт-карт. А именно, одобрение доморощенных криптографических алгоритмов; отсутствие прозрачности в отчетах о сертификации, невозможность отзыва сертификатов Common Criteria для известных уязвимых продуктов и распространения этой информации среди пользователей сертифицированных продуктов. [12] : Раздел 6.7.5
В Эстонии обнаружение уязвимости привело к киберкризису государственного уровня, поскольку уязвимый чип смарт-карты был установлен на более чем 750 000 эстонских удостоверений личности , которые ежедневно используются резидентами Эстонии и электронными резидентами для безопасной аутентификации в Интернете и создания цифровых подписей. [12] : Раздел 6.7