Будет ли подписание сообщения (без выполнения какой-либо $-транзакции) раскрывать закрытый ключ для блокчейна точно так же/подобно тому, как закрытый ключ раскрывается для блокчейна, когда вы выполняете $-транзакцию?
Дело в том, что выполнение транзакции немного ослабляет безопасность адреса, потому что закрытый ключ раскрывается в блокчейне. Это одна из причин, по которой смена/новый адрес используется при каждой транзакции.
А как насчет того, чтобы просто подписать сообщение? Будет ли это немного ослаблять безопасность адреса?
Шифрование с открытым/закрытым ключом требует, чтобы закрытый ключ никогда не раскрывался — владелец должен держать его в секрете.
Подписание сообщений и транзакций выполняется закрытым ключом и проверяется соответствующим открытым ключом. Таким образом, закрытый ключ никогда не раскрывается блокчейну . Обратите внимание, что открытый ключ здесь относится к полному открытому ключу ECC, а не к биткойн-адресу, который представляет собой хэшированное и преобразованное представление открытого ключа. Открытый ключ может быть получен из биткойн-адреса только в том случае, если алгоритмы хэширования SHA256 иripMD-160 когда-либо будут взломаны. Этот вопрос исследует проблему.
Чтобы ответить на ваш вопрос: да, каждая новая подпись, созданная закрытым ключом, может приблизить злоумышленника, который уже знает соответствующий открытый ключ, к обнаружению закрытого ключа.
Комментарии к этому ответу сообщили об обновленной позиции:
Хотя для ECDSA нет доказуемой безопасности , обычно предполагается, что, даже зная несколько подписей, созданных конкретным ключом, у злоумышленника не будет повышенных шансов на получение связанного закрытого ключа или подделку его подписи.
Практически невозможная задача обнаружить закрытый ключ Биткойн из его открытого ключа. Ответ на этот вопрос иллюстрирует проблему математически.
Некоторые люди советуют придерживаться позиции «лучше перестраховаться, чем потом сожалеть» — открытые ключи не должны раскрываться там, где это возможно. Тем не менее, осторожность не должна препятствовать практической полезности, как указано в комментариях ниже.
Лучшей практикой, как вы говорите, является частая смена ключей и предпочтительно использование нового адреса для каждой транзакции приема. Если вы хотите, чтобы кто-то мог проверить подпись, ему, конечно же, понадобится ваш открытый ключ.
Насколько мне известно, единственный тип биткойн-транзакций, который раскрывает открытые ключи, — это Pay-To-Public-Key-Hash (P2PKH), который содержит полный открытый ключ в своем скрипте.
Марч