Перейти к основному контенту

Пара ключей — ETH.BUILD

Демонстрация пар открытых и приватных ключей с использованием образовательного инструмента ETH.BUILD. Узнайте, как криптографические пары ключей защищают аккаунты Эфириума и позволяют подписывать транзакции.

Date published: 14 января 2021 г.

Руководство от Остина Гриффита, демонстрирующее работу пар открытых и приватных ключей с использованием инструмента визуального программирования ETH.BUILD. В нем рассматриваются генерация приватного ключа, получение открытого ключа, подписание сообщений и восстановление подписи.

Эта расшифровка является доступной копией оригинальной расшифровки видео (opens in a new tab), опубликованной Остином Гриффитом. Она была слегка отредактирована для удобства чтения.

Приватный ключ (0:00)

В первом видео мы использовали хеш, и хеши будут важны в дальнейшем. Но следующая по важности деталь — это пара ключей. Самая важная часть пары ключей — это приватный ключ. Давайте сгенерируем его: по сути, это случайная 64-значная шестнадцатеричная строка, такого же размера, как и хеш, с которым мы только что работали.

Вы начинаете с него как с вашего приватного ключа, а затем с помощью криптографии на эллиптических кривых (почитайте об этом в Википедии в качестве дополнительного задания) мы получаем открытый ключ. Итак, теперь у нас есть приватный ключ и открытый ключ. Мы только что сгенерировали приватный ключ из ниоткуда, а открытый ключ дает нам адрес. Это то, куда люди могут отправлять деньги. Когда кто-то говорит «отправьте на мой адрес Эфириума», это именно он.

Если бы я хотел создать аккаунт в Wells Fargo, мне пришлось бы поехать в банк и предоставить им кучу информации. Это заняло бы некоторое время. Но чтобы сгенерировать аккаунт в такой криптографической системе, где я могу отправлять и получать деньги, я просто генерирую этот приватный ключ. Этот 64-значный шестнадцатеричный приватный ключ является основой для всего остального.

Подписание и восстановление сообщений (1:54)

У этой пары ключей есть одно очень интересное свойство, которое нам стоит изучить, — это подписание и восстановление сообщений. По сути, вы берете свой приватный ключ и используете его для подписания какого-либо сообщения. Давайте напечатаем сообщение: «the bear is sticky with honey».

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

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

Восстановление адреса подписанта (3:17)

Позвольте мне показать, как это работает. Мы используем метод «восстановления» (recover). Нам нужны два входных параметра: сообщение — «the bear is sticky with honey» — и подпись. На выходе мы получаем адрес, который использовался для подписания. Мы можем визуально убедиться, что аккаунт подписал это сообщение, используя иконки Blockie.

Подделать это невозможно. Если кто-то изменит хотя бы одно слово — например, заменит «bear» (медведь) на «badger» (барсук) — изменится все. Даже с той же подписью другое сообщение выдаст другой адрес, а не правильный.

Это сообщение невозможно подделать. Мы могли бы добавить туда временную метку — сказать «в этот день я предсказываю, что что-то произойдет», подписать его, опубликовать подпись и сообщение, и любой человек до конца времен сможет математически доказать, что вы подписали это сообщение именно в то время.

Ключевое свойство пары ключей (4:58)

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

  • Приватный ключ + сообщение = подпись
  • Подпись + сообщение = открытый адрес

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

Была ли эта страница полезной?