Реферат: Защита электронной почты в Internet
(подписанный)
Формирование объекта envelopedData (упакованные данные).
При подготовке объекта envelopedDataMIMEдолжны быть выполнены следующие действия:
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. Пример такого сообщения: