Публичный ключ — как проверяется подпись транзакции

Публичный ключ — открытая часть пары асимметричных ключей. Он используется для проверки цифровых подписей и/или шифрования данных на адресата. Парная ему закрытая (приватная) часть хранится в секрете и применяется для создания подписи или расшифрования. В блокчейн-сетях публичные ключи лежат в основе адресов и аутентификации транзакций, позволяя подтверждать владение без раскрытия приватного ключа.

Базовые моменты

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

Публичный ключ можно свободно распространять: по нему проверяют подписи транзакций/сообщений и (в некоторых схемах) шифруют данные адресату.

В блокчейне адрес часто является производной от публичного ключа (через хеширование/кодирование). Адрес ≠ сам публичный ключ, но тесно с ним связан.

Криптосхемы обычно строятся на эллиптических кривых (ECDSA/EdDSA) или других стойких математических задачах.

Как это работает (коротко)

Подпись → проверка. Владелец приватного ключа подписывает сообщение/транзакцию; сеть или контрагент проверяют подпись по публичному ключу. Если подпись валидна — подтверждается владение ключом без его раскрытия.

Шифрование → расшифрование. Отправитель шифрует данные на публичный ключ получателя; расшифровать сможет только владелец соответствующего приватного ключа.

В блокчейне. Узлы принимают лишь те транзакции, у которых подпись сверяется с публичным ключом/адресом получателя прав. Так достигается «владение без доверия» (trustless).

Форматы и представления

Сжатый/несжатый ключ. Для эллиптических кривых одинаково «сильны» криптографически, но имеют разный размер и вид.

Хеш-представления. Для адресов часто берут хеш публичного ключа и кодируют его в удобном формате (чек-суммы, преамбулы).

Отпечаток (fingerprint). Короткий идентификатор, полезный для сверки ключей вручную/в интерфейсах.

Связь с адресами и seed-фразой

Адрес. Как правило, это хеш/кодированное производное от публичного ключа. Это удобнее и безопаснее публиковать, чем «сырой» ключ.

Seed-фраза (seed-фраза) детерминированно порождает приватные ключи, из которых вычисляются публичные ключи и адреса. Поэтому защита сид-фразы критична.

Self-custody. При самостоятельном хранении (self-custody) вы контролируете приватные ключи; публичные ключи/адреса используете для приёма и проверки.

Практика / чек-лист

Храните приватный ключ/сид-фразу офлайн или в изолированной среде; публичный ключ допускается публиковать.

Используйте проверенные кошельки/клиенты; сверяйте адреса и отпечатки ключей при важных переводах.

Минимизируйте повторное использование адресов — это улучшает приватность и уменьшает корреляцию транзакций.

Резервируйте сид-фразу; тестируйте восстановление на «чистой» среде перед реальным инцидентом.

Для организаций — разделение ролей, мультиподпись и регламенты ротации ключей (см. управление рисками).

Плюсы и ограничения

Аспект Плюсы Минусы/ограничения
Безопасность Проверка подписи без раскрытия приватного ключа; криптографическая стойкость. Компрометация приватного ключа делает публичный ключ бесполезным — требуется ротация.
Масштабируемость Публичные ключи и адреса легко распространять, кэшировать и проверять. Приватность по умолчанию ограничена: по адресам можно анализировать граф переводов.
Совместимость Стандартизованные форматы и процедуры валидации. Разные сети/клиенты используют разные форматы адресов и ключей; нужна аккуратная конвертация.

Частые вопросы (FAQ)

Можно ли по публичному ключу получить приватный? При корректных алгоритмах и параметрах — практически невозможно с реалистичными ресурсами.

Чем публичный ключ отличается от адреса? Адрес — это, как правило, хеш/кодировочное производное от публичного ключа с чек-суммой и префиксом. Публичный ключ — криптографический объект, по которому проверяют подписи.

Нужно ли скрывать публичный ключ? Нет. Он предназначен для публикации. Скрывать нужно приватный ключ/seed-фразу.

Почему не всегда виден публичный ключ? В некоторых сетях до первой «траты» адрес публикует лишь хеш ключа. Публичный ключ раскрывается при совершении операции, что имеет последствия для приватности.

Что делать при компрометации? Немедленно переведите средства на новые адреса (новые ключи), обновите доверённые получатели и уведомьте контрагентов; пересоздайте пары ключей.

См. также

Блокчейн

Смарт-контракты

Bitcoin

Ethereum

Seed-фраза

Self-custody

Кастодиальный кошелёк

Токен

Управление рисками

Proof of Reserves

Оракулы

Task Runner