Сравнение · 4 мин. чтения
Argon2id vs PBKDF2 — сравнение одним взглядом
Бок о бок: скорость, стоимость памяти, устойчивость к атакам, поддержка библиотек и что выбрать для нового кода.
Обе являются функциями формирования ключа (KDF). Обе превращают парольную фразу в ключ шифрования. Разница в том, где они расходуют бюджет злоумышленника.
Бок о бок
- Год стандартизации: PBKDF2 — 2000. Argon2id — 2015, RFC 9106 в 2021.
- Параметр затрат: PBKDF2 — только процессорное время. Argon2id — процессорное время и ОЗУ (memory-hard).
- Ускорение GPU/ASIC относительно CPU: PBKDF2 — 100×–1000×. Argon2id — близко к 1×.
- Поддержка стандартными библиотеками: PBKDF2 — повсеместная. Argon2id — широкая, но не повсеместная.
- Стандарт OpenPGP: PBKDF2 — да (S2K). Argon2id — да, начиная с RFC 9580 в 2024.
- Рекомендуемое использование: PBKDF2 — устаревший. Argon2id — всё новое.
Оба при настройках по умолчанию
PBKDF2-HMAC-SHA256 с 600 000 итерациями: ~250 мс на CPU; ~500 нс на попытку на GPU.
Argon2id с m=65536 KiB, t=3, p=1: ~250 мс на CPU; ~10 мс на попытку на GPU.
Те же затраты для защитника. 5 000 000× затраты для атакующего. В этом и весь смысл перехода.
Когда всё же оставить PBKDF2
- Чтение устаревшего шифртекста, зашифрованного с PBKDF2.
- Среды без поддержки WASM.
- Существующие FIPS-140-3 развёртывания, где Argon2id ещё не сертифицирован.
Во всех остальных случаях побеждает Argon2id. Это приложение использует Argon2id по умолчанию.