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) между клиентом и сервером.

№ этапа

 

 

Подпись: Client_helloТипы сообщений

 

 

Характеристика этапа

1

Подпись: Server_hello

Определяется характеристика защиты, включая номер версии протокола, идентификатор сеанса, комплект шифров, метод сжатия и исходные случайные числа.

2

Подпись: server_hello_doneПодпись: certificate_requestПодпись: server_key_exchangeПодпись: certificate

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

3

Подпись: Sertificate_verifyПодпись: client_key_exchangeПодпись: certificate

Клиент передаёт сертификат, если он был запрошен. Клиент передает сообщение обмена ключами. Клиент может передать сообщение верификации сертификата.

4

Подпись: Change_cipher_specПодпись: Change_cipher_specПодпись: finishedПодпись: finished

Смена комплекта шифров и завершение работы протокола квитирования

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 необ­ходимо в случаях, когда используются следующие схемы.

• Анонимный метод Диффи-Хеллмана.

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

• Обмен ключами по схеме RSA, когда использующий RSA сервер имеет ключ RSA только для подписи.

• Fortezza.

После этого неанонимный сервер (т.е. сервер, не использующий анонимный метод Диффи-Хеллмана) может запросить сертификат клиента. Сообщение certificate_request (запрос сертификата) включает два параметра: certificate_type (тип сертификата, указывающий на применяемый алгоритм шифрования с открытым ключом) и certificate_authorities (центры сертификации). Центры сертификации - список имен до­пустимых центров сертификации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.        Схемы вычислений значений MAC этих протоколов отличаются по двум параметрам: применяемому алгоритму и области данных, для которых вычисляется значение кода аутентичности сообщения.

2.        В TLS применяется PRF функция. PRF функция служит для получения небольшого по длине секретного значения, которое служит для генерирования более длинных блоков данных (используя специальную схему расширения данных где использован алгоритм HMAC), защищённых от атак на функции хэширования и вычисления значений кода аутентичности сообщения. Секретное значение получается путём использования той же схемы расширения данных, но с алгоритмом MD5 или SHA.

3.        В TLS не извещения no_certificate, но определён ряд дополнительных кодов извещения (их всего 12, 9 из которых означают неустранимую ошибку).

4.        В TLS включены все алгоритмы симметричной схемы шифрования, за исключением Fortezza.

5.        Сообщение finished в TLS представляет собой хэш-код, вычисленный c помощью master_secret, предыдущих сообщений и метки, идентифицирующей клиент и сервер. Схема вычисления сообщения finished отличается от схемы, используемой в SSLv3. В TLS схемы выглядит так: PRF (master_secret, finished_label, MD5 (handshake_meassages) || SHA-1 (handshake_messages)), где

 finished_label – строка «client finished» для клиента и «server_finished» для сервера.

6.        Схема вычисления master_secret для TLS иная чем в SSLv3.

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


Информация о работе «Защита электронной почты в Internet»
Раздел: Информатика
Количество знаков с пробелами: 73013
Количество таблиц: 22
Количество изображений: 2

Похожие работы

Скачать
106780
9
3

... для вас письма с почтового сервера на ваш компьютер. Чтобы использовать этот протокол, необходимо, чтобы он поддерживался как вашим провайдером, так и вашей почтовой программой. Теперь рассмотрим эти протоколы более подробно. 2.1. Простой протокол передачи почты (SMTP). Взаимодействие в рамках SMTP строится по принципу двусторонней связи, которая устанавливается между отправителем и ...

Скачать
20390
0
1

... имеет следующий формат пользователь@машина где знак @ отделяет имя пользователя от обозначения машины. Почта доставляется в почтовый ящик пользователя пользователь на машине машина. Пример адреса электронной почты. yvv@softpro. saratov.ru В рассматриваемом примере yvv - идентификатор абонента, составляемый, как правило, из начальных букв его фамилии, имени, отчества. То, что стоит справа от ...

Скачать
66148
5
0

... слабости" некоторых распространенных служб Internet. Простой протокол передачи электронной почты (Simple Mail Transfer Protocol - SMTP) позволяет осуществлять почтовую транспортную службу Internet. Одна из проблем безопасности, связанная с этим протоколом, заключается в том, что пользователь не может проверить адрес отправителя в заголовке сообщения элек­тронной почты. В результате хакер может ...

Скачать
116791
0
13

... его имени и пароля и выдает разрешение на доступ к серверу выдачи разрешений, который, в свою очередь, дает “добро” на использование необходимых ресурсов сети. Однако данная модель не отвечает на вопрос о надежности защиты информации, поскольку, с одной стороны, пользователь не может посылать идентификационному серверу свой пароль по сети, а с другой – разрешение на доступ к обслуживанию в сети ...

0 комментариев


Наверх