Хеш-функции, шифры и рекомендуемые длины ключей
Справочная таблица криптографических алгоритмов: размер выхода и стойкость хеш-функций MD5, SHA-1, SHA-256, SHA-512, SHA-3, BLAKE2, ГОСТ Р 34.11-2012; параметры блочных и потоковых шифров (AES, DES, 3DES, ChaCha20, Кузнечик, Магма); сопоставимая стойкость ключей RSA, Диффи — Хеллмана, эллиптических кривых и симметричных шифров; функции хеширования паролей и режимы шифрования.
Стойкость криптографических алгоритмов принято измерять в битах: стойкость k бит означает, что лучшая известная атака требует порядка 2k операций. Сегодня минимально допустимой считается стойкость 112 бит, рекомендуемой для новых систем — 128 бит и выше. Ниже приведены общеизвестные параметры алгоритмов и их статус по состоянию на середину 2020-х годов.
Хеш-функции
| Алгоритм | Длина хеша, бит | Стойкость к коллизиям | Статус |
|---|---|---|---|
| MD5 | 128 | взломана (коллизии за секунды) | только для контрольных сумм от случайных ошибок |
| SHA-1 | 160 | взломана (практическая коллизия в 2017 г.) | не использовать для подписи и сертификатов |
| SHA-224 | 224 | 112 бит | допустима |
| SHA-256 | 256 | 128 бит | основной стандарт (TLS, биткоин, подписи) |
| SHA-384, SHA-512 | 384, 512 | 192, 256 бит | надёжны; SHA-512 быстрее SHA-256 на 64-битных процессорах |
| SHA3-256, SHA3-512 | 256, 512 | 128, 256 бит | надёжны, другая конструкция (губка Keccak) |
| BLAKE2b, BLAKE2s, BLAKE3 | до 512, до 256, 256 | до 256 бит | надёжны и очень быстры |
| ГОСТ Р 34.11-2012 «Стрибог» | 256, 512 | 128, 256 бит | российский стандарт |
Стойкость к коллизиям вдвое меньше длины хеша из-за «парадокса дней рождения»: чтобы найти два сообщения с одинаковым n-битным хешем, достаточно перебрать около 2n/2 вариантов. Стойкость к поиску прообраза (подбору сообщения под заданный хеш) — полная, 2n. Посчитать хеши строки или файла можно в хеш-калькуляторе.
Симметричные шифры
| Шифр | Тип | Блок, бит | Ключ, бит | Статус |
|---|---|---|---|---|
| DES | блочный | 64 | 56 | взломан полным перебором, не использовать |
| 3DES (TDEA) | блочный | 64 | 168 (стойкость 112) | выводится из употребления: малый блок |
| AES | блочный | 128 | 128, 192, 256 | основной мировой стандарт, аппаратное ускорение в процессорах |
| Кузнечик (ГОСТ Р 34.12-2015) | блочный | 128 | 256 | российский стандарт |
| Магма (ГОСТ 28147-89, ГОСТ Р 34.12-2015) | блочный | 64 | 256 | российский стандарт, малый блок |
| ChaCha20 | потоковый | — | 256 | надёжен, быстр без аппаратного ускорения (TLS, WireGuard) |
| RC4 | потоковый | — | 40–2048 | смещения в выходе, запрещён в TLS |
Шифр с 64-битным блоком нельзя использовать для шифрования больших объёмов данных одним ключом: после примерно 2³² блоков (32 ГБ) появляются повторы, позволяющие извлечь информацию. Блочный шифр всегда применяют в каком-либо режиме: современные рекомендации — режимы с аутентификацией GCM, CCM или связка ChaCha20-Poly1305. Режим ECB (каждый блок шифруется отдельно) не скрывает повторяющиеся фрагменты и для данных непригоден.
Сопоставимая стойкость ключей
Асимметричным алгоритмам для той же стойкости нужны гораздо более длинные ключи. Ориентировочное соответствие (по рекомендациям NIST SP 800-57):
| Стойкость, бит | Симметричный шифр | RSA, Диффи — Хеллман (модуль) | Эллиптические кривые | Хеш |
|---|---|---|---|---|
| 80 | 2TDEA | 1024 | 160 | SHA-1 (только прообраз) |
| 112 | 3DES | 2048 | 224 | SHA-224 |
| 128 | AES-128 | 3072 | 256 (P-256, Curve25519) | SHA-256 |
| 192 | AES-192 | 7680 | 384 | SHA-384 |
| 256 | AES-256 | 15360 | 512 (P-521) | SHA-512 |
Ключи RSA длиной 1024 бита считаются недостаточными; минимум для новых систем — 2048 бит, для долгосрочной защиты — 3072 и больше. Как устроены RSA и обмен ключами Диффи — Хеллмана, можно посмотреть по шагам на учебных числах в калькуляторах RSA и Диффи — Хеллмана.
Квантовые компьютеры
Алгоритм Шора на достаточно мощном квантовом компьютере взламывает RSA, Диффи — Хеллмана и эллиптические кривые за полиномиальное время, поэтому для них разрабатываются постквантовые замены (ML-KEM, ML-DSA, SLH-DSA, стандартизированные NIST в 2024 году). Алгоритм Гровера лишь вдвое уменьшает стойкость симметричных шифров и хешей в битах, поэтому AES-256 и SHA-384/512 считаются устойчивыми и в квантовую эпоху.
Хеширование паролей
Пароли нельзя хранить ни в открытом виде, ни в виде простого хеша (MD5, SHA-256): современные видеокарты перебирают миллиарды таких хешей в секунду. Используют специальные медленные функции с солью:
| Функция | Особенности |
|---|---|
| Argon2id | победитель конкурса Password Hashing Competition (2015), настраиваемые время и объём памяти — рекомендуемый выбор |
| scrypt | требует много памяти, что затрудняет перебор на видеокартах и ASIC |
| bcrypt | проверенная временем, параметр стоимости (cost) 10–12 и выше; длина пароля ограничена 72 байтами |
| PBKDF2 | многократное применение HMAC; требует сотен тысяч итераций, плохо защищает от перебора на GPU |
Время перебора паролей разной длины и состава оценивает калькулятор проверки стойкости пароля.
Комментарии и вопросы