Аппаратные криптокошельки считаются самыми безопасными. Но, как мы знаем, абсолютной защиты просто не бывает — и такие кошельки тоже можно взломать. На 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 с «доступ отсутствует» на «частичный доступ». После этого они смогли считывать оперативную память чипа, но содержимое флеш-накопителя оставалось недоступным для чтения.
Однако исследователи выяснили, что после начала обновления прошивки чип помещает криптографическое зерно в оперативную память, чтобы оно сохранилось во время перезаписи флеш-памяти. Все, что им оставалось, это начать процесс обновления прошивки и извлечь содержимое всей памяти. После этого найти криптографическое зерно оказалось несложно — оно хранилось в оперативной памяти в виде незашифрованной мнемонической фразы (то есть набора обычных слов вместо случайного числа), которую легко обнаружить.
Заключение
Нужно понимать, что большинство описанных методик взлома, которые нашли Томас Рот, Джош Датко и Дмитрий Недоспасов, сложны и подразумевают физический доступ к устройству. Так что не спешите выбрасывать свой кошелек Ledger или Trezor. Если злоумышленникам не удастся наложить на него руки, ваши биткойны никак не пострадают (разве что обесценятся).
С другой стороны, стоить помнить о существовании атак через цепочку поставок. Аппаратные кошельки сравнительно несложно модифицировать и скомпрометировать партию перед продажей. Разумеется, это можно сделать и с обычными ноутбуками или смартфонами. Но в этом случае киберпреступники не могут гарантировать, что будущий хозяин ноутбука станет хранить на нем криптовалюту. А вот насчет аппаратного кошелька можно быть уверенным — рано или поздно он будет использован для хранения криптовалюты.
Производители аппаратных кошельков ищут пути решения этой проблемы — например, наносят защитные стикеры на упаковку устройств и создают страницы на своих сайтах, где пользователи могут проверить безопасность своих кошельков. Но подобные меры не очень-то работают и могут сбивать владельцев кошельков с толку.
Впрочем, в отличие от некоторых других аппаратных кошельков, устройства Ledger и Trezor действительно проектируются с акцентом на безопасности. Просто не заблуждайтесь, думая, что их никак нельзя взломать. Лучше предпринять дополнительные меры по защите своего криптосостояния:
- Покупайте аппаратные криптокошельки только у зарекомендовавших себя поставщиков.
- При покупке внимательно проверьте упаковку и устройство на наличие следов вмешательства.
- Для полной уверенности стоит вскрыть устройство и убедиться в том, что на плате нет никаких посторонних элементов.
- Храните свой криптокошелек в надежном месте и проследите, чтобы он не оказался в руках людей, которым вы не доверяете.
- Используйте на своем компьютере для работы с криптовалютой надежное защитное решение — многие описанные методы взлома полагаются на установку вредоносных программ именно на компьютер, к которому подключен аппаратный кошелек.
Дополнительные рекомендации в отношении кошельков Trezor:
- Trezor является открытой платформой — как программной, так и аппаратной. Если умеете держать в руках паяльник, можете создать собственный аппаратный кошелек на основе продающихся в магазине компонентов. Так вы будете полностью уверены, что никто не модифицировал аппаратную часть вашего кошелька.
- Устройства Trezor предлагают дополнительную защиту на основе парольной фразы, исключающей извлечение криптозерна (в этом режиме защиты хранящееся зерно не будет полным без парольной фразы). Подумайте о том, чтобы использовать этот режим.
Полную версию выступления исследователей вы можете посмотреть по приведенной ниже ссылке. Это весьма интересное и познавательное видео для владельцев аппаратных кошельков.