【问题标题】:SCP03 External AuthenticateSCP03 外部认证
【发布时间】:2020-01-17 16:28:03
【问题描述】:

我正在尝试使用 SCP03 在 eUICC 上进行相互身份验证。当我向卡发送外部身份验证命令时,我收到了它的响应:AF8023026985,我相信 SW = 6985。

谁能告诉我我错过了什么?

这就是我在 Python 3 中生成外部身份验证命令的方式:

extAuthCmdBase = '8482330010'
initialStrForMac = 16 * '00' + extAuthCmdBase + hostCryptogram
C_MAC = aes.CMAC(initialStrForMac, sMAC)
extAuthAPDU = extAuthCmdBase + hostCryptogram + C_MAC[:16]
len_apdu = hex(len(extAuthAPDU))[2:].upper().zfill(2)
expExtAuthAPDU = 'AE80' + '22' + len_apdu + extAuthAPDU + '0000'

【问题讨论】:

  • 我看到很多包含十六进制数字的字符串,我希望在其中使用字节,例如。 G。在 initialStrForMac 中,'00' 必须替换为 '\x00'。鉴于这会影响每一个命令:你在哪里隐藏了到二进制的转换?
  • 感谢您的评论@guidot。 16*''00'16*\x00' 的转换发生在 aes.CMAC() 中,我将十六进制字符串转换为 bytes.fromhex(hexString)

标签: smartcard sim-card emv globalplatform


【解决方案1】:

我终于从分机得到了 SW = 9000。授权。

使用脚本链来初始化更新和扩展。授权命令。

所有这些初始化更新和外部身份验证命令都应在一个会话中发送。这取决于 eUICC 的操作系统的编程方式,可以通过脚本链接概念来实现,通过该概念,eUICC 将理解会话将继续,并且主机将发送进一步的后续命令。

有关脚本链接过程的了解,请参阅 ETSI TS 102 226,脚本链接 TLV 部分。

初始化更新命令的标签:'AE80830101' 外部认证命令的标签:'AE80830102'

这里使用的标签制度是远程管理应用程序命令“安全数据”的扩展格式 - 不定长编码。

【讨论】:

  • 虽然很明显 Get Challenge 和 External Authenticate 必须出现在同一个会话中,但初始化应该是不相关的。
猜你喜欢
  • 2023-03-05
  • 2019-05-11
  • 2012-08-16
  • 2017-10-16
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多