Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 15.11.2006 | Доступ: свободный | Студентов: 2260 / 433 | Оценка: 4.33 / 3.99 | Длительность: 29:21:00
ISBN: 978-5-9556-0081-9
Лекция 17:

Приложения, базирующиеся на PKI

Средства безопасности транспортного уровня

Протокол безопасности транспортного уровня Transport Layer Protocol (TLS) [142] обеспечивает защиту коммуникаций между приложениями, разработанными в архитектуре "клиент-сервер", в основном между web-браузером и web-сервером. Всемирная Паутина World Wide Web является наиболее популярным Интернет-сервисом после электронной почты. TLS наиболее часто применяется для защиты web-контента, но может использоваться с любым протоколом прикладного уровня. Спецификация TLS базируется на популярном протоколе Secure Socket Layer (SSL) [109], разработанном корпорацией Netscape. Эти протоколы создавались для обеспечения аутентификации, целостности и конфиденциальности данных, которыми обмениваются взаимодействующие друг с другом приложения. Оба протокола имеют двухуровневую организацию: протокол установления соединения (Handshake Protocol) и протокол передачи записей (Record Protocol).

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

Протоколы SSL и TLS независимы от протоколов прикладного уровня, поэтому любой протокол прикладного уровня может прозрачно оперировать поверх SSL и TLS. Протоколы SSL и TLS обеспечивают три сервиса безопасности [70]:

  • аутентификацию (подтверждение идентичности соединения: протокол установления соединения использует сертификаты и верификацию цифровых подписей для подтверждения идентификационных признаков и полномочий удаленного приложения);
  • целостность (защиту данных протокола от несанкционированной модификации: протокол передачи записей использует значение бита контроля целостности для подтверждения того, что передаваемые данные не изменялись);
  • конфиденциальность (обеспечение секретности соединения: после согласования симметричного ключа шифрования на основе протокола установления соединения выполняется шифрование данных, которыми обмениваются стороны во время сеанса связи).

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

Протокол установления соединений

Протокол установления соединений Handshake Protocol состоит как бы из трех подпротоколов, которые позволяют выполнить аутентификацию сторон, согласовать алгоритмы и параметры безопасности для протокола передачи записей [19].

Handshake Protocol отвечает за организацию сеанса взаимодействия между клиентом и сервером для протокола передачи записей, в частности за согласование характеристик сеанса:

  • идентификатора сеанса ( Session identifier ), то есть произвольной последовательности битов, выбранной сервером для идентификации сеанса;
  • сертификата соединения ( Peer certificate ), представляющего собой сертификат X.509; этот элемент может отсутствовать, если аутентификация не требуется;
  • метода сжатия ( Compression method ), то есть алгоритма сжатия данных перед их шифрованием;
  • спецификатора шифрования ( Cipher spec ), который задает идентификаторы алгоритма шифрования данных и алгоритма хэширования, а также некоторые криптографические атрибуты (например, размер хэш-кода);
  • главного секрета ( Master secret ), представляющего собой секретное значение, разделенное между клиентом и сервером;
  • признака установления нового соединения ( Is resumable ) на основе текущего сеанса.

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

В результате работы протокола Handshake Protocol формируются криптографические параметры. Когда клиент и сервер начинают взаимодействие, то согласовывают версию протокола, криптографические алгоритмы, аутентифицируют друг друга (по желанию) и используют криптографию с открытыми ключами для разделения общего секрета. Работа протокола Handshake Protocol выполняется за шесть шагов [70].

  • 1-й шаг. Обмен приветственными сообщениями для согласования алгоритмов и обмена случайными числами.
  • 2-й шаг. Обмен криптографическими параметрами для согласования начального секрета.
  • 3-й шаг. Опциональный обмен сертификатами и криптографической информацией для взаимной аутентификации клиента и сервера.
  • 4-й шаг. Генерация главного секрета на основе начального секрета и обмен случайными числами.
  • 5-й шаг. Формирование параметров безопасности для протокола передачи записей.
  • 6-й шаг. Оповещение о расчете тех же самых параметров безопасности и корректном завершении соединения.

Когда клиент желает установить новое соединение на основе данного сеанса или повторить этот сеанс, то отправляет свое приветственное сообщение с идентификатором сеанса, который должен быть возобновлен. Если сервер все еще хранит в кэш-памяти параметры сеанса и желает восстановить соединение, то в ответ отправляет свое приветственное сообщение с тем же самым идентификатором сеанса. В этот момент клиент и сервер обмениваются сообщениями о смене параметров шифрования и завершении формирования соединения.

При обмене сертификатами и ключами передаются данные, необходимые для генерации начального секрета. Если используется алгоритм RSA, то клиент генерирует случайное начальное число и шифрует его при помощи открытого RSA-ключа сервера. Если применяется алгоритм Диффи-Хэллмана, клиент и сервер обмениваются открытыми ключами, а затем в качестве начального секрета используется результат вычисления ключа согласования ключей по алгоритму Диффи-Хэллмана.

Главный секрет и симметричные ключи генерируются при помощи псевдослучайной функции PRF (PseudoRandom Function), полученной на основе алгоритмов SHA-1 и MD5. Чтобы гарантировать безопасность, применяются две разные однонаправленные хэш-функции. При первом применении функции PRF генерируется главный секрет из начального секрета и случайных чисел, полученных на основе приветственных сообщений клиента и сервера. В результате повторного применения функции PRF к тем же самым исходным данным получают два симметричных ключа, два значения начального вектора и два значения MAC (кода аутентификации сообщения) секрета. При возобновлении сеанса используется уже известное для данного сеанса значение главного секрета, но генерируются новые случайные числа на основе новых приветственных сообщений клиента и сервера, поэтому в результате формируется новый ключевой материал.

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

Жанар Каппасова
Жанар Каппасова

было бы удобнее если после вопроса было написано сколько вариантов ответа требуется указать. к примеру один вариант или несколько. прошла тест оказалось что нужно несколько а я ответила по одному на каждый вопрос. как то не удобно. 

Владислав Лагвинович
Владислав Лагвинович

Прошел 5 или 6 тестов по курсу Инфраструктура открытых ключей, а сейчас курс в состоянии не готов. Что случилось?

Сергей Халяпин
Сергей Халяпин
Россия, Москва
Алексей Фоминых
Алексей Фоминых
Россия