ETOKEN BASE CSP

Если при установке личного сертификата с ruToken или eToken в ОС Windows 7 сертификат не устанавливается, воспользуйтесь данной инструкцией.

Пакет драйверов и дополнительных утилит eToken PKI Client 5.1 SP1 является на сегодняшний день наиболее популярным набором, обеспечивающим функционирование контактных смарт-карт
и USB-ключей eToken
в составе различных средств защиты информации
и аутентификации пользователей
.

В данном обзоре приводится пример установки eToken PKI Client 5.1 SP1 на персональном компьютере под управлением операционной системы Microsoft Windows Vista (32-бит). Установка данного пакета на компьютерах, ноутбуках и серверах, функционирующих под управлением других операционных систем, производится аналогичным образом.

Итак, после того, как вы скачали дистрибутив продукта, переходим непосредственно к его установке:

  • Авторизуйтесь в системе с правами Администратора
  • Закройте все открытые программы
  • Запустите идущий в комплекте дистрибутива файл PKIClient_x32_5.1_SP1.msi
  • В открывшемся окне установки нажмите кнопку «Next» (Далее)

Установка eToken PKI Client 5.1 SP1, окно приветствия

  • В выпадающем списке доступных языков интерфейса выбираем необходимый нам язык из предложенного перечня
  • В случае если у вас уже установлена предыдущая версия пакета драйверов, и вы хотите оставить её настройки, то отмечаем флажком «Use existing configuration»
  • Нажимаем кнопку «Next» (Далее) и переходим к окну с лицензионным соглашением

Установка eToken PKI Client 5.1 SP1, выбор языка

  • Внимательно прочитайте данное соглашение и если вы с ним согласны, то отметьте пункт «I accept the license agreement» (Я принимаю условия лицензионного соглашения) и нажмите кнопку «Next» (Далее). В ином случае откажитесь от установки — кнопка «Cancel» (Отмена)

Установка eToken PKI Client 5.1 SP1, лицензионное соглашение

  • Если вы согласились с условиями лицензионного соглашения, то на экране появится окно выбора места установки
  • Выберите кнопкой «Browse» (Обзор) место на диске, куда будет производиться установка или оставьте путь по умолчанию. Для начала установки нажмите кнопку «Next» (Далее)
ЭЦП:  ГОСЗАКУПКИ КРИПТОПРОВАЙДЕР

Установка eToken PKI Client 5.1 SP1, выбор места установки

  • Начинается процесс установки, который будет сопровождаться шкалой прогресса

Установка eToken PKI Client 5.1 SP1, начало установки

  • По окончании процесса установки откроется окно завершения процесса. Закройте данное окно, нажав кнопку «Finish» (Закончить)

Установка eToken PKI Client 5.1 SP1, конец установки

Для корректной работы электронных USB-ключей, именуемых также USB-токенами
, и контактных смарт-карт
семейства eToken на компьютере, сервере, ноутбуке, необходимо предварительно загрузить и установить драйверы устройств eToken, поддерживающие установленную на вашем оборудовании операционную систему.

Примечание: при использовании идентификаторов eToken, выполненных в виде пластиковых смарт-карт, к компьютеру также должен быть подключен PC/SC совместимый считыватель смарт-карт
и установлены соответствующие драйверы подключённого устройства чтения смарт-карт.

✔ SafeNet Authentication Client (SAC)

Данный комплект служебных утилит и драйверов USB-токенов и контактных смарт-карт семейства eToken поставляется по подписке. Рекомендуется для установки на Microsoft Windows 11/10, Server 2019/2016.

Для уточнения цен на приобретение комплекта SAC и условий поставки просьба перейти на страницу продукта

Поддерживаемые ОС: Windows 11 (21H2), 10 (до 21H1), 8.1, Server 2019 (64-бит), 2016 (64-бит), 2012 и 2012 R2 (64-бит)

Поддерживаемые USB-ключи: eToken 5110, eToken 5300

Поддерживаемые смарт-карты: по запросу

✔ eToken PKI Client 5.1

Популярная версия служебных утилит и драйверов электронных ключей и смарт-карт eToken. Рекомендуется для скачивания и установки на компьютеры и серверы под управлением Microsoft Windows.

Поддерживаемые ОС: Windows 7, Vista SP1, Vista SP2, XP SP3 (32-бит), XP SP2 (64-бит), Server 2008 R2, 2008, 2003 R2, 2003 SP2

Поддерживаемые USB-ключи: eToken PRO, eToken PRO (Java) 72K, eToken NG-FLASH (Java) 72K, eToken NG-OTP (Java) 72K

Поддерживаемые смарт-карты: eToken PRO, eToken PRO (Java) 72K

✔ eToken PKI Client 4.55

Данная версия драйвера и комплекта служебных утилит eToken PKI Client для устройств идентификации линейки eToken рекомендуется только для пользователей операционных систем Microsoft Windows 2000.

Поддерживаемые ОС: Vista, XP SP2, Windows 2000 SP4 и выше, Server 2003

Поддерживаемые USB-ключи: eToken PRO, eToken PRO (Java) 72K, eToken NG-FLASH (Java) 72K, eToken NG-OTP (Java) 72K

Поддерживаемые смарт-карты: eToken PRO, eToken PRO (Java) 72K

✔ eToken Runtime Environment (eToken RTE)

Версия комплекта драйверов и служебных утилит для работы с ключами и картами eToken рекомендуется для установки на старых операционных системах Windows, а также для поддержки ключей eToken R2.

Поддерживаемые ОС: Windows Vista (32-бит), XP (32-бит), 2000 SP4 и выше, NT 4.0 SP6, ME, 98, 95 OSR 2.1, Server 2003(32-бит)

Поддерживаемые USB-ключи: eToken PRO, eToken NG-FLASH, eToken NG-OTP, eToken R2

Поддерживаемые смарт-карты: eToken PRO

eToken PKI Client: драйверы и утилиты eToken

eToken PKI Client представляет собой набор драйверов и утилит, обеспечивающих работу USB-ключей и смарт-карт eToken в составе поддерживаемых данным набором операционных систем.

Программное обеспечение eToken PKI Client имеет широкое применение в сфере информационной безопасности и реализует взаимодействие USB-ключей eToken
и смарт-карт
данного семейства с программным обеспечением различных компаний, среди которых такие известные бренды, как Aladdin и SafeNet, а также многие другие разработчики решений по защите информации
.

К числу таких решений можно отнести программное обеспечение для работы с eToken, например, eToken Single Sign-On (SSO) для организации единой точки входа в приложения с помощью eToken, eToken Network Logon для авторизации в Windows с помощью eToken, систему централизованного управления eToken Token Management System (TMS) для управления жизненным циклом eToken.

eToken PKI Client используется для построения систем строгой двухфакторной аутентификации на базе цифровых сертификатов, а также реализации кодирования данных и обеспечения электронной цифровой подписи (ЭЦП). Кроме того eToken PKI Client обеспечивает возможность использования таких стандартных интерфейсов как Microsoft CAPI и PKCS#11 для доступа приложений к ключам и смарт-картам eToken. Благодаря этому eToken может применяться для безопасного доступа в локальные сети вместо авторизации по имени и паролю, Интернет, VPN-сети, для защиты электронной почты
, защиты данных на компьютерах и серверах
.

Обзор интерфейса eToken PKI Client

Утилита «Свойства eToken» (eToken PKI Client Properties), входящая в состав программного пакета eToken PKI Client, предоставляет администраторам ИТ-отделов и отделов ИТ-безопасности предприятий многофункциональный инструментарий для работы с устройствами eToken, а также для задания политик их использования.

Обычные пользователи программных продуктов также могут применять эту утилиту для выполнения основных операций с электронными ключами и смарт-картами eToken, например, для смены ПИН-кода или переименования eToken, просмотра электронных сертификатов, хранящихся в его защищённой памяти. Кроме того, утилита позволяет пользователям и администраторам легко экспортировать и импортировать электронные сертификаты между eToken и компьютером.

Помимо вышеперечисленного, приложение eToken PKI Client Properties предоставляет информацию о подключённых ключах и картах eToken (серийный номер и другие параметры), имеет доступ к ключам и сертификатам, хранящимся на устройствах eToken, позволяет управлять не только ПИН, но и административным паролем eToken.

  • Просмотр информации об USB-ключе или смарт-карте eToken
    — позволяет определить принадлежность того или иного устройства eToken к конкретному владельцу, оценить количество свободной памяти на устройстве, получить техническую информацию о подключённых ключах и смарт-картах eToken

Интерфейс eToken PKI Client

  • Форматирование или инициализация eToken
    — позволяет обеспечить очистку памяти ключей и смарт-карт eToken от имеющихся в ней данных, задать первичные значения ПИН-кода и пароля администратора, обозначить имя устройства eToken и другие характеристики

Интерфейс eToken PKI Client

  • Импортирование сертификатов
    — предназначено для обеспечения более защищённого хранения электронных сертификатов пользователя, а именно в защищённой памяти электронных ключей и смарт-карт eToken, благодаря их импорту в eToken из файла или личного хранилища сертификатов

Интерфейс eToken PKI Client


Технические характеристики eToken PKI Client

Поддержка ОС и устройств

Перечень поддерживаемых операционных систем и устройств eToken зависит от версии eToken PKI Client и указан на данной странице

Требуется наличие свободного USB-порта

Требуется наличие карт-ридера

Для работы утилиты «Свойства eToken» из пакета eToken PKI Client рекомендуемое разрешение экрана не ниже, чем 1024×768 точек


Исходные данные:

— WindowsXP со всеми последними обновлениями;

— КриптоПро CSP KC1 3.0.3300.1;

— Считыватель AKS ifdh, версии 3.0.3293.1;

— Считыватель Athena ASEDrive IIIe USB, версии 3.0.3293.1;

— eToken_PRO32, версии 3.0.15.0;

— eToken PRO USB-ключ (CardOS/M4.01);

— Считыватель Athena ASEDrive IIIe USB V2 + eToken PRO Смарт-карта (CardOS/M4.01).

Разрабатывается программа, которая должна обеспечивать:

— во время работы оператор вводит серию команд. Текстовое представление каждой команды подписывается и сохраняется в БД. За смену таких серий может быть несколько. Пароль доступа к носителю личного ключа должен вводиться перед изданием первой серии, а далее – при необходимости, если зафиксировано извлечение носителя. Окно ввода пароля от криптосистемы использоваться не должно;

— выбор издателя и криптопровайдера остается за заказчиком. Предполагается, что это будут КриптоПро и ГОСТ, но возможны варианты (.? в отдаленном будущем);

— в качестве носителей личных ключей предполагается использование Реестра (на время опытной эксплуатации) и eToken PRO (как USB-ключ, так и Смарт-карта);

— в некоторых подразделениях заказчика возможно отсутствие квалифицированных администраторов.

Для отработки на тестовом центре сертификации КриптоПро был получен ряд сертификатов для разных носителей:

— Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider – Реестр, USB-ключ, Смарт-карта;

— Crypto-Pro GOST R 34.10-2001 KC1 CSP – Реестр, USB-ключ, Смарт-карта;

— eToken Base Cryptographic Provider — USB-ключ, Смарт-карта;

— Microsoft Base Cryptographic Provider v1.0 – Реестр.

В штатном коде используется флаг CRYPT_SILENT.

1.

При получении дескриптора криптопровайдера, если носитель – Реестр, все проходит штатно.

Если носитель — USB-ключ, то необходимо сначала получить список носителей (обращение к функции CryptoAPI CryptGetProvParam с параметром PP_ENUMREADERS от CSP КриптоПро), а затем, сформировав FQCN-имя, пытаться получить дескриптор на каждом из них (из форума КриптоПро). Если же флаг CRYPT_SILENT не указывать, то все работает штатно и без указания FQCN-имени, хотя и мелькает окно выбора носителя.

Вопрос:

Можно ли ожидать, что в будущих версиях это будет реализовано прозрачно – при наличии флага CRYPT_SILENT поиск носителя будет выполняться внутри функции? Тем более, что такое решение реализует криптопровайдер eToken. Что, в свою очередь, может обеспечить унификацию кода.

Если носитель – Смарт-карта, то приведенный выше подход не срабатывает! Обращение с уникальным FQCN-именем (\\.\Athena ASEDrive IIIe USB 0\SCARD\ETOKEN_PRO32_2533c7052920\CC00\D0AC) возвращает код ошибки NTE_BAD_KEYSET_PARAM (0x8009001f). Если флаг CRYPT_SILENT не указывать, то все работает (с мельканием окна). По-видимому, это ошибка.

Вопрос:

Когда можно ждать исправление этой ошибки и как ее обойти сейчас?

2.

При выполнении следующих действий:

— получаем контекст сертификата;

— получаем дескриптор криптопровайдера для контейнера ключа;

— устанавливаем пароль доступа к контейнеру ключа (носителю);

— выполняем подпись 1;

— извлекаем носитель;

— выполняем подпись 2.

Последний шаг выполняется успешно.

В аналогичной ситуации криптопровайдер eToken фиксирует ошибку – NTE_BAD_KEYSET (0x80090016).

Вопрос:

Данная ситуация, видимо, связана с кэшированием и с CSP КриптоПро. Каких-либо настроек, отвечающих за такой режим, я не нашел. Что здесь можно сделать?

3.

В случае задания неправильного пароля CSP КриптоПро ошибку не фиксирует, даже если носитель извлечен. Ошибка фиксируется только при выполнении подписи. В CryptoAPI никаких средств проверки наличия носителя и правильности задания пароля (готовности к выполнению подписи) как будто нет. Есть непосредственно в реализации CSP КриптоПро, но тогда опять возникает вопрос с унификацией кода. Выполнять же фиктивную операцию подписи не хотелось бы.

Криптопровайдер eToken позволяет разрешить эту проблему хотя бы на уровне задания пароля – коды ошибок при отсутствии носителя и неверном пароле различаются – соответственно NTE_BAD_UID и SCARD_W_WRONG_CHV.

Вопрос:

Что здесь можно сделать? Можно ли в будущем ждать решения этой проблемы?

Вопрос:

Что здесь правильно и почему?

1. В CSP 3.6 ненужные окошки не возникают. Т.е. если контейнер находится на подключенном носителе, то окошка «вставить носитель» не будет.

Но, и в CSP 3.0 в случае использования fqcn-имён при вызове CryptAcquireContext окошек быть не должно. Это проверено.

Можно уточнить — при вызове какой именно функции возникает мелькание окна и каковы точные значения всех параметров этой функции (а также — какие на этой машине настроены считыватели и носители в панели КриптоПро CSP, и открывался ли ранее данный контейнер)?

2. Не имеет никакого отношения к кешированию.

Отличие в том, что для «eToken base CSP» при вынимании етокена вообще становится недоступным сам CSP, т.к. реализация криптоалгоритмов аппаратная.

«КриптоПро CSP» считывает ключ с токена и хранит его в памяти до тех пор, пока контекст этого контейнера не будет закрыт (CryptReleaseContext). Поскольку Вы не закрываете контекст — разумеется, ключ будет доступен и без носителя.

3. Функционирует как спроектировано — функция CryptSetProvParam с параметром задания пароля/ПИН-кода не проверяет правильность заданного пароля. Собственно говоря, даже если бы и проверяла — то это бы не решило «проблему готовности к выполнению подписи», т.к. носитель можно извлечь после задания пароля, но до первого обращения к секретному ключу при подписи. Если бы не было флажка SILENT — сам CSP сказал бы о факте ввода неправильного пароля или об отсутствии носителя при попытке подписи.

4. Зависит от приложения. Большинство клиентских приложений используют ключ AT_KEYEXCHANGE как для обмена ключами при шифровании, так и для подписи. В MSDN это описано.

В контейнере может быть:

а) один ключ — AT_KEYEXCHANGE

б) один ключ — AT_SIGNATURE

в) оба ключа

при этом для каждого ключа может быть свой сертификат.

2. Вопрос снимается. Будем закрывать контекст.

3. Вообще, привязывание разработчика к интерфейсу – это не очень хорошо. Приложение может работать и на каком-нибудь промышленном компьютере, и интерфейс у него будет совсем не оконный (питающее напряжение промодулированное азбукой «Морзе» :)). Это, может быть, будет и не всегда по ГОСТ, но средства криптографии можно использовать более широко, чем это принято сейчас (например, внутри предприятия).

Понятно, что и у Microsoft еще не все устоялось (может быть, в Windows Vista это более стандартизовано — я не смотрел). Но мы и предлагаем сделать шаг навстречу разработчику.

Если функция установки пароля будет возвращать результат операции, то это позволяет унифицировать код. Все остальные криптопровайдеры так делают. Установка пароля может выполняться непосредственно перед операцией подписи. Правда, в этом случае придется в том или ином виде хранить пароль внутри приложения, но на это можно пойти.

4. Вопрос снимается. Запрос сертификата на тестовом центре с указанием «Использование ключей»/«Подпись» действительно задает значение AT_SIGNATURE (указание «Использование ключей»/«Оба» — задает только AT_KEYEXCHANGE).

// Лог /////////////////////////////////////

//Гост, USB-ключ, CRYPT_SILENT установлен

Обычный: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = SCARD\ETOKEN_PRO32_4cce1f14\CC03\8F18

Ошибка обычного ::CryptAcquireContext = 8009001f

Попытка: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = \\.\REGISTRY\SCARD\ETOKEN_PRO32_4cce1f14\CC03\8F18: Код ошибки = 80090019

Попытка: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = \\.\Athena ASEDrive IIIe USB 0\SCARD\ETOKEN_PRO32_4cce1f14\CC03\8F18: ErrCode = 8009001f

Попытка: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = \\.\AKS ifdh 1\SCARD\ETOKEN_PRO32_4cce1f14\CC03\8F18: ErrCode = 80100069

Попытка: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = \\.\AKS ifdh 0\SCARD\ETOKEN_PRO32_4cce1f14\CC03\8F18: ОК

Да среди читателей!!!

подписьА — ОК

подписьБ — ОК

//Гост, SmartCard, CRYPT_SILENT установлены

Обычный: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = SCARD\ETOKEN_PRO32_2533c7052920\CC00\D0AC

Ошибка обычного ::CryptAcquireContext = 8009001f

Попытка: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = \\.\REGISTRY\SCARD\ETOKEN_PRO32_2533c7052920\CC00\D0AC: ErrCode = 80090019

Попытка: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = \\.\Athena ASEDrive IIIe USB 0\SCARD\ETOKEN_PRO32_2533c7052920\CC00\D0AC: ErrCode = 8009001f

Попытка: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = \\.\AKS ifdh 1\SCARD\ETOKEN_PRO32_2533c7052920\CC00\D0AC: ErrCode = 80100069

Попытка: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = \\.\AKS ifdh 0\SCARD\ETOKEN_PRO32_2533c7052920\CC00\D0AC: ErrCode = 80100069

Нет среди читателей???

//Гост, SmartCard, CRYPT_SILENT не установлено

Обычный: ProvType = 75; ProvName = Крипто-Про ГОСТ Р 34.10-2001 «Провайдер криптографических услуг»; KeyContName = SCARD\ETOKEN_PRO32_2533c7052920\CC00\D0AC

подписьА — ОК

подписьБ — ОК

// Код ////////////////////////////////////

//Гост на смарт-карте

#define OPERATOR L»Грибоедов Александр Сергеевич»

#define ALGORITHM_HASH «1.2.643.2.2.9»

#define PASSWORD «пипополам»

////Гост на USB-ключе

//#define ОПЕРАТОР Л»Тургеньев Иван Сергеевич»

//#define ALGORITHM_HASH «1.2.643.2.2.9»

//#определить ПАРОЛЬ «пипополам»

HCERTSTORE hcs = 0;

const CERT_CONTEXT* pcc = 0;

CRYPT_KEY_PROV_INFO* kpi = 0;

DWORD тип_пров;

std::string provName;

std::string имя_контейнера;

ХКРИПТПРОВ hcp = 0;

DWORD flagAcquireContext = 0;

std::map mapReaders;

// . . .

kpi = reinterpret_cast(данные);

printf(«Обычный: ProvType = %02u; ProvName = %ws; KeyContName = %ws\n», kpi->dwProvType, kpi->pwszProvName, kpi->pwszContainerName);

provType = kpi->dwProvType;

provName = recodeWtoC(kpi->pwszProvName);

имя_контейнера = recodeWtoC(kpi->pwszContainerName);

}

Мы уже тоже как-то ужились со всеми ограничениями и особенностями. Даже с необходимостью перечисления носителей при указании флага CRYPT_SILENT 🙂 .

P.S: здесь http://www.cryptopro.ru/cryptopro/forum/view.asp?q=6539 я выложил свой код, который работает только с дискетой, но отказывается от eToken.

Параметр DWORDPP_ENUMREADERS = 114; /*Это значение определено в WinCryptEx.h от Крипто ПРО*/

Код ошибки DWORD = 0;

флаг = 0;

} Пока (ок);

}

Ситуация, когда для дискет все реализовано, а для еТокенов — нет, вполне возможно, т.к. для каждого носителя настроена своя математика.

Установка личного сертификата

После того, как вы скопировали сертификат, закончите установку сертификата с помощью данной инструкции — Как установить сертификат с использованием ruToken или eToken, если сертификат не указан на носителе?
.

Оцените статью
ЭЦП64