Дисклеймер: вся информация, представленная в статье, взята из публичный источников. Статья написана исключительно в учебных и информационных целях. Владельцем зарегистрированных товарных знаков «Аладдин», 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
(из документации)
Первый байт:
02
— PIN-код пользователя.-
Второй байт:
54
(в hex) =01010100
(в двоичном):b7–b5
:010
→ приращение = 2 → минимальная длина = 6 + 2 = 8.b4
:1
→ смена PIN-кода обязательна.b3
:0
→ спецсимволы не требуются.b2
:1
→ цифры обязательны.b1
:0
→ строчные буквы не требуются.b0
:0
→ прописные буквы не требуются.
Для перевода чисел из разных систем счисления можно воспользоваться сайтом.
Как создать свой DATA
:
Выберите тип PIN-кода:
02
или03
.-
Рассчитайте минимальную длину:
Приращение =
желаемая длина - 6
(допустимо от 0 до 7). Пример: длина 10 → приращение = 4 → двоичное100
.
Установите флаги (включите нужные требования).
-
Соберите битовую маску:
Заполните биты
b7–b5
(приращение).Заполните биты
b4–b0
(флаги).
-
Переведите в hex:
Пример:
b7–b5=100
,b4=1
,b3=0
,b2=1
,b1=0
,b0=1
→10010101
→95
(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;
Записывать служебную информацию;
Выполнять операции с файлами внутри файловой системы.
Но эти функции гораздо удобнее выполнять через графические инструменты, например: