Что такое приватный ключ биткойна

Время чтения: 12 мин.

Главная / Биткойн / Биткойн-справочник / Что такое приватный ключ биткойна

Оглавление

1 Пример закрытого ключа
2 Диапазон действительных закрытых ключей ECDSA
3 Иерархические детерминированные (HD) кошельки
4 Базовый формат импорта кошелька — Base58Check
5 Мини-формат закрытого ключа
6 Резюме
7 Secp256k1

 

Закрытый (секретный, приватный, частный) ключ в контексте Bitcoin является секретным номером, который позволяет тратить биткойны. Каждый биткойн-кошелек содержит один или несколько приватных ключей, которые сохраняются в файле кошелька. Частные ключи математически связаны со всеми адресами Bitcoin, созданными для кошелька.

 

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

 

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

 

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

Пример закрытого ключа

В Биткойне закрытый ключ представляет собой 256-битное число, которое может быть представлено одним из нескольких способов. Его можно записать как 256 символьное, где символы — это 0 (ноль) и 1 (единица), например — 01111000101010101100…… Такими длинными числами не очень удобно оперировать, их лучше укоротить, например записав 32 (тридцатидвумя) байтами (1 байт = 8 бит, 256/8=32), т.е. в числе будет 32 символа. Если эти 32 байта записать в шестнадцатиричной системе, то на каждый из 32 байт понадобится 2 символа шестнадцатиричной системы — 0-9 и A-F. То есть 256 — битное число укороченное до 32 байт и записанное в шестнадцатиричной системе будет иметь 64 (32×2) символа. Например,

 

E9 87 3D 79 C6 D8 7D C0 FB 6A 57 78 64 44 89 F4
45 32 13 30 3D A6 1F 20 BD 67 FC 23 3A A4 42 62

256-ти битное число в 32 -х байтном виде записанное в шестнадцатиричной системе.
к оглавлению

Диапазон действительных закрытых ключей ECDSA

Каждое 256-битное число — это действительный закрытый ключ ECDSA  (Elliptic Curve Digital Signature Algorithm — алгоритм создания цифровой подписи вычисленной по эллиптической кривой). В частности, любое 256-битное число

от 0x1 до 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF BAAE DCE6 AF48 A03B BFD2 
5E8C D036 4140 (или от 20=1 до 2256 в степенях двойки)

является действительным закрытым ключом.

 

На сегодняшний день перебрать все ключи, а их 2256 невозможно. Есть предположение, что всего на Земле 1022 песчинок. Если 103 ≈ 210,  то  1022 ≈ 280 и 2256 > 280×3. Например, если взять все песчинки Земли и превратить их в новые Земли с таким же количеством песчинок, а затем все песчинки на этих новых Землях опять превратить ещё раз в новые Земли, то и в этом случае суммарное количество песчинок на всех гипотетических Землях (2240) будет меньше, чем общее количество (2256) возможных криптоключей!

 

Диапазон действительных закрытых ключей определяется стандартом ECDSA secp256k1, используемым Bitcoin.

к оглавлению

Иерархические детерминированные (HD) кошельки

Программное обеспечение Wallet может использовать семя BIP 32 для генерации многих пар закрытых и открытых ключей из одного секретного значения. Это называется иерархически детерминированным кошельком , или кошелек HD для краткости. Начальное значение или основной расширенный ключ состоит из 256-битного закрытого ключа и 256-битного кода цепи , всего 512 бит. Начальное значение не следует путать с закрытыми ключами, используемыми непосредственно для подписания транзакций биткойнов.

 

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

 

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

к оглавлению

Базовый формат импорта кошелька — Base58.

При импорте или расширении секретных ключей ECDSA часто используется более короткий формат, известный как формат импорта бумажника WIF (Wallet Import Format), что дает несколько преимуществ. Формат импорта кошелька короче и включает встроенные коды проверки ошибок, так что опечатки могут быть автоматически обнаружены и / или исправлены (что невозможно в шестнадцатеричном формате).

Для получения WIF секретного ключа применяется преобразование в 58-ричную систему (основание 58) — Base58. Вполне возможно, что Сатоши Накамото разрабатывал систему для e-mail, где традиционно используется преобразование Base64 -26 заглавных букв, 26 прописных букв, 10 цифр и два символа: «+» и «/». Но возникла идея о криптовалюте и Base64 была заменена на Base58, как более устойчивую к ошибкам ввода, так как в ней по сравнению с Base64 исключены следующие символы — 0 (ноль), O (большая буква О), l (маленкая L), I (большая i), и символы «\+» и «/».

 

Изначально Base58 использовалась для короткого адреса Биткойна, в последующем и для WIF. Преимущества Base58 при кодировании очевидны. Рассмотрим пример.

Число 30 00010 в десятичной системе (основание 10), в двоичной системе 
(основание 2) выглядит следующим образом:

1110101001100002

1110101001100002 = 214x1+213x1+212x1+211x0+210x1+29x0+28x1+27x0+26x0+25x1+24x1+
+23x0+22x0+21x0+20x0=16384+8192+4096+0+1024+0+256+0+0+32+16+0+0+0+0=30 00010

Это же число в шестнадцатиричной системе (основание 16):

0753016

0753016 = 164x0+163x7+162x5+161x3+160x0 = 0+4096x7+256x5+16x3+0 = 0+28672+
+1280+48+0 = 30 00010

И, наконец,  30 00010 в Base58:

9vF58
остаток
30 000/58 -> 517 -> 0,24×58 = 14
517/58 -> 8 -> 0,91×58 = 53
8/58 -> 0 -> 0,14×58 = 8
где в Base58 8-и  соответствует "9", 53-м соответсвует "v", 
14-и соответствует "F". 
То есть, число 30 00010  будет записываться как 9vF58  в системе Base58:

9vF58 = 582x8 + 581x53 + 580x14 = 26912 + 3074 + 14 =  30 00010

 

Формат импорта кошелька является наиболее распространенным способом представления частных ключей в Bitcoin. Несжатые закрытые ключи содержат 51 символ и всегда начинаются с номера 5 в сети (9 в тестовой сети).

 

Сжатые приватные ключи составляют 52 символа и начинаются с литер L или K в главной сети (C в тестовой сети). Пример несжатого приватного ключа:

5Kb8kLf9zgWQnogidDA76MzPL6TsZZY46hWXMssSzNydYXYB9KF

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

Адрес Bitcoin, реализованный с использованием вышеприведенного примера:

1CC4X2gu58d6wXUWffpuzN9JAfTUWu3Kj

к оглавлению

Мини-закрытый ключ

В некоторых приложениях используется формат мини-секретного ключа. Не каждый закрытый ключ или биткойн-адрес имеет соответствующий мини-закрытый ключ — они должны быть сгенерированы определенным образом, чтобы обеспечить наличие мини-частного ключа для адреса. Мини-закрытый ключ используется для приложений, где пространство имеет решающее значение, например, в QR-кодах и в физических биткойнах (специальный тип биткойн кошелька в котором хранится адрес биткойна, закрытый и открытый ключи). Приведённый в примере выше ключ можно преобразовать в следующий мини-ключ:

SzavMBLoXU6kDrqtUVmffv

к оглавлению

Резюме

Любые биткойны, отправленные по адресу

1CC4X2gu58d6wXUWffpuzN9JAfTUWu3Kj

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

 

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

 

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

к оглавлению

Справка по стандарту Secp256k1

Secp256k1 относится к параметрам кривой ECDSA, используемой в Биткойне, и определен в стандартах для эффективной криптографии (SEC)(Certicom Research, http://www.secg.org/sec2-v2.pdf ).

Secp256k1 почти никогда не использовался до того, как Биткойн стал популярным, но теперь он набирает популярность благодаря своим нескольким приятным свойствам. Наиболее часто используемые кривые имеют случайную структуру, но secp256k1 был создан специальным неслучайным способом, благодаря которому вычисления особенно эффективны. В результате вычисления по нему часто более чем на 30% быстрее, чем по другим кривым, если реализация достаточно оптимизирована. Кроме того, в отличие от популярных кривых NIST, константы secp256k1 были выбраны предсказуемым образом, что значительно уменьшает вероятность того, что создатель кривой вставил какой-либо бэкдор в кривую.

Технические подробности

Как указано в Стандартах :

Параметры области эллиптической кривой над F p, связанные с кривой Коблица secp256k1, задаются секстантом T = ( p, a, b, G, n, h ), где конечное поле F p определяется следующим образом:

  • p = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
  • = 2 256 — 2 32 — 2 9 — 2 8 — 2 7 — 2 6 — 2 4 — 1

Кривая E : 2 = x 3 + ax + b над F p определяется следующим образом:

  • a = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  • b = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000007

Базовая точка G в сжатом виде:

  • G = 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798

и в несжатом виде:

  • G = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Наконец, порядок n группы G и кофактора:

  • n = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
  • h = 01

Свойства:

  • secp256k1 имеет характеристику p , она определяется над простым полем ℤ p . Некоторые другие общие кривые имеют характеристику 2 и определены над бинарным полем Галуа GF (2 n ) , но secp256k1 не является одной из них.
  • По мере того как константа равна нулю, то ах член в уравнении кривой всегда равен нулю, следовательно, уравнение кривой становится у 2 = х 3 + 7 .

 



text text

Рекомендуемые статьи этой категории

stat1

5 секретов успешного трейдера

Last year’s Ethereum blockchain split was an event that could have resulted in significant loss and with the 1st August Bitcoin Fork event just around the corner

Подробнее
stat1

5 секретов успешного трейдера

Last year’s Ethereum blockchain split was an event that could have resulted in significant loss and with the 1st August Bitcoin Fork event just around the corner

Подробнее
stat1

5 секретов успешного трейдера

Last year’s Ethereum blockchain split was an event that could have resulted in significant loss and with the 1st August Bitcoin Fork event just around the corner

Подробнее

Как зарабатывать на криптовалютах?

5 способов и 10 готовых стратегий

Бесплатный видеокурс от нашего портала
journal
alt

Доступ открыт: 279 раз

Осталось бесплатно: 21

alt

3 видеоурока и PDF-книга

Получить доступ

Осталось бесплатно: 21