Расчет криптограммы карты SCP03

В соответствии с Спецификацией карты GlobalPlatform Secure Channel '03' Card v2.3 — поправка DVersion 1.1.2, я пытаюсь проверить криптограмму, полученную от eUICC, чтобы установить SCP03 для целевого ISD- П. Я могу сгенерировать вручную и проверить вызов карты, но не могу сгенерировать криптограмму карты. Что мне не хватает?

Host challenge: AF6B2B0E174BA140
Card challenge: E7359F8EEC577E51
Card cryptogram: 86B91FBEA0E67D33
Sequence Number: 000007

keyMAC = keyENC = AA75D7A83CF20FE79C606FF1B7E2CEB4

L = 0040
derviationConstant = 00
Label = 11 x '00' + derviationConstant
context = host challenge + card challenge

input data for CMAC = Label + '00' + L + '01' + context

S-MAC = CMAC('00000000000000000000000600008001AF6B2B0E174BA140E7359F8EEC577E51', keyENC)
(which is S-MAC: D8CA1E32C16EC4528E4BAC561F029DE3)

cardCryptogram = CMAC('00000000000000000000000000004001AF6B2B0E174BA140E7359F8EEC577E51', S-MAC)
(which gives EE97D403A7508CF2D6D0E6002C0FE126 that its 8 most left bytes are not as same as what I got from the eUICC)

person Satan    schedule 19.12.2019    source источник


Ответы (1)


Я проверил криптограмму. Согласно шаблону записи eUICC, я думал, что keyENC и keyMAC одинаковы. С другой стороны, при извлечении статических ключей на основе метода X9.63 я устанавливал длину 32 (16 байт для проверки получения, а остальные — keyENC и keyMAC). Я установил длину 48, получил keyMAC, сгенерировал S-MAC из keyMAC и CMAC(fixedInputData, S-MAC) == cardCryptogram.

person Satan    schedule 20.12.2019