Политика безопасности
Протокол IKE
Будем использовать следующие обозначения.
HDR – заголовок сообщения. Запись HDR* означает, что одержимое сообщения зашифровано.
SA – сообщение SA, которое содержит один или более Proposal. Инициатор посылает несколько Proposal, упорядоченных в соответствии со своим приоритетом. Получатель должен выбрать только один Proposal.
CKY-I и CKY-R есть Cookie Инициатора и Получателя соответственно.
gXi и gXr – открытые значения Диффи-Хеллмана Инициатора и Получателя соответственно.
КЕ – сообщение обмена ключа, т.е. открытые значения, которыми обмениваются в алгоритме Диффи-Хеллмана.
Nx – сообщение Nonce; x может быть i или r для Инициатора и Получателя соответственно.
IDx – содержимое идентификации для х. Х может быть ii или ir для Инициатора и Получателя во время фазы I; или ui или ur для Инициатора и Получателя во время фазы II.
SIG – сообщение подписи. Подписываемые данные зависят от типа обмена.
CERT – сообщение, содержащее сертификат.
HASH (HASH(2)или HASH_I) – сообщение, содержащее хэш данных, которые зависят от способа аутентификации.
PRF (key, msg) – псевдослучайная функция. Чаще всего используется хэш-функция с ключом, результатом которой является значение, которое удовлетворяет требованиям к случайным числам. PRF используется как для получения ключа, так и для аутентификации участников при использовании аутентификации по общему секрету.
SKEYID – значение, полученное из секрета и известное только участникам обмена.
SKEYID_e – ключ, используемый для обеспечения конфиденциальности сообщений.
SKEYID_а – ключ, используемый для проверки целостности сообщений.
SKEYID_d – ключ, используемый для получения ключей для безопасных ассоциаций, создаваемых в фазе II, т.е. АН SA и ESP SA.
Обзор протокола
Протокол IKE имеет две фазы, в каждой из которых может быть выполнено несколько обменов.
В результате фазы I участники устанавливают защищенный канал, который называется IKE SA. В фазе I определено два режима: Main Mode и Aggressive Mode.
Фаза II начинается после установления IKE SA. Для второй фазы обмена определен режим Quick Mode.
Преимущество использования двух фаз обмен ключа состоит в том, что для создания нескольких SA требуется выполнение только одной фазы I. Main Mode фазы I обеспечивает защиту идентификации. Когда нет необходимости в защите идентификации, может использоваться Aggressive Mode для уменьшения числа взаимных передач.
Участники фазы I договариваются о следующих параметрах.
- Алгоритм шифрования
- Хэш-алгоритм
- Метод аутентификации
- Информация о группе для алгоритма Диффи-Хеллмана
Все эти параметры являются обязательными, и о них должны вестись переговоры. Кроме того, возможны дополнительные переговоры о псевдослучайной функции (PRF). Если переговоры о ней не ведутся, то используется HMAC с хэш-алгоритмом, о котором договорились.
Группа Диффи-Хеллмана определяется по номеру.
Обмены
Существует два режима, используемых в фазе I: Main Mode и Aggressive Mode. В обоях случаях создается аутентифицированный ключевой материал, полученный из обмена открытыми значениями алгоритма Диффи-Хеллмана. В фазе II используется Quick Mode для создания нового материала ключа и ведения переговоров о AH SA или ESP SA.
Первым посылается сообщение SA.
Открытое значение Диффи-Хеллмана передается в содержимом КЕ в фазе I, оно может передаваться в фазе II обмена, если требуется PFS. Длина открытого значения Диффи-Хеллмана определяется в сообщении SA.
Main Mode обеспечивает защиту идентификаций. В первых двух сообщениях договариваются об используемых алгоритмах; в следующих двух сообщениях обмениваются открытыми значениями Диффи-Хеллмана и случайными значениями; последние два сообщения аутентифицируют обмен Диффи-Хеллмана. Метод аутентификации определяется при переговорах в первых сообщениях и влияет на последовательность сообщений.
В первых двух сообщениях Aggressive Mode договариваются об используемых алгоритмах, обмениваются открытыми значениями Диффи-Хеллмана, случайными значениями и идентификациями. Второе сообщение аутентифицирует Получателя. Третье сообщение аутентифицирует Инициатора.
Определено два метода аутентификации как для Main Mode, так и для Aggressive Mode - цифровая подпись и предварительно распределенный секрет.
Значение SKEYID для каждого метода аутентификации вычисляется по своему алгоритму.
Для подписей:
SKEYID = PRF (Ni | Nr, gxy)
Для предварительно распределенного секрета:
SKEYID = PRF (pre-shared-key, Ni | Nr)
Результатом как Main Mode, так и Aggressive Mode являются три ключа:
SKEYID_d = PRF (SKEYID, gxy | CKY-I | CKY-R|0) SKEYID_a = PRF (SKEYID, SKEYID_d | gxy | CKY-I | CKY-R|1) SKEYID_e = PRF (SKEYID, SKEYID_a | gxy | CKY-I | CKY-R|2)
и согласованные алгоритмы для защиты дальнейших взаимодействий. Ключ, используемый для шифрования, получается из SKEYID_e с помощью алгоритма, о котором договорились в первых сообщениях.
Для проверки целостности обмена и аутентификации участников Инициатор вычисляет HASH_I, и Получатель создает HASH_R, где:
HASH_I = PRF (SKEYID, gXi | gXr | CKY-I | CKY-R |SAi|IDii) HASH_R = PRF (SKEYID, gXr | gXi | CKY-R | CKY-I |SAi|IDir)
При аутентификации с помощью цифровых подписей HASH_I и HASH_R подписаны; при аутентификации предварительно распределенным секретом HASH_I и HASH_R непосредственно аутентифицируют обмен.
Метод аутентификации влияет на последовательность сообщений и использование сообщений в фазе I.
Фаза I с аутентификацией с помощью подписей
Последовательность сообщений в Main Mode с аутентификацией с помощью подписей следующая:
Последовательность сообщений в Aggressive Mode с аутентификацией с помощью подписей следующая:
В обоих режимах подписи SIG_I или SIG_R выполняются для HASH_I и HASH_R соответственно.
Фаза I с аутентификацией по предварительно распределенному секрету
Общий ключ, разделяемый Инициатором и Получателем, используется для аутентификации участников и обеспечения целостности сообщений.
Когда выполняется аутентификация по предварительно распределенному секрету, последовательность сообщений в Main Mode следующая:
В Aggressive Mode с аутентификацией по предварительно распределенному секрету последовательность сообщений следующая:
При использовании аутентификации по предварительно распределенному секрету в Main Mode ключ может идентифицироваться только по IP-адресу противоположной стороны, так как HASH_I вычисляется до того, как Инициатор получит IDir.
Фаза II – Quick Mode
Quick Mode сам по себе законченным обменом не является. Это означает, что он связан с фазой I обмена, так как использует ключи, вычисленные на фазе I. Сообщения, которыми обмениваются в Quick Mode, зашифрованы алгоритмами и ключами, определенными в фазе I, т.е. все сообщения, за исключением заголовка будут зашифрованы. Первое сообщение HASH проверяет, что соединение не сброшено и аутентифицирует участников.
Quick Mode выполняет переговоры об SA и обменивается Nonce, которые обеспечивают защиту от повторов. Nonce используются для создания нового материала ключа и предотвращения replay-атак, в результате которых могут быть созданы ложные SA. Можно произвести обмен дополнительным сообщением KE, чтобы для SA, созданной на фазе II, полностью обновить ключи.
Базовый Quick Mode (без содержимого KE) вычисляет ключи, из клю-чевого материала, созданного в фазе I. Считается, что это хуже, так как не обеспечивается PFS. При использовании дополнительного сообщения KE ключи полностью обновляются.
При Quick Mode последовательность сообщений следующая:
HASH(1)вычисляется PRF для поля Message-ID (M-ID) из заголовка, присоединенного ко всему сообщению.
HASH(2)вычисляется аналогично HASH(1). Включение Nonce как Инициатора, так и Получателя в HASH(2)сделано для того, чтобы подтвердить жизнеспособность SA.
HASH (3) также вычисляется для доказательства жизнеспособности.
HASH(1) = PRF (SKEYID_a, M-ID | SA | Ni [ | KE ] [ | IDci | Idcr ]) HASH(2) = PRF (SKEYID_a, M-ID | Ni | SA | Nr [ | KE ] [ | IDci | Idcr ]) HASH (3) = PRF (SKEYID_a, 0 | M-ID | Ni | Nr)
Если политика не требует PFS, т.е. обмен сообщениями KE не выполняется, то новый материал ключа вычисляется следующим образом:
KEYMAT = PRF (SKEYID_d, protocol | SPI | Ni | Nr)
Если PFS требуется, и участники обмениваются содержимым KE, то новый материал ключа вычисляется следующим образом:
KEYMAT = PRF (SKEYID_d, g (qm)xy | protocol | SPI | Ni | Nr)
Где g (qm)xy является разделяемым секретом из последнего обмена Диффи-Хеллмана, выполненного в Quick Mode.
Значения Protocol и SPI берутся из сообщения Proposal из Quick Mode.
В ситуации, когда суммарная длина требуемых ключей больше, чем длина выходного значения PRF, KEYMAT расширяется конкатенацией результатов до тех пор, пока не будет получено необходимое количество битов ключа.
KEYMAT = K1 | K2 | K3 | …
Где
K1 = PRF (SKEYID_d, [g (qm)xy | ] protocol | SPI |Ni| Nr) K2 = PRF (SKEYID_d, K1 | [g (qm)xy |]protocol|SPI|Ni| Nr) K3 = PRF (SKEYID_d, K2 | [g (qm)xy |]protocol|SPI|Ni| Nr)
В Quick Mode за один обмен можно договориться о создании нескольких SA: