Безопасный чип в аппаратных кошельках

Тренд на использование безопасных чипов (Secure Element или SE) в аппаратных кошельках с каждым годом набирает обороты. Если во французских Ledger Nano X используется один SE, в канадских ColdCard MK4 уже два, то в новой модели Keystone 3 Pro — целых три безопасных элемента. В этой статье мы разберемся в том, что такое безопасный чип, от чего они защищают пользователя, и какие типы SE используются в современных кошельках для криптовалют.

Безопасный чип в аппаратных кошельках

Secure Element (SE) — специальный чип, предназначенный для хранения секретных данных, таких как сид, пин-код или биометрические данные, а также запуска изолированных приложений в защищенном окружении.

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

Почему Secure Element не используется в Trezor

Компания SatoshiLabs не использует SE по ряду причин, основной из которых является тот факт, что программное обеспечение в SE не является продуктом с открытым исходным кодом и должно быть предустановлено на фабрике. Это снижает прозрачность аппаратного кошелька и не может гарантировать отсутствие вредоносного кода или бэкдора, заложенного производителем.

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

За почти десятилетний период на кошельки Trezor было произведено несколько успешных атак, после чего уязвимости были закрыты разработчиками на уровне прошивки. Однако, одну из уязвимостей невозможно устранить с помощью прошивки, так как связана она с аппаратной архитектурой чипов STM32, позволяющей извлечь прошивку и получить доступ к мнемонической фразе банальным брутфорсом пин-кода. Подробное описание механизма этой атаки было опубликовано Kraken Security Labs в начале 2020 года.

От другого же типа физической атаки, когда непосредственно владельца кошелька вынуждают выдать пин-код или перевести средства на счет грабителя, безопасный чип само-собой спасти не может. Такой тип атак еще называют "атакой гаечным ключом за 5$".

Безопасный чип в аппаратных кошельках

Уберечь значительную часть средств в таком случае может помочь знание техник правдоподобного отрицания и использование парольных фраз (passphrase, не путать с мнемонической фразой) для создания скрытых кошельков. Надежная парольная фраза также убережет ваши средства при извлечении или компрометации мнемонической фразы, так как устройство не хранит ее в энергонезависимой памяти чипа.

Модель безопасности Ledger

Безопасность кошельков Ledger опирается на SE линейки ST33 от STMicroelectronics, имеющих сертификацию Common Criteria и соответствующих техническим стандартам, описанных в Security IC Platform Protection Profile (PP 0084), включающих требования к механизмам защиты от внешнего вмешательства, генерации случайных чисел и даже к организации доступа к конфиденциальной информации при производстве.

В такой чип по защищенному каналу связи может быть загружен пользовательский код. Таким кодом является операционная система BOLOS (Blockchain Open Ledger Operating System). Обновление прошивки по защищенному каналу возможно благодаря аттестации подлинности устройства. Во время производства генерируется уникальная пара ключей устройства, публичный ключ подписывается ключом производителя для выпуска сертификата. Сертификат и пара ключей хранятся в изолированной области прошивки. Таким образом, предоставив публичный ключ и сертификат, устройство может подтвердить свою подлинность.

В этой же области находится корневой ключ BIP-32, полученный из мнемонической фразы при инициализации устройства.

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

В другой части находится интерфейс, с которым мы взаимодействуем непосредственно на аппаратном кошельке. Сюда могут быть загружены приложения для монет. Они являются открытыми, и пользователь имеет возможность самостоятельной сборки и установки приложений из исходного кода (кроме модели Nano X). Кроме того, это позволяет сторонним разработчикам тестировать собственные приложения, что значительно ускоряет интеграцию новых монет. Именно поэтому, Ledger, пожалуй, является самым мультивалютным кошельком. Приложения выполняются изолированно друг от друга и могут обращаться к BOLOS, которая в свою очередь запрашивает нужный приватный ключ для подписи транзакции из изолированной части прошивки. Здесь же происходит взаимодействие с кнопками и экраном устройства.

Третья часть, которая отвечает за взаимодействие с интерфейсами связи USB/Bluetooth, находится вне безопасного элемента и выполняется на отдельном чипе STM32.

Безопасный чип в аппаратных кошельках

Таким образом, подпись транзакций, а значит и операции с приватными ключами, происходит внутри SE.

Тем не менее данная схема не лишена недостатков. Часть прошивки непосредственно от производителя чипа, а так же документация по взаимодействию пользовательской прошивки с защищенной частью находится под договором о неразглашении (NDA). Более того, сама BOLOS хоть и предоставляет открытую среду разработки, является программным обеспечением с закрытым исходным кодом. Тем самым производитель жертвует прозрачностью своего продукта ради использования SE и повышает уровень необходимого доверия со стороны пользователя.

Совсем недавно такой подход вызвал шквал негатива в сторону инженеров компании после презентации функции Ledger Recover, когда вдруг выяснилось, что производитель может внедрить код на уровне прошивки, способный вытащить корневой приватный ключ в виде разделенного секрета Шамира, более того передать его во внешний мир. На самом деле фокус с извлечением корневого ключа известен еще с 2019 года, когда подобный вызов был имплементирован в прошивку для криптовалюты Monero, и пользователь мог вывести Electrum Seed (25 слов) непосредственно на экран устройства.

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

Open Source против NDA

В 2020 году разработчики Trezor предприняли попытку создания прототипа кошелька с SE. Был выбран производитель чипа, имеющий сертификацию Common Criteria. Во время детального изучения документации на чип инженеры обнаружили несколько критических уязвимостей, эксплуатация которых не требовала дорогостоящего оборудования для извлечения секретных данных. Был сделан вывод о том, что обнаруженные векторы атаки просто не тестировались во время сертификации. О проблемах сообщили производителю, но быстро выяснилось, что вендор не намерен сообщать о выявленных недостатках своим клиентам. Кроме того, SatoshiLabs не может публиковать эту информацию из-за подписанного NDA.

Конечно, все это противоречит философии открытого исходного кода. После этих событий было принято решение о создании компании по разработке максимально открытого, полностью проверяемого чипа — Tropic Square (TRuly OPen Integrated Circuit).

Фотографии первого прототипа TROPIC01 были <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Ftwitter.com%2Ftropicsquare%2Fstatus%2F1600469041432313857&postId=778073" rel="nofollow noreferrer noopener" target="_blank">опубликованы</a> в твиттере компании в конце 2022 года.
Фотографии первого прототипа TROPIC01 были опубликованы в твиттере компании в конце 2022 года.

Мы пойдем другим путем

Многие производители аппаратных кошельков применяют другой тип SE в своих устройствах. Это не полноценный Secure MCU как ST31 или ST33, а сопроцессор, реализующий функции криптографии для создания защищенного канала передачи данных между ним и основным процессором.

Эти элементы не могут подписывать транзакции, а значит передают приватный ключ на обычный процессор, что увеличивает поверхность возможной атаки. Кроме того, эти чипы не сертифицируются Common Criteria и не требуется подписание NDA.

Таким образом был найден компромисс — с одной стороны кошелек использует безопасный элемент, с другой стороны такой подход позволяет открыть исходный код прошивки.

Также эти чипы называют "Safe Memory", то есть чип с безопасной памятью. Часто встречаются защищенные микросхемы от компании Microchip ATECC608A или ATECC608B, которые используются в кошельках BitBox, OneKey, Keystone, ColdCard, Passport.

Возможно ли взломать Secure Element?

Secure Element может быть успешно атакован, хотя это гораздо более сложная и дорогостоящая процедура, чем атака на чип общего назначения. Например, в 2020 году исследователи из Ledger Donjon описали процедуру извлечения пин-кода и сида из ATECC508A, использовавшегося в ColdCard MK2. На тот момент для этого требовалось дорогое оборудование и целая лаборатория.

А вот кошелек OneKey Mini был взломан с использованием недорогого FPGA. Виной всему — банальная ошибка на этапе производства, из-за которой безопасный чип оставался в заводском режиме и не создавал защищенный канал связи между SE и микроконтроллером.

Альтернативные способы защиты от извлечения сида из аппаратного кошелька

В кошельке Trezor T присутствует функция создания секретного ключа, который шифрует пин-код и записывается на MicroSD-карту. После чего память устройства невозможно расшифровать, не имея MicroSD с ключом шифрования.

Кошелек Jade использует иной подход — память устройства расшифровывается пин-кодом пользователя и ключом сервера (оракула). При этом пользователь не ограничен оракулом от производителя кошелька, а может настроить свой собственный сервер.

Краткие выводы

Концепция «сам себе банк» подразумевает создание собственной модели безопасности. Если в вашей модели угроз кража устройства злоумышленником с техническими знаниями и необходимым оборудованием стоит где-то на последнем месте — для вас наличие SE не является определяющим фактором при выборе аппаратного кошелька. Кроме того, использование парольных фраз является хорошей практикой при использовании абсолютно любого кошелька.

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

66
7 комментариев

Отличная статья!

5
Ответить

Интересная статья. А как правильно утилизировать кошелек с SE чипом? Как убедиться, что информация на нем полностью стёрта?

3
Ответить

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

1
Ответить

Спасибо автору, интересная статья! А в целом, на что посоветуете обращать внимание при выборе кошелька в первую очередь?

3
Ответить

Здравствуйте! Зависит от многих факторов. Нужно определить подойдет ли вам кошелек с аккумулятором или без, с экраном или без него. Часто ли вы собираетесь использовать кошелек и какие монеты собираетесь на нем хранить. После ответа на эти вопросы вам останется выбрать из нескольких моделей)

1
Ответить

Правильно понимаю, что:
1) Trezor взломать без установленной кодовой фразы невозможно? Или все же возможно?
2) Все эти атаки относятся к взлому в случае, если кошелек украли физически?

2
Ответить

1) Извлечь мнемонику из чипа STM32, используемого в том числе в Trezor One и T, возможно. Поэтому рекомендуется использовать кодовую фразу, в чипе она не хранится, и ее нужно вводить при каждом подключении кошелька.
2) Да! Взлом возможен только при физическом доступе к девайсу. От удаленных атак кошельки Trezor защищены так же надежно, как и кошельки с SE.

1
Ответить