Internet в последнее время стал популярной, недорогой базовой инфраструктурой. Универсальный доступ к нему заставил многие компании рассмотреть возможность создания виртуальной защищенной сети (Virtual Private Network VPN) на основе глобальной сети Internet (которая, по сути, представляет собой совокупность сетей). Преимущества VPN заключается в использовании базовой инфраструктуры Internet и для коммуникаций внутри компании (включая ее различные отделения) и для связи между компаниями, причем защищенность данных соединений остается такой же, как и в локальных корпоративных сетях.
Корпоративная сеть характеризуется тем, что все ее управление находится в руках ее владельцев, данные, передаваемые по ней, проходят только через узлы входящие в эту сеть и взаимодействие с внешним миром выражается в небольшом объеме передаваемых данных (иногда и полном отсутствие). При таких самодостаточных условиях сеть можно было сделать защищенной. VPN переводит корпоративную сеть на базис Internet. При этом, однако, возникает ряд существенных трудностей. Ни один из узлов не может управлять Internet-ом. Данные из разных источников передаются посредством общей инфраструктуры. Также, благодаря развитию электронной коммерции и бурному росту сетевых технологий, значительно возрос объем данных передаваемых между компаниями. Исходя из всех вышеперечисленных особенностей, можно сделать вывод, что структура VPN существенно отличается от старой традиционной корпоративной сети.
Координационным советом IETF (InternetEngineeringTaskForce) был разработан и предложен набор протоколов защиты сетевых соединений [3]. IPSec протоколы обеспечивают целостность и конфиденциальность передаваемых данных, а также управление ключевой информацией и политикой защищенных соединений. Отличительной особенностью IPSec от более ранних подобных протоколов заключается в защите всего пути следования передаваемых данных (а не фрагмента, как это было раньше).
Для защиты трафика было предложено два протокола AH (AuthenticationHeader) и ESP (EncapsulatingSecurityPayload). Протокол AH (AuthenticationHeader) заключается в подсчете и проверке значения хеш-функции с ключом от передаваемых данных. Протокол AH обеспечивает целостность и аутентичность данных и защищает от атак, основанных на переповторах пакетов (replayattack). В основе ESP протокола лежит шифрование и расшифрование данных, и он обеспечивает те же функции, что и AH, и дополнительно конфиденциальность передаваемой информации.
Эти две вышеуказанные особенности привели к возникновению проблемы управления ключевой информации и политик (параметров) соединений. Простейшим решением является ручное конфигурирование соединений, при котором параметры и секретные ключи жестко прописываются при запуске системы. К единственному достоинству можно отнести относительную простоту данного метода. Самым же большим недостатком данного метода можно считать отсутствие «масштабируемости». Это означает, что для установления секретного соединения ручным конфигурированием обе стороны должны договориться о ключе, используемом для защиты трафика и о параметрах его использования (выбор протокола, алгоритма и т.п.). Если речь идет о системе, состоящей из небольшого количества пользователей, то никаких проблем не возникает. Когда же количество пользователей составляет несколько тысяч (десятков, сотен…) процедура конфигурирования становится практически невыполнимой задачей. Другим недостатком ручного конфигурирования можно считать отсутствие простого механизма смены используемого ключевого материала. Т.е. ключ шифрование будет использоваться слишком долго (для слишком большого объема данных), что снижает защищенность передаваемых данных.
Другим способом конфигурирования соединений является использование специальных «keymanagement» протоколов. Одним из таких протоколов явился ISAKMP. Данный протокол был также предложен координационным советом IETF. Протокол работает независимо от модуля осуществляющего защиту передаваемых данных. Результатом работы протокола является договоренные между двумя партнерами параметры защищенного соединения (включает в себя набор используемых протоколов защиты данных, алгоритмы, используемые в этих протоколах, параметры алгоритмов) и ключевая информация, для используемых алгоритмов. Полученная информация является выходными данными для протокола и должна быть передана модулю защиты передаваемых данных.
Протокол ISAKMP полностью решает проблему «масштабируемости». Ключевой материал высчитывается на основе данных, передаваемых в процессе аутентификации партнера и договора параметров соединения. При расчете также используется случайные величины, генерящиеся каждой из сторон для данного соединения, что обеспечивает разный ключевой материал при двух попытках установления соединения между одними и теми же партнерами. Данное свойство также позволяет не описывать правило секретного соединения для каждого из абонентов, а объединять их по какому-либо признаку (подсеть, диапазон IP адресов, определенный протокол и т.д.) и описать для них одно правило создания секретного соединения.
Протокол также решает и проблему времени жизни ключевой информации. Время жизни ключевой информации (в секундах и килобайтах) является одним из параметров договариваемого соединения. Таким образом, легко регулируется время использования ключа или объем данных, который можно этим ключом шифровать, и появляется механизм, позволяющий запустить создание нового соединения при истечении времени жизни ключевой информации.
Анализ методов реализации системы защиты сетевых соединений
Как только сетевые технологии стали использоваться корпорациями для передачи конфиденциальной информации, возникла проблема защиты этой передаваемой информации.
Самым первым методом защиты сетевых соединений создание локальных корпоративных сетей. Их отличительной особенностью был полный контроль над всеми элементами, входящими в эту сеть, всеми узлами, через которые проходила информация. Локальная корпоративная сеть была самодостаточной и зачастую замкнута в себе. Она или совсем не имела выхода во внешний мир или выходящий трафик тщательно фильтровался. Связанные с этим временные задержки никого не волновали, т. к. этот трафик был весьма не значительным. При таком небольшом, полностью контролируемом оборудовании, корпоративные сети считались достаточно защищенными.
Но сегодняшние корпоративные сети развиваются согласно новым моделям компаний: корпоративная сеть сегодня это набор физически разделенных локальных сетей, соединенных посредством общедоступной сети Internet, а взаимосвязь между компаниями сегодня жизненно необходима. Эта новая модель компании вынесла на общее обозрение передаваемые данные, чего не делала старая корпоративная сеть. Разработчики и пользователи VPN должны осознавать опасность этой открытости и защищаться от нее. Хорошо продуманная политика защиты VPN позволит компании организовать соединения между локальными сетями и между компаниями с такой же гарантией, как и в старых традиционных корпоративных сетях.
Для защиты трафика внутри VPN требовались специальные протоколы передачи данных и протоколы для получения параметров соединения и ключевой информации. На данный момент к протоколам первого типа относятся AH (AuthenticationHeader) и ESP (EncapsulatingSecurityPayload). AH передает данные и некую подпись по этим данным, что обеспечивает их целостность и подлинность. ESP передает зашифрованные данные, что обеспечивает дополнительно конфиденциальность данных.
К протоколам, обеспечивающим AH и ESP необходимыми параметрами и ключевой информацией, относится протокол ISAKMP. Он и будет подробнее рассмотрен далее в этой главе.
Структура протокола ISAKMP
В этом разделе будет рассмотрено, как ISAKMP протокол договаривается о параметрах и обменивается ключами между двумя системами, которые хотят создать секретное соединение [4].
Для того чтобы рассмотреть все на конкретном примере примем, что метод аутентификации – заранее известный секретный ключ (presharedkey).
Все пакеты, которыми обмениваются партнеры в процессе установления соединения, начинаются с ISAKMP заголовка. Он содержит некоторую идентифицирующую информацию (InitiatorCookie, ResponderCookie и MessageID), тип обмена, флаги, номер версии и длину всего пакета.
Основное тело пакета состоит из payload-ов. Payload – объем информации, несущий определенную смысловую нагрузку. В дальнейшем этот элемент будем называть «компонентом».
Целью первой фазы является создание секретного соединения, под защитой которого будут проходить все последующие обмены [5]. Фаза состоит из 6 обменов – 3 со стороны инициатора и 3 со стороны ответчика (Рис. 1).
Рис. 2. Структура SApayload
SA payload содержит внутри себя список Proposal payload-ов, каждый из которых представляет собой отдельный протокол. Proposal payload-ы могут объединяться в группы по «И» и по «ИЛИ». Это осуществляется с помощью номеров данных компонент – одинаковые номера означают объединение по «И», а разные по ИЛИ. В свою очередь Proposalpayload содержит список Transformpayload-ов, которые представляют алгоритмы для данного протокола. Объединены они могут быть только по «ИЛИ». Transformpayload содержит список атрибутов, конкретизирующих данный алгоритм (длина ключа) и содержащих другие параметры соединения. Атрибуты не могут выбираться, или принимается весь список атрибутов или все отвергает.
Таким образом, инициатор посылает ответчику на выбор список списков протоколов и для каждого протокола на выбор список алгоритмов. Из всего этого ответчик выбирает список протоколов, причем для каждого протокола может быть выбран только один алгоритм и набор атрибутов для данного алгоритма не может изменяться (ни добавления / удаления, ни изменения), т.е. алгоритм или принимается со всем списком атрибутов, или отвергается. Выбранная информация оформляется также в SApayload, и отправляется инициатору вторым пакетом.