Это не приложение, не библиотека и не часть операционной системы. Это просто описание интерфейса встраивания. Если производитель устройства хочет, чтобы его устройство встроили в какое-то приложение, использующее PKCS#11, он должен разработать собственную динамическую библиотеку (.dll на Windows или .so на Linux), которая будет реализовывать указанный интерфейс.
Тогда всё, что останется сделать прикладному приложению, - указать правильный путь до переданной библиотеки и использовать её в соответствии с известными спецификациями PKCS#11.
По сути, описанная схема встраивания и использования PKCS#11 полностью аналогична тому, как используется интерфейс CryptoAPI, с помощью которого приложения используют криптопровайдеры.
Главный вывод, который следует из вышеуказанного, - для работы с ключевым носителем через PKCS#11 первым делом нужно установить PKCS#11-библиотеку конкретного производителя:
доступен установщик КриптоПро CSP 5.0 R2 для Windows, включающий в себя pkcs#11 модули компаний Актив, Аладдин Р.Д. и ISBC
Первая сертифицированная версия КриптоПро CSP 5.0 умеет работать с неизвлекаемыми ключами на всех поддерживаемых токенах (прежде всего, Рутокен ЭЦП 2.0, JaCarta-2 ГОСТ и ESMART Token ГОСТ) напрямую. Производители токенов разработали специальные библиотеки (модули поддержки), которые оптимально формировали последовательности команд для выполнения операций.
У такого подхода есть плюсы:
Несмотря на значительный набор достоинств у данного подхода есть и ряд недостатков:
Взвесив все плюсы и минусы существующего подхода, мы приняли решение начать перевод поддержки носителей с неизвлекаемыми ключами с интерфейса READER на PKCS#11.
Нами был написан модуль поддержки Cryptoki (cryptoki.dll, cprocsp-rdr-cryptoki), который отображает интерфейс READER в PKCS#11. Поскольку этот релиз является первым с данной опцией, он обладает рядом особенностей:
Рутокен
cpconfig -ini '\config\parameters' -add long EnableNativeTokenCryptMode 1
JaCarta и ESMART
Панель управления - КриптоПро CSP - Оборудование - Настроить считыватели - Считыватель смарт-карт PKCS#11 - Удалить - Добавить - Считыватель смарт-карт PKCS#11.
Рекомендуем отмечать галочками только те носители, которые вы действительно планируете использовать на данной рабочей станции, иначе в системном журнале будут множество ошибок загрузки библиотек:
Создание ключей и имя считывателя
Для создания ключей через PKCS#11-библиотеку в списке носителей нужно выбирать носитель с именем, содержащим PKCS#11.
Например:
Имя считывателя для PKCS#11-режима, которое используется в формате FQCN, отличается от стандартного. В перечислении оно начинается с PKCS11:
Winlogon, Распространение сертификата и RDP
К сожалению, изменение имени считывателя (добавление нового) сказалось на поддержке стандартных системных служб криптографии Windows.
Поддержка иных библиотек PKCS#11
Технически вы можете подключить любую другую библиотеку PKCS#11. Если она следует стандарту и его расширениям от ТК26, то, скорее всего, её поддержка заработает «из коробки». Подобное подключение будет соответствовать правилам использования КриптоПро CSP только при использовании ключевых носителей из Формуляра CSP.
Добавить можно в свойствах считывателя PKCS#11: Панель управления - КриптоПро CSP - Оборудование - Настроить считыватели - Считыватель смарт-карт PKCS#11 - Свойства - Настройки:
Обратите внимание, что на данной вкладке обязательно указывать путь только до 64-разрядной библиотеки. Если она будет находиться в стандартной системной директории System32, то 32-разрядная библиотека будет автоматически загружаться из директории SysWOW64.
Если же вы тестируете библиотеки, не установленные в системный стандартный путь, рекомендуем прописать путь до обеих библиотек.
Несколько важных замечаний, на которые нужно обратить внимание: