Протокол TLS: Краткая справка
Протокол TLS (Transport Layer Security) является одним из наиболее популярных протоколов, предназначенных для установления защищенного канала связи в сети Интернет. Он основан на спецификации протокола SSL (Secure Sockets Layer) версии 3.0, но за время своего существования претерпел довольно много изменений. Самой актуальной версией протокола на текущий момент является недавно вышедшая версия TLS 1.3 , однако версия TLS 1.2 все еще остается наиболее распространенной.
Ключевая задача, решаемая TLS, – организация между клиентом и сервером аутентифицированного защищенного канала, обеспечивающего целостность и конфиденциальность передаваемых данных. На каждом этапе работы протокола используются различные криптографические алгоритмы, которые задаются криптонабором – совокупностью алгоритмов, определенной в стандартизирующих документах и включающей, например, алгоритм выработки симметричного ключа, алгоритм шифрования и алгоритм выработки имитовставки. Используемый криптонабор согласуется сторонами в самом начале установления защищенного канала.
Что такое TLS с ГОСТ?
В процессе работы над задачей разработки протокола TLS с поддержкой российских криптонаборов при активном участии специалистов КриптоПро было создано два ключевых документа, регламентирующих порядок работы протоколов TLS 1.2 и TLS 1.3 с ГОСТ Р 34.12-2015 (с использованием алгоритмов Магма и Кузнечик) – рекомендации по стандартизации Р 1323565.1.020-2018 для TLS 1.2 и рекомендации по стандартизации Р 1323565.1.030-2020 для TLS 1.3. Документы определяют криптонаборы с российскими алгоритмами хэширования, шифрования и электронной подписи с учетом наиболее современных и безопасных практик использования криптоалгоритмов. Для регламентации работы протокола с использованием криптонаборов на базе ГОСТ 28147-89 ранее были разработаны методические рекомендации МР 26.2.001-2013 . Отметим, что сами российские режимы и криптонаборы стандартизованы в ISO и IETF, пройдя экспертизу ведущих мировых специалистов.
Подробнее о TLS c ГОСТ и поддерживаемых КриптоПро CSP криптонаборах
Процесс стандартизации TLS с российскими криптонаборами также активно идет и в рамках IETF и IANA. Так, организация IANA, управляющая идентификаторами и параметрами протоколов сети Интернет, в том числе благодаря усилиям специалистов нашей компании, впервые зарегистрировала в своем реестре российские криптонаборы и другие сопутствующие параметры для протокола TLS 1.2 , а затем и TLS 1.3 . Это крайне важное событие, которое имеет непосредственное отношение к стабильности работы протокола TLS с ГОСТ, ведь без наличия международно признаваемых идентификаторов все предыдущие годы существовала опасность блокировки TLS с ГОСТ из-за захвата номеров сторонними криптонаборами, а внесение поддержки российских криптонаборов в свободное ПО было затруднено.
КриптоПро CSP и TLS с ГОСТ
Ниже приведен список поддерживаемых различными версиями нашего криптопровайдера КриптоПро CSP криптонаборов и соответствующих регламентирующих документов. Отдельно отметим, что с версии 5.0 R3 планируется реализация поддержки криптонаборов в соответствии с рекомендациями Р 1323565.1.030-2020 для обеспечения поддержки протокола TLS версии 1.3 с использованием отечественной криптографии.
Версия TLS
Поддерживаемые криптонаборы
Версия CSP
Регламентирующие документы
1.0
28147_CNT_IMIT (0xFF,0x85)
любая поддерживаемая
МР 26.2.001-2013
1.1
28147_CNT_IMIT (0xFF,0x85)
любая поддерживаемая
МР 26.2.001-2013
1.2
28147_CNT_IMIT (0xFF,0x85)
любая поддерживаемая
МР 26.2.001-2013
28147_CNT_IMIT (0xC1,0x02)
5.0 R2 и выше
Р 1323565.1.020-2018
draft-smyshlyaev-tls12-gost-suites
KUZNYECHIK_CTR_OMAC (0xC1,0x00)
MAGMA_CTR_OMAC (0xC1,0x01)
1.3
KUZNYECHIK_MGM_L (0xC1,0x03)
Планируется с 5.0 R3
Р 1323565.1.030-2020
draft-smyshlyaev-tls13-gost-suites
MAGMA_MGM_L (0xC1,0x04)
KUZNYECHIK_MGM_S (0xC1,0x05)
MAGMA_MGM_S (0xC1,0x06)
Криптонаборы с номерами (0xC1, 0x00) – (0xC1, 0x06) являются наборами, зарегистрированными в реестре организации IANA.
Внедрить TLS c ГОСТ? Легко!
Наша компания предлагает широкий спектр продуктов для организации каналов, защищенных с помощью TLS с использованием отечественной криптографии. Ниже мы опишем существующие решения для различных задач:
Также на данной странице представлена информацию об услугах нашего удостоверяющего центра CryptoPro TLS-CA по выдаче сертификатов TLS →
Клиент-серверные решения
TLS-сервер с ГОСТ
Предлагаем воспользоваться одним из двух подходов, позволяющих без дополнительной сертификации и разработки программного кода развернуть TLS-сервер, который будет одновременно работать как с российскими, так и с зарубежными криптонаборами:
Если вам необходимо настроить работу для конкретного серверного ПО (IIS, Apache, nginx), вы можете на компьютере с указанным серверным ПО установить КриптоПро CSP и, следуя соответствующим инструкциям по настройке , получить TLS-сервер, дополнительно поддерживающий алгоритмы ГОСТ.
Вы также можете воспользоваться решением КриптоПро NGate , представляющим собой самостоятельный TLS-шлюз (отдельная аппаратная или виртуальная платформа). Решение имеет большое количество преимуществ, одним из которых является удобство обеспечения классов защиты KC2-KC3: в отличие от предыдущего подхода, не требуется выполнение отдельных настроек, приобретение и конфигурирование электронных замков и прочих дополнительных мер защиты, все необходимое уже включено в аппаратные компоненты решения.
Ниже представлена сравнительная таблица характеристик каждого предлагаемого решения. В колонке “Cертификация” приведена информация о статусе сертификации решения: как самостоятельное СКЗИ или как решение, исследование которого было проведено в рамках сертификации КриптоПро CSP. Во втором случае указана соответствующая версия криптопровайдера.
Решение
Платформа
Сертификация
Класс защиты
CSP + IIS
Windows
любая поддерживаемая версия CSP
КС1, КС2*, КС3*
CSP + Apache
Linux
начиная с CSP 5.0 R2
КС1, КС2*, КС3**
CSP + nginx
Linux
начиная с CSP 5.0 R2
КС1, КС2*, КС3**
NGate
Усиленная ОС на базе Linux Debian
самостоятельное СКЗИ
КС1, КС2, КС3
* – требуются дополнительные настройки и технические средства защиты ** – КС3 только под Astra Linux
TLS-клиент с ГОСТ
Одна из важнейших задач, стоящих перед командой КриптоПро, – создание для пользователя как можно более комфортных условий при работе с сервисами по TLS c ГОСТ. В настоящее время мы предлагаем несколько вариантов решений, включающих в себя как готовые клиентские решения для стационарных устройств, так и решения для разработки собственных мобильных приложений.
Решения для стационарных устройств
Одним из популярных клиентских сценариев является взаимодействие клиента с сайтом, требующим защиту соединения с помощью отечественных алгоритмов (например, сайты банков). В этом случае необходимо, чтобы клиент со своей стороны, так же как и сервер, поддерживал работу по TLS с ГОСТ. Наиболее удобным решением является использование на стороне клиента криптопровайдера КриптоПро CSP совместно с одним из поддерживаемых браузеров.
Кратко о решении:
На стороне клиента устанавливается КриптоПро CSP и один из поддерживаемых браузеров
Решение не требует никакой дополнительной разработки
Такое использование бесплатно для клиента (если с его стороны нет аутентификации по ключу и сертификату).
Ниже представлена сравнительная таблица характеристик поддерживаемых браузеров. Прочерк в колонке "Cертификация" означает необходимость проведения тематических исследований.
Браузер
Платформа
Сертификация
Класс защиты
Internet Explorer
Windows
любая поддерживаемая версия CSP
КС1, КС2*, КС3*
Спутник Браузер
Windows, Astra Linux, ALT Linux
самостоятельное СКЗИ
КС1, КС2*
Chromium-Gost
Astra Linux
начиная с CSP 5.0 R2
КС1, КС2*, КС3*
Windows, Linux, MacOS
–
–
Яндекс.Браузер
Windows
начиная с CSP 5.0 R2
КС1, КС2*, КС3*
* – требуются дополнительные настройки и технические средства защиты
Решения для мобильных устройств
КриптоПро предоставляет возможность встраивания поддержки отечественных криптоалгоритмов в ваше мобильное приложение при помощи КриптоПро CSP для операционных систем iOS и Android.
Кратко о решении:
CSP встраивается в мобильное приложение, пользователю не требуется устанавливать дополнительное ПО
Приложение может использовать как российские, так и иностранные криптонаборы
Ниже представлен список поддерживаемых операционных систем и соответствующих классов защиты:
Операционная система
Сертификация
Класс защиты
iOS
любая поддерживаемая версия CSP
КС1
Android
начиная с CSP 5.0
КС1
В случае использования КриптоПро CSP версии 5.0 R2 встраивание не требует проведения тематических исследований. Для CSP 5.0 и более ранних версий требуются тематические исследования.
Другие решения
Протокол TLS позволяет обеспечивать защищенное соединение между любыми узлами в сети, что выводит область его применения за рамки представленных решений. TLS может обеспечивать защищенную передачу данных между узлами блокчейна, между пользователями VoIP, фактически между любыми двумя приложениями. Мы предлагаем продукт, позволяющий решить и такие задачи.
Приложение stunnel , входящее в дистрибутив КриптоПро CSP , позволяет устанавливать защищенный с помощью отечественных криптонаборов канал между любыми двумя незащищенными приложениями без дополнительной разработки.
Ниже представлен список наиболее популярных поддерживаемых операционных систем и соответствующих классов защиты:
Операционная система
Сертификация
Класс защиты
Windows
любая поддерживаемая версия CSP
КС1, КС2*, КС3*
Linux
КС1, КС2*, КС3**
MacOS
КС1
* – требуются дополнительные настройки и технические средства защиты ** – КС3 только под Astra Linux
Как настроить доверие к сертификату?
Не секрет, что почти все механизмы аутентификации сторон в протоколе TLS построены на основе инфраструктуры открытых ключей (PKI), одной из основных компонент которой является сертификат открытого ключа сервера или клиента. С помощью сертификата происходит доверенное связывание идентифицирующей сторону информации (например, имени домена сервера) с открытым ключом, для этого используется указанная в сертификате информация о том, кому принадлежит открытый ключ. Данный ключ и соответствующий ему закрытый ключ используются для аутентификации стороны при выполнении протокола TLS, при этом сертификат пересылается по каналу в процессе взаимодействия.
Подробнее о том, что такое сертификат в TLS
Для того, чтобы механизм аутентификации функционировал корректно, необходимо, чтобы аутентифицирующая сторона могла убедиться, что информация, содержащаяся в переданном сертификате, является корректной и не была сформирована злоумышленником. Фактически, нам необходимо решить проблему доверия к открытым ключам. Это делается за счет наличия третьей стороны, которой доверяют все стороны информационного обмена – Удостоверяющего Центра (УЦ), выдающего сертификаты.
Строго говоря, когда мы говорим о передаче сертификата, мы имеем в виду передачу целой цепочки сертификатов («цепочку доверия»), где каждый сертификат подписывается закрытым ключом, соответствующим тому сертификату, который находятся выше в иерархии.
Если мы хотим проверить полученный сертификат, нам необходимо проверить подписи всех сертификатов в цепочке, опираясь на ключ проверки подписи из следующего по рангу сертификата. Следуя такому принципу, рано или поздно мы встретим сертификат, на котором цепочка заканчивается (т.е. сертификат, для которого нет сертификата с открытым ключом, который можно было бы использовать для проверки подписи). Такие сертификаты называются корневыми (root certificate). Корневые сертификаты устанавливаются доверенным образом, и в них указана информация, ассоциированная с доверенным УЦ.
В протоколе TLS предусмотрена возможность аутентификации и сервера, и клиента (двухсторонняя аутентификация), однако обязательной является только аутентификация сервера. Наиболее распространенным сценарием использования протокола является взаимодействие браузера с сайтом, в рамках которого обычно необходима только односторонняя аутентификация. Поэтому далее мы поговорим о том, как правильно и безопасно настроить доверие к сертификату сервера в рамках работы TLS c ГОСТ.
При работе по протоколу TLS с ГОСТ клиент может доверять сертификату, если его корневым сертификатом является либо сертификат головного удостоверяющего центра Минцифры России (сертификат ГУЦ), либо сертификат любого доверенного удостоверяющего центра (сертификат TLS-CA). Сертификаты, имеющие в качестве корневого сертификат ГУЦ, выдаются только аккредитованными удостоверяющими центрами по 63- ФЗ «Об электронной подписи». Отметим, что сертификат, использующийся для аутентификации сервера по протоколу TLS, не обязан быть полученным в аккредитованном удостоверяющем центре, достаточно, чтобы сертификат был выдан доверенным в рамках системы удостоверяющим центром.
Сертификат, корневым сертификатом которого будет TLS-CA, можно получить в нашем удостоверяющем центре CryptoPro TLS-CA . Отдельно отметим, что сертификат можно получить полностью удаленно, не посещая офис компании, воспользовавшись распределенной схемой обслуживания. Подробно о процедуре получения сертификата можно узнать на странице нашего удостоверяющего центра .
Настроить в браузере доверие к сертификату сервера можно одним из следующих способов:
вручную:
браузер клиента предупреждает пользователя о том, что сертификат не входит в список доверенных, клиент может "согласиться" доверять этому сертификату и продолжить устанавливать TLS соединение. Однако, очевидно, что возлагать ответственность за принятие такого решения на пользователя является не самым безопасным решением.
администратор безопасности системы заносит сертификат сервера в доверенные в ручном режиме, что является достаточно безопасным, но не самым удобным решением.
автоматически без участия человека:
При установке КриптоПро CSP версии 4.0 R3 и выше для работы браузера по ГОСТ сертификат ГУЦ и сертификат удостоверяющего центра CryptoPro TLS-CA добавятся в список доверенных автоматически. Таким образом, доверие распространится на любой сертификат, выданный аккредитованным УЦ или CryptoPro TLS-CA , причем после прохождения полноценной проверки, не требующей принятия решений от человека.
Тестирование ГОСТ TLS
КриптоПро TLS входит в состав КриптоПро CSP на всех ОС и не требует отдельной установки.
Для использования протокола TLS предварительно получите сертификат по шаблону "Сертификат пользователя УЦ". Это можно сделать на тестовом Удостоверяющем центре КриптоПро .
Тестовая страница для установления защищенного соединения с сервером с двусторонней аутентификацией. Для работы тестовой страницы необходимо разрешить порт 4444 для исходящих соединений.
Дополнительные стенды для тестирования TLS.
Документация
Онлайн-версия руководства программиста доступна на нашем сайте .