Текущее местоположение: Главная / BIP39, BIP32 и частичное восстановление фразы / Текст статьи

Electrum Wallet: принцип генерации мнемонической фразы

Electrum Wallet: принцип генерации мнемонической фразы

Введение

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

Что такое мнемоническая фраза Electrum?

Мнемоническая фраза Electrum — это последовательность из 12 слов, выбранных из специального словаря на 2048 слов. В отличие от многих других кошельков, Electrum не использует BIP39 напрямую. Его алгоритм был разработан для поддержки различных типов кошельков (Standard, SegWit, 2FA) и включает в себя версионный префикс и контрольную сумму, встроенные в саму структуру seed.

Отличия от BIP39

Хотя Electrum и использует тот же словарь из 2048 английских слов, что и BIP39, его алгоритм имеет ряд ключевых отличий:

  1. Версионный префикс: В Electrum первые биты seed кодируют тип кошелька. Это позволяет кошельку автоматически определять, к какому типу относится введенная фраза.
  2. Контрольная сумма: Electrum использует 4-битную контрольную сумму, вычисляемую как первые 4 бита SHA256 от энтропии.
  3. Общая длина: Seed Electrum всегда имеет длину 132 бита, что соответствует 12 словам по 11 бит.
  4. Деривация ключей: Electrum не использует PBKDF2 для преобразования мнемоники в seed, как BIP39. Вместо этого seed-фраза напрямую декодируется в hex-строку, которая затем используется для генерации мастер-ключа по алгоритму, близкому к BIP32.

Алгоритм генерации мнемоники Electrum

Рассмотрим пошаговый процесс создания seed-фразы в Electrum.

Electrum Wallet

1. Словарь (Wordlist)

Electrum использует фиксированный словарь из 2048 слов. Каждому слову соответствует индекс от 0 до 2047. Поскольку 2048 = 2^11, каждое слово кодирует ровно 11 бит информации. Этот словарь полностью совпадает с английским словарем BIP39.

2. Версионные префиксы

В зависимости от типа кошелька Electrum добавляет к seed определенный hex-префикс:

  • Standard: 01
  • SegWit: 100
  • 2FA: 101
  • 2FA SegWit: 102

Эти префиксы занимают от 8 до 12 бит и определяют тип кошелька.

3. Генерация энтропии

Для генерации seed используется криптографически стойкий генератор случайных чисел. Длина энтропии подбирается таким образом, чтобы общая длина seed составляла 132 бита. С учетом префикса и 4-битной контрольной суммы:

  • Для Standard: префикс 01 (8 бит) + энтропия (120 бит) + контрольная сумма (4 бита) = 132 бита.
  • Для SegWit, 2FA, 2FA SegWit: префикс (12 бит) + энтропия (116 бит) + контрольная сумма (4 бита) = 132 бита.

генерация seed

4. Вычисление контрольной суммы

Контрольная сумма вычисляется как первые 4 бита хеша SHA256 от энтропии (в виде байтовой строки). Она добавляется в конец seed для проверки целостности при восстановлении.

5. Формирование seed

Итоговый seed представляет собой hex-строку, состоящую из:
префикс + энтропия + контрольная сумма

Например, для Standard кошелька это может быть строка из 33 hex-символов (132 бита). Эта строка преобразуется в большое целое число.

6. Кодирование в base-2048

Полученное целое число переводится в систему счисления по основанию 2048. Каждая цифра этого числа (от 0 до 2047) соответствует слову из словаря. Поскольку число имеет длину ровно 132 бита, при кодировании получается ровно 12 слов. Первое слово соответствует старшим 11 битам, последнее — младшим.

Процесс восстановления и проверки

Когда пользователь вводит мнемоническую фразу, Electrum выполняет обратные действия:

  1. Разбивает фразу на слова.

BIP39

  1. Находит индекс каждого слова в словаре.
  2. Восстанавливает целое число, интерпретируя индексы как цифры в base-2048.
  3. Преобразует число в hex-строку.
  4. Проверяет, соответствует ли префикс выбранному типу кошелька.
  5. Извлекает энтропию и контрольную сумму.
  6. Пересчитывает контрольную сумму и сравнивает с полученной.
  7. Если проверка пройдена, seed используется для генерации мастер-ключа.

Безопасность и лучшие практики

Алгоритм Electrum обеспечивает высокую безопасность при соблюдении следующих условий:

  • Качественная энтропия: Используйте только доверенные источники случайности. Electrum применяет системный CSPRNG.
  • Офлайн-генерация: Для максимальной безопасности генерируйте seed на устройстве, не подключенном к интернету.
  • Резервное копирование: Храните мнемоническую фразу на физическом носителе в нескольких безопасных местах.
  • Проверка совместимости: Помните, что seed Electrum не совместим с BIP39-кошельками. Для переноса средств может потребоваться специальный конвертер.

Заключение

Мнемоническая фраза Electrum — это продуманный криптографический механизм, который обеспечивает удобство использования и безопасность. Понимание принципов его работы помогает разработчикам создавать совместимые инструменты, а пользователям — осознанно подходить к защите своих средств. Несмотря на отличия от BIP39, алгоритм Electrum остается надежным и проверенным временем решением.