Все еще действует хеширование пароля с использованием md5 или sha1?

Как раз сейчас я работаю в финансовом проекте. Здесь команда думает использовать MD5 вместо password hashing. Но сегодня легко скопировать пароль SHA1 или MD5 для расшифровки, включительно, если это сложный пароль, например: My$uper$ecur3PAS$word+448, вы можете использовать онлайн-страницу для его расшифровки, и он есть. Разработчики малого и среднего бизнеса (включая меня) используют эти hashing methods, но я думаю, что этого недостаточно для обеспечения безопасности базы данных. (Кроме firewalls, network security, iptables и т. д.).

Может ли кто-нибудь дать мне подсказку о том, что является лучшим подходом к решению этой уязвимости?


person MrMins    schedule 29.01.2019    source источник


Ответы (2)


Вы правильно думаете, MD5 и SHA1 никогда не должны использоваться для хеширования паролей. Я бы рекомендовал следующее, в порядке предпочтения:

  • аргон2
  • bcrypt
  • скрипт
  • ПБКДФ2

Если вы пометите свой вопрос языком/платформой, которую используете, я могу порекомендовать конкретные библиотеки или методы.

Также имейте в виду, что слово шифрование здесь не подходит. Это алгоритмы хеширования паролей, а не алгоритмы шифрования.

person Luke Joshua Park    schedule 29.01.2019
comment
Ну, это общий вопрос. В основном node/Js, python, c# и php приветствуются и полезны для большинства пользователей переполнения стека. - person MrMins; 30.01.2019
comment
Является ли порядок предпочтения вашим предпочтением или предпочтением экспертов по безопасности (или обоими)? - person Jesse C. Slicer; 30.01.2019
comment
Я хотел бы сказать и то, и другое, но, честно говоря, мнения расходятся. Принято считать, что (argon2, bcrypt, scrypt) › (PBKDF2). Но в этой лидирующей группе мнения, как правило, расходятся. Я бы сказал, что практически любой из argon2, bcrypt или scrypt отлично подходит. - person Luke Joshua Park; 30.01.2019

Согласно памятке OWASP по хранению паролей, рекомендуется следующее:

  • Argon2 — победитель соревнования по хешированию паролей, и его следует рассматривать в качестве первого выбора для новых приложений;
  • PBKDF2, когда требуется сертификация FIPS или корпоративная поддержка на многих платформах;
  • scrypt, где необходимо противостоять любым/всем атакам с аппаратным ускорением, но нет поддержки.
  • bcrypt, где поддержка PBKDF2 или scrypt недоступна.

MD5 и SHA1 не защищены для большинства случаев использования, связанных с безопасностью, поскольку с этими алгоритмами можно найти коллизии. Другими словами, имея ввод и его хеш-значение, можно получить другой ввод с таким же хеш-значением.

Группа алгоритмов хеширования SHA-2 защищена для многих случаев использования в целях безопасности, но не для хеширования паролей, поскольку они невероятно быстры по сравнению с вышеупомянутыми алгоритмами. И производительность — это то, чего мы не хотим при хешировании паролей, потому что это упростило бы злоумышленнику атаку грубой силы, перебирая широкий диапазон паролей за короткий промежуток времени.

Таким образом, вышеупомянутые 4 алгоритма должны быть дорогими с точки зрения памяти, вычислительной мощности и времени. Эти значения обычно параметризуются, чтобы их можно было настроить на высокое значение, поскольку новые технологии улучшают вычислительную мощность с течением времени. Поэтому при использовании этих алгоритмов важно правильно выбрать значения коэффициента работы. Установка очень низкого значения может привести к срыву цели.

Кроме того, следует использовать соль.

Снова из того же источника OWASP:

  • Создание уникальной соли при создании каждого сохраненного удостоверения (не только для пользователя или всей системы);

  • Используйте криптографически стойкие случайные данные;

  • Если позволяет объем памяти, используйте соль размером 32 или 64 байта (фактический размер зависит от функции защиты);
  • Безопасность схемы не зависит от сокрытия, разделения или иного сокрытия соли.

Соли служат двум целям:

  • предотвратить раскрытие защищенной формой двух одинаковых учетных данных и
  • увеличить энтропию, подаваемую на функцию защиты, не полагаясь на сложность учетных данных.

Вторая направлена ​​на то, чтобы сделать атаки с предварительным поиском на отдельные учетные данные и атаки на основе времени на популяцию неразрешимыми.

person Saptarshi Basu    schedule 30.01.2019
comment
Коллизии на самом деле не проблема при хешировании паролей, это скорость, как вы упомянули. Просто чтобы было понятнее, можно вычислить до 200 Giga MD5 в секунду с GPU. - person martinstoeckli; 30.01.2019