Протокол шифрования ESP (RFC 2406) предназначен не только для предотвращения угроз целостности, но и конфиденциальности за счет применения шифрования.
Как и в случае с AH, реализация протокола заключается в добавлении специального заголовка после стандартного заголовка IP-пакета с одновременным шифрованием поля данных этого пакета.
Формат заголовка ESP следующий:
1. Security Parameters Index (SPI, 32 бита) – индекс параметров защиты, идентифицирует специальную запись, в которой указываются алгоритмы шифрования, хеширования, ключи и другие параметры виртуального канала.
2. Sequence Number Field (32 бита) – номер пакета, предназначенный для дополнительной аутентификации пакетов в виртуальном канале, выставляемый отправителем случайно, но в порядке возрастания. После достижения максимального значения виртуальный канал закрывается и открывается новый.
3. Payload Data (переменной длины) – данные, передаваемые в IP-пакете, т.е. инкапсулированный пакет протокола верхнего уровня (например, TCP или UDP). Перед данными могут следовать специальные последовательности, обусловленные алгоритмом шифрования.
4. Padding (0-255 байт) – дополнительные данные, выравнивающие поле данных до определенной длины либо дополняющие его комбинациями, предусмотренными алгоритмом шифрования.
5. Padding Length (8 бит) – длина в байтах поля дополнительных данных.
6. Next Header (8 бит) – поле, содержащее идентификатор протокола, чей заголовок и данные следовали за заголовком IP (теперь там стоит указатель на ESP) и которые оказались теперь в поле Payload Data.
7. Authentication Data (переменной длины, но чтобы длина всего заголовка была кратной 32 битам в IPv4 и 64 битам в IPv6) – данные аутентификации, содержащее цифровую подпись (ICV, Integrity Check Value) данных, описанных предыдущими пунктами. Это поле является необязательным.
Заметим, что зашифровываются только данные, описанные пунктами 3-6, собственно заголовком протокола являются поля 1 и 2, а поля 4-6 называют ESP-Trailer.
В качестве алгоритма шифрования допускается применение любого симметричного алгоритма (RFC 2451). Обязательным к реализации производителем является лишь DES-CBC (Cipher Block Chaining, RFC 2405) с 56-разрядным ключом. В настоящее время в связи с недостаточной его стойкостью стандартом де-факто становится Triple-DES с 168-разрядным ключом и более быстрый AES с ключом 128 бит.
Предусмотрена возможность использования протокола ESP только для выполнения аутентификации, без шифрования данных. Функционально, таким образом, он становится практически эквивалентным протоколу AH, это сделано для повышения общей гибкости системы IPSec. В этом случае говорят, что используется алгоритм шифрования Null (RFC 2410), который на самом деле заключается в том, что выходной шифртекст равен входному открытому тексту.
Для алгоритмов аутентификации предусмотрены те же соглашения и требования, что и в протоколе AH. Однако выполнение аутентификации для ESP и наличие соответствующего поля являются необязательными.
Заметим также, что даже при наличии аутентификации, в отличие от протокола AH, не происходит защиты полей заголовка IP. В случае применения режима туннелирования это не столь важно, однако в транспортном режиме становится существенным. Поэтому стандарт IPSec предусматривает как раздельное применение протоколов AH и EPS, так и их одновременное использование. В этом случае заголовок AH располагается перед заголовком ESP. Т.е. сначала работает протокол шифрования ESP, а затем полученный IP-пакет поступает на вход протокола аутентификации. Отметим, что параметры обоих протоколов при этом описываются разными записями в базах данных шлюзов VPN и идентифицируются различными SPI.