Bitcoin цифровий підпис

Метод цифрового підпису активно використовується в банківській сфері, при ідентифікації особистості.

В системі Біткоїн, передача права власності від однієї біткоїн адреси, до іншої біткоїн адреси так само заснована на методі цифрового підпису.

Що таке цифровий підпис?

Цифровий підпис – це строка, яка пов’язана з інформаційним блоком і використовується для перевірки автентичності інформації в інформаційному блоці.

Це означає, що будь-яка зміна в тексті інформаційного блоку, підписаного цифровим підписом, буде виявлена шляхом співвідношення інформаційного блоку з цифровим підписом.

Метод цифрового підпису використовує дві пов’язані між собою строки – ключі.

Приватний ключ – це строка, яка є вашою особистою таємницею, тільки ви знаєте цю строку. Нікому не можна передавати ваш приватний ключ. За допомогою приватного ключа створюється строка цифрового підпису, тобто, приватним ключем кодується інформаційний блок.

Публічний ключ – це строка, яка генерується з приватного ключа. Публічний ключ не є секретною інформацією, і його можна показувати іншим. Публічний ключ потрібен для перевірки строки цифрового підпису, тобто використовуючи публічний ключ, ви отримуєте відповідь на питання: “Чи дійсно, даний інформаційний блок є абсолютною копією інформаційного блоку який використовували для створення цифрового підпису з приватним ключем, який є парою до даного публічного ключа?”.

З публічного ключа не можна отримати приватний ключ.

Цифровий підпис створюється за допомогою спеціального алгоритму, виконання якого, зазвичай запрограмовано і являє собою спеціальний програмний код.

Вхідними даними для створення цифрового підпису є:

  • інформаційний блок (наприклад, текст документу – договір, домовленість, перелік обов’язків);
  • секретний ключ.

Використовуючи інформаційний блок і секретний ключ, програма створює цифровий підпис – текстову строку певної довжини, цифровий відбиток інформаційного блоку і секретного ключа.

Створений цифровий підпис обов’язково додається до інформаційного блоку.

Перевірка цифрового підпису здійснюється особою, яка отримує інформаційний блок разом з цифровим підписом, з використанням публічного ключа відправника. Для перевірки цифрового підпису, використовують запрограмований алгоритм, якому передають вхідні дані:

  • публічний ключ;
  • інформаційний блок;
  • цифровий підпис інформаційного блоку (зроблений приватним ключем, який є парою до наданого публічного ключа).

Вихідними даними є відповідь – успіх (якщо інформаційний блок є автентичним разом з публічним ключем та цифровим підписом) або невдача (якщо інформаційний блок було змінено, або публічний ключ чи цифровий підпис).

За наведеним механізмом відбувається процес цифрового підпису і його перевірки в банківській сфері і в системі Біткоїн.

В системі Біткоїн, інформаційним блоком є транзакція (про транзакції більш докладно читайте у відповідному розділі сайту), в якій вказано, що біткоїн адреса (власником якої ви є), передає право користування на певну суму біткоїнів іншій біткоїн адресі, цей інформаційний блок підписується приватним ключем від біткоїн адреси (з якої ви відправляєте біткоїни).

Використовуючи біткоїн адресу (це закодований публічний ключ) і приватний ключ, можна створювати цифровий підпис до текстових інформаційних блоків. Таку можливість надають деякі мобільні біткоїн гаманці, наприклад Mycelium і Coinomi. Використовуючи функцію цифрового підпису в мобільних біткоїн гаманцях, ви можете створювати угоди які передбачають виконання певних дій з оплатою на біткоїн адресу, яка підписана приватним ключем від зазначеної в угоді біткоїн адреси. Така угода доводить, що людина, яка підписала текстове повідомлення, є власником і контролює зазначену в угоді біткоїн адресу.

Наприклад, маємо угоду купівлі продажу нерухомості за біткоїни, в сумі 2,1000000 BTC (bitcoin).

  1. Покупець визначається з біткоїн адресою, з якої буде оплачувати зазначену суму і заздалегідь поповнює баланс цієї біткоїн адреси на визначену суму;
  2. Продавець визначає біткоїн адресу, на яку буде відправлено транзакцію оплати за нерухоме майно;
  3. Нотаріус, як гарант угоди і реєстратор зміни прав власності на нерухоме майно в державній системі, надає покупцю і продавцю будь-яку унікальну строку (наприклад реєстраційний номер угоди купівлі продажу). Також, можна додати і іншу інформацію про угоду, яка відбувається, в інформаційний блок для створення цифрового підпису, наприклад ПІБ покупця/продавця, характеристики нерухомого майна, адресу, суму угоди тощо.
  4. Продавець/покупець, кожен окремо, підписує інформаційний блок угоди своїм приватним ключем, який є парою до біткоїн адрес через які здійснюватиметься розрахунок. І надають нотаріусу отримані цифрові підписи, а також біткоїн адреси.
  5. Нотаріус перевіряє автентичність наданих цифрових підписів покупця і продавця, чим підтверджується факт, що саме вони є власниками біткоїн адрес, які прийматимуть участь в здійсненні угоди купівлі продажу нерухомого майна. Здійснює угоду – контролює як гарант угоди, переказ біткоїнів між зазначеними біткоїн-адресами. Реєструє зміну права власності на нерухоме майно. (Звісно, всі податки, збори, сума в угоді для реєстрації в державній системі, вказуються в гривнях, чисто формально).

Угода створена таким чином повністю виключає претензії сторін щодо здійснення оплати. Нотаріус матиме цифрові підписи, які підтверджують приналежність біткоїн адрес певним власникам; факт здійснення платежу (переказ визначеної суми в біткоїнах – хеш транзакції) записується в блокчейн системи Біткоїн і його не може бути змінено.

Подібний процес купівлі/продажу здійснюється за долари чи євро, проте використання біткоїнів замість доларів та євро є набагато безпечнішим і надійнішим:

  • Виключається можливість претензій сторін по оплаті (є відповідні цифрові підписи сторін і переказ біткоїнів на момент угоди зафіксовано в блокчейні системи Біткоїн);
  • Виключається ситуація з фальшивими чи пошкодженими купюрами (вам не треба годину тикати кожну купюру під УФ-лампу приладу для перевірки купюр, а також відкидати пошкоджені купюри і вимагати їм заміну – фальшивих чи пошкоджених біткоїнів не існує);
  • Виключається можливість пограбування після угоди. Ви приймаєте велику суму на імпортовану біткоїн адресу, без можливості керування біткоїнами (ваш приватний ключ схований в надійному місці), а отже просто фізично відібрати у вас біткоїни неможливо;
  • Комісія за переказ біткоїнів мінімальна. Маючи біткоїни, ви можете відправити їх в будь-яку точку світу, перевезти будь-яку суму через кордон будь-якої країни без будь-яких проблем.

Як створити цифровий підпис текстового повідомлення використовуючи мобільний біткоїн гаманець?

Для прикладу, будемо використовувати мобільні біткоїн гаманці Coinomi (покупець) і Mycelium (продавець) (гаманці Coinomi і Mycelium мають бути встановлені на ваші смартфони) в процесі створення і підписання угоди подібної до описаної вище.

1. Визначаємо біткоїн адреси покупця і продавця товару:
Покупець (з цієї біткоїн адреси буде здійснено оплату за товар, отже на ній повинна бути сума біткоїнів не менша ніж зазначена в угоді): bc1q56rtwn22ufxkvwj02356heqkwkyunvxpqsmkex
Продавець (на цю адресу буде перераховано зазначену в угоді суму в біткоїнах): bc1qah9l6keyw3whvayfrqe00xa5c9c2cghv8rehkv

2. Створюємо текст угоди для цифрового підпису (англійською мовою):
Agreement for the purchase of real estate from 02/06/2020

We, the undersigned, Mykolay Ivanovych Samoylenko (seller) and Serhiy Okhnymovych Hnatyuk (buyer) have concluded this agreement on the following:

  1. Mykolay Samoylenko sold, and Sergei Hnatyuk bought real estate in the city of Kyiv, Grushevskogo Street, house 5.
  2. The seller receives (bitcoin address: bc1qah9l6keyw3whvayfrqe00xa5c9c2cghv8rehkv) from the buyer (bitcoin address: bc1q56rtwn22ufxkvwj02356heqkwkyunvxpqsmkex) a payment in the amount of 0.00210000 BTC.

3. Відправляємо текст угоди для цифрового підпису продавцю/покупцю:
Цифровий підпис продавця:
ICX8qVWrl4Ff9BFsUoYRPIItYp/h13rrXq/1/DR+yltrH3yUSDqlm9cmf54KOGCC8bPP4gU87kEvjISVzg/L9kA=
Цифровий підпис покупця:
HzKFMU661VrjvSbUBpa57RLAs0ZWmHBzduKusqOnxx85eGSs/8coyAZoNGvGuP/dedRnlGVo24iG1zzIDMycsUo=

4. Нотаріус перевіряє валідність цифрових підписів (наприклад за допомогою мобільного біткоїн гаманця Mycelium):
Продавець:

-----BEGIN BITCOIN SIGNED MESSAGE-----
Agreement for the purchase of real estate from 02/06/2020
We, the undersigned, Mykolay Ivanovych Samoylenko (seller) and Serhiy Okhnymovych Hnatyuk (buyer) have concluded this agreement on the following:
1. Mykolay Samoylenko sold, and Sergei Hnatyuk bought real estate in the city of Kyiv, Grushevskogo Street, house 5.
2. The seller receives (bitcoin address: bc1qah9l6keyw3whvayfrqe00xa5c9c2cghv8rehkv) from the buyer (bitcoin address: bc1q56rtwn22ufxkvwj02356heqkwkyunvxpqsmkex) a payment in the amount of 0.00210000 BTC.
-----BEGIN BITCOIN SIGNATURE-----
Version: Bitcoin-qt (1.0)
Address: bc1qah9l6keyw3whvayfrqe00xa5c9c2cghv8rehkv

ICX8qVWrl4Ff9BFsUoYRPIItYp/h13rrXq/1/DR+yltrH3yUSDqlm9cmf54KOGCC8bPP4gU87kEvjISVzg/L9kA=
-----END BITCOIN SIGNATURE-----

Покупець:

-----BEGIN BITCOIN SIGNED MESSAGE-----
Agreement for the purchase of real estate from 02/06/2020
We, the undersigned, Mykolay Ivanovych Samoylenko (seller) and Serhiy Okhnymovych Hnatyuk (buyer) have concluded this agreement on the following:
1. Mykolay Samoylenko sold, and Sergei Hnatyuk bought real estate in the city of Kyiv, Grushevskogo Street, house 5.
2. The seller receives (bitcoin address: bc1qah9l6keyw3whvayfrqe00xa5c9c2cghv8rehkv) from the buyer (bitcoin address: bc1q56rtwn22ufxkvwj02356heqkwkyunvxpqsmkex) a payment in the amount of 0.00210000 BTC.
-----BEGIN BITCOIN SIGNATURE-----
Version: Bitcoin-qt (1.0)
Address: bc1q56rtwn22ufxkvwj02356heqkwkyunvxpqsmkex

HzKFMU661VrjvSbUBpa57RLAs0ZWmHBzduKusqOnxx85eGSs/8coyAZoNGvGuP/dedRnlGVo24iG1zzIDMycsUo=
-----END BITCOIN SIGNATURE-----

Скопіювавши наведений текст Продавця і Покупця, нотаріус перевіряє його на валідність:

Якщо валідність цифрових підписів підтверджено успішно, це означатиме, що Продавець і Покупець є власниками зазначених в угоді біткоїн адрес і можуть здійснити розрахунок по угоді.

Після розрахунку по угоді, коли Покупець відправив Продавцю оплату в розмірі 0.00210000 BTC і транзакція отримала підтвердження в мережі Біткоїн, Нотаріус записує хеш транзакції (5a17915eebad0e9820e6ece360fc25f035cf2328efe7f495cffdd00ae49dae2b) до угод які мають цифрові підписи покупця і продавця, і таким чином засвідчує, що оплата відбулася. Оформлює і реєструє документи.

Оскільки блокчейн біткоїна відкритий для перегляду, можна перевірити наявність транзакції за її хешем в будь-який час.

Ніяких суперечливих питань про нездійснений платіж, чи невідповідність суми оплати, чи виявлення фальшивих біткоїнів бути не може.

Крім створення угод, використовуючи цифровий підпис можна підтвердити, що особа є власником біткоїн рахунку, який має необхідну суму біткоїнів. Це корисно, наприклад, при створенні угоди обміну криптовалют, або при створенні угоди на виконання робіт і оплати певної суми на певну біткоїн-адресу, з метою виключити конфліктні ситуації з питань оплати за виконану роботу.

Якщо у вас є питання стосовно створення цифрового підпису в системі біткоїн, і вам потрібна консультаційна допомога – звертайтеся в Телеграм.

Якщо ви знаєте інші приклади використання цифрового підпису, напишіть ваш варіант в коментарях.