Смекни!
smekni.com

Защита электронной почты в Internet (стр. 2 из 9)

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

2. Защита на уровне приложений.

2. 1. Система PGP.

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

Рассмотрим краткую характеристику функций PGP.

Функция Используемые алгоритмы Описание
Цифровая подпись DSS/SHA или RSA/SHA С помощью SHA–1 создаётся хэш-код сообщения. Полученный таким образом профиль сообщения шифруется с помощью DSS или RSAс использованием личного ключа отправителя и включается в сообщение.
Шифрование сообщения CASTлибо IDEA, либо «тройной» DEScтремя ключами и алгоритмом Диффи-Хеллмана или RSA. Сообщение шифруется с помощью CAST-128 или IDEA, или 3DESс одноразовым сеансовым ключом, генерируемым отправителем. Сеансовый ключ шифруется с помощью алгоритма Диффи-Хеллмана или RSAcиспользованием открытого ключа получателя и включается в сообщение.
Сжатие 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. Полученный хэш-вектор шифруется с помощью алгоритма RSAcиспользованием личного ключа отправителя, и результат добавляется в начало сообщения.

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–шифрование с использованием личного ключа пользователя 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.