ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%
ХЕЛЛОУИН СЕЙЛ-10%
До 31 октября-10%

1inch Hardware Wallet: как создают аппаратный кошелёк с тачскрином

Алексей Девяткин из 1inch рассказывает, зачем аппаратному кошельку тачскрин, камера и открытая прошивка и как устройство защищает приватные ключи.
Алексей Девяткин, 1inch

Интервью вышло в марте 2023 года. Сроки и планы проекта указаны на тот момент.

Путь в 1inch

Электроникой я занимаюсь с самого детства, вся жизнь связана с ней. После университета проходил целевую практику и работал в найме, а потом начал работать в стартапах. В них я был фаундером и идейным вдохновителем. Какие-то стартапы пошли дальше, какие-то умерли, так обычно и бывает. Но все они были связаны с разработкой железа и электронных устройств. Где-то я руководил командой разработки, где-то был техлидом и генерировал идеи.

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

Сергей Кунц, кофаундер 1inch

Это и стало отправной точкой. К тому времени я уже общался с ребятами из криптоиндустрии и интересовался этой сферой. В какой-то момент я решил, что больше не хочу делать стартапы: для меня это слишком накладно и по ресурсам, и по времени. Хотел заниматься сторонними проектами, например разработкой устройств на заказ. Мы случайно списались с Сергеем, и он предложил приехать к нему пообщаться.

В Лиссабоне я познакомился с ребятами из Opium и Zerion и с Антоном Буковым, вторым кофаундером 1inch. Они сразу обратили внимание, что я занимаюсь электроникой, и начали говорить, что я мог бы разработать нормальный кошелёк. Все тогда делились своими болями насчёт холодных кошельков.

Антон Буков, кофаундер 1inch

Я подумал: почему бы и нет. Сергей и Антон сказали, что давно хотят создать аппаратный кошелёк, но никак не найдут подходящего человека, чтобы реализовать задумку. У меня самого была такая идея, но связываться со стартапом я совсем не хотел. Стартап всегда держится на энтузиазме, денег на старте обычно нет, а без них сделать что-то по-настоящему классное сложно и долго. Тогда ребята предложили мне поучаствовать в грантовой программе.

Я сразу начал готовить документы и подал заявку на грант. В конце декабря пришло подтверждение, что проект интересен и актуален. С января 2022 года мы разрабатываем 1inch Hardware Wallet, и работа всё ещё идёт.

Зачем 1inch свой кошелёк

Свой аппаратный кошелёк понадобился 1inch из-за юзабилити. Решения, которые есть на рынке, утилитарные, классические и отчасти устаревшие: кошельки выглядят как флешки, будто из середины 2000-х.

USB-флешка и аппаратный кошелёк в форме флешки, между ними знак вопроса

Главной проблемой для 1inch был закрытый исходный код, как у всех популярных кошельков. Никто не знает, что у кошелька внутри.

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

Ещё 1inch не устраивали удобство устройств и их внешние фичи. У многих устройств всего две кнопки для управления, и это неудобно. Мы живём во времена, когда у всех есть телефон и планшет, а тачскрин повсюду.

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

Удивительно, что сейчас все кошельки управляются механическими кнопками. Удобства никакого. Например, чтобы подписать транзакцию, нужно ввести двумя кнопками пин-код из восьми символов. Та ещё задача, особенно если подписывать нужно 3–4 транзакции в день. Пользоваться таким устройством скорее неприятно, чем удобно. А ты вообще-то потратил деньги, и тебе должно нравиться пользоваться устройством.

А ты вообще-то потратил деньги, и тебе должно нравиться пользоваться устройством.

Мы сразу решили, что кошелёк будет с тачскрином, чтобы им было приятно и удобно пользоваться, а само устройство будет в форм-факторе банковской карты.

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

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

Главным моим требованием было, чтобы проект был опенсорсным. Мы планируем открыть репозиторий на GitHub, чтобы любой человек из комьюнити мог посмотреть, что мы сделали с кошельком, как им пользоваться и как проверить его безопасность. Любой сможет убедиться, что с софтом всё в порядке и им можно пользоваться.

Мы выложим на GitHub 3D-модель кошелька, схемы сборки и описание процесса разработки. Так что любой сможет собрать устройство дома, если закажет такую же плату, как у нас.

Что умеет кошелёк

Без подзарядки устройство проработает две недели, если подписывать транзакции 2–3 раза в день. Аккумулятор встроенный, его ресурса хватит на 3–5 лет.

В кошелёк встроена маленькая камера. Она считывает QR-коды транзакций, которые нужно подписать, и устройство предлагает подписать транзакцию или отклонить. После подписи кошелёк генерирует ответный QR-код, и мы считываем его с экрана холодного кошелька. Так подписание транзакции получается максимально защищённым.

Ещё есть NFC (Near-Field Communication). Сейчас это тоже своего рода тренд: NFC есть у многих кошельков. Других интерфейсов, вроде Bluetooth или USB, на устройстве нет. Мы хотели сделать устройство максимально защищённым: просниферить сигналы нельзя.

Основной интерфейс — камера, дополнительные фичи даёт NFC

Ещё одна фича называется мультисид: в одном кошельке можно держать несколько сид-фраз. Почти все наши конкуренты позволяют создать кошелёк только с одной сид-фразой. Некоторые поддерживают HD Wallet, когда из одной сид-фразы получается несколько наборов кошельков, но сид-фраза при этом остаётся одна. Мы решили, что это нечестно.

Да и само комьюнити говорило нам, что это неудобно. Нас спрашивали: неужели устройство не позволяет создать несколько кошельков с разными сид-фразами? Я задался тем же вопросом и технических ограничений не увидел. Так что мы движемся к тому, чтобы в холодном кошельке можно было создать несколько кошельков с разными сид-фразами. Для кошелька с крупными суммами, где нужна максимальная защита, мы предлагаем камеру и QR-коды, там всё прозрачно. Для дополнительного кошелька, например daily wallet с небольшими суммами, можно использовать NFC: так транзакции проходят быстрее.

Есть такая проблема, blind sign, или слепая подпись. Человек не знает, какую транзакцию подписывает и какой смарт-контракт исполняется. Он понятия не имеет, что сейчас будет с его активами. А вдруг исполняется смарт-контракт, который возьмёт и переведёт все активы на чужой адрес? Из-за этой непрозрачности люди часто теряют деньги. Решать эту проблему должны разработчики.

Как устроен кошелёк

У команды 1inch есть решение для парсинга calldata транзакций. Смарт-контрактов сотни тысяч, поэтому пока адекватнее всего встроить библиотеку с небольшой базой распространённых смарт-контрактов. С ней кошелёк сможет в офлайн-режиме распарсить транзакцию, показать её в понятном пользователю виде и предупредить, какой смарт-контракт выполняется. Так пользователь будет понимать, тот ли смарт-контракт работает и подписывается ли транзакция вообще.

«Любой опыт пользователя при взаимодействии с устройством складывается из мелочей. Чем больше мы обращаем внимание на мелочи, тем ценнее будет ощущение от использования нашего устройства»

Кошелёк будет совместим со стандартом EIP-4527. Этот стандарт регламентирует взаимодействие холодного аппаратного кошелька с другим устройством через QR-коды. Мы взяли его за основу разработки: такой опыт уже есть и применим к блокчейну, так что изобретать велосипед незачем. Но пользователь сможет выбрать: камера или NFC.

Мы хотим сделать устройство максимально защищённым, причём защитить не только интерфейс, но и подключение. Через камеру и NFC кошелёк подключается почти к любому устройству, телефону, десктопу или ноутбуку, без установки драйверов и сопряжения.

Надёжность самого кошелька, конечно, снижена. Но в ближайшее время мы планируем стресс-тесты: будем проверять устройство на прочность. Мы старались сделать его максимально герметичным. Внутри мало свободного места, так что от удара оно просто так не сломается. К тому же весит оно совсем немного, всего 75 граммов.

Если говорить про надёжность, то кнопки и механика тоже могут выйти из строя. Положил устройство куда-то, кнопка оказалась зажатой, мембрана потеряла упругость, и кнопка сломалась. Механика на самом деле не такая живучая, как тачскрин. Даже если ты затёр экран и изображение плохо видно, тачскрин точно не перестанет работать.

Моя команда разрабатывает именно аппаратное решение. Всю прошивку мы выложим в опенсорс.

Есть бутлоадер, загрузчик, который позволяет зашить в устройство основную прошивку. Он остаётся на устройстве на всю жизнь. Идея в том, чтобы пользователь мог проверить, правильно ли зашит бутлоадер. А ещё мог сам собрать билд прошивки из репозитория на GitHub и убедиться, что в устройстве сейчас именно та прошивка, которая выложена в репозиторий, и что она соответствует требованиям безопасности.

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

Возьмём Android. У него есть сама ОС, а есть режим бутлоадера. Это софт с ограниченным функционалом. Он позволяет подключить устройство к компьютеру по USB, чтобы оно определилось как телефон и специальный софт мог залить операционную систему в его память. Ещё он позволяет работать с памятью и тестировать функции, периферию, тачскрин, динамики и так далее. На этом задача бутлоадера заканчивается. Когда устройство включается, оно стартует с нулевого адреса памяти. Бутлоадер отправляет микроконтроллер по адресу, где должна лежать основная прошивка: операционная система, если речь про Android, или прошивка кошелька, если про кошелёк. Если прошивки по этому адресу нет, бутлоадер остаётся в режиме загрузки.

Кошелёк будет приходить с завода уже прошитым. Но логистика долгая, и пока устройство едет, прошивка может обновиться. Так что, скорее всего, пользователю предложат обновить её до свежей версии. А если он никому не доверяет, сможет прошить всё сам по нашему репозиторию.

Пока кошелёк будет поддерживать Ethereum и похожие блокчейны. В перспективе планируем подключить и другие: комьюнити интересуется не только Ethereum. Хотим поддержать TON, NEAR и другие сети. С Ильёй, фаундером NEAR, уже обсуждали возможность интеграции.

Устройство должно быть универсальным, а мы должны реализовать желания пользователей.

Сроки выпуска

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

Как только всё будет готово, обязательно проведём аудит безопасности, и только после него перейдём к серийному производству. Без аудита выпускать устройство в продажу нецелесообразно: аудит подтверждает, что мы провели тесты и гарантируем безопасность. Это своего рода печать качества.

Сейчас такая тенденция действительно есть. Наверное, скоро все будут ходить с криптотелефонами: Solana вот делает свой телефон. 1inch тоже понимает, что следующий шаг — что-то похожее на телефон. Как скоро это будет, не знаю.

Думаем про интеграцию с Binance. Биржа вообще активно интересуется холодными кошельками, так что, может, что-то и получится, если наш проект её заинтересует.

Команда и защита от взлома

Моя команда независимая, но у нас есть обязательства перед 1inch Network: разработать продукт и реализовать идею, которая была в него изначально заложена. Лично на мне лежит ответственность. Сейчас мы привлекаем инвестиции, финансирование у нас отдельное. Сам 1inch наш проект не финансирует, мы независимые контрибьюторы.

Мы используем маркетинг и имя 1inch. Антон и Сергей сами вовлечены в проект и в доведение работы до конца. Все идеи, которые рождаются в головах, находят воплощение в проекте, и каждый вносит свой вклад. Здорово, когда над проектом работает большое комьюнити: чем больше идей, тем лучше получается проект.

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

Мы хотим защитить кошелёк от удалённого взлома. Почему мы не доверяем горячим кошелькам? Горячий кошелёк — это мобильное приложение, которое хранит приватный ключ где-то в недрах памяти, а мы продолжаем пользоваться телефоном, пока на кошельке лежат деньги. Значит, у хакера есть лазейка, через которую он может достать приватные ключи и получить доступ к активам.

Ещё есть аппаратный взлом, когда злоумышленник получает физический доступ к устройству и достаёт из него приватные данные. Холодный кошелёк призван защищать от удалённых взломов. Если устройство не может само выйти в интернет, это всегда дополнительная гарантия безопасности. У нашего устройства нет проводных и беспроводных интерфейсов для выхода в сеть.

Единственный способ скомпрометировать транзакцию — каким-то образом перехватить QR-код, считать его и подменить транзакцию. Но это очень сложно. Приватный ключ хранится внутри устройства, а мы получаем транзакцию, упакованную в QR-код. Устройство подписывает её внутри себя и выдаёт наружу в виде текстовой строки. Пока транзакция подписывается, залезть в устройство и что-то похитить невозможно.

Сейчас нам не хватает памяти. Думаю, в ближайшее время мы займёмся расширением флеш-памяти на борту кошелька. Закладывать все смарт-контракты, которые существуют в блокчейне, мы пока не планируем, только распространённые. Я много общался с разработчиками, и меня успокоили: чаще всего пользуются всего 20–30 контрактами, так что много памяти под это пока не нужно.

Будущее аппаратных кошельков

Я считаю web3 альтернативным путём развития будущей финансовой системы. Многие говорят, что будущее за web3, и многие события в мире сейчас это подтверждают. Именно web3 и сам блокчейн в большей степени будут гарантировать людям надёжность финансовой системы.

Люди должны сами понимать, чем холодный кошелёк отличается от горячего. В криптоиндустрии есть принцип «не твои ключи — не твои коины». То есть именно приватные ключи определяют, будет ли у тебя доступ к твоим криптоактивам.

Не твои ключи — не твои коины!

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

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

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

Поделиться
Интересно погрузиться в крипту?
Поможем выбрать направление!