Шифрование пароля: PBKDF2 (с использованием sha512 x 1000) против Bcrypt

Я читал об инциденте Gawker, и появилось несколько статей, касающихся использования bcrypt для хэш-паролей, и я хочу убедитесь, что мой механизм хеширования достаточно безопасен, чтобы не переключиться на другой метод. В моем текущем приложении я выбрал реализацию PBKDF2 с использованием sha2-512 и минимум 1000 итераций.

Могу ли я попросить мнение об использовании PBKDF2 vs Bcrypt и должен ли я осуществить изменение?

Ответы

Ответ 1

Вы хорошо разбираетесь в PBKDF2, не нужно переходить на bcrypt.

Хотя рекомендация использовать 1000 итераций была сделана в 2000 году, теперь вам нужно гораздо больше.

Кроме того, вы должны проявлять большую осторожность при использовании bcrypt:

Также стоит отметить, что, хотя bcrypt сильнее, чем PBKDF2 для большинства типов паролей, он отстает на длинные фразы; это связано с неспособностью bcrypts использовать больше, чем первые 55 символов кодовой фразы. Хотя наши расчетные затраты и NIST. оценки энтропии парольной фразы предполагают, что ограничение на 54 символа bcrypts не является которые могут вызвать проблемы в настоящее время, разработчики систем, которые полагаются на bcrypt может быть рекомендовано либо обойти это ограничение (например, путем "предварительного кодирования" кодовой фразы, чтобы ограничить ограничение на 55 символов) или предпринять шаги для запретить пользователям устанавливать слишком много энтропии паролей в 56-м и последующем символов (например, попросив пользователей веб-сайта ввести свой пароль на вход который имеет место только для 55 символов).

Из файла scrypt [PDF]

Тем не менее, там scrypt.

Любые сравнения были бы неполными без таблицы из упомянутой выше бумаги для шифрования:

Estimated cost of hardware to crack a password in 1 year.

Итерационные подсчеты для используемого PBKDF2-HMAC-SHA256 составляют 86 000 и 4 300 000.

Ответ 2

Комментарий (re: название):

  • Не используйте шифрование (обратимое) для хранения паролей, если вы НЕ ДОЛЖНЫ.
  • Поскольку вы представили вариант хеширования (необратимый) в качестве альтернативы, я предполагаю, что вам не нужна обратимость.

мнения по использованию PBKDF2 против Bcrypt и должен ли я реализовывать изменить?

Мое мнение:

Используйте PBKDF2 над Bcrypt. (Я просто больше верю в SHA, чем Blofish, без причины)

Что касается того, следует ли вам "выполнять изменения", я не знаю, что вы просите.

Отредактировано, чтобы более четко отделить обсуждение шифрования/хэширования от определения моего предпочтения алгоритмом w/r/t.