Инфраструктура и автоматизация
Создано 11.10.2026
Обновлено 11.10.2026
Криптопровайдер помогает приложению использовать закрытый ключ. Разберём его роль в создании подписи документа и отличия от сертификата, контейнера и токена.
Криптопровайдер — программный компонент, через который приложение выполняет криптографические операции. Например, создаёт подпись закрытым ключом, проверяет подпись или шифрует данные. Он реализует нужные алгоритмы либо обращается к устройству, которое выполняет операцию. Конкретные возможности зависят от реализации.
Сертификат сообщает, с кем связан открытый ключ. Закрытый ключ позволяет создать подпись. Криптопровайдер помогает приложению воспользоваться этим ключом. Поэтому установленный сертификат ещё не означает, что документ можно подписать: нужный ключ может находиться на отключённом токене, быть недоступен пользователю или не поддерживаться приложением.
На условном примере подписи документа разберём, где находятся эти объекты, кто выполняет операцию и почему криптопровайдер, контейнер ключа и токен выполняют разные задачи.
Сотрудница открывает договор в программе и выбирает «Подписать». В списке есть её сертификат. Для завершения операции программе нужны доступ к соответствующему закрытому ключу и поддержка алгоритма подписи. Это условный пример устройства механизма, а не инструкция для конкретного продукта.
Открытый и закрытый ключи математически связаны. Закрытым создают подпись, открытым проверяют. Сертификат содержит открытый ключ и сведения о субъекте; закрытого ключа внутри него нет.
| Объект | Что делает в нашем примере |
|---|---|
| Приложение | Выбирает документ и сертификат, запрашивает операцию, формирует результат в нужном формате. |
| Сертификат | Позволяет получить открытый ключ и удостоверенные издателем сведения. Сам документ не подписывает. |
| Закрытый ключ | Используется для создания подписи; должен оставаться под защитой владельца. |
| Криптопровайдер | Предоставляет приложению криптографические операции и, в зависимости от реализации, доступ к ключу. |
| Носитель или хранилище | Сохраняет ключ. Некоторые устройства также выполняют операцию внутри себя. |
Программа может обращаться к провайдеру через интерфейс операционной системы, а может использовать криптографическую библиотеку. Поэтому отдельная устанавливаемая программа с названием «криптопровайдер» нужна не в каждом сценарии.
В сертификате находится открытый ключ, связанный с отдельным закрытым ключом. Приложение выбирает сертификат и запрашивает подпись, а провайдер обеспечивает использование нужного закрытого ключа. Провайдер организует операцию с ключом; её выполнение может происходить в программе или внутри устройства. Пунктир обозначает математическую связь ключей, а не передачу секрета.
В нашем примере ключ создан внутри криптографического токена и недоступен для экспорта. Токен поддерживает нужный алгоритм, а программа умеет работать с ним через установленное программное обеспечение.
Программа для работы с документами и криптопровайдер выполняют разные части процесса. Поддержка алгоритма ещё не означает поддержку конкретного формата подписанного PDF или пакета документов.
Получатель получает документ и подпись — внутри документа или отдельно. Для проверки ему нужен соответствующий открытый ключ; обычно его получают из сертификата подписавшего. Закрытый ключ передавать получателю не требуется.
Проверяющая программа определяет подписанные данные по правилам формата и проверяет подпись открытым ключом. Если подписанные данные изменены, проверка не пройдёт. Затем отдельно оцениваются доверие к сертификату, допустимость его использования и требования принимающей системы. Поэтому «подпись создана» и «получатель принял документ» — разные результаты. Процедура проверки подписи в формате CMS описана в RFC 5652 .
Показан вариант, в котором хеширование выполняется до обращения к токену, а подпись — внутри токена. В других механизмах токен может получать данные для хеширования. PIN вводят, если этого требуют условия доступа. Наружу возвращается результат операции, а не закрытый ключ.
Хранилище сертификатов показывает сертификаты и может хранить ссылку на соответствующий ключ. Сам закрытый ключ обслуживается отдельным механизмом. В Windows и macOS название раздела со списком сертификатов не определяет место выполнения подписи.
Ключевой контейнер — организованное хранилище ключевых данных и связанных служебных сведений. Его состав и способ хранения определяет конкретная система. Это может быть набор файлов, объект программного хранилища или данные на носителе. Контейнер не обязательно является одним файлом и не обязательно содержит сертификат.
Файл PFX/P12 в формате PKCS#12 — отдельный случай: он может объединять сертификаты и закрытый ключ для переноса. Не всякий контейнер можно экспортировать в PFX. О составе такого файла подробнее сказано в объяснении сертификата и ключей.
Пассивный носитель хранит ключевые данные; криптографическую операцию выполняет программа на компьютере. Криптографический токен способен выполнить операцию внутри устройства. Возможность извлечь ключ зависит от модели, настроек и режима работы, а не только от слова «токен» на упаковке. Это различие отражено в документации Рутокен и описании способов хранения ключей КриптоПро CSP .
Неизвлекаемый ключ сложнее скопировать, но это не полная защита от злоупотребления: вредоносная программа может попытаться запросить подпись, пока устройство подключено и доступ разрешён. Значение имеют и подтверждение операции, и защита рабочего места.
Слева операция выполняется на компьютере, справа — внутри криптографического токена. Это два примера размещения операции, а не универсальная оценка безопасности всех программных и аппаратных хранилищ.
CSP и KSP — виды провайдеров, а PKCS#11 — программный интерфейс. Интерфейс определяет, как одна программа обращается к другой; провайдер реализует доступные через него возможности. Эти названия обозначают разные части системы.
В Windows есть две архитектуры криптографических средств: CryptoAPI и более новая CNG (Cryptography API: Next Generation). В них используются разные виды провайдеров. Поддержка одной архитектуры приложением не означает автоматической совместимости с другой.
| Название | Как понимать |
|---|---|
| CSP в Windows CryptoAPI | Cryptographic Service Provider — провайдер криптографических услуг в архитектуре CryptoAPI. Приложение обращается к нему через этот API. |
| KSP в Windows CNG | Key Storage Provider — провайдер хранения ключей. CNG разделяет поставщиков алгоритмов и хранения; KSP также обеспечивает операции с обслуживаемыми ключами. |
| PKCS#11 | Стандартизованный интерфейс работы с криптографическими токенами. Приложение загружает совместимую библиотеку; это не название токена или сертификата. |
Различия CSP и KSP описаны в справочнике Microsoft по CSP и справочнике Microsoft по KSP . Интерфейс токенов определяет спецификация PKCS#11 .
КриптоПро CSP — конкретный криптопровайдер. Его используют, в частности, для операций с российскими алгоритмами ГОСТ. Выбор зависит от требований приложения, ключа, алгоритмов и носителя. Для обычного HTTPS не требуется повсеместно устанавливать КриптоПро.
У OpenSSL тоже есть модель providers : модули предоставляют реализации криптографических функций библиотеке OpenSSL. Это другая архитектура, а не Windows CSP под новым названием.
Драйвер помогает системе взаимодействовать с устройством. Браузерный компонент связывает веб-приложение с доступными на компьютере средствами подписи. Провайдер отвечает за криптографические операции. Как показывает описание браузерного плагина КриптоПро , эти компоненты могут устанавливаться одним пакетом, но наличие одного не доказывает готовность остальных. В документации КриптоАРМ роль провайдера рассматривается отдельно от программы работы с документами.
| Ситуация | От чего зависит результат |
|---|---|
| Установлен только сертификат | Нужен доступ к соответствующему закрытому ключу. Копия открытого сертификата его не заменяет. |
| Ключ есть, но приложение его не находит | Важны связь сертификата с ключом, выбранный интерфейс, совместимость провайдера и область доступа пользователя. |
| Токен подключён, но операция запрещена | Влияют PIN-код, блокировка, права и поддержка нужного механизма устройством. |
| Подпись создана, но документ не принимается | Проверяются формат, подписанные данные, сертификат и правила принимающей системы. Это уже несколько отдельных проверок. |
Издатель выпускает сертификат после своих проверок. Администратор или пользователь настраивает рабочее место и доступ к ключу. Разработчик приложения обеспечивает совместимость интерфейса и формата. Принимающая система проверяет результат по своим правилам. Поэтому сообщение «сертификат установлен» описывает только один этап.
Он может создать ключи и выполнить операции для запроса, но сертификат подписывает центр сертификации. Программный компонент и организация, удостоверяющая связь ключа с субъектом, выполняют разные роли.
Криптографическая проверка устанавливает соответствие подписи данным и открытому ключу. Доверие к сведениям о владельце требует отдельной проверки сертификата и цепочки доверия. Право совершить действие определяет приложение. Юридическое значение также зависит от применимых условий и не возникает только из факта установки программы.
В mTLS клиент доказывает владение закрытым ключом во время соединения. Конкретная программа может использовать системный провайдер, библиотеку или аппаратный модуль. Сертификат должен быть доступен приложению вместе с возможностью выполнить требуемую операцию; одного отображения в системном списке недостаточно.
Основу пары ключей и сертификата раскрывает статья о сертификатах. Причины доверия издателю — разбор цепочки сертификатов. Применение ключа для взаимной аутентификации — объяснение mTLS.
Обсудить проект
Если хотите применить этот материал к вашему проекту, напишите нам. Поможем уточнить вводные, риски и следующий шаг: оценку, discovery, разработку, интеграцию или сопровождение.
Связаться© 2018–2026, ООО «РоботБулл Технолоджи» ИНН 9710065224
ОКВЭД 62.01
Сведения об ИТ-деятельности