Содержание
- Как получить публичный ключ?
- Как работает Profanity?
- Что здесь не так?
- И как хакнуть-то?
- Хак
- Disclaimer
- Социальная инженерия и фишинг
- Троянские вирусы
- Клавиатурные шпионы (keyloggers)
- Публичные сети Wi-Fi
- Slack-боты
- Аутентификация по SMS и SIM Swapping
- Мобильные приложения
- Расширения, плагины и аддоны для браузеров
- Что такое криптокошелек?
Криптография *Криптовалюты
В сентябре 2022 года я решил создать себе новый hot wallet для ежедневного использования. Хотелось сгенерировать себе что-то легко узнаваемое, например 0x0000...aced
. Мой друг Алекс сказал мне, что он использовал для таких целей Profanity, инструмент для создания Ethereum кошельков с красивыми адресами. Когда я открыл их GitHub репозиторий, то я увидел в README файле, что была найдена критическая ошибка. Кроме того, в тот же день была опубликована статья в блоге 1inch с некоторыми идеями по её использованию.
У меня было свободное время, поэтому я решил погрузиться в тему и самостоятельно реализовать взлом. В этой статье я объясню, как можно взломать адреса, сгенерированные с помощью Profanity, и как я смог подобрать приватный ключ к кошельку моего друга на MacBook M1 Pro (16 Гб) за 26 минут. Погнали!
Как получить публичный ключ?
Если у вас есть закрытый ключ k
(случайное число длиной 256 бит), то вам нужно немного “пошаманить” с криптографией на эллиптической кривой, чтобы получить ваш открытый ключ. Более конкретно, ваш открытый ключ K = k * G
, где G
– точка генератор на эллиптической кривой. Затем вы берете 5 младших байт хеша keccak256
от открытого ключа, чтобы получить адрес, на который вам обычно и кидают эфиры. Как можно догадаться, вы не можете обратить этот процесс. Таким образом, единственный способ получить адрес с множеством ведущих нулей – это перебрать много различных приватных ключей.
Как работает Profanity?
Profanity использует OpenCL ядра для параллельного запуска большого количества GPU потоков, которые генерируют миллионы адресов в секунду с помощью простого алгоритма:
-
Profanity генерирует случайный сид
S
, который используется при генерации закрытого ключаk
. -
Затем он создает примерно 4 миллиона воркеров, где i-й воркер принимает
K[i, 0] = (k + i * 2^192) * G
в качестве начального открытого ключа. -
После этого каждый воркер увеличивает свой открытый ключ на
G
, пока адрес, полученный из него, не будет соответствовать требованиям пользователя. Когда он будет найден, вы можете легко вычислить закрытый ключ, зная номер воркера, который его нашел, и сколько итераций он совершил.
Что здесь не так?
Описанный метод прост и эффективен, но в его реализации есть небольшая проблема, которая имеет значительные последствия. Случайный сид S
, который используется для генерации закрытого ключа k
, является 32-разрядным числом вместо 64-разрядного. Обратите внимание, что если вы знаете S
, который Profanity использовал в процессе генерации, вы знаете все закрытые ключи, которые он генерировал.
Мы собираемся использовать тот факт, что количество всех сидов всего 2^32
.
И как хакнуть-то?
Идея алгоритма
Если у вас есть адрес, который был сгенерирован с помощью Profanity, вы можете найти соответствующий закрытый ключ, выполнив обратный процесс генерации:
-
Сначала вам нужно восстановить открытый ключ
K_t
соответствующий адресу. Вы можете это сделать, если есть любая транзакция подписанная жертвой. Например, вы можете попробовать найти её на Etherscan. -
Если открытый ключ
K_t
был сгенерирован из начального открытого ключаK
при помощи добавления необходимого количестваG
(+2^192 * G
для каждой строки и+G
для каждого столбца), то можно инициализировать воркеров таким образом, чтобы i-й воркер начинал с открытого ключаK_t - i * 2^192 * G
, а затем уменьшал его наG
на каждой итерации, покаK
не будет найден кем-либо из них. -
Если вы знаете, какой закрытый ключ соответствует
K
, вы можете вычислить и закрытый ключ жертвы (опять же, потому что вы знаете строку и столбец, где его нашли).
Вроде бы все просто! Но есть один нюанс! Мы не знаем начальный открытый ключ K
.
Уязвимость
Да, мы не знаем, какой начальный открытый ключ K
был использован при генерации кошелька жертвы. Но мы знаем, что он был получен из одного из 2^32
сидов (примерно 4 миллиарда). Таким образом, мы можем проитерироваться через все и предварительно вычислить все соответствующие закрытые и открытые ключи. Теперь, когда мы запускаем обратный процесс, на каждой итерации мы должны проверять, принадлежит ли новый открытый ключ нашему предварительно вычисленному набору. Если мы находим ключ, который находится в множестве, то кошелек взломан! Если бы сид имел 64 бит, то мы были бы должны предварительно вычислить 2^64
открытых ключей. Это очень много! В 4 миллиарда раз больше!
Задача поиска
Эта часть алгоритма самая нетривиальная. Еще разок. Мы должны уметь проверять элемент на принадлежность множеству из 2^32
открытых ключей. В идеале бы, чтобы каждый воркер выполнял эту проверку на GPU, чтобы CPU не был бы узким горлышком. У нас есть 2^32
открытых ключей. На самом деле это не выглядит огромным количеством для современных компьютеров. Но каждый открытый ключ занимает 32 байта в сжатом виде. Поэтому, если вы решите хранить их все на диске, то потребуется 128Gb памяти. Более того, скорее всего ваш компьютер не имеет 128Gb RAM для загрузки их в память. Проще говоря, 128Gb это слишком много. Если мы используем только 12 байт для каждого открытого ключа, то потребуется 48GB памяти для их хранения, и вероятность коллизий будет низкой. Так и поступим. Когда я использовал только 8 байт, то коллизии происходили.
Разделение
Бинарный поиск
Я поделил множество всех открытых ключей на 4 части по 2^30
ключей в каждой. Затем взял только 8 байт от каждого открытого ключа, отсортировал их и загрузил в память. Это ровно 8Gb памяти видеокарты. Теперь каждый воркер может выполнять бинарный поиск, чтобы проверить, принадлежит ли его открытый ключ множеству. Как вы помните, я уже упомянул, что коллизии случаются, если использовались только 8 байт. Но это не большая проблема, потому что они случаются редко, и когда это происходит, я сравниваю эти открытые ключи на CPU используя 12 байт.
Хеш-таблица
Двоичный поиск – отличный алгоритм, но есть ли способ найти элемент еще быстрее? Конечно. Мы можем использовать хеш-таблицу. Однако есть одно ограничение. Все слоты использовать нельзя. Как правило, большинство реализаций хеш-таблиц с открытой адресацией имеют коэффициенты загрузки 50%. Таким образом, если у нас выделено 8Gb для хеш-таблицы, то мы можем хранить только 2^29
открытых ключей (8 байт каждый). Поэтому нам нужно разбить наш набор на 8 частей, а не на 4. Стоит ли это того? С одной стороны, чем больше у нас частей, тем больше мы тратим вычислительных ресурсов на повторное прохождение по одним и тем же ключам. С другой стороны, проверка элемента на принадлежность в хеш-таблице работает за O(1)
вместо O(log N)
для двоичного поиска.
Сравнение
Реализации с хеш-таблицей потребовалось 64 минуты для выполнения 10 000 итераций, а двоичному поиску – почти 4 часа. Даже несмотря на повторные вычисления для 8 частей, вместо 4, первый подход работает гораздо быстрее.
Хак
Вот и самая вкусная часть! Я потратил 7,5 часов на предподсчет открытых ключей на своем Macbook Pro, а также 26 минут на сам взлом закрытого ключа Алекса. Это просто безумие!
Profanity уже почти 5 лет, а эта уязвимость всегда была там, ожидая пока её кто-нибудь найдет. Интересно, сколько еще мелких ошибок и опечаток скрыто в мире крипты, которые могут иметь существенные последствия. Что тут сказать? Будьте осторожны, всегда проверяйте свой код и подписывайтесь на мой аккаунт в Twitter и блог в Telegram 😉
Disclaimer
Этот пост был подготовлен исключительно в образовательных и развлекательных целях.
Биткоин и другие криптовалюты традиционно привлекают повышенное внимание мошенников самого разного калибра, которые не только используют их в своей противоправной деятельности, но и активно похищают не только с бирж, но и у рядовых пользователей.
Прибегая к помощи продвинутых технологий, хакеры находят все новые способы отъема средств, однако основные и проверенные временем методы остаются все те же, поскольку каждый день в криптовалютное пространство заходят новые люди, которые часто не располагают адекватным уровнем знаний и осведомленности для противодействиям таким атакам.
Ниже перечислены основные уловки и трюки хакеров, зная о которых пользователи могут как минимум обезопасить свои монеты.
Социальная инженерия и фишинг
Под социальной инженерией понимается совокупность обменных приемов, заставляющих пользователей выполнять на сайтах или в приложениях действия, которые могут нанести им ущерб. Одним из таких весьма популярных методов является фишинг – создание сайтов-клонов известных ресурсов, которые вынуждают пользователей раскрывать свои персональные данные, включая пароли, телефонные номера, реквизиты банковских карт, а в последние годы и приватные ключи от криптовалютных кошельков.
Ссылки на фишинговые сайты могут распространяться разными способами – это и рекламные объявления в соцсетях, и электронные письма, копирующие внешний вид рассылок от официальных проектов. Все это делается с единственной целью — заставить невнимательного пользователя перейти на фейковый сайт и ввести там персональные данные.
По данным Chainalysis, в криптовалютном пространстве фишинг оставался наиболее прибыльным мошенническим методом на протяжении 2017 и 2018 годов. Однако, если в 2017 году на его долю приходилось более 88% всех мошеннических схем, то в 2018 году этот метод стал менее эффективным, и его показатель успешности снизился уже до 38,7%.
Тем не менее опасность стать жертвой фишинговой атаки сохраняется. Среди последних таких инцидентов можно выделить атаки на популярный кошелек Electrum в декабре 2018 и в апреле 2019 гг. Нередко при этом атаки велись и на альткоин-кошельки.
Кроме того, за последнее время жертвами фишинговых атак становились биржи Bitfinex и Binance, аппаратный кошелек Trezor, платформа для покупки и продажи биткоинов LocalBitcoins, а также пользователи социальных сетей, например, Facebook. В последнем случае злоумышленники копируют страницы популярных криптовалютных сообществ, после чего используют фотографии участников реальных сообществ, отмечая их в посте как победителей программы лояльности к платформе.
О том, какое значение борьбе с фишингом придают ведущие представители индустрии, сполна говорит и тот факт, что в апреле этого года Binance Labs, венчурное подразделение криптовалютной биржи Binance, осуществило инвестиции в PhishFort. Эта компания специализируется на решениях по защите от фишинговых атак и ориентируется на бизнесы, находящиеся в высокой группе риска, такие как биткоин-биржи, ICO-проекты и платформы по выпуску токенов.
Рекомендации по защите от фишинговых атак весьма просты: повышение общей компьютерной грамотности, собственная внимательность (ручной ввод URL и проверка использования протокола https), а также используемое по умолчанию недоверие к объявлениям, предлагающим бесплатную раздачу криптовалют.
Троянские вирусы
Эти многочисленные вирусы представляют собой разновидность вредоносных программ, проникающих в компьютер под видом легального программного обеспечения.
В данную категорию входят программы, осуществляющие различные неподтвержденные пользователем действия:
- сбор информации о банковских картах,
- нарушение работоспособности компьютера,
- использование ресурсов компьютера в целях майнинга,
- использование IP для нелегальной торговли и т. п.
Но изобретательность хакеров на месте не стоит. Так, в 2018 году была обнаружена новая версия печально известного трояна Win32.Rakhni. Этот вирус известен еще с 2013 года, но если поначалу он фокусировался исключительно на шифровании устройств и требовании выкупа за разблокировку, то новая версия пошла намного дальше.
Для начала она проверяет наличие папок, связанных с биткоин-кошельками, и если таковые обнаружены, шифрует компьютер и требует выкуп. Однако, если таких папок найдено не было, Win32.Rakhni устанавливает вредонос, похищающий вычислительные мощности компьютера с целью скрытого майнинга криптовалют, а также пытается распространиться на другие устройства в сети.
При этом, как видно на изображении выше, более 95% всех случаев заражения компьютеров этим трояном приходилось на Россию, второе и третье места достались Казахстану и Украине.
Согласно данным Kaspersky Labs, Win32.Rakhni чаще всего распространяется через электронные письма, в которых пользователям предлагается открыть прикрепленный pdf-файл, однако вместо ожидаемого содержимого запускается программа-вредонос.
Как и в случае с фишинговыми атаками для предотвращения заражения устройств необходимо соблюдать базовую компьютерную гигиену и быть крайне внимательным к открываемым вложениям.
Клавиатурные шпионы (keyloggers)
Вредоносные программы зачастую состоят из нескольких компонентов, каждый из них выполняет собственную задачу. По сути их можно сравнить с швейцарскими армейскими ножами – при их помощи хакеры могут выполнять множество различных действий на атакованной системе.
Один из популярных компонентов при атаках – это так называемые клавиатурные шпионы (кейлоггеры). Они представляют собой узкоспециализированный инструмент, записывающий все нажатия клавиш на устройствах. С его помощью злоумышленники могут незаметно завладеть всей конфиденциальной информацией пользователя, включая пароли и ключи от криптовалютных кошельков.
Чаще всего кейлоггеры проникают в системы с составе комплексного вредоносного софта, но иногда они могут быть встроены во вполне легальное программное обеспечение.
Производители антивирусных решений, как правило, добавляют известные кейлоггеры в свои базы, и метод защиты от них мало чем отличается от метода защиты от любого другого вредоносного софта. Проблема состоит в том, что кейлоггеров существует огромное количество, и уследить за всеми физически очень сложно. По этой причине клавиатурные шпионы с первой попытки часто не определяются антивирусами.
Тем не менее обычная компьютерная гигиена и использование специального софта могут стать хорошей помощью в борьбе с этим видом атак.
Публичные сети Wi-Fi
Кража средств через общедоступные сети Wi-Fi всегда была и остается одним из наиболее популярных инструментов злоумышленников.
Большинство Wi-Fi-роутеров используют протокол WPA (Wi-Fi Protected Access), который не только шифрует всю информацию в беспроводной сети, но и обеспечивает доступ к ней только авторизованным пользователям.
Однако хакеры нашли лазейку и здесь: запуская несложную команду KRACK, они заставляют устройство жертвы переподключиться к собственной сети Wi-Fi, после чего получают возможность отслеживать и контролировать всю проходящую через нее информацию, включая ключи от криптовалютных кошельков.
Защититься от такой атаки помогают регулярные обновления прошивок роутера, а также собственная внимательность: никогда не следует осуществлять транзакции, находясь в публичных местах, вроде вокзалов, аэропортов, гостиниц или – что происходит весьма часто среди представителей биткоин-сообщества – на блокчейн-конференциях.
Slack-боты
Существует достаточно большое число ботов для Slack, которые хакеры успешно берут на вооружение. Как правило, такие боты отправляют пользователю уведомление о наличии проблем с его кошельком. Конечная цель – заставить пользователя нажать на уведомление и ввести приватный ключ.
Наиболее масштабной успешной хакерской атакой, в ходе которой были задействованы боты для Slack, стал инцидент с проектом Enigma в августе 2017 года. Тогда проект был вынужден приостановить пресейл токенов ECAT после того, как неизвестные злоумышленники взломали сайт проекта и, указав ложный ETH-адрес, лишили его более $400 000.
Кроме того, представители Enigma подтвердили, что также был скомпрометирован Slack-чат проекта:
Рекомендации: игнорировать подобные сообщения, слать жалобы на распространяющие их боты, установить защиту на Slack-канал (например, security-боты Metacert или Webroot).
Аутентификация по SMS и SIM Swapping
Аутентификация по SMS по-прежнему остается весьма распространенным методом верификации различных операций, в том числе и криптовалютных транзакций. Однако еще в сентябре 2017 года специализирующаяся на кибербезопасности компания Positive Technologies продемонстрировала, как легко можно перехватить SMS с паролем, пересылаемое по протоколу Signaling System 7 (SS7).
Демонстрация была проведена на примере аккаунта на платформе Coinbase, который был привязан к почте на Gmail. На первый взгляд могло показаться, что речь идет об уязвимости на стороне Coinbase, однако в действительности задействованный Positive Technologies инструмент собственной разработки использовал слабые места в самой сотовой сети.
Перенаправив текстовые сообщения на собственный номер, исследователи смогли сбросить и установить новый пароль на почте, после чего получили полный доступ к кошельку.
В данным случае эксперимент был поставлен в исследовательских целях, и фактической кражи монет не произошло, однако его результаты показали, что такой метод вполне может быть использован и настоящими преступниками.
В данном материале специалисты Hacken также перечислили основные варианты перехвата SMS :
- Прослушка. Перехват SMS правоохранителями вследствие превышения служебных полномочий или нецелевого использования материалов негласных следственных действий.
- Дублирование (клонирование) SIM-карты через оператора сотовой связи с использованием персональных данных клиента и дальнейшее использование клонированной SIM-карты в противоправной деятельности.
- Ложная базовая станция для перехвата и расшифровки всех входящих сообщений абонента и дальнейшее использование перехваченных данных в противоправной деятельности.
- Взлом “Персонального кабинета” абонента на сайте или приложении сотового оператора и переадресация всех сообщений на адрес злоумышленника, а также дальнейшее использование полученных данных в противоправной деятельности.
В этом списке также интересен второй пункт — клонирование (подмена) SIM-карты. Этот метод известен как SIM Swapping, и уже известен первый громкий случай, когда он был использован для кражи криптовалюты на $14 млн.
Речь идет о случае, произошедшем в 2018 году, когда в США были арестованы два хакера, сумевших убедить оператора мобильной связи передать им контроль над номером, где была двухфакторная аутентификация к аккаунту администратора проекта Crowd Machine.
Рекомендация: отказ от верификации через SMS в пользу специальных программ для двухфакторной аутентификации (2FA), например, Google Authenticator.
Мобильные приложения
Жертвами хакеров чаще всего становятся владельцы устройств на Android, вместо 2FA использующие только логин и пароль. Происходит это в том числе и потому, что процесс добавления приложений в Google Play Store менее строгий, чем у App Store. Злоумышленники пользуются этим, размещая собственные приложения, которые имитируют известные кошельки и биржи, и выманивают у невнимательных пользователей конфиденциальные данные.
Одна из громких историй с фейковыми приложениями была связана с биржей Poloniex. В ноябре 2017 года эксперты компании ESET обнаружили в Google Play программу, которая выдавала себя за официальное мобильное приложение этой американской биржи. Суть мошенничества заключалась в том, что скачавшие программу пользователи вводили туда логин и пароль. Это позволяло создателям вируса самостоятельно менять настройки, выполнять транзакции, а также получить доступ к почте пользователей.
Несмотря на то, что на тот момент у Poloniex не было официальных мобильных приложений (они были выпущены только в июле 2018), два варианта фейковых приложений установили более 5 тысяч человек. После предупреждения ESET они были удалены из Google Play.
Также в Google Play находились фальшивые приложения MetaMask и Trezor Mobile Wallet.
Пользователи устройств на iOS чаще становятся жертвами злоумышленников, распространяющих приложения со встроенной функцией скрытого майнинга. После обнаружения этой проблемы компания Apple была вынуждена ужесточить правила принятия приложений в App Store. При этом ущерб от таких приложений достаточно невелик — они только снижают производительность компьютера, не уводя при этом средства.
Рекомендации: не устанавливайте приложения, в которых нет крайней необходимости. Не забывайте о двухфакторной аутентификации, а также проверяйте ссылки на приложения на официальных сайтах проектов и платформы, чтобы убедиться в их подлинности.
Расширения, плагины и аддоны для браузеров
Существует немало браузерных расширений и плагинов, призванных сделать взаимодействие с криптовалютными кошельками более простым и комфортным. Однако написаны они, как правило, на JavaScript, что делает их уязвимыми к хакерским атакам. Речь может идти как о перехвате пользовательских данных и дальнейшем доступе к кошелькам, так и об установке программ для скрытого майнинга.
При этом, как отметили в Check Point Software Technologies Ltd, именно скрытые криптомайнеры остаются доминирующей угрозой для организаций по всему миру. Так, в 2018 году криптомайнеры стабильно занимали первые четыре строчки рейтингов самых активных угроз и атаковали 37% организаций по всему миру. В 2019 году, несмотря на снижение стоимости всех криптовалют, 20% компаний продолжают подвергаться атакам криптомайнеров каждую неделю.
Противостоять этой угрозе можно несколькими способами: установить отдельный браузер или даже отдельный компьютер для трейдинга, использовать режим инкогнито, регулярно обновлять антивирусные базы и не скачивать никаких сомнительных расширений или плагинов.
Несмотря на то, что основная часть хакерских атак приходится на биржи и компании, индивидуальных пользователей они также не обходят вниманием. Согласно результатам прошлогоднего исследования компании Foley & Lardner, 71% крупных трейдеров и инвесторов назвали наиболее высоким риском именно кражу криптовалют, 31% при этом назвал деятельность хакеров угрозой всей криптовалютной индустрии.
Хакеры, как правило, идут на шаг впереди всей индустрии, поэтому помимо специальных защитных программ не менее важным аспектом борьбы со злоумышленниками остается собственная компьютерная грамотность пользователей и отслеживание последних трендов и событий в области кибербезопасности.
Самые последние новости криптовалютного рынка и майнинга: Новогодние акции и конкурсы от крупнейшей криптобиржи Binance Власти Нигерии разрешат гражданам инвестировать в криптовалюту Безопасность использования аппаратных кошельков Ledger под сомнением Инструкция: Как новичку купить биткоин на крипто-бирже за рубли? Выиграйте крипто рождественские подарки на 1xBit The following two tabs change content below.
Аппаратные криптокошельки считаются самыми безопасными. Но, как мы знаем, абсолютной защиты просто не бывает — и такие кошельки тоже можно взломать. На 35-м Chaos Communication Congress исследователи безопасности Томас Рот (Thomas Roth), Джош Датко (Josh Datko) и Дмитрий Недоспасов продемонстрировали несколько способов, как это сделать. Но прежде чем окунуться в тонкости взлома, давайте немного освежим в памяти, что же такое этот аппаратный кошелек и как он работает.
Что такое криптокошелек?
Сначала разберемся, что представляет собой обычный криптокошелек. Грубо говоря, это счет для хранения криптовалюты. Он состоит из пары криптографических ключей — открытого и закрытого. Очень грубо это похоже на связку логина и пароля: открытый ключ выступает в качестве адреса кошелька, а закрытый нужен для доступа к койнам, то есть для подписи исходящих транзакций.
Теперь давайте разберемся, как в криптосистемах генерируются пары ключей, когда одному человеку принадлежит множество кошельков. Согласитесь, хранить несколько сгенерированных пар ключей по отдельности не очень удобно. Поэтому на самом деле системы криптовалют генерируют одно большое число — криптографическое зерно (seed), на основе которого неким предсказуемым образом можно получить нужное число пар открытых и закрытых ключей для нескольких кошельков.
Именно это число — криптографическое зерно — в действительности хранит у себя пользователь системы криптовалюты.
В отличие от традиционных финансовых систем, криптовалюты обычно не подконтрольны никаким централизованным органам, в них нет механизмов регистрации, возврата платежей и восстановления доступа к счету. Тот, у кого есть криптографическое зерно и производные ключи, и является владельцем криптокошельков, с которыми связаны эти ключи. Если зерно будет потеряно или украдено, жаловаться владельцу будет некуда, и ему придется распрощаться с койнами в своих кошельках.
Кстати, хотя формально кошельком считается связка открытого и закрытого ключей, в большинстве случаев любые средства хранения этих ключей также называются кошельками. Таким образом, аппаратный кошелек — это устройство, хранящее криптокошельки.
Зачем вообще нужны аппаратные криптокошельки?
Учитывая важность криптографического зерна, стоит позаботиться о том, чтобы оно было как можно лучше защищено. Есть множество способов хранения зерен, у каждого из которых свои преимущества и недостатки. Удобнее всего хранить зерна на компьютере или смартфоне, а еще удобнее — на специализированном сайте в Интернете. Однако у таких способов хранения есть масса проблем. Вредоносные программы, ворующие криптокошельки, — совсем не редкость. А веб-кошельки могут не только стать жертвой взлома, но и обанкротиться, утащив за собой на дно тонны койнов.
Прибавьте к этому массу других напастей, включая фишинг, подмену платежных реквизитов, утрату кошельков из-за аппаратных сбоев и многое другое. Для решения всех этих проблем и были придуманы аппаратные криптокошельки — отдельные устройства, на которых криптографические зерна хранятся надежно и безопасно.
Как работают аппаратные криптокошельки?
Основной принцип работы аппаратного криптокошелька заключается в том, что криптографическое зерно никогда не должно покидать устройство. Все криптографические операции производятся прямо внутри устройства, а не на компьютере, к которому он подключен, — наружу отправляются уже подписанные транзакции. Таким образом, даже если ваш компьютер будет скомпрометирован, злоумышленники не доберутся до ваших ключей.
Также не помешают дополнительные меры проверки доступа, например возможность запереть устройство PIN-кодом. И конечно, очень удобно, если можно проверить транзакцию прямо на устройстве, а затем подтвердить ее или отклонить.
Все эти требования привели разработчиков к оптимальному дизайну: обычно аппаратный криптокошелек выглядит как небольшой USB-брелок с дисплеем и несколькими кнопками для ввода PIN-кода и подтверждения транзакций.
Однако внутри они устроены по-разному. Два ведущих производителя аппаратных кошельков — Trezor и Ledger — используют два разных подхода к проектированию «железной» части брелоков.
Подход Ledger: хранение криптографического зерна в чипе Secure Element
Устройства Ledger, а именно модели Ledger Nano S и Ledger Blue, оснащены двумя главными чипами. Один из них — Secure Element, специальный микроконтроллер для хранения конфиденциальных криптографических данных. Такие чипы применяются в SIM-картах, банковских картах и смартфонах с поддержкой Samsung Pay и Apple Pay.
Второй чип представляет собой микроконтроллер общего назначения, решающий периферийные задачи: управление USB-подключением, дисплеем, кнопками и так далее. Он выступает в роли посредника между чипом Secure Element и внешним миром, в том числе самим пользователем. Например, каждое подтверждение транзакции пользователем проходит через микроконтроллер общего назначения, а не через чип Secure Element.
Но даже хранение криптографических зерен в защищенном чипе не сделало устройство Ledger полностью неуязвимым. Взломать чип Secure Element и украсть криптографическое зерно крайне сложно, но микроконтроллер общего назначения — другое дело. Если его скомпрометировать, можно сделать так, что кошелек будет подтверждать транзакции злоумышленников.
Исследователи изучили прошивку Ledger Nano S и выяснили, что кошелек можно перепрошить скомпрометированной версией, записав определенное значение в нужный адрес памяти. Разработчики Ledger защитили этот адрес от записи. Однако оказалось, что микроконтроллер допускает изменение адресации памяти — то есть заветной ячейке памяти можно назначить другой адрес, который в список заблокированных не входит. Исследователи воспользовались этой аппаратной особенностью и загрузили в Nano S модифицированную прошивку. В демонстрационных целях эта модификация содержала игру «Змейка» — но вместо нее мог бы быть, например, вредоносный модуль, подменяющий адрес кошелька во всех исходящих транзакциях.
Другой способ компрометации аппаратного кошелька основан на аппаратных имплантах. Джош Датко смог подключить к Ledger Nano S недорогой имплант, который нажимает кнопку подтверждения при получении вредоносной команды по радио. Судя по всему, таким способом можно скомпрометировать любой аппаратный кошелек — исследователь выбрал в качестве жертвы своего эксперимента Ledger Nano S просто потому, что это самый компактный из криптокошельков, поэтому встроить имплант в него было сложнее всего.
Другое устройство того же производителя, Ledger Blue, оказалось уязвимым к атакам по сторонним каналам. Ledger Blue — это аппаратный кошелек с большим тачскрином и емкой батареей. Выяснилось, что из-за неудачного дизайна печатной платы она излучает вполне различимые радиосигналы, когда пользователь вводит PIN-код. Исследователи записали эти сигналы и натравили на них алгоритм машинного обучения, который научился распознавать их с точностью 90%.
Подход Trezor: хранение криптографического зерна во флеш-памяти микроконтроллера общего назначения
Кошельки Trezor устроены немного иначе. В них нет чипов Secure Element, и всеми процессами в устройстве управляет один-единственный чип — микроконтроллер общего назначения на базе архитектуры ARM. Этот чип отвечает как за хранение и обработку криптографических данных, так и за управление USB-подключением, дисплеем, кнопками и всем остальным.
Теоретически такая конструкция должна упростить взлом прошивки устройства для доступа к криптографическому зерну, спрятанному во флеш-памяти микроконтроллера. Но, как убедились эксперты, инженеры Trezor хорошо поработали над безопасностью прошивки, поэтому им пришлось направить свои усилия на взлом аппаратной части — и они в этом преуспели.
Исследователи использовали методику под названием voltage glitching — она заключается в том, что на микроконтроллер подается пониженное напряжение, чтобы спровоцировать сбои в его работе. С помощью этого метода они переключили состояние чипа Trezor One с «доступ отсутствует» на «частичный доступ». После этого они смогли считывать оперативную память чипа, но содержимое флеш-накопителя оставалось недоступным для чтения.
Однако исследователи выяснили, что после начала обновления прошивки чип помещает криптографическое зерно в оперативную память, чтобы оно сохранилось во время перезаписи флеш-памяти. Все, что им оставалось, это начать процесс обновления прошивки и извлечь содержимое всей памяти. После этого найти криптографическое зерно оказалось несложно — оно хранилось в оперативной памяти в виде незашифрованной мнемонической фразы (то есть набора обычных слов вместо случайного числа), которую легко обнаружить.
Дамп памяти содержит криптографическое зерно в виде мнемонической фразы, а также PIN-код (в данном случае 1234), записанные открытым текстом
Заключение
Нужно понимать, что большинство описанных методик взлома, которые нашли Томас Рот, Джош Датко и Дмитрий Недоспасов, сложны и подразумевают физический доступ к устройству. Так что не спешите выбрасывать свой кошелек Ledger или Trezor. Если злоумышленникам не удастся наложить на него руки, ваши биткойны никак не пострадают (разве что обесценятся).
С другой стороны, стоить помнить о существовании атак через цепочку поставок. Аппаратные кошельки сравнительно несложно модифицировать и скомпрометировать партию перед продажей. Разумеется, это можно сделать и с обычными ноутбуками или смартфонами. Но в этом случае киберпреступники не могут гарантировать, что будущий хозяин ноутбука станет хранить на нем криптовалюту. А вот насчет аппаратного кошелька можно быть уверенным — рано или поздно он будет использован для хранения криптовалюты.
Производители аппаратных кошельков ищут пути решения этой проблемы — например, наносят защитные стикеры на упаковку устройств и создают страницы на своих сайтах, где пользователи могут проверить безопасность своих кошельков. Но подобные меры не очень-то работают и могут сбивать владельцев кошельков с толку.
Впрочем, в отличие от некоторых других аппаратных кошельков, устройства Ledger и Trezor действительно проектируются с акцентом на безопасности. Просто не заблуждайтесь, думая, что их никак нельзя взломать. Лучше предпринять дополнительные меры по защите своего криптосостояния:
- Покупайте аппаратные криптокошельки только у зарекомендовавших себя поставщиков.
- При покупке внимательно проверьте упаковку и устройство на наличие следов вмешательства.
- Для полной уверенности стоит вскрыть устройство и убедиться в том, что на плате нет никаких посторонних элементов.
- Храните свой криптокошелек в надежном месте и проследите, чтобы он не оказался в руках людей, которым вы не доверяете.
- Используйте на своем компьютере для работы с криптовалютой надежное защитное решение — многие описанные методы взлома полагаются на установку вредоносных программ именно на компьютер, к которому подключен аппаратный кошелек.
Дополнительные рекомендации в отношении кошельков Trezor:
- Trezor является открытой платформой — как программной, так и аппаратной. Если умеете держать в руках паяльник, можете создать собственный аппаратный кошелек на основе продающихся в магазине компонентов. Так вы будете полностью уверены, что никто не модифицировал аппаратную часть вашего кошелька.
- Устройства Trezor предлагают дополнительную защиту на основе парольной фразы, исключающей извлечение криптозерна (в этом режиме защиты хранящееся зерно не будет полным без парольной фразы). Подумайте о том, чтобы использовать этот режим.
Полную версию выступления исследователей вы можете посмотреть по приведенной ниже ссылке. Это весьма интересное и познавательное видео для владельцев аппаратных кошельков.
ли со статьей или есть что добавить?