Дисклеймер: вся информация, представленная в статье, взята из публичный источников. Статья написана исключительно в учебных и информационных целях. Владельцем зарегистрированных товарных знаков «Аладдин», 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;
Записывать служебную информацию;
Выполнять операции с файлами внутри файловой системы.
Но эти функции гораздо удобнее выполнять через графические инструменты, например:
