使用行车记录仪智能卡进行外部身份验证

问题描述

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

我只需要读出唯一的卡 ID 并且可以使用驱动程序卡完成此操作,我发送正确的 APDU 来完成此操作。我现在正在尝试读出公司卡的 ID,做同样的事情,如我能找到的文档(ECE/TRANS/SC.1/2006/2 和子附录)中所述。这不起作用。

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

如果我是对的,有人知道我可以在哪里/如何从卡中请求公钥吗?以及使用什么算法使用公钥解密挑战,最终将什么发送回卡?

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

解决方法

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...