Открытый ключ биткойн, хеш открытого ключа и открытый ключ [дубликат]

Я не говорю о проблемах, связанных с конфиденциальностью, просто об аспекте безопасности и возможности для кого-то «взломать мой закрытый ключ».

Адреса, которые генерирует мой кошелек, являются адресами p2pkh. Если я использую биткойн-ядро и делаю «validateaddress», я получаю blob json, который включает «pubkey».

Если бы у меня была база данных с кучей открытых ключей, не p2pkh, а «pubkey» из validateaddress, и эта база данных должна была быть взломана, все ли utxos в исходном кошельке оказались бы под угрозой? (Предположим, что кошелек находится в холодном хранилище и не подключен к Интернету). В этой базе данных будет только публичный ключ(и).

Если это так... почему мы вообще проходим через процесс создания адресов p2pkh? Это просто для красоты, меньше байтов в транзакции, просто для конфиденциальности или есть реальная причина безопасности?

Наконец, это «pubkey», который проверяет адрес, зачем нам вообще нужен p2pk (если только он не буквально по той же причине «улучшения» до p2pkh из p2pk).

Спасибо

Это отличается от вопроса, опубликованного в первом комментарии, поскольку я говорю исключительно о последствиях для безопасности. IE... нет ничего более безопасного при использовании SHA256 + RipeMD для хеширования открытого ключа, чем просто использование самого открытого ключа.

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

Ответы (1)

Я высказываю свои мысли больше о конфиденциальности, чем о риске:

Если бы у меня была база данных с кучей открытых ключей... все ли utxos в исходном кошельке оказались бы под угрозой?

AFAIK нет, для транзакций P2PKH. Биткойн-система имеет механизм блокировки и разблокировки. Блокировка выполняется с помощью сценария публичного ключа: автор tx определяет цель (кому должна быть отправлена ​​tx) и условия расходования. Это были в P2PKH tx хэш открытого ключа. Условие расходования тогда s.th. например, «вам нужно указать значение, которое при хешировании равно предоставленному хэшу открытого ключа в этой транзакции». Обычно это может предоставить только первоначальный автор транзакции. С потерянной базой данных теперь любой мог создать такую ​​транзакцию, но не подписать ее! Когда затем транзакция должна выполнить условие расходования, транзакция должна быть подписана (и публичный ключ предоставляется в шестнадцатеричном формате).

Так что, если ваша база данных раскрыта, механизм блокировки для P2PKH tx можно понять. Однако разблокировка находится в сигскрипте транзакции, и просто с украденной базой данных вы не можете предоставить действительную подпись, потому что вам нужен соответствующий закрытый ключ для подписи.

Подробнее о блокировке/разблокировке, например, в книге Андреаса «Освоение биткойнов» в разделе 6 «Транзакции».

Если это так... почему мы вообще проходим через процесс создания адресов p2pkh? Это просто для красоты, меньше байтов в транзакции, просто для конфиденциальности или есть реальная причина безопасности?

Рядом с ответом в ссылке от Питера Вуилле я увижу, что адреса P2PKH помогают сохранить конфиденциальность до того момента, когда tx, наконец, будет потрачен, потому что хэши необратимы (согласно сегодняшним знаниям).