Исследователи безопасности NinjaLab разработали новую атаку боковой канал (CVE-2021-3011) для клонирования ключей ECDSA, хранящихся на USB-токенах на базе чипов NXP.
Атака продемонстрировано для токенов двухфакторной аутентификации Google Titan основан на чипе NXP A700X, но теоретически применяется к крипто-токенам Yubico и Feitian, использующим один и тот же чип.
Предлагаемый способ позволяет злоумышленнику воссоздать ключи ECDSA, хранящиеся в токене на основании полученных данных через анализ электромагнитного сигнала, излучаемого токеном во время генерации цифровых подписей.
Исследователи показали, что электромагнитный сигнал коррелирует с эфемерной ключевой информацией от ECDSA, чего достаточно для получения секретного ключа с помощью методов машинного обучения.
В частности, характер изменения сигнала позволяет извлекать информацию об отдельных битах во время умножения на скаляр при операциях с эллиптической кривой.
Для ECDSA, определить даже несколько бит с информацией по вектору инициализации (nonce) достаточно провести атаку и последовательно восстановить весь приватный ключ. Для восстановления секретного ключа в токене Google Titan достаточно проанализировать около 6.000 операций с цифровой подписью на основе ключа ECDSA, используемого для двухфакторной аутентификации FIDO U2F при подключении к учетной записи Google.
Чтобы найти слабые места в реализации алгоритма ECDSA на чипах NXP ECDSA, использовалась открытая платформа для создания смарт-карт NXP J3D081 (JavaCard), который очень похож на чипы NXP A700X и использует идентичную криптографическую библиотеку, но в то же время предоставляет больше возможностей для изучения работы движка ECDSA. Чтобы получить ключ JavaCard, достаточно было проанализировать около 4000 операций.
Чтобы осуществить атаку, у вас должен быть физический доступ к токену, то есть токен должен быть доступен злоумышленнику для расследования в течение длительного времени. Кроме того, чип бронирован алюминиевым экраном, поэтому корпус необходимо разбирать, что затрудняет скрытие следов атаки, например, токены Google Titan запечатаны в пластик и не могут быть разобраны без видимых следов. (As вариант, предлагается распечатать на 3D принтере нового корпуса).
На получение ключа уходит около 6 часов. учетной записи FIDO U2F и требует примерно Еще 4 часа на разборку и сборку жетона.
Для атаки также требуется довольно дорогое оборудование.стоимостью около 10 XNUMX евро, навыки реверс-инжиниринга микросхем и специального программного обеспечения, не распространяемого публично (возможность атаки подтверждена Google и NXP).
Во время атаки Измерительный комплекс Langer ICR HH 500-6 для тестирования микросхем для электромагнитной совместимости усилитель Langer BT 706, микроманипулятор Thorlabs PT3 / M с разрешением 10 мкм и четырехканальный осциллограф PicoScope 6404D.
В качестве метода, реализованного на стороне сервера для частичной защиты от использования клонированных токенов для двухфакторной аутентификации, предлагается использовать механизм счетчика, описанный в спецификации FIDO U2F.
Стандарт FIDO U2F изначально подразумевает наличие единого набора ключей, что связано с тем, что протокол поддерживает только две основные операции: регистрацию и аутентификацию.
На этапе регистрации создается новая пара ключей, закрытый ключ хранится в токене и открытый ключ передается на сервер.
Операция аутентификации на стороне токена создает цифровую подпись ECDSA для данных, передаваемых сервером, которая затем может быть проверена на сервере с использованием открытого ключа. Закрытый ключ всегда остается в токене и не может быть скопирован, поэтому, если необходимо привязать новый токен, создается новая пара ключей, а старый ключ помещается в список отозванных ключей.
источник: https://ninjalab.io