Дисклеймер: вся информация, представленная в статье, взята из публичный источников. Статья написана исключительно в учебных и информационных целях. Владельцем зарегистрированных товарных знаков «Аладдин», Aladdin, JaCarta, JMS, JAS, Secret Disk, SecurLogon, «Крипто БД», логотипов и правообладателем исключительных прав на их дизайн и использование, патентов на соответствующие продукты является АО «Аладдин Р. Д.».

Эффективное управление парком из сотен токенов JaCarta-2 ГОСТ требует от администратора безопасности не только понимания криптографии, но и владения инструментами для автоматизации рутинных операций. Проблемы вроде заблокированных устройств, слабых PIN-кодов по умолчанию или необходимости безопасного сброса утерянных токенов встают особенно остро при масштабировании инфраструктуры.

Для решения таких задач предусмотрен специализированный инструмент — АРМ Администратора Безопасности (далее АРМ АБ). В отличие от пользовательских приложений, он позволяет применять массовые операции и задавать строгие правила через сценарии. В этой статье мы детально разберем работу с АРМ АБ, основываясь на технической документации и практическом опыте. Разберем тонкие моменты настройки, которые не очевидны из официальной документации. Основное внимание уделим не перечислению функций, а разбору рабочих сценариев, их тонкостям и отличиям в зависимости от версии СКЗИ «Криптотокен 2 ЭП».

Начало работы

Для полного понимания рекомендую вперед ознакомиться с документацией.

В рамках этой статьи нас интересует только шестой раздел руководства — «Подготовка сценариев АРМ АБ».

Важный момент — мы рассмотрим работу с двумя версиями СКЗИ «Криптотокен 2 ЭП» это 2.5.3 и 2.5.5. Руководство оператора нас предупреждает (стр. 36, п. 5.16), что некоторые сценарии для младшей версии не будут работать, но при этом не предлагает альтернативные варианты. По имеющимся данным - в 2018 году устройства с версией 2.5.3 были сняты с продаж.

Пароли про умолчанию для JaCarta 2 ГОСТ: "1234567890" для пользователя и "0987654321" для PUK кода. Но существует еще один код - так называемый PIN-код сброса к заводским настройкам (PININIT, не PUK), используемый в операции "INIT_PIN" (РО стр. 36, п. 5.16) - имеет значение по умолчанию "1234567890".

Ниже приведены примеры сценариев с объяснением для разных версий СКЗИ «Криптотокен 2 ЭП».

2.5.5

Инициализация изделия и смена PININIT

Рассмотрим сценарий смены пин-кода сброса к заводским настройкам (PININIT), взяв новое изделие JaCarta-2 PKI/ГОСТ

[Settings]
SCRIPT_NAME="SET_PIN_INIT"

# Обязательная операция открытия сессии
# MK_ID и MK_SEED оставляем пустыми
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# будет работать только если PININIT = "1234567890", т.е. по умолчанию
[Step01]
Action=SET_PININIT
PIN_DATA=P@ssw0rdNew

# Обязательная операция закрытия сессии
[Step02]
Action=LOGOUT

Теперь можно выполнять операцию "INIT_PIN" с новым установленным PININIT. Это можно делать, даже если PININIT находится в значении "по умолчанию".

ВНИМАНИЕ!!! Если PININIT изменен и утерян - выполнить сброс штатными средствами НЕ возможно!!!.

Операция "INIT_PIN" уничтожит все данные в изделии и установит PIN и PUK в нулевые значения.

[Settings]
SCRIPT_NAME="FACTORY_RESET"

# при успешном выполнении операции "INIT_PIN"
# PININIT примет значение по умолчанию, т.е. "1234567890"
[Step00]
Action=INIT_PIN
PIN_DATA=P@ssw0rdNew

Установка PIN пользователя и PUK

После успешного выполнения операции "INIT_PIN" значения пин-кода пользователя и PUK-код являются нулевыми (работать с изделием еще нельзя) а значение PININIT примет значение по умолчанию. Выполним сценарий установки этих значений.
Если PIN и PUK уже установлены - выполнить операции "SET_PIN" и "SET_PUK" не возможно.

[Settings]
SCRIPT_NAME="SET_USER_AND_PUK"

# Обязательная операция открытия сессии
# MK_ID и MK_SEED оставляем пустыми
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# Установка пин-кода пользователя
[Step01]
Action=SET_PIN
PIN_DATA=1234567890

# Установка PUK ключа разблокировки
[Step02]
Action=SET_PUK
PUK_DATA=0987654321

# Снова устанавливаем значение PININIT
# предыдущее значение PININIT должно быть по умолчанию, т.е. "1234567890"
# (не обязательно, но рекомендовано)
[Step03]
Action=SET_PININIT
PIN_DATA=P@ssw0rdNew

# Обязательная операция закрытия сессии
[Step04]
Action=LOGOUT

ВНИМАНИЕ!!! Не оставляйте значения пин-кодов по умолчанию!!!

Инициализация изделия

Операция "INIT" аналогично операции "INIT_PIN" удаляет все данные в изделии, включая PIN пользователя и PUK, но при этом не требует предъявления значения PININIT. Сценарий может быть полезен если изделие JaCarta-2 ГОСТ заблокировано (исчерпаны попытки ввода PIN и PUK). Следом можно выполнять операции "SET_PIN" и "SET_PUK". PININIT останется прежним. Ключ администратора не сбрасывается. Данные будут уничтожены.

[Settings]
SCRIPT_NAME="ONLY_INIT"

# Обязательная операция открытия сессии
# MK_ID и MK_SEED оставляем пустыми
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# инициализировать изделие JaCarta-2 ГОСТ
[Step01]
Action=INIT

# Обязательная операция закрытия сессии
[Step02]
Action=LOGOUT

Также существует операция "INIT_DEF". Согласно руководству она инициализирует изделие JaCarta-2 ГОСТ аналогично операции INIT и установит ключ администратора безопасности в значение по умолчанию с предъявлением в открытом виде. "PININIT" останется прежним. Т.е. если изделие привязано к JaCarta Admin и мы хотим его отвязать - можно выполнить эту операцию, не выполняя "INIT_PIN". Операцию "INIT_DEF" имеет смысл выполнять только если изделие привязано к JaCarta Admin.

[Settings]
SCRIPT_NAME="INIT_DEFAULT"

# Обязательная операция открытия сессии
# MK_ID и MK_SEED оставляем пустыми
# если изделие не привязано к JaCarta Admin
[Step00]
Action=LOGIN
MK_ID=xxxxxxxxxxxxxxxx0000
MK_SEED=

# инициализировать изделие JaCarta-2 ГОСТ
# сбросить ключ адм. по умолчанию
[Step01]
Action=INIT_DEF

# обязательная операция закрытия сессии
[Step02]
Action=LOGOUT

Привязка к JaCarta Admin

При первом использовании изделия JaCarta Admin нас попросят сгенерировать ключ. Сгенерированный ключ действует 1096 дней (3 года).

Для того, чтобы узнать, привязано ли изделие JaCarta-2 ГОСТ к ключу администратора необходимо в программе АРМ АБ JaCarta в разделе "JaCarta-2 ГОСТ" проверить наличие галочки в колонке "Ключ адм. по умолч.". Если галочка стоит, то мы можем успешно исполнить сценарий, привязывающий изделие к JaCarta Admin

[Settings]
SCRIPT_NAME="SET_ADMIN_KEY"

# Отставляем поля пустыми, если изделие не привязано к ключу администратора
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# MK_ID - полный идентификатор актуального ключа администратора
# MK_SM - флаг, определяющий режим предъявления ключа администратора
[Step01]
Action=SET_SO_KEY
MK_ID=xxxxxxxxxxxxxxxx0000
MK_SM=01
MK_SEED=

# обязательная операция закрытия сессии
[Step02]
Action=LOGOUT

При приближающемся сроке истечения действия ключа администратора можно произвести его смену для изделия JaCarta-2 ГОСТ, выполнив сценарий ниже

[Settings]
SCRIPT_NAME="CHANGE_ADMIN_KEY"

# обязательная операция открытия сессии
# MK_ID - идентификатор СТАРОГО ключа администратора
[Step00]
Action=LOGIN
MK_ID=xxxxxxxxxxxxxxxx0000
MK_SEED=

# MK_ID - идентификатор НОВОГО ключа администратора
# MK_SM - флаг, определяющий режим предъявления ключа администратора
[Step01]
Action=SET_SO_KEY
MK_ID=xxxxxxxxxxxxxxxx0001
MK_SM=01
MK_SEED=

# обязательная операция закрытия сессии
[Step02]
Action=LOGOUT

Если изделие привязано к ключу администратора, и действие этого ключа истекло - можно выполнить операцию "INIT_PIN", установив для изделия JaCarta 2 ГОСТ ключ администратора по умолчанию (данные будут уничтожены!). После истечения действия ключа администратора - скрипт "CHANGE_ADMIN_KEY" работать не будет (для версии 2.5.3 это работает иначе, читайте соответствующий раздел).

Разблокировка JaCarta-2 ГОСТ

Считается, что если у JaCarta ГОСТ (не JaCarta-2 ГОСТ) заблокирован User и Admin, то изделие полностью теряет свой функционал. Если JaCarta-2 ГОСТ заблокирован (USER и PUK) можно выполнить разблокировку устройства, используя сценарий:

[Settings]
SCRIPT_NAME="UNBLOCK"

# Отставляем поля пустыми, если изделие не привязано к ключу администратора
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# разблокировать изделие JaCarta-2 ГОСТ
# выполняет разблокирование PIN-кода пользователя, PIN-кода подписи
# и PUK-кода изделия JaCarta-2 ГОСТ
[Step01]
Action=UNBLOCK

# обязательная операция закрытия сессии
[Step02]
Action=LOGOUT

ВНИМАНИЕ!!! Привязывайте ключ администратора для каждого изделия!!!

Задаем парольную политику для PIN-пользователя и PIN-подписи

Используя JaCarta Admin можно задать парольную политику для PIN-кода пользователя и PIN-код подписи.

ЗАМЕЧАНИЕ: Устанавливать политику для PIN-кода подписи не имеет смысла, так как использование PIN-кода подписи не получило широкого распространения

Чтобы задать парольную политику для JaCarta-2 ГОСТ воспользуемся операцией "SET_PASSWORD_POLICY" с входным параметром "DATA"

Структура параметра DATA:

  • Первый байт (тип PIN-кода):

    • 02 — PIN-код пользователя.

    • 03 — PIN-код подписи.

  • Второй байт (битовая маска политики):

    • Биты b7–b5: Приращение минимальной длины (добавляется к базовой длине 6). Пример: 010 (в двоичном) = 2 → минимальная длина = 6 + 2 = 8.

    • Остальные биты (флаги):

      • b4: Требовать смену PIN-кода (1 — да, 0 — нет).

      • b3: Обязательные спецсимволы (!, #, % и т.д.).

      • b2: Обязательные цифры (0-9).

      • b1: Обязательные строчные буквы (a-z, а-я).

      • b0: Обязательные прописные буквы (A-Z, А-Я).

Пример: DATA=0254 (из документации)

  1. Первый байт: 02 — PIN-код пользователя.

  2. Второй байт: 54 (в hex) = 01010100 (в двоичном):

    • b7–b5: 010 → приращение = 2 → минимальная длина = 6 + 2 = 8.

    • b4: 1 → смена PIN-кода обязательна.

    • b3: 0 → спецсимволы не требуются.

    • b2: 1 → цифры обязательны.

    • b1: 0 → строчные буквы не требуются.

    • b0: 0 → прописные буквы не требуются.

Для перевода чисел из разных систем счисления можно воспользоваться сайтом.

Как создать свой DATA:

  1. Выберите тип PIN-кода: 02 или 03.

  2. Рассчитайте минимальную длину:

    • Приращение = желаемая длина - 6 (допустимо от 0 до 7). Пример: длина 10 → приращение = 4 → двоичное 100.

  3. Установите флаги (включите нужные требования).

  4. Соберите битовую маску:

    • Заполните биты b7–b5 (приращение).

    • Заполните биты b4–b0 (флаги).

  5. Переведите в hex:

    • Пример: b7–b5=100, b4=1, b3=0, b2=1, b1=0, b0=11001010195 (hex).

    • Итоговый DATA: 0295 (для PIN-кода пользователя с длиной 10 и требованиями: смена, цифры, прописные). При этом не запрещено использовать строчные и спец-символы.

Операцию "SET_PASSWORD_POLICY" нужно выполнять ПОСЛЕ операцией "SET_PIN". Предполагается, что после получения изделия - пользователь должен выполнить смену пароля, чтобы избежать доступа к изделию со стороны Администратора.

[Settings]
SCRIPT_NAME="SET_PASSWORD_POLICY_0"

# Отставляем поля пустыми, если изделие не привязано к ключу администратора
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# Установка пин-кода пользователя по умолчанию
[Step01]
Action=SET_PIN
PIN_DATA=1234567890

# 0295 - PIN-кода пользователя с длиной 10 и требованиями: смена, цифры, прописные
# пример допустимого пароля: 1234567QWE
[Step02]
Action=SET_PASSWORD_POLICY
DATA=0295

# обязательная операция закрытия сессии
[Step03]
Action=LOGOUT

Пример практического применения

Представим ситуацию, что на нашем предприятии в обороте находится N-ое количество JaCarta-2 ГОСТ, используемых для выполнения служебных задач. Инициализируем JaCarta-2 ГОСТ так, чтобы:

  • Выполнить разблокировку мог только администратор безопасности (лично либо удаленно с помощью механизма "Запрос-ответ");

  • Для пин-кода пользователя была задана парольная политика;

  • Пользователь должен установить собственный PIN-код перед началом использования изделия;

  • Изделие в случае утери или кражи было невозможно использовать (ГОСТ апплет не будет представлять никакой ценности).

[Settings]
SCRIPT_NAME="INIT_MAX_STRONG"

# при успешном выполнении операции "INIT_PIN"
# PININIT примет значение по умолчанию, т.е. "1234567890"
# USER и PUK примут нулевые значения
[Step00]
Action=INIT_PIN
PIN_DATA=1234567890

# Обязательная операция открытия сессии
# MK_ID и MK_SEED оставляем пустыми
[Step01]
Action=LOGIN
MK_ID=
MK_SEED=

# Привязываем изделие к Ключу Администратора
# MK_ID - полный идентификатор актуального ключа администратора
# MK_SM - флаг, определяющий режим предъявления ключа администратора
[Step02]
Action=SET_SO_KEY
MK_ID=xxxxxxxxxxxxxxxx0000
MK_SM=01
MK_SEED=

# Установка пин-кода пользователя
[Step03]
Action=SET_PIN
PIN_DATA=1234567890

# PUK не устанавливаем, после операции INIT_PIN он должен быть нулевым

# 0295 - PIN-кода пользователя с длиной 10 и требованиями:
# смена, цифры, прописные
# пример допустимого пароля: 1234567QWE
[Step04]
Action=SET_PASSWORD_POLICY
DATA=0295

# Снова устанавливаем значение PININIT
# предыдущее значение PININIT должно быть по умолчанию т.е. "1234567890"
[Step05]
Action=SET_PININIT
PIN_DATA=P@ssw0rdNew

# Обязательная операция закрытия сессии
[Step06]
Action=LOGOUT

С помощью этого сценария мы задали достаточно высокий уровень безопасности для изделия JaCarta-2 ГОСТ, который к тому же позволит одному только администратору безопасности многократно эксплуатировать изделие, ведь в посторонних руках изделие теряет какую любо ценность, в том числе материальную.

Удаленная разблокировка JaCarta-2 ГОСТ (запрос-ответ)

Когда у изделия не задан PUK код - разблокировать его можно только с помощью JaCarta Admin, при условии, что изделие привязано к ключу администратора. Для этого в нужно:

  • в Едином Клиенте JaCarta после исчерпания попыток ввода PIN-кода пользователя нужно воспользоваться функцией "Разблокировать PIN-код"->"Запрос-ответ";

  • Нам понадобятся данные "Серийный номер" и "Счётчик разблокировок";

  • В АРМ АБ в разделе "JaCarta-2 ГОСТ" нажать на кнопку "Сгенерировать последовательность для удаленной разблокировки";

  • В открывшемся окне выбрать MK_ID ключа администратора, к которому привязано изделие;

  • Заполнить поля "Серийный номер" и "счётчик разблокировок", нажать "Сгенерировать";

  • Полученную последовательность вставить в поле "Ответ" Мастера разблокирования PIN-кода.

2.5.3

Инициализация изделия и ввод в эксплуатацию

Операция "INIT_PIN" не доступна для изделий версии 2.5.3 (РО стр. 36, п. 5.16). В некоторых случаях для изделий версии 2.5.3 - ГОСТ апплет заблокирован. Его можно активировать, выполнив сценарий:

[Settings]
[Settings]
SCRIPT_NAME="FACTORY_RESET_2.5.3"

# Обязательная операция открытия сессии
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# Инициализировать изделие JaCarta-2 ГОСТ
# PIN и PUK примут нулевые значения
[Step01]
Action=INIT

# Установка ПИН-кода пользователя
[Step02]
Action=SET_PIN
PIN_DATA=1234567890

# Установка PUK-кода
[Step03]
Action=SET_PUK
PUK_DATA=0987654321

# Обязательная операция закрытия сессии
[Step04]
Action=LOGOUT

Если изделия версии 2.5.5 можно сбрасывать до заводских настроек без предъявления JaCarta Admin, используя только "PININIT" в операции "INIT_PIN", то изделия версии 2.5.3 так сделать не позволят. Для сброса изделия применяется операция "INIT". Единственной защитой от использования этой функции посторонним лицом является привязка изделия к JaCarta Admin.

[Settings]
SCRIPT_NAME="SET_ADMIN_KEY"

# Отставляем поля пустыми, если 
# изделие не привязано к ключу администратора
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# MK_ID - полный идентификатор актуального ключа администратора
# MK_SM - флаг, определяющий режим предъявления ключа администратора
[Step01]
Action=SET_SO_KEY
MK_ID=xxxxxxxxxxxxxxxx0000
MK_SM=01
MK_SEED=

# обязательная операция закрытия сессии
[Step02]
Action=LOGOUT

Чтобы отвязать изделие версии 2.5.3 от ключа адм. применяется операция "INIT_DEF"

[Settings]
SCRIPT_NAME="FACTORY_RESET_DEFAULT_2.5.3"

[Step00]
Action=LOGIN
MK_ID=xxxxxxxxxxxxxxxx0000
MK_SEED=

# Инициализация изделия и сборс ключа адм. по умолчанию
[Step01]
Action=INIT_DEF

[Step02]
Action=LOGOUT

# затем повторно запускаем сценарий
# "FACTORY_RESET_2.5.3" и пользуемся изделием как новым

ВНИМАНИЕ!!! Если ключ администратора истек, а изделие было к нему привязано - выполнить INIT_DEF все еще можно, предъявив MK_ID истекшего ключа!!!

В остальном же, JaCarta-2 ГОСТ с версией ПО 2.5.3 мало чем отличаются от обновленной версии. Отредактируйте ранее представленные сценарии, убрав операции "SET_PININIT" и "INIT_PIN".

В качестве еще одного примера - инициализируем изделие, так чтобы иметь иметь возможность выполнять удаленную разблокировку апплета (запрос-ответ), без использования PUK-кода (PUK остается нулевым):

[Settings]
SCRIPT_NAME="INIT_STRONG_2.5.3"

# Обязательная операция открытия сессии
# MK_ID и MK_SEED оставляем пустыми
[Step00]
Action=LOGIN
MK_ID=
MK_SEED=

# Если изделие уже привязано к ключу адм., а PIN-пользователя установлен
# выполните операцию "INIT_DEF", иначе выдаст ошибку

# Привязываем изделие к Ключу Администратора
# MK_ID - полный идентификатор актуального ключа администратора
# MK_SM - флаг, определяющий режим предъявления ключа администратора
[Step01]
Action=SET_SO_KEY
MK_ID=xxxxxxxxxxxxxxxx0000
MK_SM=01
MK_SEED=

# Установка пин-кода пользователя
[Step02]
Action=SET_PIN
PIN_DATA=1234567890

# PUK не устанавливаем, после операции "INIT_DEF" или "INIT"
# он должен быть нулевым

# Обязательная операция закрытия сессии
[Step03]
Action=LOGOUT

Итог

Конечно, функционал JaCarta АРМ АБ не ограничивается представленными сценариями. Программное обеспечение также позволяет:

  • Генерировать ключевые пары ЭП по ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012;

  • Импортировать открытый ключ;

  • Импортировать ключ для HMAC;

  • Записывать служебную информацию;

  • Выполнять операции с файлами внутри файловой системы.

Но эти функции гораздо удобнее выполнять через графические инструменты, например:

Комментарии (0)