FIPS PUB 198
FIPS PUB 198 (Federal Information Processing Standards Publication 198) — это стандарт США, определяющий алгоритм вычисления кодов аутентификации сообщений (MAC) на основе хеш-функций (HMAC). Официальное название документа — «The Keyed-Hash Message Authentication Code (HMAC)». Стандарт был разработан Национальным институтом стандартов и технологий США (NIST) и опубликован в 2002 году. Он устанавливает единые требования к механизмам проверки целостности и подлинности данных в государственных информационных системах США, а также широко используется в международной практике.
История создания
Необходимость в стандартизации HMAC возникла в конце 1990-х годов в связи с ростом объёмов передаваемых данных и потребностью в надёжных механизмах аутентификации. До появления FIPS PUB 198 существовало несколько неофициальных реализаций HMAC, основанных на различных хеш-функциях (MD5, SHA-1), что создавало проблемы совместимости. В 1997 году NIST начал работу над проектом стандарта, который был завершён и опубликован в 2002 году как FIPS PUB 198. В 2008 году вышла вторая редакция (FIPS PUB 198-1), которая уточнила требования к длине ключа и добавила поддержку новых хеш-функций из семейства SHA-2.
Основные положения стандарта
Определение HMAC
HMAC (Keyed-Hash Message Authentication Code) — это механизм, который использует криптографическую хеш-функцию в сочетании с секретным ключом для вычисления кода аутентификации сообщения. Алгоритм гарантирует, что даже при знании хеш-функции и перехвате сообщения злоумышленник не сможет подделать код без знания ключа.
Формула вычисления
Стандарт определяет следующую формулу для HMAC: `` HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) `` Где:
- K — секретный ключ.
- M — исходное сообщение.
- H — выбранная хеш-функция (например, SHA-256).
- K' — ключ, дополненный до длины блока хеш-функции нулями (если ключ короче блока) или пропущенный через хеш-функцию (если длиннее).
- opad и ipad — константы (внешнее и внутреннее заполнение), представляющие собой повторяющиеся байты 0x5c и 0x36 соответственно.
- ⊕ — операция побитового исключающего ИЛИ (XOR).
- || — конкатенация.
Требования к ключу
Стандарт устанавливает минимальную и рекомендуемую длину ключа:
- Минимальная длина: длина выхода хеш-функции (например, 20 байт для SHA-1).
- Рекомендуемая длина: длина блока хеш-функции (например, 64 байта для SHA-256).
- Ключ должен быть случайным и секретным. Использование коротких или предсказуемых ключей снижает криптостойкость.
Поддерживаемые хеш-функции
FIPS PUB 198 не привязан к конкретной хеш-функции, но требует, чтобы она была утверждена NIST. На практике используются:
- SHA-1 (устаревшая, не рекомендуется для новых систем).
- SHA-256, SHA-384, SHA-512 (из семейства SHA-2).
- SHA-3 (с 2015 года).
Применение
Аутентификация сообщений
Основное применение HMAC — проверка целостности и подлинности данных при передаче по незащищённым каналам связи. Например:
- В протоколах IPsec и TLS/SSL для аутентификации пакетов.
- В системах электронной почты (S/MIME, DKIM) для подписи сообщений.
- В API-аутентификации (например, в подписях запросов к облачным сервисам Amazon Web Services).
Хранение паролей
HMAC используется в схемах хэширования паролей (например, PBKDF2, bcrypt) для защиты от атак перебором. В таких схемах HMAC многократно применяется к паролю и соли.
Цифровые подписи
В некоторых криптографических протоколах HMAC заменяет цифровые подписи на основе асимметричных алгоритмов, когда требуется высокая скорость и симметричный ключ уже распределён.
Криптостойкость
Устойчивость к атакам
HMAC считается криптостойким при условии использования надёжной хеш-функции и случайного ключа достаточной длины. Основные типы атак:
- Атака на ключ: невозможна без знания ключа, так как все операции зависят от него.
- Коллизионная атака: для HMAC требуется найти коллизию в хеш-функции, что для SHA-256 и SHA-3 вычислительно нереализуемо.
- Атака удлинения сообщения: HMAC устойчив к этому типу атак, характерному для обычных хеш-функций, благодаря двойному хешированию с ключом.
Ограничения
- Если хеш-функция скомпрометирована (например, найдены коллизии для SHA-1), HMAC на её основе также становится уязвимым.
- Секретный ключ должен быть защищён от несанкционированного доступа. Утечка ключа полностью компрометирует систему.
- HMAC не обеспечивает шифрования данных, только аутентификацию.
Критика
Основные критические замечания в адрес FIPS PUB 198 связаны с:
- Зависимостью от хеш-функции: стандарт не определяет, какие хеш-функции следует использовать, что может привести к выбору слабых алгоритмов.
- Сложностью реализации: неправильная реализация (например, использование короткого ключа или неверное дополнение) может снизить стойкость.
- Отсутствием поддержки асимметричных ключей: HMAC требует предварительного распределения секретного ключа, что усложняет его использование в открытых сетях.
Статус и развитие
FIPS PUB 198 остаётся действующим стандартом NIST. В 2015 году вышло обновление, добавившее поддержку SHA-3. В настоящее время NIST рекомендует использовать HMAC с хеш-функциями SHA-256 или выше. Стандарт широко применяется в государственных и коммерческих системах США, а также в международных протоколах (RFC 2104, RFC 4868).
Источники
- National Institute of Standards and Technology. FIPS PUB 198-1: The Keyed-Hash Message Authentication Code (HMAC). — 2008.
- Krawczyk, H., Bellare, M., Canetti, R. HMAC: Keyed-Hashing for Message Authentication (RFC 2104). — 1997.
- Menezes, A., van Oorschot, P., Vanstone, S. Handbook of Applied Cryptography. — CRC Press, 1996.
- NIST. Secure Hash Standard (SHS) (FIPS PUB 180-4). — 2015.
- NIST. SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions (FIPS PUB 202). — 2015.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →