Скачиваний:
3
Добавлен:
15.04.2023
Размер:
748.84 Кб
Скачать

1.4 Протокол шифрования ccmp

CCMP (CCM mode Protocol) - протокол блочного шифрования с кодом аутентичности сообщения и режимом сцепления блоков и счётчика, протокол шифрования IEEE 802.11 созданный для замены TKIP, обязательного протокола шифрования в WPA и WEP, как более надёжный вариант.[4]

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

  • номер пакета PN увеличивается на некоторое положительное число для того, чтобы получать свой номер для каждого пакета данных так, что номер пакета никогда не повторяется дважды при использовании одного временного ключа;

  • используя поля в заголовке пакета, CCMP создаёт дополнительные аутентификационные данные (AAD) для ССМ;

  • составляется поле Nonce из номера пакета и поле приоритета, которое является зарезервированным, так что его значение должно быть установлено равным нулю;

  • новый номер пакета PN и идентификатор ключа key ID помещаются в заголовок пакета CCMP;

  • дополнительные аутентификационные данные, поле Nonce, непосредственно данные пакета с использованием временного ключа TK шифруются алгоритмом CCM.

Рисунок 1.4 – Схема шифрования CCMP

Схема дешифрования CCMP состоит из следующих действий (рисунок 1.5):

  • с использованием данных пакета создаются поля дополнительных идентификационных данных AAD и Nonce;

  • поле AAD извлекается из заголовка зашифрованного пакета;

  • поле Nonce создаётся из полей A2, порядкового номера пакета PN, а также поля приоритета;

  • для проверки целостности пакета, из него извлекается поле MIC;

  • пакет расшифровывается, и проверяется его целостность, для чего используются непосредственно текст зашифрованного пакета, значения дополнительных идентификационных данных, временный ключ, поля MIC и Nonce;

  • затем пакет снова собирается, уже в расшифрованном виде, и передаётся дальше на обработку;

  • процесс дешифрования предотвращает передачу повторяющихся пакетов на сторону пользователя, сравнивая порядковый номер пакет PN со своим внутренним счётчиком пакетов.[4]

Рисунок 1.4 – Схема дешифрования CCMP

2 Практическая часть

2.1 Задание 1

Исходные данные для вычислений приведены в таблице 2.1.

Таблица 2.1 – Исходные данные

Номер варианта XY

40

Метод аутентификации

PSK

SSID

sibsutis

MAC-адрес точки доступа

000726404eff

MAC-адрес клиента

9439e5b014e5

Пароль к Wi-Fi сети

kursovik40

Anonce (Hex)

4014c50f75dfc436a8ae365a5e93686dc2a0ae75337a6e1e1fd3e04677ae9040

Snonce (Hex)

40398518913d33a6d13bdfe57575e346c21848ab33b01d041831878407936a40

GTK (Hex)

40fd1604a1fe7153b85385f93a423effa0ae6aa9063098b553b03c1b06cba540

Номер варианта – четный. Расчет PTK делается для шифрования CCMP.

Вычисление ключа PTK.

Для того, чтобы начать передавать зашифрованные данные между ТД и клиентом, обоим участникам нужно вычислить Парный Транзитный Ключ (англ. Pairwise Transient Key - PTK). Этот ключ один из самых важных, так как он, в том числе, используется для первоначального установления безопасного соединения.

Ключ PTK вычисляется с помощью функции PRF (англ. Pseudo Random Function – псевдо случайная функция). Длина PTK зависит от того, какой режим используется: для TKIP - 512 бит, для CCMP - 384 бита. Для того чтобы вычислить ключ PTK, клиенту и точке доступа необходимо подать на вход функции PRF следующую информацию:

— ключ PMK;

  • переменные A, Y, B, X.

Ключ PMK в случае режима PSK вычисляется по формуле(2.1).

, (2.1)

где PassPhrase — пароль к сети Wi-Fi. Введенные пользователем символы (a-z, A-Z, 0-9 и спец. символы) переводятся в двоичный или шестнадцатеричный вид по таблице ASCII;

ssid – так же цифробуквенное название Wi-Fi сети, используется как т.н. «соль»;

4096 – число итераций при вычислении хэша;

32 – необходимая длина ключа PMK в байтах.

В результате получается ключ PMK в шестнадцатеричном формате.

PMK = e244e94cb42362f4634d74f60b7efc5ed7b312a1a7d7d98bf55899ca8a26c729. [5]

Рисунок 2.1 – Вычисление ключа PMK

Для вычисления ключа PTK нам необходимо запустить функцию HMAC-SHA1 три раза, так как 160 + 160 + 160 = 480 бит и требуется усечь до 384 бит.

Вычисление каждых 160 бит производится по формуле (2.2):

, (2.2)

Переменная A приведена в ASCII, поэтому конвертируем фразу в HEX:

A = Pairwise key expansion = 5061697277697365206b657920657870616e73696f6e.

Переменная B вычисляется по формуле (2.3):

(2.3)

где Min и Max – функции выбора минимального или максимального значения из двух. Выбор максимума осуществляется путем конвертации шестнадцатеричных значений в десятичные и их последующего сравнения;

символ || означает конкатенацию, т.е. простое объединение типа «один за другим»;

AA – это MAC‑адрес точки доступа (6 байт);

SPA – это MAC‑адрес клиента (6 байт);

ANonce и SNonce – последовательности случайных бит, сгенерированные точкой доступа и клиентом соответственно, длина 32 октета (байта);

Y – это один октет (байт) равный 0;

X – это один октет (байт), содержащий номер запуска функции HMAC-SHA1, так как мы будем вычислять функцию три раза, для нашего случая X = 0, 1, 2.

Последний байт 00 будет меняться в зависимости от номера вызова функции HMAC-SHA1. Ключ – PMK[6]. На рисунке 2.2 приведен результат функции HMAC-SHA1 для первой последовательности AYBX. Данные для вычисления приведены в таблице 2.2.

Таблица 2.2 – Данные для вычисления PTK

A

5061697277697365206b657920657870616e73696f6e

B

000726404eff9439e5b014e54014c50f75dfc436a8ae365a5e93686dc2a0ae75337a6e1e1fd3e04677ae904040398518913d33a6d13bdfe57575e346c21848ab33b01d041831878407936a40

Y

00

X

00-02

PMK

e244e94cb42362f4634d74f60b7efc5ed7b312a1a7d7d98bf55899ca8a26c729

Последовательность AYBX:

5061697277697365206b657920657870616e73696f6e00000726404eff9439e5b014e54014c50f75dfc436a8ae365a5e93686dc2a0ae75337a6e1e1fd3e04677ae904040398518913d33a6d13bdfe57575e346c21848ab33b01d041831878407936a4000

На рисунке 2.2 приведен результат функции HMAC-SHA1 для первой последовательности AYBX.

Рисунок 2.2 – Вычисление функции HMCA-SHA1 для X = 00

Результаты вычисления HMCA-SHA1 для последовательностей AYBX приведены в таблице 2.3.

Таблица 2.3 – Расчет HMAC-SHA1 для AYBX

X

00

6750644b12ab7963a0e9b8e1c8edc4d00c03310e

X

01

35bce4896a0adc7e7bfbc5e3ca4f245b0f195ed6

X

02

949606b154702e5bc22f7e351084ca9975a714f2

Соединим результаты HMAC-SHA1 и усечем до 384 бит (48 байт). Ключ PTK 48 байт:

6750644b12ab7963a0e9b8e1c8edc4d00c03310e35bce4896a0adc7e7bfbc5e3ca4f245b0f195ed6949606b154702e5b

Разделенный ключ PTK:

KCK = 6750644b12ab7963a0e9b8e1c8edc4d0– ключ подтверждения ключа EAPOL. 128 бит.

KEK = 0c03310e35bce4896a0adc7e7bfbc5e3 – ключ шифрования EAPOL-key. 128 бит.

TK = ca4f245b0f195ed6949606b154702e5b – для шифрования / дешифрования пакетов одноадресной передачи данных. 128 бит.

Рассчитанные кадры EAPOL представлены ниже в виде таблиц А.1, А.2, А.3, А.4 в приложении А. Значения, приведенные в двоичном виде, помечены буквой «B» в конце. Остальные значения приведены в шестнадцатеричном виде.