Author

Topic: Вопрос про публичные и приватные ключи (Read 1396 times)

newbie
Activity: 9
Merit: 0
Из подписи и сообщения восстанавливается публичный ключ.
А где прочитать алгоритм с описанием как это происходит.
legendary
Activity: 1400
Merit: 1000
Из подписи и сообщения восстанавливается публичный ключ.
Quote
It's also very interesting how that function works. Verifying a signature in public-key crypto requires the public key, signature, and message, right? But if you look at that sign message screenshot, you'll see no place to put/get the public key. (Bitcoin addresses are public key hashes -- not usable as public keys.) So how does Bitcoin verify the signature without the public key? It uses a unique property of ECDSA which allows you to calculate the public key from the message and signature. Bitcoin is, AFAIK, the only program that uses this property of ECDSA.
newbie
Activity: 9
Merit: 0
Неужели никто не знает?
newbie
Activity: 9
Merit: 0
Итак, открываю bitcoin core. Смотрю пункт меню "Проверить сообщение". Надо ввести адрес, сообщение и подпись.

Подпись имеет длину 88-90 символов, но это base64, получается что в оригинале 64 байта. Правильно, ибо подпись для ECDSA-256 имеет размер 512 бит или 64 байта. Всё сходится. Для того, чтобы проверить подпись надо знать публичный ключ. Bitcoin-адрес это не публичный ключ, это сего лишь специально вычисленный хэш, по этому хешу восстановить публичный ключ невозможно.

Вопрос: откуда программа знает публичный ключ? Как она его проверяет? У меня была гипотеза, что этот ключ она находит в блокчейне, но тут загвоздка: а если этот адрес вообще не фигурирует в блокчейне и не было ни одной транзакции с ним?
Jump to: