149 / 736AIRGAP

Air-gapped Wallet

Кошелёк, подписывающий вне онлайн-компьютера

Компьютер готовит платёж, отдельное устройство его подписывает. Что даёт такое разделение, что переносят QR-коды и почему экран всё равно нужно проверять.

Air-gapped Wallet подписывает платежи на устройстве, отделённом от обычного сетевого обмена с онлайн-компьютером или телефоном. Приватные ключи должны оставаться в этой среде, а проекты платежей и подписи передаются контролируемым способом, например через QR-код или карту памяти.

Кошелёк — приложение или устройство для получения и отправки биткоинов. Анна пользуется ноутбуком для интернета. Она не хочет хранить на нём ещё и приватные ключи: секретные данные, с помощью которых создают подписи, разрешающие тратить bitcoin. Поэтому она разделяет работу. Программа на ноутбуке отслеживает платежи и готовит новые; это координатор. Отдельное устройство проверяет предложение и подписывает после её согласия; это подписывающее устройство, или signer. Так может работать Hardware Wallet, аппаратный кошелёк. Air gap описывает прежде всего разделение и передачу данных, а не автоматическое свойство любого аппаратного кошелька. Временно выключить Wi-Fi на обычном ноутбуке недостаточно: важны другие соединения, программы и последующее подключение с секретами, оставшимися внутри. [3] [5]

Анна вводит получателя и сумму в координаторе. Он создаёт PSBT: пакет с проектом транзакции и сведениями для её подписания. В него входят сведения об UTXO, ещё не потраченных выходах прежних платежей. Это отдельные суммы, на которые ссылаются входы новой транзакции. Анна переносит пакет на подписывающее устройство, например сканированием QR-кода. Оно обрабатывает поддерживаемые данные и после проверки и одобрения добавляет подпись. Результат возвращается на ноутбук. Лишь после выполнения необходимых условий подписания можно собрать готовую транзакцию и отправить её в сеть. Это ещё не подтверждение в блоке. Блок — это группа транзакций, которые вместе записывают в публичную историю транзакций Bitcoin. По этому пути идут проект и подпись, а не секретный ключ или резервная копия кошелька. [1] [6]

Представим вход на 100000 sat. Sat — наименьшая единица bitcoin. Анна хочет отправить 60000 sat, вернуть себе 39000 sat и оставить 1000 sat на комиссию. Возврат получает отдельный выход — Change Output. Устройство должно проверить его по правильным ключам и настройкам кошелька; метки «сдача» от ноутбука недостаточно. Анна также сверяет полный адрес получателя, сумму и комиссию на доверенном экране устройства со своим намерением. Заражённый ноутбук может предложить чужой адрес при совершенно верной арифметике. Если Анна одобрит такой проект, разделение устройств не защитит её средства. [1] [4]

QR-код представляет данные картинкой, но не подтверждает их безопасность. Большой пакет можно передать последовательностью изображений в формате BBQr или UR; оба устройства должны понимать этот формат. Программы чтения изображения и PSBT могут содержать ошибки, как любое другое ПО. Особенно важно отличать QR транзакции от SeedQR. Последний содержит резервную копию секретных данных, а не проект платежа. Его нельзя показывать камере онлайн-ноутбука или телефона. Возможность вынести код из изолированной среды зависит от содержимого и назначения, а не от сходства с другими квадратиками. [2] [4]

Другой способ использует MicroSD: Анна сохраняет PSBT на карте, вставляет её в подписывающее устройство и переносит результат обратно. Сетевой кабель не нужен, но устройство всё равно читает внешний файл. Безопасность зависит от обрабатывающей программы, контроллера и файловой системы — компонентов, которые читают и упорядочивают данные. Отдельная карта помогает поддерживать порядок, но не гарантирует безвредного содержимого. Питание тоже требует внимания. USB может передавать и ток, и данные. Если он предназначен только для питания, активного пути данных действительно не должно быть. Одна надпись «зарядка» этого не доказывает. [2] [3]

COLDCARD относит к своим air-gap методам также NFC. Это радиосвязь малого радиуса действия, тогда как QR передаёт изображение, а MicroSD — файл на физическом носителе. Эти каналы не равнозначны. Если требуется исключить радиосвязь, включённый NFC условие не выполняет. Для конкретного устройства полезнее выяснить, какой канал активен, когда он включается и что может через него пройти, чем довольствоваться словом air-gapped. Постоянное соединение данных через USB имеет ещё одну границу, отличную от ручного переноса файла. [2]

Координатор может работать как watch-only: наблюдать за кошельком, но не подписывать платёж самостоятельно. Для этого он использует xpub, расширенный публичный ключ для получения других публичных ключей, или публичный Descriptor, описание ключей и правил создания адресов. Эти данные сами не разрешают расходовать средства, однако могут связать адреса и платежи с одним кошельком. PSBT тоже может содержать публичные ключи, пути их получения и сведения об UTXO. В Multisig несколько ключей разрешают расходование по заданному правилу; правильная конфигурация всех участников важна для восстановления и проверки сдачи. Поэтому изоляция подписывающего устройства не делает ноутбук анонимным, а его сетевые запросы — приватными. [1] [4]

Анне по-прежнему нужны надёжно сохранённая Seed Phrase, резервная копия в словах, и другие данные, которых требует кошелёк. SeedSigner загружает секреты временно: после выключения нельзя полагаться на его память как на резервную копию. Air gap не заменяет и надёжную прошивку, то есть программу внутри устройства, или проверку платежа. Secure Element защищает другую часть, затрудняя некоторые атаки на сам чип. Cold Storage означает хранение ключей вне онлайн-среды, а air gap описывает работу с отдельным подписанием. Прежде чем доверить этому порядку значительные сбережения, полезно отрепетировать перенос, проверку и восстановление с отдельными тестовыми ключами. Цель — понять каждый шаг, а не просто поставить больше устройств на стол. [3] [4]

Для полной картины прочитайте эту статью вместе с Hardware Wallet, PSBT, Cold Storage, Seed Phrase, Output Descriptor, Multisig. На эту статью также ссылаются Cold Storage, Secure Element, SeedQR, BBQr.

DOC · 001BIP 174 — Partially Signed Bitcoin Transaction FormatСпецификация DOC · 002COLDCARD — Bitcoin Air-Gap Signing MethodsДокументация DOC · 003SeedSigner — Frequently Asked QuestionsПервичный источник DOC · 004SeedSigner — Independent Custody GuideДокументация DOC · 005Bitcoin Developer Guide — WalletsДокументация DOC · 006Bitcoin Developer Guide — Block ChainДокументация
Обновлено: Сначала источники · Не является инвестиционной рекомендацией