Почему Bitcoin использует две хэш-функции (SHA-256 и RIPEMD-160) для создания адреса?

Почему мы используем 2 хэш-функции (как SHA, так и RIPEMD) для создания адреса? Почему бы просто не использовать одну хеш-функцию?

24 голоса | спросил anapaso 5 PMpFri, 05 Apr 2013 22:00:06 +040000Friday 2013, 22:00:06

2 ответа


23

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

SHA256 также используется, так как использование биткойна для хэша открытого ключа может создать уникальные недостатки из-за неожиданных взаимодействий между RIPEMD и ECDSA (алгоритмом подписи открытого ключа). Включение дополнительной и очень различной операции хеша между RIPEMD и ECDSA делает почти невозможным то, что может быть способ найти коллизии адресов, что значительно проще, чем грубая сила, пытаясь использовать большое количество секретных ключей.

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

ответил David Schwartz 6 AMpSat, 06 Apr 2013 01:03:49 +040003Saturday 2013, 01:03:49
8

За исключением Где выполняется двойной хэширование в биткойне?

  

Так почему он хеш дважды? Я подозреваю, что это необходимо для предотвращения   атаки длины.

     

SHA-2, как и все хеши Merkle-Damgard, страдает от свойства, называемого   «Длина-расширение». Это позволяет злоумышленнику, который знает H (x),   вычислить H (x || y) без знания x. Обычно это не проблема,   но есть некоторые виды использования, где он полностью нарушает безопасность. Большинство   соответствующий пример использует H (k || m) как MAC, где злоумышленник может легко   вычислить MAC для m || m '. Я не думаю, что Биткойн когда-либо использовал хеши в   путь, который будет страдать от удлинения длины, но я думаю, что Сатоши пошел   с безопасным выбором предотвращения его повсеместности.

     

Чтобы избежать этого свойства, Фергюсон и Шнайер предложили использовать SHA256d   = SHA256 (SHA256 (x)), который позволяет избежать атак с расширением длины. Эта конструкция имеет некоторые незначительные недостатки (не относится к биткойну), поэтому я   не рекомендовал бы его для новых протоколов и использовал бы HMAC с   константный ключ или усеченный SHA512.

     

Ответа на этот вопрос CodesInChaos

ответил Nick ODell 5 PMpFri, 05 Apr 2013 22:03:14 +040003Friday 2013, 22:03:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132