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 решает эту проблему:
- Если длина открытого текста кратна размеру блока (16 байт), используется обычный режим CBC.
- Если длина не кратна, последние два блока шифруются особым образом: часть последнего блока «крадётся» (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 включает следующие шаги:
- Вычисление HMAC: Открытый текст пропускается через HMAC-SHA1 с использованием ключа, полученного из сессионного ключа Kerberos. Результат (96 бит) добавляется к открытому тексту.
- Шифрование: Открытый текст вместе с HMAC шифруется с помощью AES-128 в режиме CTS. Ключом шифрования служит тот же сессионный ключ (или его производная).
- Формирование результата: Полученный шифротекст (без отдельного хеша) передаётся получателю.
При расшифровке получатель выполняет обратные операции: расшифровывает 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-96 | AES-128 | 128 бит | SHA-1 (96 бит) | Активный, широко используется |
| AES256-CTS-HMAC-SHA1-96 | AES-256 | 256 бит | SHA-1 (96 бит) | Активный, повышенная стойкость |
| AES128-CTS-HMAC-SHA256-128 | AES-128 | 128 бит | SHA-256 (128 бит) | Современный (RFC 8009) |
| AES256-CTS-HMAC-SHA384-192 | AES-256 | 256 бит | SHA-384 (192 бит) | Современный (RFC 8009) |
| DES-CBC-MD5 | DES | 56 бит | 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 →