TLS

From CryptoWiki
Jump to: navigation, search

TLS (англ. Transport Layer Security — безопасность транспортного уровня, как и его предшественник SSL (англ. Secure Socket Layers — уровень защищённых сокетов) — криптографические протоколы, обеспечивающие защищённую передачу данных между узлами в сети Интернет. TLS и SSL используют асимметричную криптографию для аутентификации, симметричное шифрование для конфиденциальности и коды аутентичности сообщений для сохранения целостности сообщений. Данный протокол широко используется в приложениях, работающих с сетью Интернет, таких как Веб-браузеры, работа с электронной почтой, обмен мгновенными сообщениями и IP-телефония (VoIP) TLS-протокол основан на спецификации протокола SSL версии 3.0, разработанной компанией Netscape Communications. Сейчас развитием стандарта TLS занимается IETF. Последние обновление протокола было в RFC 5246.

Contents

Описание

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

Так как большинство протоколов связи могут быть использованы как с, так и без TLS (или SSL), при установке соединения необходимо явно указать серверу, хочет ли клиент устанавливать TLS. Это может быть достигнуто либо с помощью использования унифицированного номера порта, по которому соединение всегда устанавливается с использованием TLS (как например порт 443 для HTTPS), либо с использованием произвольного порта и специальной команды серверу со стороны клиента на переключение соединения на TLS с использованием специальных механизмов протокола (как например STARTTLS для протоколов электронной почты). Как только клиент и сервер договорились об использовании TLS, им необходимо установить защищённое соединение. Это делается с помощью процедуры подтверждения связи. Во время этого процесса клиент и сервер принимают соглашение относительно различных параметров, необходимых для установки безопасного соединения.

Основные шаги процедуры создания защищённого сеанса связи:

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

На этом заканчивается процедура подтверждения связи. Между клиентом и сервером установлено безопасное соединение, данные, передаваемые по нему, шифруются и расшифровываются с использованием ключа шифрования до тех пор, пока соединение не будет завершено.

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

Безопасность

TLS имеет множество мер безопасности:

  • Защита от понижения версии протокола к предыдущей (менее защищённой) версии или менее надёжному алгоритму шифрования;
  • Нумерация последовательных записей приложения и использование порядкового номера в коде аутентификации сообщения (MAC);
  • Использование ключа в идентификаторе сообщения (только владелец ключа может проверить код аутентификации сообщения). Хеш-код идентификации сообщений (HMAC), используемый в большинстве шифров из набора шифров TLS был определён в RFC 2104;
  • Сообщение, которым заканчивается подтверждение связи («Finished»), содержит в себе хэш всех сообщений, которыми обменялись стороны в процессе подтверждения связи;
  • Псевдослучайная функция разбивает входные данные на две части и обрабатывает каждую разной хэш-функцией (MD5 и SHA-1), а затем вычисляет XOR от двух полученных свёрток, чтобы создать код аутентификации сообщения. Это обеспечивает безопасность даже в случае уязвимости одной из хэш-функций.

Уязвимость протокола TLS 1.0, которая считалась теоретической, была продемонстрирована на конференции Ekoparty в сентябре 2011 года. Демонстрация включала в себя дешифрование cookies, использованных для аутентификации пользователя.

Уязвимость в фазе возобновления соединения, обнаруженная в августе 2009 года, позволяла криптоаналитику, способному взломать https-соединение, добавлять собственные запросы в сообщения, отправленные от клиента к серверу. Так как криптоаналитик не может дешифровать переписку сервера и клиента, этот тип атаки отличается от стандартной атаки, типа человек посередине. В случае, если пользователь не обращает внимания на индикацию браузера о том, что сессия является безопасной (обычно значок замка), уязвимость может быть использована для атаки типа человек посередине. Для устранения этой уязвимости было предложено как на стороне клиента, так и на стороне сервера добавлять информацию о предыдущем соединении и осуществлять проверку при возобновлении соединения. Это было представлено в стандарте RFC 5746, а также реализовано в последних версиях OpenSSL и других библиотеках.

Также существуют варианты атак, основанные непосредственно на программной реализации протокола, а не на его алгоритме.

Сравнение с аналогами

Одной из областей применения TLS-соединения является соединение узлов в виртуальной частной сети. Кроме TLS также могут использоваться набор протоколов IPsec и SSH-соединение. Каждый из этих подходов к реализации виртуальной частной сети имеет свои преимущества и недостатки.

  1. TLS/SSL
    • Преимущества:
      • Невидим для протоколов более высокого уровня;
      • Популярность использования в Интернет-соединениях и приложениях электронной коммерции;
      • Отсутствие постоянного соединения между сервером и клиентом;
      • Позволяет создать туннель для приложений, использующих TCP/IP, таких как электронная почта, инструменты программирования и т. д.
    • Недостатки:
      • Невозможность использования с протоколами UDP и ICMP;
      • Необходимость отслеживания состояния соединения;
      • Наличие дополнительные требований к программному обеспечению о поддержке TLS.
  2. IPsec
    • Преимущества:
      • Безопасность и надёжность защиты данных протокола проверена и доказана, так как протокол был принят как Интернет-стандарт;
      • Работа в верхнем слое сетевого протокола и шифрование данных над уровнем сетевого протокола.
    • Недостатки:
      • Сложность реализации;
      • Дополнительные требования к оборудованию сети (маршрутизаторы и т. п.);
      • Существует много различных реализаций, не всегда корректно взаимодействующих друг с другом.
  3. SSH
    • Преимущества:
      • Позволяет создать туннель для приложений, использующих TCP/IP, таких как электронная почта, инструменты программирования и т. д.;
      • Слой безопасности невидим для пользователя.
    • Недостатки:
      • Трудность использования в сетях с большим числом шлюзов, таких как маршрутизаторы или брандмауэры;
      • Большая нагрузка на внутрисетевой трафик;
      • Невозможность использования с протоколами UDP и ICMP.
      • Не имеет PKI (PKI, основанная на secure DNS, малораспространена).

См. также

Вернуться к оглавлению

Исполнитель: Нестеренко Д.Г. Б9-03