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

1. Исправление первой части

Я предожил использовать резолвинг имени на хеш для проверки принадлежности ключей домену. "Aккаунтом в эфире можно считать пару публичного и приватного ключей ECDSA, а хеш публичного ключа это адрес аккаунта". "Из сигнатуры и хеша данных мы получаем публичный ключ, считаем хеш публичного ключа и сравниваем его с тем хешем который получили из ENS для ens.eth." Но в данном случае несколько юзеров могут настроить резолвинг своих имен на хеш нашего публичного ключа. Это решается обратным резолвингом, т.е. ip адрес на домен как в DNS. Будет связка один хеш - одно имя. Но если несколько имен могут резолвится на один хеш, то что тогда возвращать? В ENS есть понятия резолвинга имени на хеш и владением имени - т.е. тот адрес, который решает на какой хеш резолвится домен. Алиса может быть владельцем домена example.eth, но получим мы адрес Боба при вводе example.eth в кошельке при переводе(потому что так решила Алиса и она может это изменить).

У Алисы есть primary name. Primary name ссылается только на адрес, который влаеет этим доменом и именно это имя будет возвращено при обратном резолвинге.

2. Proof-of-Concept

В качестве примера написал небольшую программу(github) для подписи и проверки сигнатуры. На главной - описание того, что делает эта программа и 2 кнопки - sign(подпись) и check(проверка подписи).

Sign - несколько полей ввода, Private Key or Mnemonic - приватный ключ для шифрования хеша файла, т.е. подписи(проверял только приватный ключ). File path - путь до файла, который подписывваем, Signature - в это поле выводится сама подпись(или сигнатура).

Check - также несколько полей ввода, URL Ethereum node - адрес ноды, можно указать публичную ноду Ethereum(через нее запрашивается имя через обратный резолвинг), Domain - домен, подпись которого хотим проверить(будет сравниваться запрашиваемый домен с тем, который указали). File path - путь до файла, подпись которого проверяем. Signature - сама подпись. Возможно стоило бы добавить вывод домена, который подписал этот файл, если не известно имя подписавшего(думаю добавлю позже).

3. Заключение

Можете проверить подписи txt файлов с сообщениями one и two. Подписи файлов:

  1. aa2172e851c1a0fa3a8fe32ca804df52bc1d0d124fe4a88cbbc195b84105b4bf7543f0758c4acbafa74915100ab4bb229ad4c3e662cf08fa68e3dda0bfb9486c00

  2. ba6a7d07f05a026664d27ec60864cc192c71f3b9aa30df059c8b0f670d2d64ca27498e79347f21dc5fcc79ae838794bd417906514d94887e3931d9d3fb0a16f200


Домен, который подписал - signature-escrow-test.eth. Публичную ноду ethereum может предоставить infura.

Комментарии (2)


  1. Katenk_aa
    01.11.2023 12:42
    +1

    дайте ссылочку на гит пж