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

AES128-CTS-HMAC-SHA1-96

AES128-CTS-HMAC-SHA1-96 — это криптографический тип шифрования (encryption type, enctype), используемый в протоколах аутентификации и сетевой безопасности, в первую очередь в протоколе Kerberos. Он представляет собой комбинацию блочного шифра AES (Advanced Encryption Standard) с длиной ключа 128 бит, режима шифрования «Ciphertext Stealing» (CTS) и кода аутентификации сообщения HMAC на основе хеш-функции SHA-1 с длиной выходного значения 96 бит. Данный тип шифрования определён в спецификациях IETF (Internet Engineering Task Force) и является одним из стандартных для Kerberos версии 5.

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

Разработка типа шифрования AES128-CTS-HMAC-SHA1-96 была вызвана необходимостью повышения криптостойкости протокола Kerberos, который изначально использовал более слабые алгоритмы, такие как DES (Data Encryption Standard). С появлением AES как нового стандарта шифрования в США (2001 год) и его широким признанием, IETF начала работу по интеграции AES в Kerberos.

Основные этапы стандартизации:

  • 2005 год: Публикация RFC 3962 «Advanced Encryption Standard (AES) Encryption for Kerberos 5». Этот документ определил использование AES в режиме CTS (Ciphertext Stealing) с HMAC-SHA1-96 для аутентификации и проверки целостности. RFC 3962 стал основным стандартом для данного типа шифрования.
  • 2006 год: Включение поддержки AES128-CTS-HMAC-SHA1-96 в дистрибутивы операционных систем, включая Microsoft Windows (начиная с Windows Vista и Windows Server 2008) и различные реализации Kerberos для Unix/Linux (например, MIT Kerberos, Heimdal).
  • Последующее развитие: Несмотря на появление более современных типов шифрования (например, на основе AES-256 и SHA-2), AES128-CTS-HMAC-SHA1-96 остаётся широко распространённым благодаря балансу между производительностью и криптостойкостью, а также обратной совместимости.

Устройство и принцип работы

Тип шифрования AES128-CTS-HMAC-SHA1-96 состоит из трёх ключевых компонентов, работающих совместно.

Блочный шифр AES-128

AES (Advanced Encryption Standard) — симметричный блочный шифр, принятый в качестве стандарта правительством США. В данном типе шифрования используется вариант с длиной ключа 128 бит (16 байт). AES-128 обеспечивает высокую скорость шифрования и считается криптостойким для большинства практических применений (по состоянию на 2024 год атак, существенно снижающих его стойкость, не обнаружено).

Режим шифрования CTS (Ciphertext Stealing)

Режим CTS — это модификация режима сцепления блоков шифротекста (CBC, Cipher Block Chaining), предназначенная для шифрования данных произвольной длины без необходимости дополнения (padding) до размера блока (16 байт для AES). В стандартном режиме CBC данные дополняются до целого числа блоков, что может увеличивать размер шифротекста. CTS решает эту проблему:

  1. Если длина открытого текста кратна размеру блока (16 байт), используется обычный режим CBC.
  2. Если длина не кратна, последние два блока шифруются особым образом: часть последнего блока «крадётся» (steals) из предпоследнего, что позволяет сохранить размер шифротекста равным размеру открытого текста.

Это свойство важно для протокола Kerberos, где сообщения имеют строго определённый формат и не должны увеличиваться в размере.

Код аутентификации HMAC-SHA1-96

Для обеспечения целостности и аутентичности сообщения (проверки, что данные не были изменены) используется HMAC (Hash-based Message Authentication Code) на основе хеш-функции SHA-1. HMAC-SHA1-96 вычисляет 160-битный хеш от сообщения и ключа, после чего усекается до 96 бит (12 байт). Эта усечённая версия добавляется к шифротексту. Длина в 96 бит обеспечивает достаточный уровень защиты от подделки сообщений (вероятность случайного совпадения — 1 к 2^96).

Алгоритм работы

Процесс шифрования и аутентификации сообщения с использованием AES128-CTS-HMAC-SHA1-96 включает следующие шаги:

  1. Вычисление HMAC: Открытый текст пропускается через HMAC-SHA1 с использованием ключа, полученного из сессионного ключа Kerberos. Результат (96 бит) добавляется к открытому тексту.
  2. Шифрование: Открытый текст вместе с HMAC шифруется с помощью AES-128 в режиме CTS. Ключом шифрования служит тот же сессионный ключ (или его производная).
  3. Формирование результата: Полученный шифротекст (без отдельного хеша) передаётся получателю.

При расшифровке получатель выполняет обратные операции: расшифровывает CTS, вычисляет HMAC от полученного открытого текста и сравнивает его с переданным. Если значения совпадают, целостность и аутентичность подтверждаются.

Применение

Основная область применения AES128-CTS-HMAC-SHA1-96 — протокол аутентификации Kerberos версии 5. Он используется для шифрования и аутентификации следующих типов сообщений:

  • Сессионные ключи: Ключи, генерируемые центром распределения ключей (KDC, Key Distribution Center) для безопасного обмена данными между клиентом и сервером.
  • Билеты (Tickets): Сообщения, содержащие информацию о сессии и аутентификационные данные пользователя. В частности, билеты выдачи билетов (TGT, Ticket-Granting Ticket) и сервисные билеты.
  • Аутентификаторы: Сообщения, подтверждающие подлинность клиента перед сервером.

В операционных системах:

  • Microsoft Windows: Начиная с Windows Vista, AES128-CTS-HMAC-SHA1-96 является одним из предпочтительных типов шифрования для доменов Active Directory. Он используется при аутентификации пользователей, входа в систему и доступа к сетевым ресурсам (например, файловым серверам, базам данных).
  • Unix/Linux: Реализации Kerberos (MIT, Heimdal) поддерживают этот тип шифрования. Он часто используется в корпоративных средах для единой аутентификации (SSO, Single Sign-On).

Криптостойкость и критика

AES128-CTS-HMAC-SHA1-96 считается криптостойким для большинства практических сценариев, однако имеет ограничения:

  • Устаревание SHA-1: Хеш-функция SHA-1 считается уязвимой к атакам на коллизии (например, атака SHAttered, 2017 год). Хотя HMAC-SHA1-96 не подвержен прямым атакам на коллизии в той же степени, что и SHA-1, его использование рассматривается как переходный этап. В более современных стандартах (например, RFC 8009) рекомендуется замена SHA-1 на SHA-256 или SHA-384.
  • Длина ключа AES-128: 128-битный ключ AES обеспечивает достаточную стойкость для большинства применений, но для долгосрочной защиты (например, секретных данных, подлежащих хранению десятилетиями) может быть недостаточен. В таких случаях предпочтительнее AES-256.
  • Отсутствие Perfect Forward Secrecy (PFS): Протокол Kerberos в целом не обеспечивает PFS — если долговременный ключ пользователя или KDC скомпрометирован, все прошлые сессии могут быть расшифрованы. Это не является недостатком конкретно данного типа шифрования, а свойством протокола.

Сравнение с другими типами шифрования Kerberos

Тип шифрованияАлгоритмДлина ключаHMACСтатус
AES128-CTS-HMAC-SHA1-96AES-128128 битSHA-1 (96 бит)Активный, широко используется
AES256-CTS-HMAC-SHA1-96AES-256256 битSHA-1 (96 бит)Активный, повышенная стойкость
AES128-CTS-HMAC-SHA256-128AES-128128 битSHA-256 (128 бит)Современный (RFC 8009)
AES256-CTS-HMAC-SHA384-192AES-256256 битSHA-384 (192 бит)Современный (RFC 8009)
DES-CBC-MD5DES56 битMD5Устаревший, не рекомендуется

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

  • Название «AES128-CTS-HMAC-SHA1-96» часто сокращается в документации и конфигурационных файлах до «aes128-cts-hmac-sha1-96» или просто «aes128-cts».
  • В операционных системах Windows поддержка AES-шифрования в Kerberos была добавлена только в Windows Vista, что потребовало обновления инфраструктуры Active Directory (повышение уровня функциональности домена).
  • Режим CTS (Ciphertext Stealing) не следует путать с режимом CTR (Counter) или GCM (Galois/Counter Mode), которые также используются в современных криптографических системах.

Источники

  • RFC 3962: Advanced Encryption Standard (AES) Encryption for Kerberos 5.
  • RFC 4120: The Kerberos Network Authentication Service (V5).
  • RFC 8009: AES Encryption with HMAC-SHA2 for Kerberos 5.
  • Microsoft Docs: Kerberos Authentication and Encryption Types.

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

На главную BFOmetr →