Открыть сервис

KMAC

KMAC — это семейство алгоритмов аутентификации сообщений (MAC, Message Authentication Code), основанное на блочном шифре и использующее ключевую хеш-функцию для обеспечения целостности и подлинности данных. KMAC (KECCAK Message Authentication Code) является частью стандарта SHA-3 (Secure Hash Algorithm 3), разработанного Национальным институтом стандартов и технологий США (NIST) в 2015 году. Алгоритм базируется на криптографической губке (sponge construction) KECCAK, которая лежит в основе хеш-функций SHA-3. KMAC обеспечивает защиту от подделки сообщений путём вычисления кода аутентификации, зависящего от секретного ключа и передаваемых данных.

История и стандартизация

KMAC был разработан как часть семейства SHA-3, которое было введено в 2015 году после конкурса, проведённого NIST. SHA-3 пришёл на смену SHA-2, который остаётся широко используемым, но уязвим для некоторых атак на основе коллизий. KMAC, как и другие алгоритмы на основе KECCAK (например, SHAKE128 и SHAKE256), использует губчатую конструкцию, которая обеспечивает гибкость в длине выходного кода. В 2016 году NIST опубликовал спецификацию KMAC в документе SP 800-185, где описаны три варианта: KMAC128, KMAC256 и KMACXOF256. KMAC был стандартизирован для применения в системах, требующих высокой безопасности, таких как криптографические протоколы, цифровые подписи и защита данных в государственных и коммерческих системах.

Принцип работы

KMAC основан на губчатой конструкции KECCAK, которая состоит из трёх этапов: абсорбция (впитывание данных), сжатие (обработка) и выжимание (генерация выходного кода). В отличие от традиционных MAC-алгоритмов, таких как HMAC (Hash-Based Message Authentication Code), KMAC использует ключ как часть входных данных, что повышает устойчивость к атакам. Алгоритм включает следующие шаги:

KMAC использует два режима: KMAC128 (с длиной кода до 128 бит) и KMAC256 (до 256 бит), а также вариант KMACXOF256, который является расширяемой выходной функцией (XOF) и может генерировать код любой длины.

Виды и параметры

KMAC включает несколько вариантов, различающихся по длине выходного кода и применению:

Параметры KMAC включают функцию персонализации (customization string), которая позволяет различать экземпляры алгоритма для разных приложений, что предотвращает перекрёстные атаки. Также используется параметр S (salt) для дополнительной защиты.

Сравнение с другими алгоритмами

KMAC отличается от HMAC, который основан на хеш-функциях SHA-1 или SHA-2. HMAC использует два прохода хеширования с ключом, что делает его устойчивым к атакам на длину сообщения, но менее эффективным на больших объёмах данных. KMAC, благодаря губчатой конструкции, обрабатывает данные за один проход, что повышает производительность, особенно при потоковой передаче. В отличие от CMAC (Cipher-Based MAC), который использует блочный шифр (например, AES), KMAC не требует шифрования данных, что упрощает реализацию. Однако KMAC менее распространён в промышленных стандартах, чем HMAC, который поддерживается в большинстве криптографических библиотек.

Применение

KMAC используется в следующих областях:

В России KMAC не стандартизирован, но может применяться в коммерческих продуктах, соответствующих международным стандартам. Вместо него в российской криптографии используются алгоритмы ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012 (Стрибог), которые основаны на блочных шифрах и хеш-функциях, не связанных с KMAC.

Критика и ограничения

KMAC, как и другие алгоритмы на основе KECCAK, имеет ограничения:

Тем не менее, KMAC считается безопасным при правильной реализации и рекомендован NIST для использования в системах, требующих высокой криптостойкости.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →