Почему SHA512 выбрал SHA384?

SHA384 - это усеченная версия SHA512. Но зачем кому-то это использовать? И следствие: если SHA384 так же хорош, как SHA512, существует ли какое-либо обоснование при использовании версии с 512 бит?

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

Я был бы рад услышать, как каждый использует дайджест SHA2 на практике и почему вы выбрали одну версию над другой.

Ответы

Ответ 1

Для практических целей и в обозримом будущем, как SHA384, так и SHA512 достаточно хороши для практически любого воображаемого приложения сопротивления столкновению. Как правило, основным определяющим фактором того, какой хэш вы бы использовали, когда мы превысили 256 бит и сопротивление столкновению бесконечно для практических целей, - это то, сколько бит нужно вам. Например, если вам нужен хеш для генерации 256-битного ключа HMAC и 128-битного ключа шифрования, SHA384 является естественным выбором. Если вам нужно как можно больше средств для вычислительной стоимости, скажем, для вывода PRNG или как случайного заполнения, тогда SHA512 имеет смысл.

Ответ 2

SHA512 также SHA256 SHA1 и MD5 уязвимы для атаки с удлинением длины SHA224 и SHA384 не являются уязвимыми, поскольку выходной сигнал понижен до внутреннего состояния, SHA3 также не уязвим. Имея это в виду, SHA512 является хорошей криптографической стойкой к коллизиям хэш-функцией.

Ответ 4

Сертификаты, подписанные с SHA512, не работают с TLS 1.2 в Windows (см. здесь)

Поэтому я буду воссоздавать цепочку сертификатов с использованием SHA-384 (или, я полагаю, могу использовать SHA-256).

К счастью, я еще не опубликовал никаких сертификатов, поток на связанной странице предлагает метод обхода/исправления для тех, кто застрял с SHA-512.

НТН!

Ответ 5

Единственная причина, по которой я мог подумать об использовании SHA-384 или SHA-512, связана с необходимостью подписи дайджеста. Например, если вы принимаете подпись ECDSA-384, для этого требуется дайджест хэша 384, а не 512 бит. В идеале можно выкинуть любой 128-битный из 512-битного. Но получающему концу нужно знать, какой 128-битный вы выбрасываете. Таким образом, единственная разница между SHA384 и SHA512 состоит в том, чтобы определить, какой 128-битный вам нужно выбросить.