Перейти к содержанию

Закрытый ключ

Материал из BitcoinWiki
Концептуальная иллюстрация защищённого закрытого ключа Bitcoin, разрешающего цифровую подпись
Концептуальная иллюстрация хранения закрытого ключа и цифровой подписи; пригодный для использования ключевой материал не показан.

Закрытый ключ Bitcoin — это секретное целое число, используемое для авторизации расходов с использованием открытого ключа Bitcoin. Программное обеспечение кошелька использует закрытый ключ для создания цифровой подписи; Узлы Биткойна проверяют подпись с помощью соответствующего открытого ключа, не изучая закрытый ключ. Любой, кто получает пригодный для использования закрытый ключ, обычно может авторизовать те же условия расходов, что и его законный контролер, поэтому ключ должен оставаться секретным.

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

Математическая основа

Биткойн использует эллиптическую кривую secp256k1. Действительный секретный ключ — это 32-байтовое значение, интерпретируемое как целое число от 1 до n-1, где n — это порядок генератора кривой. Соответствующий открытый ключ рассчитывается путем умножения точек на эллиптической кривой. Эта операция задумана как односторонняя: BIP 32 описывает восстановление закрытого ключа из открытого ключа как требующее около 2128 операций с эллиптической кривой при предполагаемой безопасности secp256k1.[1].

Биткойн исторически использовал подписи ECDSA. Выходы Taproot используют схему подписи BIP 340 Schnorr, которая также использует secp256k1.[2]. Математическая надежность ключа не защищает его от слабой случайности, неправильной генерации одноразового номера, вредоносного ПО, побочных каналов или небезопасной процедуры резервного копирования.

Генерация и вывод

Кошельки должны генерировать ключи с помощью криптографически безопасного генератора случайных чисел или получать их с использованием проверенной схемы детерминированного кошелька. BIP 32 определяет иерархические детерминированные (HD) кошельки, в которых корневое начальное число создает дерево расширенных ключей. Расширенный закрытый ключ включает в себя как материал ключа, так и цепной код, и может создавать целую ветвь, поэтому его раскрытие может поставить под угрозу множество адресов, а не один.[1]

Слова восстановления сами по себе не являются обычными закрытыми ключами. В таких схемах, как BIP 39, энтропия, генерируемая кошельком, кодируется как последовательность слов и преобразуется в начальное число, из которого HD-кошелек получает ключи. [3] Таким образом, фраза восстановления или корневое начальное значение, по крайней мере, так же чувствительны, как и производные закрытые ключи. Слова, выбранные человеком, не являются безопасной заменой энтропии, создаваемой кошельком; см. Brainwallet.

Расширенные ключи и пути деривации

Расширенный открытый ключ может получать и отслеживать ветвь незащищенных открытых ключей без получения обычных полномочий на расходование средств. Это полезно для кошельков, предназначенных только для просмотра, и систем приема, но также раскрывает транзакционные отношения и балансы для этой ветки. В соответствии с BIP 32 раскрытие незащищенного дочернего закрытого ключа вместе с его родительским расширенным открытым ключом может раскрыть родительский закрытый ключ; Усиленная деривация предназначена для предотвращения этой конкретной эскалации.[1]

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

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

Закрытый ключ может храниться внутри в виде 32 байтов. Устаревшее программное обеспечение может экспортировать один ключ в формате импорта кошелька (WIF), кодировке Base58Check, которая включает в себя информацию о сети и сжатии открытого ключа. Расширенный закрытый ключ имеет другую кодировку, обычно начинающуюся с префикса, специфичного для реализации, например xprv.

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

Дескрипторы выходных сценариев предоставляют машиночитаемое описание того, как создаются сценарии и ключи кошелька. Дескриптор может содержать только общедоступную информацию для кошелька, предназначенного только для просмотра, или может содержать материал закрытого ключа; последнее должно охраняться как секрет. Интерфейс дескриптора-кошелька Bitcoin Core отличает общедоступные дескрипторы от дескрипторов, возвращаемых с личными материалами.[4]

Импорт, очистка и повторное сканирование

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

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

Условия хранения

Не каждый вывод биткойнов контролируется одним закрытым ключом. Общие механизмы включают в себя:

  • хранение с одной подписью, где один ключ может удовлетворять условию расходования;
  • мультиподписное хранение, где требуется порог в несколько ключей;
  • аппаратное подписание, при котором устройство изолирует ключевой материал и подписывает утвержденные транзакции;
  • Координация только для просмотра, при которой онлайн-система создает и отслеживает транзакции, но подписывает их отдельная система; и
  • пороговая подпись, где стороны совместно создают подпись без восстановления одного полного закрытого ключа в одном месте.

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

Устаревшее хранилище ключей

Бумажные кошельки и физические биткойны часто хранят один закрытый ключ или зашифрованную запись закрытого ключа. В BIP 38 указан формат, защищенный парольной фразой, с использованием scrypt и AES для таких записей. [5] Эти форматы остаются актуальными при восстановлении исторических фондов, но им не хватает многих свойств современных резервных копий HD, и они могут выйти из строя из-за компрометации принтера, нечитаемых носителей, слабых парольных фраз, несовместимости программного обеспечения или случайного повторного использования после частичного расходования.

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

Безопасность и хранение

Общие режимы отказа включают в себя:

  • вредоносное ПО, подмена буфера обмена, снимки экрана, ведение журнала или синхронизация с облаком, раскрывающие секрет;
  • предсказуемая или предвзятая генерация случайных чисел;
  • выбранная пользователем фраза, которую можно угадать оффлайн;
  • повторное использование ключа, опубликованного в исходном коде, документации, головоломках или на веб-сайтах;
  • потеря, повреждение или неполнота резервных копий;
  • фишинг, который запрашивает начальное значение или ключ для «проверки», «синхронизации», «заявки» или «восстановления» кошелька; и
  • утечка расширенного закрытого ключа или объединение незащищенного дочернего закрытого ключа с соответствующими данными расширенного открытого ключа в небезопасной конструкции BIP 32. [1]

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

Подозрение на компрометацию

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

Закрытый ключ, открытый ключ и адрес

  • Закрытый ключ ' создает подписи и должен оставаться секретным.
  • Открытый ключ ' позволяет узлам проверять подписи и может быть получен из закрытого ключа.
  • Адрес Bitcoin — это кодировка, ориентированная на пользователя, связанная с конкретным выходным скриптом; это не просто другое название открытого ключа.
  • Расширенный ключ ' объединяет ключ с кодом цепочки для детерминированного вывода и может представлять всю ветвь кошелька.
  • Дескриптор Descriptor описывает один или несколько выходных сценариев и их производные ключи; он может быть общедоступным или может содержать частные материалы.

См. также

Ссылки

  1. 1,0 1,1 1,2 1,3 BIP 32: Hierarchical Deterministic Wallets, “Conventions” and “Security”, accessed 27 August 2026.
  2. BIP 340: Schnorr Signatures for secp256k1, “Public Key Generation” and “Default Signing”, accessed 27 August 2026.
  3. BIP 39: Mnemonic code for generating deterministic keys, accessed 27 August 2026.
  4. Bitcoin Core 30.0 RPC: listdescriptors, accessed 27 August 2026.
  5. BIP 38: Passphrase-protected private key, accessed 27 August 2026.