Що таке публічний ключ у криптовалютах? Пояснення ключів та підписів

BTC
ETH
цифровий підписадреса гаманцякриптографіясамозберіганняприватний ключпублічний ключsecp256k1
1 годину томуДжерело: crypto.news
Що таке публічний ключ у криптовалютах? Пояснення ключів та підписів

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

Підсумок

  • Публічний ключ — це велике число, отримане математично з приватного ключа за допомогою множення на еліптичній кривій, односторонньої функції, яку швидко обчислити в прямому напрямку, але практично неможливо обернути.
  • Bitcoin та Ethereum використовують еліптичну криву secp256k1, яка генерує 256-бітні приватні ключі та 512-бітні нестиснуті публічні ключі (або 257-бітні стиснуті публічні ключі).
  • Адреса гаманця — це не те саме, що публічний ключ; адреса — це коротша, хешована версія публічного ключа, призначена для легшого обміну та стійкіша до деяких теоретичних атак.
  • Приватний ключ підписує транзакції, публічний ключ перевіряє ці підписи, а адреса отримує кошти. Втрата приватного ключа означає постійну втрату доступу; розкриття публічного ключа або адреси не несе жодного ризику для безпеки коштів.
  • Вразливість у прошивці Coldcard у липні 2026 року, яка виявила слабку генерацію приватних ключів, що вплинуло на біткоїни на суму 116 мільйонів доларів, підкреслює, чому правильна генерація та зберігання ключів залишаються найважливішими аспектами самозберігання.

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

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

Як працюють пари ключів

Кожен криптовалютний гаманець побудований на парі ключів: один приватний ключ і один публічний ключ. Приватний ключ — це випадково згенероване число, зазвичай довжиною 256 бітів, що означає, що воно є одним із приблизно 10 у степені 77 можливих значень. Для контексту, оцінювана кількість атомів у спостережуваному Всесвіті становить близько 10 у степені 80. Простір ключів достатньо великий, щоб вгадування конкретного приватного ключа методом грубої сили не було практичною проблемою за сучасних або передбачуваних технологій.

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

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

Публічний ключ проти адреси гаманця

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

У Bitcoin процес відбувається наступним чином. Нестиснутий публічний ключ довжиною 512 бітів (або стиснутий публічний ключ довжиною 257 бітів) пропускається через SHA-256, а потім через RIPEMD-160, що дає 160-бітний хеш. Додається байт версії, додається контрольна сума, і результат кодується у форматі Base58Check. Кінцевим результатом є знайома адреса Bitcoin, яка починається з 1, 3 або bc1.

В Ethereum процес простіший. Публічний ключ довжиною 512 бітів пропускається через Keccak-256 (варіант SHA-3), і останні 20 байтів (160 бітів) хешу стають адресою. Додається префікс "0x" та необов'язкова контрольна сума EIP-55, щоб отримати знайому адресу Ethereum.

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

Як цифрові підписи підтверджують право власності

Коли ви надсилаєте криптовалюту, ви не переміщуєте монети з одного місця в інше. Ви створюєте повідомлення, яке говорить: «Я авторизую переказ суми X з моєї адреси цьому одержувачу», і підписуєте це повідомлення своїм приватним ключем. Підпис доводить, що особа, яка створила повідомлення, контролює приватний ключ, пов'язаний з адресою відправника, не розкриваючи сам приватний ключ.

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

Ось чому втрата приватного ключа є катастрофічною. Відсутність приватного ключа означає неможливість створювати дійсні підписи, а отже, неможливість авторизувати транзакції з цієї адреси. Кошти залишаються в блокчейні, видимі для всіх, але назавжди недоступні. Не існує механізму відновлення «забув пароль», оскільки немає центрального органу, який зберігає резервну копію.

Ланцюжок генерації ключів

У сучасних гаманцях окремі приватні ключі не генеруються незалежно. Натомість єдине головне зерно (master seed) створює всі ключі в гаманці через детермінований процес, визначений BIP-32 (ієрархічні детерміновані гаманці) та BIP-39 (мнемонічні фрази відновлення).

Процес починається з ентропії, джерела випадковості. Програмне забезпечення гаманця або апаратний пристрій генерує випадкове число, зазвичай 128 або 256 біт. Ця ентропія кодується як мнемонічна фраза з 12 або 24 слів, взятих зі стандартизованого списку з 2048 слів. Мнемонічна фраза, у поєднанні з необов'язковою парольною фразою, пропускається через функцію похідних ключів (PBKDF2) для отримання 512-бітного головного зерна.

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

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

Стиснуті та нестиснуті публічні ключі

Раннє програмне забезпечення Bitcoin використовувало нестиснуті публічні ключі, які включають як координати x, так і y точки на еліптичній кривій. Нестиснутий публічний ключ має 65 байтів: 1-байтовий префікс (0x04), за яким ідуть 32 байти для координати x і 32 байти для координати y.

Оскільки рівняння еліптичної кривої означає, що для будь-якої заданої координати x існують лише два можливі значення y (одне парне, одне непарне), достатньо зберігати лише координату x та один біт, що вказує, чи є y парним чи непарним. Це створює стиснутий публічний ключ розміром 33 байти: 1-байтовий префікс (0x02 для парного y, 0x03 для непарного y), за яким ідуть 32 байти для координати x.

Стиснуті ключі економлять місце в транзакціях, що зменшує комісії. З 2012 року більшість програмного забезпечення Bitcoin за замовчуванням використовує стиснуті публічні ключі. Ethereum використовує нестиснуті публічні ключі внутрішньо, але видаляє байт префікса при виведенні адреси, використовуючи лише 64-байтові значення x та y.

Різниця має значення для сумісності. Стиснутий і нестиснутий публічні ключі, отримані з одного приватного ключа, створюють різні адреси в Bitcoin. Імпорт приватного ключа в гаманець, який використовує інший формат стиснення, ніж оригінальний гаманець, створить іншу адресу, що може викликати плутанину, якщо кошти були надіслані на адресу іншого формату.

Реальні випадки порушення безпеки ключів

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

У липні 2026 року дослідники виявили, що апаратний гаманець Coldcard протягом п'яти років генерував слабкі приватні ключі. Прапорець збірки у прошивці вказував пристрою пропустити спеціалізований чіп апаратного випадковості, що призводило до передбачуваної ентропії. Зловмисник зворотною розробкою виявив цю слабкість і почав спустошувати гаманці 30 липня, вивівши приблизно 116 мільйонів доларів у біткоїнах до того, як вразливість була публічно розкрита.

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

Інші історичні інциденти включають вразливість Android SecureRandom у 2013 році, яка спричинила генерацію дублікатів випадкових чисел у багатьох біткоїн-гаманцях, що дозволило зловмисникам обчислювати приватні ключі з підписів транзакцій. Генератор ваніті-адрес Profanity був використаний у вересні 2022 року, коли дослідники виявили, що його генерація ключів використовувала 32-бітне зерно, зменшуючи ефективний простір ключів з 2 у степені 256 до 2 у степені 32, приблизно 4 мільярди можливостей, які можна було підібрати за хвилини.

Публічні ключі та смарт-контракти

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

Коли користувач викликає функцію смарт-контракту, транзакція включає цифровий підпис, створений за допомогою приватного ключа користувача. Віртуальна машина Ethereum перевіряє цей підпис проти публічного ключа відправника перед виконанням функції. Саме так смарт-контракт знає, що особа, яка викликає «переказати 100 USDC на адресу X», насправді є власником токенів, що переказуються.

Смарт-контрактні гаманці (гаманці з абстракцією рахунків, впроваджені ERC-4337) можуть змінювати цю модель. Замість покладання лише на один приватний ключ, смарт-контрактний гаманець може вимагати кілька підписів, біометричну автентифікацію, соціальне відновлення або ліміти витрат, що забезпечуються кодом. Публічний ключ залишається частиною системи, але правила, що визначають дійсну авторизацію, стають програмованими.

Кастодіальне та самокастодіальне управління ключами

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

При самокастодіальному зберіганні користувач володіє приватним ключем (або seed-фразою, яка його генерує) і несе повну відповідальність за його безпеку. Публічний ключ та адреса генеруються локально, і жодна третя сторона не має доступу до можливості підпису.

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

Багатопідписні схеми розподіляють різницю, розподіляючи управління ключами між кількома сторонами або пристроями. Схема 2-з-3 multisig вимагає будь-яких двох з трьох приватних ключів для підпису транзакції, тому втрата одного ключа не призводить до постійної втрати, а компрометація одного ключа не дає зловмиснику контролю.

Що не охоплює ця стаття

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

Практичні перевірки для захисту ваших ключів

Ніколи не діліться своїм приватним ключем або seed-фразою. Жоден легітимний сервіс, агент підтримки або airdrop ніколи не попросить їх. Будь-який запит цих облікових даних є шахрайством без винятку.

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

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

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

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

Що таке відкритий ключ у криптовалюті?

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

Чи є відкритий ключ тим самим, що й адреса гаманця?

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

Чи може хтось вкрасти мою криптовалюту, якщо знає мій відкритий ключ?

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

Що станеться, якщо я втрачу свій закритий ключ?

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

Яка різниця між відкритим ключем і закритим ключем?

Закритий ключ — це випадково згенероване секретне число, яке використовується для підпису транзакцій. Відкритий ключ виводиться із закритого ключа і використовується для перевірки підписів. Закритий ключ має залишатися секретним; відкритий ключ можна вільно поширювати.

Як сид-фраза пов'язана з відкритими та закритими ключами?

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

Яку еліптичну криву використовують Bitcoin та Ethereum?

І Bitcoin, і Ethereum використовують еліптичну криву secp256k1. Вона створює 256-бітні закриті ключі та 512-бітні нестиснуті відкриті ключі (або 257-бітні стиснуті відкриті ключі). Крива була обрана за її ефективність та добре вивчені властивості безпеки.

Чи можуть квантові комп'ютери зламати криптографію з відкритим ключем?

Теоретично, достатньо потужний квантовий комп'ютер, що виконує алгоритм Шора, міг би вивести закритий ключ із відкритого. Однак станом на 2026 рік такого квантового комп'ютера не існує. Адреси, які ніколи не використовувалися для відправлення транзакцій, не розкривали свій відкритий ключ у блокчейні, що додає рівень захисту. Постквантові схеми підпису досліджуються як майбутня заміна.