Глоссарий / Справочник разработчика
Подпись SSL
- Что такое подпись SSL?
- Подпись SSL (SSL signature) представляет собой название, которое BIP70 дал байтам, подписывающим PaymentRequest ключом сертификата веб-сервера, и это обозначение было неточным уже в момент, когда его записали.
Определено в BIP-70.
Никакой протокол SSL в подписи SSL не участвует. Эти байты представляют собой обычную подпись X.509 над сериализованным сообщением, созданную приватным ключом сертификата TLS-сервера, а протокол SSL 3.0 был официально запрещен RFC 7568 в июне 2015 года Тот, кто читает старую документацию по биткоину, должен понимать эту фразу как «подпись сертификата» и идти дальше.
Как это работает
Статус: подпись SSL умерла вместе с BIP70, протоколом, который ее определил. Bitcoin Core включал BIP70 с марта 2014 года до тех пор, пока выпуск 0.20.0 не убрал его, и сегодня ни одно поддерживаемое программное обеспечение не создает и не проверяет такие подписи. Фраза сохраняется в справочнике разработчика на bitcoin.org, где большинство людей ее и находит.
Алгоритм задавался соседним полем, а не объявлялся самой подписью. Запрос на платеж указывал свой pki_type как none, x509+sha256 или x509+sha1. Это значение называло формат сертификата и хеш-функцию, а алгоритм подписи определялся тем ключом, который нес сертификат продавца, на практике RSA. Проверяющий восстанавливал точные байты, подписанные продавцом, вычислял их хеш указанной функцией и сравнивал результат с публичным ключом первого сертификата в приложенной цепочке.
Два из трех вариантов плохо выдержали время. Параметр x509+sha1 был слабым еще до публикации BIP70, поскольку NIST запретил SHA-1 для создания цифровых подписей после 31 декабря 2013 года К январю 2020 года исследователи продемонстрировали коллизию выбранного префикса для SHA-1 примерно за 45 000 $ арендованного времени GPU, а это именно та атака, которая позволяет подменить один подписанный документ другим. С тех пор NIST установил 31 декабря 2030 года как момент, когда SHA-1 полностью выходит из его утвержденных алгоритмов.
Более важный момент в том, что эта подпись и подпись биткоина отвечают на разные вопросы. Подпись внутри транзакции биткоина проверяется каждой нодой по правилам консенсуса, на кривой secp256k1, с помощью ECDSA или, с момента активации Taproot в блоке 709 632 14 ноября 2021 года, схемы Schnorr в соответствии с BIP340. Подпись SSL проверял один кошелек по хранилищу сертификатов, которое поддерживает поставщик. Одна санкционирует перемещение денег, и никто не может ее отменить. Другая была утверждением о том, кто об этом просит.
Где это встречается
Подписи сертификатов не исчезли, исчезло только имя поля BIP70. Ваш браузер по-прежнему наблюдает, как сервер доказывает владение ключом своего сертификата во время рукопожатия TLS, и это честная версия того, что BIP70 пытался позаимствовать.
Версия, которая важна, когда вы храните биткоин, представляет собой подпись кода. Программное обеспечение кошельков и прошивка аппаратных кошельков подписываются ключами, которые контролирует производитель, и проверка этой подписи перед установкой является шагом, который выявляет подмененную загрузку. Устройства Trezor и Ledger проверяют подписи прошивки на самом устройстве и отклоняют или громко помечают сборки, которые не могут подтвердить подлинность. Это подпись, выполняющая реальную работу, в отличие от поля BIP70, потому что она защищает ключи, хранящие ваши биткоины, а не имя, напечатанное на странице оплаты.
Подпись SSL vs цифровая подпись
Подпись SSL ничего не санкционировала в блокчейне. Цифровая подпись в транзакции биткоина разблокирует конкретный выход и независимо проверяется тысячами нод; поле BIP70 проверяла одна программа-клиент по списку удостоверяющих центров. Последствия потери ключа различаются так же резко. Скомпрометированный ключ сертификата отзывают и перевыпускают в тот же день. Скомпрометированный ключ биткоина означает, что биткоины уже ушли.