Post
Topic
Board Идеи
Merits 4 from 1 user
Re: Авторизация на сайтах, при помощи биткоин
by
johhnyUA
on 09/08/2019, 16:12:58 UTC
⭐ Merited by zasad@ (4)
Quote
Аутентификация на основе ключевых пар и так давно уже придумана была, где то в конце 80х, ты немного опоздал.
Интересно. Дай ссылку на исходники, где используется - именно ECDSA.

А DSA и RSA видимо не подойдут?

Вот, даже на Вики в статье один из возможных способов применения - Click

Quote
Но как ты определишь, мульт ли это, или два человека, через один шлюз сидят и пишут с одного IP?

Никак, поэтому и регистрация чаще всего по другому происходит.

Вот тут глянь, передаётся ли в самой строке подписи public-key, или адрес подписанта. А то там не очень понятно как-то.

Все понятно, как я и говорил:
Идет получение публичного ключа (с приватного можно получить публичный, наоборот - нельзя)
Code:
public_key = private_key.get_verifying_key()
Собственно вот подпись сообщения, как можно заметить, аргументами здесь выступает некая строка, message
Code:
signature = private_key.sign_digest( Hash( msg_magic( [color=green]message[/color] ) ), sigencode = ecdsa.util.sigencode_string )

Дальше там указывается адрес, и в принципе все. Вот тебе более короткий и понятный код:
Code:
# SECP256k1 is the Bitcoin elliptic curve
sk = ecdsa.SigningKey.generate(curve=ecdsa.SECP256k1)
vk = sk.get_verifying_key()
sig = sk.sign(b"message")
vk.verify(sig, b"message") # True

Идет генерация закрытого ключа sk (signing key), с него получаем открытый ключ vk (verifying key), проводим подпись sig с помощью закрытого ключа а верифицируем с помощью открытого.

Открытый ключ всегда передается отдельно, сертификатом где помимо ключа указано какой алгоритм (ECDSA, RSA, DSA или что-то другое) использовался.

Скорее всего, они уже включены в подпись, но я чё-то не вижу где.

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