CCMP
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-октетное[1]);
- 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 на рисунке) и инкапсулирует его в пакет данных, используя следующий алгоритм.
- Увеличивается на некоторое положительное число номер пакета PN для того, чтобы получать свой номер для каждого пакета данных так, что номер пакета никогда не повторяется дважды при использовании одного временного ключа. Стоит отметить, что повторные пакеты данных не изменяются при их ретрансляции.
- Используя поля в заголовке пакета, CCMP создаёт дополнительные аутентификациионные данные (AAD) для ССМ. Алгоритм ССМ обеспечивает шифрование для полей, включённых в AAD. Поля заголовка пакета, которые могут измениться при его ретрансляции, не должны учитываться при создании дополнительных аутентификационных данных и потому считаются нулевыми при создании AAD.
- Составляется поле Nonce из номера пакета, адреса A2 и поля приоритета, которое в существующей реализации является зарезервированным, так что его значение должно быть установлено равным нулю.
- Новый номер пакета PN и идентификатор ключа key ID помещаются в заголовок пакета CCMP.
- Дополнительные аутентификационные данные, поле Nonce, непосредственно данные пакета с использованием временного ключа TK шифруются алгоритмом CCM. Этот шаг называют CCM originator processing.
Построение поля дополнительных аутентификационных данных
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 принимает в качестве полезной нагрузки зашифрованный текст пакета и расшифровывает пакет, используя следующую последовательность действий.
- С использованием данных пакета создаются поля дополнительных идентификационных данных AAD и nonce.
- Поле AAD извлекается из заголовка зашифрованного пакета.
- Поле создаётся из полей A2, порядкового номера пакета PN, а также поля приоритета.
- Для проверки целостности пакета из него извлекается поле MAC.
- Пакет расшифровывается и проверяется его целостность, для чего используется непосредственно текст зашифрованного пакета, значения дополнительных идентификационных данных, временный ключ, поля MAC и nonce.
- Затем пакет снова собирается, уже в расшифрованном виде, и передаётся дальше на обработку.
- Процесс расшифрования предотвращает передачу повторяющихся пакетов на сторону пользователя, сравнивая порядковый номер пакета PN со своим внутренним счётчиком пакетов.
Примечания
- В большинстве случаев можно считать, что октет — это один байт, однако, байт может быть не равен 8 битам на некоторых архитектурах.
Ссылки
- Описание стандарта на standards.ieee.org (PDF) (англ.) (Дата обращения: 13 ноября 2009)