CCMP

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

CCMP (англ. Counter Mode with Cipher Block Chaining Message Authentication Code Protocol — протокол блочного шифрования с кодом аутентичности сообщения (MIC) и режимом сцепления блоков и счётчика) — протокол шифрования 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 (вследствие того, что поле MIC[1] — 8-октетное[2]);
  • L = 2 (говорит о том, что длина поля составляет 2 октета, которых должно быть достаточно для хранения всех возможных длин пакетов MPDU стандарта IEEE 802.11).

Стандарт алгоритма СММ требует использования новых временных ключей для каждой вновь создаваемой сессии. Кроме того, СММ требует уникального значения Nonce для каждого кадра, защищённого конкретным выбранным временным ключом. CCMP использует для этого 48-разрядный номер пакета (PN).

Повторное использование PN-номера с тем же временным ключом обнуляет все гарантии безопасности.

Шифрование CCMP[править | править исходный текст]

Структура пакета протокола IEEE 802.11, использующего шифрование на основе CCMP[править | править исходный текст]

Использование CCMP обработки расширяет оригинальный размер пакета на 16 октетов, из которых 8 октетов располагаются в заголовке пакета MPDU и 8 октетов — в MIC-области. Заголовок CCMP состоит из следующих частей: PN, ExtIV, и идентификатора ключа. PN — 48-разрядный номер пакета, представляющий собой массив из 6 октетов.

структура пакета MDPU, зашифрованного алгоритмом CCMP

Алгоритм шифрования CCMP[править | править исходный текст]

Структурная схема протокола шифрования CCMP

ССМР преобразует незашифрованный текст пакета (plaintext на рисунке) и инкапсулирует его в пакет данных, используя следующий алгоритм.

  1. Увеличивается на некоторое положительное число номер пакета PN для того, чтобы получать свой номер для каждого пакета данных так, что номер пакета никогда не повторяется дважды при использовании одного временного ключа. Стоит отметить, что повторные пакеты данных не изменяются при их ретрансляции.
  2. Используя поля в заголовке пакета, CCMP создаёт дополнительные аутентификациионные данные (AAD) для ССМ. Алгоритм ССМ обеспечивает шифрование для полей, включённых в AAD. Поля заголовка пакета, которые могут измениться при его ретрансляции не должны учитываться при создании дополнительных аутентификационных данных и потому считаются нулевыми при создании AAD.
  3. Составляется поле Nonce из номера пакета, адреса A2 и поля приоритета, которое в существующей реализации является зарезервированным, так что его значение должно быть установлено равным нулю.
  4. Новый номер пакета NP и идентификатор ключа key ID помещаются в заголовок пакета CCMP.
  5. дополнительные аутентификационные данные, поле 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

CCMP принимает в качестве полезной нагрузки зашифрованный текст пакета и расшифровывает пакет, используя следующую последовательность действий.

  1. С использованием данных пакета создаются поля дополнительных идентификационных данных AAD и nonce.
  2. Поле AAD извлекается из заголовка зашифрованного пакета
  3. Поле создаётся из полей A2, порядкового номера пакета PN, а также поля приоритета
  4. Для проверки целостности пакета, из него извлекается поле MIC
  5. Пакет расшифровывается, и проверяется его целостность, для чего используется непосредственно текст зашифрованного пакета, значения дополнительных идентификационных данных, временных ключ, поля MIC и nonce.
  6. Затем пакет снова собирается, уже в расшифрованном виде, и передаётся дальше на обработку.
  7. Процесс расшифрования предотвращает передачу повторяющихся пакетов на сторону пользователя, сравнивая порядковый номер пакета PN со своим внутренним счётчиком пакетов.

Примечания[править | править исходный текст]

  1. Message integrity code, см WEP.
  2. В большинстве случаев можно считать, что октет — это один байт, однако байт может быть не равен 8 битам на некоторых архитектурах.

Ссылки[править | править исходный текст]