- PVSM.RU - https://www.pvsm.ru -
Дисклеймер: вся информация, представленная в статье, взята из публичный источников. Статья написана исключительно в учебных и информационных целях. Владельцем зарегистрированных товарных знаков «Аладдин», Aladdin, JaCarta, JMS, JAS, Secret Disk, SecurLogon, «Крипто БД», логотипов и правообладателем исключительных прав на их дизайн и использование, патентов на соответствующие продукты является АО «Аладдин Р. Д.».
Эффективное управление парком из сотен токенов JaCarta-2 ГОСТ требует от администратора безопасности не только понимания криптографии, но и владения инструментами для автоматизации рутинных операций. Проблемы вроде заблокированных устройств, слабых PIN-кодов по умолчанию или необходимости безопасного сброса утерянных токенов встают особенно остро при масштабировании инфраструктуры.
Для решения таких задач предусмотрен специализированный инструмент — АРМ Администратора Безопасности (далее АРМ АБ). В отличие от пользовательских приложений, он позволяет применять массовые операции и задавать строгие правила через сценарии. В этой статье мы детально разберем работу с АРМ АБ, основываясь на технической документации и практическом опыте. Разберем тонкие моменты настройки, которые не очевидны из официальной документации. Основное внимание уделим не перечислению функций, а разбору рабочих сценариев, их тонкостям и отличиям в зависимости от версии СКЗИ «Криптотокен 2 ЭП».
Для полного понимания рекомендую вперед ознакомиться с документацией [1].
В рамках этой статьи нас интересует только шестой раздел руководства — «Подготовка сценариев АРМ АБ».
Важный момент — мы рассмотрим работу с двумя версиями СКЗИ «Криптотокен 2 ЭП» это 2.5.3 и 2.5.5. Руководство оператора нас предупреждает (стр. 36, п. 5.16), что некоторые сценарии для младшей версии не будут работать, но при этом не предлагает альтернативные варианты. По имеющимся данным - в 2018 году устройства с версией 2.5.3 были сняты с продаж.
Пароли про умолчанию [2] для JaCarta 2 ГОСТ: "1234567890" для пользователя и "0987654321" для PUK кода. Но существует еще один код - так называемый PIN-код сброса к заводским настройкам (PININIT, не PUK), используемый в операции "INIT_PIN" (РО стр. 36, п. 5.16) - имеет значение по умолчанию "1234567890".
Ниже приведены примеры сценариев с объяснением для разных версий СКЗИ «Криптотокен 2 ЭП».
Рассмотрим сценарий смены пин-кода сброса к заводским настройкам (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
После успешного выполнения операции "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 нас попросят сгенерировать ключ. Сгенерированный ключ действует 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 это работает иначе, читайте соответствующий раздел).
Считается [3], что если у 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
ВНИМАНИЕ!!! Привязывайте ключ администратора для каждого изделия!!!
Используя 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 → прописные буквы не требуются.
Для перевода чисел из разных систем счисления можно воспользоваться сайтом [4].
Как создать свой 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 ГОСТ, который к тому же позволит одному только администратору безопасности многократно эксплуатировать изделие, ведь в посторонних руках изделие теряет какую любо ценность, в том числе материальную.
Когда у изделия не задан PUK код - разблокировать его можно только с помощью JaCarta Admin, при условии, что изделие привязано к ключу администратора. Для этого в нужно:
в Едином Клиенте JaCarta после исчерпания попыток ввода PIN-кода пользователя нужно воспользоваться функцией "Разблокировать PIN-код"->"Запрос-ответ";
Нам понадобятся данные "Серийный номер" и "Счётчик разблокировок";
В АРМ АБ в разделе "JaCarta-2 ГОСТ" нажать на кнопку "Сгенерировать последовательность для удаленной разблокировки";
В открывшемся окне выбрать MK_ID ключа администратора, к которому привязано изделие;
Заполнить поля "Серийный номер" и "счётчик разблокировок", нажать "Сгенерировать";
Полученную последовательность вставить в поле "Ответ" Мастера разблокирования PIN-кода.
Операция "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;
Записывать служебную информацию;
Выполнять операции с файлами внутри файловой системы.
Но эти функции гораздо удобнее выполнять через графические инструменты, например:
КриптоПро CSP [6];
Pkcs11Admin [7].
Автор: X_E_Qt_R
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/pkcs11/431941
Ссылки в тексте:
[1] документацией: https://www.aladdin-rd.ru/support/downloads/jacarta_arm_sa/
[2] Пароли про умолчанию: https://kbp.aladdin-rd.ru//index.php?View=entry&EntryID=85
[3] Считается: https://kbp.aladdin-rd.ru/index.php?EntryID=84&View=entry
[4] сайтом: https://calcus.ru/perevod-sistem-schisleniya/iz-dvoichnoy-v-shestnadcaterichnuyu
[5] Единый клиент JaCarta: https://www.aladdin-rd.ru/support/downloads/jacarta_client/
[6] КриптоПро CSP: https://www.cryptopro.ru/products/csp?csp=download
[7] Pkcs11Admin: https://github.com/Pkcs11Admin/Pkcs11Admin
[8] Источник: https://habr.com/ru/articles/951330/?utm_source=habrahabr&utm_medium=rss&utm_campaign=951330
Нажмите здесь для печати.