|
Защита электронной почты в Internetпрочтения (например, звуковые данные). Любая реализация, как минимум, должна поддерживать обработку полей 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) обеспечивает базовый набор средств защиты, применяемых протоколами более высоких уровней. Эти средства, в частности, может использовать протокол передачи гипертекстовых файлов (HTTP), призванный обеспечить обмен данными при взаимодействии клиентов и серверов Web. Частью SSL считаются и три протокола более высокого уровня: протокол квитирования установления связи (Handshake Protocol), протокол изменения параметров шифрования (Change Cipher Spec Protocol) и протокол извещения (Alert Protocol). Эти протоколы служат для управления обменом данными SSL. |Протокол |Протокол изменения |Протокол извещения |FTP, SMTP, HTTP. | |квитирования SSL |параметров |SSL | | | |шифрования SSL | | | |Протокол записи 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-ый этап – определение характеристик защиты. Процесс инициируется клиентом, который передаёт сообщение серверу 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 необходимо в случаях, когда используются следующие схемы. • Анонимный метод Диффи-Хеллмана. |
|
|||||||||||||||||||||||||||||
|
Рефераты бесплатно, реферат бесплатно, сочинения, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |