问题描述
我使用 C# 和 c# library 从行驶记录卡中读出识别数据。
我只需要读出唯一的卡 ID 并且可以使用驱动程序卡完成此操作,我发送正确的 APDU 来完成此操作。我现在正在尝试读出公司卡的 ID,做同样的事情,如我能找到的文档(ECE/TRANS/SC.1/2006/2 和子附录)中所述。这不起作用。
如果我正确理解了文档,问题是在选择了 DF 和 EF 之后,必须重新进行身份验证(仅在公司卡上)以从 EF 读取唯一标识数据。现在,阅读文档,我可以理解我必须使用“管理安全环境”来设置/请求公钥?然后使用“内部验证”、“获取质询”、运行“外部验证”,最后使用“读取二进制文件”读出数据。但只有在将逻辑设置为正确的 EF 之后。我在这件事上正确吗?
如果我是对的,有人知道我可以在哪里/如何从卡中请求公钥吗?以及使用什么算法使用公钥解密挑战,最终将什么发送回卡?
如果我没有正确理解,谁能解释一下使用行车记录仪智能卡进行身份验证的步骤?使用白痴术语将不胜感激,因为我在这行工作中完全陌生并且仍在努力学习。
解决方法
多年来我一直没有详细研究行车记录仪规范,但这可能会帮助您开始:
- 挑战只是一个随机数,您必须自己对其进行加密(对称算法)或签名(非对称算法)。必须事先定义适当的算法,因为卡片必须遵循相同的检查规则。
- 外部身份验证更有可能使用对称加密(没有人喜欢签署未知的东西,这也可能是消息的哈希码)
- 有两种用于检索公钥的标准化模式:
- 作为对特殊生成非对称密钥对命令的响应(有一个,它只是读取但不生成新密钥)
- 或在某些要使用标准 READ 命令读取的文件中(例如,具有优势的证书,您可以检查其签名)。必须在规范中说明适用哪种情况。
- Manage Security Environment 只是通知卡,将哪个密钥用于 PSO 等后续操作,并提供其控制参考模板、ID 和使用限定符