CCMP (англ. Counter Mode with Cipher Block Chaining Message Authentication Code Protocol — протокол блочного шифрования с имитовставкой (MAC) и режимом сцепления блоков и счётчика) — протокол шифрования 802.11i, созданный для замены TKIP, обязательного протокола шифрования в WPA и WEP, как более надёжный вариант. CCMP является обязательной частью стандарта WPA2 и необязательной частью стандарта WPA.
CCMP, являясь частью стандарта 802.11i, использует алгоритм Advanced Encryption Standard (AES). В отличие от TKIP, управление ключами и целостностью сообщений осуществляется одним компонентом, построенным вокруг AES с использованием 128-битного ключа, 128-битного блока, в соответствии со стандартом шифрования FIPS-197.
История
CCMP-протокол был использован с WPA2, определённым в стандарте IEEE 802.11i. IEEE 802.11i был принят в июне 2004 года, и эту дату можно считать датой появления протокола CCMP.
Обзор архитектуры
Алгоритм CCMP основан на алгоритме шифрования CCM AES. CCM использует алгоритм CTR для обеспечения конфиденциальности и алгоритм CBC-MAC для проверки подлинности и целостности данных. CCM обеспечивает целостность как области данных пакета MPDU, то есть пакета, передающегося по сети, так и некоторых частей заголовка пакета стандарта IEEE 802.11.
Вся обработка AES, используемая в CCMP, использует AES со 128-битным ключом и 128-битным блоком.
Режим ССМ является общим режимом, который может быть использован с любым блочным алгоритмом шифрования. Алгоритм CCM содержит два параметра (М и L), и CCMP использует для них следующие значения:
- M = 8 (вследствие того, что поле MAC — 8-октетное);
- L = 2 (говорит о том, что длина поля составляет 2 октета, которых должно быть достаточно для хранения всех возможных длин пакетов MPDU стандарта IEEE 802.11).
Стандарт алгоритма ССМ требует использования новых временных ключей для каждой вновь создаваемой сессии. Кроме того, ССМ требует уникального значения Nonce для каждого кадра, защищённого конкретным выбранным временным ключом. CCMP использует для этого 48-разрядный номер пакета (PN).
Повторное использование PN-номера с тем же временным ключом обнуляет все гарантии безопасности.
Шифрование CCMP
Структура пакета протокола IEEE 802.11, использующего шифрование на основе CCMP
Использование CCMP-обработки расширяет оригинальный размер пакета на 16 октетов, из которых 8 октетов располагаются в заголовке пакета MPDU и 8 октетов — в MAC-области. Заголовок CCMP состоит из следующих частей: PN, ExtIV, и идентификатора ключа. PN — 48-разрядный номер пакета, представляющий собой массив из 6 байтов.
Алгоритм шифрования CCMP
ССМР преобразует незашифрованный текст пакета (plaintext на рисунке) и инкапсулирует его в пакет данных, используя следующий алгоритм.
Построение поля дополнительных аутентификационных данных
AAD строится из заголовка пакета MPDU. AAD не включает в поле заголовка «Срок действия», поскольку данное поле может измениться при передаче данных по каналам стандарта IEEE 802.11 (например, при изменении скорости во время ретрансляции пакета). По тем же причинам несколько подполей в поле «Frame Control» считаются равными нулю. Создание дополнительных аутентификационных данных осуществляется в соответствии со следующим алгоритмом:
- создаётся поле FC — Frame Control, причём биты Подтипов (Subtype bits) считаются равными нулю;
- бит повтора (бит 11) считается равным нулю;
- PwrMgt-бит (бит 12) считается равным нулю;
- MoreData-бит (бит 13) считается равным нулю;
- бит защиты (бит 14) всегда равен 1:
- A1 — MPDU Address 1 field,
- A2 — MPDU Address 2 field,
- A3 — MPDU Address 3 field;
- создаётся поле SC (поле контрольной последовательности пакета MPDU), причём подполе номера последовательности (биты 4-15) считается равным нулю. Подполе номера фрагмента не изменяется;
- A4 — адресное поле пакета, если он присутствует в MPDU;
- QC — качество обслуживания QoS, если присутствует. Это поле зарезервировано для будущего использования.
Длина AAD составляет 22 октета, в случае, если отсутствуют поля A4 и QC, и 28 октетов, когда пакет содержит поле А4.
Создание CCM nonce
Поле nonce состоит из полей приоритета, А2 и номера пакета, причём поле приоритета зарезервировано для дальнейшего использования и должно быть обнулено.
Схема расшифрования CCMP
Схема алгоритма показана на рисунке.
CCMP принимает в качестве полезной нагрузки зашифрованный текст пакета и расшифровывает пакет, используя следующую последовательность действий.