- •10.05.02 Информационная безопасность телекоммуникационных систем, специализация Защита информации в системах связи и управления (очная форма обучения)
- •1 Теоретические сведения
- •1.1 Аутентификация в беспроводных сетях стандарта ieee 802.11
- •1.2 Основы алгоритма шифрования wep
- •1.3 Основы шифрования wpa
- •1.4 Протокол шифрования ccmp
- •2 Практическая часть
- •2.1 Задание 1
- •2.2 Задание 2
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» в конце. Остальные значения приведены в шестнадцатеричном виде.