Argon2 против SHA-512, что лучше в моем случае?

Вопрос или проблема

Сначала хочу сказать, что я очень плохо разбираюсь в криптографических алгоритмах.

Я узнал онлайн, что Argon2 более безопасен, чем SHA-512, поэтому я использовал его для хеширования паролей.

Рекомендуемые параметры для Argon2:

  • Память: 4 Гб
  • Количество итераций: 4 или больше

На моем древнем сервере это занимает чуть меньше бесконечности для 100 пользователей… Поэтому я уменьшил параметры до:

  • Память: 100 Мб
  • Количество итераций: 3
  • Потоки: 4 (если это важно)
  • Тип: Argon2i (рекомендуется для хешей паролей)
  • Размер соли: 20 байт

Эти параметры значительно ниже тех, что я нашел как рекомендуемые. Мне стало интересно…

Будет ли Argon2 с моими параметрами все еще более безопасным, чем SHA-512? Или мне стоит вернуться к SHA-512?

П.С. Если мой вопрос неясен, напишите мне, пожалуйста, я постараюсь переформулировать его.

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

С другой стороны, SHA-512 не предназначен для хранения паролей. Он не только быстрее на обсуждаемом оборудовании, но и значительно быстрее вычисляется на GPU или специализированном оборудовании, в то время как Argon2 не имеет этой слабости.

Argon2 настроенный на максимальную задержку, которую вы можете терпеть, если вам нужно выбирать между двумя – но лучший ответ может быть: ни то, ни другое.

Несколько судей Конкурса по хешированию паролей, которые выбрали семейство Argon2 победителем, впоследствии признали, что когда вы настраиваете Argon2 для быстродействия, как указано в исследованиях UX для интерактивной аутентификации (<=500 мс), это на самом деле хуже, чем bcrypt с точки зрения защиты (лучше для злоумышленника, хуже для защитника). Это связано с тем, что на этих уровнях настройки Argon2 менее устойчив к параллельным атакам, чем bcrypt, настроенный на ту же отзывчивость.

Так что, если вас устраивают другие ограничения bcrypt (максимум 72 символа и избегание вложенности), bcrypt может быть все еще лучшим выбором, в зависимости от вашего масштаба и модели угроз.

И любой из них будет лучшим выбором по сравнению с сырым SHA-512 (поскольку даже высокие итерации не достаточно снижают параллелизм) или sha512crypt (поскольку у него есть собственные проблемы).

Редактирование: некоторые бенчмарки, которые один из других судей PHC (Стив Томас) опубликовал, чтобы поддержать это утверждение.

Другие ответы уже объяснили, почему Argon2d лучше, чем SHA512 для хеширования паролей, но я хотел бы поделиться своим опытом настройки Argon2 для веб-сервера.

  • Во-первых, выберите вариант Argon2. Хотя в спецификации написано, что Argon2i использует память с независимым доступом к данным, что предпочтительно для хеширования паролей и основанного на пароле извлечения ключа, мне больше нравится Argon2id потому, что он обеспечивает баланс устойчивости как к атакам бокового канала, так и к атакам на основе GPU.
  • Во-вторых, выберите requisito памяти, поскольку веб-серверу нужно обслуживать несколько пользователей одновременно. Рекомендации OWAPS рекомендуют минимум 19MB, но вы можете использовать меньшее количество, не снижая безопасность, увеличив количество итераций.
  • В-третьих, выберите количество потоков / степень параллелизма: 1 – безопасный выбор, поскольку веб-сервер уже должен использовать несколько потоков для обслуживания запросов.
  • В-четвертых, выберите количество итераций, чем больше число, тем лучше, если скорость проверки не слишком медленная для вас. Правило таково: чем меньше количество памяти вы хотите, тем больше количества итераций вам потребуется для достижения того же уровня безопасности.
  • Что касается размера соли и размера вывода, просто используйте значение по умолчанию вашей библиотеки хеширования. Если хотите настроить, размер соли 16 байтов и размер вывода 32 байта будет вполне достаточен.

На мой взгляд, Argon2 лучше, потому что он медленный по причине. Хакеры могут использовать устройства с очень хорошими GPU, которые могут вычислять миллиарды хешей SHA-512 в секунду, но с медленной функцией хеширования это число изменится значительно.


Ответ или решение

Когда речь заходит о выборе между Argon2 и SHA-512 для хеширования паролей, важно учитывать несколько ключевых факторов, включая безопасность, производительность и адаптацию к вашим условиям.

Почему Argon2 предпочтительнее для хеширования паролей

  1. Проектирование для хеширования паролей: Argon2 был специально разработан для безопасного хеширования паролей и выиграл Конкурс по хешированию паролей, что подтверждает его высокую степень безопасности. Он более устойчив к атакам на основе параллелизма, что становится особенно актуальным, когда злоумышленники используют устройства с мощными графическими процессорами (GPU).

  2. Замедление вычислений: Argon2 замедляет процесс хеширования, требуя значительных ресурсов (памяти и времени), что делает атаки с использованием перебора значительно сложнее. Напротив, SHA-512 предназначен для быстрого вычисления, что делает его уязвимым для атак с использованием специализированного оборудования.

О ваших настройках Argon2

Ваши настройки Argon2, хотя и хороши для некоторых случаев, значительно ниже рекомендованных. Однако они все же обеспечивают более высокий уровень безопасности по сравнению с SHA-512:

  • Объём памяти: 100 Мб – это довольно хороший компромисс для веб-сервера, обеспечивающий приемлемое время обработки. Большинство рекомендаций подразумевают большее значение, но ваше оборудование может ограничивать возможности.

  • Итерации: 3 итерации могут показаться низкими, особенно для хеширования паролей. Чем больше итераций, тем более устойчивым будет хеш к атакам. Если возможно, рассмотрите увеличение этого числа.

  • Параллельность: Параметр "потоки" (threads) в 4 также позволит вам лучше использовать ваши ресурсы, особенно на многопоточных серверах.

  • Тип Argon2: Argon2i хорошо подходит для защиты от атак с использованием побочных каналов, но Argon2id предоставляет лучшую защиту с учетом как побочных каналов, так и атак на GPU. Если это возможно, подумайте о переходе на Argon2id.

Сравнение с SHA-512

Хотя SHA-512 является сильным хеш-функцией, его применение для хеширования паролей не рекомендуется, поскольку:

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

  • Отсутствие защитных механизмов: SHA-512 не учитывает его устойчивость к параллельным атакам, что делает его менее безопасным вариантом по сравнению с Argon2 даже с вашими меньшими настройками.

Рекомендации

  1. Не возвращайтесь к SHA-512: Вашиaltered Argon2 настройки по-прежнему обеспечивают лучшую безопасность для хеширования паролей, чем SHA-512.

  2. Оптимизация параметров Argon2: Если вы сможете повысить количество итераций или оптимизировать параметры памяти, сделайте это с целью повышения безопасности.

  3. Рассмотрите bcrypt: Если ваши текущие настройки Argon2 вызывают значительные задержки, возможно, стоит рассмотреть использование bcrypt, который до сих пор является хорошим вариантом для хеширования паролей и обеспечивает приемлемую защиту.

Заключение

Таким образом, Argon2 – это более безопасный выбор по сравнению с SHA-512 для хеширования паролей, даже с вашими текущими настройками. Однако важно продолжать настраивать и оптимизировать алгоритм для достижения максимальной безопасности при работе с вашими ограничениями по ресурсам.

Оцените материал
Добавить комментарий

Капча загружается...