Лучшая функция дайджеста общего назначения?

StackOverflow https://stackoverflow.com/questions/604792

  •  03-07-2019
  •  | 
  •  

Вопрос

При написании обычного нового приложения в 2009 году какую функцию дайджеста наиболее разумно использовать с точки зрения безопасности и производительности?(И как я могу определить это в будущем, по мере изменения условий?)

Когда Похожие вопросы были спросил ранее ответы включали SHA1, SHA2, SHA-256, SHA-512, MD5, bCrypt и Blowfish.

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

Это было полезно?

Решение

Я бы последовал за тобой Руководящие принципы NIST /FIPS:

15 Марта 2006 года:Семейство хеш-функций SHA-2 (т.е. SHA-224, SHA-256, SHA-384 и SHA-512) может использоваться федеральными агентствами для всех приложений, использующих безопасные алгоритмы хеширования .Федеральным агентствам следует как можно скорее прекратить использование SHA-1 для цифровых подписей, цифровой отметки времени и других приложений, требующих защиты от столкновений , и должны использовать SHA-2 семейство хэш-функций для этих приложений после 2010 года.После 2010 года Федеральные агентства могут использовать SHA-1 только для следующих приложений:аутентификация сообщений на основе хэша коды (HMAC);вывод ключа функции (KDFs);и генераторы случайных чисел (ГСЧ).Независимо от использования, NIST рекомендует разработчикам приложений и протоколов использовать SHA-2 семейство хэш-функций для всех новых приложений и протоколов.

Другие советы

Вы говорите "функция переваривания".;предположительно, это означает, что вы хотите использовать его для вычисления дайджестов "длинных" сообщений (а не просто хэширования "коротких" "сообщений", таких как пароли).Это означает, что bCrypt и подобные варианты отпадают;они разработаны таким образом, чтобы быть медленными и препятствовать атакам методом перебора баз данных паролей.MD5 полностью сломан, а SHA-0 и SHA-1 слишком ослаблены, чтобы быть хорошим выбором.Blowfish - это потоковый шифр (хотя вы можете запустить его в режиме, который производит дайджесты), так что это тоже не такой уж хороший выбор.

Таким образом, остается несколько семейств хэш-функций, включая SHA-2, HAVAL, RIPEMD, WHIRLPOOL и другие.Из них семейство SHA-2 наиболее тщательно криптоанализируется, и поэтому это было бы моей рекомендацией для общего использования.Я бы рекомендовал либо SHA2-256, либо SHA2-512 для типичных приложений, поскольку эти два размера являются наиболее распространенными и, вероятно, будут поддерживаться в будущем SHA-3.

Это действительно зависит от того, для чего вам это нужно.

Если вам нужна реальная безопасность, когда возможность легко обнаружить коллизию поставила бы под угрозу вашу систему, я бы использовал что-то вроде SHA-256 или SHA-512, поскольку они настоятельно рекомендуются различными агентствами.

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

Было показано, что MD4, MD5 и SHA-1 более легко поддаются взлому в смысле обнаружения коллизии с помощью метода birthday attack, чем ожидалось.RIPEMD-160 хорошо зарекомендовал себя, но всего при 160 битах для атаки на день рождения требуется всего 2 ^ 80 операций, поэтому она не будет длиться вечно.Whirlpool обладает превосходными характеристиками и кажется самым мощным из всех, хотя у него нет такой поддержки, как у SHA-256 или SHA-512, в том смысле, что если бы возникла проблема с SHA-256 или SHA-512, вы с большей вероятностью узнали бы об этом по соответствующим каналам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top