Еще режим туннелирования полезен, когда несколько TCP-соединений объединяются вместе и обрабатываются в виде единого шифрованного потока, поскольку в данном случае взломщик не может узнать, кто и кому передает пакеты, а также в каком количестве. А ведь иногда даже объем трафика, передаваемого одним лицом другому, является ценной информацией. Например, если во время военного кризиса трафик между Пентагоном и Белым домом резко снижается и при этом так же резко растет трафик между Пентагоном и какой-нибудь военной базой в Колорадо, перехватчик может сделать из этого далеко идущие выводы.
Изучение структуры потока по проходящим пакетам называется анализом трафика. Если используется туннелирование, такой анализ становится задачей весьма сложной. Недостаток режима туннелирования заключается в том, что приходится расширять заголовок IP-пакетов, за счет чего заметно возрастает суммарный размер пакетов. В транспортном режиме размер пакетов изменяется незначительно.
Первый из новых заголовков называется заголовком идентификации (AH — Authentication Header). С его помощью проверяется целостность данных и выполняется защита от взлома путем повторной передачи. Однако он не имеет никакого отношения к секретности (шифрованию данных). Применение AH в транспортном режиме показано на рис. 8.23. В стандарте IPv4 он располагается между заголовком IP (вместе со всеми необязательными полями) и заголовком TCP. В IPv6 это просто еще один дополнительный заголовок. Так он и воспринимается. Формат АН действительно очень близок к формату дополнительного заголовка IPv6. К полезной нагрузке иногда добавляют заполнение, чтобы достичь определенной длины, необходимой алгоритму идентификации, что тоже показано на рис. 8.23.
Рис. 8.23. Заголовок идентификации IPsec в транспортном режиме для IPv4
Рассмотрим заголовок АН. Поле Следующий заголовок хранит значение, которое в поле Протокол заголовка IP ранее было заменено на 51, чтобы показать, что далее следует заголовок АН. Обычно здесь встречается код для TCP (6). Поле Длина полезной нагрузки хранит количество 32-разрядных слов заголовка АН минус 2.
Поле Указатель параметров безопасности — это идентификатор соединения. Он вставляется отправителем и ссылается на конкретную запись в базе данных у получателя. В этой записи содержится общий ключ и другая информация данного соединения. Если бы этот протокол был придуман ITU, а не IETF, это поле, скорее всего, называлось бы Номером виртуального канала.
Поле Порядковый номер применяется для нумерации всех пакетов, посылаемых по защищенной связи. Все пакеты получают уникальные номера, даже если они посылаются повторно. Имеется в виду, что повторно передаваемый пакет имеет номер, отличный от номера оригинального пакета (даже если порядковый номер TCP тот же самый). Это поле служит для предотвращения взлома путем повторной передачи. Порядковые номера никогда не повторяются. Если же окажутся использованными все 232 номера, для продолжения общения устанавливается новая защищающая связь.
Наконец, поле переменной длины Идентификационные данные содержит цифровую подпись, вычисляемую относительно полезной нагрузки. При установке защищающей связи стороны договариваются об используемом алгоритме генерации подписей. Чаще всего здесь не применяется шифрование с открытыми ключами, так как все известные алгоритмы этого типа работают слишком медленно, а пакеты необходимо обрабатывать с очень большой скоростью. Протокол IPsec основан на шифровании с симметричными ключами, поэтому перед установкой защищающей связи отправитель и получатель должны договориться о значении общего ключа, применяемого при вычислении подписи. Один из простейших способов заключается в вычислении хэш-функции для пакета и общего ключа. Отдельно общий ключ, конечно, не передается. Подобная схема называется HMAC (Hashed Message Authentication Code — код идентификации хэшированного сообщения). Вычисление этого кода выполняется гораздо быстрее, чем последовательный запуск SHA-1 и RSA.
Заголовок AH не позволяет шифровать данные. Его основная польза выявляется, когда важна проверка целостности, но не нужна секретность. Стоит отметить, что при проверке целостности при помощи AH охватываются некоторые поля заголовка IP, в частности, те из них, которые не изменяются при прохождении пакета от маршрутизатора к маршрутизатору. Поле Время жизни, например, меняется при каждой пересылке через маршрутизатор, поэтому его нельзя охватить при проверке целостности. Однако IP-адрес источника охватывается, тем самым предотвращается возможность его подмены взломщиком.
Альтернативой заголовку IPsec служит заголовок ESP (Encapsulating Security Payload — инкапсулированная защищенная полезная нагрузка). Как показано на рис. 8.24, этот заголовок может применяться как в транспортном режиме, так и в режиме туннелироваия.
Рис. 8.24. ESP: а — в транспортном режиме; б — ESP в режиме туннелирования
Заголовок ESP состоит из двух 32-разрядных слов: Указателя параметров безопасности и Порядкового номера. Мы их уже встречали в заголовке AH. Третье слово, которое обычно следует за ними, однако технически не является частью заголовка, это Вектор инициализации (если только не применяется пустой алгоритм шифрования — тогда это поле опускается).
ESP, как и АН, обеспечивает проверку целостности при помощи HMAC, однако вместо того, чтобы включать хэш в заголовок, он вставляется после поля полезной нагрузки. Это видно на рис. 8.24. Такое расположение полей дает преимущество при аппаратной реализации метода. Оно заключается в том, что HMAC может подсчитываться во время передачи битов полезной нагрузки по сети и добавляться к ним в конец. Именно поэтому в Ethernet и других стандартах локальных сетей циклический контроль избыточности вставляется в концевик, а не в заголовок. При применении заголовка АН пакет приходится буферизировать и вычислять подпись, только после его можно отправлять. Это потенциально приводит к уменьшению числа пакетов, которые можно передать за единицу времени.
Казалось бы, если ESP умеет делать все то же самое, что и АН, и даже больше, причем он еще и гораздо эффективнее, тогда зачем мучиться с АН? Причины этого в основном исторические. Изначально заголовок АН обеспечивал только проверку целостности, а ESP — только секретность. Позднее ESP научили использовать для проверки целостности, но разработчики АН не хотели, чтобы он канул в Лету после всей той работы, которую они проделали. Единственный аргумент в пользу АН заключается в том, что с его помощью можно частично проверять заголовок IP, чего не умеет ESP. И все же это аргумент довольно слабый. Еще один сомнительный аргумент состоит в том, что система, поддерживающая АН, но не поддерживающая ESP, возможно, будет иметь меньше проблем при получении лицензии на экспорт, поскольку этот заголовок не имеет отношения к секретности и шифрованию. Похоже, что АН со временем все-таки исчезнет с горизонта.
8.6.2. Брандмауэры
Возможность соединять любые компьютеры друг с другом в некоторых случаях является достоинством, а в других, наоборот, недостатком. Возможность бродить по Интернету доставляет много радости домашним пользователям. Для менеджеров отделов безопасности корпораций эта возможность кажется кошмаром. Большинство компаний располагает огромными объемами конфиденциальной информации, размещенной на компьютерах, подключенных к сети, — коммерческие тайны, планы развития производства, рыночные стратегии, аналитические отчеты финансового состояния и т. д. Раскрытие этих сведений перед конкурентами может иметь ужасные последствия.
Помимо опасности утечки информации наружу, имеется опасность проникновения вредной информации, такой как вирусы, черви и прочей цифровой заразы, способной взламывать секреты, уничтожать ценные данные, на борьбу с которой уходит масса времени системных администраторов. Часто эту инфекцию заносят беззаботные сотрудники, желающие поиграть в новую модную компьютерную игру.