Опыт интеграции с КриптоПро DSS поверх ГОСТ TLS / Хабр

Опыт интеграции с КриптоПро DSS поверх ГОСТ TLS / Хабр ЭЦП

Введение

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

В нашем блоге мы неоднократно (1, 2 и 3) рассказывали о такого рода уязвимостях, обнаруженных в последние несколько лет, отмечая отсутствие аналогичных уязвимостей в используемых в продуктах нашей компании российских наборов шифрования на основе ГОСТ Р 34.10-2001.

Описание проблемы и её решение

В нашей схеме подключение к серверу электронной подписи осуществляется по ГОСТ TLS с аутентификацией клиента по сертификату.

Но не секрет, что стандартные платформы, а именно горячо любимый мной .NET, не поддерживают российские криптошифры по ГОСТу.

В качестве эксперимента пробовал подключить rtengine, но он не завёлся, и, помимо прочего, он не является сертифицированным средством защиты информации. В таких случаях “КриптоПро” советует использовать «КриптоПро Stunnel».

Изначально, stunnel – это open-source приложение, выступающее в роли шлюза, который принимает незашифрованный трафик и пересылает его на целевой сервер поверх TLS. Часто используется, когда клиент сам не поддерживает TLS-шифрование.

А Stunnel от “КриптоПро” – это практически тот же stunnel, но с поддержкой ГОСТ TLS, а значит, он замечательно подходит для решения нашей проблемы.

Представленная выше схема рабочая, если бы не одно но: согласно политикам безопасности в компании, все запросы во внешнюю сеть Интернет могут осуществляться только через корпоративный прокси. Ванильный stunnel из коробки умеет делать запросы через прокси, но “КриптоПро” эту фичу выпилил в своей редакции.

Что такое tls с гост?

В процессе работы над задачей разработки протокола TLS с поддержкой российских криптонаборов при активном участии специалистов КриптоПро было создано два ключевых документа, регламентирующих порядок работы протоколов TLS 1.2 и TLS 1.3 с ГОСТ Р 34.

12-2022 (с использованием алгоритмов Магма и Кузнечик) – рекомендации по стандартизации Р 1323565.1.020-2022 для TLS 1.2 и рекомендации по стандартизации Р 1323565.1.030-2020 для TLS 1.3. Документы определяют криптонаборы с российскими алгоритмами хэширования, шифрования и электронной подписи с учетом наиболее современных и безопасных практик использования криптоалгоритмов.

Для регламентации работы протокола с использованием криптонаборов на базе ГОСТ 28147-89 ранее были разработаны методические рекомендации МР 26.2.001-2022. Отметим, что сами российские режимы и криптонаборы стандартизованы в международных организациях ISO и IETF, пройдя экспертизу ведущих мировых специалистов.

Tls-клиент с гост

Одна из важнейших задач, стоящих перед командой КриптоПро, – создание для пользователя как можно более комфортных условий при работе с сервисами по TLS c ГОСТ. В настоящее время мы предлагаем несколько вариантов решений, включающих в себя как готовые клиентские решения для стационарных устройств, так и решения для разработки собственных мобильных приложений.

Tls-сервер с гост

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

  1. Если вам необходимо настроить работу для конкретного серверного ПО (IIS, Apache, nginx), вы можете на компьютере с указанным серверным ПО установить КриптоПро CSP и, следуя соответствующим инструкциям по настройке, получить TLS-сервер, дополнительно поддерживающий алгоритмы ГОСТ.
  2. Вы также можете воспользоваться решением КриптоПро NGate, представляющим собой самостоятельный TLS-шлюз (отдельная аппаратная или виртуальная платформа). Решение имеет большое количество преимуществ, одним из которых является удобство обеспечения классов защиты KC2-KC3: в отличие от предыдущего подхода, не требуется выполнение отдельных настроек, приобретение и конфигурирование электронных замков и прочих дополнительных мер защиты, все необходимое уже включено в аппаратные компоненты решения.

Ниже представлена сравнительная таблица характеристик каждого предлагаемого решения. В колонке “Cертификация” приведена информация о статусе сертификации решения: как самостоятельное СКЗИ или как решение, исследование которого было проведено в рамках сертификации КриптоПро CSP. Во втором случае указана соответствующая версия криптопровайдера.

Внедрить tls c гост? легко!

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

Также на данной странице представлена информацию об услугах нашего удостоверяющего центра CryptoPro TLS-CA по выдаче сертификатов TLS →

Документация

Онлайн-версия руководства программиста доступна на нашем сайте.

Другие решения

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

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

Ниже представлен список наиболее популярных поддерживаемых операционных систем и соответствующих классов защиты:

Как настроить доверие к сертификату?

Не секрет, что почти все механизмы аутентификации сторон в протоколе TLS построены на основе инфраструктуры открытых ключей (PKI), одной из основных компонент которой является сертификат открытого ключа сервера или клиента. С помощью сертификата происходит доверенное связывание идентифицирующей сторону информации (например, имени домена сервера) с открытым ключом, для этого используется указанная в сертификате информация о том, кому принадлежит открытый ключ.

Протокол tls: краткая справка

Протокол TLS (Transport Layer Security) является одним из наиболее популярных протоколов, предназначенных для установления защищенного канала связи в сети Интернет. Он основан на спецификации протокола SSL (Secure Sockets Layer) версии 3.0, но за время своего существования претерпел довольно много изменений.

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

Решения для мобильных устройств

КриптоПро предоставляет возможность встраивания поддержки отечественных криптоалгоритмов в ваше мобильное приложение при помощи КриптоПро CSP для операционных систем iOS и Android.

Кратко о решении:

Ниже представлен список поддерживаемых операционных систем и соответствующих классов защиты:

В случае использования КриптоПро CSP версии 5.0 R2 встраивание не требует проведения тематических исследований. Для CSP 5.0 и более ранних версий требуются тематические исследования.

Решения для стационарных устройств

Одним из популярных клиентских сценариев является взаимодействие клиента с сайтом, требующим защиту соединения с помощью отечественных алгоритмов (например, сайты банков). В этом случае необходимо, чтобы клиент со своей стороны, так же как и сервер, поддерживал работу по TLS с ГОСТ.

Кратко о решении:

Ниже представлена сравнительная таблица характеристик поддерживаемых браузеров. Прочерк в колонке «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»/»криптопро tls»

Для обеспечения возможности встречного тестирования доступен публичный стенд реализации TLS с российскими наборами алгоритмов, состоящий из нескольких узлов:

Стенды требуют наличия поддержки RFC 5746 (Renegotiation Indication), см.[RFC 5746].

Серверные сертификаты выпущены наТестовом УЦ ООО «КРИПТО-ПРО»

Тестирование гост tls

КриптоПро TLS входит в состав КриптоПро CSP на всех ОС и не требует отдельной установки.

Для использования протокола TLS предварительно получите сертификат по шаблону «Сертификат пользователя УЦ». Это можно сделать на тестовом Удостоверяющем центре КриптоПро.

Тестовая страница для установления защищенного соединения с сервером с двусторонней аутентификацией. Для работы тестовой страницы необходимо разрешить порт 4444 для исходящих соединений.

Дополнительные стенды для тестирования TLS.

Оцените статью
ЭЦП64
Добавить комментарий