Защита электронной почты в Internet

Содержание.


Введение    2
1. Способы защиты потока данных в Web   3
2. Защита на уровне приложений    4
2. 1. Система PGP      4
2. 2. Система S/MIME   7
3. Протоколы SSL и TLS 11
3. 1. Архитектура SSL  11
3. 2. Протокол записи SSL    11
3. 3. Протокол изменения параметров шифрования     12
3. 4. Протокол извещения     12
3. 5. Протокол квитирования  12
3. 6. Создание главного секретного ключа     15
3. 7. Генерирование криптографических параметров   15
3. 8. Что такое TLS и его отличие от SSL     16
4. Защита на уровне IP (сетевой уровень)     16
4. 1. Архитектура защиты на уровне IP   16
4. 2. Заголовок аутентификации (AH).    18
4. 2. 1. Структура заголовка 18
4. 2. 2. Использование AH в транспортном и туннельном режиме  18
4. 3. Протокол ESP     19
4. 3. 1. Формат пакета ESP   19
4. 3. 2. Шифрование и алгоритмы аутентификации     20
4. 3. 3. Транспортный режим ESP   20
4. 3. 4. Туннельный режим ESP     21
4. 4. Комбинация защищённых связей      22
Заключение  24
Источники информации   25



Введение.
      Большинство проблем, с которыми сталкиваются пользователи  электронной
почты (спам, вирусы, разнообразные атаки на конфиденциальность  писем  и  т.
д.), связано с недостаточной защитой современных почтовых систем.
      С этими проблемами приходится иметь дело и пользователям общедоступных
публичных систем, и организациям.  Практика  показывает,  что  одномоментное
решение проблемы защиты электронной почты невозможно. Спамеры,  создатели  и
распространители  вирусов,   хакеры   изобретательны,   и   уровень   защиты
электронной почты, вполне удовлетворительный вчера, сегодня может  оказаться
недостаточным. Для того чтобы защита электронной почты была  на  максимально
возможном уровне, а достижение этого уровня не требовало  чрезмерных  усилий
и затрат, необходим систематический и  комплексный,  с  учетом  всех  угроз,
подход к решению данной проблемы.
      Предпосылки   некоторых   проблем,   связанных    непосредственно    с
конфиденциальностью  почтовых  сообщений,  закладывались  при  возникновении
электронной почты три десятилетия назад. Во многом они не разрешены  до  сих
пор.
    . Ни один из стандартных почтовых  протоколов  (SMTP,  POP3,  IMAP4)  не
      включает    механизмов    защиты,     которые     гарантировали     бы
      конфиденциальность переписки.
    . Отсутствие надежной защиты протоколов  позволяет  создавать  письма  с
      фальшивыми адресами. Нельзя быть уверенным на 100% в том, кто является
      действительным автором письма.
    . Электронные письма легко  изменить.  Стандартное  письмо  не  содержит
      средств  проверки  собственной  целостности  и  при   передаче   через
      множество серверов,  может  быть  прочитано  и  изменено;  электронное
      письмо похоже сегодня на открытку.
    . Обычно в  работе  электронной  почты  нет  гарантий  доставки  письма.
      Несмотря на наличие возможности получить сообщение о  доставке,  часто
      это означает лишь, что сообщение дошло до почтового сервера получателя
      (но не обязательно до самого адресата).
      При   выборе   необходимых   средств   защиты    электронной    почты,
обеспечивающих   её   конфиденциальность,   целостность,   необходимо    для
системного  администратора  или  пользователя  ответить  на  вопрос:   какие
наиболее типичные средства может использовать злоумышленник для атак  систем
электронной почты?
      Приведём краткий пример данных средств и методов:
      1–ый способ. Использование снифферов.  Сниффер  -  представляют  собой
программы,  перехватывающие   все   сетевые   пакеты,   передающиеся   через
определенный  узел.  Снифферы  используются  в  сетях  на  вполне   законном
основании для  диагностики  неисправностей  и  анализа  потока  передаваемых
данных. Ввиду того, что некоторые сетевые приложения, в частности  почтовые,
передают данные в текстовом формате (SMTP, POP3 и др.), с  помощью  сниффера
можно узнать текст письма, имена пользователей и пароли.
      2-ой способ. IP-спуфинг (spoofing) -  возможен,  когда  злоумышленник,
находящийся внутри организации или вне ее выдает себя за  санкционированного
пользователя. Атаки IP-спуфинга часто являются отправной точкой  для  других
атак, например, DoS (Denial of Service – «отказ в обслуживании»). Обычно IP-
спуфинг ограничивается вставкой ложной информации или вредоносных  команд  в
обычный поток передаваемых по сети данных. Это  происходит  в  случае,  если
главная задача состоит в  получении  важного  файла.  Однако  злоумышленник,
поменяв таблицы маршрутизации данных и направив трафик на  ложный  IP-адрес,
может  восприниматься  системой  как   санкционированный   пользователь   и,
следовательно,  иметь  доступ  к  файлам,  приложениям,  и  в  том  числе  к
электронной почте.
      3-й способ – получение пароля на почту. Атаки  для  получения  паролей
можно проводить с помощью целого ряда методов, и хотя входное имя  и  пароль
можно  получить  при  помощи  IP-спуфинга  и  перехвата  пакетов,  их  часто
пытаются подобрать путем простого перебора с помощью специальной программы.
      4-й способ нарушения конфиденциальности - Man-in-the-Middle  («человек
в середине») - состоит в перехвате всех пакетов,  передаваемых  по  маршруту
от провайдера в любую другую часть Сети.  Подобные  атаки  с  использованием
снифферов  пакетов,  транспортных  протоколов  и  протоколов   маршрутизации
проводятся  с  целью  перехвата  информации,  получения  доступа  к  частным
сетевым  ресурсам,  искажения  передаваемых   данных.   Они   вполне   могут
использоваться для перехвата сообщений электронной почты и их  изменений,  а
также для перехвата паролей и имен пользователей.
      5-й способ. Атаки на уровне  приложений  используют  хорошо  известные
слабости серверного программного обеспечения (sendmail, ссылка на сайт удаленаcontact,  FTP).  Можно,
например, получить доступ к компьютеру от имени пользователя, работающего  с
приложением той же электронной почты.

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

1. Способы защиты потока данных в Web.
      Существует несколько подходов к обеспечению защиты данных в  Web.  Все
они похожи  с  точки  зрения  предоставляемых  возможностей  и  в  некоторой
степени с точки зрения используемых механизмов  защиты,  но  различаются  по
областям применения и размещению  соответствующих  средств  защиты  в  стеке
протоколов TCP/IP.
      Один из методов защиты данных в Web состоит в использовании  протокола
защиты IP (IPSec) Преимущество использования IPSec заключается  в  том,  что
этот  протокол  прозрачен  для  конечного  пользователя   и   приложений   и
обеспечивает универсальное решение.  Кроме  того,  протокол  IPSec  включает
средства фильтрации, позволяющие  использовать  его  только  для  той  части
потока данных, для которой это действительно необходимо.
      Другим решением является размещение средств  обеспечения  безопасности
сразу над протоколом TCP. Примером  современной  реализации  такого  подхода
являются стандарт SSL (Secure Socket Layer — протокол защищенных сокетов)  и
его более новая версия — стандарт TLS (Transport Layer Security  —  протокол
защиты транспортного уровня) безопасной передачи данных в Internet. На  этом
уровне для практической реализации данного подхода имеется две  возможности.
Самым общим решением является  внедрение  средств  SSL  (или  TLS)  в  набор
соответствующих протоколов, что  обеспечивает  прозрачность  средств  защиты
для приложений. В то же время средства SSL можно встраивать и  в  прикладные
программы. На пример, броузеры Netscape и  Microsoft  Internet  Explorer,  а
также большинство Web-серверов имеют встроенную поддержку SSL.
      Различные  средства  защиты  могут  встраиваться   и   в   приложения.
Преимущество данного подхода состоит в  том,  что  соответствующие  средства
защиты могут быть настроены оптимальным образом в зависимости от  требований
конкретного  приложения.  В  контексте  безопасности  Web  важным   примером
реализации  такого  подхода  является  протокол   SET   (Secure   Electronic
Transaction — протокол защиты электронных транзакций).

|IP/IPSec          | |IP                | |IP                                 |


Сетевой уровень          Транспортный уровень           Уровень приложения

                        Размещение средств защиты в стеке протоколов TCP/IP.



2. Защита на уровне приложений.
      2. 1.  Система PGP.
Сервис PGP, если не рассматривать управление ключами, складывается  из  пяти
функций:  аутентификация,  конфиденциальности,  сжатия,   совместимости   на
уровне электронной почты и сегментации.
Рассмотрим краткую характеристику функций PGP.
|Функция      |Используемые    |Описание                                        |
|             |алгоритмы       |                                                |
|Цифровая     |DSS/SHA или     |С помощью SHA–1 создаётся хэш-код сообщения.    |
|подпись      |RSA/SHA         |Полученный таким образом профиль сообщения      |
|             |                |шифруется с помощью DSS или RSA с использованием|
|             |                |личного ключа отправителя и включается в        |
|             |                |сообщение.                                      |
|Шифрование   |CAST либо IDEA, |Сообщение шифруется с помощью CAST-128 или IDEA,|
|сообщения    |                |или 3DES с одноразовым сеансовым ключом,        |
|             |либо «тройной»  |генерируемым отправителем. Сеансовый ключ       |
|             |DES c тремя     |шифруется с помощью алгоритма Диффи-Хеллмана или|
|             |ключами и       |RSA c использованием открытого ключа получателя |
|             |алгоритмом      |и включается в сообщение.                       |
|             |Диффи-Хеллмана  |                                                |
|             |или RSA.        |                                                |
|Сжатие       |ZIP             |Сообщение можно сжать для хранения или передачи,|
|             |                |использую zip.                                  |
|Совместимость|Преобразование в|Чтобы обеспечить прозрачность для всех          |
|             |формат radix-64 |приложений электронной почты, шифрованное       |
|на уровне    |                |сообщение можно превратить в строку ASCII,      |
|электронной  |                |используя преобразование в формат radix-64.     |
|почты        |                |                                                |
|Сегментация  |                |Чтобы удовлетворить ограничениям максимального  |
|             |                |размера сообщений, PGP выполняет сегментацию и  |
|             |                |обратную сборку сообщения.                      |

Схема аутентификации.
[pic]
Обозначения:
Ка – сеансовый ключ, используемый в схеме традиционного шифрования,
KRа – личный ключ А, используемый в схеме шифрования с открытым ключом,
KUа – открытый ключ А, используемый в схеме шифрования с открытым ключом,
EP – шифрование в схеме с открытым ключом,
DP – дешифрование в схеме с открытым ключом,
EC – шифрование в схеме традиционного шифрования,
DC – дешифрование в схеме традиционного шифрования,
H – функция хэширования,
|| – конкатенация,
Z – сжатие  с помощью алгоритма zip,
R64 – преобразование в формат radix-64 ASCII.

Шаги:
   1. Отправитель создает сообщение.
   2. Используется алгоритм SHA-1, в результате чего получается  160-битовый
      хэш-вектор сообщения
   3.  Полученный  хэш-вектор  шифруется   с   помощью   алгоритма   RSA   c
      использованием личного ключа отправителя, и  результат  добавляется  в
      начало сообщения.
   4.  Получатель  использует  RSA  с  открытым  ключом  отправителя,  чтобы
      дешифровать и восстановить хэш-код.
   5. Получатель генерирует новый хэш-код полученного сообщения и сравнивает
      его с дешифрованным  хэш-кодом.  Если  хэш-коды  совпадают,  сообщение
      считается подлинным.

Схема шифрования сообщения.
[pic]
Шаги:
   1.  Отправитель  генерирует  сообщение  и  случайное  128-битовое  число,
      которое  выступает  в  качестве  сеансового  ключа  только  для  этого
      сообщения.
   2. Сообщение шифруется с помощью алгоритма CAST-128 (или IDEA, или  3DES)
      и данного сеансового ключа.
   3. Сеансовый ключ шифруется с помощью алгоритма  RSA  и  открытого  ключа
      получателя и присоединятся к началу сообщения.
   4. Получатель использует RSA c личным ключом,  чтобы  дешифровать  и  тем
      самым восстановить сеансовый ключ.
   5. Сеансовый ключ применяется для дешифрования сообщения.

Схема использования обоих служб (подписи сообщения с помощью  личного  ключа
и его шифровки с помощью сеансового ключа).
[pic]
Отправитель сообщения:
    1. Для сообщения генерируется подпись (хэш-вектор, зашифрованный личным
       ключом отправителя объединяется с открытым текстом сообщения).
    2. Подпись и открытый текст сообщения сжимаются zip-ом
    3. Сжатый открытый  текст  сообщения  и  подпись  шифруются  с  помощью
       алгоритма CAST -128 (или IDEA, или 3DES), а сеансовый ключ шифруется
       с помощью RSA  (или  алгоритма  Эль-Гамаля)  при  этом  используется
       открытый ключ получателя.
Получатель сообщения
   1. Cеансовый ключ дешифруется с помощью личного ключа получателя.
   2. С помощью полученного сеансового ключа дешифрует сообщение
   3. Распаковка сообщения
   4. Открытым ключом отправителя дешифрует хэш-вектор  и  генерирует  новый
      хэш-вектор.
   5. Сравнивает их. Если совпадают ( сообщение не было изменено.

Идентификаторы ключей.
Так как получатель сообщения  имеет  возможность  получать  зашифрованные  и
подписанные сообщения  от  многих  участников  переписки,  следовательно  он
должен  иметь  несколько  пар  личный/открытый  ключей.  Для   того,   чтобы
получателю определить какой личный ключ (алгоритма  RSA)  надо  использовать
для  расшифровки  сеансового  ключа   (алгоритма   CAST-128)   он   получает
идентификатор  открытого  ключа  (вместо  самого  ключа   пересылается   его
идентификатор, так как сам открытый ключ для RSA может иметь длину  в  сотни
десятичных разрядов). Идентификатор, связываемый с каждым  открытым  ключом,
размещается в младших 64 разрядах ключа.
Идентификатор ключа требуется и для цифровой подписи  PGP.  Из-за  того  что
отправитель может воспользоваться одним  из  нескольких  личных  ключей  для
шифрования профиля сообщения, получатель должен знать, какой  открытый  ключ
ему  следует  использовать.  Поэтому  раздел  цифровой   подписи   сообщения
включает 64-битовый  идентификатор  соответствующего  открытого  ключа.  При
получении сообщения получатель проверяет,  что  идентификатор  соответствует
известному ему открытому ключу  отправителя,  а  затем  продолжает  проверку
подписи.
                                             Формат передаваемого сообщения.
|Сообщение                   |Подпись              |Компонент   |Содержимое     |
|                            |                     |сеансового  |               |
|                            |                     |ключа       |               |
|                            |                     |[pic]       |               |
|ZIP                                               |            |               |
|Eкs                                               |            |               |
|R64                                                             |               |


ERUb – шифрование с использованием личного ключа пользователя B
EKRa – шифрование с использованием открытого ключа пользователя А
EКs –   шифрование с использованием сеансового ключа
ZIP – функция сжатия ZIP
R64 – функция преобразования в формат radix-64.

Компонент подписи включает следующие элементы:
1. Метка даты-времени. Время создания подписи
2. Профиль сообщения. 160-битоавый профиль сообщения,  созданный  с  помощью
SHA-1 и шифрованный  с  использованием  личного  ключа  подписи  отправителя
(KRа).  Профиль  вычисляется  для  метки  даты-времени  подписи,   связанной
конкатенацией с порцией данных компонента сообщения. Включение  метки  даты-
времени подписи  в  профиль  обеспечивает  защиту  от  атак  воспроизведения
сообщения. Исключение имени файла и метки даты-времени компонента  сообщения
гарантирует, что отделённая подпись будет в точности совпадать  с  подписью,
добавляемой в префикс сообщения. Отделенные подписи вычисляются  для  файла,
в котором нет никаких полей заголовка сообщения.
3.  Ведущие  два  октета  профиля  сообщения.  Чтобы  обеспечить  получателю
возможность определить, соответствующий ли открытый ключ  использовался  для
шифрования профиля сообщения с целью  аутентификации,  проводится  сравнение
этих двух  октетов  открытого  текста  исходного  профиля  с  первыми  двумя
октетами  дешифрованного  профиля.  Эти  октеты  также   служат   16-битовой
последовательностью, используемой для проверки сообщения.
4. Идентификатор открытого ключа отправителя. Идентифицирует открытый  ключ,
который должен служить для дешифрования профиля сообщения и,  следовательно,
идентифицирует  личный  ключ,  использовавшийся   для   шифрования   профиля
сообщения.
      Компонент сообщения и  необязательный  компонент  подписи  могут  быть
сжаты с помощью ZIP и могут быть  зашифрованы  с  использованием  сеансового
ключа.
      Компонент сеансового ключа включает  сеансовый  ключ  и  идентификатор
открытого  ключа  получателя,   который   использовался   отправителем   для
шифрования данного сеансового ключа.
Весь блок обычно переводиться в формат radix-64. Перевод в  формат  radix-64
используется  для  совместимости  на  уровне   электронной   почты.   Сервис
аутентификации  предполагает,  что  мы  шифруем  только  профиль   сообщения
(цифровая подпись), сервис конфиденциальности предполагает, что  мы  шифруем
само сообщение (сеансовым ключом) и подпись (при наличии  последней),  таким
образом часть или весь выходной  блок  сообщения  представляет  собой  поток
произвольных 8-битовых  байтов.  Однако  многие  системы  электронной  почты
позволяют использовать только блоки, состоящие  из  символов  текста  ASCII.
Чтобы   удовлетворить   такому   ограничению,   PGP   обеспечивает    сервис
конвертирования  сырого  8-битового  двоичного  потока  в  поток  печатаемых
символов ASCII. Для этого используется схема конвертирования radix-64.

2. 2. Система S/MIME.
      Система  S/MIME  (Secure/Multipurpose  Internet   Mail   Extension   –
защищённые   многоцелевые    расширения    электронной    почты)    является
усовершенствованием  с  точки   зрения   защиты   стандарта   формата   MIME
электронной почты в Internet, базирующимся на использовании  технологии  RSA
Data Security.Существуют основания полагать, что  S/MIME  станет  стандартом
коммерческого и промышленного использования, в то время  как  PGP  останется
альтернативой   для   защиты   личной    электронной    почты    большинства
индивидуальных пользователей.
      Стандарт  MIME  является  расширением  базового  стандарта  RFC   822,
призванным решить некоторые  проблемы  и  преодолеть  ограничения  протокола
SMTP или некоторого другого протокола передачи почты, и RFC 822.
Ограничениями протокола SMTP, которые решает MIME являются:
   1. SMTP не позволяет передавать исполняемые  файлы  и  другие  объекты  в
      двоичном формате. Существует ряд схем преобразования двоичных файлов в
      текстовые (к ним относятся Uuencode/Uudecode для UNIX), которые  затем
      могут быть использованы различными почтовыми системами SMTP/ Однако ни
      одна из таких схем не является стандартом.
   2. SMTP не  позволяет  предавать  текстовые  данные,  включающие  символы
      национальных языков.
   3. Шлюзы SMTP,  выполняющие  трансляцию  кодов  ASCII  в  коды  EBCDIC  и
      обратно,  могут  иметь  разные  таблицы  перевода,  что  выливается  в
      проблемы трансляции.
Исходя из этих недостатков технические спецификации MIME включают  следующие
элементы:
   1. Определяется пять  новых  полей  заголовка  сообщения,  которые  могут
      включаться в заготовок RFC 822. Эти поля несут  в  себе  информацию  о
      теле сообщения.
   2.  Определяется  несколько  форматов  содержимого,  задающих   стандарты
      представления документов мультимедиа в сообщениях электронной почты.
   3. Определяются  стандарты  кодировок  передаваемых  данных,  позволяющие
      защитить содержимое сообщения от изменения при осуществлении почтовыми
      системами преобразования  передаваемых  данных  из  одного  формата  в
      другой.

   Стандарт MIME определяет пять полей заголовка сообщения, любые  или  все
из которых могут включаться в заголовок RFC 822:
MIME-Version (версия MIME). Соответствующий параметр должен  иметь  значение
1.0. Это поле указывает, что сообщение соответствует стандартам RFC  2045  и
2046.
Content-Type  (тип  содержимого).  Описывает  данные,  помещённые   в   тело
сообщения,  достаточно  подробно  для  того,  чтобы  агент  получателя  смог
выбрать  соответствующий  агент  или   механизм,   позволяющий   представить
полученные   данные   пользователю   или   обработать   их   каким-то   иным
соответствующим образом.
Content-Transfer-Encoding (кодировка передаваемого содержания).  Указывается
тип преобразования,  использовавшегося  для  того,  чтобы  представить  тело
сообщения в виде, приемлемом для пересылки почтой.
Сontent-ID (идентификатор содержимого). Служит для  того,  чтобы  уникальным
образом идентифицировать объекты MIME среди множества контекстов.
Content-description (описание содержимого).  Текстовые  описания  объекта  в
теле сообщения; полезно тогда, когда объект  имеет  форму,  недоступную  для
прочтения (например, звуковые данные).
Любая реализация, как минимум, должна  поддерживать  обработку  полей  MIME-
Version, Content-Type и Сontent-Transfer-Encoding.

      В S/MIME защита объекта MIME обеспечивается подписью, шифрованием  или
и тем, и другим одновременно. Объектом MIME может  быть  как  всё  сообщение
(за исключением его заголовков RFC 822)  или,  в  случае  многокомпонентного
содержимого  MIME,  одно  или  несколько  частей  сообщения.   Объект   MIME
готовится в соответствии с обычными  правилами  подготовки  сообщений  MIME.
Затем объект MIME вместе  с  некоторыми  связанными  с  ним  данными  защиты
(например,  идентификаторами  алгоритма   и   сертификатов)   обрабатывается
S/MIME, чтобы в результате получить то, что обычно  называют  объектом  PKCS
(Public-Key  Cryptography  Specification  –  спецификация   криптографии   с
открытым  ключом).  С  объектом  PKCS  затем  обращаются  как  с  содержимым
сообщения, которое упаковывают в MIME  (добавляя  соответствующие  заголовки
MIME).
Помимо типов содержимого стандарта MIME,  в  стандарте  S/MIME  используются
ряд  новых  типов  содержимого,  перечисленные  в  таблице.  Все  эти   типы
содержимого используют обозначения PKCS, опубликованные RSA  Laboratories  и
доступные для S/MIME.
|Тип         |Подтип        |Параметр S/MIME|Описание                           |
|Multipart   |Signed        |               |Открытое подписанное сообщение из  |
|(многокомпон|(подписанный) |               |двух частей: сообщения и его       |
|ентный)     |              |               |подписи                            |
|Application | pkcs7-mime   |signedData     |Подписанные объект S/MIME          |
|(приложение)|              |               |                                   |
|            |pkcs7-mime    | envelopedData |Шифрованный объект S/MIME          |
|            |pkcs7-mime    | Degenerate    |Объект, содержащий только          |
|            |              |signedData     |сертификаты открытых ключей        |
|            |pkcs7-signatur| -             |Тип подписи, являющейся частью     |
|            |e             |               |сообщения типа multipart/signed    |
|            | pkcs10-mime  |-              |Сообщение запроса регистрации      |
|            |              |               |сертификата.                       |

Формирование объекта envelopedData (упакованные данные).
При подготовке объекта envelopedData MIME должны  быть  выполнены  следующие
действия:
   1. Генерируется псевдослучайный сеансовый ключ для конкретного  алгоритма
      симметричной схемы шифрования (RC2/40 или 3DES).
   2. Для каждого получателя сеансовый ключ шифруется  с  помощью  открытого
      ключа получателя и RSA.
   3. Для каждого получателя готовится блок данных, называемый RecipientInfo
      (информация для получателя),  содержащий  сертификат  открытого  ключа
      отправителя, идентификатор алгоритма, использовавшегося для шифрования
      сеансового ключа, и шифрованный сеансовый ключ.
   4. Содержимое сообщения шифруется с помощью сеансового ключа.
      Блоки  RecipientInfo,  за  которыми  следует  шифрованное   содержимое
сообщения,  вместе  составляют  блок  envelopedData.  Эта  информация  затем
кодируется в формате base64 (radix-64).
Пример такого файла:

Content-Type: application/pkcs7-mime; smime-type=enveloped-data;
name=smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=smime.p7m

Rfvbn765BghyHhUjfewqwnvdCDC7

Формирование объекта  signedData (подписанные данные).
   1. Выбирается алгоритм создания профиля сообщения (SHA или MD5).
   2. Вычисляется профиль сообщения (значение хэш-функции) для  содержимого,
      которое должно быть подписано.
   3.  Профиль  сообщения  шифруется  с  помощью  личного   ключа   стороны,
      подписавшей документ.
   4. Подготавливается блок, называемый SignedInfo  (информация  подписавшей
      стороны), содержащий сертификат открытого ключа  подписавшей  документ
      стороны, идентификатор  алгоритма,  использовавшегося  для  шифрования
      профиля сообщения и шифрованного профиля сообщения.
      Объект signedData формируется из ряда блоков, включающих идентификатор
алгоритма создания профиля сообщения, само подписываемое  сообщение  и  блок
SignerInfo. Вся эта информация кодируется в base64. Пример такого  сообщения
(с исключёнными заголовками RFC 822):

Content-Type: application/pkcs7-mime; smime-type=signed-data;
name=smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=smime.p7m

Rfvbn765BghyHhUjfewqwnvdCDC7

Открытое подписанное сообщение.
      Открытое подписанное сообщение получается тогда, когда для содержимого
используется тип multipart и подтип signed. Сообщение типа  multipart/signed
включает две части.
      Первая часть может быть любого типа MIME, но должна быть  подготовлена
так, чтобы она не была изменена в пути следования от источника  к  адресату.
Это значит, что если первая часть не представлена в 7-битовой кодировке,  то
данные надо  кодировать  в  формат  base64.  В  первой  части  располагается
открытый текст сообщения.
      Вторая часть представляет собой отделённую  подпись.  Она  формируется
по алгоритму объекта signedData. В результате  создаётся  объект  в  формате
signedData, поле содержимого которого оказывается пустым. Затем этот  объект
кодируется в формат base64, чтобы  стать  второй  частью  многокомпонентного
сообщения. Для типа MIME этой второй части выбирается значение  application,
а для подтипа - pkcs7-signature. Пример такого сообщения:

Content-Type: multipart/signed;
      Protocol=”application/pkcs7- signature”;
      Micalg=shal; boundary=boundary42

 -- boundary42
Content-Type: text/plain

Это открытый текст подписанного сообщения.

-- boundary42

Content-Type: application/pkcs7- signature; name=smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=smime.p7m

Rfvbn765BghyHhUjfewqwnvdCDC7

-- boundary42 --

Значение параметра protocol  указывает  но  то,  что  этот  объект  является
двухкомпонентным открытым подписанным сообщением. Значение параметра  micalg
указывает тип используемого профиля сообщения.  Получатель  может  проверить
подпись, вычислив  профиль  сообщения  из  первой  части  и  сравнив  его  с
профилем сообщения, который восстанавливается из подписи во второй части.

Криптографические алгоритмы.
В таблице представлены криптографические алгоритмы,  используемы  в  системе
S/MIME.
В  S/MIME  принята  терминология,  предложенная   в  документе  RFC  2119  и
позволяющая указать уровень требований.
ОБЯЗАТЕЛЬНО   (MUST).   Определение    является    абсолютным    требованием
спецификации. Любая реализация должна включать  это  свойство  или  функцию,
чтобы соответствовать данной спецификации.
РЕКОМЕНДУЕТСЯ (SHOULD). В конкретном окружении  могут  существовать  причины
игнорировать это свойство или функцию, но  рекомендуется,  чтобы  реализация
всё же имела соответствующее свойство или функцию.
|Функция             |Требование                                                |
|Создание профиля    |ОБЯЗАТЕЛЬНА поддержка SHA-1 и MD5                         |
|сообщения,          |                                                          |
|используемого при   |РЕКОМЕНДУЕТСЯ использование SHA-1                         |
|формировании        |                                                          |
|цифровой подписи.   |                                                          |
|Шифрование профиля  |Для агентов отсылки и приёма ОБЯЗАТЕЛЬНА поддержка DSS    |
|сообщения для       |Для агента отсылки РЕКОМЕНДУЕТСЯ поддержка шифрования RSA |
|формирования        |Для агента приёма РЕКОМЕНДУЕТСЯ поддержка верификации     |
|цифровой подписи    |подписей RSA с длиной ключа от 512  до 1024 битов.        |
|                    |Для агентов отсылки и приёма ОБЯЗАТЕЛЬНО поддержка        |
|Шифрование          |алгоритма Диффи-Хеллмана.                                 |
|сеансового ключа для|Для агента отсылки РЕКОМЕНДУЕТСЯ поддержка шифрования RSA |
|передачи с          |с длиной ключа от 512 до 1024 битов.                      |
|сообщением          |Для агента приёма РЕКОМЕНДУЕТСЯ поддержка дешифрования RSA|
|Шифрование сообщения|Для агента отсылки РЕКОМЕНДУЕТСЯ поддержка шифрования     |
|для передачи с      |tripleDES и RC2/40.                                       |
|использованием      |Для агента приёма ОБЯЗАТЕЛЬНА поддержка дешифрования      |
|сеансового ключа    |tripleDES и РЕКОМЕНДУЕТСЯ поддержка дешифрования RC2/40.  |


S/MIME  объединяет  три  алгоритма,  использующих  открытые  ключ.  Стандарт
цифровой  подписи  (алгоритм  DSS)  является   предпочтительным   алгоритмом
создания цифровой подписи. Предпочтительным алгоритмом шифрования  сеансовых
ключей в S/MIME называется алгоритм Диффи-Хеллмана, но фактически  в  S/MIME
используется    вариант     алгоритма     Диффи-Хеллмана,     обеспечивающий
шифрование/дешифрование  и известный как  алгоритм  Эль-Гамаля.  В  качестве
альтернативы как для подписей, так и для шифрования сеансовых  ключей  может
использоваться алгоритм RSA.
Для  шифрования  сообщений  рекомендуется  «тройной»  DES  c  тремя  ключами
(tripleDES), но  любая  гибкая  реализация  должна  поддерживать  40-битовую
версию  алгоритма  RC2.  Последний   является   весьма   слабым   алгоритмом
шифрования, но зато соответствует экспортным требованиям США.

3. Протоколы SSL и TLS.
      3.1. Архитектура SSL.
      Протокол SSL призван обеспечить возможность надежной  защиты  сквозной
передачи данных с использованием протокола TCP. SSL  представляет  собой  не
один протокол, а два уровня протоколов.  Протокол  записи  SSL  (SSL  Record
Protocol)   обеспечивает   базовый   набор   средств   защиты,   применяемых
протоколами  более  высоких  уровней.  Эти  средства,  в  частности,   может
использовать протокол  передачи  гипертекстовых  файлов  (ссылка на сайт удаленаcontact),  призванный
обеспечить обмен данными при взаимодействии клиентов и серверов Web.  Частью
SSL считаются и три протокола более высокого уровня:  протокол  квитирования
установления  связи  (Handshake  Protocol),  протокол  изменения  параметров
шифрования  (Change  Cipher  Spec  Protocol)  и  протокол  извещения  (Alert
Protocol). Эти протоколы служат для управления обменом данными SSL.

|Протокол           |Протокол изменения |Протокол извещения |FTP, SMTP, ссылка на сайт удаленаcontact.   |
|квитирования SSL   |параметров         |SSL                |                   |
|                   |шифрования SSL     |                   |                   |
|Протокол записи SSL                                                             |
|TCP                                                                             |
|IP                                                                              |


                                                        Стек протоколов SSL.
      Между  любой  парой  обменивающихся  информацией   сторон   (например,
приложений типа ссылка на сайт удаленаcontact клиента и сервера) можно  установить  много  защищенных
соединений.  Теоретически  между  сторонами  можно  установить  и  несколько
одновременно существующих сеансов,  но  на  практике  такая  возможность  не
используется.
Соединение (connection) — транспорт,  обеспечивающий сервис некоторого
подходящего типа (SMTP, ссылка на сайт удаленаcontact и т.д.) Каждое соединение ассоциируется только
с одним сеансом.
Сеанс (session). Сеанс SSL — это связь между  клиентом  и  сервером.  Сеансы
создаются  протоколом  квитирования  SSL  (SSL  Handshake  Protocol).  Сеанс
определяет  набор  параметров  криптографической   защиты,   которые   могут
использоваться   несколькими   соединениями.   Сеансы   позволяют   избежать
необходимости  ведения  переговоров  об   установлении    параметров  защиты
для каждого нового соединения.

3.2. Протокол записи SSL
      Протокол записи SSL (SSL Record Protocol) обеспечивает поддержку двух
следующих сервисов для соединений SSL.
•    Конфиденциальность.    Протокол    квитирования    SSL    (SSL
Handshake Protocol) определяет общий для клиента и сервера секретный ключ,
используемый алгоритмом традиционной схемы для шифрования данных,
передаваемых по протоколу SSL.
•    Целостность сообщений. Помимо обеспечения конфиденциальности, протокол
квитирования SSL определяет общий секретный ключ для вычисления значений
MAC (Message Authentication Code — код аутентичности сообщения).
      Порядок отправки данных:
   1. Этот протокол, получив сообщение для пересылки другой стороне, сначала
      фрагментирует данные, разбивая их на блоки подходящего размера;
   2. При необходимости выполняет сжатие данных;
   3. Применяет алгоритм вычисления MAC;
   4. Шифрует данные (MAC +сжатое сообщение);
   5. Добавляет заголовок
   6. Передает полученные пакеты сегменту TCP.
При принятии данных: данные дешифруются, проверяются, восстанавливаются,
собираются вновь и передаются приложениям более высокого уровня.
      При вычислении кода аутентичности сообщения используется специальная
схема вычисления MAC, в которой используется алгоритм хэширования MD5 или
SHA-1.
      Сжатое сообщение вместе с добавленным к нему значением MAC шифруется.
Используемые алгоритмы шифрования:
|Блочное шифрование                     |Поточное шифрование                    |
|Алгоритм           |Размер ключа       |Алгоритм           |Размер ключа       |
|IDEA               |128                |RC4-40             |40                 |
|RC2-40             |40                 |RC4-128            |128                |
|DES-40             |40                 |                                       |
|DES                |56                 |                                       |
|3DES               |168                |                                       |
|Fortezza           |80                 |                                       |


      В случае применения алгоритмов поточного шифрования  шифруются  только
сжатое сообщение и добавленное к нему значение MAC.
      При использовании алгоритмов блочного шифрования  после  значения  MAC
можно добавлять заполнитель. Заполнитель состоит из некоторого числа  байтов
заполнителя, за которыми  следует  1-байтовое  значение,  указывающее  длину
заполнителя. Для общей длины заполнителя выбирается наименьшее из  значений,
при котором общая длина  последовательности  данных,  подлежащих  шифрованию
(открытый текст + MAC + заполнитель), будет кратна длине блока шифра.
      Завершающим шагом в работе  протокола  записи  SSL  является  создание
заголовка, состоящего из следующих полей.
      •  Тип  содержимого  (8  битов).  Определяет  протокол  лежащего  выше
уровня, с помощью которого должен обрабатываться данный фрагмент.
      •  Главный номер версии (8  битов).  Указывает  главный  номер  версии
используемого протокола SSL. Для SSLv3 это поле содержит значение 3.
      •  Дополнительный номер версии  (8  битов).  Указывает  дополнительный
номер версии  применяемого  протокола  SSL.  Для  SSLv3  это  поле  содержит
значение 0.
      •   Длина  сжатого  фрагмента  (16  битов).  Длина  в  байтах  данного
фрагмента открытого текста (или сжатого фрагмента при  сжатии).  Максимально
допустимое значение равно 2^14 + 2048.
      Для типа содержимого определены  значения  change_cipher_spec,  alert,
handshake и  application_data.  Первые  три  значения  обозначают  протоколы
стека SSL.

3. 3.  Протокол изменения параметров шифрования
      Протокол изменения параметров шифрования (Change Cipher Spec Protocol)
генерирует  однобайтовое  сообщение,  содержащее  значение  1.  Единственной
задачей этого сообщения  является  указание  начать  копирование  параметров
состояния ожидания в текущее состояние, что приводит к обновлению  комплекта
шифров, используемых для данного соединения.

3. 4. Протокол извещения
      Протокол извещения (Alert Protocol) предназначен для  передачи  другой
участвующей в обмене данными стороне извещений, касающихся работы  SSL.  Как
и данные любого другого приложения, использующего SSL,  сообщения  протокола
извещения точно так же сжимаются и шифруются в  соответствии  с  параметрами
текущего состояния.
      Сообщение, генерируемое  данным  протоколом  состоит  из  2-х  байтов:
первый байт - значение,  обозначающее  уровень  предупреждения  или  уровень
неустранимой ошибки,  второй  байт  –  код,  обозначающий  конкретный  смысл
извещения. Если в  первом  байте  указан  уровень  неустранимой  ошибки,  то
протокол  SSL  разрывает  соединение,  другие  соединения  могут  продолжать
существовать, но нового соединения для  данного  сеанса  создать  уже  будет
невозможно.
      В  протоколе  извещения  существует  5   извещений,   указывающих   на
неустранимую ошибку и 7 извещений не указывающих на неустранимую ошибку.

3. 5. Протокол квитирования.
      Этот  протокол  позволяет  серверу  и   клиенту   выполнить   взаимную
аутентификацию, а также согласовать алгоритмы шифрования, вычисления  MAC  и
криптографические  ключи,  которые  будут   служить   для   защиты   данных,
пересылаемых в записи SSL. Протокол квитирования  должен  использоваться  до
начала пересылки данных прикладных программ.
      В случае с протоколом квитирования генерируется  несколько  сообщений,
которыми обмениваются клиент и сервер. Любое такое  сообщение  содержит  три
следующих поля.
      •   Тип (1 байт). Указывает один из 10 допустимых типов сообщения.
      •    Длина (3 байта). Длина сообщения в байтах.
      •    Содержимое (>  1  байта).  Параметры,  связываемые  с  сообщением
данного типа.
В содержимом может находится несколько полей, в каждом из которых  находятся
элементы.
      Этапы установления сеанса (session) между клиентом и сервером.
|№   |                |                                                         |
|этап|                |                                                         |
|а   |Типы сообщений  |Характеристика этапа                                     |
|1   |                |Определяется характеристика защиты, включая номер версии |
|    |                |протокола, идентификатор сеанса, комплект шифров, метод  |
|    |                |сжатия и исходные случайные числа.                       |
|2   |                |                                                         |
|    |                |                                                         |
|    |                |Сервер может передать сертификат, сообщение обмена       |
|    |                |ключами и запрос сертификата. Сервер сигнализирует об    |
|    |                |окончании фазы приветственного сообщения.                |
|3   |                |                                                         |
|    |                |Клиент передаёт сертификат, если он был запрошен. Клиент |
|    |                |передает сообщение обмена ключами. Клиент может передать |
|    |                |сообщение верификации сертификата.                       |
|4   |                |                                                         |
|    |                |                                                         |
|    |                |Смена комплекта шифров и завершение работы протокола     |
|    |                |квитирования                                             |


1-ый этап – определение характеристик защиты.
Процесс  инициируется   клиентом,   который   передаёт   сообщение   серверу
client_hello,  сервер  отвечает   сообщением   server_hello   с   выбранными
параметрами, которые доступны клиенту.
Тип сообщения: client-hello.
|Название поля|Характеристика поля                                              |
|Версия       |Наивысший номер версии SSL, поддерживаемый клиентом.             |
|Случайное    |Генерируемая клиентом случайная структура, содержащая 32-битовую |
|значение     |метку даты/времени и 28 байтов, полученных с помощью защищенного |
|             |генератора случайных чисел. Эти значения используются в качестве |
|             |оказий во время обмена ключами с целью защиты от атак            |
|             |воспроизведения.                                                 |
|Комплект     |Список, содержащий наборы криптографических алгоритмов,          |
|шифров       |поддерживаемых клиентом, перечисленные в порядке убывания их     |
|             |приоритета. Каждый элемент списка (каждый комплект шифров)       |
|             |определяет алгоритм обмена ключами для схем традиционного        |
|             |шифрования, вычислений значений MAC и другие параметры           |
|             |шифрования. Сервер в server_hello должен определить какой-либо   |
|             |комплект шифров.                                                 |
|Метод сжатия |Список методов сжатия, поддерживаемых клиентом. Сервер в         |
|             |server_hello должен определить метод сжатии из доступных по      |
|             |списку.                                                          |
|Идентификатор|Идентификатор переменной длины для данного сеанса. Ненулевое     |
|сеанса       |значение говорит о намерении клиента обновить параметры          |
|             |имеющегося соединения или создать новое соединение в рамках того |
|             |же сеанса. Нулевое значение вводится тогда, когда клиент намерен |
|             |создать новое соединение в новом сеансе.                         |

2-й этап – Аутентификация сервера и обмен ключами сервера.
      Данный этап начинается  с  отправки  сервером  его  сертификата,  если
требуется  аутентификация  сервера.   Сообщение   certificate   (сертификат)
требуется  для  любого  из  предлагаемых  методов  обмена   ключами,   кроме
анонимного метода Диффи-Хеллмана. При использовании метода Диффи-Хеллмана  с
фиксированными  параметрами   это   сообщение   сертификации   (certificate)
выполняет функции сообщения обмена ключами (server_key_exchange),  поскольку
в нем содержатся предлагаемые сервером открытые параметры  алгоритма  Диффи-
Хеллмана.
      Затем   при   необходимости   может    быть    отправлено    сообщение
server_key_exchange (обмен ключами сервера). Отправка  такого  сообщения  не
требуется в двух случаях: (1) когда сервер отправил  сертификат  для  метода
Диффи-Хеллмана с  фиксированными  параметрами  или  (2)  когда  предлагается
использовать  схему  обмена  ключами  RSA.   Сообщение   server_key_exchange
необходимо в случаях, когда используются следующие схемы.
•   Анонимный метод Диффи-Хеллмана.
•   Метод Диффи-Хеллмана с одноразовыми параметрами. Сообщение содержит
такие же три параметра, как и в случае анонимного метода Диффи-Хеллмана, и
еще подпись для этих параметров.
•   Обмен ключами по схеме RSA, когда использующий RSA сервер имеет ключ
RSA только для подписи.
•   Fortezza.
            После этого неанонимный сервер  (т.е.  сервер,  не  использующий
анонимный  метод  Диффи-Хеллмана)  может   запросить   сертификат   клиента.
Сообщение certificate_request (запрос сертификата) включает  два  параметра:
certificate_type  (тип  сертификата,  указывающий  на  применяемый  алгоритм
шифрования   с   открытым   ключом)   и   certificate_authorities    (центры
сертификации).  Центры  сертификации  -  список  имен   допустимых   центров
сертификации.
             Последним  (и  единственным  обязательным)  сообщением  второго
этапа является сообщение server_done, которым сервер извещает  о  завершении
фазы приветствия сервера ввиду отправки им всех  соответствующих  сообщений.
Это сообщение не имеет параметров. После  отправки  этого  сообщения  сервер
переходит в режим ожидания ответа клиента.

3-й этап - Аутентификация клиента и обмен ключами клиента.
      Получив сообщение server_done, клиент должен убедиться в том, что
сервер предоставил действительный сертификат (если это требуется) и что
параметры сообщения server_hello являются приемлемыми. Если проверка
завершается успешно, клиент оправляет серверу следующие сообщения.
1. Если сервер запросил сертификат, клиент начинает данный этап с отправки
серверу сообщения certificate. Если у клиента подходящего сертификата нет,
клиент отправляет вместо него уведомление no_certificate (нет сертификата).
2. Следующим идет сообщение client_key_exchange (обмен ключами клиента),
Содержимое этого сообщения зависит от выбранного метода обмена ключами и
может быть следующим.
•    RSA. Клиент генерирует 48-байтовый предварительный главный ключ и
шифрует его с помощью открытого ключа из сертификата сервера или с помощью
временного ключа RSA из сообщения server_key_exchange. Этот предварительный
ключ позволяет вычислить главный ключ.
•    Метод Диффи-Хеллмана с одноразовыми параметрами, или анонимный метод
Диффи-Хеллмана. Отправляются открытые параметры клиента для метода Диффи-
Хеллмана.
•    Метод Диффи-Хеллмана с фиксированными параметрами. В данном случае
открытые параметры клиента для метода Диффи-Хеллмана уже были отправлены в
сообщении certificate, поэтому содержимое данного сообщения оказывается
пустым.
•    Fortezza. Отправляются параметры клиента для алгоритма Fortezza.
В   завершение   данного   этапа   клиент    может    отправить    сообщение
certificate_verify (проверка сертификата), чтобы обеспечить средства  прямой
верификации  сертификата  клиента.  Это  сообщение  отправляется  вслед   за
сертификатом  клиента,  поддерживающим  подпись   (т.е.   вслед   за   любым
сертификатом клиента, кроме тех, которые содержат  параметры  Диффи-Хеллмана
с  фиксированными  параметрами).   Сообщение   включает   подпись   хэш-кода
предыдущего сообщения.

4-ый этап – завершение создания защищённого соединения.
      Клиент отправляет сообщение change_cipher_spec  (изменение  параметров
шифрования) и  копирует  параметры  шифрования  из  поля  "комплект  шифров"
состояния ожидания в поле  текущего состояния. Обратите внимание на то,  что
это сообщение не считается частью протокола  квитирования,  а  отсылается  в
рамках  протокола  изменения  параметров  шифрования  (Change  Cipher   Spec
Protocol).  В  ответ  клиент  немедленно  отправляет   сообщение   finished,
шифрованное новым алгоритмом  с  новыми  ключами  и  секретными  значениями.
Сообщение   finished   подтверждает,   что   процессы   обмена   ключами   и
аутентификации   завершились   успешно.   Содержимое   сообщения    finished
представляет собой результат конкатенации следующих двух значений хэш-кода.
MD5  (master_secret  ||  pad_2  ||  MD5  (handshake_messages  ||  Sender  ||
master_secret || pad_l)),
SHA  (master_secret  ||  pad_2  ||  SHA  (handshake_messages  ||  Sender  ||
master_secret || pad_l)),
где Sender - код, указывающий на то, что отправителем является клиент,
handshake_messages -  все  данные  сообщений  квитирования,  за  исключением
данного сообщения.
 master_secret – совместно применяемый главный секретный ключ,  представляет
собой однократно используемое 48-байтовое занчение (384 бита),  генерируемое
для данного сеанса в ходе защищённого обмена данными.
            В ответ на эти два  сообщения  сервер  посылает  свое  сообщение
change_cipher_spec, переводит  параметры  шифрования  состояния  ожидания  в
текущее состояние и  посылает  свое  сообщение  finished.  На  этом  процесс
квитирования завершается, и  теперь  клиент  и  сервер  могут  начать  обмен
данными на уровне приложения.

3. 6. Создание главного секретного ключа.
      Создание главного ключа  состоит  из  двух  этапов.  На  первом  этапе
согласуется значение предварительного главного ключа (pre_master_secret),  а
на втором обе стороны вычисляют  значение  главного  ключа  (master_secret).
Для передачи друг другу значения  pre_master_secret  у  сторон  имеется  два
варианта.
•    RSA. Генерируемый клиентом 48-байтовый ключ pre_master_secret
шифруется с помощью открытого ключа RSA сервера и отправляется клиентом
серверу. Сервер дешифрует полученный шифрованный текст с помощью своего
личного ключа и восстанавливает значение pre_master_secret.
•    Метод Диффи-Хеллмана. И клиент, и сервер генерируют открытые ключи  для
алгоритма  Диффи-Хеллмана.   После  обмена  этими  ключами  каждая   сторона
выполняет определенные вычисления по методу Диффи-Хеллмана, в     результате
     которых       получается       совместно       используемое    значение
pre_master_secret.
Теперь обе стороны могут вычислить значение master_secret по схеме:
master_secret = MD5 (pre_master_secret ||
                          SHA ('A' || pre_master_secret ||
ClientHello.random || ServerHello.random)) ||
            MD5 (pre_master_secret ||
            SHA ('BB' || pre_master_secret || ClientHello.random || Server
            Hello.random))  ||
              MD5 (pre_master_secret ||
              SHA ('CCC' || pre_master_secret || ClientHello.random ||
          ServerHello.random)),
где ClientHello.random  и  ServerHello.random  являются  значениями  оказий,
входящих  в  оригинальные  сообщения  приветствия  сторон  (поле  «случайное
значение»).

3. 7. Генерирование криптографических параметров.
      Для элемента “Параметры шифрования” поля “комплект  шифров”  требуются
секретный ключ MAC клиента  для  записи,  секретный  ключ  MAC  сервера  для
записи,  ключ  клиента  для  записи,  ключ  сервера   для   записи,   вектор
инициализации клиента для записи и вектор инициализации сервера для  записи.
Все эти параметры генерируются из главного ключа  путем  применения  функции
хэширования   к   главному    ключу    с    целью    получения    защищенной
последовательности байтов достаточной длины.
Процедура  генерирования  ключей  из  главного  ключа  аналогична  процедуре
генерирования главного ключа из предварительного и показана ниже.

key_block = MD5 (master_secret ||
                     SHA ('A'  ||  master_secret  ||  ServerHello.random  ||
ClientHello.random)) ||
                     MD5 (master_secret ||
                     SHA ('BB' || master_secret || Server Hello,  random  ||
ClientHello.random)) ||
                     MD5  (master_secret  ||SHA('CCC'  ||  master_secret  ||
ServerHello.random || ClientHello.random)) || ...
Процедура  выполняется   до   тех   пор,   пока   не   будет   сгенерирована
последовательность  достаточной   длины.   Эта   алгоритмическая   структура
представляет собой псевдослучайную  функцию.  Значение  master_secret  можно
рассматривать   как   инициализирующее   значение    для    этой    функции.
Сгенерированные клиентом и сервером случайные числа можно рассматривать  как
значения  модификаторов  (salt  values),  используемых  с  целью  усложнения
криптоанализа.

3. 8. Что такое TLS и его отличие от SSL.
Протокол  TLS  представляет  собой  результат  инициативы   IETF   (Internet
Engineering Task Force – проблемная группа проектирования  Internet),  целью
которой является разработка  стандарта  SSL  для  Internet.  Текущая  версия
проекта стандарта TLS очень похожа на SSLv3. Рассмотрим различия  между  TLS
и SSLv3.
   1. Схемы вычислений значений  MAC  этих  протоколов  отличаются  по  двум
      параметрам: применяемому  алгоритму  и  области  данных,  для  которых
      вычисляется значение кода аутентичности сообщения.
   2. В TLS применяется  PRF  функция.  PRF  функция  служит  для  получения
      небольшого  по  длине  секретного  значения,   которое    служит   для
      генерирования более длинных блоков данных (используя специальную схему
      расширения данных где использован алгоритм HMAC), защищённых  от  атак
      на  функции  хэширования  и  вычисления  значений  кода  аутентичности
      сообщения. Секретное значение получается путём  использования  той  же
      схемы расширения данных, но с алгоритмом MD5 или SHA.
   3. В   TLS не извещения no_certificate, но определён  ряд  дополнительных
      кодов извещения (их всего  12,  9  из  которых  означают  неустранимую
      ошибку).
   4. В  TLS  включены  все  алгоритмы  симметричной  схемы  шифрования,  за
      исключением Fortezza.
   5. Сообщение finished в TLS представляет  собой  хэш-код,  вычисленный  c
      помощью master_secret, предыдущих сообщений и метки,  идентифицирующей
      клиент и сервер. Схема вычисления  сообщения  finished  отличается  от
      схемы,  используемой  в  SSLv3.  В  TLS  схемы   выглядит   так:   PRF
      (master_secret, finished_label,  MD5  (handshake_meassages)  ||  SHA-1
      (handshake_messages)), где
 finished_label – строка «client finished» для клиента  и  «server_finished»
для сервера.
   6. Схема вычисления master_secret для TLS иная чем в SSLv3.
   7. В SSL байты заполнителя добавляются к данным пользователя,  подлежащим
      шифрованию,  минимально необходимом количестве, достаточном для  того,
      чтобы получить общую длину данных для шифрования, кратную длине  блока
      шифра. В случае TLS разрешается добавлять любое число заполнителей (до
      255 байтов включительно), лишь бы  в  результате  длина  блока  данных
      получилась кратной длине блока шифра.

4. Защита на уровне IP (сетевой уровень).
      4. 1. Архитектура защиты на уровне IP
IPSec обеспечивает сервис защиты на уровне IP, позволяя системе выбрать
необходимые протоколы защиты, определить алгоритм (алгоритмы) для
соответствующего сервиса (сервисов) и задать значения любых
криптографических ключей, требуемых для запрошенного сервиса. Для защиты
используется два протокола: протокол аутентификации, указанный заголовком
данного протокола (заголовком аутентификации АН), и комбинированный
протокол шифрования/аутентификации, определенный форматом пакета для этого
протокола (протокола ESP). В данном случае обеспечиваются следующие виды
сервиса:
•   контроль доступа;
•   целостность без установления соединений;
•   аутентификация источника данных;
•   отторжение воспроизведенных пакетов (форма целостности
последовательностей);
•   конфиденциальность (шифрование);
•   ограниченная конфиденциальность транспортного потока.
В случае ESP есть два варианта: с использованием и без  использования  опции
аутентификации. Как АН,  так  и  ESP  имеют  возможности  контроля  доступа,
основанного  на  распределении   криптографических   ключей   и   управлении
транспортными потоками, относящимися к этим протоколам защиты.

|Вид сервиса                           |AH  |ESP (только  |ESP (шифрование и |
|                                      |    |шифрование)  |аутентификация)   |
|Контроль доступа                      |(   |(            |(                 |
|Целостность без установления          |(   |             |(                 |
|соединений                            |    |             |                  |
|Аутентификация источника данных       |(   |             |(                 |
|Отторжение воспроизведенных пакетов   |(   |(            |(                 |
|Конфиденциальность                    |    |(            |(                 |
|Ограниченная конфиденциальность       |    |(            |(                 |
|транспортного потока                  |    |             |                  |

              Ключевым    объектом    в    механизмах    аутентификации    и
конфиденциальности для IP является защищенная связь (Security  Association).
Связь  представляет  собой  одностороннее  отношение  между  отправителем  и
получателем,  применяющим  сервис  защиты  к  транспортному  потоку.  Сервис
защиты предоставляет возможность для защищенной связи использовать либо  АН,
либо ESP, но никак не обе эти возможности одновременно.
            В любом пакете IP защищенная связь  однозначно  идентифицируется
адресом пункта назначения в заголовке IPv4 или IPv6  и  индексом  параметров
защиты  (даёт  возможност  ьвыбрать  защищённую  связь  по  которой   должен
обрабатываться полученный пакет) во вложенном заголовке расширения  (АН  или
ESP).
      Заголовки АН и ESP поддерживают два режима использования: транспортный
и туннельный. Дадим краткий обзором этих режимов.
Транспортный режим.
Транспортный режим обеспечивает защиту прежде всего для  протоколов  высшего
уровня. Это значит, что  защита  транспортного  режима  распространяется  на
полезный груз пакета IP. Примеры включают сегмент TCP  или  UDP,  или  пакет
протокола  ICMP  ,  которые  размещаются  непосредственно  над  IP  в  стеке
главного протокола. Когда система использует заголовки АН или ESP над  IPv4,
полезным грузом являются данные, обычно размещаемые  сразу  после  заголовка
IP. Для  IPv6  полезным  грузом  являются  данные,  обычно  следующие  после
заголовка IP и всех  имеющихся  заголовков  расширений  IPv6,  за  возможным
исключением заголовка параметров  адресата,  который  тоже  может  подлежать
защите.
ESP в транспортном режиме шифрует и,  если  нужно,  идентифицирует  полезный
груз IP, но  не  заголовок  IP.  АН  в  транспортном  режиме  идентифицирует
полезный груз IP и некоторые части заголовка IP.
Туннельный режим.
Туннельный режим обеспечивает защиту всего пакета  IP.  После  добавления  к
пакету  IP  полей  АН  или  ESP  весь  пакет,  вместе   с   полями   защиты,
рассматривается как полезный груз некоторого нового "внешнего" пакета  IP  с
новым внешним заголовком IP. Весь оригинальный, или  внутренний,  пакет  при
этом пересылается через "туннель" от одной точки сети  IP  к  другой,  и  ни
один из маршрутизаторов на пути не может проверить внутренний заголовок  IP.
Ввиду того что оригинальный пакет  инкапсулирован  в  новый,  больший  пакет
может иметь совершенно другие адреса источника  и  адресата,  что  усиливает
защиту. Туннельный режим  используется  тогда,  когда  один  или  оба  конца
защищенной  связи  являются  шлюзами  защиты,  например  брандмауэрами   или
маршрутизаторами, которые основаны на IPSec. При  использовании  туннельного
режима системы в сетях за брандмауэрами могут осуществлять защищенный  обмен
данными без  применения  IPSec.  Незащищенные  пакеты,  генерируемые  такими
системами,  связываются  по  туннелям,  проложенным  через  внешние  сети  с
помощью туннельного  режима  защищенной  связи,  установленного  программным
обеспечением IPSec в брандмауэре или защищенном  маршрутизаторе  на  границе
локальной сети.

       Функциональные возможности транспортного и туннельного режимов
|Вид заголовка|Транспортный режим защищенной|Туннельный режим защищенной связи|
|             |связи                        |                                 |
|АН           |Идентифицирует полезный груз |Идентифицирует весь внутренний   |
|             |IP, а также отдельные части  |пакет IP (заголовок и полезный   |
|             |заголовка IP и заголовков    |груз внутреннего пакета IP), а   |
|             |расширений IPv6              |также отдельные части внешнего   |
|             |                             |заголовка IP и внешних заголовков|
|             |                             |расширений IPv6                  |
|ESP          |Шифрует полезный груз IP и   |Шифрует внутренний пакет IP      |
|             |все заголовки расширений     |                                 |
|             |IPv6, следующие за заголовком|                                 |
|             |ESP                          |                                 |
|ESP с        |Шифрует полезный груз IP и   |Шифрует внутренний пакет IP.     |
|аутентификаци|все заголовки расширений     |Идентифицирует внутренний пакет  |
|ей           |IPv6, следующие за заголовком|IP                               |
|             |ESP.                         |                                 |
|             |Идентифицирует полезный груз |                                 |
|             |IP, но не заголовок IP       |                                 |

4. 2. Заголовок аутентификации (AH).
4. 2. 1. Структура заголовка.
Заголовок аутентификации (АН) обеспечивает поддержку целостности данных и
аутентификации пакетов IP. Свойство целостности данных гарантирует
невозможность незаметной модификации содержимого пакета в пути следования.
Функция аутентификации дает возможность конечной системе или сетевому
устройству идентифицировать пользователя или приложение и соответственно
отфильтровать трафик, а также защититься от очень распространенных сегодня
в Internet атак с подменой сетевых адресов. Заголовок АН также защищает от
атак воспроизведения сообщений.
Заголовок аутентификации состоит из следующих полей
|Следующий заголовок       |Длина полезного груза     |Зарезервировано           |
|Индекс параметров защиты                                                        |
|Порядковый номер                                                                |
|Данные аутентификации (переменой длины)                                         |


                                             Заголовок аутентификации IPSec.
    .  Следующий  заголовок.  Идентифицирует   тип   заголовка,   следующего
      непосредственно за данным заголовком
    . Длина полезного груза (8 битов). Длина заголовка аутентификации в  32-
      битовых словах, уменьшенная на 2.
    . Зарезервировано (16 битов). Для будущего использования.
    . Индекс параметров защиты (32 бита). Идентифицирует защищенную связь.
    . Порядковый номер (32 бита). Значение счетчика, для сервиса  защиты  от
      воспроизведения
    . Данные аутентификации (переменной  длины).  Поле  переменной  длины  ,
      содержащее MAC для данного пакета.
Атаки воспроизведения сообщений  заключаются  в  том,  что  противник  может
получить  экземпляр  удостоверенного   пакета   и   позже   предъявить   его
предполагаемому  адресату.  Повторное  получение  одинаковых  удостоверенных
пакетов IP может каким-то образом нарушить сервис или иметь какие-то  другие
нежелательные последствия.

4. 2. 2. Использование AH в транспортном и туннельном режиме.
      В этом подразделе мы  рассмотрим  область  применения  аутентификации,
обеспечиваемой   с   помощью   протокола   АН,   и   размещение    заголовка
аутентификации в каждом из  двух  режимов.  При  этом  случаи  IPv4  и  IPv6
несколько различаются.


      Для транспортного режима АН с применением IPv4 данные  АН  размещаются
непосредственно после оригинального заголовка IP и перед полезным грузом  IP
(например,  сегментом  TCP).  Аутентификации   подлежит   весь   пакет,   за
исключением изменяемых  полей  в  заголовке  IPv4,  которые  обнуляются  для
вычисления значения MAC.
|                                                                                |
|Оригинальный       |AH                 |TCP                |Данные             |
|заголовок IP       |                   |                   |                   |


      В контексте IPv6 данные АН рассматриваются как полезный груз  сквозной
передачи;   т.е.   проверка   и   обработка   этих   данных   промежуточными
маршрутизаторами не предполагается.  Поэтому  данные  АН  размещаются  после
базового заголовка IPv6 и заголовков расширений  транзита,  маршрутизации  и
фрагментации. Заголовок расширения параметров  адресации  может  размещаться
до или после заголовка АН — в зависимости  от  требований  семантики.  Опять
же,  аутентификация  предполагается  для  всего   пакета,   за   исключением
изменяемых полей, которые обнуляются для вычисления значения MAC.
|                                                                                |
|Оригинальный|Транзит,    |AH          |Адресация   |TCP         |Данные      |
|заголовок IP|адресация,  |            |            |            |            |
|            |маршрутизаци|            |            |            |            |
|            |я,          |            |            |            |            |
|            |фрагментация|            |            |            |            |


      Для туннельного режима АН удостоверяется весь оригинальный пакет IP, a
заголовок АН вставляется между оригинальным заголовком IP  и  новым  внешним
заголовком IP. Внутренний заголовок IP несет адреса  оригинальных  источника
и адресата, в то время как внешний заголовок IP может  содержать  совершенно
другие адреса IP (например, адреса брандмауэров или других шлюзов защиты).
В туннельном режиме  весь  внутренний  пакет  IP,  включая  весь  внутренний
заголовок IP, защищается средствами АН. Внешний заголовок  IP  (а  в  случае
IPv6 и внешние заголовки расширений IP) защищается с исключением  изменяемых
и непрогнозируемых по значению полей.

|                                                                                |
|Новый заголовок|AH             |Оригинальный   |TCP            |Данные         |
|IP             |               |заголовок IP   |               |               |


                                                                        IPv4
|                                                                                |
|Новый     |Заголовки |AH        |Оригинальны|Заголовки |TCP       |Данные    |
|заголовок |расширений|          |й заголовок|расширений|          |          |
|IP        |          |          |IP         |          |          |          |


                                                                        IPv6

4. 3. Протокол ESP.
      4. 3. 1. Формат пакета ESP
Поля пакета ESP.
•   Индекс параметров защиты (32 бита). Идентифицирует защищенную связь.
•    Порядковый номер (32 бита). Значение счетчика, обеспечивающее функцию
защиты от воспроизведения, как и в случае для АН.
•   Полезный груз (переменной длины). Это сегмент транспортного уровня (в
транспортном режиме) или пакет IP (в туннельном режиме), который защищается
шифрованием.
•   Заполнитель (0-255 байтов).
•   Длина заполнителя (8 битов). Указывает число байтов заполнителя,
непосредственно предшествующего данному полю.
•   Следующий заголовок (8 битов). Идентифицирует тип данных, содержащихся
в поле данных полезного груза, с помощью идентификации первого заголовка
этого полезного груза (например, заголовка расширения IPv6 или протокола
верхнего уровня, такого как TCP).
•   Данные  аутентификации  (переменной  длины).  Поле  переменной  длины  ,
содержащее код ICV (Integrity  Check  Value  —  код  контроля  целостности),
вычисляемый для всего пакета ESP без поля данных аутентификации.



|Индекс параметров защиты                                                        |
|Порядковый номер                                                                |
|        |Данные полезного груза                                                 |
|        |        |Заполнитель (0-255 байт)                                     |
|                  |                    |Длина заполнителя  |Следующий заголовок|
|Данные аутентификации (переменной длины)                                        |

Поле заполнителя предназначено для следующих целей.
•    Если алгоритм шифрования требует, чтобы длина открытого текста была
кратна некоторому целому числу байтов (например, длине одного блока
блочного шифра), поле заполнителя служит для того, чтобы дополнить открытый
текст (складывающийся из полей полезного груза, заполнителя, длины
заполнителя и следующего заголовка) до нужной длины.
•   Формат ESP требует, чтобы поля длины заполнителя и следующего заголовка
были выровнены по правому краю в 32-битовом слове. Это эквивалентно
требованию, чтобы шифрованный текст имел длину, кратную 32 битам. Поле
заполнителя предназначено для того, чтобы осуществить такое выравнивание.
•   Дополнительное заполнение можно  использовать  тогда,   когда  требуется
обеспечить   частичную   конфиденциальность   для   транспортного    потока,
чтобы скрыть истинную длину полезного груза.

      4. 3. 2. Шифрование и алгоритмы аутентификации.
      Сервис ESP предполагает шифрование полей полезного груза, заполнителя,
длины заполнителя и следующего заголовка.
      Имеющиеся на сегодня спецификации требуют, чтобы любая реализация
поддерживала использование алгоритма DES в режиме СВС (режим сцепления
шифрованных блоков. Другие алгоритм которые могут применяться для сервиса
ESP:
•   "тройной" DES с тремя ключами,
•   RC5,
•   IDEA,
•   "тройной" IDEA с тремя ключами,
•   CAST,
•   Blowfish.
            Как и АН, протокол ESP поддерживает использование  значений  MAC
длиной по умолчанию 96 битов. Так же как и в случае с АН, имеющиеся  сегодня
спецификации требуют, чтобы любая реализация поддерживала схемы  HMAC-MD5-96
и HMAC-SHA-1-96.

      4. 3. 3. Транспортный режим ESP.
      Транспортный режим ESP служит для шифрования и, если нужно,
аутентификации данных, пересылаемых по протоколу IP (например, сегмента
TCP). Для этого режима в случае с IPv4 заголовок ESP размещается в пакете
IP непосредственно перед заголовком транспортного уровня (например, TCP,
UDP, ICMP), а концевик (trailer) пакета ESP (содержащий поля заполнителя,
длины заполнителя и следующего заголовка) размещается после пакета IP; если
же используется функция аутентификации, то поле данных аутентификации ESP
добавляется после концевика ESP. Весь сегмент транспортного уровня вместе с
концевиком ESP шифруются. Аутентификация охватывает весь шифрованный текст
и заголовок ESP.
|                                                                                |
|                                                                                |
|Оригинальный|Заголовок   |TCP         |Данные      |Концевик ESP|Аутентификат|
|заголовок IP|ESP         |            |            |            |ор ESP      |

      В контексте IPv6 данные ESP рассматриваются как предназначенный для
сквозной пересылки полезный груз, не предполагающий проверку или обработку
промежуточными маршрутизаторами. Поэтому заголовок ESP размещается после
основного заголовка IPv6 и заголовков расширений транзита, маршрутизации и
фрагментации. Заголовок расширения параметров адресата может быть помещен
до или после заголовка ESP — в зависимости от требований семантики. В
случае IPv6 шифрование охватывает весь сегмент транспортного уровня вместе
с концевиком ESP, а также заголовок расширения параметров адресата, если
этот заголовок размещается после заголовка ESP. Аутентификация
предполагается для шифрованного текста и заголовка ESP.

|                                                                                |
|                                                                                |
|Оригиналь|Транзит,  |       |         |         |         |         |         |
|ный      |адресация,|Заголов|адресация|         |Данные   |Концевик |Аутентифи|
|заголовок|маршрутиза|ок ESP |         |TCP      |         |ESP      |катор ESP|
|IP       |ция,      |       |         |         |         |         |         |
|         |фрагментац|       |         |         |         |         |         |
|         |ия        |       |         |         |         |         |         |

      В транспортном режиме выполняются следующие операции:
1.   В узле источника блок  данных,  состоящий  из  концевика  ESP  и  всего
сегмента транспортного уровня,  шифруется,  а  открытый  текст  этого  блока
заменяется шифрованным текстом, что формирует пакет IP для  пересылки.  Если
выбрана опция аутентификации, то добавляется поле аутентификации.
2.   Затем пакет направляется адресату. Каждый  промежуточный  маршрутизатор
должен  проверить  и  обработать  заголовок  IP,  а  также   все   заголовки
расширений IP, доступные в нешифрованном виде. Шифрованный  текст  при  этом
остается неизменным.
3.  Узел адресата проверяет и обрабатывает  заголовок  IP  и  все  заголовки
расширений IP, доступные в нешифрованном виде. Затем  на  основе  информации
индекса параметров  защиты  в  заголовке  ESP  дешифруются  остальные  части
пакета, в результате чего становится доступным сегмент транспортного  уровня
в виде открытого текста.
                Использование     транспортного     режима      обеспечивает
конфиденциальность  для  любого  применяющего  этот  режим  приложения,  что
позволяет   избежать   необходимости    реализации    функций    обеспечения
конфиденциальности в каждом  отдельном  приложении.  Этот  режим  достаточно
эффективен, а объем  добавляемых  к  пакету  IP  данных  при  этом  невелик.
Недостатком  этого  режима  является  то,  что  при  его  использовании   не
исключается возможность анализа трафика пересылаемых пакетов.

      4. 3. 4. Туннельный режим ESP.
            Туннельный режим ESP предназначен для  шифрования  всего  пакета
IP.  Для этого режима заголовок ESP добавляется  к  пакету  как  префикс,  а
затем такой пакет вместе с концевиком  ESP  шифруются.  Данный  метод  можно
использовать,  когда требуется исключить возможность атак,   построенных  на
анализе трафика.
      Ввиду того что  заголовок  IP  содержит  адрес  пункта  назначения  и,
возможно,  директивы  исходной  маршрутизации   вместе   с   информацией   о
параметрах  транзита,  нельзя  просто  передать  шифрованный  пакет   IP   с
добавленным  к  нему  в  виде   префикса   заголовком   ESP.   Промежуточные
маршрутизаторы не смогут обработать такой пакет. Таким  образом,  необходимо
включить  весь   блок   (заголовок   ESP,   шифрованный   текст   и   данные
аутентификации, если они есть) во  внешний  пакет  IP  с  новым  заголовком,
который будет содержать достаточно информации для маршрутизации, но  не  для
анализа трафика.
|                                                                                |
|                                                                                |
|Новый    |Заголовок |Оригинальны|TCP      |Данные    |Концевик  |Аутентификат|
|заголовок|ESP       |й заголовок|         |          |ESP       |ор ESP      |
|IP       |          |IP         |         |          |          |            |


                                                                        IPv4



|                                                                                |
|                                                                                |


    Новый заголовок IP |Заголовки расширений |Заголовок ESP |Оригинальный
        заголовок IP |Заголовок расширений |TСP |Данные |Концевик ESP
                                                 |Аутентификатор ESP | |IPv6
      В то время как транспортный режим подходит для защиты соединений между
узлами, поддерживающими сервис ESP, туннельный режим оказывается полезным  в
конфигурации, которая  предполагает  наличие  брандмауэра  или  иного  шлюза
защиты, предназначенного для защиты  надежной  внутренней  сети  от  внешних
сетей. В случае с туннельным  режимом  шифрование  используется  для  обмена
только между внешним узлом и шлюзом защиты или между двумя  шлюзами  защиты.
Это  разгружает  узлы  внутренней  сети,  избавляя   их   от   необходимости
шифрования данных,  и  упрощает  процедуру  распределения  ключей,  уменьшая
число требуемых ключей. Кроме того, такой подход усложняет проблему  анализа
потока сообщений, направляемых конкретному адресату.
Рассмотрим случай, когда внешний узел соединяется с узлом  внутренней  сети,
защищенной  брандмауэром,  и  когда  ESP  используется   внешним   узлом   и
брандмауэром. Тогда при пересылке сегмента транспортного уровня от  внешнего
узла к узлу внутренней сети будут выполнены следующие действия.
1.   Источник  готовит  внутренний  пакет  IP  с  указанием  адреса   пункта
назначения, являющегося  узлом  внутренней  сети.  К  этому  пакету  в  виде
префикса добавляется заголовок ESP. Затем пакет и концевик ESP  шифруются  и
к результату могут быть добавлены  данные  аутентификации.  Полученный  блок
заключается во внешний пакет IP с новым  заголовком  IP  (базовый  заголовок
плюс  необязательные  расширения,  например   параметров   маршрутизации   и
транзита для IPv6), в  котором  адресом  пункта  назначения  является  адрес
брандмауэра.
2.    Внешний   пакет   отправляется   брандмауэру.   Каждый   промежуточный
маршрутизатор нужно проверить  и  обработать  внешний  заголовок  IP  и  все
внешние заголовки расширений IP, оставив шифрованный текст неизменным.
3.   Брандмауэр-адресат проверяет и обрабатывает внешний заголовок IP и  все
внешние  заголовки  расширений  IP.  Затем  на  основе  информации   индекса
параметров защиты в  заголовке  ESP  брандмауэр  дешифрует  остальные  части
пакета, в результате чего становится доступным внутренний пакет  IP  в  виде
открытого текста. Этот пакет потом передается по внутренней сети.
4.  Внутренний пакет направляется через маршрутизаторы внутренней  сети  или
непосредственно к узлу-адресату.

4. 4. Комбинация защищённых связей.
      Отдельная защищенная связь может использовать либо протокол  АН,  либо
ESP, но никак не оба  эти  протокола  одновременно.  Тем  не  менее,  иногда
конкретный поток обмена данными может требовать  и  сервиса  АН,  и  сервиса
ESP. Кроме  того,  конкретному  потоку  обмена  данными  может  понадобиться
сервис IPSec для связи между главными  узлами  и  другой  сервис  для  связи
между шлюзами защиты, например брандмауэрами. Во всех  этих  случаях  одному
потоку  для  получения  всего  комплекса  услуг  IPSec  требуется  несколько
защищенных связей. Здесь вводится понятие пучка защищенных связей  (security
association  bundle),  обозначающее  набор  защищенных  связей,  посредством
которых потоку должно предоставляться  необходимое  множество  услуг  IPSec.
При этом защищенные связи в пучке могут  завершаться  в  различных  конечных
точках.
      Защищенные связи  могут  быть  объединены  в  пучки  следующими  двумя
способами.
         . Транспортная смежность. Применение более одного протокола защиты
           к одному пакету IP без туннелирования. Этот  подход  к  созданию
           комбинации АН и ESP оказывается эффективным  только  для  одного
           уровня вложения: дальнейшие  вложения  не  дают  дополнительного
           выигрыша, поскольку обработка выполняется в  одной  инстанции  —
           IPsec (конечного) получателя.
         .  Повторное   туннелирование.   Применение   нескольких   уровней
           протоколов защиты  с  помощью  туннелирования  IP.  Этот  подход
           допускает множество уровней вложения,  поскольку  туннели  могут
           начинаться и завершаться в разных использующих IPsec узлах  сети
           вдоль маршрута передачи данных.
      Эти два  подхода  можно  объединить  (например,  организовав  в  части
туннельной защищенной связи между  шлюзами  защиты  транспортную  защищенную
связь между находящимися на пути узлами).



Заключение.
            Исходя из рассмотренных уровней защиты потока  данных  в  Web  и
архитектуры построения сети на основе  стека  TCP/IP  был  произведён  обзор
стандартов,  существующих  в  настоящее  время  и  обеспечивающих   надёжную
передачу  данных  (по  e-mail),  если  используемое   нами   программное   и
аппаратное обеспечение поддерживает комплекс требований, изложенных  в  этих
стандартах.
            Итак, рекомендуемые  меры  и  средства  для  защиты  электронной
переписки:
   1. Сильные средства аутентификации,  например,  технология  двухфакторной
      аутентификации.
   2.  Эффективное  построение  и  администрирование  сети.  Речь   идет   о
      построении коммутируемой  инфраструктуры,  мерах  контроля  доступа  и
      фильтрации  исходящего   трафика,   закрытии   «дыр»   в   программном
      обеспечении с помощью модулей- «заплаток» и регулярном его обновлении,
      установке антивирусных программ и многом ином.
   3. Криптографию, основанную на сильных криптоалгоритмах  (Симметричные  -
      RC4, RC5, CAST, DES,  AES,  оптимальная  длина  ключа  которых  =  128
      разрядов, ассиметричные - RSA, Diffie-Hellman и El-Gamal,  оптимальная
      длина которых 2048 разряда.
   4. Если криптографический алгоритм,  используемый  в  системе  достаточно
      стоек, а генератор случайных чисел, используемый для создания  ключей,
      никуда не годится, любой достаточно опытный  криптоаналитик  в  первую
      очередь обратит своё  внимание именно на него.
   5. Если удалось улучшить генератор, но  ячейки  компьютера  не  защищены,
      после того как в них побывал сгенерированный  ключ,  грош  цена  такой
      безопасности.
   6. Следует учитывать, что большинство сбоев в обеспечении  информационной
      безопасности   происходит   не    из-за    найденных    слабостей    в
      криптографических  алгоритмах   и   протоколах,   а   из-за   вопиющих
      оплошностей в их реализации.
   7. Данная мера, которая  в  основном  используется  для  усиления  защиты
      электронных коммерческих операций, может быть реализована и для защиты
      обычной e-mail. Это построение многоуровневой эшелонированной  системы
      обороны, которая заключается в реализации защиты на нескольких уровнях
      модели OSI. Например, если какие-то приложения  Web  имеют  встроенные
      протоколы защиты данных (для e-mail это могут быть  PGP  или  S/MIME),
      использование IPSec позволяет усилить эту защиту.
   8. Надо отметить, что SSL защищает письма только при передаче и  если  не
      используются другие средства криптозащиты, то письма  при  хранении  в
      почтовых ящиках и на промежуточных серверах находятся в открытом виде.

В этом случае  надо  использовать  средства  шифрования  прикладного  уровня
(S/MIME) или сеансового уровня (IPSec), на  котором  реализуется  шифрование
всего пакета IP (или TCP в зависимости от режима).



Источники информации:

1. Вильям Столингс, Криптография и защита сетей: принципы  и  практика,  2-е
  издание: пер. с английского – М, : Издательский дом «Вильямс», 2001.
2. Материалы электронной библиотеки InfoCity. (www.infocity.ru)
3. Материалы сервера www.citforum.ru

-----------------------
Client_hello

Server_hello

certificate

server_key_exchange

certificate_request

server_hello_done

Change_cipher_spec

finished

Change_cipher_spec

finished

certificate

client_key_exchange

Sertificate_verify

Удостоверяется за исключением изменяемых полей

Удостоверяется за исключением изменяемых полей

Удостоверяется за исключением изменяемых полей в новом заголовке IP

Удостоверяется за исключением изменяемых полей в новом заголовке IP и его
заголовках расширений

Шифруется

Удостоверяется

Шифруется

Удостоверяется

Шифруется

Шифруется

Удостоверяется

Удостоверяется