【问题标题】:External authenticate with tachograph smartcard使用行驶记录仪智能卡进行外部身份验证
【发布时间】:2021-05-26 21:57:23
【问题描述】:

我正在使用带有 c# library 的 C# 来读取行驶记录卡中的识别数据。

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

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

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

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

【问题讨论】:

    标签: c# smartcard smartcard-reader pcsc


    【解决方案1】:

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

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

    【讨论】:

    • 好先生,谢谢。我会整天研究这个(如果没有人打扰我)我会及时通知你。你以前也帮过我。您似乎是这些问题上的 Stack Overflow 专家。欣赏!
    • 后续问题:我尝试使用生成密钥对指令来获取公钥。我在 sw1 和 2 上得到了错误,它拨到“指令代码不支持或无效”。它应该是代码 46 或 0x46 但这不起作用。但是,我可以阅读卡证书。有没有办法从卡证书中提取公钥?它有 196 个字节长。如果是这样,您是否知道要阅读哪些文档?
    • 尝试 0x47 而不是 0x46 可能会有所帮助。原则上,您应该能够提取公钥。证书由 1) 公钥、2) 附加信息(签名可能包含或不包含)3) 指示、签名的机构和 4) 签名组成。鉴于 RSA-2048 签名单独需要 256 字节,您可能有椭圆曲线公钥和签名。 X.509 是一种广泛使用的证书方案。
    • 非常感谢您的帮助!我目前正在实习,必须这样做。我将在这周剩下的时间里度过,我会及时通知你!
    • 在您的回答中,您说我必须使用之前必须定义的适当算法。你对如何做到这一点有任何线索吗?使用 MSE 命令?另外,我想使用对称算法,但如果我理解正确的话。这需要所谓的“IV”。我如何从卡中检索它?在旁注中:0x47 似乎也不起作用......所以我读出了证书并尝试从那里获取数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多