Каков в настоящее время наиболее безопасный алгоритм одностороннего шифрования?
как многие знают, одностороннее шифрование-это удобный способ шифрования паролей пользователей в базах данных. Таким образом, даже администратор базы данных не может знать пароль пользователя, но должен будет угадать пароль, зашифровать его с помощью того же алгоритма, а затем сравнить результат с зашифрованным паролем в базе данных. Это означает, что процесс выяснения пароля требует огромного количества догадок и большой вычислительной мощности.
видя, что компьютеры просто продолжайте ускоряться, и что математики все еще разрабатывают эти алгоритмы, мне интересно, какой из них является наиболее безопасным, учитывая современные вычислительные мощности и методы шифрования.
Я использую MD5 почти исключительно в течение многих лет, и мне интересно, есть ли что-то еще, что я должен делать. Должен ли я рассматривать другой алгоритм?
другой связанный с этим вопрос: как долго должно быть поле для такого зашифрованного пароля? Я должен признайте, что я практически ничего не знаю о шифровании, но я предполагаю, что хэш MD5 (в качестве примера) может быть длиннее и предположительно потребует больше вычислительной мощности для взлома. Или длина поля вообще не имеет значения, при условии, что зашифрованный пароль вписывается в него в первую очередь?
7 ответов:
предупреждение: Так как этот пост был написан в 2010 году, графические процессоры были широко развернуты для перебора хэшей паролей. Графические процессоры по умеренной цене может работать десять миллиардов MD5s в секунду. Это означает, что даже совершенно случайно 8-символьный буквенно-цифровой пароль (62 возможных характеры) может быть грубой силой в течение 6 часов. SHA-1 только немного медленнее, это займет один день. Пароли вашего пользователя намного слабее, и (даже при засолке) будет падать со скоростью тысяч паролей в второй. Хэш-функции на. Ты не хочешь этого. для паролей. Использовать скрипт, осуществляется, или PBKDF-2.
MD5 был признан слабым еще в 1996 году, и не следует использовать больше для криптографических целей. SHA-1 обычно используется замена, но похожие проблемы. Элемент ша-2 семья хэш-функции ток замена из SHA-1. Члены SHA-2 по отдельности называются SHA-224, SHA-256, SHA-384 и SHA-512.
на данный момент, несколько хеш-функций конкурируют, чтобы стать ша-3 следующий стандартизированный алгоритм криптографического хеширования. Победитель будет выбран в 2012 году. Ни один из них не должен быть использован еще!
для хэширования паролей, вы также можете рассмотреть возможность использования чего-то вроде осуществляется. Он разработан, чтобы быть достаточно медленным, чтобы сделать крупномасштабные атаки грубой силы неосуществимыми. Вы можете настроить медленность самостоятельно, так что это может быть сделано медленнее, когда компьютеры становятся быстрее.
предупреждение: bcrypt основан на более старом двухстороннем алгоритме шифрования Blowfish, для которого сегодня существуют лучшие альтернативы. Я не думаю, что криптографические свойства хэширования bcrypt полностью поняты. Кто-нибудь поправьте меня, если я неверно; я никогда не находил надежного источника, который обсуждает свойства bcrypt (кроме его медлительности) с криптографической точки зрения.
это может быть несколько обнадеживающим, что риск коллизий имеет меньшее значение для хэширования паролей, чем для криптографии с открытым ключом или цифровых подписей. Использование MD5 сегодня-это ужасная идея для SSL, но не столь катастрофично для хэширования паролей. Но если у вас есть выбор, просто выберите более сильный один.
использование хорошей хэш-функции недостаточно для защиты ваших паролей. Вы должны хэшировать пароли вместе с соль это долго и криптографически случайный. Вы также должны помочь пользователям выбирать надежные пароли или фразы, если это возможно. Дольше всегда лучше.
большой вопрос! на этой странице хорошо читать. В частности, автор утверждает, что MD5 не подходит для хэширования паролей:
проблема в том, что MD5 быстро. Как и его современные конкуренты, такие как SHA1 и SHA256. Скорость-это цель дизайна современного безопасного хэша, потому что хэши являются строительным блоком почти каждой криптосистемы и обычно выполняются по требованию на основе каждого пакета или сообщения.
скорость-это точно то, что вы не хотите в хэш-функции пароля.
затем статья продолжает объяснять некоторые альтернативы и рекомендует осуществляется как "правильный выбор" (его слова, не мои).
отказ от ответственности: я вообще не пробовал Bcrypt. Считайте это дружеской рекомендацией, но не тем, что я могу подкрепить своим собственным техническим опытом.
чтобы увеличить силу пароля, вы должны использовать более широкий спектр символов. Если у вас есть 8-10 символов в пароле становится довольно трудно. Хотя сделать его более длинным сделает его более безопасным, только если вы используете числовые/буквенные/другие символы.
SHA1-это еще один алгоритм хеширования (одностороннего шифрования), он медленнее, но имеет более длинный дайджест. (кодированное сообщение) (160 бит), где MD5 имеет только 128 бит.
тогда SHA2 еще более безопасен, но он использовать меньше.
соление пароль-это всегда дополнительный уровень защиты
$salt = 'asfasdfasdf0a8sdflkjasdfapsdufp'; $hashed = md5( $userPassword . $salt );
видя, что компьютеры становятся все быстрее и, что математики все еще разрабатывают эти алгоритмы
шифрование RSA безопасно в том, что оно зависит от действительно большого числа жесткий фактор. В конце концов, компьютеры получат достаточно быстро, чтобы разложить число на множители за разумное количество времени. Чтобы оставаться впереди кривой, вы используете большее число.
однако для большинства веб-сайтов целью хэширования паролей является сделай это неудобно для тех, кто имеет доступ к базе данных, чтобы прочитать пароль, а не для обеспечения безопасности. Для этой цели, MD5-это штраф в размере1.
подразумевается, что если злоумышленник получает доступ ко всей вашей базе данных, ему не нужен пароль. (Замок на входной двери не помешает мне войти в окно.)
1 только потому, что MD5 "сломан" не означает, что вы можете просто отменить его когда захочешь.
помимо того, что криптографически безопасная односторонняя функция, хорошая хэш-функция для защиты паролем должна быть трудной для грубой силы-т. е. медленной по дизайну. scrypt является одним из лучших в этой области. С главной страницы:
мы оцениваем, что на современном (2009) оборудовании, если 5 секунд тратятся на вычисление производного ключа, стоимость аппаратной атаки грубой силы против scrypt примерно в 4000 раз больше, чем стоимость аналогичной атаки против bcrypt (чтобы найти тот же пароль), и в 20000 раз больше, чем аналогичная атака против PBKDF2.
тем не менее, из общедоступных хэш-функций, выполнение нескольких тысяч итераций чего-либо из семейства SHA является довольно разумной защитой для некритических паролей.
кроме того, всегда добавляйте соль, чтобы сделать невозможным совместное усилие для грубого форсирования многих хэшей за один раз.
NIST в настоящее время проводит конкурс по выбору нового алгоритма хэширования, так же как и для выбора алгоритма шифрования AES. Так что ответ на этот вопрос, скорее всего, будет другим через пару лет.
вы можете посмотреть материалы и изучить их для себя, чтобы увидеть, если есть один, который вы хотели бы использовать.
Comments