Пара ключів — ETH.BUILD
Демонстрація пар відкритого та приватного ключів за допомогою освітнього інструменту ETH.BUILD. Дізнайтеся, як криптографічні пари ключів захищають акаунти Етеріуму та дозволяють підписання транзакцій.
Date published: 14 січня 2021 р.
Посібник від Остіна Гріффіта, який демонструє, як працюють пари відкритого та приватного ключів за допомогою інструменту візуального програмування ETH.BUILD, охоплюючи генерацію приватного ключа, отримання відкритого ключа, підписання повідомлень та відновлення підпису.
Ця стенограма є доступною копією оригінальної стенограми відео (opens in a new tab), опублікованої Остіном Гріффітом. Її було трохи відредаговано для зручності читання.
Приватний ключ (0:00)
У першому відео ми використовували хеш, і хеші будуть важливими надалі. Але наступним найважливішим елементом є пара ключів. Найважливішою частиною пари ключів є приватний ключ. Давайте згенеруємо його — по суті, це випадковий 64-символьний шістнадцятковий рядок, такого ж розміру, як і хеш, з яким ми щойно працювали.
Ви починаєте з нього як зі свого приватного ключа, а потім за допомогою криптографії на основі еліптичних кривих — можете почитати про це у Вікіпедії як додаткове завдання — ми отримуємо відкритий ключ. Отже, тепер у нас є приватний ключ і відкритий ключ. Ми щойно згенерували приватний ключ з нічого, а відкритий ключ дає нам адресу. Це те місце, куди люди можуть фактично надсилати гроші. Коли хтось каже «надішліть на мою адресу Етеріуму», це саме воно.
Якби я хотів створити акаунт у Wells Fargo, мені довелося б поїхати до банку і надати їм купу інформації. Це зайняло б деякий час. Але щоб згенерувати акаунт у такій криптографічній системі, де я можу надсилати та отримувати гроші, я просто генерую цей приватний ключ. Цей 64-символьний шістнадцятковий приватний ключ є основою для всього іншого.
Підписання та відновлення повідомлень (1:54)
У цієї пари ключів є дуже цікава властивість, яку ми повинні дослідити, і це підписання та відновлення повідомлень. По суті, ви берете свій приватний ключ і використовуєте його для підписання якогось повідомлення. Давайте напишемо повідомлення — «ведмідь липкий від меду».
Ми вставляємо це як наше повідомлення, і з увімкненим автопідписанням ми отримуємо підпис. Подібно до хеша, наш підпис — це, по суті, взяття повідомлення та нашого приватного ключа і підписання чогось. Те, що ми отримуємо в результаті, є підписом.
Я можу надіслати це у світ — я міг би надіслати це публічно всім — цей рядок підпису разом із повідомленням. Що будь-хто може зробити за допомогою математики, так це перевірити, що саме я його підписав.
Відновлення адреси підписанта (3:17)
Дозвольте мені показати, як це працює. Ми використовуємо метод «відновлення» (recover). Нам потрібні два вхідні дані: повідомлення — «ведмідь липкий від меду» — і підпис. На виході ми отримуємо адресу, яка була використана для його підписання. Ми можемо візуально побачити, що акаунт підписав це повідомлення, використовуючи іконки Blockie.
Це неможливо підробити. Якщо хтось змінить хоча б одне слово — наприклад, замінить «ведмідь» на «борсук» — все зміниться. Навіть з тим самим підписом, інше повідомлення видасть іншу адресу, а не правильну.
Це повідомлення неможливо змінити. Ми могли б додати туди часову мітку — ми могли б сказати «у цей день я передбачаю, що щось станеться», підписати його, опублікувати підпис і повідомлення, і будь-хто до кінця часів зможе математично довести, що ви підписали це повідомлення саме в той час.
Ключова властивість пари ключів (4:58)
Це ключова властивість пари ключів. Пара ключів, згенерована лише з 64-символьного шістнадцяткового випадкового рядка, може бути використана для підписання повідомлення, а потім це повідомлення може бути відновлено.
- Приватний ключ + повідомлення = підпис
- Підпис + повідомлення = публічна адреса
Ми можемо підписувати дані нашим приватним ключем, і люди можуть довести, що це саме ми їх підписали. Це буде важливою частиною для наступного кроку.