Базы данных, шифры и секреты: гайд по безопасному хранению приватных ключей от Cake Wallet
Почти любой криптовалютный кошелек позволяет сделать бэкап — сохранить приватный ключ в специальном файле, чтобы восстановить доступ в случае потери или поломки устройства. Но это создает новые проблемы: файл могут украсть злоумышленники.
Разработчики криптокошелька Cake Wallet рассказывают об открытом программном обеспечении для безопасного хранения и шифрования приватных ключей.
Ломаем кошелек за три минуты
Десктопные, мобильные и браузерные кошельки хранят приватные ключи на устройстве пользователя. Например, криптокошелек Exodus помещает их в папку AppRoaming на Windows и в Application Support — на macOS.
Самое важное в них — файлы seed.seco и passphrase.json. В первом находится приватный ключ, а во втором — фраза для его дешифровки.
Если хакер скопирует файлы на свой компьютер, то получит доступ к кошельку. Мы проделали такие действия в примере ниже.
Это не значит, что Exodus и другие десктопные кошельки ненадежные. Мы специально не использовали пароли, шифрование и 2FA, чтобы показать механизм кражи.
Большинство кошельков предлагает шифровать файлы с ключами паролем. Но даже в этом случае они останутся в очевидном месте и будут уязвимы к атаке полного перебора.
Украсть файлы из смартфона сложнее: iOS и Android не предоставляют полный доступ к файловой системе. Мы установили на смартфон кошельки Cake Wallet, MyEtherWallet и TON Surf, но не смогли найти папки с ключами без root-доступа.
Однако телефон можно потерять или разбить, и таким образом лишиться криптовалюты. На этот случай стоит сделать бэкап кошелька: сохранить приватный ключ или мнемоническую фразу на отдельном устройстве, а затем зашифровать их.
Кроме того, резервные копии позволяют безопасно использовать десктопные кошельки. Для этого нужно превратить их в некастодиальные: каждый раз вручную импортировать приватный ключ, а по завершении работы чистить папки.
Как правильно сделать бэкап
Для доступа к кошельку нужны приватный ключ или сид-фраза — можно сохранить что-то одно.
Лучше выбрать сид-фразу. Она состоит из английских слов, а значит меньше вероятность сделать ошибку при создании бэкапа.
Сид-фразы и приватные ключи примерно одинаково устойчивы к брутфорсу — методу взлома путем перебора возможных комбинаций.
Данные можно обезопасить четырьмя способами:
- записать в менеджер паролей;
- сохранить в файл и зашифровать его;
- загрузить в зашифрованное облачное хранилище;
- разбить на части с помощью секрета Шамира.
Мы покажем их на примере инструментов с открытым исходным кодом: KeePassXC, PGPTool, Cryptomator и ASecuritysite.
Помните, что абсолютно безопасного способа хранения ключей не существует. Но на взлом защищенного кошелька понадобятся месяцы, а на взлом незащищенного — несколько минут.
Менеджер паролей KeePassXC
Менеджер паролей — приложение для хранения большого количества пар «ключ-значение». По сути, это зашифрованная база данных, которую можно открыть только с помощью мастер-ключа.
Мы покажем работу менеджера паролей на примере KeePassXC — бесплатного приложения с открытым исходным кодом для Windows, Linux и macOS.
При первом запуске KeePassXC предложит создать базу данных. Введите ее название в поле Database Name.
На втором шаге настройте время, которое понадобится на каждую попытку подбора мастер-ключа (Decryption Time). Значение по умолчанию — 1 секунда, рекомендуемое значение — 5 секунд.
Затем введите и подтвердите мастер-ключ. Он должен быть уникальным — не используйте существующие или похожие пароли. Учтите, что KeePassXC поддерживает символы вроде ©, ✓ или ⌀, которые не встречаются в стандартных раскладках клавиатуры и словарях для брутфорса.
После этого присвойте имя файлу с базой данных и выберите место, где его сохранить.
Для создания бэкапа нажмите плюсик на верхней панели инструментов. Задайте название записи, например seed phrase. Если не хотите оставлять подсказку для хакеров, оставьте поле пустым.
Введите сид-фразу или приватный ключ в любое поле и нажмите кнопку ОК. Рекомендуем использовать поле Password: KeePassXC скрывает его содержимое при просмотре базы данных.
Чтобы скопировать ключ или сид-фразу, кликните правой кнопкой мыши на записи и выберите пункт Copy Password в раскрывающемся списке.
Базу данных стоит скопировать на флешку или загрузить в облако на случай, если жесткий диск выйдет из строя.
Шифровальщик PGPTool
PGP (Pretty Good Privacy) — название библиотеки функций для шифрования данных и приложений на ее основе.
PGP-шифрование позволяет защитить содержимое электронных писем, жестких дисков и отдельных файлов. PGP-приложения работают, как криптокошельки: шифруют информацию публичными ключами и расшифровывают приватными.
Мы сделаем бэкап текстового файла с сид-фразой с помощью PGPTool — десктопного PGP-клиента с открытым исходным кодом. Для запуска понадобится любая операционная система с поддержкой Java Runtime Environment.
Запишите приватный ключ или сид-фразу в текстовый файл и сохраните его на компьютере. Установите и запустите PGPTool.
Нажмите кнопку Key ring, чтобы создать новую пару из открытого и приватного ключей.
PGP используют для шифрования электронных писем, поэтому многие приложения просят ввести имя, пароль и email. Необязательно указывать настоящие данные: в нашем случае это название пары ключей.
После заполнения основной информации задайте пароль и нажмите кнопку Create.
Создайте бэкап: нажмите на кнопку Encrypt File и выберите файл с сид-фразой.
Выключите флажок Use same folder и укажите место для сохранения. В противном случае PGPTool поместит бэкап в папку с исходным файлом.
Нажмите кнопку Encrypt.
По завершении шифрования PGPTool покажет сообщение «File was encrypted successfully». Бэкап готов. Сделайте копию этого файла на случай потери или повреждения основного устройства.
Чтобы расшифровать бэкап и прочитать сид-фразу, нажмите кнопку Decrypt file и выберите зашифрованный файл. Введите пароль, который задали при создании пары ключей.
Выберите папку для сохранения дешифрованного файла и нажмите кнопку Decrypt.
Нажмите кнопку Key ring, щелкните правой кнопкой мыши на ключе и выберите пункт Export private key в раскрывающемся списке. Укажите папку для хранения файла с ключом и нажмите кнопку Save.
После этого удалите приватный ключ из клиента, выбрав в списке пункт Remove key. Если хакер все же получит доступ к компьютеру, он не сможет расшифровать файл.
Облачное хранилище Cryptomator
Cryptomator — бесплатный инструмент для создания зашифрованных облачных хранилищ в OneDrive, Google Drive, iCloud и на жестком диске устройства.
Чтобы сделать бэкап, установите версию Cryptomator для вашей операционной системы. Приложение работает на Windows, macOS, Linux, Android и iOS.
Запустите Cryptomator, нажмите кнопку Add Vault и введите имя хранилища.
Выберите место для хранения файлов — облако или папку. Cryptomator предложит облачные сервисы, приложения которых установлены на устройстве. Мы создали хранилище в iCloud.
Задайте пароль и включите флажок Yes, чтобы получить секретную фразу для его восстановления.
Перед тем, как перенести файл в хранилище, получите к нему доступ: нажмите кнопку Unlock Now и введите пароль.
Cryptomator откроет в проводнике виртуальный накопитель. Поместите в него файл с сид-фразой. Приложение сразу отправит его в облако.
После этого закройте хранилище: выберите его в Cryptomator и нажмите кнопку Lock.
Если закрыть приложение или выключить компьютер, Cryptomator автоматически зашифрует открытые хранилища: скопирует содержимое накопителя в облако и удалит виртуальное устройство из системы.
Сделайте бэкап хранилища, чтобы не потерять доступ при поломке устройства. Перейдите в папку Cryptomator, и найдите папку с названием хранилища.
Скопируйте все файлы на внешний накопитель. В случае поломки компьютера установите Cryptomator на новое устройство и импортируйте хранилище. Для этого нажмите кнопку Add Vault, а затем — Existing Vault. В открывшемся окне укажите путь к файлам masterkey и vault.
При импорте хранилища Cryptomator потребует ввести пароль. Если хакер украдет бэкап, то получит доступ к вашим бэкапам только после брутфорс-атаки.
Схема Шамира в ASecuritysite
Схема Шамира (секрет Шамира) — алгоритм, который разбивает информацию на зашифрованные фрагменты. Для восстановления исходных данных понадобится несколько таких фрагментов. Их количество называется пороговым значением.
Работу алгоритма можно объяснить на примере задачи на построение кривой. Допустим, Алиса задала пять точек, через которые проходит только одна кривая. Боб может взять координаты любых трех точек Алисы (пороговое значение) и построить такую же кривую.
Бэкап по схеме Шамира можно сделать в онлайн-конвертерах с открытым исходным кодом. Мы использовали первый сайт в поисковой выдаче — ASecuritysite.
Перейдите на страницу с шифрованием по схеме Шамира. Вставьте приватный ключ или сид-фразу в поле Secret Message.
Введите количество фрагментов в поле No of shares и пороговое значение в поле Threshold. Нажмите кнопку Determine.
Конвертер запишет зашифрованные фрагменты в поле Shares и разделит их знаком «=».
Сохраните фрагменты на разных носителях: один запишите в блокнот, второй — в облако, третий — в менеджер паролей и т.д.
Хакер не сможет восстановить данные, если получит один фрагмент. Но если вы потеряете один фрагмент, то сможете расшифровать данные для доступа к кошельку.
Чтобы прочитать информацию в бэкапе, перейдите на страницу с декодером. Вставьте несколько фрагментов в поле Secret shares и нажмите кнопку Determine.
Первые попытки дешифровки будут выглядеть как наборы случайных битов. Это нормально: декодер пробует восстановить оригинал по первому фрагменту, а затем добавляет новые и повторяет попытки. Он выдаст исходное сообщение при достижении порогового значения.
Выводы
Идеального способа хранения информации не существует, но шифрование может усложнить работу хакерам и застраховать от поломки устройства.
Приватный ключ и сид-фразу можно сохранить в менеджере паролей, закодировать PGP-шифрованием, поместить в защищенное хранилище или разбить на части по схеме Шамира. Эти способы можно комбинировать, например записать базу данных менеджера паролей в облако или использовать схему Шамира на ключе к PGP-шифру.
Для хранения криптовалюты лучше использовать мобильные кошельки вроде Cake Wallet: они не сохраняют файлы с ключами в очевидных местах.
Если вы предпочитаете десктопные приложения, создайте зашифрованный бэкап и импортируйте приватный ключ при каждом запуске кошелька, а по окончании работы удаляйте содержимое папок AppRoaming (Windows) и Application Support (macOS).
Подписывайтесь на канал ForkLog в YouTube!
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!