[TLDR Guide] Bitcoin Private Key, Public Key, and Public Address
![]()
A public-key cryptography (or asymmetrical cryptography) is one that uses pairs of keys: 1. public key (open to anyone); and 2. private key (only known to the owner). In the case of Bitcoin which uses such cryptography, then what is the relationship between one’s private key, public key, and public address??
1. Private key
A private key is essentially a randomly generated, 32-byte number.
2. Public key
A public key can be derived from the private key using what’s called Elliptic Curve Cryptography. Bitcoin uses a specific elliptic curve called secp256k1 over the finite (prime) field of (2²⁵⁶-2³²-2⁹-2⁸-2⁷-2⁶-2⁴-1) number of elements, using the generator point (on the curve) G=(x, y) where (in hexademical):
Formula: public key = (private key) * G
Optional:
Elliptic curve: y² = x³+a x+b
secp256k1 curve: y² = x³+7
There exists a group law on the set of all points on a given elliptic curve. There’s even what’s called a point at infinity on the curve.
In the formula, note that the multiplication (a number times a point) is done via group law on the elliptic curve.
3. Public address
Public key → 8-step process involving concatenation, hash functions (SHA-256 and RIPEMD-160), and Base58Check → public address
Optional:
A hash function h() is one that can be used to map data of arbitrary size to data of fixed size. It satisfies two properties: 1. one-way — given h(x)=y, it’s computationally infeasible to find z such that h(z)=y; and 2. collision-free — it’s computationally infeasible to find x and y such that h(x)=h(y).
bitcoin core как генерирует приватный ключ?
(WIF-ключ KxHyt7P3e27sPedkE8cLfjZ92SShMT4VtCGVSqUZ23cxcQSeLvHc здесь я ввел для примера, у каждого он, естественно, свой).
Как уже говорил, из этого ключа можно получить свои приватники и без кора, если кому-то интересно, распишу как.
cemehbl4
Модератор
- 2 Фев 2021
- #24
LeftMiner
Местный житель
- 2 Фев 2021
- #25
Dtruver
Друг форума
- 2 Фев 2021
- #26
Да вы и так знаете). Но ладно, формально заявка поступила — придется писать ).
1. Берем WIF-приватник из строки с hdseed и преобразуем его в 16-ричный формат. Это можно сделать, например, утилитой BX или на bitaddress.org (во вкладке "Детали кошелька" вводим WIF и берем значение строки "Private Key Hexadecimal Format (64 characters [0-9A-F])").
2. На https://iancoleman.io/bip39/ вставляем эти 32 байта в поле "BIP39 Seed", в "Derivation Path" переключаемся на вкладку "BIP32" для получения легаси-адресов (начинающихся на единицу то есть), либо на вкладку "BIP141" (для сегвит-адресов). В последнем случае нужно еще выбрать правильный параметр "Script Semantics": для адресов на тройку это "P2WPKH nested in P2SH", для адресов на "bc1q" — "P2WPKH").
3. В поле "BIP32 Derivation Path" вставить значение m/0’/0′ для получения приемных адресов или m/0’/1′ для получения адресов сдачи.
4. Ниже поставить галку на "Use hardened addresses".
That’s all folks ).
Coroller
Друг форума
- 2 Фев 2021
- #27
dev/urandom не проходит тест на ксгсч. Вот dev/random — да, т.к. использует биты из пула, сформированного шумами драйверов устройств, побитно. А dev/urandom заполняет пул сам (вернее — выдаёт значения по мере требования, независимо об заполнения пула)
Кстати, это очень интересный момент — нет исследований криптостойкости dev/urandom к обратной разработке, т.е. когда по существующему множеству выданных функцией значений возможно найти предыдущие — при таком варианте генерация будет уязвима (и ключей биткоина тоже, кстати). Вернее, нет опубликованных
Ну, и туда же — вопрос о спорности использования криптографических хеш-функций (SHA-256 в нашем случае) в качестве ксгсч — некоторые авторы это критиковали ещё в 2004 в опубликованных работах как небезопасное применение (как раз хеширование SHA-256 "парольной фразы" при генерации закрытого ключа bitcoin, и Сатоши про это знал/должен был знать) — но, это, как говорится, выходит далеко за пределы нашей статьи
Как создается приватный ключ в кошельках с seed-фразой и без неё
![]()
Обычно криптокошельки при создании генерируют seed-фразу, которую нужно запомнить или записать, чтобы потом иметь возможность восстановить доступ к активам. Но ведь Tangem Wallet работает без нее. Как это происходит и почему мы считаем, что seed-фраза не очень безопасна?
Для начала надо разобраться, что это вообще такое. Если максимально упростить, то получится примерно так: это мнемоническая фраза, в которой закодированы приватный и публичный ключи пользователя. А благодаря вычислительной магии из этого рандомного набора слов всегда будет генерироваться один и тот же набор ключей.
Криптодеревья
Для начала стоит сказать пару слов о самих криптокошельках. Подавляющее их большинство — это иерархические детерминированные кошельки (Hierarchical deterministic wallet, HD).
Криптокошелек представляет собой «дерево» приватных и публичных ключей, благодаря которым вы получаете доступ к своей криптовалюте в разных блокчейнах и можете ей управлять. Вырастает это дерево из энтропии — случайного числа, определенного генератором случайных чисел. Корневая система — это зерно (seed), ствол — пара расширенных ключей (приватный и публичный), а ветви — это огромное множество пар ключей и адресов монет в блокчейнах.
Каждый дочерний ключ может генерировать свои ключи, которые могут генерировать свои ключи, и т. д. — в результате создается определенная система иерархии. Поэтому кошельки и называют иерархическими.
А «детерминированность» (то есть однозначная предопределенность результата) здесь появляется потому, что из одной и той же мнемонической фразы всегда будет генерироваться одно и то же дерево ключей одним и тем же способом.
Приватные и публичные ключи в HD криптокошельках с seed-фразой
Мнемоническая фраза (код) — это набор слов, сгенерированный из случайного числа, в свою очередь, определенного генератором случайных чисел. Именно ее, а не сам приватный ключ, в большинстве случаев используют для бэкапа (резервной копии ключа). Мнемоническую фразу обычно называют seed-фразой.
Как это работает
Итак, вы создаете криптокошелек. Что в этот момент происходит и как создается мнемоническая фраза?
1. В первую очередь генератор случайных чисел генерирует энтропию.
Энтропия — это очень большое случайное число, которое никогда никем не генерировалось и больше никогда никем не будет сгенерировано.
2. Сгенерированная энтропия при помощи математических алгоритмов кодируется в цепочку слов из специального словаря. На выходе получается мнемоническая фраза.
3. Мнемоническая фраза преобразовывается в seed (не путайте с seed-фразой!). Seed — это преобразованная версия мнемонической фразы. Для преобразования используется хеш-функция.
Хеш-функция — это математический алгоритм, который сжимает данные любого размера в массив данных фиксированного размера. Входящие данные называются сообщением, а исходящие — хеш-суммой или просто хешем. Одна из главных особенностей хеш-функции состоит в том, что она однонаправленная, это значит, что из её результата (хеша) невозможно восстановить исходные данные. Еще одна важная для понимания деталь: когда входящие данные не меняются, хеш-сумма всегда будет одной и той же.
4. Из seed вычисляется мастер-ключ (extended master key). Это первый ключ, который вы получаете при преобразовании seed-фразы. Преобразование производится также при помощи хеш-функции.
5. Из мастер-ключа вычисляется расширенный приватный ключ (Xprv).
6. Из расширенного приватного ключа генерируется расширенный публичный ключ (Xpub).
Вы получили главную пару ключей, из которых создается огромное множество дочерних связок ключей для разных блокчейнов. Теперь можно пользоваться кошельком: хранить, отправлять, получать, обменивать монеты и токены и т.д.
![]()
Если с вашим криптокошельком что-то случится, для восстановления всей иерархии ключей и, соответственно, полного доступа ко всем монетам и токенам, вам понадобится мнемоническая фраза. Поэтому ее нужно записать где-то на бумажке и хранить в надежном месте.
Что плохого?
Мнемоническая фраза дает возможность без проблем восстановить всю вашу криптовалюту в случае утери, кражи или поломки вашего кошелька и… похитить все ваши криптоактивы, если попадет в руки злоумышленникам.
Задумайтесь на минутку, разработчики криптокошельков создают инновационные устройства, соревнуются в их безопасности, стараются максимально их защитить, как программно, так и физически. Ваши ключи от криптовалюты генерируются путем сложнейших математических алгоритмов, данные при помощи криптографии многократно шифруются для обеспечения максимальной сохранности ваших активов.
А доступ к вашей криптовалюте расписан на бумаге. Дюжина-две слов на ничем не защищенном листочке — мастер-ключ от всех ваших активов в открытом виде. Чтобы скомпрометировать ключ, достаточно сфотографировать, переписать или просто запомнить слова — и вы об этом даже не узнаете. А ещё листок с мнемонической фразой легко повредить или потерять.
Конечно, можно зашифровать фразу, разделить на части, хранить их в разных местах или арендовать для seed-фразы ячейку в банке. Но многие ли так делают? Особенно новички в мире крипты.
Из всего этого можно сделать объективный и обоснованный вывод: seed-фраза в открытом виде — существенный изъян существующих криптопродуктов, серьезная прореха в безопасности современных криптовалютных кошельков.
Приватные и публичные ключи в криптокошельке Tangem Wallet без seed-фразы: как это работает
Tangem Wallet — это такой же иерархический детерминированный кошелек, как и его аналоги, только без их главной уязвимости — мастер-ключа от всех криптоактивов в открытом незащищенном виде, то есть мнемонической фразы в распоряжении пользователя.
При генерации мастер-ключа, пары расширенных ключей (приватного и публичного) и остальных связок ключей и адресов используется точно такой же алгоритм, как и в других кошельках, но без этапа создания мнемонической фразы — seed генерируется прямо из энтропии.
Ключ генерируется чипом карты, в нем же и хранится. Получить его не может никто. Ни тот, кто украдет карту, ни компания Tangem, ни даже сам пользователь. А в качестве резервной копии используется не мнемоническая фраза, а другие карты из комплекта Tangem Wallet (одна или две, в зависимости от того, какой вариант вы выбрали). При создании бэкапа между картами посредством смартфона устанавливается зашифрованный канал, по которому ключи передаются с одной карты на другую.
После завершения бэкапа ключей вы получаете две либо три идентичные копии кошелька — равнозначные карты с одинаковыми ключами и парольной защитой. Рекомендуем хранить их не вместе, а в нескольких надежных местах. Что-то случится с одной картой — берите вторую и пользуйтесь. Потеряете вторую — это уже опасно, бэкапа нет, в таком случае покупайте новый комплект Tangem Wallet и переводите свои криптоактивы на него.
Как пользоваться кошельком кошелек без seed-фразы? Все просто:
- когда хотите купить криптовалюту, вы формируете в мобильном приложении необходимую транзакцию, прикладываете карту к смартфону и вводите пароль;
- смартфон через NFC передает данные на чип;
- чип проверяет пароль, подписывает транзакцию приватным ключом и возвращает цифровую подпись приложению;
- приложение отправляет подписанную транзакцию в блокчейн.
А что если…
…Tangem закроется, сервер отключится, приложение пропадет из Google Play и AppStore? Ответ прост — ничего. Вы можете без проблем пользоваться криптокошельком Tangem Wallet. Подробнее читайте об этом в нашей статье «Как будет работать кошелек Tangem без компании Tangem» .
Публичные ключи и приватные ключи: что это и как они работают
Без приватных и публичных ключей не получится переводить и получать криптовалюту. Они также нужны для обеспечения конфиденциальности и защиты цифровых активов. Их можно использовать из любого устройства и любого криптокошелька, без привязки к месту.

Что такое публичные и приватные ключи
Для работы с криптовалютой используются специальные программы-кошельки. Чтобы переводить и обменивать цифровые деньги, нужно иметь два вида ключей шифрования:
Оба ключа привязываются к программному кошельку и могут быть импортированы в другой кошелек по желанию пользователя.
Сами монеты имеют форму данных о неизрасходованной транзакции и хранятся в распределенном реестре – блокчейне. Именно для получения доступа к этому реестру и нужны ключи. Без них перевести криптовалюту другому пользователю не получится. То есть основная функция публичного и приватного ключа сводится к обеспечению безопасных транзакций.
Открытый ключ является адресом (счетом), на который пересылаются цифровые деньги. Его могут видеть другие пользователи, поэтому он и называется публичным. При помощи открытого ключа выполняется процесс шифрования – создания транзакции.
Но перевод не будет одобрен администраторами сети, если в нем отсутствует цифровая подпись. Для создания такой подписи используется приватный ключ. Без него пользователь не сможет отправлять криптовалюту на другие кошельки. По этой причине его важно хранить в надежном месте. Желательно на устройстве, которое не подключено к интернету.
Если закрытый ключ шифрования будет утерян, владелец кошелька не сможет получить доступ к своим средствам. Даже если кто-то отправит ему цифровые деньги, у него не получится их использовать.
Также приватный ключ важно защищать и по причине высокой активности мошенников. Если злоумышленники узнают его, они смогут перевести себе все цифровые деньги, которые хранятся на кошельке. Но не имея закрытого ключа мошенник не сможет получить доступ к криптовалютным средствам пользователя, даже если перехватит его трафик.
Как выглядят закрытые и открытые ключи
Каждый из ключей имеет вид уникального набора символов, включающего буквы и цифры. Для примера можно взять ключи шифрования блокчейна bitcoin. Он работает на основе алгоритма шифрования SHA-256, генерирующего 256-битное число. Для более удобной работы с такими числами была создана комбинация, состоящая из 64 символов. Это и есть закрытый ключ.
В сети биткоина используются и другие форматы создания приватных ключей:
Приватный ключ Биткоин (в формате WIF): 51 символ base58, начинается с «5»: 5JPeWYZx922hXi49Lg2RIPWLIqcmDGS9YegMNgANvx8cJa6kNK8
Короткий (сжатый WIF): 52 символа base58, начинается с «К» или «L»: KykxZQLSNPYVtYCsoqFGFnEqpRar997zihJgvfrPo8LapFrAtaea
В НЕХ формате (64 символа [0-9А-F]): 4BBFF74CA25A2A00409DCB24EC0418E9A41F9B3B56216A183E0E9731F4589DC6
В Base64 формате (44 символа): S7/3TKJaKgBAncsk7AQY6aQfmztWIWoY Pg6XMFRYncY=
В большей части криптовалютных кошельков, работающих с ВТС, используется WIF-формат. Для обычных транзакций достаточно сжатого ключа, состоящего из 52 символов. В кошельках для хранения Ethereum чаще всего используется код из 64 символов.
Публичный ключ для работы с транзакциями биткоина тоже может иметь разное количество символов:
Адрес Биткоин кошелька: 1DcEeFRGc4mfRLXWiVZySpmmXk7SsVLfMG
Короткий адрес: 1BSUkuwtdM7gkdy6W4Q954gNKWBgy4A19Q
Публичный ключ (130 символов [0-9А-F]): 04D7AS1212E4EEFE40C72B201E74AA3S57DEFD940ACESC3E1C76B75S77CD45FF9626065170497984F81C23BC8CBEEE64DBD84C9FE113F4A78930A0DA7FA296B3F6D
Публичный ключ (короткий, 66 символов [0-9А-F]): 03D7A51212E4EEFE40C72B201E74AA3557DEFD940ACESC3E107687577CD45FF962
Самый распространенный вариант – это короткий адрес. Он может начинаться с единицы или тройки.
Методы шифрования в криптовалюте
Криптография – это наука о методах сохранения целостности данных и конфиденциальности, она появилась задолго до создания первой криптовалюты. Достижение целей криптографии включает в себя использование разных алгоритмов защиты информации.
Симметричное шифрование
Является самым популярным и простым способом кодирования данных транзакции. Сообщения шифруются и расшифровываются при помощи одного ключа. То есть выполняются симметричные действия.
Получателю сообщения передается ключ, при помощи которого он может раскодировать данные.
Асимметричное шифрование
При таком методе кодирования данных используются 2 ключа:
открытый — нужен для запуска операции;
закрытый – для расшифровки сообщения.
Приватный ключ позволяет ставить электронную подпись в транзакции, подтверждая тем самым ее подлинность. Когда валидаторы видят поступление транзакции с электронной подписью, они определяют эту операцию как действие законного владельца цифровых активов.
Логика здесь простая: закрытый ключ есть только у того, кто владеет средствами на отдельном кошельке. Значит, кроме этого пользователя электронную подпись поставить никто не может, ведь для этого необходимо наличие ключа.
Чтобы избежать потери приватного ключа, нужно записать секретную комбинацию символов в нескольких блокнотах, которые будут храниться в надежном месте, или сохранить ее на специальном устройстве. В этом случае даже при сбое системы или поломке электронных хранилищ пользователь не потеряет доступ к своим запасам криптовалюты.
Хеширование
Так называется еще один метод кодирования счетов пользователей, обеспечивающий надежное шифрование транзакций.
Суть метода сводится к преобразованию любой информации в уникальный набор символов. Он применяется для кодирования больших объемов данных. Расшифровать информацию можно при помощи специального хэш-значения или цифрового отпечатка.
Принцип работы
Публичный ключ используется как для обеспечения конфиденциальности, так и для идентификации пользователя в системе.
Схема применения имеет следующий вид:
Пользователь, которому нужно перевести деньги, дает свой публичный ключ.
Отправитель использует полученный набор символов для шифрования транзакции – ее запуска в безопасном режиме.
Выполняется перевод криптовалюты на указанный адрес криптовалютного кошелька.
Получив перевод, адресат использует приватный ключ для расшифровки транзакции. Секретный набор символов открывает доступ к записи в блокчейне, в которой содержится информация о смене владельца определенного количества криптосредств.
Для более наглядного примера можно представить следующую ситуацию:
Пользователь А хочет отправить 5 биткоинов пользователю Б.
Пользователь Б предоставляет публичный ключ пользователю А.
При помощи публичного ключа пользователь А создает транзакцию и шифрует ее при помощи приватного ключа.
Пользователь Б видит, что ему на кошелек поступили 5 ВТС. Чтобы получить доступ к этим деньгам, он использует приватный ключ своего кошелька, то есть расшифровывает транзакцию, и теперь может пользоваться монетами.
Без приватного ключа авторизовать перевод невозможно, поэтому доступ к полученным цифровым деньгам есть только у владельца секретного набора символов.
Отличия приватного и публичного ключей
Каждый ключ – это набор символов, который используется для проведения транзакции. Но их функции и характеристики имеют отличия.
Уровень доступа
Публичный ключ не является секретным, он доступен всем. Если сторонние пользователи узнают открытый набор символов криптовалютного кошелька, они не смогут установить его владельца. То есть ключ хоть и публичный, но содержит в себе минимум данных.
Приватный ключ должен быть доступен только владельцу кошелька. И его нельзя никому разглашать. Другими словами, тот, кому принадлежит приватный ключ, является владельцем средств на криптовалютном счету.
Процесс шифрования
Если публичный ключ шифрует сообщение, то приватный, наоборот, расшифровывает.
Эти два набора символов работают в паре друг с другом:
Без открытого ключа отправитель не сможет запустить транзакцию.
Без приватного ключа получатель не сможет авторизировать (расшифровать) перевод.
Только использование двух ключей при работе с транзакциями позволяет обеспечить высокий уровень защиты средств.
Изменение приватных ключей (свипинг)
Когда пользователь переходит на новый кошелек, он может перевести все средства со своего старого счета. Для проведения такой транзакции потребуется приватный ключ. Как только средства будут переведены, прежний закрытый набор символов перестает быть нужным. В новом кошельке генерируется его собственный закрытый ключ.
Такая зачистка получила название sweeping – подметание. Этот процесс напоминает перенос драгоценностей из одного сейфа в другой. При этом старый сейф утилизируется за ненадобностью.
Выполнение свипинга может быть полезно в следующих ситуациях:
Появился риск взлома. Например, на ПК установлен десктопный кошелек, и на этом же компьютере была запущена подозрительная программа. Чтобы избежать кражи закрытого ключа, стоит перевести все средства на другой кошелек.
Появилась необходимость ликвидации старого кошелька. При выходе более удобного приложения можно перевести на него средства, отказавшись от устаревшего варианта.
Ключ был потерян, но пользователь помнит мнемоническую фразу. Речь идет о специальном наборе слов, введя которые можно восстановить доступ к счетам. Эти слова формируются в процессе регистрации кошелька. Переводить все средства нужно по той причине, что утерянный закрытый ключ может быть кем-то найден. Теоретически в самый неожиданный момент криптовалюту могут украсть.
Если приходится пользоваться закрытым ключом, полученным от другого человека. Когда секретную комбинацию символов знает 2 пользователя, всегда есть риск кражи средств. Лучше сразу перевести монеты на другой кошелек, закрытый ключ которого не будет известен третьим лицам.
При работе с криптовалютой нужно всегда отслеживать текущий уровень защиты кошелька.
Импортирование ключей
Помимо свипинга, можно выполнить импорт приватных ключей. В этом случае в новый кошелек переносятся не сами монеты, а именно комбинации символов – закрытый ключ.
Импорт нужен, если пользователь регистрируется в новом приложении и не хочет отказываться от старого кошелька. Для транзакций в каждом из них будет использоваться один приватный ключ. Таким образом будет создано 2 работающих кошелька с одной комбинацией символов для расшифровки транзакций и создания цифровой подписи.
Например, у пользователя может быть биткоин счет, который его устраивает. Но ему также нужен мультивалютный кошелек , чтобы работать с разными блокчейнами и криптовалютами. Тогда пользователь может установить еще один кошелек и скопировать в него закрытый ключ своего десктопного кошелька.
При импорте важно уделить внимание защите приватного ключа на новом ПО.
Как правильно хранить закрытые ключи
Выбирая способ хранения, нужно ориентироваться на ключевую задачу: оставить как можно меньше возможностей для доступа к кошельку через сеть. Только после выполнения этого условия есть смысл обращать внимание на функционал кошелька.
Злоумышленники могут украсть криптовалюту, получив доступ к содержимому жесткого диска на ПК, а также взломав аккаунт на облачном сервисе или онлайн-платформе. Чтобы такого не случилось, нужно использовать самые надежные варианты защиты.
К ним относятся 3 способа хранения приватных ключей:
Аппаратные кошельки. Эти устройства считаются более безопасными, чем десктопные кошельки, мобильные приложения и онлайн-сервисы. Они имеют вид флешки и содержат механизмы защиты данных. Для осуществления перевода аппаратный кошелек подключается к ПК. С него отправляется транзакция и там же подписывается. После зашифрованное сообщение передается в сеть. Современные аппаратные кошельки устроены так, что даже при взломе ПК мошенники не смогут получить доступ к закрытому ключу подключенного к компьютеру кошелька.
Компьютер или смартфон. Для хранения значительной суммы в криптовалюте есть смысл использовать отдельное устройство. В целях безопасности оно должно быть постоянно отключено от сети, и его можно включать только для проведения транзакций.
Бумажные носители. Это может быть блокнот или ламинированный листок с записанным закрытым ключом. Можно сделать несколько копий, чтобы при потере одной из них сохранить доступ к цифровым деньгам.
При использовании криптокошельков нужно позаботиться о создании предельно надежного хранилища закрытого ключа.
Некоторые кошельки сами генерируют закрытый ключ, который потом нужно просто запомнить. Есть специальные сервисы, позволяющие создать собственный секретный набор случайных чисел и букв. Также они дают возможность придумать и seed-фразу, при помощи которой восстанавливается доступ к кошельку.