Принципы работы

Общее

Работа с библиотекой Cryptoki должна обязательно начинаться с ее инициализации через функцию C_Initialize().

Сеанс работы библиотеки с устройством JaCarta устанавливается через слот, который является логическим цифровым представлением разъёма, к которому может быть подключено устройство. В каждый момент времени одному устройству может соответствовать до трех слотов (по одному на каждый апплет см. Работа с апплетами). Библиотека Cryptoki резервирует 20 слотов. При подключении нового устройства для него выделяется один из зарезервированных слотов. Библиотека Cryptoki самостоятельно отслеживает подключенные устройства и асинхронно обновляет служебную информацию о соответствующих им слотах.

Каждый объект, хранящийся на устройстве JaCarta (или в оперативной памяти ОС), имеет атрибуты, которые в совокупности задают свойства объекта. Атрибуты задают тип объекта, его видимость, его местоположение и т. д. Также стоит различать открытые и закрытые объекты (не путать с открытыми и закрытыми ключами): первые может читать любой пользователь, вторые – защищены PIN-кодом, т.е. любые действия с данным объектом требуют аутентификации пользователя (см. Режим пользователя).

Тип объекта определяется значением атрибута CKA_CLASS. Библиотека Cryptoki поддерживает приведённые в таблице ниже шесть соответствующих стандарту PKCS #11 типов объектов. Предусмотренные в стандарте PKCS #11 объекты типов CKO_MECHANISM, CKO_VENDOR_DEFINED и CKO_HW_FEATURE не поддерживаются.

Типы объектов, поддерживаемые библиотекой Cryptoki
Закрытые ключи CKO_PRIVATE_KEY
Открытые ключи CKO_PUBLIC_KEY
Данные CKO_DATA
Сертификаты CKO_CERTIFICATE
Симметричные ключи CKO_SECRET_KEY
Параметры криптографических функций CKO_DOMAIN_PARAMETERS

Примечание

В библиотеке Cryptoki поддерживаются сертификаты открытого ключа только формата X.509.

Подробнее о работе с объектами и их свойствах указано в разделе Общие сведения о работе с объектами.

При завершении работы с библиотекой Cryptoki внешнее ПО должно вызвать функцию C_Finalize().

Режимы работы

Набор доступных функций и возможность доступа к закрытым объектам в памяти поддерживаемого библиотекой устройства зависят от текущего режима работы. JaCarta может работать в трёх режимах:

Основным режимом работы устройства JaCarta является режим пользователя.

По умолчанию JaCarta работает в гостевом режиме, не требующем введения PIN-кода. Объекты, доступные в этом режиме, называются открытыми и являются доступными и в остальных режимах. Закрытые объекты доступны только в режиме пользователя.

Для включения режима пользователя необходимо ввести PIN-код пользователя, а для включения режима администратора – PIN-код администратора (см. C_Login()).

Для защиты от несанкционированного доступа в JaCarta предусмотрены счётчики, регистрирующие количество последовательно введённых неверных значений PIN-кодов. При достижении максимально допустимого числа неудачных попыток ввода (до 15ти) PIN-код блокируется и соответствующий ему режим становится недоступным. PIN-код пользователя может быть разблокирован администратором.

Режим администратора

Режим администратора используется для выполнения следующих административных функций:

Инициализация апплета

Инициализация апплета предполагает удаление хранящихся в памяти объектов (повторное создание файловой системы), удаление значения PIN-кода пользователя и сохранение значения PIN-кода администратора. Для апплета Криптотокен данные ДСЧ при инициализации сохраняются.

В момент инициализации устройству присваивается метка – строковое значение, используемое для идентификации устройства.

Подробнее об инициализации см. C_InitToken().

Для работы с устройством после инициализации необходимо выполнить инициализацию PIN-кода пользователя.

Инициализация апплета не доступна при заблокированном PIN-коде администратора. Исключение составляют модели токенов JaCarta с номером вида JCXXX v2.0. Для этих моделей доступна инициализация апплета Laser без знания PIN-кода администратора и/или когда он заблокирован.

Инициализация PIN-кода пользователя

Инициализация или установка PIN-кода пользователя – это назначение администратором PIN-кода пользователя после инициализации апплета. Операция осуществляется только в режиме администратора (см. C_InitPIN()).

Разблокирование PIN-кода пользователя

PIN-код пользователя блокируется, когда превышается число допустимых попыток его ввода (до 10 или 15, в зависимости от апплета). В этом случае администратор может разблокировать PIN-код пользователя:

  • Для Laser необходимо выполнить инициализацию PIN-кода пользователя (см. C_InitPIN()). При этом будет установлено новое значение PIN-кода пользователя, а старое будет утрачено.
  • Для Криптотокена и Datastore необходимо предьявить PIN-код администратора (см. C_Login()). При этом будет сброшен счетчик неудачных попыток ввода PIN-кода пользователя, а его значение останется прежним.

PIN-код пользователя не может быть разблокирован при заблокированном PIN-коде администратора.

Разблокирование PIN-кода администратора

Разблокирование PIN-кода администратора не доступно (см. Инициализация апплета).

Режим пользователя

В режиме пользователя доступны основные функции библиотеки, а также операции с открытыми и закрытыми объектами и с PIN-кодом пользователя.

Для работы в режиме пользователя необходимо предъявить PIN-код пользователя (см. C_Login()). При этом PIN-код пользователя должен быть инициализирован администратором.

Режим гостя

В гостевом режиме доступны функции, не связанные с обращением к закрытым объектам и выполнением криптографических преобразований. Режим гостя обычно используется для получения общей информации об электронном ключе (см. C_GetTokenInfo()) и для чтения открытых объектов, например, сертификатов (см. C_GetAttributeValue()).

Работа с апплетами

На данный момент библиотека поддерживают работу с апплетами Laser, Криптотокен и Datastore. Каждому апплету соответствует один слот. Узнать, какому апплету соответствует выбранный слот, можно по названию модели, которое прописывается в CK_TOKEN_INFO.model (см. C_GetTokenInfo()). Может принимать следующие значения:

  • eToken GOST для апплета Криптотокен,
  • JaCarta Laser для апплета Laser,
  • JaCarta DS для апплета Datastore.
  • JaCarta для апплета Laser в случае, если он инициализирован с использованием Единого клиента JaCarta.
  • CNS для апплета Laser в случае, если он инициализирован с использованием стороннего ПО.