Анализ технологий защиты электронной почты

Автор работы: Пользователь скрыл имя, 17 Июля 2013 в 15:30, курсовая работа

Краткое описание

Второй способ. IP-спуфинг (spoofing) - возможен, когда злоумышленник, находящийся внутри организации или вне ее выдает себя за санкционированного пользователя. Атаки IP-спуфинга часто являются отправной точкой для других атак. Обычно IP-спуфинг ограничивается вставкой ложной информации или вредоносных команд в обычный поток передаваемых по сети данных.
Третий способ – получение пароля на почту. Атаки для получения паролей можно проводить с помощью целого ряда методов, и хотя входное имя и пароль можно получить при помощи IP-спуфинга и перехвата пакетов, их часто пытаются подобрать путем простого перебора с помощью специальной программы

Содержание

Введение 6
1 Способы защиты потока данных 9
2 Защита на уровне приложений 10
2.1 Система PGP 10
2.2 Система S/MIME 14
2.3 Формирование объекта envelopedData (упакованные данные) 17
2.4 Формирование объекта signedData (подписанные данные) 18
2.5 Открытое подписанное сообщение 18
2.6 Криптографические алгоритмы 20
3 Протоколы SSL и TLS 22
3.1 Архитектура SSL 22
3.2 Стек протоколов SSL 22
3.3 Протокол записи SSL 22
3.4 Протокол изменения параметров шифрования 24
3.5 Протокол извещения 25
3.6 Протокол квитирования 25
3.7 Создание главного секретного ключа 30
3.8 Генерирование криптографических параметров 31
3.9 TLS и его отличие от SSL 32
4 Защита на уровне IP 34
4.1 Архитектура защиты на уровне IP 34
4.2 Транспортный режим 35
4.3 Туннельный режим 36
4.4 Заголовок аутентификации (AH) 37
4.5 Использование AH в транспортном и туннельном режиме 38
4.6 Протокол ESP 39
4.7 Шифрование и алгоритмы аутентификации 40
4.9 Туннельный режим ESP 41
4.10 Комбинация защищённых связей 42
Список используемой литературы

Вложенные файлы: 1 файл

4-45 страница.docx

— 373.87 Кб (Скачать файл)

При принятии данных: данные дешифруются, проверяются, восстанавливаются, собираются вновь и передаются приложениям более высокого уровня.

При вычислении кода аутентичности сообщения используется специальная схема вычисления MAC, в которой используется алгоритм хэширования MD5 или SHA-1.

Сжатое  сообщение вместе с добавленным  к нему значением MAC шифруется.

Используемые  алгоритмы шифрования представлены в таблице 4.

Таблица 4 – Используемые алгоритмы шифрования

Блочное шифрование

Поточное  шифрование

Алгоритм

Размер  ключа

Алгоритм

Размер  ключа

IDEA

128

RC4-40

40

RC2-40

40

RC4-128

128

DES-40

40

 

DES

56


 

Продолжение таблицы 4

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.4 Протокол изменения параметров шифрования

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

3.5 Протокол извещения

Протокол  извещения (Alert Protocol) предназначен для  передачи другой участвующей в обмене данными стороне извещений, касающихся работы SSL. Как и данные любого другого приложения, использующего SSL, сообщения протокола извещения точно так же сжимаются и шифруются в соответствии с параметрами текущего состояния.

Сообщение, генерируемое данным протоколом состоит  из 2-х байтов: первый байт - значение, обозначающее уровень предупреждения или уровень неустранимой ошибки, второй байт – код, обозначающий конкретный смысл извещения. Если в первом байте  указан уровень неустранимой ошибки, то протокол SSL разрывает соединение, другие соединения могут продолжать существовать, но нового соединения для данного сеанса создать уже будет невозможно.

В протоколе  извещения существует 5 извещений, указывающих  на неустранимую ошибку и 7 извещений не указывающих на неустранимую ошибку.

3.6 Протокол квитирования

Этот  протокол позволяет серверу и  клиенту выполнить взаимную аутентификацию, а также согласовать алгоритмы шифрования, вычисления MAC и криптографические ключи, которые будут служить для защиты данных, пересылаемых в записи SSL. Протокол квитирования должен использоваться до начала пересылки данных прикладных программ.

В случае с протоколом квитирования генерируется несколько сообщений, которыми обмениваются клиент и сервер. Любое такое сообщение содержит три следующих поля.

Тип (1 байт). Указывает один из 10 допустимых типов  сообщения.

Длина (3 байта). Длина сообщения в байтах.

Содержимое (> 1 байта). Параметры, связываемые  с сообщением данного типа.

В содержимом может находится несколько полей, в каждом из которых находятся элементы.

Этапы установления сеанса (session) между клиентом и сервером указаны в нижеприведенной таблице.

Таблица 5 – Используемые алгоритмы шифрования

Первый этап – определение характеристик защиты.

Процесс инициируется клиентом, который передаёт сообщение серверу client_hello, сервер отвечает сообщением server_hello с выбранными параметрами, которые доступны клиенту.

Тип сообщения: client-hello.

Таблица 6 – Характеристики полей

Название поля

Характеристика  поля

Версия

Номер версии SSL, поддерживаемый клиентом.

Случайное значение

Генерируемая структура, содержащая 28 байтов, полученных с помощью защищенного генератора случайных чисел.


Продолжение таблицы 6

Комплект шифров

Список, содержащий наборы криптографических  алгоритмов, поддерживаемых клиентом, перечисленные в порядке убывания их приоритета. Каждый элемент списка (каждый комплект шифров) определяет алгоритм обмена ключами для схем традиционного шифрования, вычислений значений MAC и другие параметры шифрования. Сервер в server_hello должен определить какой-либо комплект шифров.

Метод сжатия

Список методов сжатия, поддерживаемых клиентом. Сервер в server_hello должен определить метод сжатии из доступных по списку.

Идентификатор сеанса

Идентификатор переменной длины для  данного сеанса. Ненулевое значение говорит о намерении клиента  обновить параметры имеющегося соединения или создать новое соединение в рамках того же сеанса. Нулевое значение вводится тогда, когда клиент намерен создать новое соединение в новом сеансе.


 

Второй  этап  – Аутентификация сервера  и обмен ключами сервера.

Данный  этап начинается с отправки сервером его сертификата, если требуется  аутентификация сервера. Сообщение 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, которым сервер извещает о завершении фазы приветствия сервера ввиду отправки им всех соответствующих сообщений. Это сообщение не имеет параметров. После отправки этого сообщения сервер переходит в режим ожидания ответа клиента.

Третий  этап - Аутентификация клиента и  обмен ключами клиента.

Получив сообщение server_done, клиент должен убедиться  в том, что сервер предоставил  действительный сертификат (если это  требуется) и что параметры сообщения server_hello являются приемлемыми. Если проверка завершается успешно, клиент оправляет серверу следующие сообщения.

1. Если  сервер запросил сертификат, клиент  начинает данный этап с отправки  серверу сообщения certificate. Если  у клиента подходящего сертификата  нет, клиент отправляет вместо  него уведомление no_certificate (нет  сертификата).

2. Следующим  идет сообщение client_key_exchange (обмен  ключами клиента), Содержимое этого  сообщения зависит от выбранного  метода обмена ключами и может быть следующим.

RSA. Клиент  генерирует 48-байтовый предварительный  главный ключ и шифрует его с помощью открытого ключа из сертификата сервера или с помощью временного ключа RSA из сообщения server_key_exchange. Этот предварительный ключ позволяет вычислить главный ключ.

Метод Диффи-Хеллмана с одноразовыми параметрами, или  анонимный метод Диффи-Хеллмана. Отправляются открытые параметры клиента  для метода Диффи-Хеллмана.

Метод Диффи-Хеллмана с фиксированными параметрами. В  данном случае открытые параметры клиента для метода Диффи-Хеллмана уже были отправлены в сообщении certificate, поэтому содержимое данного сообщения оказывается пустым.

Fortezza. Отправляются  параметры клиента для алгоритма  Fortezza.

В завершение данного этапа клиент может отправить  сообщение certificate_verify (проверка сертификата), чтобы обеспечить средства прямой верификации сертификата клиента. Это сообщение отправляется вслед за сертификатом клиента, поддерживающим подпись (т.е. вслед за любым сертификатом клиента, кроме тех, которые содержат параметры Диффи-Хеллмана с фиксированными параметрами). Сообщение включает подпись хэш-кода предыдущего сообщения.

Четвертый этап – завершение создания защищённого  соединения.

Клиент  отправляет сообщение 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.7 Создание главного секретного ключа

Создание главного ключа  состоит из двух этапов. На первом этапе  согласуется значение предварительного главного ключа (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.8 Генерирование криптографических параметров

Для элемента “Параметры шифрования” поля “комплект шифров”  требуются секретный ключ 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.9 TLS и его отличие от SSL

Протокол TLS представляет собой результат инициативы IETF (Internet Engineering Task Force – проблемная группа проектирования Internet), целью которой является разработка стандарта SSL для Internet. Текущая версия проекта стандарта TLS очень похожа на SSLv3. Рассмотрим различия между TLS и SSLv3.

Информация о работе Анализ технологий защиты электронной почты