Извлечение сид-фразы из Trezor

Оригинал статьи на английском

Злоумышленник, получив физический доступ к аппаратному кошельку, может извлечь сид-фразу из устройства. Это занимает менее 5 минут, а необходимые материалы стоят около $100. Эта уязвимость затрагивает Trezor One, Trezor T, KeepKey и все остальные клоны Trezor. К сожалению, эта уязвимость не может быть исправлена, и по этой причине мы решили не раскрывать технические подробности атаки, чтобы смягчить возможную эксплуатацию в реальных условиях. SatoshiLabs и KeepKey предложили пользователям либо исключить физические атаки из своей модели угроз, либо использовать кодовую фразу.

Контекст

Команда подразделения по безопасности Ledger, Donjon, недавно потратила некоторое время и ресурсы на анализ безопасности аппаратных кошельков. Наша цель — повысить уровень безопасности во всей криптовалютной экосистеме. Этот пост является частью серии — см. “Extracting seeds from Wallets”.

Одной из целей для оценки были выбраны аппаратные кошельки на базе Trezor. Эти устройства показались нам особенно интересными, поскольку прошивка для них имеет открытый исходный код. Сам чип, а также низкоуровневые функции, скрытые во флэш-памяти, являются закрытыми.

KeepKey – Trezor T

У нас есть опыт физических атак, и исходя из дизайна этих кошельков мы подумали, что можно извлечь сид-фразу из устройств. Мы просто хотели выяснить, насколько это сложно. В этой статье мы рассмотрим следующий сценарий атаки: злоумышленник крадет аппаратный кошелек, что он может сделать?

В предыдущем посте мы описали уязвимость, позволяющую извлечь PIN-код из украденного устройства с использованием анализа побочных каналов. Эта уязвимость была исправлена, и SatoshiLabs предоставила нам за нее вознаграждение. Более полное исследование было представлено на научной конференции SSTIC (с докладом можно ознакомиться здесь).

В этом посте мы объясним, что физическая атака с извлечением ключа может быть выполнена быстро с помощью недорогой аппаратуры и должна рассматриваться как реальная угроза.

Извлечение сид-фразы

В большинстве моделей безопасности аппаратных кошельков физические атаки часто считаются непрактичными и выходящими за допустимые рамки. Большинство аппаратных кошельков защищают пользователей от удаленных программных атак и не имеют контрмер против физических атак, хотя они могут произойти в следующих сценариях:

  • Кража аппаратного кошелька
  • Атака на цепочку поставок
  • Атака “злой горничной”

Недавно команда Donjon обнаружила физическую атаку на аппаратный кошелек Trezor One, о чем ответственно сообщила компании Trezor. Обнаруженная уязвимость позволяет злоумышленнику с физическим доступом получить сид-фразу, защищенную кошельком, если не задана сложная кодовая фраза. После глубокого анализа этой уязвимости выяснилось, что ее невозможно устранить без полной переработки аппаратной части кошелька. Когда мы впервые заговорили об этой атаке, утверждалось, что она слишком специализированная, нереалистичная и трудновоспроизводимая. Сначала для этого требовалось сложное и дорогостоящее оборудование (стоимостью более $100 000) и полный рабочий день эксперта по аппаратной безопасности. Примечание: это типичная установка, которую мы используем для проверки безопасности наших собственных аппаратных кошельков.

Устройство Trezor One

Недавно мы решили оценить возможность реализации этой атаки, используя компактную и недорогую установку. Атака была переработана с использованием дешевых инструментов, доступных в любом магазине электроники, с применением базовых методов. Была разработана очень компактная электронная плата, способная извлекать сид-фразу из устройства менее чем за 5 минут. Стоимость платы — около $100, она может быть подключена к любому компьютеру через USB. Вероятно, стоимость такой электронной платы можно оптимизировать еще больше, но $100 — это уже крайне дешево по сравнению с потенциальной ценностью сид-фразы.

Установка для извлечения сид-фразы

Атака с извлечением сид-фразы работает с несколькими аппаратными кошельками с открытым исходным кодом:B Wallet, Keepkey, Trezor One и Trezor T (для которого устройство Extraktor немного отличается). Эту уязвимость невозможно устранить обновлением прошивки. Для ее исправления потребуется полная переработка аппаратной архитектуры устройств. Поскольку атака доступна по стоимости и легко воспроизводима, мы решили сохранить метод атаки в тайне, а не выкладывать дизайн Extraktor в открытый доступ или продавать плату. Самые любопытные читатели будут немного разочарованы, но мы считаем, что публикация была бы безответственной и подвергла бы пользователей риску.

Тем не менее, ради соблюдения прозрачности мы приводим описание атаки в общих чертах:

  • Необходим физический доступ.
  • Необходимое оборудование: Extraktor + ноутбук.
  • Низкая стоимость установки: около $100 + компьютер.
  • Атака быстрая. 3 минуты на подготовку, 2 минуты на извлечение сид-фразы: около 5 минут.
  • Работает на всех версиях прошивок. На зашифрованных прошивках (Keepkey и Trezor >= 1.8) PIN-код необходимо перебирать. Для длинного PIN-кода (9 цифр) может потребоваться еще несколько минут (на быстром компьютере).
  • Атака очень эффективна: 100% успеха на ~20 устройствах.
Процесс извлечения сид-фразы: модуль Extraktor (внутреннее устройство не раскрывается) подключен к ноутбуку

Заключение

Данное исследование было проведено в рамках нашей работы по повышению безопасности криптовалютной экосистемы. Сначала мы использовали методы, характерные для злоумышленников с большими возможностями — точно так же, как мы это делаем для наших устройств. Затем мы решили оценить, насколько сложно и реалистично для злоумышленника с ограниченными ресурсами повторить такой же сценарий атаки.

Безопасность требует осведомленности: не стоит недооценивать вероятность аппаратных атак. Многие аппаратные кошельки уязвимы к подобным атакам, и мы уже доказали это на продуктах различных производителей. В некоторых случаях для взлома достаточно простого лабораторного оборудования, а потенциальная выгода от компрометации кошельков оправдывает затраты. Мы призываем экосистему воспринимать этот класс атак как реальную угрозу — так же, как это сделала банковская отрасль много лет назад.

Рекомендации по защите

Насколько мы можем судить, исправить эту уязвимость невозможно — единственной действенной мерой защиты является использование длинной кодовой фразы. В данном контексте, поскольку сид-фраза фактически может считаться общедоступной, кодовая фраза должна быть достаточно длинной, чтобы предотвратить атаки методом перебора или атаки по словарю.

Таким образом, вся безопасность теперь зависит исключительно от кодовой фразы. Процесс преобразования мнемонической фразы и кодовой фразы в seed осуществляется по стандарту BIP39, который использует функцию PBKDF2.

  • PBKDF2 — полезная функция, позволяющая преобразовать низкоэнтропийный пароль в криптографический ключ. Недостаточная энтропия компенсируется ресурсоемким процессом преобразования, что должно предотвращать атаки перебором.
  • Основная проблема BIP39 заключается в том, что количество итераций ограничено —всего 2048, что значительно ниже последних рекомендаций NIST от 2016 года, где указано значение 10.000 (Рекомендации NIST).
  • Когда мнемоническая фраза генерируется правильно и хранится в секрете, обеспечивая 256 бит энтропии, 2048 итераций не представляют проблемы.
  • Но в нашем случае, когда 24 слова можно считать общедоступными этих 2048 итераций становится недостаточно, и атака перебором становится возможной (подобные атаки уже были продемонстрированы).

Для обеспечения уровня безопасности, сопоставимого с сид-фразой из 24 слов, необходимо использовать кодовую фразу длиной около 37 случайных символов.

Ответственное раскрытие уязвимости

Данная атака была раскрыта компании Trezor в декабре 2018 года, причем наша команда полностью объяснила механизм ее реализации сотрудникам отдела безопасности. Однако за это ответственное раскрытие мы не получили никакого вознаграждения. Мы получили два других вознаграждения за атаку с использованием побочных каналов на процедуру проверки PIN-кода и за уязвимость в менеджере паролей. Судя по всему, в Trezor уже знали о принципиальной возможности физического извлечения сид-фразы. Таким образом, мы лишь продемонстрировали практическую реализацию такой атаки.

Мы хотели бы поблагодарить компанию Ledger за практическую демонстрацию атаки, о которой мы знали с момента проектирования Trezor

Похожие работы

Насколько нам известно, существует 4 метода физического извлечения сид-фразы из Trezor или клонов:

Все эти исследования привели к извлечению ключа из Trezor One или KeepKey при физическом доступе. Уязвимости были исправлены с помощью обновления прошивки.

Наш новый подход также позволяет извлечь сид-фразу, но несколько иначе:

  • Он также применим к Trezor T.
  • Он не может быть исправлен обновлением прошивки.
  • Он очень эффективен и дешев.

Вывод

Физический доступ к кошельку Trezor One, Trezor T, KeepKey или B Wallet позволяет злоумышленнику извлечь 12/24 слова за несколько минут, используя недорогую установку (около $100) с очень высокой вероятностью воспроизведения (мы добились успеха в 100% случаев). Наконец, мы доказали, что эта атака может быть полностью автоматизирована, что позволяет любому использовать ее в случае, если кто-то начнет продавать устройство Extraktor (аналогично старым взломам Playstation). Эта атака не может быть исправлена. Единственное средство защиты — использовать сложную кодовую фразу: мы рекомендуем 37 случайных символов, чтобы сохранить тот же уровень безопасности.


Инженеры по безопасности Карим Абделлатиф, Шарль Гийом и Оливье Эриво.

Комментарий переводчика

Кроме использования сложной кодовой фразы, о методах создания которой можно узнать из статьи от SatoshiLabs, существует еще два метода защиты устройств Trezor:

  • Создание длинного и сложного PIN-кода. Максимальная длина — 50 цифр. На момент написания статьи, она составляла лишь 9 цифр, что и позволило исследователям легко перебирать PIN-код.
  • Шифрование PIN-кода с помощью карты microSD (только для Trezor T).

Возможность успешной реализации атак на цепочку поставок или “злой” горничной также значительно снижена за счет проверки подлинности прошивки, подробнее см. в этом материале.