- Отдельные почтовые клиенты с российской криптографией
- Javascript
- Java-апплеты
- Копирование пользовательского контейнера
- На базе nss
- Настольные криптографические приложения
- Облачная подпись
- Отдельные библиотеки
- Отдельные браузеры с российской криптографией
- Подключение к csp
- Расширения классов
- Создание запроса через dss
- Создание тестового пользователя
- Средства формирования доверенной среды
Отдельные почтовые клиенты с российской криптографией
Отдельные почтовые клиенты с российской криптографией позволяют реализовать защиту переписки, используя электронную подпись и шифрование письма для абонента/группы абонентов (S/MIME). Данное решение удобно использовать в системах, построенных по принцу «точка-точка», в которых обмен информацией происходит непосредственно между абонентами, а сервер при этом используется только для маршрутизации сообщений.
Платформы | Семейство Windows, GNULinux, OS X, iOS, Android |
Алгоритмы и криптографические протоколы | ЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO, TLS |
Интеграция с PKI | X.509, PKCS#10, CMS, CRL |
Механизмы ЭЦП | Вызов из JavaScript встроенных в браузер функций |
TLS-ГОСТ | Встроен в библиотеку и поддерживается браузером |
Форматы защищенных сообщений | PKCS#7, CMS |
Интеграция с браузером | 100% |
Мобильные платформы | iOS, Android |
Хранилища ключей | Браузерное хранилище, USB-токены |
Взаимодействие с USB-токенами | Хранилище ключей и сертификатов Использование аппаратной реализации алгоритмов |
Инсталляция | Программа установки, в целом, не требуются права системного администратор Portable. Например, запуск браузера с FLASH-памяти USB-токена |
Примеры (ГОСТ) | Mozilla ThunderBird от Лисси DiPost от Фактор ТС |
Javascript
Некоторое время назад на Хабре появилась статья, автор которой реализовал многие криптографические форматы непосредственно на JavaScript
При этом криптоалгоритмы используются из унифицированного ядра WebCrypto, которое уже сейчас поддерживается большинством современных браузеров.
Java-апплеты
Одним из вариантов использования СКЗИ в браузере является их интеграция в Java-апплеты.
В ряде случаев СКЗИ и криптографические библиотеки не требуют установки и представляют собой нативную библиотеку. В этом случае возможна ее интеграция непосредственно «внутрь» апплета и вызов функций СКЗИ через механизм JNI. При этой схеме библиотека будет инсталлирована в профайл пользователя при первой загрузке Java-апплета в браузере и ее отдельной инсталляции не потребуется.
Другим вариантом является написание Java-апплета, который вызывает предустановленное в системе СКЗИ (CSP, JCP и др.)
Более подробно пример подобной реализации, основанный на использовании Рутокен ЭЦП и OpenSSL, описан в статье
Копирование пользовательского контейнера
Прежде всего, у вас должен быть ключевой контейнер формата КриптоПро, а сертификат для него должен быть установлен в системное хранилище. Если сертификата нет, его можно выпустить на нашем тестовом сервисе (открывать через Internet Explorer). При генерации не забудьте пометить ключ как экспортируемый.
Для переноса ключа открываем системное хранилище сертификатов (Win-R – certmgr.msc – ОК), выбираем сертификат, нажимаем правой кнопкой – «Все задачи» – «Экспорт»:
В Мастере экспорта сертификатов указываем, что хотим экспортировать сертификат с закрытым ключом и выполняем экспорт в формат pfx, установив произвольный пароль.
Возвращаемся на экран управления DSS и нажимаем кнопку «Установить сертификат»:
Здесь выбираем экспортированный pfx-контейнер и нажимаем кнопку «Загрузить сертификат». В результате в списке сертификатов должен появиться ваш скопированный сертификат, который можно просмотреть.
На базе nss
На картинке представлена архитектура решения, реализованная в проекте по расширению NSS aToken.
Спецификация | NSS c использованием PKCS#11-токенов, программных и аппаратных |
Платформы | Семейство Windows, GNULinux, OS X, iOS, Android |
Алгоритмы и криптографические протоколы | ЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO, TLS |
Интеграция с PKI | X.509, PKCS#10, CMS, CRL |
Механизмы ЭЦП | Вызов из JavaScript встроенных в браузер функций |
TLS-ГОСТ | Встроен в библиотеку и поддерживается браузером |
Форматы защищенных сообщений | PKCS#7, CMS |
Интеграция с браузером | 100% |
Мобильные платформы | iOS, Android |
Хранилища ключей | Браузерное хранилище, USB-токены |
Взаимодействие с USB-токенами | Хранилище ключей и сертификатов Использование аппаратной реализации алгоритмов |
Инсталляция | Программа установки, в целом, не требуются права системного администратор Portable. Например, запуск браузера с FLASH-памяти USB-токена |
Примеры (ГОСТ) | Mozilla FireFox, Chromium от Лисси Проект atoken от R-Альфа (Mozilla FireFox) КриптоFox (PKCS11-токен на базе КриптоПро CSP) |
Проблемы:
Плюсы:
Настольные криптографические приложения
Класс приложений, которые предоставляют законченный оконный пользовательский интерфейс для проведения клиентских криптоопераций. Как правило, используют некоторое СКЗИ в качестве криптоядра.
Операции:
Примеры:
Облачная подпись
Концепция облачной подпись предполагает хранение закрытого ключа и выполнение процедуры подписи/шифрования данных непосредственно на сервере.
Для безопасного применения облачной подписи требуется решить задачу строгой аутентификации клиента при доступе к его закрытому ключу и задачу надежного хранения закрытого ключа на сервере. Примером подобного решения может служить КриптоПро DSS, который в качестве одного из вариантов аутентификации поддерживает Рутокен WEB (строгая двухфакторная аутентификация), а для хранения закрытого ключа использует HSM.
Отдельные библиотеки
BouncyCastle — это open source библиотека, в которой реализована своя система криптографических классов для платформы Microsoft.NET. В библиотеке поддерживаются как базовые криптографические алгоритмы ГОСТ 28147-89, ГОСТ Р 34.10-2001, ГОСТ Р 34.11-94, так и криптографические форматы PKCS#7/CMS, PKCS#10, X.
Отдельные браузеры с российской криптографией
Браузеры, созданные на базе open source проектов Mozilla FireFox и Chromium, используют в качестве криптоядра NSS или OpenSSL. OpenSSL поддерживает российские криптоалгоритмы. Для NSS также существуют разработки, которые обеспечивают поддержку российских криптоалгоритмов. Некоторое время назад на рынке появились полнофункциональные браузеры с поддержкой российской криптографии.
Подобное решение обладает большим, на данный момент невостребованным, потенциалом, так как позволяет создавать защищенные стандартные WEB-клиенты для систем с высокими требованиями к безопасности. Еще одним плюсом подобного браузера является его «портабельность».
С учетом существования USB-токенов с защищенной FLASH-памятью созданы безопасные решения, в котором наиболее критические операции с закрытом ключом осуществляются на «борту» USB-токена, а сам браузер хранится в его защищенной от модификации FLASH-памяти. Подобное решение кроме высокого уровня безопасности является очень удобным в применении.
Подключение к csp
Через эту же веб-форму можно напрямую подписывать и зашифровывать документы, проверять данные и т.д., но, если вам нужно использовать ключи во внешних приложениях, нужно зарегистрировать эти сертификаты в CSP. Самый простой способ — воспользоваться утилитой CryptoPro Tools (Инструменты КриптоПро), входящей в состав КриптоПро CSP 5.0.
Запускаем её из меню Пуск и выбираем пункт «Облачный провайдер»:
В появившемся окне вбиваем адреса используемых сервисов авторизации и доступа к DSS. Для тестового сервиса пользуемся адресами по умолчанию.
Нажимаем кнопку «Установить сертификаты». Если вы правильно указали адреса, должно появиться браузерное окно аутентификации на DSS. Вводим учетные данные, указанные при регистрации:
В процессе установки сертификатов с сервера будут скачаны и установлены цепочки сертификатов, что может приводить к окнам с предупреждениями:
Если все настроено корректно, приложение сообщит об успешной установке сертификатов и их можно будет просмотреть на вкладке «Контейнеры» или в любом приложении, использующем CryptoAPI:
Расширения классов
В платформе существует набор криптографических классов, в которых предусмотрены механизмы расширения сторонними алгоритмами. Наиболее известным на рынке решением по расширению платформы Microsoft.NET российскими криптоалгоритмами является продукт КриптоПро. NET, представляющий собой надстройку над КриптоПро CSP.
Установка КриптоПро.NET позволяет использовать российские криптоалгоритмы, например,
в WEB-сервисах на базе ASP.NET, SOAP-сервисах, в клиентских браузерных приложениях MS.Silverlight.
Платформы | Microsoft.NET 2.0 и старше |
Алгоритмы и криптографические протоколы | ЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO, TLS, SOAP |
Интеграция с PKI | X.509, PKCS#10, CMS, CRL |
Механизмы ЭЦП | Набор классов. Есть полностью “управляемые” реализации. Есть реализации на базе Crypto API 2.0 и CNG |
Механизмы аутентификации | клиентская аутентификация в рамках TLS аутентификация в SOAP-сервисах собственные механизмы аутентификации на базе ЭЦП случайных данных |
TLS-ГОСТ | Встраивание |
Форматы защищенных сообщений | PKCS#7, CMS, XMLSec, SOAP (OASIS Standard 200401), S/MIME |
Интеграция с браузером | ЭЦП и шифрование через MS Silverlight |
Хранилища ключей | Реестр, UBS-токены |
Взаимодействие с USB-токенами | Хранилище ключей и сертификатов Использование аппаратной реализации алгоритмов Через Crypto API 2.0 |
Приложения | Microsoft Lync 2022, Microsoft Office Forms Server 2007 и Microsoft SharePoint 2022, Microsoft XPS Viewer |
Инсталляция | Microsoft. NET включен в состав Windows, начиная с Windows Vista. Поддержка российских криптоалгоритмов требует установки дополнительного ПО |
Примеры (ГОСТ) | КриптоПро. NET (на базе КриптоПро CSP) |
Создание запроса через dss
Второй путь получения сертификата — это создание запроса на УЦ, который непосредственно подключен к DSS.
Нажимаем «Создать запрос на сертификат», вводим данные (обязательно только поле CN) и создаём запрос. Во всплывающем окне ПИН-код можно оставить пустым.
Выпущенный сертификат сразу попадает в список и также доступен для просмотра.
Создание тестового пользователя
Первым делом, заведем пользователя на тестовом сервере. Для этого зайдем в его веб-интерфейс и нажмем кнопку «Регистрация»:
Заполним форму регистрации и подтвердим создание пользователя:
После регистрации мы попадаем на основной экран пользователя, где перечислены сертификаты, соответствующие хранящимся на сервере закрытым ключам. У нового пользователя, разумеется, сертификатов нет. Есть два пути, как их добавить: скопировать существующий контейнер и создать новый. Рассмотрим оба.
Средства формирования доверенной среды
Проблема формирования доверенной среды для выполнения криптоопераций, в частности ЭЦП, является отдельной большой темой. В данной статье не планируется ее подробно рассматривать, но хочется отметить, что концептуально разработчики идут следующими путями:
На последнем способе формирования ДС хотелось бы остановиться подробнее.
Компанией «Код безопасности» предложен интересный продукт Jinn, который позволяет эмулировать доверенную среду как на многоядерном, так и на одноядерном компьютере. Основной идеей данного решения является то, что доверенная среда выполняется на логических ядрах, на которых не выполняется сама клиентская ОС.
Для случая многоядерного компьютера доверенная среда функционирует на 2 ядрах, на остальных ядрах функционирует клиентская ОС. Доверенная среда загружается перед загрузкой клиентской ОС либо с флешки, либо с электронного замка Соболь. Решение гарантирует, что клиентская ОС (а следовательно и потенциальное вредоносное ПО) не управляет поведением доверенной среды.
По сути, в решении две ОС разнесены по различным ядрам одного компьютера и между ними настроен канал передачи данных. При этом одна из ОС (доверенная среда), спроектирована таким образом, что варианты ее заражения минимизированы и ее функционал служит исключительно цели безопасной визуализации данных и их пописи.
Для доступа к доверенной среде из клиентской ОС используется специальная библиотека (COM-объект). При подписи платежки через данную библиотеку Jinn перехватывает управление графическим адаптером и визуализирует на нем платежку. Если представленная информация верна, то после подтверждения пользователя Jinn подписывает платежку и возвращает управление клиентской ОС.