Протоколы безопасного сетевого взаимодействия

       

Основная функция протокола TLS состоит


Основная функция протокола 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.
Перечислим задачи протокола TLS в порядке их приоритета:
  1. Криптографическая безопасность: TLS должен использоваться для установления безопасного соединения между двумя участниками.
  2. Интероперабельность: независимые разработчики могут создавать приложения, которые будут взаимодействовать по протоколу TLS, что позволит устанавливать безопасные соединения.
  3. Расширяемость: TLS формирует общий каркас, в который могут быть встроены новые алгоритмы открытого ключа и симметричного шифрования. Это также избавляет от необходимости создавать новый протокол, что сопряжено с опасностью появления новых слабых мест, и предотвращает необходимость полностью реализовывать новую библиотеку безопасности.
  4. Относительная эффективность: криптографические операции интенсивно используют ЦП, особенно операции с открытым ключом. Для этого вводится понятие сессии, для которой определяются алгоритмы и их параметры. В рамках одной сессии может быть создано несколько соединений (например, ТСР). TLS позволяет кэшировать сессии для уменьшения количества выполняемых действий при установлении соединения. Это снижает нагрузку как на ЦП, так и на трафик.

Протокол состоит из двух уровней. Нижним уровнем, расположенным выше некоторого надежного протокола (а именно, протокола ТСР) является протокол Записи. Протокол Записи обеспечивает безопасность соединения, которая основана на следующих двух свойствах:
  1. Конфиденциальность соединения. Для защиты данных используется один из алгоритмов симметричного шифрования.


    Ключ для этого алгоритма создается для каждой сессии и основан на секрете, о котором договариваются в протоколе Рукопожатия. Протокол Записи также может использоваться без шифрования.
  2. Целостность соединения. Обеспечивается проверка целостности сообщения с помощью МАС с ключом. Для вычисления МАС используются безопасные хэш-функции SHA-1 и MD5. Протокол Записи может выполняться без вычисления МАС, но обычно функционирует в этом режиме.

Протокол Записи используется для инкапсуляции различных протоколов более высокого уровня. Одним из протоколов более высокого уровня является протокол Рукопожатия, который использует протокол Записи в качестве транспорта для ведения переговоров о параметрах безопасности. Протокол Рукопожатия позволяет серверу и клиенту аутентифицировать друг друга и договориться об алгоритмах шифрования и криптографических ключах до того, как прикладной протокол, выполняющийся на том же уровне, начнет передавать или принимать первые байты данных.
Протокол Рукопожатия обеспечивает безопасность соединения, которая основана на следующих свойствах:
  1. Участники аутентифицированы с использованием криптографии с открытым ключом (т.е. с использованием алгоритмов RSA, DSS и т.д.). Эта аутентификация может быть необязательной, но обычно требуется по крайней мере для сервера.
  2. Переговоры о разделяемом секрете безопасны, т.е. этот общий секрет невозможно подсмотреть.
  3. Переговоры о разделяемом секрете надежны, если выполнена аутентификация хотя бы одной из сторон. В таком случае атакующий, расположенный в середине соединения, не может модифицировать передаваемый секрет незаметно для участников соединения.

Одно из преимуществ TLS состоит в том, что он независим от прикладного протокола. Протоколы более высокого уровня могут прозрачно располагаться выше протокола TLS.


Данная функциональность позволяет избежать посылки CRL в определенных сетях и тем самым сократить трафик.
Для того чтобы поддерживать перечисленные выше расширения, вводятся дополнительные механизмы для сообщений Hello клиента и сервера.
Описываемые расширения могут использоваться клиентами TLS 1.0 и серверами TLS 1.0. Расширения поддерживают обратную совместимость – это означает, что клиенты TLS 1.0, которые поддерживают расширения, могут общаться с серверами TLS 1.0, не поддерживающими расширения, и наоборот.
Обратная совместимость достигается следующим образом.
  • Клиент запрашивает использование расширений с помощью расширенного сообщения Client Hello, описанного ниже. TLS 1.0 требует, чтобы серверы принимали расширенные сообщения Client Hello, даже если они не понимают расширения.
  • Для описанных здесь конкретных расширений не требуется обязательного ответа сервера, если клиент запрашивает расширенную функциональность.

Однако заметим, что хотя обратная совместимость поддерживается, некоторые клиенты из-за своих ограниченных возможностей могут не устанавливать соединения с серверами, которые не поддерживают расширения.
Рассмотрим дополнительные функциональности в следующем порядке. Сначала опишем общие механизмы расширений для сообщений Рукопожатия Client Hello и Server Hello. Далее опишем конкретные расширения для TLS 1.0 и новые сообщения об ошибках при использовании расширений TLS.


Ключ для этого алгоритма создается для каждой сессии и основан на секрете, о котором договариваются в протоколе Рукопожатия. Протокол Записи также может использоваться без шифрования.
  • Целостность соединения. Обеспечивается проверка целостности сообщения с помощью МАС с ключом. Для вычисления МАС используются безопасные хэш-функции SHA-1 и MD5. Протокол Записи может выполняться без вычисления МАС, но обычно функционирует в этом режиме.

  • Протокол Записи используется для инкапсуляции различных протоколов более высокого уровня. Одним из протоколов более высокого уровня является протокол Рукопожатия, который использует протокол Записи в качестве транспорта для ведения переговоров о параметрах безопасности. Протокол Рукопожатия позволяет серверу и клиенту аутентифицировать друг друга и договориться об алгоритмах шифрования и криптографических ключах до того, как прикладной протокол, выполняющийся на том же уровне, начнет передавать или принимать первые байты данных.
    Протокол Рукопожатия обеспечивает безопасность соединения, которая основана на следующих свойствах:
    1. Участники аутентифицированы с использованием криптографии с открытым ключом (т.е. с использованием алгоритмов RSA, DSS и т.д.). Эта аутентификация может быть необязательной, но обычно требуется по крайней мере для сервера.
    2. Переговоры о разделяемом секрете безопасны, т.е. этот общий секрет невозможно подсмотреть.
    3. Переговоры о разделяемом секрете надежны, если выполнена аутентификация хотя бы одной из сторон. В таком случае атакующий, расположенный в середине соединения, не может модифицировать передаваемый секрет незаметно для участников соединения.

    Одно из преимуществ TLS состоит в том, что он независим от прикладного протокола. Протоколы более высокого уровня могут прозрачно располагаться выше протокола TLS.


    Данная функциональность позволяет избежать посылки CRL в определенных сетях и тем самым сократить трафик.
    Для того чтобы поддерживать перечисленные выше расширения, вводятся дополнительные механизмы для сообщений Hello клиента и сервера.
    Описываемые расширения могут использоваться клиентами TLS 1.0 и серверами TLS 1.0. Расширения поддерживают обратную совместимость – это означает, что клиенты TLS 1.0, которые поддерживают расширения, могут общаться с серверами TLS 1.0, не поддерживающими расширения, и наоборот.
    Обратная совместимость достигается следующим образом.
    • Клиент запрашивает использование расширений с помощью расширенного сообщения Client Hello, описанного ниже. TLS 1.0 требует, чтобы серверы принимали расширенные сообщения Client Hello, даже если они не понимают расширения.
    • Для описанных здесь конкретных расширений не требуется обязательного ответа сервера, если клиент запрашивает расширенную функциональность.

    Однако заметим, что хотя обратная совместимость поддерживается, некоторые клиенты из-за своих ограниченных возможностей могут не устанавливать соединения с серверами, которые не поддерживают расширения.
    Рассмотрим дополнительные функциональности в следующем порядке. Сначала опишем общие механизмы расширений для сообщений Рукопожатия Client Hello и Server Hello. Далее опишем конкретные расширения для TLS 1.0 и новые сообщения об ошибках при использовании расширений TLS.

    Содержание раздела