Моисеев Дмитрий

Безопасность в компьютерных сетях. Microsoft Internet Security Framework: протоколы SSL и PCT

Общие вопросы безопасности в Internet/Intranet

Доступ к Internet расширил возможности проникновения посторонних в хранилища важной для компании информации. Однако при наличии упреждающей политики защиты сохранить ресурсы в безопасности существенно легче.

Проблема безопасности в Internet обычно характеризуется одной короткой фразой – «Too many systems, Too many applications» . Естественно, желательно использовать решения, которые не зависят от аппаратно-программных факторов и способны организовывать безопасный режим передачи данных для сессий. К тому же, эти решения должны с наименьшими затратами интегрироваться как в существующую сеть, так и в сложившуюся систему обеспечения безопасности. Не стоит забывать, что принципы построения системы безопасности корпоративной сети несколько отличаются от безопасности при соединении с Internet.

Технические решения

В настоящее время широко используется целый ряд технических решений, предназначенных для предотвращения конкретной опасности извне. Возможные последствия нарушения безопасности функционирования систем можно разделить на четыре группы – Disclosure, Unauthorized Access, Loss of Integrity, Denial of Service(взлом, несанкционированный доступ, перехват и подстановка пакетов, блокировка) Перечень наиболее распространенных решений приведен в Таблице 1:

Solutions  Disclosure  Unauthorized Access  Loss of Integrity  Denial of Service
Increased Host Security      
Firewalls  
Strong authentication device      
Internal partitioning    
Encryption      
Digital signatures      

При использовании Internet/Intranet в предприятии следует выбрать решение, усиливающее вашу текущую системную политику. Для каждого типа решения используется матрица, указывающая эффективность решения для предотвращения конкретной угрозы безопасности корпоративной сети (при рассмотрении данного вопроса не разбирается уровень эффективности).

Повышение уровня безопасности узла(Increased host security)

Один из путей увеличения безопасности всей сети - увеличить уровень безопасности каждого устройства сети. Есть три способа повышения безопасности узла:

carefull configuration (внимательная, точная и правильная настройка ОС);
access control ( использование механизмов управления доступом в узел);
periodical audits (периодическая ревизия правильности конфигурации системы);

Использование метода, базирующегося на безопасности индивидуального узла, требует постоянной бдительности. В настоящий момент слишком сложно обеспечить необходимый уровень безопасности при host-based security посредством единственного решения:

слишком много устройств и их разновидностей;
слишком много различных пользовательских установок;
слишком мало администраторов;

Тем не менее, не следует игнорировать данное решение, уповая на другие средства защиты, особенно, в случае использования Internet. К тому же, увеличение безопасности индивидуальных устройств внутри сети позволит снизить риск вреда от инородных внедрений из Internet. Наиболее важной задачей остается обеспечение секретности паролей(80% проникновений в сети связаны с нарушением секретности пароля).

Наиболее распространенные методы проникновения в сеть:

open accounts;
obvious passwords;
social engineering;

Такие методы систематизируются и доступны в Internet, так как есть и другие способы похитить файл, содержащий список паролей. Запутанные правила, служба генерация паролей, периодическое использование средств тестирования паролей(cracking) имеет свои плюсы и минусы при поиске слабых мест в вашей защите. Например, следует использовать такие средства, как npasswd, passwd+, shadow и crack.

Firewalls

В добавление к предыдущему методу, так же следует учитывать безопасность сети в целом. В большинстве случаев обеспечение безопасности сети организуется путем построения secure perimeter вокруг сети посредством firewalls. Firewall представляет собой комбинацию программно-аппаратных средств, контролирующих поток информации между двумя сетями(например, между Intranet и Internet) . Это наиболее эффективное решение для средних и больших организаций.

Proxy- сервера

После открытия сеанса Internet, proxy-сервер обеспечивает защищенность коммуникаций. На одном уровне proxy-сервер скрывает внутренние IP-адреса и обеспечивает централизацию управления и защиты исходящего трафика IP. При передаче всего трафика через proxy-сервер, внутренние IP-адреса остаются скрытыми от внешнего мира. Кроме того, компании могут избавиться от необходимости иметь отдельное Internet-соединение для каждой настольной системы. Это эквивалентно тому, что все сотрудники компании при осуществлении связи с внешним миром работают, как один пользователь.

Proxy Server компании Netscape использует Secure Sockets Layer для шифрования сообщений между клиентом и удаленным сервером. Proxy-серверы используют SSL посредством организации SSL-туннелей, технологии для защищенного обмена сообщениями, например HTTP и NNTP (Network News Transport Protocol), через большинство брандмауэров. Клиенты, использующие Netscape Navigator, уже поддерживают SSL и могут взаимодействовать с удаленным сервером непосредственно через брандмауэр, но Proxy Server компании Netscape также позволяет клиентам, не ориентированным на SSL, осуществлять защищенные коммуникации с удаленными хостами через Internet. При таком подходе proxy-сервер запрашивается об организации защищенного соединения по поручению незащищенного клиента. Клиент связывается с посредником с помощью стандартного HTTP, а посредник взаимодействует с удаленным узлом, используя SSL, так что канал через Internet в любом случае оказывается защищенным.

Microsoft IIS поддерживает SSL и в части шифрования данных, но это не означает абсолютной надежности.Hесмотря на то, что Proxy Server поддерживает SSL, брандмауэр все равно необходим. В свою очередь, если трафик поступает в сеть компании извне, развертывание proxy-сервера без брандмауэра не имеет смысла, поскольку вы не можете возложить на proxy-сервер задачу фильтрации пакетов и другие, традиционно осуществляемые брандмауэром, функции.

Учитывая это, proxy-сервер компании Microsoft реализует некоторые дополнительные стратегии защиты. Во-первых, поскольку Proxy Server работает непосредственно под Windows NT 4.0 Server, а оба эти продукта тесно интегрированы, proxy-сервер наследует все имеющиеся в NT функции защиты и позволяет создать таблицу локальных адресов, которую вы можете конфигурировать для распознавания внутренних IP-адресов, когда устанавливаете proxy-сервер. Таким образом, proxy-сервер знает, какие запросы поступают из внутренней сети компании.

"Жесткая аутентификация"(Strong authentication device)

Общеизвестно, что повторное использование паролей снижает уровень безопасности. В силу популярности active sniffering не следует использовать только аутентификакции типа ID/password. Одним из методов является authentication server - узел, поддерживающий список доверенных пользователей(authorised users) вместе с информацией о пользователях(user information database). Существует три механизма, использущих данное решение:

пароли с ограниченным временем(limited-time passwords) - доступны в течении короткогопериода времени(около 60 секунд);
одноразовые пароли(one-time passwords) - доступны только один раз;
процедуры опроса пользователя(challenge-response protocols) - основан на системе запросов к клиенту(query) и клиент допускается в систему, если он дает правильные ответы;

При попытке входа в сеть, запрос перенаправляется в сервер, где происходит идентификация пользователя с помощью одного из вышеуказанных механизмов. Запрос проходит в сеть только после успешной идентификации пользователя.

Постепенно начинают внедряться криптографические механизмы аутентификации. Эти средства (например, Kerberos и SESAME) для допуска в Internet/Intranet используют:

  1. encription;
  2. digital signature;

Хотя такие средства предоставляют более высокий уровень защищенности среды, они могут быть более громоздкими в применении. Но, широкое развертывание данных средств в Internet/Intranet уже нарастает.

Внутреннее разделение сети(Internal partitioning)

Совместно с созданием network perimeter, необходимо учитывать внутриорганизационную безопасность. Для обеспечения внутреннего контроля также можно использовать firewall. Это внутреннее разделение служит для:

уменьшение последствий с случае несанкционированного доступа);
обеспечение разных уровней доступа к информации или узлам с разными требованиями секретности;
использование управляющих ограничений-правил при внутриорганизационном доступе к информации);

Дополнительно это обеспечивает дополнительный внутренний контроль. Обычно, большая часть внимания при создании системы безопасности уделяется внешним атакам. Но не следует забывать о возможностях атак изнутри и данный метод позволит снизить последствия от некорректных действий сотрудников.

Данное средство наиболее эффективно как для внутренней, так и внешней безопасности. Но управление и поддержание данной системы очень часто занимает все рабочее время информационной службы.

Шифрование (Encryption)

Часто считается, что единственным методом защиты информации при передаче является шифрование. В настоящее время данное направление получило широкое распространение, что привело к созданию новых, быстрых и устойчивых к взлому криптографических алгоритмов.

В данном методе термин encription подразумевает перевод сообщения из открытой формы(cleartext) в шифрованную (ciphertext). Исходное сообщение может быть восстановлено через операцию дешифрования(decription). Общающиеся стороны должны использовать общий код(secret key) и симметричную криптосистему(symmetric cryptosystem), такую как DES, RC2 или IDEA, для кодирования сообщений.

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

Альтернативный подход использует ассиметричная криптография(asymmetric cryptograthy). В данном случае для каждого пользователя создается уникальная пара ключей. Первый ключ личный(private key) и известен только конкретному пользователю, а другой называется общий(public key) и должен быть известен каждому, кто собирается общаться с данным пользователем. Поскольку общий ключ распространяется среди всех пользователей, данный метод также именуется public-key criptography. Данный метод был предложен в 1976 году учеными Стэнфордского университета Винфилдом Диффи и Мартином Хеллманом. В общем виде алгоритм Хеллмана-Диффи записывается следующим образом:

D[ecrryption](E[ncryption](T[ext]))=T[ext]
, где
D - private key;
E - public key;
T - clear text;

В 1978 году был пердложен метод шифрования для данного алгоритма (сотрудниками Массачусетского технологического института – Роном Ривестом, Ади Шамир и Леном Адлеманом). Метод шифрования RSA состоит в следующем:

берутся два простых числа p и q, больше, чем 10100 ;
вычисляются поизведения s=p*q и t=(p-1)*(q-1);
выбирается число а, не имеющее общих сомножителей с t;
определяется b такое ,что b*a=1 по модулю t;
Т разбивается на блоки, так чтобы 0<T<s, посредством группировки текста в блоки размером k бит, где k – наименьшее целое, для которого 2k<s;

Для кодирования необходимо определить C=Tb по модулю s, а для декодирования T=Ca по модулю s. Следовательно, для шифрования требуется пара (b, s)-public key, а для дешифрования – (a, s)-private key.

Для отправки конфиденциального сообщения, отправитель использует общий ключ получателя. Только адресат, обладающим соответветсвующим личным ключем способен дешифровать код в исходное сообщение.

Тем не менее, последний метод приводит к значительным перегрузкам(overhead). По этой причине, данный метод используется для распределения секретных ключей и создания цифровых сигнатур.

Так же существует поддерживающая инфрастуктура, которую надо развить при использовании public-key system. По определению, public-key пользователя должен быть широко доступен и, поэтому, является обьектом, подлежащем модификации во время хранения в public site. Для того, чтобы убедиться в действительности данного ключа используются сертификаты общих ключей.

Цифровые подписи(Digital signatures)

Данный метод разработан для обеспечения:

подлинности сообщений(authentity);
честности пользователей(integrity);
невозможности ухода от ответственности за содержание и источник(non-repudiation of message origin and content);

Как и шифрования, данный метод требует соответствующей инфраструктуры.

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

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

Microsoft Internet Security Framework

Microsoft Internet Security Framework предоставляет следующие возможности, базирующиеся на всеохватывающем наборе public ключей и технологий безопасности, основанных на паролях:

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

Данная система предоставляет эти возможности без замены существующих систем безопасности. Наоборот, данная система не зависит от используемых операционных систем и платформ, и согласуется с системами Windows, Macintosh и UNIX. Кроме того, для Windows-систем безопасности позволяет расширять архитектуру, что позволяет интегрировать методы поддержания безопасности для Internet интегрировать в модель безопасности для Windows.

Основополагающие идеи для безопасности в корпоративных сетях и Internet следуют различными путями, что обусловлено различием в компьютерном окружении. Основными отличиями являются :

Таблица 2.

Intranet Internet
Наличие службы управления, контролирующей доступ к сети Отсутствие центральной администрации, контролирующей доступ и безопасность
Определенное количество пользователей Сеть используется большим количеством пользователей
Сеть ограниченных масштабов с определенным количеством учтенных(контролируемых) и одинаковым аппаратно-программным обеспечением  Распределенная кросс-платформенная сеть
Внедрение новых технологий сдерживается устоявшимися внутрикорпоративными технологиями Широкое использование новых технологий

Несмотря на эти различия, наметилась тенденция воссоединения Internrt/Intranet, так как это дает ряд серьезных преимуществ(расширение рынка продаж, средства обмена информации с партнерами, оперативная поддержка пользователей, снижение затрат и т.п.).

Для использования этих возможностей без ущерба безопасности, предприятия должны быть в состоянии:

контролировать доступ к внутренним резервам при открытии доступа из Internet в Intranet;
определять уровень допуска пользователям Internet для доступа в сеть предприятия;
контролировать конфиденциальность передачи информации через Internet;

Решение должно позволить соединить сети за счет расширения, а не замены. В результате должна должна получиться безопасная сеть, обеспечивающая:

безопасный обмен информации;
контролируемый доступ к содержимому;
безопасное взаимодействие для электронной коммерции.

Microsoft Internet Security Framework позволяет осуществляет это, используя как базу лучшие из существующих технологий с последующим вовлечением новых. Технология обеспечивает исчерпывающую структуру как для безопасных соединений on-line, так и для электронной коммерции. Вопрос отождествления и допуска решается путем использования общих ключей и паролей. В следующей таблице приводится свод технологий, предоставляемых Microsoft.

Таблица 3.

Требование Технология Функция Продукт
Безопасный обмен информацией  CryptoAPI 1.0 Base cryptographic services  Windows NT 4.0,
Microsoft Internet Explorer 3.0,
Windows 95, OEM Release #2 
CryptoAPI 2.0 

SSL 2.0/3.0 and PCT 1.0

Certificate management Secure channel Beta Q3 1996 Microsoft Internet Explorer 3.0 and next Release of Internet Information Server (IIS)
Client authentication Secure channel Based on public-key Certificates, Microsoft Internet Explorer 3.0 and IIS Service Pack Q3 1996
Microsoft Wallet and Personal Information Exchange (PFX) Secure storage Q4 1996
Authenticode Shrink-wrap for the Internet Microsoft Internet Explorer 3.0
Управление доступом Certificate server Issues, manages, and Revokes certificates; Supports customizable policies  Beta Q4 1996
Pass-through authentication and distributed access Technologies for Secure information exchange  Integrates Shared-Secrets Security with Internet protocols Beta Q4 1996
Secure transactions SET
Technologies for access control 
Secure credit-card transactions Beta when specification is complete

В данном материале подлежит рассмотрению только Secure Channel Service. Он обеспечивает приватность, интегрированность и аутентификацию для соединений типа point-to-point. Примером является соединение между средством просмотра для Web (типа Internet Explorer) с Web-сервером. А примером безопасного канала является SSL.

Microsoft Internet Security Framework уже поддерживает SSLv2.0 и v3.0,а также PCTv1.0. Планируется поддержка протокола Transport Layer Security Protocol, после его утверждения в IETF. Этот протокол обеспечит единый стандарт, включающий SSL и PCT.

Для клиентов данная технология включена в Internet Explorer, а затем будет интегрирована в Windows'95 и Windows NT . Internet Explorer 3.0 включает:

Authenticode techology;
CriptoAPI 1.0;
Secure channels(SSLv2.0-3.0 и PCT);
Client authentication;

Для серверов технология интегрируется в Internet Informaton Server, а затем Windows NT Server и BackOffice. В финальной версии Internet Information Server данная технология выполняет отождествление пользователей посредством сертификатов. Поскольку Microsoft Internet Security Framework включен в модель безопасности Misrosoft NT Server, сертификаты могут быть отображены на группы пользователей. Это позволяет использовать стандартные средства сервера для управлением безопасностью для Internet. Сервер сертификатов также может интегрироваться в Microsoft SQL Server (посредством ODBC).

Microsoft предоставляет реализации Secure Sockets Layer (SSL) и Technology (PCT) для канала безопасных коммуникации:

Internet Explorer 3.0 ( SSL 2.0 и 3.0 , так же как и PCT 1.0);
Internet Information Server 2.0 ( SSL 2.0 и PCT 1.0 );

Разработчики приложений Internet для Windows или Windows NT могут обеспечить поддержку SSL в своих приложениях через функции WinInet functions или через WinSock 2.0. Код, обеспечивающий поддержку на этих системах, загружается через Internet Explorer 3.0 и Internet Information Server 2.0, и будет интегрирован в последующей реализации.

Secure Sockets Layer

Протокол SSL обеспечивает установление канала шифрованной связи между Web-клиентами и серверами. В последних версиях SSL, помимо этого, обеспечивается идентификация клиента: сервер знает, какие клиенты с ним работают, и наоборот. SSL также обеспечивает независимость от алгоритма шифрования, так что отпадает необходимость пользоваться одним и тем же алгоритмом RSA, основанным на применении открытых (public) ключей. Как пояснил Питер Торп, директор Федерального подразделения Netscape, его компания в настоящее время работает над созданием Web-браузера и сервера, в которых вместо RSA используется шифровальная карточка Fortezza. Предыдущие версии SSL, слишком сильно опирались на RSA.

Данная технология обеспечения безопасности разработана Netscape Communications для гарантии закрытых (частных) достоверных комуникаций. Это открытая платформа и данную спецификацию можно получить с сервера компании, при условии соблюдения соглашения о невывозе криптографических средств из США.Протокол предоставляет такие возможности :

server authentification;
data encription;
message integrity;

Он расположен под протоколами уровня приложений (такими как HTTP,NNTP, Telnet, FTP и т.п.) и над протоколом TCP/IP.Данная стратегия позволяет SSL работать независимо .С применением SSL, одновременно на сервере и клиенте,ваши сообщения передаются в зашифрованной форме, гарантирующей приватность.

SSL использует технологии аутентификации и шифрования ,разработанные в RSA Data Security Inc. К примеру, Netscape Navigator экспортирует версию SSL, использующую 40-битный ключ для алгоритма RC4. Соединение оставляяется между вами и сервером независимо от числа соединений, однако нарушение (взлом) пакета не влияет на следующий. Теоретически, для взлома сообщения, закодированного данным ключом, требуется год выделенного процессорного времени для компьютера с 64-MIPS. К тому же, аутентификационный сервер, использующий алгоритмы RSA, совместим с цифровыми сертификатами ISO X.509.

Ниже приведен пример отображения серверного сертификата в «браузерах» Netscape и Microsoft: 

This Certificate belongs to:  This certificate was issued by:
Class 3 Public Primary Certification Authority  Class 3 Public Primary Certification Authority
VeriSign, Inc.  VerySign, Inc.
US  US
Serial Number: 02:A1:00:00:01
This Certificate is valid from Mon Jan 29,1996 to Sat Jan 01, 2000
Certificate Fingerprint:
AC:46:90:6D:F9:38:74:ED:31:D4:C4:DD:ED:59:70:E4

 В Microsoft IE 3.0 : 

Subject Class 3 Public Primary Certification Authority

VeriSign, Inc. 

US 

Issuer Class 3 Public Primary Certification Authority

VeriSign, Inc. 

US 

Effective data 29.01.96 0:00:00
Expiration data 31.12.99 23:59:59

 Существует несколько путей определения используете ли вы шифрование. Наиболее простой и распространенный - посмотреть на поле URL. Если вы видете https:// ( вместо http:// ) то это значит, что шифрование используется.

Client Certification соответствует структуре, приведенной в последующем примере :

Ниже приводится пример подключения к ресурсам с использованием https с расшифровкой события:

https://certs.netscape.com/client.html
Image: https://certs.netscape.com/exploring_ban.gif
Image: https://certs.netscape.com/client_premierCA.gif
Image: https://certs.netscape.com/navigation_bar.gif

_________________________________________________________________________________________

Netsite:
https://certs.netscape.com/client.html
File MIME Type:
text/html
Source:
Currently in memory cache
Local cache file:
none
Last Modified:
16 ai?aey 1997 n?aaa 21:29:09 Local time
Last Modified:
16 ai?aey 1997 n?aaa 17:29:09 GMT
Content Length:
2141
Expires:
No date given
Charset:
iso-8859-1 (default)
Security:
This is a secure document that uses a medium-grade encryption key suited for U.S. export
(RC4-40, 128 bit with 40 secret).
Certificate:
This Certificate belongs to:
certs.netscape.com
Electronic Marketing
Netscape Communications Corp.
Mountain View, California, us
This Certificate was issued by:
Secure Server Certification Authority
RSA Data Security, Inc.
US
Serial Number: 02:78:00:09:34
This Certificate is valid from Wed Jul 17, 1996 to Fri Jul 18, 1997
Certificate Fingerprint:
16:8B:1C:37:84:38:A6:59:76:9F:0C:54:98:59:E0:AA

Так как в настоящее время существует реализация SSL, использующая TCP/IP как основную сетевую технологию. Поэтому резервируются следующие IP порты для использования в сочетании с SSL:

443 - Hypertext Transfer Protocol with SSL (https);

465 - Simple Mail Transfer Protocol with SSL (ssmtp);

563 - Network News Transfer Protocol with SSL (snntp);

Итак, протокол SSL был разроботан, во-первых, для обеспечения между двумя приложениямии (клиентом и сервером), а во-вторых, для аутентификации сервера и при необходимости клиента. SSL требует транспортного протокола для приема передачи даных и не зависит от протоколов высокого уровня. Он может договариваться о алгоритме шифрования и аутентифицировать сервер, до того, как приложение начнет принимать или передавать данные. Следовательно данные приложений передаются зашифроваными.Таким образом, протокол SSL предоставляет "channel security", который имеет три основных свойства:

приватный канал (private) - шифрование используется для всех сообщений после соединения(initial handshake) для определения ключа и используется symmetric cryptography(DES, RC4);
достоверный канал (aunthentic) - сервер представляет собой конечную точку для обязательной аутентификации, а клиент - при необходимости, при этом используется asymmetric (public key) criptography(RSA, DSS);
надежный канал (reliable) - сообщение включает контроль на целостность с использованием Message Authentication Code(SHA, MD5).

Цель SSL

1. Cryptographic security

SSL используется для установления "secure connection" между двумя узлами.

2. Interoperability

Не зависит от приложений и операционных систем, позволяет успешно обмениваться параметрами шифрования без уведомления о другом коде.

3. Extensibility

SSL стремиться предоставить структуру, в которой новый public key, при необходимости, может смешиваться(добавляться) с базовыми методами шифрования.Таким образом отпадает необходимость создания нового протокола и библиотек безопасности.

4. Relative efficiency

Операции шифрования имеют тенденцию основательно загружать процессор, в ососбенности public key operations.Поэтому используется дополнительная схема кэширования сессий с целью уменьшения количества соединений и сетевой загрузки.

Структура протокола

SSL предсталяет собой многоуровневый протокол, и на каждом уровне message может включать следующие поля:

lenght field;
description field;
content field;

Можно условно выделить несколько модулей, где каждый служит своей цели:

1) record – принимает данные в блоках произвольного размера , и выполняет следующие операции:

a) fragmentation – конвертирует данные в записи размером 16К(или менее);

b) compression – при необходимости, выполняет компрессию записей;

c) encryption – защищает данные в записи посредством шифрования и МАС;

2) alert – оповещение об ошибках;

3) change cipher – оповещение об изменении стратегии шифрования;

a) handshake – используется при открытии или возобновлении сессии.

SSL принимает сообщение(message) для передачи, фрагментирует данные (в manageable bloks) и, при необходимости, выполняет компрессию данных,применяет МАС, шифрование, а затем передает результат транспортному уровню. На приемном узле данные дешифруется, проверяются, декомпрессируются, собираются и затем доставляются клиентскому уровню.

Состояния сессии и соединения

В данном контексте под состоянием (state) принимается информация, соотносящаяся со статусом и целью пакета

Сессия SSL является серией состояний. За координацию состояний клиента и сервера отвечает SSL HandShake Protocol, тем самым позволяет механизмам состояния протоколов каждого оперировать согласованно, не взирая на то, что это состояние не является в точности параллельным.

Логически, состояние представляется дважды:

рабочее состояние(operating);
ожидающее состояние(pending) - в течении handshake;

Кроме того, существуют дополнительные раздельные состояния чтение и запись.Когда сервер(или клиент) получает ответное сообщение change cipher spec, он переводит состояние pending read в current read. И наоборот, когда абонент посылает сообщение change cipher spec, то происходит смена состояний pending write - current write. Когда завершается handshake, клиент и сервер обмениваются сообщениями change cipher spec, а затем переходят на заново согласованный cipher spec для последующей работы.

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

session identifier (идентификатор сессии) - произвольная последовательность байтов, выбранная сервером для определения состояния активной или возобновленной сессии;
peer sertificate(сертификат тождественности) - X.509.v3 сертификат (данный эдемент может иметь параметр null);
compression method (метод сжатия) - алгоритм, используемый для сжатия данных до шифрования;
chipher spec (метод шифрования) - определяет основной алгоритм шифрования данных (например null, DES) и алгоритм для МАС(MD5 или SHA). Он также определяет атрибуты шифрования:

enum { stream, biok } CipherType;
enum { true, false } IsExportable;
enum { null, rc4, rc2, des, 3des, des40, fortezza } BulkCipherALgorit

struct {
BulKCipherALgorithm bulk_cipher_algorithm;
MACAlgorithm mac_algorithm;
CipherType cipher_type;
IsExportable is_exportable;
uint8 hash_size;
uint8 key_materials;
uint8 IV_size;
} CipherSpec;

master secret - 48-byte secret, разделяемый между сервером и клиентом.
is resumable - показывает - может ли сессия использоваться для инициации нового соединения;

Состояние соединения включает следующие элементы:

server and client random - последовательность байтов, выбираемая сервером и клиентом для каждого соединения.
server write MAC secret - данный секрет используется в МАС - операциях для записи на сервер;
client write MAC secret – данный секрет используется в МАС - операциях для записи на клиент;
server write key – ключ для данных, шифруемых сервером и дешифруемых клиентом;
client write key – ключ для данных, шифруемых клиентом и дешифруемых сервером;
initialization vectors – при использовании блочного шифра в режиме СВС, IV поддерживается для каждого ключа; первоначально данная область инициализируется в SSL handshake, после этого, последний шифрованный блок каждой записи сохраняется для использования с последующей записью ;
sequence numbers – каждая сторона для каждого соединения сохраняет отдельные индивидуальные последовательности чисел для передаваемых и принимаемых сообщений, когда сторона посылает или принимает change cipher spec , то соответствующая числовая последовательность устанавливается в zero. Используется числовая последовательность типа uint64 и ее значение не должно превышать 264-1.

Record layer

SSL Record Layer получает неинтерпритированные данные с вышестоящих уровней в виде непустых блоков произвольного размера.

Разбиение данных

Данный подуровень разбивает информационные блоки в записи SSLPlaintext, размером до 214 bytes. Границы клиентского сообщения не сохраняются на данном уровне, т.е различные сообщения с общим ContentType могут быть объеденены в единую запись SSLPlaintext:

struct {
uint8 major, minor;
} ProtocolVersion;
enum {
change_cipher_spec(20), alert(21), handshake(22),
application_data(23), (255)
} ContentType;
struct {
ContentType type;
ProtocolVersion version;
uint16 length;
opaque fragment[SSLPlaintext.length];
} SSLPlaintext;

, где

type - протокол высокого уровня, использованный для создания включаемого фрагмента;
version – используемого протокола;
length – длина в байтах следующего фрагмента SSLPlaintext (length<214);
fragment – данные приложения ( прозрачны и используются как независимый блок для работы с протоколом высокого уровня, определенным посредством поля type;
Сжатие данных

Все записи сжимаются посредством алгоритма, определенным в текущем состоянии сессии. Всегда существует активный алгоритм сжатия, хотя первоначально он определен как CompressionMethod.null. Алгоритм сжатия переводит структуру SSLPlaintext в SSLCompressed . Информация о состоянии функции сжатия стирается при каждой смене CipherSpec. Сжатие должно производиться без потерь, но и не превышать 1024 байта. Если функция декомпрессии встречает SSLCompressed.fragment, который декомпрессируется в данные размером более 214 bytes, то выдается сообщение о фатальной ошибке decompression_failure.

struct {
ContentType type; /* такой же, как SSLPlaintext.type */
ProtocolVersion version; /* такой же, как SSLPlaintext.version */
uint16 length;
opaque fragment[SSLCompressed.length];
} SSLCompressed;

length – длина в байтах следующего SSLCompressed.fragment (не должна превышать 214+1024);
fragmen - сжатая форма SSLPlaintext.fragment.

Функция декомпрессии также следит за не переполнением внутреннего буфера.

Защита целостности данных

Все записи защищены посредством шифрования и алгоритма МАС, определенных в текущем CipherSpec. Всегда имеется активный CipherSpec, но первоначально он в состоянии SSL_NULL_WITH_NULL_NULL, что не обеспечивает безопасности. Когда завершается handshake, обе стороны используют общие методы и т.п. для шифрования записи и вычисляют, на основании ключей , коды аунтификации сообщений (МАС) на основе содержания самой записи. Методы шифрования и вычисления МАС определяются в CipherSpec и расположено в CipherSpec.cipher_type. Данные функции транслируют SSLCompressed в SSLCiphertext, а при декодировании - наоборот. Передача включает числовую последовательность для определения утерянных, переставленных или избыточных сообщений.

struct {
ContentType type;
ProtocolVersion version;
uint16 length;
select (CipherSpec.cipher_type) {
case stream: GenericStreamCipher;
case block: GenericBlockCipher;
} fragment;
} SSLCiphertext;

type – поле идентично полю SSLCompressed.type;
version - поле идентично полю SSLCompressed.version;
length – длина в байтах последующего фрагмента SSLCiphertext.fragment (не должна превышать 214+1024);
fragment - зашифрованная форма SSLCompressed.fragment, включающая МАС;

МАС вычисляется перед шифрованием. При использовании потоковых шифров (stream cipher) шифруется каждый блок, включая МАС. Для данного типа шифром( не использующих вектор синхронизации типа RC4) состояние шифра с конца одной записи используется в следующем пакете. Если состояние CipherSuite установлено в SSL_NULL_WITH_NULL_NULL, шифрование состоит в операции тождественности , т.е. данные не шифруются и значение(размер) МАС равное 0, показывает, что МАС не используется. SSLCiphertext.length состоит из SSLCompressed.length , включая CipherSpec.hash_size.

Для блочных шифров (типа RC2 или DES), шифрование и вычисление МАС преобразуют структуры SSLCompressed.fragment в блоки SSLCiphertext.fragment( и обратно).

Протокол сигнала тревоги

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

enum { warning(1), fatal(2), (255) } AlertLevel;

enum {
close_notify(0),
unexpected_message(10),
bad_record_mac(20),
decompression_failure(30),
handshake_failure(40), no_certificate(41), bad_certificate(42),
unsupported_certificate(43), certificate_revoked(44),
certificate_expired(45), certificate_unknown(46),
illegal_parameter (47)
(255)
} AlertDescription;
struct {
AlertLevel level;
AlertDescription description;
} Alert;

Handshake protocol

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

Handshake protocol flow

Клиент отправляет сообщение client hello, на которое сервер должен ответить сообщением server hello. В ином случае возникает фатальная ошибка и соединение прерывается. Сообщение client hello и sever hello используются для возможности усиления безопасности соединения между клиентом и сервером и включает следующие атрибуты:

protocol version;
session ID;
cipher suite;
compression method;

Дополнительно, генрируются два случайных значения: ClientHello.random и ServerHello.random.

Вслед за обменом приветствиями, сервер высылает свой сертификат (если он подлежит авторизации). Дополнительно может быть затребовано сообщение server key exchange, если сервер не имеет сертификата или сертификат служит только для цифровой подписи. Если сервер авторизован, он может затребовать сертификат клиента, при соответствии избранному cipher suite.

Далее сервер посылает server hello done как завершение фазы обмена приветствиями и ждет ответа от клиента. Если сервер сделал запрос certificate request, то клиент должен отправить сертификать или alert о его отсетствии. Затем посылается сообщение об обмене ключами client key exchange и содержание данного сообщения зависит от алгоритма общих ключей, избранного между client hello и sever hello. Если клиент отправил сертификат с возможностью подписи, тогда сообщение посылается сообщение certificate verify, заверенное цифровой подписью для точной верификации сертификата. В этот момент клиент посылает сообщение change cipher spec и переводит состояние Cipher Spec из pending в current . Затем немедленно отправляется завершающее сообщение(finished) под новые алгоритмы и ключи. В ответ сервер отправлает собственное сообщение change cipher spec , изменяет состояние и отправляет сообщение об окончании переговоров под новым Cipher Spec. На данном моменте handshake завершается , и можно начинать обмен данными уровня приложений.

Private Communication Technology

Private Communication Technology представляет собой протокол безопасности для Internet. Как и SSL, протокол предназначен для предотвращения подслушивания клиент-серверных сообщений при всегда удостоверенных серверах, а клиентах - по запросам с сервера. Данный протокол исправляет и улучшает некоторые слабости SSL. Он разработан для приватности между двумя приложениями(клиентом и сервером) и так же , как и SSL, не зависит от них. В РСТ для гарантированной передачи данных используется все тот же TCP/IP.Протокол начинается с договора сторон об алгоритме шифрования и симметричном ключе сессии, а также идентифицирует сервер клиенту(при необходимости и наоборот), используя при этом ассиметричный общий ключ. При передачи данных начинает использоваться уже симметричный ключ сессии.

Следует отметить, что в протоколе не предусмотренно верификация сертификатов. Наоборот, принимается, что протокол может управлять достоверностью сертификатов. Дополнительно к шифрованию и аутентификации, протокол удостоверяет целостность сообщений, используя смешанный, базирующийся на функциях, message authetification code.

Формат протокола PCT совместим с SSL. Сервер, использующий оба протокола, способен распознавать клиентов PCT и SSL, по полю version, расположенном одинаково в первом сообщении при процедуре handshake (в РСТ, наиболее значимый бит поля version установлен в 1).

Протокол РСТ имеет следующие отличия от SSL в процедуре handshake :

структура окружения и сообщения короче и проще, восстановленная сессия без аутентификации не требует дополнительных сообщений, кроме 1 послания в каждом направлении;
переговоры об алгоритме и форматах для сессии предназначены, чтобы охватить большее количество характеристик, дополнительно к цифровому и сертификационному типу добавляется функциональный и тип обменых ключей;
при необходимоти сертификации договариваются о видах сертификатов и подписей;
аутентификация сообщения исправлена так, что использует ключи, отличные от ключей шифрования, что позволяет значительно увеличить длину ключей, повышая надежность;
были исправлены ошибки в стуктуре безопасности авторизации пользователей в SSL, и определение достоверности пользователя РСТ методом вопрос-ответ сейчас зависит от типа определенного для конкретной сессии шифра. Определение пользователя в SSL не зависит от силы используемого в сессии шифра и от того, была ли аутентификация проведена для восстановления старой сессии или для создания новой.Т.е. используя метод взлома 'men-on-the-middle' для получения ключа сессии со слабым шифрованием, можно получить аутентификацию для сесии с сильным шифрованием. Если, к примеру, сервер обычно ограничивает ряд функций для высокосекретных сессий, то эта слабое место позволяет обмануть ограничения.
Было добавлено поле предварительной верификации к фазе handshake, которое позволяет проверить тип шифра - не было ли вмешательства в этап переговоров, выполненных явно (в версии SSLv3.0 используется тот же механизм, но совместимость с SSLv2.0 разрушает эту возможность, так как позволяет хакеру просто сменить номер версии и шифр).

PCT handshake flow

Данный протокол используется для договора об усилении безопасности при передаче данных, использующих PCT Record protocol. Это заключается в :

аутентификации ;
симметричном шифровании;
обеспечении целостности сообщений;

Симметричное шифрование упрощается посредством использования Key Exchange Algorithm. РСТv.1 поддерживает следующие виды обмена ключей:

RSA-based;
Diffie-Hellman;
FORTEZZA token;

PCT handshake состоит из четырех поочередных сообщений между клиентом и сервером, инициируемых клиентом:

CLIENT_HELLO;
SERVER_HELLO;
CLIENT_MASTER_KEY;
SERVER_VERIFY;

Во многих случаях два последних опускаются.

Основное содержание сообщения зависит от двух условий:

Является ли сессия восстановленной или новой;
Требуется ли аутентификация клиентов(сервер всегда аутентифицируется);

Первое условие определяется и клиентом и сервером, CLIENT_HELLO имеет различное содержание, в зависимости от типа сессии (reconnected или new). SERVER_HELLO либо подтверждает запрос о продолжении старой, либо требует начала новой сессии. Второе условие определяется сервером и сообщение SERVER_HELLO может содержать требование об аутентификации клиента. Если сервер не запросил аутентификацию и подтвердил запрос клиента на восстановление прерванной сессии, тогда сообщения CLIENT_MASTER_KEY и SERVER_VERIFY не являются необходимыми и могут быть пропущены.

Сообщение CLIENT_HELLO содержит запрос на аутентификацию сервера и требование о типе, уровне криптографии и сертификации, которые будут использоваться для сессии. Если клиент пытается продолжить прерванную сессию, то он добавляет ее идентификатор (session ID).

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

CMK_VERIFY_PRELUDE_DATA

Hash ( CLIENT_MAC_KEY, Hash ( "cvp", CLIENT_HELLO, SERVER_HELLO ) ) , где функция Hash определяется значением SH_HASH_SPECS_DATA.

РСТ1.0 допускает спецификацию следующих типов функции Hash :

PCT_HASH_MD5(128 - битный MD5) ;
PCT_HASH_MD5_TRUNC_64(128 - битный MD5, усеченный до 64);
PCT_HASH_SHA( Secure Hash Algorithm, с 160 битным выводом);
PCT_HASH_SHA_TRUNC_80;
PCT_HASH_DES_DM(алгоритм Девиса-Мейера, основанный на DES);

В заключении сервер отправляет ответ на запрос клиента и идентификатор сессии, определенный случайным образом.

Если сервер принимает идентификатор старой сессии, то сообщение SERVER_HELLO содержит ответ на вызов клиента и идентификатор соединения, который опять дублируется как вызов аутентификации клиенту, если сервер этого хочет. Если аутентификация клиента не требуется , то handshake завершен (хотя аутентификация клиента подразумевается в МАС, включенном в первые данные от клиента). Иначе, последующие сообщения CLIENT_MASTER_KEY содержат ответ клиента, а сообщение SERVER_VERIFY дает сигнал о продолжении передачи.

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

Обычно, клиент может безопасно отправлять данные на транспортный уровень сразу за CLIENT_MASTER_KEY , не дожидаясь SERVER_VERIFY(это называется initial data). Это ускоряет обмен данными, так как РСТ добавляет только один раунд служебных переговоров. Однако, если необходим гарантированный канал, лучше убедиться, что вы присоединились к нужному сесрверу.

Программное обеспечение для браузеров и серверов

Программное обеспечение для Web-браузеров и серверов, поддерживающее функции информационной безопасности, распространено весьма широко. Наиболее распространен (более 75%) Netscape Navigator 3.0, поддерживающий SSL 3.0. Протокол SSL 3.0 поддерживают также серверы семейства SuiteSpot производства Netscape, в том числе Web-серверы FastTrack и Enterprise версии 2.0 и старше.Появившийся летом прошлого года Microsoft Explorer 3.0 поддерживает SSL 3.0, но текущая версия NT Server 4.0, куда входит Internet Information Server, поддерживает только SSL 2.0. Ожидается, что в будущем будет поддерживаться и SSL 3.0.

Браузер для Unix под названием XMosaic 2.6S производства National Center for Supercomputing Applications (NCSA) поддерживает протоколы Secure HTTP (S-HTTP), SSL 2.0 и SSL 3.0. Последний Web-сервер для Unix под названием NCSA HTTPD 1.6, выпущенный этой, поддерживает обе версии SSL и S-HTTP. Кроме того, браузер и сервер производства NCSA поддерживают функцию электронной подписи на базе протокола S-HTTP. Благодаря этой функции пользователь не может уклониться от выполнения определенных операций, например изменения адреса или подписания Web-страниц. Обеспечивается также возможность шифрования подписи по алгоритму RSA. Все браузеры Mosaic, а также сервер HTTPD поддерживают специальный механизм digest authentication, предотвращающий пересылку паролей открытым текстом, из-за чего они могут быть перехвачены злоумышленниками. Правда, не следует забывать, что NCSA - это научно-исследовательская организация, которая предоставляет только экспериментальные, а не коммерческие версии.

Заключение

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

В настоящий момент существуют следующие приложения шифрования для Internet:

для шифрования электронной почты(Pretty Good Privacy);
для защищенных WWW-транзакций(Secure Sockets Layer, Secure HyperText Transfer Protocol);
большое количество шифрованных реализаций для FTP и Telnet;

Internet Engineering Task Force начала рассматривать новые протоколы, поддерживающие шифрование. Ожидается, что они, со временем, вытеснят широко распространенные в настоящее время SMTP, FTP, Telnet, HTTP, DNS, RPC. К примеру, IPv6 уже включает поддержку для аутентификации и шифрования.

Дополнительно, ряд производителей firewall начинает включать поддержку шифрования для обеспечения конфиденциальности общения между двумя firewall. Для этого допускается организация Virtual Private Network(VPN) через Internet.

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