Основная причина не использовать MD5 для хеширования паролей заключается не в том, что MD5 серьезно скомпрометирован или даже считается сломанным.
Это правда, MD5 имеет известные уязвимости. Но ни один из них не представляет серьезной угрозы для вашего использования MD5. Потому что в вашем случае единственной угрозой будет атака прообраза, когда злоумышленник попытается найти прообраз известного хэша, например пароль к известному (солёному) хешу пароля. И, вероятно, известная атака прообраза против MD5 является только теоретической и снижает усилие с 2 128 до 2 123,4, что не является большим преимуществом. Еще более перспективной является атака полным перебором со средним значением 2 64.
Нет, основная причина не использовать MD5 заключается в том, что MD5 слишком быстрый. С помощью доступного сегодня компьютера вы можете генерировать и тестировать 7190 млн хэшей MD5 в секунду. Все 8-символьные комбинации буквенно-цифровых символов могут быть подвергнуты перебору примерно за 8,5 часов, независимо от того, с солью или без нее.
В отличие от этого, с помощью хеш-функции, такой как bcrypt $2a$
, можно генерировать и тестировать только 4085 хешей в секунду, то есть только 0,00005682% от количества хешей MD5. С bcrypt $2a$
вам понадобится 1694 года для той же попытки.
person
Gumbo
schedule
09.10.2012
my!l1ttL3,PoNy.
) - person Stephen Touset   schedule 09.10.2013