Криптографические решения. От криптопровайдеров до браузерных плагинов

    Производители средств криптографической защиты информации (СКЗИ) предлагают различные механизмы для интеграции криптосредств в информационные системы. Существуют решения, ориентированные на поддержку систем с Web-интерфейсом, мобильных и десктопных приложений, серверных компонентов. СКЗИ интегрируются в приложения Microsoft и в продукты Open Source, обеспечивают поддержку различных прикладных протоколов и форматов электронной подписи.

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

    В данном материале сделана попытка классифицировать средства криптографической защиты информации.
    • Рассмотрены в основном СКЗИ, использующиеся на клиентских местах для защиты клиент-серверных соединений по протоколу TLS, для организации ЭЦП, шифрования передаваемых данных;
    • Не рассматриваются СКЗИ, применяемые для создания VPN и шифрования файловой системы, хранимых данных, а так же УЦ;
    • Отдельно выделены аппаратные криптографические устройства.

    Классификация построена на основе:
    • технологий интеграции (CryptoAPI, Active-X, NPAPI и др.), которые поддерживают СКЗИ для встраивания в приложения и прикладные системы;
    • интерфейсов, которые предоставляют СКЗИ для встраивания в приложения и прикладные системы.

    Кроме того, показаны способы интеграции СКЗИ с Web-приложениями и возможность его использования на мобильных платформах

    Общая схема классификации приведена в таблице:
    Криптопровайдеры Нативные библиотеки (openssl-style, PKCS#11, NSS, собственные интерфейсы) Локальные прокси Браузерные плагины Облачная подпись Браузеры с российской криптографией
    Почтовые клиенты с российской криптографией Российская криптография в фреймворках, платформах, интерпретаторах Настольные криптографические приложения Криптография в BIOS UEFI Сервис-провайдеры ЭЦП Эмуляторы доверенной среды
    Аппаратные средства

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



    Криптопровайдеры



    Де-факто стандартом отрасли является класс криптосредств, известных как криптопровайдеры. Криптопровайдер — это предоставляющая специальный API и специальным образом зарегистрированная в ОС библиотека, которая позволяет расширить список поддерживаемых в ОС криптоалгоритмов.

    Следует отметить, что несовершенство предлагаемых MS Windows механизмов расширения вынуждает разработчиков криптопровайдеров дополнительно модифицировать высокоуровневые криптобиблиотеки и приложения MS Windows в процессе их выполнения для того, чтобы «научить» их использовать российские криптоалгоритмы.

    Следует понимать, что не все СКЗИ одного вида реализуют полный объем функциональности, приведенный в таблицах. Для уточнения возможностей криптосредств следуют обратиться к производителю.



    Спецификация Microsoft CSP, Microsoft CNG, CryptoAPI 1.0 -> CryptoAPI 2.0
    Платформы Семейство Windows. Есть порт на GNU\Linux, OS X, iOS, Android
    Алгоритмы и криптографические протоколы ЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO;
    TLS, EAP-TLS, Kerberos
    Интеграция с PKI X.509, PKCS#10, CMS, CRL, OCSP, TSP
    Механизмы ЭЦП Нативный программный интерфейс, Си-style;
    Встраивание в приложения
    Механизмы аутентификации Клиентская аутентификация в рамках TLS.
    KERBEROS-аутентификация в домене Windows.
    Собственные механизмы аутентификации на базе ЭЦП случайных данных
    Механизмы “гостирования” TLS Встраивание в системный TLS
    Поддержка прикладных протоколов HTTPS, SMTPS, IMAPS, POP3S, RDP, NNTPS, FTPS, LDAPS
    Форматы защищенных сообщений PKCS#7, CMS, XMLSec, S/MIME;
    CADES (КриптоПро ЭЦП), PDF signature (КриптоПро PDF), MS Office Signature (КриптоПро Office Signature)
    Интеграция с браузером ЭЦП в IE через ActiveX CAPICOM, PKCS#10 через ActiveX XEnroll/CertEnrool
    TLS в IE через встраивание в SSPI-провайдер
    ЭЦП в различных браузерах через проприетарные плагины (КриптоПро ЭЦП Browser Plugin)
    TLS-прокси (КриптоПро sTunnel)
    Кастомные браузеры (КриптоПро Fox, Защищенный браузер Digital Design)
    Интеграция со службой каталогов MS Active Directory; клиентская часть с произвольным LDAP-каталогом
    Мобильные платформы Порт КриптоПро CSP на iOS, Android
    Команднострочная утилита Есть
    Хранилища ключей Реестр, USB-токены
    Взаимодействие с USB-токенами Хранилище ключей и сертификатов
    Использование аппаратной реализации алгоритмов
    Через PKCS#11, PC/SC, APDU
    Приложения IE, Microsoft Office, Microsoft Outlook Express, Microsoft Outlook, Microsoft Word/Excel, Microsoft Authenticode, Microsoft RDP, Microsoft Certification Authority, Microsoft IIS, Microsoft Exchange, Microsoft Terminal Server, Winlogon, Microsoft EFC
    Проприетарные приложения
    СПО (sTunnel, FireFox, Apache через Trusted TLS, патч для OpenVPN)
    Adobe Reader
    SAP
    Интеграция с фреймворками Microsoft.NET (КриптоПро.NET)
    Инсталляция Программа установки, требуются права системного администратора
    Примеры (ГОСТ) КриптоПро CSP
    ViPNet CSP
    Signal-COM CSP
    Лисси CSP
    КриптоПро Рутокен CSP
    Валидата CSP

    Проблемы:
    • Отсутствие нормальной кроссплатформенности;
    • Установка с правами администратора, настройка;
    • Установка обновления Windows может потребовать обновления провайдера;
    • Необходимость встраивания в приложения посредством модификации кода «на лету»;
    • CSP — неродной интерфейс для не-Windows-приложений.

    Плюсы:
    • Широкий охват Windows-приложений;
    • Богатый инструментарий для разработчиков защищенных систем;
    • Апробированная на большом количестве проектов технология.


    Нативные библиотеки



    OpenSSL-style



    Open Source библиотека OpenSSL обладает широкими криптографическими возможностями и удобным механизмом ее расширения другими криптоалгоритмами. OpenSSL является основным криптоядром для широкого спектра приложений Open Source.

    После того, как в эту библиотеку компанией Криптоком были добавлены ГОСТы, появились патчи для «гостификации» многих популярных приложения, использующих OpenSSL. На базе OpenSSL некоторые вендоры разработали и сертифицировали СКЗИ, кроме того в ряд продуктов OpenSSL входит «неявным» образом.



    Спецификация OpenSSL API — один из де-факто стандартов для СПО
    Платформы Семейство Windows, GNU\Linux, OS X, iOS, Android
    Алгоритмы и криптографические протоколы ЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO;
    TLS
    Интеграция с PKI X.509, PKCS#10, CMS, CRL, OCSP, TSP
    Механизмы ЭЦП Нативный программный интерфейс, Си-style;
    Механизмы аутентификации клиентская аутентификация в рамках TLS
    собственные механизмы на базе ЭЦП случайных данных
    Механизмы “гостирования” TLS TLS с российской криптографией поддержан в библиотеке (в случае использования OpenSSL в качестве браузерного криптодвижка)
    TLS-прокси на базе OpenSSL (например, sTunnel)
    Форматы защищенных сообщений PKCS#7, CMS, XMLSec (при использовании с библиотекой www.aleksey.com/xmlsec, в том числе ГОСТ), S/MIME
    Интеграция с браузером Через TLS-прокси
    Через проприетарные плагины
    В Chromium OpenSSL один из возможных криптодвижков
    Интеграция со службой каталогов OpenLDAP
    Мобильные платформы iOS, Android
    Команднострочная утилита Есть
    Хранилища ключей Файлы, USB-токены
    Взаимодействие с USB-токенами Хранилище ключей и сертификатов
    Использование аппаратной реализации алгоритмов
    Через PKCS#11
    Приложения OpenVPN, Apache, sTunnel, Nginx, Postgre SQL, postfix, dovecot
    Проприетарные приложения
    Интеграция с фреймворками OpenSSL интегрирован в большое количество фреймворков (PHP, Python, .NET и др.), но ГОСТа нет. Требуется выпускать патчи к фреймворкам
    Инсталляция Программа установки, в целом не требуются права системного администратора
    Копирование
    Запуск использующих rкриптосредства приложений с FLASH-памяти USB-токена
    Примеры (ГОСТ) МагПро КриптоПакет
    ЛирССЛ
    OpenSSL (несерт.)
    OpenSSL + engine PKCS11_GOST + Рутокен ЭЦП

    Проблемы:
    • OpenSSL и его аналоги не поддерживается приложениями Microsoft;
    • Необходимость патчить СПО, которое поддерживает OpenSSL, для включения ГОСТов.

    Плюсы:
    • Кроссплатформенность;
    • Использование в огромном количестве проектов, открытые исходники большей части проекта — выявление и устранение уязвимостей (как пример, недавнее выявление heartbleed);
    • Распространяется копированием — можно делать приложения, не требующие инсталляции;
    • Широкий охват приложений СПО, на базе которых можно делать защищенные сертифицированные продукты;
    • Широкая интеграция в фреймворки, но при этом проблемы с ГОСТами.


    PKCS#11



    Библиотека PKCS#11 предоставляет универсальный кроссплатформенный программный интерфейс к USB-токенам и смарт-картам.

    Функции делятся на:
    • Функции доступа к устройству;
    • Функции записи/чтения произвольных данных;
    • Функции работы с ключами (поиск, создание, удаление, импорт, экспорт);
    • Функции работы с сертификатами (поиск, импорт, экспорт);
    • Функции ЭЦП;
    • Функции хэширования;
    • Функции шифрования;
    • Функции вычисления имитовставки;
    • Функции выработки ключа согласования (Диффи-Хeллман);
    • Функции экспорта/импорта сессионного ключа;

    Таким образом, стандарт PKCS#11 поддерживает полный набор криптопримитивов, пригодный для реализации криптографических форматов (PKCS#7/CMS/CADES, PKCS#10, X.509 и др.) и протоколов (TLS, IPSEC, openvpn и др.).

    Для обеспечения быстродействия часть криптопримитивов может быть реализована программно.

    В стандарте PKCS#11, начиная с версии 2.30, поддерживаются ГОСТ Р 34.10-2001, ГОСТ Р 34.11-94, ГОСТ 28147-89.

    Использование библиотеки PKCS#11 обеспечивает совместимость ПО различных вендоров при работе с токенами. Через PKCS#11 интерфейс умеют работать приложения, написанные на на базе CryptoAPI, NSS, OpenSSL.

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



    PKCS#11 бывают также без поддержки аппаратных устройств с программной реализацией криптоалгоритмов и хранением объектов в файловой системе.

    Примеры – PKCS#11 интегрированный в NSS (Mozilla), проект aToken, библиотека Агава-Про.

    У компании Крипто-Про есть библиотека PKCS#11, реализованная на базе MS CryptoAPI:



    Существуют PKCS#11-библиотеки для мобильных платоформ. Примером подобной библиотеки служит библиотека для Рутокен ЭЦП Bluetooth, которая позволяет использовать устройство на iOS и Android.

    NSS



    NSS представляет собой криптографическую библиотеку от сообщества Mozilla. NSS используется такими приложениями, как браузер Mozilla Firefox, почтовым клиентом Mozilla Thunderbird.

    В данный момент существуют два проекта по «гостификации» NSS:

    • Компания Лисси периодически публикует на своем сайте доступные для скачивания актуальные версии Mozilla Firefox и Mozilla Thunderbird, пересобранные с поддержкой российской криптографии. Кроме того, существует ряд продуктов этой компании, построенный на базе модифицированной библиотеки NSS — высокоуровневая библиотека NSSCryptoWrapper, плагин LCSignPlugin, десктопное приложение для ЭЦП под Android SignMaker-A.
      Следует отметить, что модифицированный специалистами этой компании NSS позволяет использовать как программные PKCS#11-токены, так и аппаратные (Рутокен ЭЦП, eToken ГОСТ, JaCarta ГОСТ, MS_KEY).
    • Atoken — это open source проект компании R-Альфа. В рамках проекта создан программный PKCS#11-токен с российской криптографией и выложены патчи для определенной версии NSS и компонента Security Manаger, позволяющие использовать в продуктах Mozilla россиийскую криптографию (TLS, ЭЦП, PKI). Кроме того R-Альфа предлагает реализацию программного PKCS#11-токена с поддержкой сертифицированной библиотеки Агава-С под названием Агава-Про.


    Библиотеки c собственным интерфейсом



    Проприетарные библиотеки предоставляют собственный API для встраивания в приложения. В данный список можно внести:
    • Агава-С
    • Крипто-C
    • Крипто-КОМ


    Локальные прокси



    Основным принципом действия локального прокси является прием незащищенного соединения от приложения, установка TLS-туннеля с удаленным сервером и передача «прикладного уровня» между приложением и удаленным сервером по этому туннелю.

    Некоторые локальные прокси кроме того дополнены механизмом ЭЦП специальным образом промаркированных WEB-форм (Inter-PRO, МагПро КриптоТуннель). Существуют локальные прокси, которые предоставляют для браузера WEB API ЭЦП (систему HTTP-запросов и ответов, аналогичных программному API криптобиблиотеки).



    Спецификация -
    Платформы Семейство Windows, GNU\Linux, OS X. На базе СПО iOS, Android
    Алгоритмы и криптографические протоколы ЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO;
    TLS
    Интеграция с PKI X.509, PKCS#10, CMS, CRL, OCSP, TSP
    Механизмы ЭЦП Подпись WEB-форм при прохождении траффика
    WEB API
    Механизмы аутентификации клиентская аутентификация в рамках TLS
    Механизмы “гостирования” TLS Через механизм проксирования
    Форматы защищенных сообщений PKCS#7, CMS
    Интеграция с браузером Через механизм проксирования
    Мобильные платформы iiOS, Android на базе СПО sTunnel
    Хранилища ключей Реестр, файлы, USB-токены
    Взаимодействие с USB-токенами Хранилище ключей и сертификатов
    Использование аппаратной реализации алгоритмов
    Через PKCS#11, PC/SC, APDU
    Приложения Браузеры
    WEB-сервера
    RDP
    Почтовые клиенты и сервера
    Инсталляция Программа установки, в целом не требуются права системного администратора
    Копирование, запуск
    Запуск с FLASH-памяти USB-токена
    Примеры (ГОСТ) МагПро КриптоТуннель
    Inter-PRO
    VPNKey-TLS
    LirTunnel
    КриптоПро sTunnel
    sTunnel

    Проблемы:
    • прокси должен быть запущен;
    • приложение должно работать через прокси, нужно «научить» его этому;
    • могут использоваться нестандартные порты, отсюда проблемы в файрволом
    • если приложение «ходит» через localhost, то, например, в адресной строке браузера прописано localhost… — нестандартно
    • дополнительные ограничения на разработку web-сайта — в ряде случаев использование только относительных ссылок, чтобы не «вылететь» из туннеля
    • прокси сконфигурирован на проксирование конечной группы сайтов, расширение группы — это обновление клиентского конфига
    • работа через внешний прокси требует дополнительного конфигурирования локального прокси, при этом могут быть проблемы с аутентификацией пользователя на внешнем прокси


    Плюсы:
    • решение использует универсальную технологию, поэтому можно не бояться его устаревания;
    • решение может применяться на большом числе платформ, в том числе на мобильных платформах;
    • кроссбраузерность, поддержка всех WEB-серверов без модификации;
    • не требует инсталляции;
    • поддержка различных прикладных протоколов.


    Браузерные плагины



    Для того, чтобы из скриптов WEB-страницы вызвать нативную библиотеку большинство браузеров поддерживают специальные расширения — ActiveX для IE и NPAPI-плагин для GH, MF, Opera, Sаfari и др. В данный момент на рынке существует широкий спектр продуктов, относящихся к браузерным плагинам. Архитектурно данные плагины могут быть исполнены по-разному. Некоторые работают на базе CryptoAPI и требуют дополнительной установки криптопровайдера, другие используют в качестве криптоядра PKCS#11-совместимые устройства и не требуют установки дополнительных СКЗИ на рабочее место клиента. Есть универсальные плагины, которые поддерживают как все основные криптопровайдеры, так и широкий спектр аппаратных СКЗИ.

    Кроссбраузерные плагины





    Спецификация -
    Платформы Семейство Windows, GNU\Linux, OS X
    Алгоритмы и криптографические протоколы ЭЦП, шифрование, хэш-функция, имитозащита, HMAC
    Интеграция с PKI X.509, PKCS#10, CMS, CRL, OCSP (КриптоПро ЭЦП Browser plugin), TSP (КриптоПро ЭЦП Browser plugin)
    Механизмы ЭЦП Программный интерфейс для использования в JavaScript
    Механизмы аутентификации ЭЦП случайных данных
    Механизмы “гостирования” TLS -
    Форматы защищенных сообщений PKCS#7, CMS, XMLSec (КриптоПро ЭЦП Browser plugin), CADES (КриптоПро ЭЦП Browser plugin)
    Интеграция с браузером ActiveX (для IE)
    NPAPI
    Мобильные платформы не поддерживаются
    Хранилища ключей Реестр, файлы, USB-токены
    Взаимодействие с USB-токенами Хранилище ключей и сертификатов
    Использование аппаратной реализации алгоритмов
    Через PKCS#11, через CryptoAPI
    Приложения Браузеры
    Инсталляция Программа установки, не требуются права системного администратора
    Примеры (ГОСТ) КриптоПро ЭЦП Browser plugin
    eSign-PRO
    КриптоПлагин Лисси
    Плагин портала госуслуг
    JC-WebClient
    Рутокен Плагин
    Плагин BSS
    КриптоАРМ Browser plugin

    Проблемы:
    • отсутствие TLS
    • удаление NPAPI из Chromium
    • браузеры на мобильных платформах не поддерживают плагины
    • настройки безопасности IE могут блокировать исполнение плагина

    Плюсы:
    • кроссплатформенность для плагинов на базе PKCS#11
    • кроссбраузерность
    • плагины на базе PKCS#11 не требуют установки СКЗИ
    • прозрачное использование для пользователя


    ActiveX



    Компания Microsoft разработала два основных клиентских ActiveX-компонента, которые транслируют функционал CryptoAPI в скрипты, в браузер.
    Для генерации ключа и создания PKCS#10-запроса применятся компонент XEnroll/CertEnroll, а для ЭЦП/шифрования и работы с сертификатами компонент CAPICOM.



    В следующих статьях будут подробно рассмотрены оставшиеся решения.
    «Актив» 43,79
    Компания
    Поделиться публикацией

    Вакансии компании «Актив»

    Комментарии 18
    • +1
      «OpenSSL и его аналоги не поддерживается Windows-приложениями» — поясните, пожалуйста. А то по этой цитате выходит что мои же приложения не поддерживают OpenSSL, на котором там 95% криптографии.
      • 0
        Здесь речь идет о приложениях компании Microsoft
        • 0
          Написано одно, а речь идет о другом :-) То, что MS не использует OpenSSL — не недостаток, у них свой CryptoAPI есть. Так что зря вы ее так, хорошая либа.
          • 0
            Поправил в тексте. OpenSSL — замечательная либа)
      • 0
        Скажите пожалуйста, а почему для Россреестра, для участия в торгах и для налоговой нужны разные ЭЦП? Неужели нельзя сделать одно ЭЦП или это банальное желание срубить бабла? Пруф kontur.ru/ca (цены для россреестра, налоговой и проведения торгов разные).
        • 0
          Я думаю, вам стоит адресовать этот вопрос непосредственно пруфу
        • 0
          банальное желание срубить бабла
          • 0
            На самом деле, уточнять надо не у пруфа, а у самих сервисов, поскольку именно они устанавливают стоимость регистрации сертификата «у себя», от которой уже отталкивается УЦ. ИФНС два года назад брал порядка двух-трех сотен за регистрацию в ИРУЦ, а 5ЭТП — 3500.
          • 0
            Очень странно, что в статье про криптографические решения нет ни одного слова про криптовалюты. Вот решения — скорее всего они. А статья — скорее про компоненты.
            • 0
              Плагин портала госуслуг — архитектура не верна.

              По поводу проблем:

              отсутствие TLS — была бы потребность, сделать не проблема (ну да не совсем браузерный плагин получится)

              удаление NPAPI из Chromium — уже идет замена

              браузеры на мобильных платформах не поддерживают плагины — селяви

              настройки безопасности IE могут блокировать исполнение плагина — инструкция по настройке браузера
              • 0
                Буду очень благодарен за правильную архитектуру плагина пользователя СЭП, поправлю картинку
                • 0
                  Что касается портала госуслуг и PKCS#11, то стоит посмотреть здесь.
                • 0
                  З.Ы. Справедливости ради: Плагин пользователя систем электронного правительства
                  • +1
                    Статья отличная.Без воды.Но осмелюсь не согласиться, касательно регулирования.Вы с ЦБ не имели дело)
                    • 0
                      ЦБ строго рекомендует конкретное СКЗИ?

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое