Уменьшение длины хеша? - PullRequest
       2

Уменьшение длины хеша?

1 голос
/ 06 августа 2009

Я знаю, что, скажем, с учетом md5 / sha1 значения, уменьшение его с X битов (т.е. 128) до Y бит (то есть 64 бит) увеличивает вероятность атак на день рождения, поскольку информация была потеряна. Есть ли какой-нибудь простой в использовании инструмент / формула / таблица, который скажет, какова будет вероятность «правильного» предположения, когда произойдет сокращение длины (по сравнению с его первоначальной вероятностью)?

Ответы [ 3 ]

1 голос
/ 06 августа 2009

Крипто сложно. Я бы рекомендовал не пытаться делать подобные вещи. Это как готовить рыбу-толкунку: лучше оставить экспертам.

Так что просто используйте хэш полной длины. И поскольку MD5 сломан и SHA-1 начинает показывать трещины , вы не должны использовать ни в новых приложениях. SHA-2 - это, вероятно, ваш лучший выбор прямо сейчас.

1 голос
/ 06 августа 2009

Я бы определенно рекомендовал не уменьшать количество бит хэша. Здесь слишком много проблем. Во-первых, как бы вы решили, какие биты отбрасывать?

Во-вторых, было бы трудно предсказать, как отбрасывание этих битов повлияет на распределение выходов в новой «укороченной» хэш-функции. (Хорошо спроектированная) хеш-функция предназначена для равномерного распределения входных данных по всему выходному пространству, а не по его подмножеству.

Отбрасывая половину битов, вы фактически получаете подмножество исходной хеш-функции, которая может не обладать почти желательными свойствами правильно разработанной хеш-функции и может привести к дальнейшим слабостям.

0 голосов
/ 06 августа 2009

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

128 bits = 2^128 possibilities

Таким образом,

64 bits = 2^64

так что разрезая его пополам, вы получите

2^64 / 2^128 percent

меньше возможностей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...