короткий ответ:
Нет, и, наверное, никогда. Для хеширования паролей BCrypt & PBKDF2-HMAC- xxx - лучший выбор, чем любой простой алгоритм SHA-1/2/3. И до тех пор, пока у SHA-1/2 не будет фактических предикатных атак, SHA-3 на самом деле является худшим выбором, в частности , потому что его скорости и низкого размера кеша.
развернутый ответ:
Основным фактором в относительной безопасности различных алгоритмов хэширования паролей: как гораздо быстрее, а выделенный злоумышленник хэш паролей может по сравнению с вами? То есть, насколько быстрее их программно-аппаратная комбинация (приобретается с четкой целью хеширования паролей) по сравнению с вашим программным обеспечением на вашем сервере (встроенная реализация C для программного обеспечения, приобретенного для нужд вашего приложения).
Одним из основных критериев SHA-3 является то, что он должен эффективно работать на встроенных архитектурах, которые типичны для небольших объемов кеша, регистров и т. Д.Но это также описывает современные графические процессоры: меньшее количество регистров/аккумуляторов, меньшие по размеру кэши; но на оборотной стороне их кремний оптимизирован для параллельной параллельной работы над большими объемами данных. Это идеально подходит для попыток грубой силы вашего атакующего: навсегда потраченный на кремний доллар, ваш атакующий получает больше хэшей SHA3/сек, покупая другой графический процессор, чем вы, покупая лучший процессор.
По этой причине BCrypt был разработан для большего количества операций чтения/записи в таблице памяти, которая в настоящее время больше, чем кэш большинства графических процессоров. Это означает, что текущие реализации BCrypt на базе графического процессора даже не ускоряются с их процессорами. Таким образом, выбирая BCrypt, вы замедляете преимущество своего злоумышленника за каждый доллар, который он тратит, заставляя его покупать процессоры так же, как вы.
Вот почему необработанная скорость является врагом хэширования паролей. Вы хотите выбрать алгоритм, чья самая быстрая комбинация программного и аппаратного обеспечения предлагает вашему злоумышленнику наименьшее преимущество за доллар над программным обеспечением/аппаратным обеспечением, которое вы будете использовать. Прямо сейчас, это BCrypt или немного меньший выбор PBKDF2-HMAC- xxx. Поскольку графические процессоры, вероятно, будут лучше собираться на SHA3, я сомневаюсь, что это будет правильный выбор. У меня нет чисел на SHA3, но «более безопасный» не является туманно относительным термином - это правило может использоваться для точного количественного определения.
Как только у вас есть алгоритм хеширования, его сложно переключить. Вы должны поддерживать оба, пока не будут преобразованы все пароли. Который может быть никогда. Если у вас нет оснований подозревать, что ваше текущее решение недостаточно безопасно, я бы не стал беспокоиться об этом. – datasage
Любая точка downvoting? Я искал его и искал похожие вопросы в Stack Overflow. – TheJSB
Вы должны действительно использовать готовое решение, такое как PBKDF2, послушать ответ Эли. Ваш вопрос, похоже, предполагает, что алгоритм хэша выбирается, но вам действительно нужна целая безопасная конструкция. – u0b34a0f6ae