Введение 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, HTTP, 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 — протокол защиты электронных транзакций). HTTP
FTP
SMTP
HTTP
FTP
SMTP
S/MIME
PGP
SET
TCP
SSL
или TLS
Kerberos
SMTP
HTTP
TCP
UDP
TCP
IP/IPSec
IP
IP
Сетевой
уровень Транспортный уровень Уровень приложения Размещение
средств защиты в стеке протоколов TCP/IP.2. Защита на уровне приложений.
2. 1. Система PGP.Сервис PGP, если не рассматривать управление ключами, складывается
из пяти функций: аутентификация, конфиденциальности, сжатия, совместимости
на уровне электронной почты и сегментации.Рассмотрим краткую характеристику
функций PGP.Функция
Используемые алгоритмы
Описание
Цифровая подпись
DSS/SHA
или RSA/SHA
С помощью SHA–1 создаётся хэш-код сообщения. Полученный таким образом
профиль сообщения шифруется с помощью DSS или RSA с использованием личного ключа
отправителя и включается в сообщение.
Шифрование сообщения
CAST либо IDEA,
либо «тройной» DES c тремя ключами и алгоритмом Диффи-Хеллмана или RSA.
Сообщение
шифруется с помощью CAST-128 или IDEA, или 3DES с одноразовым сеансовым ключом,
генерируемым отправителем. Сеансовый ключ шифруется с помощью алгоритма Диффи-Хеллмана
или RSA c использованием открытого ключа получателя и включается в
сообщение.
Сжатие
ZIP
Сообщение можно сжать для хранения или передачи, использую
zip.
Совместимостьна уровне электронной почты
Преобразование в формат radix-64
Чтобы
обеспечить прозрачность для всех приложений электронной почты, шифрованное
сообщение можно превратить в строку ASCII, используя преобразование в формат
radix-64.
Сегментация
Чтобы удовлетворить ограничениям максимального размера
сообщений, PGP выполняет сегментацию и обратную сборку сообщения.
Схема аутентификации.Обозначения:Ка
– сеансовый ключ, используемый в схеме традиционного шифрования,KRа
– личный ключ А, используемый в схеме шифрования с открытым ключом,KUа
– открытый ключ А, используемый в схеме шифрования с открытым ключом,EP –
шифрование в схеме с открытым ключом,DP – дешифрование в схеме с открытым ключом,EC
– шифрование в схеме традиционного шифрования, DC – дешифрование в схеме
традиционного шифрования, H – функция хэширования,|| – конкатенация,Z – сжатие
с помощью алгоритма zip,R64 – преобразование в формат radix-64 ASCII.Шаги:1. Отправитель
создает сообщение.2. Используется алгоритм SHA-1, в результате чего получается
160-битовый хэш-вектор сообщения3. Полученный хэш-вектор шифруется с
помощью алгоритма RSA c использованием личного ключа отправителя, и результат добавляется
в начало сообщения.4. Получатель использует RSA с открытым ключом отправителя,
чтобы дешифровать и восстановить хэш-код.5. Получатель генерирует новый
хэш-код полученного сообщения и сравнивает его с дешифрованным хэш-кодом. Если
хэш-коды совпадают, сообщение считается подлинным.Схема шифрования сообщения.Шаги:1.
Отправитель генерирует сообщение и случайное 128-битовое число, которое
выступает в качестве сеансового ключа только для этого сообщения.2. Сообщение
шифруется с помощью алгоритма CAST-128 (или IDEA, или 3DES) и данного сеансового
ключа.3. Сеансовый ключ шифруется с помощью алгоритма RSA и открытого ключа
получателя и присоединятся к началу сообщения.4. Получатель использует RSA c личным
ключом, чтобы дешифровать и тем самым восстановить сеансовый ключ.5. Сеансовый
ключ применяется для дешифрования сообщения.Схема использования обоих служб
(подписи сообщения с помощью личного ключа и его шифровки с помощью сеансового
ключа). Отправитель сообщения:1. Для сообщения генерируется подпись (хэш-вектор,
зашифрованный личным ключом отправителя объединяется с открытым текстом сообщения).2.
Подпись и открытый текст сообщения сжимаются zip-ом3. Сжатый открытый
текст сообщения и подпись шифруются с помощью алгоритма CAST -128 (или IDEA,
или 3DES), а сеансовый ключ шифруется с помощью RSA (или алгоритма Эль-Гамаля)
при этом используется открытый ключ получателя.Получатель сообщения1. Cеансовый
ключ дешифруется с помощью личного ключа получателя.2. С помощью полученного
сеансового ключа дешифрует сообщение3. Распаковка сообщения4. Открытым ключом отправителя
дешифрует хэш-вектор и генерирует новый хэш-вектор.5. Сравнивает их.
Если совпадают --> сообщение не было изменено.Идентификаторы ключей.Так как получатель
сообщения имеет возможность получать зашифрованные и подписанные сообщения
от многих участников переписки, следовательно он должен иметь несколько пар
личный/открытый ключей. Для того, чтобы получателю определить какой личный ключ
(алгоритма RSA) надо использовать для расшифровки сеансового ключа (алгоритма
CAST-128) он получает идентификатор открытого ключа (вместо самого ключа пересылается
его идентификатор, так как сам открытый ключ для RSA может иметь длину
в сотни десятичных разрядов). Идентификатор, связываемый с каждым открытым ключом,
размещается в младших 64 разрядах ключа.Идентификатор ключа требуется и для
цифровой подписи PGP. Из-за того что отправитель может воспользоваться одним
из нескольких личных ключей для шифрования профиля сообщения, получатель должен
знать, какой открытый ключ ему следует использовать. Поэтому раздел цифровой подписи
сообщения включает 64-битовый идентификатор соответствующего открытого ключа.
При получении сообщения получатель проверяет, что идентификатор соответствует
известному ему открытому ключу отправителя, а затем продолжает проверку подписи.Формат
передаваемого сообщения.Сообщение
Подпись
Компонент сеансового ключа
Содержимое
Данные
Метка
даты-времени
Имя файла
Профиль сообщения
Ведущие
два октета профиля сообщения
Идентификатор открытого ключа отправителя (KUa)
Метка
даты-времени
Сеансовый ключ (Ks)
Идентификатор открытого ключа получателя
(Rub)
EkRa
EkUa
Операция
ZIP
Eкs
R64
ERUb – шифрование с использованием
личного ключа пользователя BEKRa – шифрование с использованием открытого ключа
пользователя АEКs – шифрование с использованием сеансового ключаZIP – функция
сжатия ZIPR64 – функция преобразования в формат 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-signature
-
Тип подписи, являющейся частью сообщения
типа 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.p7mContent-Transfer-Encoding:
base64Content-Disposition: attachment; filename=smime.p7mRfvbn765BghyHhUjfewqwnvdCDC7Формирование
объекта signedData (подписанные
данные).1. Выбирается алгоритм создания профиля сообщения (SHA или MD5).2.
Вычисляется профиль сообщения (значение хэш-функции) для содержимого, которое
должно быть подписано.3. Профиль сообщения шифруется с помощью личного ключа
стороны, подписавшей документ.4. Подготавливается блок, называемый SignedInfo
(информация подписавшей стороны), содержащий сертификат открытого ключа подписавшей
документ стороны, идентификатор алгоритма, использовавшегося для шифрования
профиля сообщения и шифрованного профиля сообщения. Объект signedData формируется
из ряда блоков, включающих идентификатор алгоритма создания профиля сообщения,
само подписываемое сообщение и блок SignerInfo. Вся эта информация кодируется
в base64. Пример такого сообщения (с исключёнными заголовками RFC 822):Content-Type:
application/pkcs7-mime; smime-type=signed-data;name=smime.p7mContent-Transfer-Encoding:
base64Content-Disposition: attachment; filename=smime.p7mRfvbn765BghyHhUjfewqwnvdCDC7
Открытое подписанное сообщение. Открытое подписанное
сообщение получается тогда, когда для содержимого используется тип 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 -- boundary42Content-Type: text/plainЭто
открытый текст подписанного сообщения.-- boundary42Content-Type: application/pkcs7-
signature; name=smime.p7mContent-Transfer-Encoding: base64Content-Disposition:
attachment; filename=smime.p7mRfvbn765BghyHhUjfewqwnvdCDC7-- 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) обеспечивает
базовый набор средств защиты, применяемых протоколами более высоких
уровней. Эти средства, в частности, может использовать протокол передачи гипертекстовых
файлов (HTTP), призванный обеспечить обмен данными при взаимодействии
клиентов и серверов Web. Частью SSL считаются и три протокола более высокого уровня:
протокол квитирования установления связи (Handshake Protocol), протокол
изменения параметров шифрования (Change Cipher Spec Protocol) и протокол извещения
(Alert Protocol). Эти протоколы служат для управления обменом данными SSL.
Протокол квитирования SSL
Протокол изменения параметров шифрования SSL
Протокол
извещения SSL
FTP, SMTP, HTTP.
Протокол записи SSL
TCP
IP
Стек протоколов SSL.
Между любой парой обменивающихся информацией сторон (например, приложений типа
HTTP клиента и сервера) можно установить много защищенных соединений. Теоретически
между сторонами можно установить и несколько одновременно существующих сеансов,
но на практике такая возможность не используется.Соединение (connection)
— транспорт, обеспечивающий сервис некоторого подходящего типа (SMTP, HTTP и т.д.)
Каждое соединение ассоциируется только с одним сеансом.Сеанс (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-ый
этап – определение характеристик