В таблице 1 собраны минимальные требования безопасности для APDU-команд.
4.2.1 Команда INITIALIZE UPDATE
4.2.1.1 Назначение и применение
Команда INITIALIZE UPDATE используется при установке защищенного соединения для передачи данных карты и сессионных данных между картой и хостом. Эта команда инициирует установку сессии защищенного соединения.
В любой момент в течение текущего защищенного соединения команда INITIALIZE UPDATE может быть выдана карте для инициирования новой сессии защищенного соединения.
4.2.1.2 Командное сообщение
В таблице 2 показан формат командного сообщения INITIALIZE UPDATE.
4.2.1.3 Ответное сообщение
Поле данных в ответном сообщении содержит конкатенацию без разделителей элементов данных, описанных в таблице 3.
4.2.1.4 Обработка состояния, возвращаемого в ответном сообщении
При успешном выполнении команды байты статуса имеют значение '0x90' '0x00'.
Данная команда может возвращать одну из ошибок состояния INITIALIZE UPDATE, определенных в таблице 4.
4.2.2 Команда EXTERNAL AUTHENTICATE
4.2.2.1 Назначение и применение
Команда EXTERNAL AUTHENTICATE используется картой во время инициирования защищенного соединения для аутентификации хоста и определения уровня безопасности, требуемого для последующих команд.
Этой команде должно предшествовать успешное выполнение команды INITIALIZE UPDATE.
4.2.2.2 Командное сообщение
В таблице 5 показан формат командного сообщения EXTERNAL AUTHENTICATE.
Возможные значения управляющего параметра P1 команды EXTERNAL AUTHENTICATE описаны в таблице 6.
4.2.2.3 Обработка состояния, возвращаемого в ответном сообщении
Об успешном выполнении команды свидетельствуют значения байт статуса '0x90' '0x00'.
Эта команда может возвращать один из кодов предупреждения команды EXTERNAL AUTHENTICATE, определенных в таблице 7.
Текущий уровень безопасности (Current Security Level) какого-либо обмена сообщениями, не включенного в сессию защищенного соединения, должен быть установлен в значение NO_SECURITY_LEVEL.
Текущий уровень безопасности (Current Security Level) для сессии защищенного соединения SCP-F2 представляет собой комбинацию следующих битов: AUTHENTICATED, C_MAC, R_MAC и C_DECRYPTION. Текущий уровень безопасности (Current Security Level) должен формироваться следующим образом:
- NO_SECURITY_LEVEL, если сессия защищенного соединения завершена или еще не полностью установлена;
- AUTHENTICATED устанавливается после успешной обработки команды EXTERNAL AUTHENTICATE. Бит AUTHENTICATED должен быть сброшен, как только сессия защищенного соединения завершена;
- C_MAC устанавливается после успешной обработки команды EXTERNAL AUTHENTICATE с управляющим параметром P1, указывающим на применение C-MAC (P1 = 'x1' или 'x3'). Бит C_MAC должен быть сброшен, как только сессия защищенного соединения завершена. C_MAC синхронизирован с AUTHENTICATED и одновременно с ним выставляется и сбрасывается;
- C_DECRYPTION устанавливается после успешной обработки команды EXTERNAL AUTHENTICATE с управляющим параметром P1, указывающим на шифрование команды (P1 = 'x3'). Бит C_DECRYPTION должен быть сброшен, как только сессия ЗОС завершена. C_DECRYPTION всегда синхронизирован с AUTHENTICATED и C_MAC и одновременно с ними выставляется и сбрасывается;
- R_MAC устанавливается после успешной обработки команды EXTERNAL AUTHENTICATE со значением управляющего параметра P1, указывающим на R-MAC (P1 = '1x'). Бит R_MAC должен быть сброшен, как только сессия защищенного соединения завершена. R_MAC всегда используется вместе с AUTHENTICATED и одновременно с ним выставляется и сбрасывается. R_MAC может также сочетаться с C_MAC или C_DECRYPTION (в соответствии со значением управляющего параметра P1 команды EXTERNAL AUTHENTICATE) и одновременно с ними устанавливаться и сбрасываться.
К протоколу SCP-F2 применяются следующие правила:
- при успешной установке сессии защищенного соединения текущий уровень безопасности (Current Security Level) устанавливается в значение, указанное в команде EXTERNAL AUTHENTICATE;
- текущий уровень безопасности (Current Security Level) сохраняется в течение всей сессии защищенного соединения до тех пор, пока не будет успешно модифицирован по запросу приложения карты, открывшего эту сессию;
- когда текущий уровень безопасности (Current Security Level) не установлен в значение AUTHENTICATED (имеет значение NO_SECURITY_LEVEL), то:
- если сессия защищенного соединения была прервана во время той же самой сессии приложения, входящая команда должна быть отклонена с ошибкой безопасности;
- в противном случае верификация безопасности входящей команды не производится;
- если сессия защищенного соединения задействована для входящих команд (то есть Current Security Level установлен как минимум в AUTHENTICATED), безопасность входящей команды проверяется в соответствии с текущим уровнем безопасности (Current Security Level) независимо от признаков ЗОС в байте CLA заголовка команды:
- когда безопасность команды не соответствует текущему уровню безопасности (Current Security Level) (в том числе превышает), команда должна быть отвергнута с ошибкой безопасности, сессия защищенного соединения прервана, а текущий уровень безопасности (Current Security Level) сброшен в NO_SECURITY_LEVEL;
- если обнаружена ошибка протокола (некорректная криптограмма, неверный формат команды), команда должна быть отвергнута с ошибкой безопасности, сессия защищенного соединения прервана, а текущий уровень безопасности (Current Security Level) сброшен в значение NO_SECURITY_LEVEL;
- во всех остальных случаях сессия защищенного соединения остается активной, а значение текущего уровня безопасности (Current Security Level) неизменным. За дальнейшую обработку команды отвечает приложение;
- если сессия защищенного соединения прервана (ABORTED), она еще не считается завершенной (TERMINATED);
- текущая сессия защищенного соединения (прерванная или еще открытая) должна быть завершена, а текущий уровень безопасности (Current Security Level) сброшен в значение NO_SECURITY_LEVEL в следующих случаях:
- попытка инициирования новой сессии защищенного соединения (новая команда INITIALIZE UPDATE);
- завершение сессии приложения (например, выбор нового приложения);
- завершение сессии карты (карта сброшена или выключено ее питание).
Для SCP-F2 применяются криптографические алгоритмы, описанные в ГОСТ 28147-89, и алгоритмы хэширования, описанные в ГОСТ Р 34.11-2012.
При использовании алгоритмов шифрования ГОСТ 28147-89 должны использоваться следующие параметры алгоритма (узлы замены):
id-tc26-gost-28147-param-Z, "1.2.643.7.1.2.5.1.1".
4.5.1 Режим сцепления блоков для ГОСТ 28147-89
4.5.1.1 Зашифрование
Открытый и при необходимости дополненный текст
Блоки шифртекста вычисляются по следующему правилу:
C0 = 064,
, i = 1, 2,..., q.Результирующий шифртекст имеет вид: C = C1||C2||...||Cq.
4.5.1.2 Расшифрование
Шифртекст представляется в виде: C = C1||C2||...||Cq,
, i = 1, 2,..., q.Блоки открытого текста вычисляются по следующему правилу:
C0 = 064,
.Исходный (дополненный) открытый текст имеет вид: P = P1||P2||...||Pq.
4.5.2 Сессионные ключи ГОСТ 28147-89
Сессионные ключи ГОСТ 28147-89 генерируются каждый раз при установлении защищенного соединения. Эти сессионные ключи должны быть использованы для защиты всех последующих команд.
4.5.2.1 Сессионный ключ для вычисления имитовставки запроса C-MAC
Формирование сессионного ключа
,где:
Kin = KMAC
label = (0x01||0x01)
seed = ATC,
то есть
.4.5.2.2 Сессионный ключ для вычисления имитовставки ответа R-MAC
Формирование сессионного ключа
,где:
Kin = KMAC
label = (0x01||0x02)
seed = ATC,
то есть
.4.5.2.3 Сессионный ключ для формирования/проверки криптограммы аутентификации
Формирование сессионного ключа
SENC = KDF(Kin, label, seed) = HMAC256(Kin, 0x01||label||0x00||seed||0x01||0x00),
где:
Kin = KENC
label = (0x01||0x82)
seed = ATC,
то есть
SENC = HMAC256(KENC, 0x01||label||0x00||ATC||0x01||0x00).
4.5.2.4 Сессионный ключ для шифрования/расшифрования критичных данных
Формирование сессионного ключа
SDEC = KDF(Kin, label, seed) = HMAC256(Kin, 0x01||label||0x00||seed||0x01||0x00),
где:
Kin = KDEC
label = (0x01||0x81)
seed = ATC,
то есть
SENC = HMAC256(KDEC, 0x01||label||0x00||ATC||0x01||0x00).
4.5.3 Криптограмма аутентификации при инициировании защищенного соединения
Как карта, так и терминальное устройство (хост) генерируют криптограммы аутентификации. Терминальное устройство верифицирует криптограмму карты, а карта верифицирует криптограмму хоста. При генерации и верификации криптограмм аутентификации используется сессионный ключ SENC в режиме сцепления блоков. Криптограмма аутентификации представляет собой старшие (первые) 6 байтов последнего блока.
4.5.3.1 Криптограмма аутентификации карты
Генерация и верификация криптограммы карты выполняется посредством конкатенации 8 байтов случайного числа хоста (терминального устройства), 2 байтов счетчика сессий и 6 байтов случайного числа карты в один 16-байтовый блок.
Эти данные должны быть дополнены блоком из 8 байтов - ('0x80'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00').
Далее к этому 24-байтовому блоку применяется алгоритм зашифрования ГОСТ 28147-89 в режиме сцепления блоков с использованием сессионного ключа SENC и синхропосылки ICV = ('0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00').
Криптограмма аутентификации представляет собой старшие (первые) 6 байтов последнего блока.
4.5.3.2 Криптограмма аутентификации хоста
Генерация и верификация криптограммы хоста выполняется посредством конкатенации 2 байтов последовательного счетчика, 6 байтов случайного числа карты и 8 байтов случайного числа хоста в один 16-байтовый блок.
Эти данные должны быть дополнены блоком из 8 байтов - ('0x80'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00').
Далее к этому 24-байтовому блоку применяется алгоритм шифрования ГОСТ 28147-89 в режиме сцепления блоков с использованием сессионного ключа SENC и синхропосылки ICV = ('0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00'||'0x00').
Криптограмма аутентификации представляет собой старшие (первые) 6 байтов последнего блока.
4.5.4 Генерация и верификация имитовставки C-MAC APDU-команды
Имитовставка запроса (C-MAC) генерируется терминальным устройством по всем полям APDU запроса, кроме Le.
Имитовставка C-MAC имеет размер 4 байта и вычисляется по следующей схеме:
1 C-MAC формируется для всех команд, начиная с EXTERNAL AUTHENTICATE. Для вычисления первого C-MAC0 команды EXTERNAL AUTHENTICATE используется синхропосылка, состоящая из двоичных нулей;
2 Для всех последующих команд в качестве синхропосылки ICVC используется имитовставка предыдущей команды, выровненная стандартным способом [добавление справа ('0x80'||'0x00'||'0x00'||'0x00')] и зашифрованная по ГОСТ 28147-89 в режиме простой замены с сессионным ключом для расчета имитовставки
, i = 1,...;3 Корректируется Lc с учетом добавления C-MAC к полю данных запроса, то есть
Lc' = Lc + 4 (Lc' - модифицированный Lc);
4 Модифицируется CLA: устанавливается бит защиты сообщений (в 3-й бит устанавливается значение '1'). CLA' - модифицированный CLA;
5 Подготавливаются данные для вычисления C-MAC:
M = (CLA'||INS||P1||P2||Lc'||[Data]);
6 Выполняется вычисление имитовставки по алгоритму ГОСТ 28147-89 на сессионном ключе
;7 C-MAC добавляется в конец командного сообщения APDU к полю данных.
После вычисления C-MAC APDU команда имеет вид:
APDU = CLA'||INS||P1||P2||Lc'||Data||C-MAC.
Чтобы верифицировать имитовставку C-MAC, карта использует синхропосылку ICVC и сессионный ключ
Если сессия защищенного соединения происходит на вспомогательном логическом канале (Supplementary Logical Channel), номер логического канала добавляется к байту класса сообщения после генерации имитовставки C-MAC и до передачи сообщения карте. Карта должна удалять любую информацию о логическом канале из байта класса (то есть считать, что номер логического канала равен нулю) перед верификацией имитовставки C-MAC.
4.5.5 Генерация и верификация имитовставки R-MAC APDU-ответа
Протокол SCP-F2 предусматривает возможность контроля целостности ответных сообщений при помощи имитовставки R-MAC. Если при инициировании сессии защищенного соединения указан уровень безопасности, предполагающий вычисление R-MAC, то имитовставка R-MAC автоматически присоединяется ко всем ответным сообщениям, не считая первого (на команду EXTERNAL AUTHENTICATE).
Имитовставка R-MAC имеет размер 4 байта и вычисляется по следующей схеме:
1 R-MAC вычисляется, начиная со следующей после EXTERNAL AUTHENTICATE команды. В качестве ICVR для вычисления первого R-MAC берется C-MAC от команды EXTERNAL AUTHENTICATE, дополненный до 8 байтов нулями, то есть
;2 Для всех последующих команд в качестве ICVR берется предыдущий R-MAC, дополненный до 8 байтов нулями, то есть
, i = 2,...;3 В байте CLA команды сбрасываются биты защищенного обмена и номер логического канала (CLA' - модифицированный CLA);
4 Выставляется байт Li, в котором закодирована длина данных ответа по модулю 256. Li генерируется картой. Если данных ответа нет, этот байт все равно присутствует и установлен в ноль. В случае ошибки байт Li выставляется в '0x00', указывая на отсутствие данных ответа;
5 Подготавливаются данные для вычисления R-MAC:
M = (CLA'||INS||P1||P2||Lc (без учета шифрования и C-MAC)||
Data (без шифрования и C-MAC)||Li||R-Data (данные ответа)||SW);
6 Выполняется вычисление имитовставки по ГОСТ 28147-89 на сессионном ключе
;7 R-MAC добавляется к полю ответа.
После вычисления R-MAC APDU команда имеет вид:
APDU = CLA'||INS||P1||P2||Lc||Data||Li||R-Data||R-MAC||SW.
Сгенерированная имитовставка R-MAC должна сохраняться и использоваться как синхропосылка ICVR для вычисления следующего значения R-MAC, независимо от того, выполнена APDU-команда успешно или нет. В случае обработки команд, в которых не предусмотрено поле данных ответа, добавляется поле Le, равное нулю, что означает готовность терминала принять до 256 байтов данных в ответе.
4.5.6 Шифрование поля данных APDU-команды
В SCP-F2 для всех APDU-команд может применяться шифрование сообщений.
Терминальное устройство зашифровывает поле данных командного сообщения, передаваемого карте. Любая ключевая информация внутри поля данных, которая шифруется на сессионном ключе шифрования критичных данных SDEC, например секретные или закрытые ключи, также шифруется вместе с другими данными. Заголовок и имитовставка при этом не шифруются.
Шифрование и расшифрование командного сообщения производится с использованием ГОСТ 28147-89 в режиме сцепления блоков, с использованием сессионного ключа SENC и синхропосылки ICVE, которая вычисляется следующим образом:
Синхропосылка ICVE для команды-запроса вычисляется по схеме:
, i = 1,...Синхропосылка ICVE для команды-ответа вычисляется по схеме:
, i = 1,...Результат операции становится частью поля данных в командном сообщении.
Перед шифрованием данных они должны быть выровнены согласно следующей процедуре:
- добавить '0x80' справа от блока данных;
- если полученная длина блока данных кратна 64 битам, то дальнейшее заполнение не требуется;
- добавлять двоичные нули в правой части блока данных, пока длина блока данных не станет кратной 64 битам.
В отличие от имитовставки байты выравнивания теперь становятся частью поля данных, в результате чего снова требуется изменить значение Lc. Шифрование данных выполняется после вычисления имитовставок C-MAC и R-MAC, если они предусмотрены действующим уровнем безопасности.
Сообщение передается карте. Карта должна сначала расшифровать командное сообщение и удалить байты выравнивания, прежде чем анализировать имитовставку C-MAC. При расшифровании используется синхропосылка ICVE, вычисленная по той же схеме, что и для шифрования, и тот же сессионный ключ SENC. Байты выравнивания должны быть удалены, а длина Lc модифицирована. В результате длина Lc будет равна сумме длины оригинального текста и длины имитовставки C-MAC.
4.5.7 Шифрование и расшифрование критичных данных
Шифрование данных используется при передаче карте критичных данных. Например, в команде PUT KEY необходимо шифровать все передаваемые карте ключи.
Процесс шифрования данных производится с использованием ГОСТ 28147-89 в режиме сцепления блоков, с использованием сессионного ключа SDEC и синхропосылки ICVE, которая вычисляется следующим образом:
Синхропосылка ICVE для команды-запроса вычисляется по схеме:
, i = 1,...Синхропосылка ICVE для команды-ответа вычисляется по схеме:
, i = 1,...Поскольку все стандартные ключи имеют длину 32 байта (кратны размеру блока - 8 байтов), выравнивание для операций шифрования не требуется.
К зашифрованным критичным данным применяются все криптографические операции защищенного обмена сообщениями (шифрование, вычисление C-MAC, R-MAC), как к обыкновенным данным команды.
Процесс расшифрования критичных данных картой прямо противоположен описанной выше операции: в частности, при операции расшифрования не удаляются выравнивающие байты, так как выравнивание не используется.
Введем коды для криптографических алгоритмов на эллиптических кривых, которые можно использовать для ГОСТ Р 34.10-2012:
'B0' - ECC public key;
'B1' - ECC private key.
Управление контентом карты осуществляется согласно базовой спецификации с учетом следующих особенностей.
4.6.1 Проверка DAP-блока
Провайдер приложения или контролирующий орган могут потребовать проверить целостность кода приложения и аутентификацию до того, как код приложения загружен, установлен или доступен держателю карты. Привилегии обязательной DAP-верификации предоставляют данные сервисы от имени контролирующего органа.
Проверка DAP-блока осуществляется с использованием алгоритма ГОСТ 28147-89 в режиме вычисления имитовставки. Для генерации Load File Data Block Hash должен использоваться алгоритм ГОСТ Р 34.11-2012 (длина выходного значения хэш-функции равна 256 битов). Для вычисления имитовставки от хэш-значения используется отдельный ключ K-DAP. Длина имитовставки - 4 байта.
4.6.2 Токены
Токены делегированного управления являются подписями одной или нескольких функций делегированного управления (загрузка, установка и выгрузка), сформированных эмитентом карты и использующихся для обеспечения контроля эмитентом карты изменений ее контента. Токены требуются, когда Домен Безопасности Эмитента (ISD) не может сам отслеживать изменения. ISD должен проверять токены.
Для вычисления токенов используется алгоритм вычисления ЭП ГОСТ Р 34.10-2012 вместе с алгоритмом хэширования ГОСТ Р 34.11-2012. Управление ключами производится согласно документу [2]. Размер подписи - 64 байта.
4.6.3 Квитанции (receipts)
ISD может формировать квитанции в процессе делегированного управления. Квитанции подтверждают эмитенту карты, что диспетчер приложения изменил контент карты.
Для вычисления квитанций используется алгоритм ГОСТ 28147-89 в режиме вычисления имитовставки. Длина квитанции соответствует длине имитовставки - 4 байта.
(справочное)
Приводимые ниже значения счетчика ATC, случайных чисел карты и хоста, данных APDU-команд, а также значения мастер-ключей KMAC, KENC, KDEC рекомендуется использовать только для проверки корректной работы конкретной реализации алгоритмов, описанных в настоящих рекомендациях.
Все числовые значения приведены в десятичной или шестнадцатеричной записи. Нижний индекс в записи числа обозначает основание системы счисления.
В данном приложении двоичные строки из V*, длина которых кратна 4, записываются в шестнадцатеричном виде, а символ конкатенации ("||") опускается. То есть строка
, i = 0, 1,..., r - 1. Соответствие между двоичными строками длины 4 и шестнадцатеричными строками длины 1 задается естественным образом (таблица А.1).Таблица А.1
Преобразование, ставящее в соответствие двоичной строке длины 4r шестнадцатеричную строку длины r, и соответствующее обратное преобразование для простоты записи опускаются.
Символ "\\" обозначает перенос числа на новую строку.
А.1 Исходные данные
ATC = 001016
Случайное число карты: 01020304050616
Случайное чисто хоста: 010203040506070816
А.1.1 Сессионные ключи
Мастер-ключи:
А.1.1.1 Сессионный ключ для вычисления имитовставки запроса C-MAC
Для вычисления сессионного ключа
![]() А.1.1.2 Сессионный ключ для вычисления имитовставки ответа R-MAC
Для вычисления сессионного ключа
![]() А.1.1.3 Сессионный ключ для формирования/проверки криптограммы аутентификации
Для вычисления сессионного ключа SENC используются мастер-ключ KENC и константа label = 018216. На основе этих исходных данных получаем следующее значение сессионного ключа SENC:
А.1.1.4 Сессионный ключ для шифрования/расшифрования критичных данных
Для вычисления сессионного ключа SDEC используются мастер-ключ KDEC и константа label = 018116. На основе этих исходных данных получаем следующее значение сессионного ключа SDEC:
А.1.2 Криптограмма аутентификации карты
Для вычисления криптограммы аутентификации карты используются сессионный ключ SENC, случайное число карты, случайное число хоста и счетчик сессий. На основе этих исходных данных получаем следующее значение криптограммы карты:
cardCryptogram = ab404dd3a93116
А.1.3 Криптограмма аутентификации хоста
Для вычисления криптограммы аутентификации хоста используются сессионный ключ SENC, случайное число карты, случайное число хоста и счетчик сессий. На основе этих исходных данных получаем следующее значение криптограммы хоста:
terminalCryptogram = 2b9b124505c016
А.1.4 Генерация имитовставки C-MAC APDU-команды
Для вычисления имитовставки C-MAC для команды EXTERNAL AUTHENTICATE используются сессионный ключ
(CLA||INS||P1||P2||Lc||Data) = (84||82||13||00||06||2b9b124505c0)16
ICV = 0000000016
На основе этих исходных данных получаем следующее значение C-MAC:
C-MAC = 9843485416
Тогда APDU-команда будет иметь вид:
EXTERNAL AUTHENTICATE = 848213000a2b9b124505c09843485416
А.1.5 Генерация имитовставки R-MAC APDU-команды
Для вычисления имитовставки R-MAC для команды, следующей за EXTERNAL AUTHENTICATE, используются сессионный ключ
(CLA||INS||P1||P2||Lc||Data) = (84||ca||13||00||03||119a10)16
Данные ответа отсутствуют, то есть: (Li||R-Data) = (00)16
SW = 900016
ICV = 9843485416
На основе этих исходных данных получаем следующее значение R-MAC:
R-MAC = 3d82433716
Тогда APDU-команда будет иметь вид:
APDU = 84ca130003119a10003d824337900016
А.1.6 Шифрование поля данных APDU-команды
Команда APDU с имитовставкой C-MAC:
APDU = 84ca130007119a1014ac12dc16
Следовательно, шифруются данные: Data = 119a1016
После шифрования поля данных на сессионном ключе SENC команда принимает вид:
APDU = 84ca13000c7b91cf97ccc6a3d014ac12dc16
А.1.7 Шифрование критичных данных APDU-команды
Команда APDU с критичными данными и имитовставкой C-MAC:
Следовательно, шифруются критичные данные:
После шифрования критичных данных на сессионном ключе SDEC команда принимает вид:
А.2 Исходные данные
ATC = 000316
Случайное число карты: 11021304151616
Случайное чисто хоста: 612233540506293816
А.2.1 Сессионные ключи
Мастер-ключи:
А.2.1.1 Сессионный ключ для вычисления имитовставки запроса C-MAC
Для вычисления сессионного ключа
![]() А.2.1.2 Сессионный ключ для вычисления имитовставки ответа R-MAC
Для вычисления сессионного ключа
![]() А.2.1.3 Сессионный ключ для формирования/проверки криптограммы аутентификации
Для вычисления сессионного ключа SENC используются мастер-ключ KENC и константа label = 018216. На основе этих исходных данных получаем следующее значение сессионного ключа SENC:
А.2.1.4 Сессионный ключ для шифрования/расшифрования критичных данных
Для вычисления сессионного ключа SDEC используются мастер-ключ KDEC и константа label = 018116. На основе этих исходных данных получаем следующее значение сессионного ключа SDEC:
А.2.2 Криптограмма аутентификации карты
Для вычисления криптограммы аутентификации карты используются сессионный ключ SENC, случайное число карты, случайное число хоста и счетчик сессий. На основе этих исходных данных получаем следующее значение криптограммы карты:
cardCryptogram = 9fe76e33976b16
А.2.3 Криптограмма аутентификации хоста
Для вычисления криптограммы аутентификации хоста используются сессионный ключ SENC, случайное число карты, случайное число хоста и счетчик сессий. На основе этих исходных данных получаем следующее значение криптограммы хоста:
terminalCryptogram = 1be4f4ae3e0316
А.2.4 Генерация имитовставки C-MAC APDU-команды
Для вычисления имитовставки C-MAC для команды EXTERNAL AUTHENTICATE используются сессионный ключ
(CLA||INS||P1||P2||Lc||Data) = (84||82||13||00||06||1be4f4ae3e03)16
ICV = 0000000016
На основе этих исходных данных получаем следующее значение C-MAC:
C-MAC = f43be2fb16
Тогда APDU-команда будет иметь вид:
EXTERNAL AUTHENTICATE = 848213000a1be4f4ae3e03f43be2fb16
А.2.5 Генерация имитовставки R-MAC APDU-команды
Для вычисления имитовставки R-MAC для APDU-команды используются сессионный ключ
Данные ответа:
На основе этих исходных данных получаем следующее значение R-MAC:
R-MAC = 4aca4f1416
Тогда APDU-команда будет иметь вид:
А.2.6 Шифрование поля данных APDU-команды
Команда EXTERNAL AUTHENTICATE с имитовставкой C-MAC:
EXTERNAL AUTHENTICATE = 848213000a1be4f4ae3e03f43be2fb16
Следовательно, шифруются данные: Data = 1be4f4ae3e0316
После шифрования поля данных на сессионном ключе SENC команда принимает вид:
EXTERNAL AUTHENTICATE = 848213000c8b33b1ddf6dcfabaf43be2fb16
А.2.7 Шифрование критичных данных APDU-команды
Команда APDU с критичными данными:
Следовательно, шифруются критичные данные:
После шифрования критичных данных на сессионном ключе SDEC команда принимает вид:
А.3 Исходные данные
ATC = 000116
Случайное число карты: 11221356238916
Случайное чисто хоста: 783233631206293416
А.3.1 Сессионные ключи
Мастер-ключи:
А.3.1.1 Сессионный ключ для вычисления имитовставки запроса C-MAC
Для вычисления сессионного ключа
![]() А.3.1.2 Сессионный ключ для вычисления имитовставки ответа R-MAC
Для вычисления сессионного ключа
![]() А.3.1.3 Сессионный ключ для формирования/проверки криптограммы аутентификации
Для вычисления сессионного ключа SENC используются мастер-ключ KENC и константа label = 018216. На основе этих исходных данных получаем следующее значение сессионного ключа SENC:
А.3.1.4 Сессионный ключ для шифрования/расшифрования критичных данных
Для вычисления сессионного ключа SDEC используются мастер-ключ KDEC и константа label = 018116. На основе этих исходных данных получаем следующее значение сессионного ключа SDEC:
А.3.2 Криптограмма аутентификации карты
Для вычисления криптограммы аутентификации карты используются сессионный ключ SENC, случайное число карты, случайное число хоста и счетчик сессий. На основе этих исходных данных получаем следующее значение криптограммы карты:
cardCryptogram = b845e5f95f3716
А.3.3 Криптограмма аутентификации хоста
Для вычисления криптограммы аутентификации хоста используются сессионный ключ SENC, случайное число карты, случайное число хоста и счетчик сессий. На основе этих исходных данных получаем следующее значение криптограммы хоста:
terminalCryptogram = eb3203fc84ab16
А.3.4 Генерация имитовставки C-MAC APDU-команды
Для вычисления имитовставки C-MAC для команды EXTERNAL AUTHENTICATE используются сессионный ключ
(CLA||INS||P1||P2||Lc||Data) = (84||82||13||00||06||eb3203fc84ab)16
ICV = 0000000016
На основе этих исходных данных получаем следующее значение C-MAC:
C-MAC = 3b6ccdb416
Тогда APDU-команда будет иметь вид:
EXTERNAL AUTHENTICATE = 848213000aeb3203fc84ab3b6ccdb416
А.3.5 Генерация имитовставки R-MAC APDU-команды
Для вычисления имитовставки R-MAC для APDU-команды используются сессионный ключ
(CLA||INS||P1||P2||Lc||Data) = (84||ca||13||00||06||119aba122190)16
Данные ответа: (Li||R-Data) = (07||000120aa809012)16
SW = 900016
ICV = 4aca4f1416
На основе этих исходных данных получаем следующее значение R-MAC:
R-MAC = 814dbd0f16
Тогда APDU-команда будет иметь вид:
А.3.6 Шифрование поля данных APDU-команды
Команда APDU с имитовставкой R-MAC:
APDU = 84ca130006119aba12219007000120aa809012814dbd0f900016
Следовательно, шифруются данные:
Data = 119aba12219016
R-Data = 000120aa80901216
После шифрования поля данных на сессионном ключе SENC команда принимает вид:
APDU = 84ca13000833dfc3b82e3bd06c0864fc317abf1062aa814dbd0f900016
А.3.7 Шифрование критичных данных APDU-команды
Команда APDU с имитовставкой C-MAC и критичными данными:
Следовательно, шифруются критичные данные:
После шифрования критичных данных на сессионном ключе SDEC команда принимает вид:
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/prikaz/74/r_20186.html
На правах рекламы:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||