Команды аутентификации

Команды данной группы включают команды криптографической внешней и внутренней аутентификации, команды предъявления пароля и управления данными, связанными с аутентификацией.

Во всех командах данной группы приняты следующие соглашения о кодировании параметров (если явно не оговорено иное):

  • P1=0
  • Если P2=0, то параметры берутся из текущего SE, иначе P2 – ссылка на ключ.

Ссылка на ключ содержит идентификатор санкции для аутентификации, ассоциированный с ключом и принимает значение в диапазон 1..127. Старшие идентификаторы санкций зарезервированы для использования кодом ОС и расширений, а 0 не должен использоваться, т.к. P2=0 имеет специальный смысл. В целях повышения совместимости с ISO 7816-4 рекомендуется использовать идентификаторы санкций лишь в диапазоне 1..31.

Поиск ключа осуществляется в текущем DF и выше (до MF).

типы файлов:

DF (MF) BF FRF VRF CRF TF KF ARF
- - - - - - + -

 Примечание для ОС "Магистра 1.30": не выполняется аутентификация с применением ключей RSA1536, RSA2048 (При необходимости, такая функциональность может быть дополнительно реализована по запросу заказчика.)

 

 

9.8.1 GET CHALLENGE

Команда генерирует и возвращает случайное число указанного размера. Число запоминается в текущем SE и может быть использовано в последующих командах.

тип команды out (case 2)

формат команды:

CLA 00
INS 84
P1 00
P2 00
Lc -
данные -
Le размер запрошенного числа 1..32
ответ случайное число

 

 

9.8.2 INTERNAL AUTHENTICATE

Внутренняя аутентификация – доказательство внешнему миру наличия на карте определенного секрета.

Для блочных симметричных алгоритмов размер СЧ должен быть равен размеру блока, для асимметричных алгоритмов размер СЧ должен быть от 8 до 32 байт.

тип команды in/out (case 4)

формат команды:

CLA 00
INS 88
P1 00
P2 ссылка на ключ
Lc размер входных данных (обычно 8)
данные challenge – случайное число
Le размер выходных данных (обычно 6)
ответ криптограмма

Размер входных и выходных данных определяется свойствами ключа и текущего SE.

По умолчанию, размер challenge – 8 байт, размер ответной криптограммы – 6 байт.

 

 

9.8.3 EXTERNAL AUTHENTICATE

Внешняя аутентификация – проверка картой, что внешняя сторона владеет определенным секретом. Команда EXTERNAL AUTHENTICATE должна следовать за командой GET CHALLENGE, причем размер запрошенного случайного числа должен соответствовать алгоритму ключа и/или текущим настройкам SE.

Для блочных симметричных алгоритмов размер СЧ должен быть равен размеру блока, для асимметричных алгоритмов размер СЧ должен быть от 8 до 32 байт.

тип команды in/out (case 4)

формат команды:

CLA 00
INS 82
P1 00
P2 ссылка на ключ
Lc размер входных данных (6)
данные криптограмма
Le -
ответ -

 

 

9.8.4 MUTUAL AUTHENTICATE

Взаимная аутентификация карты и терминала с выработкой сессионного ключа. Команда введена для совместимости с ICAO.

INS команды (82) совпадает с EXTERNAL AUTHENTICATE, а выбор протокола аутентификации (EXTERNAL или MUTUAL) осуществляется на основе настроек текущего SE. Если P2=0 и в SE присутствуют шаблоны CT и CCT с классом операций CALC и VERIFY для обоих шаблонов (см. описание команды MSE), в обоих из которых установлен режим генерации сессионного ключа «ICAO» (тэг 8A), то команда трактуется как MUTUAL AUTHENTICATE.

При этом для корректной работы алгоритма аутентификации в режиме совместимости с ICAO необходимо выполнение также следующих условий:

  • шаблоны CT и CCT ссылаются на различные симметричные ключи с одинаковым алгоритмом;
  • ранее была выполнена команда GET CHALLENGE для генерации случайного числа длиной 8 байт;
  • собственное случайное число терминала не должно совпадать со случайным числом карты;
  • в SE присутствует шаблон HT с классом операций CALC, который ссылается на хэширующий алгоритм, длина хэша которого не меньше длины ключей, на которые ссылаются шаблоны CT и CCT.

 

тип команды in/out (case 4)

формат команды:

CLA 00
INS 82
P1 00
P2 00
Lc размер данных запроса
данные криптограмма для аутентификации ответной части
Le размер данных ответа
ответ криптограмма для аутентификации карты

Формат входных и выходных данных соответствует спецификации ICAO. Длины элементов определяются используемым алгоритмом ключей, на которые ссылаются шаблоны CT и CCT, и определяются согласно следующим зависимостям (в скобках указаны значения длин для 3DES):

Элемент Длина
Случайное число со стороны терминала
Случайное число со стороны карты
8 байт (8 байт)
Ключевой материал со стороны терминала
Ключевой материал со стороны карты
Размер ключа, на которые ссылаются шаблоны CT и CCT (16 байт)
Имитовставка (MAC) со стороны терминала
Имитовставка (MAC) со стороны карты
Стандартизованный размер имитовставки/MAC (8 байт)

Входные данные содержат блок зашифрованных данных и имитовставку/MAC от этих данных (зашифрованных), вычисленную на ключе, на который ссылается шаблон CCT. Блок зашифрованных данных содержит конкатенацию случайного числа терминала, случайного числа карты и ключевого материала терминала, которые зашифрованы на ключе, на который ссылается шаблон CT.

Выходные данные содержат блок зашифрованных данных и имитовставку/MAC от этих данных (зашифрованных), вычисленную на ключе, на который ссылается шаблон CCT. Блок зашифрованных данных содержит конкатенацию случайного числа карты, случайного числа терминала и ключевого материала карты, которые зашифрованы на ключе, на который ссылается шаблон CT.

 

 

9.8.5 GENERAL AUTHENTICATE

Обобщенная команда взаимной аутентификации объединяет функциональность ряда протоколов взаимной аутентификации в едином синтаксисе.

Последовательность команд GENERAL AUTHENTICATE, реализующая единый протокол взаимной аутентификации, объединяется в цепочку (command chaining).

Входные и выходные данные передаются внутри шаблона 7C – данные для динамической аутентификации (только в случае, если данные наличествуют; если данных нет, объемлющий шаблон не используется). Объекты данных внутри этого шаблона имеют контекстно-зависимые тэги, перечисленные в следующей таблице:

Тэг Значение
  Witness – синхропосылка (RFU - не используется)
  Challenge – случайное число
  Response – криптограмма
  Committed challenge – хэш раннее использованных СЧ (RFU - не используется)
  Authentication code – хэш данных операции (RFU - не используется)
  Exponential – компонент в алгоритме DH (RFU - не используется)
  Session Key (RFU - не используется)
  ЭЦП компоненты ключа (RFU - не используется)

Если атрибуты ключа, используемого в данной операции, требуют генерации сессионного ключа, то автоматически генерируется и применяется сессионный ключ.

тип команды in/out (case 4)

формат команды:

CLA 00
INS 87
P1 00
P2 00
Lc размер входных данных
данные входные данные
Le размер выходных данных
ответ выходные данные

INS=86 не поддерживается.

Выбор режима команды определяется входными данными (тэгом и длиной) и предыдущими командами в цепочке.

Предусмотрены следующие стандартные протоколы использования команды:

 

9.8.5.1 Взаимная аутентификация по симметричной схеме

Данный вариант взаимной аутентификации симметричен, в том смысле, что ответной частью при обмене может быть аналогичная карта (модуль безопасности).

В ходе взаимной аутентификации вырабатывается сессионный ключ (если у ключа есть соответствующие свойства).

Недостатком данного варианта является то, что собственная криптограмма выдается до проверки криптограммы ответной части, что является непременным требованием при реализации симметричной схемы.

В настройках SE указывается в каком качестве: модуля безопасности или клиентской карты – выступает карта в настоящий момент.

блок данных назначение блока данных тэг и длина данных
Request 1 запрос СЧ  
Response 1 получить СЧ  
Request 2 передать СЧ ответной части  
Response 2 получить криптограмму  
Request 3 передать криптограмму ответной части  
Response 3 - -

 

9.8.5.2 Взаимная аутентификация по несимметричной схеме.

Данный вариант взаимной аутентификации не симметричен, в том смысле, что ответной частью при обмене не может быть аналогичная карта (как и в MUTUAL AUTHENTICATE).

В ходе взаимной аутентификации вырабатывается сессионный ключ (если у ключа есть соответствующие свойства).

Преимуществом данного варианта является то, что собственная криптограмма выдается только в случае успешной проверки криптограммы ответной части.

блок данных назначение блока данных тэг и длина данных
Request 1 передать СЧ ответной части  
Response 1 получить СЧ карты  
Request 2 передать криптограмму ответной части  
Response 2 получить криптограмму карты  

 

 

9.8.6 VERIFY

Команда проверки пароля.

тип команды in (case 3)

формат команды:

CLA 00
INS 20
P1 00
P2 ссылка на ключ
Lc размер входных данных
данные пароль
или ничего (для получения значения счетчика попыток)
Le -
ответ -

 

характерные статусы ошибок:

63 CX оставшееся число попыток при неверном предъявлении
69 83 пароль блокирован

Если входные данные отсутствуют, то карта сразу возвращает 9000, если пароль уже был предъявлен, или оставшееся число попыток предъявления.

INS=21 не поддерживается.

 

 

9.8.7 CHANGE REFERENCE DATA

Загрузить ключ или пароль.

Если файл был пуст, то требуется право доступа Put, если происходит смена ключа, то требуется право доступа Change.

Примечание: В ОС "Магистра 1.2" секретный ключ RSA загрузить невозможно.

Загрузка секретного ключа RSA выполняется в режиме chaining: сначала выполняется загрузка открытого ключа (e, n) с CLA=10, затем загрузка секретного ключа (d) с CLA=00.

Примечание, для ОС "Магистра 1.30": Аналогично может быть выполнена загрузка ключа ГОСТ 34.10-2001
В случае, если при создании KF, в который загружается ключ, был указан признак необходимости проверки контрольной суммы загружаемого ключа (тэг A5:8F), то к загружаемому ключу в конце необходимо добавить 4 байта значения CRC32. В случае загрузки ключевой пары контрольная сумма высчитывается по конкатенации {открытый ключ, секретный ключ} и добавляется только к секретному ключу. Данная команда позволяет загрузить любые ключи, кроме RSA2048.

 

тип команды in (case 3)

формат команды:

CLA 00
INS 24
P1 01
P2 P2=0 – применить команду к текущему файлу
P2>0 - ссылка на ключ
Lc размер входных данных
данные ключ
Le -
ответ -

 

CHANGE RSA REFERENCE DATA (ОС "Магистра 1.30")

Данная команда позволяет загрузить любые ключи RSA, в т.ч. RSA2048.

Если файл был пуст, то требуется право доступа Put, если происходит смена ключа, то требуется право доступа Change.

Загрузка ключа RSA выполняется в режиме chaining. Ключ может быть разбит на части произвольной длины, которые при загрузке конкатенируются.

Сначала загружаются части открытого ключа, затем секретного.

В случае, если при создании KF, в который загружается ключ было указан признак необходимости проверки контрольной суммы загружаемого ключа (тэг A5::8F), то при загрузке последней части ключа в конце необходимо добавить 4 байта значения CRC32. Контрольная сумма вычисляется по получившемуся после конкатенации блоку данных.

 

тип команды in (case 3)

формат команды:

CLA 90 — загрузка части ключа RSA
80 – загрузка последней части ключа
INS 24
P1 01
P2 P2=0 – применить команду к текущему файлу
P2>0 - ссылка на ключ
Lc длина загружаемой части ключа
+ 4 байта — CRC32, если согласно FCP KF требуется ее проверка и СLA=80
данные часть ключа (+CRC32, если необходимо и СLA=80)
Le -
ответ -

 

 

9.8.8 RESET RETRY COUNTER

Восстановление счетчика оставшихся попыток до его максимального значения и разблокирование ключа (пароля).

тип команды case 1

формат команды:

CLA 00
INS 2C
P1 03
P2 ссылка на ключ
Lc -
данные -
Le -
ответ -

Режимы P1=00,01,02 (связанные с передачей кода разблокирования и сменой пароля) не поддерживаются.

 

 

.