使用行驶记录仪智能卡进行外部验证

External authenticate with tachograph smartcard

我正在使用 C# 和 c# library 从行驶记录仪卡中读取识别数据。

我只需要读出唯一的卡 ID 就可以用驱动卡做到这一点,我发送正确的 APDU 来完成这个技巧。我现在正在尝试读出公司卡的 ID,做同样的事情,如我能找到的文档(ECE/TRANS/SC.1/2006/2 和子附录)中所述。这行不通。

如果我对文档的理解是正确的,问题是在选择DF和EF之后,必须重新进行身份验证(仅限公司卡)才能从EF中读取唯一标识数据。现在,阅读文档,我可以理解我必须使用“管理安全环境”来 set/request 一个 public 密钥?然后使用“内部验证”、“获取挑战”、运行“外部验证”,最后使用“读取二进制文件”读取数据。但只有在将逻辑设置为正确的 EF 之后。我在这件事上是否正确?

如果我是对的,有没有人明白where/how我可以从卡上请求 public 密钥?以及使用什么算法使用 public 密钥解密挑战,最终将什么发送回卡?

如果我没有理解正确,谁能解释一下使用行驶记录仪智能卡进行身份验证的步骤?使用白痴术语将不胜感激,因为我在这行工作中是全新的,并且仍在努力学习。

多年来我一直没有详细研究行驶记录仪的规格,但这可能会帮助您开始:

  • 挑战只是一个随机数,你必须自己加密(对称算法)或签名(非对称算法)。之前必须定义适当的算法,因为卡必须遵循相同的检查规则。
  • 外部身份验证更有可能使用对称加密(没有人喜欢签署未知的东西,这也可能是消息的哈希码)
  • 检索 public 密钥有两种标准化模式:
    • 要么作为对特殊生成非对称密钥对命令的响应(有一个,它只读取但不生成新密钥)
    • 或在某些要使用标准 READ 命令读取的文件中(例如,具有优势的证书,您可以检查其签名)。哪种情况适用必须在规范中说明。
  • Manage Security Environment 只是通知卡,将哪个密钥用于 PSO 等后续操作,给出其控制参考模板、id 和使用限定符