Открыть сервис

BIP-32

BIP-32 (Bitcoin Improvement Proposal 32) — это технический стандарт в экосистеме криптовалют, описывающий метод иерархического детерминированного (HD) создания ключей и адресов. Предложенный разработчиком Pieter Wuille в 2012 году, он позволяет из одного начального значения (seed) генерировать неограниченное количество пар «приватный ключ — публичный ключ» в виде древовидной структуры, что устраняет необходимость в хранении множества отдельных ключей и упрощает управление кошельками.

История и контекст

До появления BIP-32 в криптовалютных кошельках использовался простой детерминированный метод (тип 1), где все ключи генерировались последовательно из одного начального числа. Однако этот подход имел недостатки: отсутствие возможности создавать отдельные ветви для разных целей (например, для разных валют или счетов) и уязвимость к потере всех средств при компрометации начального числа.

BIP-32 был предложен как решение для создания иерархической структуры, где каждый узел (ключ) может порождать дочерние ключи. Стандарт был принят в 2012 году и стал основой для большинства современных криптовалютных кошельков, включая Bitcoin Core, Electrum, Ledger, Trezor и другие. Ключевой особенностью является возможность восстановления всех ключей из одного seed-фразы (обычно 12 или 24 слова), что значительно упрощает резервное копирование.

Принцип работы

Иерархическая структура

BIP-32 использует древовидную структуру, где каждый узел (ключ) может быть родительским для дочерних узлов. Структура описывается с помощью путей деривации, например:

  • m/0/0 — первый дочерний ключ на нулевой глубине.
  • m/44'/0'/0'/0/0стандартный путь для первого адреса Bitcoin (BIP-44).

Здесь m обозначает мастер-ключ (seed), а числа указывают на уровни иерархии. Апостроф (') означает закрытую (hardened) деривацию, которая использует приватный ключ для генерации дочерних ключей, что повышает безопасность.

Генерация ключей

Процесс основан на алгоритме HMAC-SHA512. Из родительского ключа и индекса (числа) вычисляется 512-битное значение, которое делится на две части: первые 256 бит становятся дочерним приватным ключом, вторые 256 бит — цепочным кодом (chain code), используемым для дальнейшей деривации. Для открытой (non-hardened) деривации используется только публичный ключ, что позволяет генерировать дочерние публичные ключи без доступа к приватным.

Seed и мнемоническая фраза

Начальный seed (обычно 128–512 бит) генерируется случайным образом или из мнемонической фразы (BIP-39). Из seed вычисляется мастер-ключ (m) и мастер-цепочный код. Все последующие ключи являются производными от этого seed.

Классификация и типы деривации

BIP-32 определяет два типа деривации:

  • Открытая (non-hardened): использует только публичный ключ и цепочный код. Позволяет генерировать дочерние публичные ключи без приватных, что удобно для аудита, но менее безопасно — компрометация одного дочернего приватного ключа может раскрыть родительский.
  • Закрытая (hardened): использует приватный ключ. Более безопасна, так как компрометация дочернего ключа не раскрывает родительский. Однако требует доступа к приватному ключу, что ограничивает возможности аудита.

На практике большинство кошельков используют hardened деривацию для первых уровней (например, для счета) и non-hardened для адресов внутри счета.

Применение

Криптовалютные кошельки

BIP-32 лежит в основе HD-кошельков, которые стали стандартом в индустрии. Основные преимущества:

  • Единая seed-фраза для восстановления всех ключей.
  • Возможность создавать отдельные ветви для разных криптовалют (Bitcoin, Ethereum, Litecoin и т.д.) в одном кошельке.
  • Поддержка множества адресов без необходимости хранить каждый ключ отдельно.

Аудит и безопасность

Открытая деривация позволяет создавать watch-only кошельки, которые могут отслеживать баланс без доступа к приватным ключам. Это используется в биржах, сервисах мониторинга и корпоративных решениях.

Мультивалютные кошельки

Стандарты BIP-44 (на основе BIP-32) и BIP-49 определяют пути деривации для разных криптовалют и типов адресов (SegWit, Legacy). Например:

  • Bitcoin: m/44'/0'/0'/0/0
  • Ethereum: m/44'/60'/0'/0/0
  • Litecoin: m/44'/2'/0'/0/0

Критика и ограничения

Уязвимости

  • Компрометация seed: Если злоумышленник получает seed-фразу, он может восстановить все ключи. Это требует надёжного хранения seed.
  • Открытая деривация: При утечке дочернего приватного ключа в non-hardened ветви возможно восстановление родительского приватного ключа, если известен цепочный код. Это ограничивает применение открытой деривации в недоверенных средах.

Сложность

Для обычных пользователей концепция путей деривации и hardened/non-hardened может быть неочевидной, что иногда приводит к ошибкам при восстановлении кошельков.

Альтернативы

Существуют альтернативные стандарты, такие как BIP-39 (мнемонические фразы) и BIP-44 (расширение для мультивалютности), которые дополняют BIP-32. Также разрабатываются более современные подходы, например, на основе подписей Шнорра (BIP-340), но они не заменяют BIP-32, а дополняют его.

Интересные факты

  • BIP-32 был одним из первых предложений по улучшению Bitcoin, принятых в 2012 году.
  • Стандарт используется не только в Bitcoin, но и в большинстве альткоинов, включая Ethereum, Litecoin, Dogecoin и другие.
  • Seed-фраза из 12 слов (BIP-39) может быть записана на бумаге и восстановлена даже через десятилетия, что делает её удобным резервным средством.
  • BIP-32 не определяет формат seed-фразы — это делают отдельные стандарты (BIP-39, BIP-38).

Источники

  • Bitcoin Improvement Proposal 32: Hierarchical Deterministic Wallets (Pieter Wuille, 2012)
  • Mastering Bitcoin (Andreas M. Antonopoulos, 2017)
  • BIP-39: Mnemonic code for generating deterministic keys (Marek Palatinus, Pavol Rusnak, 2013)
  • BIP-44: Multi-Account Hierarchy for Deterministic Wallets (Marek Palatinus, Pavol Rusnak, 2014)
  • Bitcoin Wiki: Hierarchical Deterministic Wallets

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →