Криптографические команды

Команды данной группы включают команду 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.

Таблица 4: Режимы (операции) команды PSO

Значения P1 и P2 могут принимать в определенных сочетаниях значения из числа приведенных в "Таблица 5", определяющие тип входных и выходных данных для конкретной криптографической операции. Тип операции определяется по определенному сочетанию значений Р1 и Р2 из числа допустимых сочетаний приведенных в Таблица 6

Таблица 5 Значения P1:P2 определяющие тэги криптографических операций в команде PSO

Таблица 6 Тип криптографических операции в зависимости от P1:P2

Параметры криптографической операции определяются активным 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)

.