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

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

В данном материале сделана попытка классифицировать средства криптографической защиты информации (СКЗИ).

Рассмотрены в основном СКЗИ, использующиеся для защиты клиент-серверных соединений по протоколу TLS, для организации ЭЦП, шифрования передаваемых данных; Не рассматриваются СКЗИ, применяемые для создания VPN и шифрования файловой системы, хранимых данных, а так же УЦ; Отдельно выделены аппаратные криптографические устройства. Классификация построена на основе: технологий интеграции (Crypto API, Active-X, NPAPI и др.), которые поддерживают СКЗИ для встраивания в приложения и прикладные системы; интерфейсов, которые предоставляют СКЗИ для встраивания в приложения и прикладные системы. Кроме того, показаны способы интеграции СКЗИ с Web-приложениями и возможность его использования на мобильных платформахОбщая схема классификации приведена в таблице:

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

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

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

e88178e3963249358cc650b29bb5e670.png

Спецификация Microsoft CSP, Microsoft CNG, Crypto API 1.0 → Crypto API 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/CertEnroolTLS в IE через встраивание в SSPI-провайдерЭЦП в различных браузерах через проприетарные плагины (КриптоПро ЭЦП Browser Plugin)TLS-прокси (КриптоПро sTunnel)Кастомные браузеры (КриптоПро Fox, Защищенный браузер Digital Design) Интеграция со службой каталогов MS Active Directory; клиентская часть с произвольным LDAP-каталогом Мобильные платформы Порт КриптоПро CSP на iOS, Android Команднострочная утилита Есть Хранилища ключей Реестр, UBS-токены Взаимодействие с 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 ReaderSAP Интеграция с фреймворками Microsoft.NET (КриптоПро.NET) Инсталляция Программа установки, требуются права системного администратора Примеры (ГОСТ) КриптоПро CSPViPNet CSPSignal-COM CSPЛисси CSPКриптоПро Рутокен CSPВалидата CSP Проблемы: Отсутствие нормальной кроссплатформенности; Установка с правами администратора, настройка; Установка обновления Windows может потребовать обновления провайдера; Необходимость встраивания в приложения посредством модификации кода «на лету»; CSP — неродной интерфейс для не-Windows-приложений. Плюсы: Широкий охват Windows-приложений; Богатый инструментарий для разработчиков защищенных систем; Апробированная на большом количестве проектов технология. Нативные библиотеки OpenSSL-style Open Source библиотека OpenSSL обладает широкими криптографическими возможностями и удобным механизмом ее расширения другими криптоалгоритмами. OpenSSL является основным криптоядром для широкого спектра приложений Open Source.

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

1a598883a3664cbb86d56d28aaaed039.png

Спецификация 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 Команднострочная утилита Есть Хранилища ключей Файлы, UBS-токены Взаимодействие с USB-токенами Хранилище ключей и сертификатовИспользование аппаратной реализации алгоритмовЧерез PKCS#11 Приложения OpenVPN, Apache, sTunnel, Nginx, Postgre SQL, postfix, dovecotПроприетарные приложения Интеграция с фреймворками OpenSSL интегрирован в большое количество фреймворков (PHP, Python, .NET и др.), но ГОСТа нет. Требуется выпускать патчи к фреймворкам Инсталляция Программа установки, в целом не требуются права системного администратораКопированиеЗапуск использующих rкриптосредства приложений с FLASH-памяти USB-токена Примеры (ГОСТ) МагПро КриптоПакетЛирССЛOpenSSL (несерт.)OpenSSL + engine PKCS11_GOST + Рутокен ЭЦП Проблемы: OpenSSL и его аналоги не поддерживается Windows-приложениями; Необходимость патчить СПО, которое поддерживает OpenSSL, для включения ГОСТов. Плюсы: Кроссплатформенность; Использование в огромном количестве проектов, открытые исходники большей части проекта — выявление и устранение уязвимостей (как пример, недавнее выявление heartbleed); Распространяется копированием — можно делать приложения, не требующие инсталляции; Широкий охват приложений СПО, на базе которых можно делать защищенные сертифицированные продукты; Широкая интеграция в фреймворки, но при этом проблемы с ГОСТами. PKCS#11 Библиотека PKCS#11 предоставляет универсальный кроссплатформенный программный интерфейс к USB-токенам и смарт-картам.

Функции делятся на:

Функции доступа к устройству; Функции записи/чтения произвольных данных; Функции работы с ключами (поиск, создание, удаление, импорт, экспорт); Функции работы с сертификатами (поиск, импорт, экспорт); Функции ЭЦП; Функции хэширования; Функции шифрования; Функции вычисления имитовставки; Функции выработки ключа согласования (Диффи-Хэльман); Функции экспорта/импорта сессионного ключа; Таким образом, стандарт 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 интерфейс умеют работать приложения, написанные на на базе Crypto API, NSS, OpenSSL.

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

02412fcdbe514820b1848f194ec6f1e2.png

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

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

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

23915e2064fb436fabcf211a21a28fc9.png

Существуют 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 криптобиблиотеки).

3288e8162cc14c3ca5827d88fbd09a1b.png

Спецификация - Платформы Семейство 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 Хранилища ключей Реестр, файлы, UBS-токены Взаимодействие с USB-токенами Хранилище ключей и сертификатовИспользование аппаратной реализации алгоритмовЧерез PKCS#11, PC/SC, APDU Приложения БраузерыWEB-сервераRDPПочтовые клиенты и сервера Инсталляция Программа установки, в целом не требуются права системного администратораКопирование, запускЗапуск с FLASH-памяти USB-токена Примеры (ГОСТ) МагПро КриптоТуннельInter-PROVPNKey-TLSLirTunnelКриптоПро sTunnelsTunnel Проблемы: прокси должен быть запущен; приложение должно работать через прокси, нужно «научить» его этому; могут использоваться нестандартные порты, отсюда проблемы в файрволом если приложение «ходит» через localhost, то, например, в адресной строке браузера прописано localhost… — нестандартно дополнительные ограничения на разработку web-сайта — в ряде случаев использование только относительных ссылок, чтобы не «вылететь» из туннеля прокси сконфигурирован на проксирование конечной группы сайтов, расширение группы — это обновление клиентского конфига работа через внешний прокси требует дополнительного конфигурирования локального прокси, при этом могут быть проблемы с аутентификацией пользователя на внешнем прокси Плюсы:

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

Кроссбраузерные плагины 09c86a6ada104c41b1dfc2e642794c4d.png

Спецификация - Платформы Семейство 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 Мобильные платформы не поддерживаются Хранилища ключей Реестр, файлы, UBS-токены Взаимодействие с USB-токенами Хранилище ключей и сертификатовИспользование аппаратной реализации алгоритмовЧерез PKCS#11, через Crypto API Приложения Браузеры Инсталляция Программа установки, не требуются права системного администратора Примеры (ГОСТ) КриптоПро ЭЦП Browser plugineSign-PROКриптоПлагин ЛиссиПлагин портала госуслугJC-WebClientРутокен ПлагинПлагин BSSКриптоАРМ Browser plugin Проблемы: отсутствие TLS удаление NPAPI из Chromium браузеры на мобильных платформах не поддерживают плагины настройки безопасности IE могут блокировать исполнение плагина Плюсы: кроссплатформенность для плагинов на базе PKCS#11 кроссбраузерность плагины на базе PKCS#11 не требуют установки СКЗИ прозрачное использование для пользователя ActiveX Компания Microsoft разработала два основных клиентских ActiveX-компонента, которые транслируют функционал Crypto API в скрипты, в браузер.Для генерации ключа и создания PKCS#10-запроса применятся компонент XEnroll/CertEnroll, а для ЭЦП/шифрования и работы с сертификатами компонент CAPICOM.

cba865bfe9bf4da5b6af1de6b6ad293c.png

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

© Habrahabr.ru