Кажется самоочевидным, что если два партнера или шлюза намереваются установить безопасное соединение, необходим некоторый объем общих секретных данных для реализации аутентификации и/или алгоритмов шифрования. Существует, конечно, проблема безопасной транспортировки этих секретных данных.
Когда IPsec-дейтограмма, AH или ESP попадает в интерфейс, как интерфейс узнает, какой набор параметров (ключ, алгоритм и политика) использовать? Любая машина может вести много диалогов, каждый со своим набором параметров безопасности и нужен механизм управления этим процессом.
Параметры безопасности задаются SA (Security Association), которая определяет параметры и процедуры, специфические для конкретного соединения. Каждый партнер может иметь один или более SA. Когда дейтограмма приходит, для нахождения правильного SA в базе данных SADB (Security Associations Database – база данных ассоциаций безопасности) используются три значения:
· IP адрес места назначения.
· IPsec протокол (ESP или AH, содержится в заголовке).
|
|
· Индекс параметров безопасности (SPI).
Во многих отношениях эта тройка может быть уподоблена IP сокету, который однозначно определяется IP адресом удаленного партнера (IPv4 или IPv6), протоколом и номером порта. В перечень компонентов SA входят:
· Номер по порядку. 32-битовый код, используемый для формирования поля порядковый номер в заголовках АН и ESP.
· Переполнение счетчика порядкового номера. Флаг, индицирующий переполнение счетчика порядкового номера. При его установке дальнейшая посылка пакетов для заданной SA должна быть прекращена.
· Окно для подавления попыток атак воспроизведения. Используется для определения того, является ли входящий АН- или ESP-пакет воспроизведением. Задача решается путем контроля того, попадает ли номер пакета в скользящее окно номеров.
· Информация AH. алгоритм аутентификации, ключи, время жизни ключей и другие параметры.
· Информация ESP: алгоритмы шифрования и аутентификации, ключи, параметры инициализации (IV), времена жизни ключей и другие параметры.
· Окно для подавления попыток атак воспроизведения. Используется для определения того, является ли входящий АН- или ESP-пакет воспроизведением. Задача решается путем контроля того, попадает ли номер пакета в скользящее окно номеров.
· Информация AH. алгоритм аутентификации, ключи, время жизни ключей и другие параметры.
· Информация ESP: алгоритмы шифрования и аутентификации, ключи, параметры инициализации (IV), времена жизни ключей и другие параметры.
· Режим работы IPsec. Туннельный, транспортный или любой.
· MTU пути. Максимальный размер пакета, который может быть передан через виртуальный канал без фрагментации.
|
|
При создании новой SA в счетчик номера по порядку заносится нуль, далее он инкрементируется при посылке каждого пакета. Когда содержимое счетчика достигает значения 232-1, текущая SA аннулируется и должна быть согласована новая ассоциация безопасности и новый ключ.
Так как IP работает без установления соединения и доставка пакетов по порядку не гарантируется, протокол требует, чтобы получатель сформировал скользящее окно с шириной W, например, W=64 пакета. Правый край окна соответствует наибольшему номеру по порядку N для благополучно принятых пакетов. Любой пакет с номером в диапазоне от N-W+1 до N считается принятым корректно. Если полученный пакет оказался по левую границу окна, или его аутентификация потерпела неудачу, то такой пакет отбрасывается. Ниже приведен пример, где длина W=7 (реально это число может достигать 232). Первые две строки показывают состояние окна с началом в позиции 1 и концом в позиции 7, пакет с номером 9 получен, но его подлинность не подтверждена. Буквами П обозначены полученные пакеты с подтвержденной подлинностью, буквами Н – неполученные пакеты; а буквой «О», полученный пакет, подлинность которого не подтверждена. Серым цветом отмечено окно «W».
Когда подлинность полученного пакета с номером 9 оказалась подтвержденной, правая граница окна смещается на эту позицию и занимает положение, показанное на вторых строках данного примера. В этом состоянии, если придет пакет с номером 1 или 2, они будут отвергнуты. Если же придут пакеты с номерами 5 или 8 они будут подвергнуты обработке, так как находятся в пределах окна W.
Ассоциации безопасности сопрягаются с однонаправленными соединениями, так что для двунаправленной связи требуется как минимум две такие ассоциации. Кроме того, каждый протокол (ESP/AH) имеет свою собственную SA, для каждого из направлений обмена, таким образом, полномасштабная VPN AH+ESP требует наличия четырех ассоциаций безопасности. Все эти данные хранятся в базе данных SADB.
В базе данных SADB содержится:
· AH: алгоритм аутентификации.
· AH: аутентификационный секретный ключ (authentication secret).
· ESP: алгоритм шифрования.
· ESP: секретный ключ шифрования.
· ESP: разрешение аутентификации (yes/no).
· Параметры обмена ключами.
· Ограничения маршрутизации.
· IP политика фильтрации.
Некоторые реализации поддерживают SPD (Security Policy Database) со средствами работы из командной строки, другие с GUI, в то время как прочие предоставляют WEB-интерфейс для работы через сеть. Каждая запись в SPD определяется набором значений полей IP и протокола верхнего уровня, называемых селекторами. Эти селекторы используются для фильтрации исходящего трафика, для того чтобы поставить его в соответствие с определенной SA. Обработка исходящих IP-пакетов производится в следующей последовательности.
· сравниваются значения соответствующих полей в пакете (селекторные поля) с SPD и находится нуль или более SA.
· Определяется SA (если таковая имеется) для пакета и сопряженный с ней SPI.
· Выполняются необходимые операции IPsec (AH или ESP).
SPD запись определяется следующими селекторами:
· IP-адрес места назначения. Это может быть один IP-адрес (обязательно уникастный!), нумерованный список адресов или адресная маска (префикс). Последние два варианта нужны для работы группами адресов, имеющими идентичную SA (например, за firewall).
· IP-адрес отправителя. Это может быть один IP-адрес, нумерованный список адресов или адресная маска (префикс). Последние два варианта нужны для поддержки нескольких отправителей, имеющих идентичную SA, (например, за firewall).
· UserID. Идентификатор пользователя служит для идентификации политики, соответствующей имени пользователя или системы.
· Уровень чувствительности данных. Уровень чувствительности данных используется для определения характера данных (например, “Секретно” или “Unclassified”).
|
|
· Протокол транспортного уровня. Это значение извлекается из поля следующий заголовок пакета IPv4 или IPv6. Это может быть индивидуальный код протокола, список кодов протокола или диапазон таких кодов.
· Протокол IPsec (AH, ESP или AH/ESP). Извлекается (если присутствует) из поля следующий заголовок пакета IPv4 или IPv6.
· Порты отправителя и получателя. Это могут быть индивидуальные номера портов ТСР или UDP, список портов или произвольный порт.
· Класс IPv6. Значение класса получается из заголовка IPv6. Это может быть специфическое значение и код произвольного класса.
· Метка потока IPv6. Значение метки потока получается из заголовка IPv6. Это может быть специфическое значение метки потока или код произвольной метки.
· Тип сервиса IPv4. Значение ToS получается из заголовка IPv4. Это может быть специфическое значение ToS или указатель произвольного значения.