Как настроить air-gapped холодный кошелёк Monero
Как настроить air-gapped холодный кошелёк Monero
Когда в феврале 2024 года Binance убрал Monero из стаканов, а Kraken позже в том же году последовал за ним для клиентов из ЕС и Великобритании под давлением MiCA, тысячи держателей XMR усвоили неприятный урок: оставлять монеты на бирже — значит доверять тому, кто способен делистнуть, заморозить или конфисковать их за одну ночь. Естественной реакцией стал массовый переход к самокастодиальному хранению, и самая параноидальная часть этого исхода пришла к одной идее — держать ключи на устройстве, которое никогда не касалось сети. Air-gapped холодный кошелёк именно так и работает: это машина, подписывающая транзакции Monero в полной изоляции, и даже полностью скомпрометированное интернет-соединение никогда не дотянется до вашего spend-ключа.
Это руководство проведёт вас через сборку такого кошелька с нуля, используя разделение на «горячую» и «холодную» части, которое Monero нативно поддерживает с 2017 года. На выходе у вас будет два кошелька — онлайновый «watch-only», отслеживающий баланс, и офлайновое хранилище с приватными ключами. Если вы при этом ещё и пополняете это хранилище приватно, обмен в XMR через бесlog-сервис вроде MoneroSwapper позволяет избежать биржевого следа, который air-gap и призван скрыть. Разберём всё по шагам.
Почему именно для Monero нужен воздушный зазор
Monero и без того прячет ваш транзакционный граф на уровне протокола. RingCT скрывает суммы, технология stealth-адресов прячет получателя, а кольцевые подписи (которые скоро заменит FCMP++) маскируют настоящего отправителя среди миксеров. Но всё это никак не защищает приватные ключи, лежащие на повседневном ноутбуке, где параллельно крутится браузер, торрент-клиент и сомнительный PDF, открытый на прошлой неделе.
Угроза — это эндпоинт, а не цепочка. Клипбордные хайджекеры, infostealer-малварь вроде Lumma и RedLine, фейковые клоны кошельков выгребли сотни миллионов долларов в крипте за 2024–2025 годы. Air-gap убирает всю поверхность удалённой атаки, потому что у подписывающего устройства попросту нет канала, по которому злоумышленник мог бы добраться.
- Изоляция ключей: ваш spend-ключ и 25-словная сид-фраза никогда не оказываются на машине с интернетом, поэтому их физически нельзя выгрести удалённой малварью.
- Подпись с визуальным контролем: вы проверяете адрес получателя и сумму каждой исходящей транзакции на офлайн-устройстве перед подписью, что обнуляет атаки с подменой адреса в буфере обмена.
- Регуляторная устойчивость: на фоне ускоряющихся делистингов под MiCA и давления FATF travel-rule самокастодиальное хранение — единственный долговечный способ держать XMR, а холодное хранение — его сильнейшая форма.
- Сохранение fungibility: монеты, которыми вы управляете напрямую, сохраняют взаимозаменяемость Monero — никаких биржевых меток «грязные», тянущихся за ними.
Что понадобится перед стартом
Для air-gapped сборки нужны два устройства и однонаправленный способ переноса файлов между ними. Онлайновая машина общается с сетью Monero; офлайновая — никогда. Если правильно развести эти роли, всё остальное превратится в механику.
Выбор офлайнового устройства
Самый дешёвый надёжный вариант — старый ноутбук с физически выпаянной или отключённой Wi-Fi-картой и неподключённым Ethernet-портом. Подойдёт и Raspberry Pi без сетевой периферии, и выделенная машина, грузящаяся с USB через Tails. Tails по умолчанию амнезиен — он забывает всё при выключении, — поэтому либо подключаете шифрованное persistent-хранилище специально под файлы кошелька, либо каждый раз восстанавливаетесь из сид-фразы.
Что бы вы ни выбрали, правило абсолютное: это устройство больше никогда в жизни не подключается ни к какой сети. В тот момент, когда это произойдёт, air-gap считается сломанным, а ключи — потенциально скомпрометированными.
Программные варианты
Три клиента Monero нормально умеют в холодную подпись. Официальные Monero GUI и CLI идут с полным cold-wallet workflow «из коробки». Feather Wallet — лёгкий community-клиент — добавляет отполированный офлайн-подписывающий интерфейс и прекрасно подходит тем, кто не хочет крутить собственную полную ноду. Все три — открытый исходный код с воспроизводимыми сборками.
| Подход | Плюсы | Минусы |
|---|---|---|
| Самосборный air-gapped ноутбук (GUI/CLI) | Полный контроль, нулевые расходы на железо, open source, поддержка полной ноды | Ручной перенос файлов, более крутая кривая обучения |
| Feather Wallet в офлайн-режиме | Лёгкий, без полной ноды, дружелюбный UI для холодной подписи | Зависит от удалённых нод для онлайновой части (используйте свою или через Tor) |
| Аппаратный кошелёк (Ledger) | Компактный, secure element, простое восстановление | Закрытая прошивка, зависимость от вендора, ограниченная поддержка фич XMR |
| Горячий кошелёк на основном устройстве | Мгновенно, удобно для мелких трат | Ключи открыты любой малвари на машине — это не холодное хранилище |
В оставшейся части руководства я возьму DIY air-gapped подход с официальным клиентом, потому что он наглядно показывает базовую модель, которую все остальные методы лишь абстрагируют. Когда вы поймёте, как устроено разделение hot/cold, работа с аппаратным кошельком — это та же идея, только секреты запечатаны в чипе.
Как на самом деле работает разделение hot/cold
Архитектура холодной подписи Monero разводит способность видеть средства и способность их тратить. Это напрямую отражает два ключа, которые каждый кошелёк Monero выводит из мнемонической фразы: view-ключ, позволяющий софту обнаруживать входящие выходы, принадлежащие вам, и spend-ключ, без которого нельзя авторизовать их отправку.
Онлайновая машина держит watch-only кошелёк, собранный только из вашего адреса и приватного view-ключа. Он сканирует блокчейн, распознаёт выходы на ваших stealth-адресах, показывает баланс — но физически не способен сдвинуть ни одну монету. Офлайновая машина держит полный кошелёк, включая spend-ключ, и только она может сгенерировать валидную подпись.
Если ваш watch-only кошелёк когда-нибудь будет скомпрометирован, атакующий узнает баланс и историю входящих транзакций — но не сможет потратить ни одного piconero, потому что spend-ключ ни разу не покидал air-gapped устройство.
Поэтому траты превращаются в эстафету между двумя машинами. Онлайновый кошелёк составляет неподписанную транзакцию, офлайновый её проверяет и подписывает, а онлайновый отправляет уже подписанный результат в мемпул. Key images — криптографические маркеры, не дающие потратить выход дважды, — вычисляются офлайн и синхронизируются обратно, чтобы watch-only видел, какие выходы уже потрачены. Через зазор не проходит ни одного секрета, только артефакты транзакций.
Пошагово: собираем air-gapped холодный кошелёк
Заложите на первый запуск час. Работайте не спеша — любая ошибка здесь обратима, кроме слитой сид-фразы и сломанного air-gap. Подготовьте чистую USB-флешку (или вебкамеру, способную сканировать QR, на каждом устройстве).
- Проверьте бинарники. На онлайновой машине скачайте клиент Monero с getmonero.org, затем сверьте SHA-256 хеши и проверьте GPG-подпись против ключа мейнтейнера. Воспроизводимая сборка означает, что бинарь должен совпадать с тем, что независимо собрали участники сообщества. Никогда этот шаг не пропускайте — забэкдоренный кошелёк отменяет смысл всех остальных шагов.
- Создайте кошелёк офлайн. Перенесите проверенный бинарь на air-gapped устройство через USB. Сгенерируйте там новый кошелёк через
monero-wallet-cli. Запишите 25-словную сид-фразу на бумагу — никаких фото, никаких текстовых файлов. Этот офлайновый кошелёк держит и spend-, и view-ключ. - Выгрузите view-only данные. На офлайновом кошельке скопируйте основной адрес и командой выведите приватный view-ключ. Этих двух значений достаточно для всей онлайновой части.
- Соберите watch-only кошелёк онлайн. На машине с интернетом выберите «Create wallet from keys» (view-only) и введите адрес, приватный view-ключ и restore height, соответствующий моменту создания кошелька. Дайте ему синхронизироваться против вашей собственной ноды или доверенной удалённой ноды через Tor.
- Пополните и подтвердите. Отправьте XMR на новый адрес. Watch-only кошелёк увидит входящий выход после подтверждения. Если приобретаете Monero приватно, проводите покупку через no-KYC обмен — тогда транзакция пополнения не несёт идентифицирующей привязки.
- Синхронизируйте выходы и key images. Чтобы потратить, выгрузите outputs из watch-only кошелька, отнесите файл на офлайн-устройство, импортируйте, затем выгрузите key images обратно на онлайн-сторону и импортируйте уже там. После этого watch-only видит реальный баланс и понимает, какие выходы доступны для траты.
- Составить, подписать, отправить. На онлайновом кошельке создайте неподписанную транзакцию на нужный адрес. Перенесите файл
unsigned_monero_txна офлайн-устройство, сверьте получателя и сумму на экране, подпишите. Принесите получившийсяsigned_monero_txобратно и отправьте в сеть.
Для мелких частых трат USB-эстафету можно заменить анимированными QR-кодами — и Feather, и GUI умеют кодировать неподписанные и подписанные транзакции в QR-последовательности, которые сканируются камерой каждого устройства. Так офлайн-машина остаётся вообще без портов наружу.
Практический пример: долгосрочное хранение «как надо»
Возьмём держателя из России, накапливающего XMR как приватный резерв. Он покупает малыми порциями на протяжении нескольких месяцев, каждый раз обменивая BTC или USDT на Monero и отправляя сразу на адрес своего air-gapped холодного кошелька. Онлайновый watch-only кошелёк фиксирует растущий баланс; сид-фраза лежит в огнеупорном сейфе, а стальной бэкап — во второй точке хранения.
Налоговая дисциплина и приватность здесь не противоречат друг другу. ФНС с 2021 года рассматривает криптовалюту как имущество, и самокастодиальное хранение никого не освобождает от декларирования при продаже — однако холодное хранение означает, что у вас нет стороннего кастодиана и биржи, у которой при случае можно запросить полную историю кошелька. Когда держатель в итоге что-то тратит, он подписывает офлайн, отправляет через Tor-роутингованную ноду, а слой распространения Dandelion++ скрывает, какая нода первой ретранслировала транзакцию.
Если бы тот же держатель оставил весь стек на централизованной бирже, один делистинг под давлением MiCA или ограничения по геозоне мог бы вынудить его к fire-sale или вообще заморозить вывод. Air-gap превратил кастодиальное обязательство в приватный суверенный резерв — собственно, в этом весь смысл.
FAQ
Не избыточен ли air-gapped кошелёк для небольших сумм Monero?
Для карманных сумм, которые вы тратите еженедельно, горячий мобильный кошелёк — это нормально и куда удобнее. Air-gapped подход оправдывает свою сложность, когда вы храните такую сумму, потерять которую от малвари будет по-настоящему больно. Многие держат оба варианта параллельно: горячий кошелёк под траты и air-gapped хранилище под сбережения.
Что будет, если офлайн-устройство сломается?
Ничего не потеряете, потому что кошелёк живёт в 25-словной сид-фразе, а не в железе. Восстановите её на любой новой офлайн-машине — и снова получаете полный контроль над spend-ключом. Именно поэтому бэкап сид-фразы важнее самого устройства: берегите слова, железо меняйте свободно.
Можно ли вместо этого использовать аппаратный кошелёк?
Можно. Ledger хранит spend-ключ в secure element и подписывает транзакции так, что ключи не покидают чип, — это похожая цель изоляции с меньшим объёмом ручной работы. Платой за удобство будут закрытая прошивка, зависимость от вендора и исторически более медленная поддержка фич, специфичных для Monero, поэтому продвинутые пользователи часто предпочитают DIY air-gap ради полной прозрачности.
Нужно ли поднимать свою ноду для онлайнового кошелька?
Не строго обязательно, но это самый приватный вариант. Подключение watch-only кошелька к публичной удалённой ноде сливает оператору ноды и активность по view-ключу, и ваш IP, если не пускать трафик через Tor или I2P. Своя нода — или хотя бы доверенная нода за Tor — оставляет эти метаданные у вас.
Изменит ли FCMP++ работу холодных кошельков?
Это обновление заменит кольцевые подписи на Full-Chain Membership Proofs++ с радикально большим anonymity set, а параллельно в roadmap идёт переработка адресов Seraphis и Jamtis. Сама модель hot/cold подписи остаётся прежней — вы будете так же составлять онлайн и подписывать офлайн, — поэтому air-gapped сборка, сделанная сегодня, чисто переедет на новый протокол.
Заключение
Air-gapped холодный кошелёк Monero — это разница между тем, чтобы владеть своей приватностью, и тем, чтобы арендовать её у того, кто держит ваши ключи. Сборка стоит вам одного вечера и старого ноутбука, а взамен вы получаете хранилище, до которого удалённый атакующий просто не дотянется: spend-ключ изолирован, каждая транзакция проверяется перед подписью, ваши XMR защищены от очередной волны делистингов. Добавьте к этому проверенные бинарники, стальной бэкап сид-фразы и ноду через Tor — и у вас будет хранилище, не уступающее ничему, что предлагают кастодианы, без самого кастодиана.
Последний кусок — пополнить кошелёк, не затащив обратно ту слежку, от которой вы только что сбежали. Покупайте Monero через no-log, no-KYC обмен, чтобы монеты приземлились в холодное хранилище с чистой историей — вы можете купить Monero анонимно через MoneroSwapper и отправить прямо на ваш air-gapped адрес. Сначала соберите кошелёк, потом приватно его пополните — и ключи останутся у вас.
🌍 Читать на