Протокол SSL/TLS
Обзор
Основная функция протокола SSL/TLS состоит в обеспечении конфиденциальности и целостности данных прикладного уровня, передаваемых между двумя взаимодействующими приложениями, одно из которых является клиентом, а другое - сервером.
Протокол TLS (Transport Layer Security) разрабатывался на основе спецификации протокола SSL 3.0 (Secure Socket Layer), опубликованного корпорацией Netscape. Различия между данным протоколом и SSL 3.0 несущественны, но важно заметить, что TLS 1.0 и SSL 3.0 несовместимы, хотя в TLS 1.0 предусмотрен механизм, который позволяет TLS иметь обратную совместимость с SSL 3.0.
Перечислим задачи протокола SSL/TLS в порядке их приоритета:
- Криптографическая безопасность: SSL/TLS должен использоваться для установления криптографически безопасного соединения между двумя участниками.
- Интероперабельность: независимые разработчики должны иметь возможность создавать приложения, которые будут взаимодействовать по протоколу SSL/TLS, что позволит устанавливать безопасные соединения.
- Расширяемость: SSL/TLS определяет общий каркас, в который могут быть встроены новые алгоритмы открытого ключа и симметричного шифрования. Это избавляет от необходимости создавать новый протокол для использования новых алгоритмов, что сопряжено с опасностью появления новых слабых мест, и исключает необходимость полностью реализовывать новую библиотеку криптографических алгоритмов.
- Относительная эффективность: криптографические операции интенсивно используют ЦП, особенно операции с открытым ключом. Для уменьшения вычислительной нагрузки вводится понятие сессии, в рамках которой может быть создано несколько ТСР-соединений. SSL/TLS позволяет кэшировать параметры сессии для уменьшения количества выполняемых криптографических операций при установлении соединения. Это снижает нагрузку как на ЦП, так и на трафик.
Протокол состоит из двух уровней. Нижним уровнем, расположенным выше некоторого надежного протокола (а именно, протокола ТСР) является протокол Записи. Протокол Записи обеспечивает безопасность соединения, которая основана на следующих двух свойствах:
- Конфиденциальность соединения. Для защиты данных используется один из алгоритмов симметричного шифрования. Ключ для этого алгоритма создается для каждой сессии и основан на секрете, о котором договариваются в протоколе Рукопожатия. Протокол Записи также может использоваться без шифрования.
- Целостность соединения. Обеспечивается проверка целостности сообщения с помощью МАС с ключом. Для вычисления МАС используются хэш-функции SHA-1 и MD5. Протокол Записи может выполняться без вычисления МАС.
Протокол Записи используется для инкапсуляции различных протоколов более высокого уровня. Одним из протоколов более высокого уровня является протокол Рукопожатия, который использует протокол Записи в качестве транспорта для ведения переговоров о параметрах безопасности. Протокол Рукопожатия позволяет серверу и клиенту аутентифицировать друг друга и договориться об алгоритмах шифрования и криптографических ключах до того, как прикладной протокол, выполняющийся на том же уровне, начнет передавать или принимать первые байты данных.
Протокол Рукопожатия обеспечивает безопасность соединения, которая основана на следующих свойствах:
- Участники аутентифицированы с использованием криптографии с открытым ключом (т.е. с использованием алгоритмов RSA, DSS и т.д.). Эта аутентификация может быть необязательной, но обычно требуется по крайней мере для сервера.
- Переговоры о разделяемом секрете безопасны, т.е. этот общий секрет невозможно подсмотреть.
- Переговоры о разделяемом секрете надежны, если выполнена аутентификация хотя бы одной из сторон. В таком случае ата-кующий, расположенный в середине соединения, не может модифицировать передаваемый секрет незаметно для участ-ников соединения.
Одно из преимуществ TLS состоит в том, что он независим от при-кладного протокола.
Определены следующие криптографические операции: цифровая подпись, блочное шифрование и шифрование с открытым ключом.
При блочном шифровании каждый блок незашифрованного текста шифруется, в результате чего создается блок зашифрованного текста. Все алгоритмы блочного шифрования выполняются в режиме СВС, и длина всех шифруемых элементов должна быть кратна длине блока алгоритма шифрования.