Две части пары ключей выполняют разные задачи
Приватный ключ — очень большое секретное число, созданное надёжным источником случайности. Программа математически выводит из него публичный ключ. Вычисление в эту сторону практично, но известными обычными методами восстановить приватный ключ из публичного невозможно.
Публичный ключ позволяет проверять подпись, а приватный создаёт её. Поэтому их нельзя путать с именем пользователя и паролем. В сети нет центрального списка людей или кнопки сброса забытого ключа; она лишь проверяет, удовлетворяют ли представленные данные правилам конкретного выхода.
Адрес — не счёт и не приватный ключ
Биткоин-адрес — это закодированные данные, которые помогают кошельку плательщика создать правильное условие выхода. В зависимости от типа он может основываться на хеше публичного ключа, скрипта или на публичном ключе Taproot. Контрольная сумма помогает обнаружить некоторые опечатки, но не доказывает, что адрес принадлежит тому, кому вы собираетесь заплатить.
На адрес можно получать платежи, а более безопасные кошельки создают новый адрес для каждого следующего поступления. Повторное использование одного адреса облегчает публичное связывание платежей и ухудшает приватность. Но публикация адреса для получения сама по себе не даёт никому возможности потратить соответствующие выходы.
- приватный ключ хранится в тайне и позволяет создать подпись
- публичный ключ позволяет проверить подпись
- адрес помогает создать условие платежа, и им можно поделиться с плательщиком
Подпись утверждает конкретные данные
При трате кошелёк не передаёт приватный ключ. Он использует его для создания цифровой подписи над точно определёнными данными транзакции. Узел может с помощью публичного ключа проверить соответствие подписи и убедиться, что защищённая часть транзакции не изменилась.
Исторически Биткоин использует подписи ECDSA, а для выходов Taproot — также подписи Шнорра, определённые в BIP 340. Для обычного пользователя важна одна и та же идея: действительная подпись подтверждает право на конкретную команду, не раскрывает секрет и не даёт общего разрешения на любые будущие платежи.
Криптография не защищает от каждой человеческой ошибки
Если злоумышленник получит приватный ключ или слова восстановления, он сможет создать действительную подпись, и сеть не узнает, что это кража. Если пользователь подпишет транзакцию на неверный адрес, математически она может быть совершенно правильной. Поэтому адрес назначения и сумму нужно проверять на доверенном дисплее.
Обычно кошельки управляют множеством ключей с помощью одной резервной копии. Seed, passphrase, аппаратные кошельки и многоподписные схемы будут рассмотрены позднее на уровне безопасности. Пока достаточно точного правила: адрес предназначен для получения, публичный ключ — для проверки, а секретные данные нельзя отправлять постороннему человеку или службе поддержки сайта.