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 →