Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 16 марта 2019 года; проверки требуют 5 правок.
Криптопровайдер (Cryptography Service Provider, CSP) — это независимый модуль, позволяющий осуществлять криптографические операции в операционных системах Microsoft, управление которым происходит с помощью функций CryptoAPI. Проще говоря, это посредник между операционной системой, которая может управлять им с помощью стандартных функций CryptoAPI, и исполнителем криптографических операций (это может быть как программа, так и аппаратный комплекс).
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 1 марта 2023 года; проверки требуют 2 правки.
КриптоПро — разработанная одноименной компанией линейка криптографических утилит (вспомогательных программ) — так называемых криптопровайдеров. Они используются в других программах для генерации электронной подписи (ЭП), работы с сертификатами, организации структуры PKI и т.д.
Для цифровой подписи электронных документов и обмена бланками необходим криптопровайдер. Он шифрует и защищает информацию, хранит секретные ключи — вот что такое КриптоПро. Вот для чего вам необходимо это ПО:
На хабре довольно мало информации о Microsoft CryptoApi и нет упоминания о наших отечественных разработчиках, которые имеют лицензии в области шифрования информации, реализуют интерфейс CryptoApi и позволяют шифровать данные с использованием, например, ГОСТ 28147-89. Так что, если возникла необходимость зашифровать и передать данные, и сделать это с использованием отечественных стандартов, то вовсе необязательно изобретать велосипед, а можно воспользоваться криптопровайдером VipNet CSP.
- Вкратце о Microsoft CryptoApi
- ViPNet CSP
- Пример использования
- Назначение КриптоПро CSP
- Поддерживаемые технологии хранения ключей
- Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
- Классические пассивные USB-токены и смарт-карты
- Инструменты КриптоПро
- Поддерживаемое программное обеспечение
- Интеграция с платформой КриптоПро
- Операционные системы и аппаратные платформы
- Интерфейсы для встраивания
- Производительность на любой вкус
- Регулирующие документы
- PKCS#11
- NSS
- Библиотеки c собственным интерфейсом
- Криптопровайдеры
- Features
- Поддержка КриптоПро различными платформами
- Кроссбраузерные плагины
- ActiveX
- Certificates
- Integration
- Portability
- Implementation of CryptoPro CSP
- Implementation at the Crypto API 2. 0 Level
- Implementation at the CSP Level
- Использование Com-интерфейсов
- Контроль регистрации сертификатов
- КАПИКОМ 2
- Сертификационные услуги
- Примеры применения средств криптографической безопасности
- Средства криптографической защиты информации
- Инфраструктура открытых ключей
- Криптографические решения. От криптопровайдеров до браузерных плагинов
Вкратце о Microsoft CryptoApi
Итак, CryptoAPI это — интерфейс программирования приложений, который обеспечивает разработчиков Windows-приложений стандартным набором функций для работы с криптопровайдером. Входит в состав операционных систем Microsoft. Большинство функций CryptoAPI поддерживается начиная с Windows 2000.
CryptoAPI поддерживает работу с асимметричными и симметричными ключами, то есть позволяет шифровать и расшифровывать данные, а также работать с электронными сертификатами. Набор поддерживаемых криптографических алгоритмов зависит от конкретного криптопровайдера.
Реализация всех алгоритмов (шифрования, цифровой подписи и т.п.) полностью выведена из состава самого Crypto API и реализуется в отдельных, независимых динамических библиотеках – «криптопровайдерах» (Cryptographic Service Provider – CSP). Сам же Crypto API просто предъявляет определенные требования к набору функций (интерфейсу) криптопровайдера и предоставляет конечному пользователю интерфейс работы с CSP. Для использования всех функций криптопровайдера достаточно знать его строковое имя и номер типа.
ViPNet CSP
VipNet CSP – это программный комплекс, который реализует интерфейс Microsoft CryptoApi.
ViPNet CSP обеспечивает выполнение следующих функций:
Совместимость
ViPNet CSP функционирует под управлением ОС Windows 2000 (32 бит)/XP (32 бит)/Server 2003 (32 бит)/Vista (32 бит) /Windows 7 (32/64 бит).
К сожалению VipNet CSP – это платный продукт, но на сайте есть бета-версии, которые отлично функционируют.
Пример использования
Итак, мы инсталлировали криптопровайдер, можем написать программу, шифрующую данные с использованием ГОСТ 28147-89. В скачиваемом пакете (архиве) есть папка «ViPNet CSP SDK (для разработчиков)», найдем там заголовочный файл importitccsp.h, в нем объявлены необходимые нам константы. Смотрим пример:
HCRYPTPROV hProv;
HCRYPTKEY hSessionKey;
// Тестовый вывод на экран
printf(«Encrypted string: %s», data);
// Тестовый вывод на экран
printf(«Decrypted string: %s», data);
// Освобождение контекста локальных переменных
CryptDestroyKey(hSessionKey);
CryptReleaseContext(hProv, 0);
Шифрование данных и расшифрование их на другом компьютере — тема отдельной статьи.
Спасибо за внимание.
КриптоПро CSP 5.0 — новое поколение криптопровайдера, развивающее три основные продуктовые линейки компании КриптоПро: КриптоПро CSP (классические токены и другие пассивные хранилища секретных ключей), КриптоПро ФКН CSP/Рутокен CSP (неизвлекаемыe ключи на токенах с защищенным обменом сообщениями) и КриптоПро DSS (ключи в облаке).
Все преимущества продуктов этих линеек не только сохраняются, но и приумножаются в КриптоПро CSP 5.0: шире список поддерживаемых платформ и алгоритмов, выше быстродействие, удобнее пользовательский интерфейс. Но главное — работа со всеми ключевыми носителями, включая ключи в облаке, теперь единообразна. Для перевода прикладной системы, в которой работал КриптоПро CSP любой из версий, на поддержку ключей в облаке или на новые носители с неизвлекаемыми ключами, не потребуется какая-либо переработка ПО — интерфейс доступа остаётся единым, и работа с ключом в облаке будет происходить точно таким же образом, как и с классическим ключевым носителем.
Назначение КриптоПро CSP
В КриптоПро CSP 5.0 наряду с российскими реализованы зарубежные криптографические алгоритмы. Теперь пользователи имеют возможность использовать привычные носители ключей для хранения секретных ключей RSA и ECDSA.
Таблица алгоритмов, поддерживаемых разными версиями КриптоПро CSP.
Поддерживаемые технологии хранения ключей
В криптопровайдере КриптоПро CSP 5.0 впервые появилась возможность использования ключей, хранящихся на облачном сервисе КриптоПро DSS, через интерфейс CryptoAPI. Теперь ключи, хранимые в облаке, могут быть легко использованы как любыми пользовательскими приложениями, так и большинством приложений компании Microsoft.
Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
В КриптоПро CSP 5.0 добавлена поддержка носителей с неизвлекаемыми ключами, реализующих протокол SESPAKE, позволяющий провести аутентификацию, не передавая в отрытом виде пароль пользователя, и установить шифрованный канал для обмена сообщений между криптопровайдером и носителем. Нарушитель, находящийся в канале между носителем и приложением пользователя, не может ни украсть пароль при аутентификации, ни подменить подписываемые данные. При использовании подобных носителей полностью решается проблема безопасной работы с неизвлекаемыми ключами.
Компании Актив, ИнфоКрипт и СмартПарк разработали новые защищенные токены, которые поддерживают данный протокол.
Многие пользователи хотят иметь возможность работать с неизвлекаемыми ключами, но при этом не обновлять токены до уровня ФКН. Специально для них в провайдер добавлена поддержка популярных ключевых носителей Рутокен ЭЦП 2.0, JaCarta-2 ГОСТ и InfoCrypt VPN-Key-TLS.
Классические пассивные USB-токены и смарт-карты
Большинство пользователей предпочитает быстрые, дешевые и удобные решения для хранения ключей. Как правило, предпочтение отдаётся токенам и смарт-картам без криптографических сопроцессоров. Как и в предыдущих версиях провайдера, в КриптоПро CSP 5.0 сохранена поддержка всех совместимых носителей производства компаний Актив, Аладдин Р. Д., Gemalto/SafeNet, Multisoft, NovaCard, Rosan, Alioth, MorphoKST и СмартПарк.
Кроме того, конечно, как и раньше поддерживаются способы хранения ключей в реестре Windows, на жестком диске, на флеш-накопителях на всех платформах.
Список производителей и моделей поддерживаемых КриптоПро CSP 5.0 R2
Инструменты КриптоПро
В составе КриптоПро CSP 5.0 появилось кроссплатформенное (Windows/Linux/macOS) графическое приложение — «Инструменты КриптоПро» («CryptoPro Tools»).
Основная идея — предоставить возможность пользователям удобно решать типичные задачи. Все основные функции доступны в простом интерфейсе — при этом мы реализовали и режим для опытных пользователей, открывающий дополнительные возможности.
С помощью Инструментов КриптоПро решаются задачи управления контейнерами, смарт-картами и настройками криптопровайдеров, а также мы добавили возможность создания и проверки электронной подписи PKCS#7.
Поддерживаемое программное обеспечение
КриптоПро CSP позволяет быстро и безопасно использовать российские криптографические алгоритмы в следующих стандартных приложениях:
Интеграция с платформой КриптоПро
С первого же релиза обеспечивается поддержка и совместимость со всеми нашими продуктами:
Операционные системы и аппаратные платформы
Традиционно мы работаем в непревзойдённо широком спектре систем:
Таблица операционных систем, поддерживаемых разными версиями КриптоПро CSP.
Классификация операционных систем для использования КриптоПро CSP c лицензией на рабочее место и сервер.
Интерфейсы для встраивания
Для встраивания в приложения на всех платформах КриптоПро CSP доступен через стандартные интерфейсы для криптографических средств:
Производительность на любой вкус
Многолетний опыт разработки позволяет нам охватить все решения от миниатюрных ARM-плат, таких как Raspberry PI, до многопроцессорных серверов на базе Intel Xeon, AMD EPYC и PowerPC, отлично масштабируя производительность.
Регулирующие документы
Open Source библиотека OpenSSL обладает широкими криптографическими возможностями и удобным механизмом ее расширения другими криптоалгоритмами. OpenSSL является основным криптоядром для широкого спектра приложений Open Source.
После того, как в эту библиотеку компанией Криптоком были добавлены ГОСТы, появились патчи для «гостификации» многих популярных приложения, использующих OpenSSL. На базе OpenSSL некоторые вендоры разработали и сертифицировали СКЗИ, кроме того в ряд продуктов OpenSSL входит «неявным» образом.

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 интерфейс умеют работать приложения, написанные на на базе CryptoAPI, NSS, OpenSSL.
Пример совместимости приложений приведен на схеме. Таким образом, возможно использование подходящего приложения в соответствующем месте инфосистемы.

PKCS#11 бывают также без поддержки аппаратных устройств с программной реализацией криптоалгоритмов и хранением объектов в файловой системе.
Примеры – PKCS#11 интегрированный в NSS (Mozilla), проект aToken, библиотека Агава-Про.
У компании Крипто-Про есть библиотека PKCS#11, реализованная на базе MS CryptoAPI:
Существуют PKCS#11-библиотеки для мобильных платоформ. Примером подобной библиотеки служит библиотека для Рутокен ЭЦП Bluetooth, которая позволяет использовать устройство на iOS и Android.
NSS
NSS представляет собой криптографическую библиотеку от сообщества Mozilla. N SS используется такими приложениями, как браузер Mozilla Firefox, почтовым клиентом Mozilla Thunderbird.
В данный момент существуют два проекта по «гостификации» NSS:
Библиотеки c собственным интерфейсом
Проприетарные библиотеки предоставляют собственный API для встраивания в приложения. В данный список можно внести:
Криптопровайдеры
Де-факто стандартом отрасли является класс криптосредств, известных как криптопровайдеры. Криптопровайдер — это предоставляющая специальный API и специальным образом зарегистрированная в ОС библиотека, которая позволяет расширить список поддерживаемых в ОС криптоалгоритмов.
Следует отметить, что несовершенство предлагаемых MS Windows механизмов расширения вынуждает разработчиков криптопровайдеров дополнительно модифицировать высокоуровневые криптобиблиотеки и приложения MS Windows в процессе их выполнения для того, чтобы «научить» их использовать российские криптоалгоритмы.
Следует понимать, что не все СКЗИ одного вида реализуют полный объем функциональности, приведенный в таблицах. Для уточнения возможностей криптосредств следуют обратиться к производителю.

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

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

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

В следующих статьях будут подробно рассмотрены оставшиеся решения.
Во все операционные системы Microsoft, начиная с Windows 2000, встроен криптопровайдер Microsoft Base Cryptographic Provider, который обладает набором основных криптографических функций. В Microsoft Base Cryptographic Provider длина ключей шифрования не превышает 40 бит. Так как до января 2000 года в США существовал запрет на экспорт программного обеспечения для шифрования с использованием ключей длиной более 40 бит, то в Windows 98 и ранних версиях Windows 2000 существовала поддержка только этого криптопровайдера. Microsoft Base Cryptographic Provider по сути является урезанным вариантом Microsoft Enhanced Cryptographic Provider. Но после отмены запрета на экспорт стало бессмысленно иметь 2 криптопровайдера, поэтому программисты Microsoft ввели ещё одно название — Microsoft Strong Cryptographic Provider, который ничем не отличается от Microsoft Enhanced Cryptographic Provider. Этот криптопровайдер является криптопровайдером по умолчанию типа PROV_RSA_FULL в Windows 2000, Windows XP, Windows 2003.
Все криптопровайдеры Microsoft могут быть скачаны с сайта Microsoft.
Certificates
CryptoPro CSP has a Federal Security Service certificate of conformance.
Integration
The integration of the CryptoPro CSP with MS Windows operating system allows the use of standard products.
The accordance with the Microsoft CSP interface allows for easy integration into applications by different vendors, which support this interface.
Support for digitally signed XML documents using XMLdsig for Windows (MSXML5, MSXML6) allows for the use of Russian cryptographic algorithms in the Microsoft Office InfoPath — a component system of Microsoft Office.
Portability
For easy and portable integration of cryptographic functions on the Unix platforms, the program interface similar to the Microsoft CryptoAPI 2.0 specifications is provided. This interface allows for the use of the high-level functions to create cryptographic messages (encryption, digital signature), building and verifying the chain of certificates, generating keys and processing the messages and certificates.
Implementation of CryptoPro CSP
The hierarchical architecture of the Cryptographic Functions in the Windows Operating System allows for the use of the Russian cryptographic algorithms implemented in CryptoPro CSP at all possible levels.
Implementation at the Crypto API 2. 0 Level
Implementation at the Crypto API 2.0 level provides the ability to use a wide range of functions which solve most problems related to the presentation (formats) of various cryptographic communications (signed, encrypted) by means of the presentation of public keys as digital certificates and by means of the storage and retrieval of certificates in various directories including LDAP.
The functions of CryptoPro CSP allow for the full implementation of presentation and exchange of data in compliance with international recommendations and the Public Key Infrastructure.
Implementation at the CSP Level
CryptoPro CSP can be used directly in an application program by loading the module using the Load Library function. With this in mind the package includes a Programmer’s Manual describing the various sets of functions and the test software. При таком типе реализации программному обеспечению доступен только ограниченный набор криптографических функций низкого уровня, соответствующих интерфейсу Microsoft CSP.
Использование Com-интерфейсов
КриптоПро можно использовать с COM-интерфейсами, разработанными Microsoft.
Контроль регистрации сертификатов
COM-интерфейс Certificate Enrollment Control (реализован в файле xenroll.dll) предназначен для использования ограниченного количества функций Crypto API 2.0, связанных с генерацией ключей, запросами сертификатов и обработкой сертификатов, полученных от Удостоверяющего центра. с использованием языков программирования Visual Basic, C++, Java Script, VBScript и среды разработки Delphi.
КАПИКОМ 2
CAPICOM (реализованный в файле capicom.dll) предлагает COM-интерфейс, который использует основные функции CryptoAPI 2.0. Этот компонент является расширением существующего интерфейса управления регистрацией сертификатов COM (xenroll.dll), который реализуется клиентскими функциями, отвечающими за генерацию ключей, запросы сертификатов и обмен данными с центром сертификации.
С выпуском этого компонента стало возможным использование функций генерации и проверки цифровой подписи, функций, отвечающих за построение и проверку последовательностей сертификатов, и функций, отвечающих за взаимодействие с различными каталогами (включая Active Directory) с помощью Visual Basic, C++, JavaScript, VBScript и среда разработки Delphi стали возможными. С помощью CAPICOM можно реализовать работу «тонкого» клиента в интерфейсе браузера Internet Explorer.
Компонент CAPICOM является бесплатным и входит в состав распространяемого набора инструментов разработчика Micrsoft Platform SDK.
Более подробная информация об интерфейсе CAPICOM доступна на сервере https://www.cryptopro.ru/products/csp/usage. Дистрибутив интерфейса и примеры приложений доступны на компакт-диске в каталоге «REDISTRCAPICOM 2.0»
.
Сертификационные услуги
Помимо использования в интерфейсе Internet Explorer, протокол TLS также может использоваться прикладным программным обеспечением вместе с КриптоПро CSP для аутентификации и защиты данных, передаваемых по собственным частным протоколам на основе TCP/IP и HTTPS.
Для реализации протокола TLS примеры реализации WebClient и WebServer включены в набор примеров, поставляемый вместе с SDK платформы.
Примеры применения средств криптографической безопасности
Тестовое программное обеспечение, включая примеры вызовов основных функций Crypto API 2.0, поставляется вместе с CryptoPro CSP. Эти образцы находятся в каталоге («SAMPLEScsptest»). Большое количество примеров приложений функций Crypto API 2.0, CAPICOM и служб сертификации предлагается в документации Microsoft и в наборе инструментов разработчика Platform SDK.
На сервере КриптоПро (https://www.cryptopro.ru/forum2/) проводится конференция по вопросам использования криптографических функций и сертификатов открытых ключей.
КриптоПро CSP делает возможным использование надежных, сертифицированных криптографических средств защиты информации в составе широкого спектра средств и программного обеспечения корпорации Microsoft для реализации безопасного документооборота и электронной коммерции на основе Public-Key. инфраструктуры и в соответствии с международными рекомендациями X.509.
Средства криптографической защиты информации
- КриптоПро CSP 1.1
- КриптоПро CSP 3.6
- КриптоПро CSP 3.9
Средства криптографической защиты информации со смарт-картами и USB-ключами
Инфраструктура открытых ключей
КриптоПро CSP — криптографический программный комплекс, реализующий российские криптографические алгоритмы, разработанные в соответствии с интерфейсом Microsoft — Cryptographic Service Provider (CSP).
Пары ключей и симметричные ключи могут храниться только в контейнере. Только пара открытых ключей может находиться вне контейнера.
Закрытые (частные) ключи паровые ключи экспортируются только в зашифрованном виде. Некоторые криптопровайдеры принципиально не позволяют экспортировать закрытые ключи, даже в зашифрованном виде.
Симметричные ключи при экспорте также обязательно шифруются при открытом получателе ключа или согласовании ключа.
Для расчета хеш-функций объектов хеширования. Для создания объектов хеширования создавать контейнер не нужно.
Криптографические решения. От криптопровайдеров до браузерных плагинов
Время на прочтение
Производители средств криптографической защиты информации (СКЗИ) предлагают различные механизмы для интеграции криптосредств в информационные системы. Существуют решения, ориентированные на поддержку систем с Web-интерфейсом, мобильных и десктопных приложений, серверных компонентов. С КЗИ интегрируются в приложения Microsoft и в продукты Open Source, обеспечивают поддержку различных прикладных протоколов и форматов электронной подписи.
С учетом растущего количества проектов с применением ЭЦП и появления массовых проектов для физических лиц, разработчикам подобных проектов требуется хорошо ориентироваться в предлагаемых производителями решениях по ЭЦП для того, чтобы сделать систему удобной в эксплуатации и недорогой в плане техподдержки. Таким образом, если еще лет 5 назад главным фактором выбора криптосредства являлось его полное соответствие требованиям регуляторов, то при сегодняшнем разнообразии важными критериями могут выступать охват поддерживаемых платформ, возможность интеграции с браузером, поддержка мобильных пользователей, возможность установки без прав системного администратора и т.п.
В данном материале сделана попытка классифицировать средства криптографической защиты информации.
Классификация построена на основе:
Кроме того, показаны способы интеграции СКЗИ с Web-приложениями и возможность его использования на мобильных платформах
Общая схема классификации приведена в таблице:
В первой статье рассмотрим решения, начиная с криптопровайдеров по браузерные плагины включительно. В последующих статьях будут рассмотрены остальные средства.
Любой криптопровайдер должен экспортировать набор обязательных функций, которые формируют системный программный интерфейс CryptoAPI, при этом каждая из этих функций соответствует некоторой функции CryptoAPI. Также криптопровайдер должен обеспечивать:
Приложения не работают напрямую с криптопровайдером. Вместо этого они вызывают функции CryptoAPI из библиотек Advapi32.dll и Crypt32.dll. Операционная система фильтрует вызовы этих функций и вызывает соответствующие функции CryptoAPI, которые непосредственно работают с криптопровайдером.
Минимальный состав криптопровайдера — одна DLL. Обычно эта библиотека хранится в папке WINDOWSsystem32. Обязательным является контроль целостности этой DLL.
Кроме стандартных функций CryptoAPI, криптопровайдер обычно поддерживает ряд собственных функций. Если собственные функции не реализованы, то DLL действует, по сути, как промежуточный слой между операционной системой и исполнителем криптографических операций.
