ГЛОССАРИЙ · ОСНОВЫ КРИПТОВАЛЮТ

Публичный ключ криптокошелька

Публичный ключ — криптографический код, из которого генерируется адрес криптокошелька. Его можно свободно передавать другим людям для получения переводов. В отличие от приватного ключа, публичный ключ не даёт доступа к средствам. Пара «публичный плюс приватный ключ» — основа безопасности в блокчейне.

Асимметричная криптография: как генерируются ключи

Вся система безопасности криптовалютных кошельков построена на математике асимметричной криптографии с открытым ключом. В основе Bitcoin и большинства других блокчейнов лежит алгоритм ECDSA (Elliptic Curve Digital Signature Algorithm), использующий эллиптическую кривую secp256k1. Ethereum использует ту же кривую.

Процесс генерации ключей выглядит так. Сначала генерируется приватный ключ — случайное 256-битное число. Из него путем умножения на генераторную точку эллиптической кривой вычисляется публичный ключ. Это одностороннее преобразование: зная публичный ключ, математически невозможно восстановить приватный за разумное время. Публичный ключ затем проходит дополнительное хеширование (SHA-256 и RIPEMD-160 в Bitcoin), в результате чего получается адрес кошелька — более короткая строка, знакомая вам как начинающаяся с «1», «3» или «bc1» для Bitcoin, или «0x» для Ethereum.

На практике большинство современных кошельков работают с seed-фразой (мнемонической фразой из 12 или 24 слов), из которой по стандарту BIP-39 детерминированно генерируются сотни пар ключей. Это означает, что одна seed-фраза контролирует все ваши адреса на всех поддерживаемых блокчейнах.

Публичный ключ и адрес кошелька: в чем разница

Многие пользователи используют термины «публичный ключ» и «адрес кошелька» как синонимы, но это не одно и то же. Публичный ключ в Bitcoin имеет длину 33 или 65 байт в зависимости от формата (сжатый или несжатый). Адрес кошелька — это результат двойного хеширования публичного ключа, и он значительно короче: 26-35 символов. Адрес — это то, что вы публикуете для получения переводов. Публичный ключ становится виден в блокчейне только в момент, когда вы отправляете транзакцию с данного адреса.

Именно поэтому существует рекомендация не использовать один адрес многократно для получения средств: после первой исходящей транзакции публичный ключ этого адреса становится публично известен. Теоретически это создает незначительно более высокий профиль для атак в отдаленном будущем, если квантовые компьютеры достигнут достаточной мощности.

Как работает подпись транзакции

Когда вы отправляете криптовалюту, ваш кошелек использует приватный ключ для создания цифровой подписи транзакции. Эта подпись математически доказывает, что вы владеете приватным ключом, соответствующим публичному ключу отправляющего адреса — при этом сам приватный ключ нигде не раскрывается. Узлы сети проверяют подпись, используя публичный ключ, и если проверка проходит успешно, транзакция считается валидной и включается в блок.

Это элегантное решение: публичный ключ, который вы можете показывать кому угодно, позволяет всем убедиться в подлинности транзакции. Приватный ключ, который нельзя никому показывать, позволяет только вам создавать такую подпись. Безопасность системы держится именно на этом разделении.

Почему потеря приватного ключа означает потерю средств

В отличие от банковского аккаунта, где забытый пароль восстанавливается через службу поддержки, блокчейн не имеет центрального администратора. Ни Bitcoin Foundation, ни разработчики Ethereum, ни какая-либо другая организация не ведут реестр владельцев кошельков. Приватный ключ — единственное доказательство права собственности. Без него средства на адресе останутся там навсегда: технически они существуют, но недоступны для перемещения.

По оценкам компании Chainalysis, около 20% всех биткоинов — порядка 3-4 миллионов монет — утеряны навсегда именно по этой причине. Люди теряли жесткие диски, забывали пароли от зашифрованных кошельков, выбрасывали бумажки с seed-фразами.

Что делать, если приватный ключ скомпрометирован

Если вы подозреваете, что кто-то получил доступ к вашему приватному ключу или seed-фразе, действовать нужно немедленно. Скорость критична: пока злоумышленник не успел вывести средства, у вас есть шанс сделать это первым. Откройте новый кошелек на чистом устройстве, запишите новую seed-фразу, переведите все средства на новый адрес одной транзакцией с максимальной комиссией для ускорения подтверждения.

Если средства уже были выведены, KarCrypto проводит блокчейн-трейсинг: анализирует путь перемещения активов после кражи. В ряде случаев злоумышленники выводят средства через централизованные биржи с KYC, что оставляет след для установления личности. Параллельно проводится анализ возможного вектора компрометации: фишинг, вредоносное ПО, социальная инженерия или утечка через небезопасное хранилище.

Восстановление доступа к кошельку при частичной потере seed-фразы — отдельный вид работы. Если вы помните большинство слов, но несколько утеряны или неразборчиво записаны, KarCrypto применяет специализированный перебор вариантов. Метод работает при потере до 3-4 слов из 12 или до 5-6 слов из 24.

Часто задаваемые вопросы

Можно ли узнать приватный ключ, зная публичный?

Нет. Это математически невозможно при современном уровне вычислительной техники. Операция получения публичного ключа из приватного основана на умножении точек на эллиптической кривой — односторонней функции. Обратное вычисление потребовало бы миллиардов лет работы самых мощных существующих компьютеров.

Чем публичный ключ отличается от адреса кошелька?

Адрес кошелька — это результат дополнительного хеширования публичного ключа (SHA-256, затем RIPEMD-160 для Bitcoin). Адрес короче публичного ключа и именно его вы передаете для получения средств. Публичный ключ используется внутри транзакции для верификации подписи, но в большинстве случаев пользователю работать с ним напрямую не нужно.

Что произойдет, если потерять приватный ключ?

Доступ к средствам будет безвозвратно утерян. Никакая организация, включая разработчиков блокчейна, не сможет восстановить приватный ключ. Именно поэтому seed-фраза (мнемоническая фраза из 12 или 24 слов) является единственным способом восстановить доступ к кошельку. KarCrypto помогает восстанавливать доступ в случаях частичной потери seed-фразы или повреждения носителя.

Безопасно ли хранить публичный ключ онлайн?

Да, публичный ключ и адрес кошелька можно хранить где угодно без риска для безопасности средств. Это открытая информация по определению. Опасность представляет только раскрытие приватного ключа или seed-фразы. Именно поэтому сервисы мониторинга кошельков (Zerion, DeBank) работают только с публичными адресами и не требуют приватных ключей.

Если кто-то узнал мой публичный ключ, могут ли украсть средства?

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

Связанные термины

Полезные материалы