Контексты безопасности
Контексты безопасности (Security Associations) образуют основу криптографических сервисов безопасности на базе протоколов IPsec. Для защиты двусторонней связи между узлами сети необходимы два контекста безопасности: один - для входящих потоков, другой - для исходящих. Контексты безопасности содержат информацию об IP-адресах, типе защитного протокола ( AH или ESP ), криптографических алгоритмах, ключах для аутентификации и шифрования и периоде их действия.
Контекст безопасности уникально идентифицируется тремя элементами:
* индексом параметров безопасности ( Security Parameters Index - SPI );
* целевым IP-адресом;
* идентификатором защитного протокола.
Итак, индекс SPI - это идентификатор контекста безопасности, который указывается в протоколе AH или ESP. Целевой IP-адрес идентифицирует соединение IPsec, он может быть индивидуальным или групповым адресом либо диапазоном адресов. В настоящее время обмен ключами IKE реализован только для индивидуальных адресов, а для групповых адресов или диапазонов распределение ключей выполняется вручную.
| | Хост | Маршрутизатор или межсетевой экран |
|Хост | Транспортный режим или туннельный режим | Туннельный режим |
|Маршрутизатор или межсетевой экран | Туннельный режим | Туннельный режим |
Таблица 17.1.Режимы, используемые для разных типов соединений
Протоколы обеспечения аутентичности и конфиденциальности могут применяться в двух режимах: транспортном и туннельном. Обычно транспортный режим используется хостами, при этом защищается только содержимое IP-пакетов и опционально - некоторые поля заголовков. В туннельном режиме защищается весь пакет: он инкапсулируется в другой IP-пакет, при этом происходит как бы "обертывание", или заключение в конверт, передаваемой порции данных [6]. Туннельный режим обычно реализуют на специально выделенных защитных шлюзах, в роли которых могут выступать маршрутизаторы или межсетевые экраны (см. рис. 17.1).
Рис. 17.1. Стеки протоколов в разных режимах
В транспортном режиме заголовок протокола ( AH или ESP ) располагается в стеке протоколов после заголовка исходного IP-пакета и перед заголовками протоколов более высокого уровня [70]. В туннельном режиме заголовок протокола ( AH или ESP ) располагается в стеке протоколов между двумя заголовками: после заголовка внешнего IP-пакета и перед заголовком внутреннего исходного IP-пакета (см. рис. 17.1).
Протокол аутентифицирующего заголовка AH
протокол аутентифицирующего заголовка AH обеспечивает:
* целостность IP-пакетов, данных протоколов более высокого уровня и определенных полей IP-заголовков;
* аутентификацию источника данных (на основе IP-адреса узла сети или имени конечного пользователя);
* защиту от ложного воспроизведения ранее переданных IP-пакетов.
Контроль целостности базируется на проверке кода аутентификации хэшированного сообщения Hashed Message Authentication Code (HMAC), вычисляемого при помощи хэш-функции MD5 или SHA-1 с секретным симметричным ключом, который известен обеим взаимодействующим сторонам.
Рис. 17.2 иллюстрирует типичные поля данных протокола AH. Протокол содержит пять полей: Next Header, Length, SPI, Sequence Number и Authentication Data.
Рис. 17.2. Поля данных протокола AH
Поле Next Header (следующий заголовок) указывает, какой протокол более высокого уровня инкапсулируется при помощи AH. В туннельном режиме это поле обычно содержит IP v4 или IP v6, а в транспортном режиме - TCP, UDP или ICMP.
Поле Length (длина) задает размер заголовка протокола AH. Размер зависит от типа используемой хэш-функции, значение HMAC содержится в единственном поле переменной длины.
Поле SPI (индекс параметров безопасности) содержит 32-разрядное произвольное значение, которое идентифицирует контекст безопасности.
Поле Sequence Number (порядковый номер) используется для задания значения счетчика IP-пакетов (32-разрядного монотонно возрастающего) и защиты от воспроизведения пакетов. Отправитель пакета должен задавать это значение, а получатель пакета может либо обрабатывать его, либо игнорировать.
Поле Authentication Data (аутентификационные данные) содержит значение HMAC для данного IP-пакета. Это поле имеет переменную длину, которая должна быть кратна 32 разрядам.
При передаче пакета его порядковый номер, указываемый в поле Sequence Number, увеличивается, а затем поля IP-заголовка и протокола более высокого уровня хэшируются для создания HMAC на основе общего секретного симметричного ключа. После получения IP-пакета получателем выполняется та же самая последовательность операций. Если вычисленное им значение HMAC не соответствует значению, полученному по протоколу AH, то пакет не принимается. Кроме того, если контекст безопасности содержит информацию о применении средства защиты от воспроизведения пакетов, то значение поля Sequence Number уменьшается на единицу, то есть восстанавливается прежнее значение счетчика IP-пакетов.
Протокол инкапсулирующей защиты содержимого ESP
Протокол инкапсулирующей защиты содержимого ESP поддерживает конфиденциальность, аутентификацию и целостность IP-пакетов. Конфиденциальность обеспечивается путем шифрования содержимого IP-пакетов, а также части заголовка и трейлера (хвостовой части) протокола ESP ; надежность шифрования зависит, прежде всего, от используемого алгоритма шифрования. Аутентификация источника данных и защита целостности осуществляется на основе HMAC (как и в протоколе AH ). Хотя сервисы конфиденциальности и аутентификации (который включает целостность) являются опциональными, в каждом контексте безопасности должен быть задан, по крайней мере, один сервис безопасности.
В качестве алгоритмов шифрования в протоколе ESP используются алгоритмы DES и Triple-DES, для вычисления HMAC применяется хэш-функция типа MD5 или SHA-1. Рис. 17.3 иллюстрирует типичные поля данных протокола ESP. Заголовок ESP содержит два поля: SPI и Sequence Number, их синтаксис и семантика совпадает с одноименными полями протокола AH. Трейлер ESP состоит из четырех полей: Padding, Pad Length, Next Header и Authentication Data.
Поле Padding (заполнитель) используется для того, чтобы размер шифруемых данных был кратен размеру криптографического блока.
Рис. 17.3. Поля данных протокола ESP
Поле Pad Length (длина заполнителя) характеризует размер заполнителя и зависит от используемого алгоритма шифрования и заданного уровня конфиденциальности IP-трафика.
Поле Next Header (следующий заголовок) содержит информацию о том, какой протокол более высокого уровня инкапсулируется при помощи ESP. В туннельном режиме это поле обычно содержит IP v4 или IP v6, а в транспортном режиме - TCP, UDP или ICMP.
Поле Authentication Data (аутентификационные данные) содержит значение HMAC для данного IP-пакета. Это поле имеет переменную длину, которая должна быть кратна 32 разрядам. Если аутентификация источника данных или защита целостности не требуется, то это поле отсутствует или имеет нулевую длину.
При передаче пакета его порядковый номер, указываемый в поле Sequence Number, увеличивается, а затем поля заголовка ESP, протокола более высокого уровня и трейлера ESP хэшируются для создания HMAC на основе общего секретного симметричного ключа. Затем поля протокола более высокого уровня и трейлер ESP (за исключением аутентификационных данных) шифруются; если необходим начальный вектор, то он предваряет шифртекст. После получения IP-пакета получателем выполняется расшифрование и расчет того же самого значения HMAC. Если вычисленное им значение HMAC не соответствует значению, полученному в трейлере ESP, то пакет не принимается. Кроме того, если контекст безопасности содержит информацию об использовании средства защиты от воспроизведения пакетов, то значение поля Sequence Number уменьшается на единицу, то есть восстанавливается прежнее значение счетчика IP-пакетов.