Підписи та еліптичні криві: що таке ECDSA на прикладі Біткоіна – Bits Media
Цифрові підписи – важливий елемент роботи з криптовалютами. Саме вони дозволяють відправляти транзакції, підтверджувати володіння монетами та забезпечувати безпеку даних. Одним із ключових криптографічних механізмів, що лежать в основі цифрових підписів у блокчейнах, є алгоритм ECDSA – цифровий підпис на основі еліптичних кривих.
Що таке ECDSA
ECDSA (Elliptic Curve Digital Signature Algorithm) – це алгоритм цифрового підпису, що ґрунтується на криптографії еліптичних кривих. Він дозволяє користувачеві довести право розпорядження засобами, не розкриваючи у своїй приватний (закритий) ключ.
Інакше кажучи, за допомогою цього алгоритму, використовуючи дані на еліптичних кривих, людина може створити і згодом перевірити цифровий підпис, необхідний для транзакцій. ECDSA застосовується в Біткоїні та ряді інших блокчейнів для підтвердження справжності транзакцій та захисту від підробки даних.
Технологія працює на основі асиметричного шифрування: кожен користувач має пару ключів – приватний (закритий) і публічний (відкритий). Приватний ключ використовується для створення цифрового підпису, а публічний – для його перевірки.
Асиметричне шифрування
У чому різниця симетричного та асиметричного методу шифрування? Якщо коротко, на відміну від симетричного, де для захисту інформації використовується той самий ключ (за допомогою якого шифрують і дешифрують дані), при асиметричному методі використовують два ключі (публічний і приватний). Вони пов'язані між собою математично. Саме другий метод і набув поширення в криптовалютах.
Еліптичні криві дозволяють реалізувати схему з високим ступенем криптографічної стійкості за відносно малого розміру ключів, що робить алгоритм ефективним для використання в децентралізованих мережах.
Чому використовуються еліптичні криві
У класичних криптографічних системах (наприклад, RSA) для забезпечення надійності цифрових підписів потрібні великі розміри ключів до декількох тисяч біт. Це підвищує навантаження на мережу та збільшує обсяг даних. Алгоритми на еліптичних кривих забезпечують порівнянну криптографічну міцність при значно менших ключах. Наприклад, 256-бітний ключ ECDSA забезпечує рівень безпеки, аналогічний 3072-бітному ключу RSA.
Зокрема, така відповідність підтверджується стандартами Національного інституту стандартів та технологій NIST США (National Institute of Standards and Technology).
Еліптичні криві є рівняннями виду:
y² = x³ + ax + b
Де a = 0 і b = 7 у Біткоїні.
Якщо не вдаватися до тонких математичних подробиць — у рамках криптографії використовуються певні параметри кривої. У Біткоїні застосовується конкретна еліптична крива під назвою secp256k1, визначена стандартом SECG (Standards for Efficient Cryptography Group). Її особливістю є проста структура, що сприяє високій швидкості операцій та мінімізації потенційних уразливостей. Також до переваг часто відносять широке поширення.
Цікаво, що сам творець Біткоіна, ймовірно, недарма вибрав саме secp256k1. За спогадами розробника Лазло Ханеша (Laszlo Hanyecz), який переписувався з Сатоші Накамото, той сказав співрозмовнику в особистому листуванні, що, обираючи еліптичну криву, порадився з кількома експертами. Останні запевнили Накамото, що він зробив хороший вибір.
Цікаво, що крива secp256k1 не входить до списку рекомендованих стандартів NIST, пов'язаних з АНБ (Агентством Національної Безпеки) США. Інакше кажучи, стандарт, ймовірно, не був скомпрометований щодо безпеки.
Як працює підпис ECDSA
Процес цифрового підпису транзакції за допомогою ECDSA включає кілька кроків.
По-перше , це створення пари ключів. Користувач генерує приватний ключ – випадкове число в діапазоні від 1 до n-1, де n – Порядок базової точки G на кривій. Публічний ключ обчислюється як результат множення G на приватний ключ:
Q = d × G
Де d – приватний ключ, G – базова точка, Q – публічний ключ.
По-друге , це формування підпису. Перед відправкою транзакції створюється її хеш. Наприклад, у випадку з біткоїном як алгоритм хешування виступає SHA-256. Далі генерується випадкове число k та обчислюється інформація, яка передається за підписом, але не розкриває приватний ключ користувача.
Зрештою, це перевірка підпису. Будь-який учасник мережі може перевірити автентифікацію за допомогою публічного ключа та параметрів підпису. Це забезпечує захист від фальсифікацій: змінити транзакцію, не маючи приватного ключа, неможливо.
Ось чому метод генерації приватного ключа та числа k має дуже важливе значення з погляду подальшої безпеки з цифровим підписом.
Хоча secp256k1 найчастіше асоціюється з криптовалютами, завдяки своїм властивостям крива використовується і в інших областях, що звертаються до криптографії. Наприклад, вона використовується у захищених протоколах зв'язку, у тому числі в Transport Layer Security (TLS).
ECDSA в Біткоїні
У протоколі Біткоіна алгоритм ECDSA використовується підтвердження транзакцій. Коли людина ініціює переклад, вона підписує дані транзакції своїм приватним ключем. Вузли мережі (ноди), які отримали транзакцію, за допомогою публічного ключа відправника перевіряють підпис. Якщо підпис коректний, транзакція вважається дійсним і може бути включена до блоку.
У системі UTXO (Unspent Transaction Output або невитрачених виходів), на якій базується Біткоїн, кожна транзакція вказує: які раніше отримані та невитрачені виходи (outputs) використовуються як входи (inputs). Щоб витратити певний вихід, користувач повинен надати підпис, який доводить, що він володіє відповідним приватним ключем.
У такий спосіб система перевіряє, що наданий публічний ключ дійсно відповідає адресі, яка отримала кошти, і що підпис збігається з хеш транзакції. Тільки за цих умов кошти вважатимуться витраченими.
Безпека та обмеження
Безпека ECDSA ґрунтується на складності обчислень, пов'язаних з еліптичними кривими. Фактично, знаючи публічний ключ, неможливо обчислити приватний ключ, принаймні в розумний час — за умови, що зловмиснику невідома жодна інша додаткова інформація, що повторюється. Тому особливе значення у системі має генерація безпечних випадкових чисел.
Крім того, ECDSA не забезпечує нативного мультипідпису. Кожен підпис має фіксований розмір, а під час використання мультипідпису обсяг даних збільшується. Існують і альтернативні схеми, такі як схеми Шнорра, які вирішують деякі проблеми.
Втім, сам Сатоші Накамото спочатку вирішив використати саме ECDSA, яку, на відміну від схеми Шнорра, до лютого 2008 вже можна було використовувати без патентів. Вже пізніше імплементація схеми Шнорра до Біткоїна відбулася з оновленням Taproot у 2021 році. До цього була пропозиція BIP-340 (Пропозиція щодо покращення Біткоіна).
ECDSA в інших криптопроектах
Крім Біткоіна, ECDSA використовується в багатьох інших криптовалютах, у тому числі в Litecoin, Bitcoin Cash та інших.
Однак, частина блокчейнів застосовує альтернативні криптографічні схеми. Наприклад, анонімна криптовалюта Monero використовує іншу криву для генерації пари ключів – edwards25519. Вона пов'язана із схемою підписів Ed25519.
До тієї ж кривої, що пов'язана зі схемою підпису Ed25519, звертається і криптовалюта Cardano.
Вибір криптографічної схеми зазвичай залежить від вимог розробників до продуктивності, до рівня безпеки, наявності функцій на кшталт мультипідписів, до вирішення пов'язаних з анонімними транзакціями завдань та іншими умовами.
Висновок
ECDSA – це фундаментальна криптографічна технологія, що забезпечує безпеку цифрових підписів у блокчейнах, включаючи Біткоїн. Вона дозволяє користувачеві підтверджувати володіння коштами без розкриття приватного ключа та забезпечує неможливість підробки транзакцій. За рахунок використання еліптичних кривих досягається високий ступінь стійкості при компактних розмірах ключів та підписів. Незважаючи на деякі обмеження, ECDSA залишається однією з найпоширеніших криптографічних основ у світі цифрових валют.
Источник: bits.media