IPsec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP. Позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет. В основном применяется для организации VPN-соединений.
История
Первоначально сеть Интернет была создана как безопасная среда передачи данных между военными. Так как с ней работал только определённый круг лиц, людей образованных и имеющих представления о политике безопасности, то явной нужды построения защищённых протоколов не было. Безопасность организовывалась на уровне физической изоляции объектов от посторонних лиц, и это было оправдано, когда к сети имело доступ ограниченное число машин. Однако, когда Интернет стал публичным и начал активно развиваться и разрастаться, такая потребность появиласьСтанислав Коротыгин, IPSec — протокол защиты сетевого трафика на IP-уровне ..
И в 1994 году Совет по архитектуре Интернета (IAB) выпустил отчёт «Безопасность архитектуры Интернета». Он посвящался в основном способам защиты от несанкционированного мониторинга, подмены пакетов и управлению потоками данных. Требовалась разработка некоторого стандарта или концепции, способной решить эту проблему. В результате появились стандарты защищённых протоколов, в числе которых и IPsec. Первоначально он включал в себя три базовые спецификации, описанные в документах (RFC1825, 1826 и 1827), однако впоследствии рабочая группа IP Security Protocol IETF пересмотрела их и предложила новые стандарты (RFC2401 — RFC2412), используемые и в настоящее время.
Стандарты RFC 4301 (ранее RFC 2401) (Security Architecture for the Internet Protocol) — архитектура защиты для протокола IP. RFC 4302 (ранее RFC 2402 )(IP Authentication header) — аутентификационный заголовок IP. RFC 2403 (The Use of HMAC-MD5-96 within ESP and AH) — использование алгоритма хеширования MD-5 для создания аутентификационного заголовка. RFC 2404 (The Use of HMAC-SHA-1-96 within ESP and AH) — использование алгоритма хеширования SHA-1 для создания аутентификационного заголовка. RFC 2405 (The ESP DES-CBC Cipher Algorithm With Explicit IV) — использование алгоритма шифрования DES. RFC 4303 (ранее RFC 2406) (IP Encapsulating Security Payload [ESP]) — шифрование данных. RFC 2407 (The Internet IP Security Domain of Interpretation for ISAKMP) — область применения протокола управления ключами. RFC 2408 (Internet Security Association and Key Management Protocol [ISAKMP]) — управление ключами и аутентификаторами защищённых соединений. RFC 4109 (ранее RFC 2409) (Algorithms for Internet Key Exchange version 1 (IKEv1)) — обмен ключами IKEv1. RFC 4306 (The Internet Key Exchange (IKEv2) protocol) — протокол обмена ключами IKEv2. RFC 8247 (Algorithm Implementation Requirements and Usage Guidance the Internet Key Exchange Protocol Version 2 (IKEv2) - правила реализации и использования криптоалгоритмов в IKEv2. RFC 2410 (The NULL Encryption Algorithm and Its Use With IPsec) — нулевой алгоритм шифрования и его использование. RFC 2411 (IP Security Document Roadmap) — дальнейшее развитие стандарта. RFC 2412 (The OAKLEY Key Determination Protocol) — проверка соответствия ключа.
Архитектура IPsec Построение защищённого канала связи может быть реализовано на разных уровнях модели OSI. IPsec реализован на сетевом уровне. В вопросе выбора уровня реализации защищённого канала несколько противоречивых аргументов: с одной стороны, за выбор верхних уровней говорит их независимость от вида транспортировки (выбора протокола сетевого и канального уровней), с другой стороны, для каждого приложения необходима отдельная настройка и конфигурация. Плюсом в выборе нижних уровней является их универсальность и наглядность для приложений, минусом — зависимость от выбора конкретного протокола (например, PPP или Ethernet). То, что IPsec располагается на сетевом уровне, является компромиссом в выборе уровня OSI. IPsec использует самый распространённый протокол сетевого уровня — IP, что делает применение IPsec гибким — он может использоваться для защиты любых протоколов, базирующихся на IP (TCP, UDP и другие). В то же время он прозрачен для большинства приложений.
IPsec является набором стандартов Интернета и своего рода «надстройкой» над IP-протоколом. Его ядро составляют три протокола: Authentication Header (АН) обеспечивает целостность передаваемых данных, аутентификацию источника информации и функцию по предотвращению повторной передачи пакетов Encapsulating Security Payload (ESP) обеспечивает конфиденциальность (шифрование) передаваемой информации, ограничение потока конфиденциального трафика. Кроме этого, он может исполнять функции AH: обеспечить целостность передаваемых данных, аутентификацию источника информации и функцию по предотвращению повторной передачи пакетов. При применении ESP в обязательном порядке должен указываться набор услуг по обеспечению безопасности: каждая из его функций может включаться опционально. Internet Security Association and Key Management Protocol (ISAKMP) — протокол, используемый для первичной настройки соединения, взаимной аутентификации конечными узлами друг друга и обмена секретными ключами. Протокол предусматривает использование различных механизмов обмена ключами, включая задание фиксированных ключей, использование таких протоколов, как Internet Key Exchange, Kerberized Internet Negotiation of Keys (RFC 4430) или записей DNS типа IPSECKEY (RFC 4025).
Также одним из ключевых понятий является Security Association (SA). По сути, SA является набором параметров, характеризующим соединение. Например, используемые алгоритм шифрования и хеш-функция, секретные ключи, номер пакета и др.
Туннельный и транспортный режимы IPsec может функционировать в двух режимах: транспортном и туннельном.
В транспортном режиме шифруются или подписываются только данные IP-пакета, исходный заголовок сохраняется. Транспортный режим, как правило, используется для установления соединения между хостами. Он может также использоваться между шлюзами для защиты туннелей, организованных каким-нибудь другим способом (см., например, L2TP).
В туннельном режиме шифруется весь исходный IP-пакет: данные, заголовок, маршрутная информация, а затем он вставляется в поле данных нового пакета, то есть происходит инкапсуляцияCryptographic Terminology 101 , Dru Lavigne, 2002.. Туннельный режим может использоваться для подключения удалённых компьютеров к виртуальной частной сети или для организации безопасной передачи данных через открытые каналы связи (например, Интернет) между шлюзами для объединения разных частей виртуальной частной сети.
Режимы IPsec не являются взаимоисключающими. На одном и том же узле некоторые SA могут использовать транспортный режим, а другие — туннельный.
Security Association Для начала обмена данными между двумя сторонами необходимо установить соединение, которое носит название SA (Security Association). Концепция SA фундаментальна для IPsec, собственно, является его сутью. Она описывает, как стороны будут использовать сервисы для обеспечения защищённого общения. Соединение SA является симплексным (однонаправленным), поэтому для взаимодействия сторон необходимо установить два соединения. Стоит также отметить, что стандарты IPsec позволяют конечным точкам защищённого канала использовать как одно SA для передачи трафика всех взаимодействующих через этот канал хостов, так и создавать для этой цели произвольное число безопасных ассоциаций, например, по одной на каждое TCP-соединение. Это дает возможность выбирать нужную степень детализации защиты. Установка соединения начинается со взаимной аутентификации сторон. Далее происходит выбор параметров (будет ли осуществляться аутентификация, шифрование, проверка целостности данных) и необходимого протокола (AH или ESP) передачи данных. После этого выбираются конкретные алгоритмы (например, шифрования, хеш-функция) из нескольких возможных схем, некоторые из которых определены стандартом (для шифрования — DES, для хеш-функций — MD5 либо SHA-1), другие добавляются производителями продуктов, использующих IPsec (например Triple DES, Blowfish, CAST).
Security Associations Database Все SA хранятся в базе данных SAD (Security Associations Database) IPsec-модуля. Каждое SA имеет уникальный маркер, состоящий из трёх элементов: индекса параметров безопасности (Security Parameters Index, SPI) IP-адреса назначения идентификатора протокола безопасности (ESP или AH)
IPsec-модуль, имея эти три параметра, может отыскать в SAD запись о конкретном SA. В список компонентов SA входят: Последовательный номер 32-битовое значение, которое используется для формирования поля Sequence Number в заголовках АН и ESP. Переполнение счетчика порядкового номера Флаг, который сигнализирует о переполнении счетчика последовательного номера. Окно для подавления атак воспроизведения Используется для определения повторной передачи пакетов. Если значение в поле Sequence Number не попадает в заданный диапазон, то пакет уничтожается. Информация AH используемый алгоритм аутентификации, необходимые ключи, время жизни ключей и другие параметры. Информация ESP алгоритмы шифрования и аутентификации, необходимые ключи, параметры инициализации (например, IV), время жизни ключей и другие параметры Режим работы IPsec туннельный или транспортный Время жизни SA Задано в секундах или байтах информации, проходящих через туннель. Определяет длительность существования SA, при достижении этого значения текущее SA должно завершиться, при необходимости продолжить соединение устанавливается новое SA. MTU Максимальный размер пакета, который можно передать по виртуальному каналу без фрагментации.
Каждый протокол (ESP/AH) должен иметь свой собственный SA для каждого направления, таким образом, связка AH+ESP требует для дуплексного канала наличия четырёх SA. Все эти данные располагаются в SAD.
В SAD содержатся: AH: алгоритм аутентификации. AH: секретный ключ для аутентификации ESP: алгоритм шифрования. ESP: секретный ключ шифрования. ESP: использование аутентификации (да/нет). Параметры для обмена ключами Ограничения маршрутизации Политика IP-фильтрации
Security Policy Database Помимо базы данных SAD, реализации IPsec поддерживают базу данных SPD (Security Policy Database — база данных политики безопасности). SPD служит для соотнесения приходящих IP-пакетов с правилами обработки для них. Записи в SPD состоят из двух полей. В первом хранятся характерные признаки пакетов, по которым можно выделить тот или иной поток информации. Эти поля называются селекторами. Примеры селекторов, которые содержатся в SPD:
IP-адрес места назначения IP-адрес отправителя Имя пользователя в формате DNS или X.500 Порты отправителя и получателя
Второе поле в SPD содержит политику защиты, соответствующую данному потоку пакетов. Селекторы используются для фильтрации исходящих пакетов с целью поставить каждый пакет в соответствие с определенным SA. Когда поступает пакет, сравниваются значения соответствующих полей в пакете (селекторные поля) с теми, которые содержатся в SPD. При нахождении совпадения в поле политики защиты содержится информация о том, как поступать с данным пакетом: передать без изменений, отбросить или обработать. В случае обработки, в этом же поле содержится ссылка на соответствующую запись в SAD. Затем определяется SA для пакета и сопряжённый с ней индекс параметров безопасности (SPI), после чего выполняются операции IPsec (операции протокола AH или ESP). Если пакет входящий, то в нём сразу содержится SPI — проводится соответствующая обработка.
Authentication Header
+Authentication Header format Offsets Octet16 0 1 2 3 Octet16 Bit10 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0Next HeaderPayload LenReserved 4 32Security Parameters Index (SPI) 8 64Sequence Number C 96Integrity Check Value (ICV)… … …