oldi

Виртуальные частные сети

Геннадий Махметов

 

Многие читали или слышали название «виртуальные частные сети» (VPN). Но многие либо не знают, что «это» такое, либо думают, что «это» — не для них, потому что «это» стоит очень дорого. На самом деле простейшую виртуальную частную сеть достаточно легко может создать даже небольшая фирма. При этом безопасность будет поднята на недостижимый другими средствами уровень. Такую возможность предоставляет наличие высококачественных свободно распространяемых продуктов. Для фирм, которые могут потратить деньги на обеспечение безопасности и для которых безопасность является настолько важной, чтобы потратить на нее деньги, на рынке сейчас предлагается большое количество продуктов. Для того чтобы понять, что может принести установка VPN, желательно иметь представление о том, что же такое VPN.

Как и за всяким «умным» названием, за названием «виртуальные частные сети» стоит совсем простая идея. Представим себе предприятие, имеющее несколько территориально отдаленных филиалов, складов, офисов, цехов. Сейчас подавляющее большинство организаций использует компьютерные сети для ведения учета и управления. Рано или поздно у них возникает необходимость объединить разрозненные филиалы в единую сеть. Сделать это достаточно просто: вы берете телефонные линии, ставите модемы в каждом филиале, и по мере необходимости связь организуется. Существует программное обеспечение, которое позволяет производить соединение автоматически по мере необходимости. Не всем организациям, однако, достаточно такой связи — некоторым нужна постоянная связь, некоторым — большая пропускная способность. И это не проблема — вы прокладываете кабель между филиалами и используете их для передачи информации (рис. 1).

Собственные каналы связи между подразделениями организации обеспечивают наилучший эффект — наибольшую пропускную способность, постоянное соединение. Чего же лучше? К сожалению, не многие фирмы могут позволить себе иметь связь по собственным каналам, особенно если подразделения фирмы территориально расположены далеко (например, офис находится в Москве, а производственные объекты раскиданы по всей Сибири). Более дешевой альтернативой выделенных каналов является подключение всех филиалов фирмы через Интернет (рис. 2). В этом случае решаются многие проблемы — филиалы могут располагаться где угодно по всему миру; те офисы, которые нуждаются в выделенных каналах, могут иметь их, остальные могут иметь выход в Интернет, используя телефонную связь. Появление IP-телефонии, дающей возможность телефонных разговоров через Интернет, делает такое решение еще более привлекательным.

Все было бы хорошо, но подключение к Интернету имеет и свои негативные последствия. Во-первых, вы открываете свою сеть возможным атакам со стороны различных взломщиков со всего мира — ведь Интернет — Всемирная сеть. Во-вторых, по Интернету все данные предаются в открытом виде, и, приложив достаточно усилий (не так уж и много), ваши недоброжелатели могут быть в курсе ваших дел. И, в-третьих, данные могут быть не только перехвачены, но и заменены в процессе передачи через сеть. Взломщик может нарушить целостность ваших баз данных, замаскировавшись в сети под один из ваших филиалов. Если все это представляет для вас реальную угрозу, а вам очень надо передавать свои данные через Интернет, виртуальные частные сети — это для вас.

Виртуальная частная сеть строится на основе использования криптографических протоколов.

Использование криптографии позволяет достичь нескольких целей, одновременно или по отдельности:

  1. Скрыть информацию, передаваемую по сети от любопытных глаз. Это наиболее известное и понятное использование криптографии — данные на одном конце преобразуются так, чтобы только тот, кому они предназначены, мог их понять и прочитать.
  2. Убедиться, что информация послана именно тем, кто обозначен отправителем в пакете. Обеспечить неизменность информации в процессе передачи. Действительно, что толку, если никто не знает, какая информация передается по сети, если при желании злоумышленник может подделать посылку и от имени клиента предложить банку произвести платеж или, перехватив запрос клиента, изменить сумму или адресата платежа.
  3. Предотвратить повторное использование информации. Действительно, представим, что некто произвел платеж, использовав мобильный компьютер. Никто не может прочитать запрос на платеж, никто не может подделать платежное поручение, но, сделав копию информации и послав ее второй и третий раз, можно заставить банк произвести платеж второй, третий раз.

Конечно, и сейчас в сетях эти проблемы решаются. Создание VPN позволяет перенести решение части этих проблем с прикладных программ на уровень сетевого взаимодействия, создать единую точку контроля или же просто дополнить уже существующие средства, существенно увеличить их эффективность.

Здесь следует заметить, что использование технологий шифрования почти во всех странах регулируется законом. Так, в США существует закон, ограничивающий экспорт компьютерных продуктов, использующих сильные алгоритмы шифрования. Не является исключением и Россия. Российские законы достаточно запутанны, и поэтому, прежде чем использовать средства криптографии, лучше всего посоветоваться с экспертом-юристом. Очевидно, что каждый может использовать криптографические схемы, которые не скрывают информацию (то есть реализуют пункты 2, 3) без получения каких-либо лицензий.

Построить виртуальную частную сеть можно огромным числом способов, одно перечисление которых заняло бы достаточно много места. Так, пользователи UNIX давно используют для этих целей комбинацию ssh и ppp. Однако по-настоящему интерес представляют, конечно, стандартные решения. В настоящее время широко известны следующие из них:

  • PPTP (Point-to-Point Tunneling Protocol), разработанный совместно Microsoft, 3Com и Asced Communications. Этот протокол стал достаточно популярен благодаря его включению в операционные системы фирмы Microsoft.
  • L2F (Layer-2 Forwarding) — разработка фирмы Cisco.
  • L2TP (Layer-2 Tunneling Protocol) — разрабатываемый и продвигаемый официальный стандарт Интернет.
  • SKIP (Simple Key-management for Internet Protocols) — разработка фирмы Sun.
  • IPsec (Inernet Protocol Security) — официальный стандарт Интернет.

Первые три из перечисленных протоколов ориентированы в первую очередь на мобильных пользователей и не будут рассматриваться в этой статье.

Стандартом для Интернета является набор протоколов IPsec. Согласно стандарту все устройства, работающие с новым IP-протоколом IPv6, обязаны поддерживать IPsec.

В режиме построения VPN (режиме туннелирования) IPsec обеспечивает безопасность связи в Интернете «упаковкой» IP-пакета в новый IP-пакет с применением к нему различных преобразований — шифрации и электронных подписей (рис. 3). Дело в том, что передача данных в Интернете похожа на передачу информации на почтовых открытках без конверта — каждый заинтересованный почтовый работник может прочитать и даже добавить что-нибудь на эту открытку. Любой человек может послать открытку от имени другого человека. Упаковка IP-пакета в другой IP-пакет с применением средств криптографии похожа на упаковку открытки в конверт, его запечатывание и подписывание. Таким образом, вы можете гарантировать, что никто не читал информацию в конверте, никто не изменил информацию в нем, а подпись на конверте гарантирует личность отправителя.

В зависимости от требований к VPN используется два вида заголовков, и, соответственно, предоставляется два режима функциональности протокола. В одном случае ESP (Encapsulating Security Payload) предоставляется возможность передавать зашифрованные данные, электронно подписывать передаваемые данные и включать в заголовок специальный счетчик — число, которое увеличивается на 1 в каждом новом пакете, предотвращая повторное использование данных. Таким образом, обеспечивается секретность, неизменность предаваемых данных, невозможность их повторного использования и подтверждается личность их отправителя. Причем можно использовать все эти возможности как одновременно, так и по отдельности. Во втором случае AH (Authentication Header) позволяет включать электронную подпись всего пакета и счетчик. Таким образом, гарантируется все то, что обеспечивает ESP, кроме секретности. Но AH обеспечивает электронную подпись всего пакета, в том числе и внешнего IP-заголовка (адреса и другие надписи на конверте), в то время как ESP защищает только упакованный пакет. При необходимости эти два заголовка могут использоваться совместно, что применяется в случае, когда необходимо и обеспечить секретность данных, и гарантировать целостность всего пакета.

Для того чтобы два устройства могли обмениваться информацией с использованием шифрованных и подписанных данных, им необходимо знать ключ к шифру, который используется при передаче, а также ключ к электронным подписям. Вопрос обмена ключами вообще является одним из важнейших в любой системе, использующей криптографические методы защиты данных. Очевидно, что, как бы ни был силен протокол, если злоумышленник имеет возможность украсть или подменить ключи — все насмарку. Подобное положение можно сравнить со следующей бытовой ситуацией: кто-то поставил мощную входную дверь, но позволил кому угодно делать от нее копии ключей. Конечно, эта дверь ему не поможет. Другим требованием является достаточно частая смена ключа и ограничение на количество данных, которые могут быть переданы с использованием одного и того же ключа. Это ограничение связано с тем, что чем больше данных, зашифрованных одним ключом, и чем больше времени имеет злоумышленник, тем легче ему «сломать» шифр. Поэтому обмен ключами — одна из важнейших частей стандартов. И именно поэтому данные, которыми обмениваются устройства, шифруются так называемым ключом сессии — случайно выбранным числом, о котором стороны «договариваются» в начале обмена.

В IPsec не установлено единственного стандартного способа распределения ключей. Определено, что обязательно должны поддерживаться ручное распределение ключей и специальный протокол — IKE (Internet Key Exchange). Каждый поставщик вправе дополнить этот набор собственными протоколами обмена ключами, однако стандартные обязаны присутствовать.

Ручное распределение ключей — очень простая процедура: на дискете (или любом другом носителе) приносится информация и вносится в компьютер. Все просто. Но ключи надо менять. В некоторых ситуациях их меняют достаточно часто — например каждый час. Носить их каждый раз на дискете становится затруднительно. Можно, конечно, сгенерировать множество ключей (на целый год), разнести их один раз по всем филиалам и регулярно менять. Вообще говоря, это — не плохое решение. Возникает, правда, проблема синхронной смены ключа. Кроме того, этот метод годится только при небольшом количестве сторон, участвующих в обмене; при увеличении их количества неизбежно где-нибудь возникнет путаница. Исходя из этих соображений для распределения ключей были разработаны протоколы обмена ключами. Одним из подобных протоколов и является IKE.

IKE-протокол позволяет устройствам договориться о большинстве параметров, которые будут использованы в процессе обмена информацией, об алгоритме шифрования, о ключах. IKE достаточно сложен. Он заключается в обмене сообщениями, который должны осуществить стороны, прежде чем смогут обмениваться информацией в безопасном режиме. В ходе этой сессии стороны сначала обмениваются сообщениями, подтверждающими их личность. Определено несколько способов удостовериться, с кем мы имеем дело. Все они основаны на использовании криптографических методов. Используются электронные подписи на основе использования либо общих ключей (симметричные алгоритмы), либо секретных и публичных ключей (несимметричные алгоритмы).

При использовании симметричных алгоритмов обменивающиеся стороны знают один общий ключ. Cами по себе ключи никогда не посылаются по сети. Вместо этого ключ используется для электронной подписи случайного числа. После этого само число и подпись посылается собеседнику. Зная совместный ключ и случайное число, собеседник может вычислить электронную подпись. Если полученная подпись совпадает с присланной — значит, отправитель тот, за кого он себя выдает. Алгоритм, по которому вычисляется подпись в стандарте, жестко не зафиксирован, но определено, что должны поддерживаться как минимум MD5 и SHA. На каждую пару устройств в этом случае необходим один ключ. Например, если устройство осуществляет обмен с сотней других устройств, ему необходимо сто ключей. И опять же велика возможность путаницы при конфигурации. Конечно, в этом случае удобнее использовать электронную подпись с несимметричной криптографией.

При использовании электронной подписи каждое устройство имеет два ключа — секретный и публичный. Эти ключи рассчитываются по специальному алгоритму и взаимосвязаны. Секретный ключ известен только владельцу, публичный ключ может распространяться свободно. Существует как минимум две различные схемы с асимметричными ключами. В одном (алгоритм RSA) сообщение, зашифрованное секретным ключом, можно расшифровать, только используя соответствующий публичный ключ, и наоборот. Таким образом, если известное сообщение правильно расшифровывается публичным ключом, значит, автор сообщения — владелец этого ключа. В другом (алгоритм Diffie-Hellman) секретный ключ отправителя и публичный ключ получателя используются для вычисления так называемого взаимного ключа. Оказывается, что тот же самый взаимный ключ можно вычислить, зная секретный ключ получателя и публичный ключ отправителя. Таким образом, взаимный ключ можно вычислить, только зная одну из пар — секретный ключ отправителя и публичный ключ получателя или секретный ключ получателя и публичный ключ отправителя. А поскольку секретный ключ знает только его владелец (так должно быть!), только получатель и отправитель могут знать взаимный ключ. Руководствуясь этим фактом, получатель может быть уверен, что отправитель сообщения, зашифрованного взаимным ключом, — именно тот, за кого он себя выдает. Очевидно, в случае использования несимметричных алгоритмов шифрования каждому устройству необходима только пара ключей — независимо от числа собеседников. В стандарте и для этого случая также отсутствует жесткая фиксация конкретного алгоритма. Определено только, что реализация обязательно должна поддерживать алгоритм Diffie-Hellman.

Все эти методы требуют наличия предварительного знания некоторого ключа, который и используется для подтверждения личности. Но поскольку этим ключом шифруют очень мало информации, его можно менять намного реже (период действия ключа может составлять месяцы и даже годы). Предварительный обмен подтверждениями личности предотвращает возможность злоумышленнику подсунуть свой ключ и «взломать» систему.

Установив личность собеседника, устройства обмениваются предложениями по различным параметрам — алгоритмам шифрования, ключам сессии. Ключи сессии — временные и могут меняться достаточно часто. После того как договоренность достигнута, можно начинать передачу информации. Конечно, процедура обмена ключами занимает время, и, пока она не завершена, ни один пакет с данными не может быть передан между устройствами в безопасном режиме. В неблагоприятных случаях задержка, вызванная необходимостью предварительного открытия сессии, может составить несколько секунд, а в случае одновременного открытия многих сессий (например, в начале рабочего дня, после перезапуска системы) — и больше.

Несколько иначе подошли к обмену ключами разработчики протокола SKIP. SKIP (акроним от Simple Key-management for Internet Protocols — «простой протокол обмена ключами для Интернета») — разработка фирмы Sun и предназначен, как это следует из названия, для обмена ключами. Этот протокол может быть использован как совместно с IPsec вместе с другими протоколами, так и самостоятельно. Именно поэтому о нем и говорится как об отдельном протоколе.

При использовании SKIP ключ, необходимый для расшифровки сообщения (ключ сессии), содержится в самом пакете, в заголовке SKIP (рис. 4). Для того чтобы пакет мог быть расшифрован только адресатом, этот ключ, в свою очередь, зашифрован. Алгоритм и ключ шифрования выбран так, чтобы его легко можно было вычислить без предварительного обмена. Для вычисления взаимного ключа используется уже упоминавшийся алгоритм Diffie-Hellman (взаимный ключ рассчитывается из секретного ключа отправителя и публичного ключа получателя или публичного ключа отправителя и секретного ключа получателя). Но и этот ключ для шифрования непосредственно не используется. Он используется совместно с некоторым числом-счетчиком для получения другого ключа. Для этого с взаимным ключом и счетчиком производится математическая операция по алгоритму MD5, дающая новый ключ. Именно этим ключом и производится шифровка ключа сессии. Значение счетчика также передается вместе с пакетом. Таким образом, вся информация, необходимая для расшифровки данных в пакете, содержится в заголовке пакета, и не требуется никакой предварительный обмен (кроме, конечно, знания соответствующих секретного и публичного ключа). Такая трехступенчатая схема позволяет менять ключи сессии достаточно часто. Ключ сессии может быть различным в разных пакетах, передаваемых по сети, — более частой смены представить себе трудно. Кроме того, наличие равномерно возрастающего счетчика позволяет избежать повторного использования шифрованного пакета. Очевидно, что SKIP существенно проще, чем IKE, хотя и менее гибок.

Как уже говорилось, SKIP может быть использован как с IPsec, так и без него. При использовании SKIP без IPsec IP-пакет, предназначенный для передачи, шифруется и упаковывается в новый IP-пакет. Новый IP-пакет содержит заголовок SKIP, в котором, как мы уже упоминали, содержится вся информация, необходимая для расшифровки упакованного пакета (рис. 5). В случае совместного использования SKIP и IPsec пакет-конверт содержит два заголовка — IPsec-заголовок и SKIP-заголовок. В заголовке SKIP передается ключ, а в заголовке IPsec передается дополнительная информация, требуемая для правильной расшифровки и обработки упакованного пакета.

В настоящее время на рынке много продуктов для построения VPN. Часть из них способна реализовывать IPsec с IKE, часть — со SKIP, некоторые — SKIP без IPsec. Некоторые включают поддержку и того и другого.

Кроме чисто технических соображений, при выборе того или иного протокола важно и наличие на рынке продуктов, реализующих этот протокол, их качество.

Хотя SKIP — разработка фирмы Sun, многие поставщики сетевого оборудования и операционных систем включают в свои продукты поддержку SKIP. В настоящее время SKIP доступен для Solaris, Sun OS, FreeBSD и Linux. При активном участии российской фирмы Elvis+ были созданы версии для Windows NT, Windows 98. Поскольку SKIP относительно прост и продукты на его основе выпускаются уже далеко не первый год, можно смело утверждать, что это достаточно зрелый, развитый протокол. Современный компьютер Pentium под управлением Solaris вполне может удовлетворить потребности достаточно большой организации, тем более что производительность все равно будет ограничена пропускной способностью внешнего канала. А компьютеры под управлением Windows 98 вполне могут обмениваться шифрованными сообщениями внутри организации, если существует такая потребность. Некоторая негибкость протокола компенсируется его простотой, и, скорее всего, у вас не возникнет проблем несовместимости продуктов разных поставщиков.

Продукты, реализующие протоколы IPsec и IKE, появляются на рынке все чаще и чаще. Сейчас, кажется, все ведущие производители объявили о выпуске реализаций стандарта. Доступны они и для свободно распространяемых систем Linux, OpenBSD. При этом OpenBSD содержит поддержку этого стандарта в базовой конфигурации. Любой желающий может установить OpenBSD, «скачав» его с одного из многочисленных ftp-серверов.

Однако, на мой взгляд, IKE еще достаточно молод; он все еще развивается. Это может привести к некоторой несовместимости между продуктами различных поставщиков. Кроме того, сложность самого протокола влечет за собой сложность его реализации и, следовательно, может привести к появлению ошибок. Тем не менее гибкость этого протокола делает его исключительно привлекательным.

Окончательное же решение, конечно, зависит от ваших потребностей.

В заключение хочется сказать, что, если ваша компания имеет несколько подразделений, удаленных географически и вам необходимо организовать обмен информацией между ними через Интернет, или если у вас есть пользователи, использующие Интернет для удаленного доступа к вашей сети и вы хоть немного заботитесь о безопасности вашей сети вам имеет смысл подумать об установке VPN в вашей организации. Тем более что сегодня доступно огромное количество высококачественных продуктов — от свободно распространяемых до полных комплексных коммерческих решений. Напомню также, что VPN без закрытия данных (только с подтверждением личности отправителя и целостности пакета) может быть установлена без всяких лицензий.

 

КомпьютерПресс 2'2000