Восстановление кошелька Electrum

Полное руководство по восстановлению кошелька Electrum

Кошелек Electrum для биткойнов на ноутбуке во время процесса восстановления

Electrum существует с ноября 2011 года — по криптовалютным меркам это целая вечность. Такая долговечность является одновременно и благом, и проклятием для восстановления. Благословение — потому что формат кошелька хорошо документирован, а кодовая база написана на Python с открытым исходным кодом, который можно реально прочитать. Проклятие — потому что пятнадцать лет изменений версий означают, что файл кошелька, лежащий на чьем-то жестком диске, может быть в любом из полудюжины форматов, каждый из которых имеет разные схемы шифрования, пути вывода и типы семян. Я восстанавливал кошельки Electrum, начиная с 2012 года, и у каждого периода есть свои особенные сложности.

В этом руководстве подробно рассмотрены все технические аспекты восстановления кошелька Electrum — от внутренней структуры файлов кошелька и механизмов шифрования в разных версиях до сложной схемы вычисления адресов, из-за которой запрос «мой баланс показывает ноль» является самым распространённым запросом в службу поддержки Bitcoin.

Как Electrum хранит ваши ключи

Electrum сохраняет ваш кошелек в виде одного отдельного файла. По умолчанию он называется default_wallet (без расширения), и он находится в месте, которое можно легко определить в зависимости от вашей ОС:

Окна: C:\Users\<USER>\AppData\Roaming\Electrum\wallets\

macOS: ~/Library/Application Support/Electrum/wallets/

Linux: ~/.electrum/wallets/

Файл кошелька имеет формат JSON — он удобен для чтения, структурирован и удивительно лаконичен. Откройте незашифрованный файл кошелька в текстовом редакторе, и вы увидите всю модель данных: хранилища ключей, адреса, историю транзакций, метки, контакты — всё. keystore Объект — это основа восстановления.

Этот seed поле там — если кошелек не зашифрован или вы можете его расшифровать, у вас есть всё необходимое. xprv (расширенный закрытый ключ) позволяет восстановить все дочерние ключи, которые когда-либо использовались в кошельке. seed_type указывает, какая схема деривации была использована, и derivation показывает корневой путь.

В более старых версиях кошельков (до версии 2.0) структура отличается. Вместо bip32, вы увидите type: "old" с mpk (поля «главного открытого ключа»). В них используется собственная алгоритмическая схема вывода ключей, разработанная Electrum, которая появилась ещё до BIP32 и BIP39. Подробнее об этом — ниже.

Файлы кошельков, содержащие импортированные закрытые ключи (не полученные из седа), используют type: "imported" в хранилище ключей, и эти ключи хранятся напрямую. Эти кошельки невозможно восстановить с помощью семенной фразы – Сам файл кошелька — это ваша единственная резервная копия. Потеряйте его — и ключи будут безвозвратно утрачены.

Два уровня шифрования Electrum

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

Уровень 1: Шифрование хранилища ключей (закрытые ключи и начальный вектор)

Ваши закрытые ключи и фраза-семена шифруются с помощью AES-256-CBC. Ключ шифрования получается путем обработки вашего пароля с помощью два раунда алгоритма SHA-256 – вот и всё. Не PBKDF2 с сотнями тысяч итераций, как в MetaMask или других кошельках. Не scrypt. Просто SHA256(SHA256(password)). Именно поэтому кошельки Electrum поддаются взлому методом перебора гораздо быстрее, чем практически любой другой современный кошелек. В тесте Hashcat даже на не самом мощном графическом процессоре можно проверить сотни тысяч вариантов паролей в секунду для кошелька Electrum.

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

Уровень 2: Шифрование всего файла (ECIES)

Начиная с версии 2.8 (выпущенной примерно в 2016 году), Electrum по умолчанию поддерживает шифрование всего файла. При этом используется схема интегрированного шифрования на основе эллиптической кривой (ECIES) — асимметричное шифрование, при котором сам файл кошелька шифруется с помощью открытого ключа, полученного на основе вашего пароля. Зашифрованный файл выглядит как бессмысленный набор двоичных символов, а не как JSON, и для его открытия требуется пароль.

Ключевое отличие: при включенном шифровании всего файла кошелек не раскрывает никакой структуры без правильного пароля. Вы не сможете заглянуть внутрь, чтобы увидеть адреса, транзакции или даже тип кошелька. Весь JSON-контент зашифрован с помощью ECIES. Когда шифрование всего файла отключено (или было недоступно в старых версиях), JSON-файл доступен для чтения, но xprv и seed поля содержат зашифрованный с помощью AES шифротекст.

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

Система генерации семян Electrum — это не BIP39, и это имеет огромное значение

Именно здесь возникают основные проблемы с восстановлением. Electrum использует собственный формат семенного ключа, который явно не совместим с BIP39. Если кто-то попытается импортировать семенный ключ Electrum в кошелек, поддерживающий только BIP39 (например, Exodus, Trust Wallet или большинство аппаратных кошельков), то либо он будет сразу отклонен, либо приведет к генерации совершенно неверных адресов.

Разница носит технический характер, но она важна. BIP39 принимает ваши мнемонические слова, сопоставляет их с энтропией с помощью фиксированного словаря, добавляет контрольную сумму, а затем запускает алгоритм PBKDF2 с парольной фразой «mnemonic» + опциональным дополнительным словом на 2048 итераций с использованием HMAC-SHA512. Electrum 2.0+ делает что-то внешне похожее, но существенно отличное: он запускает PBKDF2 на 2048 итераций, используя парольную фразу «electrum» + опциональное слово-расширение. То же количество итераций, тот же HMAC-SHA512, совершенно другая строка соли. Получаемый в результате мастер-ключ полностью отличается даже при использовании тех же 12 слов.

В старых версиях Electrum (примерно в районе проблемы № 4566) также присутствовала ошибка, связанная с нормализацией парольной фразы в формате Unicode — в частности, Electrum активно удалял пробелы из парольных фраз BIP39, в том числе заменяя два последовательных пробела одним. Если пользователь устанавливал парольную фразу с необычным расположением пробелов, эта ошибка могла привести к невозможности восстановления кошелька в более новых версиях, в которых была исправлена нормализация.

В семенах Electrum номер версии также встраивается непосредственно в само семя. Версия определяется путем хеширования фразы-семени и проверки, совпадают ли первые биты с известным префиксом. Эта версия указывает, какую схему вывода следует использовать:

  • Исходная версия 01 — Стандартный кошелек (старого поколения, до SegWit)
  • Исходная версия 100 — Кошелек с поддержкой SegWit (встроенная поддержка SegWit, формат Bech32)
  • Исходная версия 101 — Кошелек с двухфакторной аутентификацией (с соавтором TrustedCoin)
  • Исходная версия 102 — SegWit с мультиподписью

На самом деле это умная конструкция — она избавляет от необходимости гадать, «какой путь вывода использовать?», что является серьезной проблемой BIP39. Однако это означает, что семена Electrum представляют собой «закрытую систему». Они работают только в Electrum (или в программах, явно поддерживающих формат семян Electrum, таких как инструмент BIP39 от Иэна Коулмана, в котором есть режим Electrum).

Три эпохи семян

Семена версий до 2.0 (Electrum 1.x, «старый» формат): В них использовалось двунаправленное кодирование — стартовую фразу можно было преобразовать обратно в конкретное значение энтропии и наоборот. Для этого требовался точный, фиксированный список слов. Алгоритм вывода был собственной схемой Electrum (а не BIP32) и использовал такие пути, как m/0/k для получения адресов и m/1/k для адресов с изменением. Эти кошельки можно распознать по "seed_type": "old" в файле кошелька. Сейчас они встречаются редко, но я всё ещё вижу их у людей, которые создавали биткойн-кошельки в 2012–2013 годах и забыли о них.

Семена Electrum 2.x (2014 г. и позже): В системе Electrum с поддержкой семян была внедрена структура HD-кошельков BIP32. Стандартные кошельки используют путь деривации m/0h с адресами получения по адресу m/0h/0/k и пересадка на m/0h/1/k. Обратите внимание, что это НЕ путь BIP44 (m/44'/0'/0'). Это нестандартное выведение постоянно вызывает путаницу.

Семена SegWit для Electrum 3.x+: С появлением поддержки SegWit в Electrum были добавлены новые версии семенных фраз для кошельков с встроенной поддержкой SegWit. В них используется путь деривации m/0h также — тот же корневой путь, но префикс версии седа гарантирует, что кошелек будет генерировать адреса в формате bech32 (bc1…) вместо адресов старого формата (1…).

Пути вывода и проблема «пустого кошелька»

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

Вот схема путей вывода для Electrum:

Нативные семена Electrum (не BIP39):

  • Стандартный кошелек старого образца: m/0h → прием в m/0h/0/k, пересадка на m/0h/1/k
  • Кошелек, поддерживающий стандарт SegWit: m/0h → прием в m/0h/0/k, пересадка на m/0h/1/k (один и тот же путь, разная кодировка адреса)
  • Старая версия Electrum (до 2.0): m/k для приема, m/k с отдельной комбинацией клавиш для изменения

Семена BIP39, импортированные в Electrum:

  • Устаревшая версия (P2PKH, адреса, начинающиеся с цифры 1): m/44'/0'/0'
  • Оболоченный SegWit (P2SH-P2WPKH, адреса, начинающиеся с цифры 3): m/49'/0'/0'
  • Нативный SegWit (P2WPKH, адреса, начинающиеся с bc1): m/84'/0'/0'
  • Taproot (P2TR, адреса, начинающиеся с bc1p): m/86'/0'/0'

Ловушка: если кто-то создал кошелек в Trezor Suite (где используется BIP39 и m/84'/0'/0' (для native segwit), а затем попытается восстановить кошелек в Electrum с использованием седа типа Electrum, пути не совпадут. Даже если в настройках Electrum будет правильно выбран пункт «BIP39 seed», необходимо будет выбрать правильный тип скрипта (legacy, segwit или native segwit) и убедиться, что путь вывода совпадает с исходным кошельком.

И вот здесь дело принимает действительно неприятный оборот: Electrum позволяет импортировать семена BIP39, но НЕ генерирует их. При создании нового кошелька Electrum всегда формирует семена в собственном формате. Опция импорта BIP39 существует исключительно для обеспечения совместимости между кошельками. Но Electrum с радостью примет недействительный сед BIP39 (с неправильным контрольным словом) — он отобразит небольшое предупреждение «checksum failed», но не помешает вам продолжить. Это привело к тому, что люди создают кошельки с седами с опечатками, которые кажутся рабочими, пока они не попытаются их восстановить.

Практическое решение проблемы с пустым кошельком: если при восстановлении седа вы видите нулевой баланс, систематически пробуйте разные комбинации. Сначала определите, в каком формате записан сед: Electrum или BIP39. Если формат Electrum, вывод адресов происходит автоматически. Если BIP39, вам нужно попробовать каждый тип скрипта: сначала native segwit (наиболее распространённый для современных кошельков), затем wrapped segwit, а затем legacy. В Electrum 4.x при восстановлении по BIP39 есть кнопка «Обнаружить существующие счета», которая запрашивает у сервера историю транзакций по общим путям вывода. Воспользуйтесь ею.

Если кошелек содержал несколько учетных записей (что часто встречается в аппаратных кошельках, использующих Trezor Suite), помните, что Electrum не поддерживает несколько учетных записей в одном файле кошелька. Вам необходимо создать отдельный кошелек для каждой учетной записи, увеличивая индекс учетной записи в пути деривации: m/84'/0'/0' для счета 1, m/84'/0'/1' для счета № 2 и так далее.

Предел разницы и почему ваши средства могут быть невидимы

Даже при наличии правильного седа и пути вывода средства могут казаться утерянными из-за ограничения на пропуск. Electrum генерирует адреса последовательно и прекращает сканирование, когда обнаруживает 20 последовательных неиспользованных адресов (ограничение на пропуск по умолчанию). Если кто-то использовал адреса с индексами от 0 до 5, а затем перешел к индексу 30 (например, с помощью API или другого кошелька), Electrum не обнаружит адреса с индексами выше 25, поскольку достигнет ограничения на пропуск и прекратит поиск.

Решение очень простое: в консоли Electrum (Вид → Показать консоль) выполните следующую команду:

wallet.change_gap_limit(50)

Или любое другое число, которое вам нужно. Затем запустите повторную синхронизацию. В крайних случаях я устанавливал пределы разницы в 200 и более для кошельков, которые использовались программно (платформы электронной коммерции, страницы для пожертвований).

История версий и что может перестать работать после обновления

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

Ключевые этапы перехода версий:

1.x → 2.0 (2014): Полное изменение формата кошелька. Поддержка HD-кошельков по стандарту BIP32 заменила старую проприетарную схему генерации адресов. В процессе обновления все адреса генерируются заново. Electrum 1.x не может читать файлы кошельков версии 2.x — и точка. Если кому-то нужно открыть кошелек версии 1, необходимо специально установить Electrum 1.9.8.

2.x → 3.0 (2017): Добавлен новый серверный протокол и поддержка SegWit. Файлы кошельков получили новую версию формата. Введён тип седа SegWit. Внутренний seed_version Это отслеживается по полю в JSON-файле кошелька — если вы видите seed_version: 13 или 14, это кошелек эпохи v3.

3.x → 4.0 (2020): поддержка сети Lightning, PSBT, значительная внутренняя реструктуризация. Каналы Lightning хранятся в файле кошелька, и если каналы были открыты во время последнего использования кошелька, восстановление только седа не позволит восстановить состояние каналов Lightning. Сам файл кошелька имеет решающее значение для восстановления Lightning.

Серия 4.x (2020 г. — настоящее время): Продолжение доработок. В версии 4.1.0 была удалена возможность создания кошельков устаревшего формата через стандартный интерфейс (по умолчанию используется нативный SegWit). В версии 4.5+ была дополнительно обновлена версия хранилища. Код обновления базы данных кошелька обрабатывает миграцию из очень старых форматов, но не всегда без проблем — в процессе обновления кошельков версии 1.9.8 встречаются крайние случаи, которые могут вызывать сообщения об ошибках с рекомендацией обратиться к разработчикам.

Вывод: перед обновлением Electrum всегда копируйте файл кошелька в отдельное место. Если в результате обновления возникнут проблемы, вы сможете вернуться к старой версии, используя исходный файл. И ни в коем случае не переходите на более раннюю версию после того, как обновление затронуло файл кошелька.

Взлом паролей и почему Electrum особенно уязвим

Вывод ключа в Electrum — просто SHA256(SHA256(password)) – является одним из самых слабых во всей экосистеме криптовалютных кошельков. Здесь нет ни соля, ни PBKDF2, ни scrypt, ни argon2. Два раунда SHA-256 — и это и есть ваш ключ шифрования для AES-256-CBC.

Для сравнения: MetaMask использует 600 000 итераций PBKDF2. Bitcoin Core использует около 100 000+. Electrum использует… две операции SHA-256. На современном графическом процессоре hashcat может проверять миллиарды хэшей SHA-256 в секунду. Даже с учётом проверки дешифрования по AES взлом паролей в Electrum происходит на порядок быстрее, чем практически в любом другом кошельке.

Hashcat поддерживает Electrum в трёх режимах, зависящих от типа солевого ключа кошелька:

  • Модель 16600 – Кошелек Electrum (тип Salt 1–3): Подходит для подавляющего большинства кошельков. Формат хеша выглядит следующим образом: $electrum$1*<hex_salt>*<hex_data>.
  • Mode 21700 — кошелек Electrum (тип солевого ключа 4): новый формат шифрования кошелька с использованием шифрования всего файла по алгоритму ECIES.
  • Режим 21800 — кошелек Electrum (тип солевого ключа 5): новейший вариант шифрования.

Чтобы извлечь хэш, используйте electrum2john.py из проекта John the Ripper.

btcrecover — ещё один популярный инструмент, который, пожалуй, более практичен для большинства сценариев восстановления, поскольку поддерживает построение паролей на основе токенов. Вы указываете те части пароля, которые помните («Я знаю, что он начинался со слова «Bitcoin» и заканчивался цифрами и, возможно, восклицательным знаком»), а программа генерирует все возможные варианты. Что касается конкретно Electrum, btcrecover поддерживает как восстановление из зашифрованного файла кошелька, так и прямое восстановление из семенной фразы — для случаев, когда у вас есть неполная семенная фраза с пропущенными или неопределёнными словами.

Поврежденные файлы кошелька

Повреждение файла кошелька в Electrum может принимать различные формы, и способ восстановления зависит от того, что именно вышло из строя. Если у вас есть конкретный случай, вы можете обратиться к нам по адресу david@walletrecoveryservice.com, и мы постараемся найти для вас решение.

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

Повреждение состояния каналов Lightning: если кошелек с открытыми каналами Lightning повреждается, восстановление только по седу НЕ позволит вернуть средства в системе Lightning. Каналы Lightning являются состоятельными — последнее состояние канала (транзакции обязательств, ключи отзыва) находится только в файле кошелька. Electrum включает механизм резервного копирования каналов (SCB — Static Channel Backups), но он позволяет только принудительно закрывать каналы, а не возобновлять их работу. Если у вас есть поврежденный кошелек со средствами Lightning, приоритетом является восстановление самого файла кошелька, а не только седа.

Стратегия резервного копирования: в Electrum есть встроенная функция резервного копирования, доступная в меню «Файл» → «Сохранить резервную копию» (или «Сохранить копию» в старых версиях). При этом сохраняется полная копия файла кошелька. Резервная копия по-прежнему зашифрована вашим паролем, поэтому для восстановления потребуются как файл резервной копии, так и пароль. Для максимальной безопасности экспортируйте семенную фразу на бумагу И сохраняйте резервные копии файла кошелька (особенно если вы используете Lightning или импортированные ключи).

Кошелек Electrum для Android

Приложение Electrum для Android создано на основе фреймворка Kivy (введенного в версии 2.6) и использует тот же формат файлов кошелька, что и настольная версия Electrum. Типы семян, шифрование и пути вывода идентичны. Файл кошелька, созданный на Android, можно открыть на компьютере, и наоборот.

Особой проблемой для Android является доступ к файлам. На устройствах Android без root-прав файлы кошелька Electrum хранятся во внутренней памяти приложения по адресу:

/data/data/org.electrum.electrum/files/data/wallets/

Доступ к этому пути невозможно получить ни через обычный файловый менеджер, ни по USB — этому препятствует система изоляции приложений Android. Такая реализация предусмотрена разработчиками (для предотвращения кражи файлов кошелька другими приложениями), однако это создает серьезную проблему с восстановлением данных в случае сбоя приложения или его случайного удаления.

Версии Electrum для iOS не существует. И точка. Если кто-то утверждает, что использует Electrum на iPhone, значит, он использует поддельное приложение — за последние годы в App Store появлялось множество мошеннических клонов Electrum, которые крадут средства.

Проблема с перезаписанным и удаленным файлом кошелька

Файлы кошелька Electrum представляют собой обычные файлы в файловой системе. Благодаря этому их проще резервировать, но и проще случайно удалить.

Вариант 1: Файл кошелька удален

Если файл кошелька был удален (случайно, в результате удаления программы или действием вредоносного ПО), обратитесь на сайт WalletRecoveryService.com для профессионального восстановления данных или отправьте нам письмо по адресу david@walletrecoveryservice.com. Файл кошелька, как правило, небольшой (несколько сотен КБ для стандартного кошелька, возможно, несколько МБ для кошельков с обширной историей каналов Lightning), что означает, что его часто можно восстановить с диска даже после удаления — ЕСЛИ с тех пор на диск не записывалось много данных.

В случае с SSD-накопителями действует ограничение по времени TRIM — немедленно прекратите использование накопителя. В случае с HDD у вас есть больше времени, но каждая операция записи сопряжена с риском перезаписи секторов, в которых хранится файл кошелька.

Вариант 2: Перезапись кошелька во время восстановления

Это особенность, характерная именно для Electrum. При восстановлении кошелька из семенной фразы в Electrum, если вы выберете для файла кошелька имя, совпадающее с именем уже существующего файла, Electrum перезапишет старый файл. Об этом упоминается в документации, но в панике это легко упустить из виду. Если у вас есть файл кошелька с импортированными закрытыми ключами (не полученными из семенной фразы) и вы перезапишете его, восстановив другой набор семенных слов под тем же именем, эти импортированные ключи будут утеряны, если у вас нет отдельной резервной копии.

При восстановлении всегда используйте другое имя файла: restored_wallet, recovery_test, кроме имени существующего файла кошелька.

Вариант 3: Файл кошелька на неисправном диске

Файл кошелька Electrum представляет собой единый автономный файл. Если вам удастся восстановить этот файл с повреждённого диска — с помощью профессионального восстановления данных, создания образа диска или метода file carving ( сайт walletrecoveryservice.com может оказать вам помощь в этом процессе) — у вас будет всё необходимое. Вам не нужно восстанавливать всю установку Electrum, настройки или заголовки блокчейна. Достаточно только файла кошелька и вашего пароля (или фразы-семенной).

Вектор фишинговой атаки — проблема, характерная исключительно для Electrum

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

В декабре 2018 года было обнаружено, что серверы Electrum могли отправлять клиенту произвольные сообщения об ошибках, которые Electrum отображал в виде текста, сгенерированного с помощью HTML. Злоумышленники создавали вредоносные серверы Electrum, которые, когда пользователь отправлял транзакцию, возвращали поддельное сообщение об ошибке «требуется обновление» со ссылкой на фишинговый сайт, на котором размещался модифицированный бинарный файл Electrum. У пользователей, которые скачивали и устанавливали поддельное обновление, похищались седы или пароли кошельков.

Эта атака оказалась особенно разрушительной, поскольку фишинговое сообщение появлялось непосредственно в интерфейсе Electrum, благодаря чему оно выглядело официальным. До устранения уязвимости были похищены тысячи биткойнов. Исправление было выпущено в версии Electrum 3.3.3, в которой была отключена функция отображения HTML-кода в сообщениях сервера.

Почему это важно для восстановления: у многих пользователей, потерявших средства в результате этой атаки, до сих пор сохранились исходные файлы кошельков с оригинальными седами — версия злоумышленника похитила ключи и перевела средства, но законный кошелек по-прежнему существует. Если ко мне обращается человек со словами «У меня были биткойны в Electrum, и они просто исчезли в 2018–2019 годах», фишинговая атака всегда входит в число первых вещей, которые я проверяю. Восстановление в этом случае не является технической задачей — средства были украдены, а не утеряны. Но важно поставить правильный диагноз, чтобы пользователь не тратил время и деньги на взлом пароля кошелька, который был опустошен злоумышленником.

Восстановление кошелька с поддержкой мультиподписи и двухфакторной аутентификации

Electrum поддерживает кошельки с мультиподписью и функцию двухфакторной аутентификации (2FA) через TrustedCoin, и обе эти функции усложняют процесс восстановления.

Кошельки с многократной подписью в Electrum определяются по полю «Тип кошелька»: "wallet_type": "2of3" или что-то подобное. Файл кошелька содержит несколько хранилищ ключей (x1/, x2/и т. д.), каждый из которых представляет одного соподписанта. Для проведения транзакции из кошелька с многосторонней подписью требуется пороговое количество ключей. Если у вас есть файл кошелька со всеми хранилищами ключей соподписантов, восстановление проходит в обычном режиме. Если у вас есть только сед одного соподписанта, а требуются данные других соподписантов, вам необходимо сотрудничество других владельцев ключей.

Кошельки с двухфакторной аутентификацией (2FA) используют TrustedCoin в качестве службы соподписания. По сути, это кошельки с мультиподписью «2 из 3», в которых TrustedCoin хранит один ключ, а пользователь — два. Для восстановления требуется либо: (а) два из трёх седов, либо (б) один сед плюс работоспособность службы TrustedCoin и аутентификация пользователя. Если TrustedCoin прекратит работу, пользователи все равно смогут тратить средства, используя свои два локальных седа — но им понадобятся оба. Ключ восстановления 2FA, который Electrum отображает при создании кошелька (и который большинство людей никогда не записывают), является третьим седом, и он необходим для восстановления без TrustedCoin.

Методы восстановления, которые действительно работают на практике

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

Вариант 1: У вас есть фраза-семена, нужно только восстановить

Откройте Electrum, «Файл» → «Создать/Восстановить». Выберите «Стандартный кошелек» → «У меня уже есть сед». Введите сед. Если это сед Electrum, программа автоматически определит тип седа и схему вывода. Если это сед BIP39 (из аппаратного кошелька или другого программного кошелька), нажмите «Параметры» → выберите «Сед BIP39» ПЕРЕД вводом слов. Выберите правильный тип скрипта и проверьте путь деривации. Установите новый пароль.

Если баланс равен нулю: попробуйте использовать другие типы скриптов (native segwit, wrapped segwit, legacy). При использовании BIP39 нажмите «Обнаружить существующие счета», чтобы просканировать историю. Увеличьте предел интервала, если использовались адреса, идущие после 20-го.

Вариант 2: Имеется файл кошелька и пароль

Просто запустите Electrum и укажите путь к файлу кошелька. Если файл находится на USB-накопителе или в нестандартном месте, воспользуйтесь меню «Файл» → «Открыть» и найдите его. После открытия вы сможете просмотреть свой сед в разделе «Кошелек» → «Сед» (требуется ввод пароля), экспортировать приватные ключи или просто осуществлять транзакции в обычном режиме.

Вариант 3: Имеется файл кошелька, забыт пароль, есть фраза-семенная

Полностью игнорируйте пароль. Создайте новый кошелек на основе фразы-седа (как в сценарии 1). Фраза-сед генерирует одни и те же ключи независимо от того, какой пароль был установлен в старом файле кошелька. Установите новый пароль для нового кошелька.

Вариант 4: Имеется файл кошелька, забыт пароль, нет сед-фразы

Здесь речь идет о методе перебора. Обратитесь к профессиональному специалисту по восстановлению данных, например walletrecoveryservice.com или извлечь хэш с помощью electrum2john.pyи передать его в hashcat (режим 16600, 21700 или 21800 в зависимости от типа соли) или в btcrecover.

Вариант 5: Старый кошелек Electrum версии 1.x

Не пытайтесь открыть кошелек версии 1 непосредственно в Electrum 4.x — в некоторых редких случаях процесс обновления может завершиться сбоем, и если это произойдет, вам понадобится исходный файл в неизменном виде. Свяжитесь с нами по электронной почте david@walletrecoveryservice.com — мы уже давно занимаемся решением подобных проблем.

Сценарий 6: Семенная фраза Electrum не работает в другом кошельке

Если вы попытаетесь импортировать семенную фразу Electrum в кошелек, не относящийся к Electrum (Trezor, Ledger, Exodus и т. д.), это не сработает, поскольку такие кошельки поддерживают только формат BIP39. Вы можете восстановить кошелек в Electrum, а затем перевести средства в целевой кошелек.

Сценарий 7: Сед BIP39 с аппаратного кошелька отображается в Electrum с неверными адресами

Вероятно, вы выбрали неверный тип скрипта или путь к файлу. Для кошельков Trezor: native segwit — это m/84'/0'/0', наследие — это m/44'/0'/0', SegWit с оболочкой — это m/49'/0'/0'. При наличии нескольких учетных записей увеличьте индекс последней защищенной учетной записи. Перед вводом слов необходимо перевести Electrum в режим BIP39 (Параметры → Семенная фраза BIP39).

Сценарий 8: Кошелек Android, приложение не открывается

Если на телефоне выполнен рут, перейдите в /data/data/org.electrum.electrum/files/data/wallets/ и скопируйте файл кошелька. Если ни один из этих способов не помог, а у вас есть фраза-семенная, восстановите кошелек на компьютере. Если у вас нет фразы-семенной, а телефон не рутирован, единственным выходом будет обратиться к профессиональной службе по извлечению данных с Android, которая сможет создать образ хранилища устройства.

Инструменты, которые должны быть у каждого специалиста по восстановлению Electrum

  • electrum2john.py — программа для извлечения хэшей из версии John the Ripper Jumbo. Поддерживает все форматы кошельков Electrum.
  • hashcat – Режимы 16600, 21700, 21800. Быстрый взлом паролей с использованием графического процессора.
  • btcrecover — восстановление пароля и начальной фразы с помощью токенов (для неполных или неточных начальных фраз).
  • Инструмент BIP39 от Иэна Коулмана — работает только в автономном режиме. Имеет режим «Electrum seed» для вывода ключей и адресов из седов в формате Electrum.

Чем отличаются восстанавливаемые кошельки от утерянных

Экосистема Electrum более лояльна, чем большинство других, поскольку файл кошелька представляет собой автономный, переносимый и хорошо документированный файл JSON, который можно открыть в любом текстовом редакторе (если он не зашифрован целиком) и обработать с помощью широко поддерживаемых инструментов с открытым исходным кодом. Шифрование, хотя и обеспечивает достаточную защиту для большинства пользователей, значительно уступает отраслевым стандартам — что плохо с точки зрения безопасности, но отлично подходит для восстановления данных.

Кошельки, которые я не могу восстановить, имеют одну из двух особенностей: либо пользователь потерял и семенную фразу, и файл кошелька (то есть нет ничего, с чем можно было бы работать), либо пользователь потерял семенную фразу, но сохранил файл кошелька и установил действительно надежный пароль (из 15 и более случайных символов), взлом которого методом перебора вычислительно невыполним даже с учетом слабой схемы генерации ключей в Electrum.

Все остальное — неверные пути к файлам, несовместимость форматов, поврежденные файлы, устаревшие версии, извлечение данных с Android — можно решить с помощью подходящих специализированных инструментов и соответствующих знаний.

Самое важное, что вы можете сделать прямо сейчас: перейдите в меню «Кошелек» → «Сед» в вашей программе Electrum, запишите эти 12 слов на бумаге и храните ее в надежном месте. Файл вашего кошелька может быть поврежден, удален, зашифрован или утерян. Но двенадцать слов на бумаге, надежно сохраненные, всегда позволят вам вернуть свои биткойны.

 

Есть вопросы? Пишите нам на david@walletrecoveryservice.com