Задача: создать самый безопасный (ну, почти) холодный кошелёк для того, чтобы хранить существенные балансы крипты (да, если вы не хотите чтобы у вас её увёл непонятно кто, или если вы просто "здоровый" параноик).
Сегодня будем создавать холодный кошелёк при помощи дистрибутива BitKey.
Терминология
- "Холодный кошелёк" (cold storage / cold wallet) - криптокошелёк, который никогда не был на компьютере, подключённом к интернету (т.е. у него нет шансов "утечь" через сеть и взломанную машину, потому что его никогда не было в сети).
- "Горячий кошелёк" (hot wallet) - криптокошелёк, который подключён или когда-либо подключался к сети. Да, если вы хотя бы 1 раз подключили компьютер или телефон с холодным кошельком напрямую к интернету, то ваш холодный кошелёк перестаёт быть холодным и навсегда становится "горячим". Некоторые так же используют для таких кошельков термин "тёплый", однако, это создаёт лишнюю путаницу и не добавляет ничего хорошего в смысле безопасности, так что, в этой статье я буду пользоваться только двумя крайними состояниями.
- Дистрибутив - упакованный "комплект" операционной системы (в данной статье мы будем использовать BitKey) в виде ISO-файла (образ диска для установки)
- Одноплатник - SoC (System-on-a-Chip) например Raspberry Pi, Orange Pi, Banana Pi и проч.
- Настольник - настольный персональный компьютер
Внимание! Перед тем, как выполнять шаги ниже, дочитывайте каждый до конца. Не приступайте к нему, пока не прочитали шаг до конца! Там могут быть важные нюансы.
Приготовление
В вашем распоряжении должно быть:
- ПК (Ноутбук, настольник или одноплатник) с любой ОС, для которой есть криптокошельки
- Минимум 2, лучше 3 флешки, одна большая (4-8 гб и более), другие любых размеров (реально, любых, даже 1 кб хватит). Вместо флешек можно использовать и другие хранилища, если вы конечно умеете с ними работать, например NFC-карты, и т. д.
Начнём, пожалуй
- Скачайте дистрибутив BitKey на ваш ПК с официального сайта. Нюанс: если ваш ПК окажется заражён вирусом, который "в курсе" о том, что такое BitKey, то вирус сможет модифицировать дистрибутив BitKey (ISO-файл) так, что вы потеряете свою крипту в итоге. Для того чтобы максимально избежать возможности возникновения такой ситуации, скачивайте BitKey посредством девственного ноутбука (нетбука, одноплатника, ПК), который купили только для этой задачи, и перед скачиванием установите на этот ПК любой дистрибутив Linux (теоритически, хорошей идеей может быть непопулярный дистрибутив Linux, т.к. это снижает шансы для успешной атаки на вас). Например, можете купить для криптокошелька себе плату OrangePi за ~1000 рублей c Aliexpress и загрузить на неё Gentoo, Kali, Slackware, FreeBSD, Arch, Plop или что-то аналогичное).
Проверьте контрольную сумму скачанного образа. Это необходимо для того, чтобы убедиться, что во время загрузки никто не вмешивался в передаваемый файл (это может происходить как умышленно, так и просто, из-за ошибки оборудования). Для этого на сайте BitKey ещё раз нажмите кнопку "Download", кликните на ссылку "Cryptographic signatures and package manifest" чуть ниже кнопки загрузки, найдите в списке файл ".hash", кликните на него. Там будет текстовая инструкция о том, как добавить себе ключ BitKey (TurnKey Linux) в систему, создать sha256 контрольную сумму скачанного вами файла и проверить её (на английском). Если вам непонятна данная инструкция, напишите комментарий к данной статье об этом - я запилю отдельную статью.
Вставьте флешку в ваш ПК, и запишите образ BitKey (ISO-файл), который скачали в первом шаге, на неё. Я рекомендую для записи использовать софт Balena Etcher (opensource), однако можно использовать и другие, напр. Unetbootin, dd, или Rufus на Windows, или другие "записывалки". Однако имейте так же ввиду, что "записывалка" флешек будет так же иметь доступ к ISO-файлу и может в теории модифицировать дистрибутив BitKey. Так что, если вы параноик, то используйте только opensource-писалки, "проверенные временем и людьми". Можете так же сами их проверить. Какую-то единую инструкцию я тут не могу написать, т.к. каждое приложение для записи флешек уникально. Однако, общая концепция в том, что вам нужно выбрать ваш ISO-файл а так же устройство, куда его записывать, и дать приложению права на запись. Флешка будет полностью затёрта (хотя, это делают не все программы, но лучше именно затереть флешку), так что будьте готовы к потере всех данных на ней.
Нюанс: BitKey это x86_64 дистрибутив, т.е. вы можете его загрузить на процессорах Intel/AMD, соответственно, на ноутбуках, настольниках. Но не на всех одноплатниках. Если вы пошли путём одноплатника OrangePi за 1000 рублей - то у вас есть два основных варианта. Первый - создать собственную сборку дистрибутива (BitKey, или любого другого) с нужным вам софтом под ваш процессор на основе уже существующих дистрибутивов (или полностью собственый дистрибутив). Второй - найти альтернативу BitKey под ARM (или ваш другой CPU) или уговорить разработчиков создать сборку под вашу архитектуру. Отмечу, что BitKey - это дистрибутив на основе TurnKey Linux, а последний имеет хорошее и мощное сообщество разработчиков, так что оба варианта вполне реальны. Ещё есть и третий вариант - установить на плату один из андроидов, и использовать андроид-приложение AirGap.it, но это тема отдельной статьи. Так же отмечу, что в данной статье речь будет дальше идти про BitKey и Electrum на x86_64 железе, однако, процедура будет примерно похожей и для других кошельков, ОС и архитектур. Так же я рекомендую вам пометить вашу флешку надписью bitkey или каким-то символом, чтобы вы знали, что на ней дистрибутив BitKey.Мы готовы к запуску системы с холодным кошельком. На этом этапе важно понимать, что система с холодным кошельком НИКОГДА, НИКОГДА не должна выходить в интернет. То есть, конечно, формально вы можете это сделать, однако тогда кошелёк перестанет быть "холодным". В общем, если вы хотите соблюдать правильную процедуру, то отключите wi-fi модуль физически из ПК и достаньте из него Ethernet-кабель, если таковой включён в него. Если всё готово, то перезагрузите ПК, зайдите в BIOS/UEFI boot sequence selection, выберите загрузку с флешки, и загрузитесь с неё.
Перед загрузкой дистрибутива вас поприветствует boot-меню BitKey.
Внимание
Есть три базовых действия, которые вы можете захотеть делать с вашим криптокошельком. Первое - пополнение его вашими приобритёнными или полученными средствами. Второе - просмотр баланса вашего кошелька и получение прочей информации. Третье - "вывод" с криптокошелька ваших средств. В общем и целом, все остальные действия так или иначе можно обобщить как одно из этого списка.
При загрузке дистрибутива bitkey он позволяет вам выбрать среди этих трёх действий. Вот таблица режимов загрузки, и что позволяет делать каждый:
Режим | Кошелёк | Транзакции | Безопасность | Фон | Удобство |
---|---|---|---|---|---|
cold-offline | создание | подписание | высокая | зелёный (безопасность) | низкое |
cold-online | просмотр | подготовка | высокая | синий (информация) | низкое |
hot-online | создание и просмотр | подготовка и подписание | средняя | красный (опасность) | высокое |
Из этой таблицы ясно, что "удобство и безопасность" это трейдофф - вы выбираете либо одно, либо другое. Но эта статья про безопасность, и нам надо сейчас создать кошелёк, так что выбираем тут "cold-offline". Фон рабочего стола будет зелёным, что мнемонически подсказывает, - мы в безопасности.
Если всё прошло хорошо - вас должен приветствовать дистрибутив BitKey и зелёный фон на заставке. Внизу будет системное меню с некоторыми приложениями (Electrum), в том числе для создания кошельков BTC.
- Запустим Electrum (not-online). Придумайте себе pass-фразу для защиты кошелька (мне не нужно говорить, насколько сложной она должна быть, правда?). Введите её дважды, убедитесь, что вас устраивает "количество лет для взлома вашего кошелька" (crack time) и нажмите ОК.
Создайте новый кошелёк выбрав Create New Wallet. Вам будет отображена seed-фраза для кошелька а так же QR-код. На этом этапе с одной стороны важно сделать бэкап вашего кошелька, но, с другой стороны, нельзя "засветить" вашу сид-фразу нигде. Безопасные варианты бэкапа сид фразы это переписать её на листик вручную (для дальнейшей обработки) или сфотографировать на зеркальную фотокамеру без доступа в интернет для дальнейшей обработки. Или - взять вторую (можно маленькую, даже на несколько килобайт) флешку, вставить её. Сохранить seed-фразу в текстовый файл, который положить в архив с паролем, а архив с паролем скопировать на эту, вторую, флешку. Желательно пометить флешку символом, чтобы вы знали, что там бэкап криптокошелька (но не так, чтобы другие это знали). См. так же главу "работа с бэкапами". Самое главное, не вводите сид-фразу на клавиатуре заведомо возможно-заражённого ПК (windows, mac), а так же не фотографируйте её или qr-код телефонами (iphone, android). После сохранения бэкапа seed-фразы, не убирайте его далеко, нажмите Next.
Введите снова вашу seed-фразу, для подтверждения, что вы её сохранили.
На этом шаге нужно ввести пароль для шифровки вашего wallet-файла. Шифровать его паролем или нет - выбор за вами, конечно, лучше зашифровать, но тогда так же убедитесь, что вы помните этот пароль и/или у вас есть его бэкап.
На шаге выбора сервера для подключения жмите Auto Connect, ибо у нас всё равно нет интернета, и подключение не будет осуществлено, поэтому эта настройка ни на что не влияет.
- У вас должен открыться Electrum. Если это так, откройте вкладку Receive и разверните список "Receiving". Ура, это наши кошельки для пополнения. Они уже не секретны, т.к. это наши публичные адреса. Поэтому, сфотографируйте их на телефон, или перепишите внимательно. В качестве альтернативы, вы можете взять вторую флешку (отмечайте её каким-нибудь символом), вставить её и сохранить на неё публичный ключ (именно публичный, из пункта Receiving). Эту флешку можно втыкать куда угодно - ваш публичный ключ нет особенной необходимости хранить в строжайшем секрете, хотя, если вы хотите максимальную безопасность, то можете в принципе и его никому не сообщать (однако, это не получится, если вы хотите получать на него донаты или проверять свой баланс).
Результат
Итак, у вас должно после этих процедур остаться:
- Флешка с дистрибутивом BitKey
- Бэкап вашей сид фразы (СЕКРЕТНО!) на листке бумаги, либо на зеркальной камере, либо на второй флешке в запароленном архиве
- Ваш публичный адрес (не секретно) на листке бумаги, в телефоне, на отдельной флешке, или где угодно
Если вы ещё не зашифровали вашу сид-фразу, сделаем это сейчас:
Работа с бэкапами
А что, если ваша флешка с ключом будет потеряна? Да, нужно делать бэкапы. Electrum должен был вам это предложить. Если вы записали бэкап в виде текста seed-фразы, хорошим вариантом будет загрузить любой linux без интернета, установить в него ПО для стеганографии, и спрятать вашу сид-фразу внутри фотографии или музыкального файла (см. софт для стеганографии). Если вы сделали фото на зеркальную камеру, точно так же, загрузите Linux, и запакуйте ваше фото в запароленный 7z или zip архив с хорошим паролем, а затем так же можете последовать предыдущему совету и спрятать этот архив внутри фотографии или музыкального файла. Конечно, вы можете так же просто положить текстовый файл с сид-фразой на какую-то секретную флешку, и спрятать её, но это менее безопасно.
Что вы теперь можете?
Конечно, получать крипто-переводы сразу на ваш холодный кошелёк! Для этого сообщите ваш публичный адрес тому, кто планирует вам отправить крипту, или переведите её себе сами с других кошельков.
Как проверить баланс холодного кошелька?
У вас же есть для этого публичный адрес, на который вы получаете переводы. Введите его на сайте bitcoin blockchain explorer и увидите баланс вашего кошелька.
А как совершать транзакции с холодного кошелька?
Это тема отдельной статьи. Напишите комментарий ниже, если вам интересно будет её прочитать. Если коротко, механизм транзакции с холодного кошелька примерно такой:
- Подготовка транзакции на компе с интернетом (можно использовать тот же Electrum)
- Загрузка BitKey и открытие вашего холодного кошелька (из одного из бэкапов) на безопасном ПК, примерно как в этой статье
- Подписание при помощи BitKey и Electrum транзакции и сохранение этой подписанной транзакции на отдельную флешку
- Выключение BitKey, бэкапов и т. д.
- Отправка транзакции в сеть с отдельной флешки с компа с инетом
Дополнительная информация
Много полезной информации (на английском) о безопасности крипокошельков есть на самом сайте bitkey.io.
Так же, я запустил обсуждение софта для холодных кошельков на форуме Голоса - https://golostalk.com/applications/@sxiii/soft-dlya-holodnyh-koshelkov - добро пожаловать :)
Disclaimer
Эта статья не претендует на то, чтобы иметь 100% coverage всех кейсов. Так же, достичь безопасности в 100%, к сожалению, невозможно, ведь встречается огромное количество штук, позволяющих эту безопасность пошатнуть, от невыключенной вебки на другом ПК, до кейлоггера, встроенного в вашу клавиатуру, материнскую плату или просто любовно вставленного кем-то. Все случаи предусмотреть невозможно, однако, вы можете постараться максимально себя предостеречь. Читайте статьи по компьютерной безопасности и пользуйтесь безопасными операционными системами. Хоть следование шагам в этой статье не даст вам 100% безопасности, вы хотя бы драматически сильно уменьшите шанс хакеров или злоумышленников угнать вашу крипту. Не позволяйте вашей сид-фразе быть в сети, друзья!
Всем спасибо, кто дочитал до конца :) Надеюсь вам было полезно и интересно, а я за сим откланяюсь.
Ваш @sxiii aka Den from Oslo