Криптографические команды
Команды данной группы включают команду MANAGE SECURE ENVIRONMENT (MSE), описанную в стандарте ISO 7816-4 и все команды ISO 7816-8.
В данной версии "Руководства…" Раздел №9.7 приводится в сокращенном варианте. Полная версия предоставляется по индивидуальному запросу: Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
9.7.1 MANAGE SECURITY ENVIRONMENT
Команда MSE предназначена для управления криптографическим контекстом (SE), определяющим текущий режим работы SM (защищенного обмена сообщениями), криптографическим команд PSO и команд аутентификации.
Команда позволяет:
- Записывать SE в файл SEF (режим STORE)
- Устанавливать SE с указанным идентификатором в качестве текущего (режим RESTORE)
- Удалять записанный SE (режим ERASE)
- Устанавливать временные параметры текущего SE (режим SET)
Режим ERASE очищает SEF, но не влияет на состояние текущего SE в памяти.
Добавление шаблонов (кроме шаблона аутентификации AT) в режиме SET допустимо, только если соответствующие шаблоны с таким же назначением (см. P1) еще не установлены в текущем SE. Шаблон аутентификации AT разрешается менять неоднократно без необходимости сброса SE.
Чтобы сбросить SE необходимо подать команду RESTORE 0 (для загрузки «пустого» SE №0).
Для всех команд SET действуют права доступа на запись для того SE, который был активизирован последний раз.
тип команды | in (case 3) |
формат команды:
CLA | 00 |
INS | 22 |
P1 | |
P2 | |
Lc | размер данных |
данные | В режимах STORE, RESTORE, ERASE – ничего В режиме SET – CRT |
Le | нет |
ответ | ничего |
В режиме SET команда MSE позволяет устанавливать временные параметры текущего SE:
Тэг | CRT | значения |
любой (не анализируется) | синхропосылка | |
любой кроме HT и DST | данные для диверсификации ключа |
Для диверсификации ключа необходимо подать команду MSE в режиме SET, указав шаблон CRT, в котором фигурирует данный ключ и передав в тэге 94 данные для диверсификации (например, серийный номер).
Для указания синхропосылки для последующего использования командой PSO необходимо подать команду MSE в режиме SET, передав в тэге 87 значение синхропосылки. Тип шаблона CRT игнорируется и может быть пропущен, назначение шаблона – любое.
9.7.2 GENERATE KEY PAIR
Команда генерации ключевой пары.
тип команды | in/out (case 4) |
формат команды:
CLA | 00 |
INS | 46 |
P1 | 0 – сгенерировать новую ключевую пару и выдать открытый ключ 1 – выдать ранее сгенерированный открытый ключ 2 – сгенерировать новую ключевую пару и ничего не выдавать |
P2 | 00 – команда применяется к текущему файлу >0 - идентификатор ключа |
Lc | размер данных |
данные | инкапсулированные случайные числа или ничего |
Le | размер выходных данных |
ответ | открытый ключ или ничего |
Для улучшения качества генерируемой ключевой пары, снаружи может передаваться случайная последовательность, инкапсулированная в шаблон KAT (key agreement template) с тэгом A6 в объекте 94 (random number). Допускается передача шаблона KAT с единственным объектом 94 нулевой длины – это эквивалентно отсутствию входных данных. Использование во входных данных шаблонов отличных от KAT или шаблона KAT с объектами отличными от 94-го не допускается.
В ответе на команду открытый ключ передается во внутреннем формате карты, зависящем от алгоритма ключа.
Примечание для ОС "Магистра 1.3": Данной командой можно произвести генерацию ключа только для алгоритма ГОСТ Р34.10-2001.
9.7.3 PERFORM SECURITY OPERATION
Команда PERFORM SECURITY OPERATION (PSO), фактически, объединяет несколько подкоманд, отвечающих за выполнение различных криптографических операций.
Все подкоманды имеют одинаковые байты CLA и INS в заголовке и отличаются только параметрами P1-P2.
Значения P1 и P2 могут принимать в определенных сочетаниях значения из числа приведенных в "Таблица 5", определяющие тип входных и выходных данных для конкретной криптографической операции. Тип операции определяется по определенному сочетанию значений Р1 и Р2 из числа допустимых сочетаний приведенных в Таблица 6
Параметры криптографической операции определяются активным SE. Если в SE не хватает данных для выполнения затребованной операции, то возникает ошибка.
Для файла SEF, содержащего текущий SE, должно быть разрешено использование; для ключей, задействованных в криптографической операции, должно быть разрешено использование и в маске назначения ключа должно быть разрешено использование ключа для выполняемой криптографических операций.
Если размер входных данных не позволяет передать их целиком в одной команде, то можно подать несколько команд одинакового типа подряд в режиме command chaining, который определяется по байту CLA (бит 5) в заголовке команды. Данная функциональность поддерживается для операций ENCIPHER, DECIPHER, COMPUTE CRYPTOGRAPHIC CHECKSUM, VERIFY CRYPTOGRAPHIC CHECKSUM и COMPUTE HASH. При этом для команды VERIFY CRYPTOGRAPHIC CHECKSUM длина объекта данных 80 указывается для текущей команды цепочки.
Особым случаем использования command chaining является вычисление хэша (COMPUTE HASH) с последующим вычислением/проверкой ЭП (COMPUTE/VERIFY DIGITAL SIGNATURE). В этом случае одна/несколько операций CH в режиме command chaining завершаются операцией CDS или VDS.
Также особый случай command chaining используется в операции VERIFY CERTIFICATE. Допустимо передать первой командой сертификат по шаблону BE, а второй завершающей командой – ЭП по шаблону AE.
В операциях зашифрования, расшифрования и вычисления/проверки имитовставки размер промежуточных открытых/зашифрованных данных должен быть кратен размеру блока соответствующего алгоритма. Промежуточными выходными данными для зашифрования/расшифрования является промежуточный результат операции, для вычисления/проверки имитовставки промежуточных выходных данных нет.
Общий формат команды PSO следующий:
тип команды | in/out (case 4) |
формат команды:
CLA | 00 |
INS | 2A |
P1 | Тэг выходных данных или 00, если выходных данных нет |
P2 | Тэг входных данных или 00, если входных данных нет |
Lc | размер входных данных |
данные | входные данные (если есть) |
Le | размер выходных данных |
ответ | выходные данные (если есть) |
Далее рассмотрим отдельные криптографические операции(Операции приведены в том же порядке, что и в ISO 7816-8):
9.7.3.1 Вычисление имитовставки
(COMPUTE CRYPTOGRAPHIC CHECKSUM – CCC)
IN | |
OUT |
9.7.3.2 Вычисление ЭП
(COMPUTE DIGITAL SIGNATURE – CDS)
IN | |
OUT |
В качестве входных данных необходимо указать посчитанный хэш от данных, для которых вычисляется ЭП.
Допустимо использовать данную операцию последней командой в цепочке предшествующего вычисления хэша. В этом случае длина входных данных должна быть равно нулю.
Режим включения дополнительных данных из SE (auxiliary data) не поддерживается.
9.7.3.3 Вычисление хэша
(COMPUTE HASH – CH)
9.7.3.4 Проверка имитовставки
(VERIFY CRYPTOGRAPHIC CHECKSUM – VCC)
9.7.3.5 Проверка ЭП
(VERIFY DIGITAL SIGNATURE – VDS)
9.7.3.6 Проверка сертификата ключа
(VERIFY CERTIFICATE – VC)
9.7.3.7 Зашифрование
(ENCIPHER – ENC)
9.7.3.8 Расшифрование
(DECIPHER – DEC)