| Rodzaj algorytmu |
protokół szyfrujący |
|---|---|
| Data stworzenia | |
| Autorzy |
grupa robocza IEEE 802.11i |
| Długość klucza |
128 bitów |
CCMP (ang. Counter Mode with Cipher Block Chaining Message Authentication Code Protocol) – tryb licznika z CBC-MAC – protokół szyfrujący oparty na algorytmie AES, który zastąpił starsze protokoły WEP i TKIP. Protokół został zatwierdzony przez grupę roboczą IEEE 802.11i 24 czerwca 2003 roku, a następnie zaimplementowany jako następca TKIP oraz wymagany element certyfikacji WPA w wersji 2, gdy 24 czerwca 2004 roku pojawiła się ostateczna wersja standardu bezpieczeństwa 802.11i.
Wprowadzenie CCMP stanowiło fundamentalną zmianę w zabezpieczeniach bezprzewodowych sieci lokalnych, oznaczającą przejście od czerpiących z WEP i TKIP szyfrów strumieniowych do szyfru blokowego AES. Głównym zadaniem projektowym protokołu jest równoczesne zapewnienie poufności, autentyczności oraz integralności przesyłanych danych, których to celów starsze rozwiązania nie były w stanie bezpiecznie zagwarantować.
Struktura CCMP opiera się na kompozycji generycznej, łączącej dwa niezależne mechanizmy kryptograficzne: tryb licznikowy AES (zapewniający poufność poprzez szyfrowanie) oraz kod uwierzytelniający CBC-MAC (gwarantujący autentyczność i integralność).
W celu realizacji zadań ochronnych protokół wykorzystuje pojedynczy, 128-bitowy klucz szyfrujący K, pochodzący bezpośrednio z procesu czteroetapowego uzgadniania kluczy (IEEE four-way handshake). CCMP, we współpracy z tym mechanizmem oraz strukturą uwierzytelniania IEEE 802.1X, odpowiada za praktyczną realizację koncepcji bezpiecznej sieci RSN (Robust Secure Network).
W specyfikacji CCMP kluczowe parametry kryptograficzne są ściśle zdefiniowane. Pole długości wiadomości (l) ma stałą wartość wynoszącą 2 bajty, natomiast znacznik uwierzytelniający MIC (Message Integrity Code) ma stałą długość równą 8 bajtów.
Dla każdego przesyłanego pakietu protokół generuje nagłówek o wielkości 8 bajtów, w skład którego wchodzi 48-bitowy numer pakietu (PN), 8-bitowy identyfikator klucza (key ID) oraz 8-bitowy rozszerzony wektor inicjujący (ext IV). Ponadto dla każdej szyfrowanej jednostki MPDU protokół wymaga unikalnego wektora inicjującego (nonce) o rozmiarze 13 bajtów. Składa się on z:
Mimo że CCMP jest dwuprzebiegowym trybem uwierzytelniania i szyfrowania (AE), w którym operacje te odbywają się w osobnych cyklach, nie stanowi on pełnego trybu uwierzytelnionego szyfrowania z danymi skojarzonymi (AEAD).
Jedną ze słabości efektywnościowych protokołu jest brak możliwości wstępnego przetworzenia dodatkowych danych uwierzytelniających (AAD) pochodzących z nagłówka MPDU. Wymusza to generowanie i przeliczanie nowego AAD osobno dla każdego transmitowanego pakietu. Ponadto konstrukcja CCMP uniemożliwia losowe uwierzytelnianie bloków danych z zachowaniem pełnego bezpieczeństwa. Ograniczenie to bezpośrednio wynika z wysoce sekwencyjnego i nieprzyrostowego charakteru obliczania znacznika MIC.