0Pricing
Cryptology Academy · Урок

Argon2: хеширование паролей с высокой потребностью в памяти

Изучите Argon2i, Argon2d и Argon2id и поймите, почему важна высокая потребность в памяти

«Argon2: хеширование паролей с высокой потребностью в памяти» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

Argon2 победил в конкурсе хеширования паролей (PHC) в 2015 году и является главной рекомендацией OWASP. Его структура с высокими требованиями к памяти противодействует атакам с использованием GPU и ASIC, которым не может противостоять bcrypt.

Почему важна высокая требовательность к памяти

GPU имеют тысячи ядер, но ограниченный объём RAM на каждое ядро (около 1KB). Argon2 требует не менее 64MB RAM на один хеш. Атакующим, пытающимся вычислить 1000 хешей параллельно, потребуется 64GB RAM — это дорого и ограничивает масштаб атаки.

Варианты Argon2

Argon2d: зависимый от данных доступ к памяти — самый быстрый вариант, но уязвим к атакам по времени выполнения через побочные каналы. Argon2i: независимый от данных доступ к памяти — защищён от атак по времени выполнения. Argon2id: гибридный вариант — рекомендуется для большинства приложений.

Параметры Argon2

m: объём памяти в килобайтах (OWASP: минимум 19456 KB = 19 MB, рекомендуется 64 MB) t: стоимость по времени / число итераций (рекомендуется 3) p: степень параллелизма / число потоков (рекомендуется 4) salt: 16 случайных байт output: 32 байта

Argon2id в Python

from argon2 import PasswordHasher ph = PasswordHasher( memory_cost=65536, # 64 MB time_cost=3, parallelism=4 ) hash = ph.hash('my_password') # Verify: ph.verify(hash, 'my_password') # True

Формат хеша Argon2

$argon2id$v=19$m=65536,t=3,p=4$ bmFuZG9tc2FsdHJhbmRvbQ$ KaE5Jjy7E8...hashed... Все параметры хранятся в строке хеша. Проверка выполняется автономно — отдельное хранение параметров не требуется.

Рекомендации OWASP по Argon2id на 2024 год

Минимум: m=19456 KB (19 MB), t=2, p=1 Рекомендуемые значения: m=65536 KB (64 MB), t=3, p=4 Высокий уровень безопасности: m=262144 KB (256 MB), t=4, p=8 Настройте параметры с учётом доступного объёма памяти вашего сервера.

Argon2 против bcrypt и PBKDF2

Argon2id: требует больших затрат памяти, устойчив к ASIC-атакам, рекомендуется для новых систем. bcrypt: широко поддерживается, не требует больших затрат памяти, обеспечивает хорошую поддержку устаревших систем. PBKDF2: соответствует требованиям FIPS, не требует больших затрат памяти, используйте в регулируемых средах.

Стратегия обновления хеша

При переходе с bcrypt на Argon2: 1. Добавьте новый столбец для нового хеша 2. При следующем входе: проверьте пароль с помощью старого bcrypt, повторно хешируйте его с помощью Argon2 и сохраните новый хеш 3. Через X месяцев принудительно предложите сменить пароль пользователям, для которых обновление ещё не выполнено

Argon2 в реальных платформах

Django: установите PASSWORD_HASHERS=['django.contrib.auth.hashers.Argon2PasswordHasher'] Node.js: используйте пакет argon2 (не argon2-ffi) PHP 7.2+: встроенная константа PASSWORD_ARGON2ID в password_hash()

Перец: секрет на стороне сервера

Перец — это секрет на стороне сервера, смешиваемый с паролем перед хешированием: hash(password + pepper). Даже если БД будет раскрыта, атакующему также потребуется перец. Ротация перца = недействительность всех хешей.

Краткая проверка

Почему Argon2 более устойчив к атакам с использованием GPU, чем bcrypt?

Итоги

Сегодня Argon2id — лучший инструмент для хеширования паролей. Далее мы сравним все три алгоритма и научимся выбирать подходящий вариант для вашего контекста.

Часто задаваемые вопросы

Урок «Argon2: хеширование паролей с высокой потребностью в памяти» бесплатный?

Да — полный текст урока «Argon2: хеширование паролей с высокой потребностью в памяти» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Argon2: хеширование паролей с высокой потребностью в памяти»?

Изучите Argon2i, Argon2d и Argon2id и поймите, почему важна высокая потребность в памяти Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Argon2: хеширование паролей с высокой потребностью в памяти»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Почему обычный SHA-256 не подходит для паролей
  2. bcrypt: алгоритм и фактор вычислительной стоимости
  3. Argon2: хеширование паролей с высокой потребностью в памяти
  4. PBKDF2 и выбор подходящего алгоритма
← Назад к Cryptology Academy