Дипломная работа: Программа установки защищенных сетевых соединений с использованием протокола ISAKMP
SKEYID_a = PRF (SKEYID, SKEYID_d | g^xy | CookieI | CookieR | 1)
SKEYID_e = PRF (SKEYID, SKEYID_a | g^xy | CookieI | CookieR | 2)
Из формул видно, что в расчете всех констант (а, следовательно, и во всех последующих расчетах) участвует известный только обменивающимся сторонам секретный ключ (PresharedKey), что обеспечивает аутентификацию сторон, т. к. никто другой не сможет правильно рас читать эти константы.
Из SKEYID_e мы получаем ключевую информацию. Остальные константы будут использованы при дальнейших расчетах.
В пакетах 5 и 6 партнеры обмениваются информацией, которая их идентифицирует (IDii и IDir) и информацией, которая их аутентифицирует (HASH_I, HASH_R). Идентификационная информация передается посредством Identificationpayload, где указывается тип идентификационной информации (IP адрес, имя пользователя, SubNetи т.п.) и собственно значение.
Аутентификационная информация передается через Hashpayload. Его содержимое рассчитывается по следующим формулам (для инициатора и ответчика соответственно):
HASH_I = PRF (SKEYID, g^xi | g^xr | CookieI | CookieR | SAi | IDii)
HASH_R = PRF (SKEYID, g^xr | g^xi | CookieR | CookieI | SAi | IDir)
Последний обмен (пакет 5 и 6) уже передается защищенным с помощью договоренных на первом этапе алгоритмов и рассчитанной после второго пакета ключевой информацией.
Фаза 1 ( AggressiveMode)
Aggressive Mode выполняет те же функции, что и Main Mode, но укладывается всего в три пакета [5]. Такое упрощение, однако, приводит к тому, что он более подвержен атакам, чем MainMode. На рисунке 3 представлена структура AggressiveMode.
В пакете 1 инициатор посылает сразу SApayload с предложением параметров соединения, KEpayload со своим открытым ключом, Noncepayload со случайной информацией и идентифицирует себя с помощью Identificationpayload.
Сразу видны недостатки данного режима. В SApayload-е не может быть предложено более одной группы параметров для алгоритма Diffie-Hellman-а т. к. сразу же посылается открытый ключ, а его размер напрямую зависит от этих параметров. В данном режиме, в отличие от MainMode, идентификационная информация посылается в открытом виде.
Ответчик, получив пакет 1, уже имеет достаточно информации для расчета рабочих констант и своей аутентификационной информации. Поэтому в пакет 2 состоит из тех же частей, что и пакет 1 (с соответствующим наполнением) и добавляется Hash payload, содержащий информацию, аутентифицирующую ответчика. Пакет еще не может быть зашифрован (т. к. инициатор не знает выбранного алгоритма и у него нет ключей), но можно уже провести ключевой информации, которая будет использована в будущем.
Рис. 3. Структура фазы 1 (AggressiveMode)
Инициатор из пакета 2 берет необходимую информацию. Затем вычисляет рабочие константы, аутентификационную информацию и ключи шифрования. Пакетом 3 инициатор аутентифицирует себя.
Фаза 2 ( QuickMode)
Целью второй фазы является получение параметров секретного соединения и ключевой информации [5] [6]. Все пакеты, передаваемые во время второй фазы, защищаются секретным соединением, созданным во время первой фазы. Одновременно с обеспечением конфиденциальности передаваемой информации обеспечивается и целостность данных путем передачи значения хеш-функции от данных.
Рис. 4. Структура фазы 2 (QuickMode)
Режим состоит из трех пакетов. Его структура представлена на рисунке 4. В первом пакете инициатор посылает SApayload, содержащий предложения о параметрах будущего соединения, случайную информацию (Noncepayload) для создания ключевой информации. Все остальные компоненты пакета являются опциональными. Если для расчета ключевой информации требуется использовать «свежий» ключевой материал, то осуществляется еще один обмен открытыми ключами, в противном случае для расчета берется информация из первой фазы. Также, если локальная политика требует использование во второй фазе идентификационной информации отличной от информации используемой в первой фазе, добавляются соответствующие Identificationpayload-ы.
Структура второго пакета аналогична первому, только заполняется информацией об ответчике. Исключение составляют только компоненты с идентификационной информацией, которые или принимаются (и тогда в таком же виде и отсылаются) или не принимаются и попытка установления соединения считается неудачной.
Третий пакет посылается инициатором в подтверждение правильности принятой информации и содержит только Hashpayload, который вычисляется с помощью буфера случайных данных, посланных ответчиком во втором пакете. Содержимое Hashpayload-ов вычисляются по следующим формулам:
HASH(1) = PRF (SKEYID_a, MessageID | SA | Ni [| KE] [| IDic | IDcr])
HASH(2) = PRF (SKEYID_a, MessageID | Ni | SA | Nr| [| KE] [| IDic | IDcr])
HASH(3) = PRF (SKEYID_a, 0 | Message ID | Ni | Nr)
Формула для расчета окончательного ключевого материала зависит от того, был ли обмен открытыми ключами для создания нового общего ключа. Если такого обмена не было, то формула следующая:
KEYMAT = PRF (SKEYID_d, protocol | SPI | Ni | Nr)
где protocol – номер протокола, для алгоритма которого считается ключевой материал.
Если все же вычисление общего ключа производилось, формула для расчета окончательного ключевого материала следующая:
KEYMAT = PRF (SKEYID_d, g^xy | protocol | SPI | Ni | Nr)
Таким образом, после второй фазы мы получаем всю необходимую информацию для создания секретного соединения. Список применяемых протоколов и используемых в них алгоритмы получается после обмена SApayload-ами во второй фазе. Ключевая информация для каждого алгоритма рассчитывается по приведенным выше формулам. Следует заметить, что приведенная выше структура протокола была упрощена для простоты восприятия (отсутствует рассмотрение остальных методов аутентификации и NewGroupMode).