【问题标题】:How to get a unique smart card ID?如何获得唯一的智能卡 ID?
【发布时间】:2016-09-21 06:56:58
【问题描述】:

我正在寻找一种方法来为我使用的每张智能卡找到一个唯一编号。我听说每张卡都有唯一的 IC 制造日期、IC 序列号和 IC 批次标识符。

如何从我的卡中获取这些信息?

【问题讨论】:

  • 这个链接可以帮助解决这个问题:stackoverflow.com/questions/37640130/…
  • 检查 GlobalPlatform 卡规范中的 GET Data APDU 命令。并查看gp.exe -l -v -d -i 的输出。在那里您可以看到相关的 APDU 命令及其输出,用于检索 IC 序列号、IC 制造数据等。
  • 为什么不为自己的小程序编写一对简单的setSerialNumgetSerialNum() 方法来返回唯一的序列号?您是否担心模拟您的小程序的方法?我向你保证,黑客也可以模拟卡片的独特响应。黑客可以编写一个具有您卡 SD 的 AID 的小程序并将其设置为默认选择,并且每次您请求 SN 的安全域时,他/她的小程序都会返回任意值(除非您使用安全通道。在安全通道的情况下您的小程序或安全域的安全会话之间没有区别。)
  • This one 也可能会有所帮助(只要您的卡是“健全”的 java 卡)。祝你好运!
  • @Abraham 感谢您的提示,我使用了第一个,仅此而已。你能留下一个答案让我把它当作真实的回应吗?

标签: smartcard javacard


【解决方案1】:

当然,每个硬件供应商都会将上述信息集成到芯片中。不幸的是,这留下了以下问题:

  • 操作系统可能会也可能不会提供这些信息
  • 在全球维护的一字节制造商 ID 下,几个硬件供应商之间几乎没有共同点(参见例如chip manufacturer byte);因此,晶圆上的 x 和 y 坐标可能因制造商而异,并且该块的长度甚至可能因芯片而异。在任何情况下都需要硬件参考手册。

总结:如果您需要一个唯一的信息,规范必须在一开始就说明这一点,很可能通过指定的指令来检索它。在多供应商环境中,其他一切都可能失败。剩下的唯一选择是,添加一种 ID 作为用户数据,由您自己管理。


由亚伯拉罕附加:

由于问题标有javacard,因此我们得出结论,您的卡是GlobalPlatform 兼容卡。

1:对于GP卡,SD(安全域:默认安装在卡上的强制小程序)负责返回卡的特定数据,包括IC制造日期、IC序列号和IC批次标识符等。只要您没有在卡和卡外实体之间使用安全通道,您就不能信任 SD 响应。但为什么?因为任何恶意用户都可以编写一个 AID 等于您卡 SD 的 AID 的简单小程序,该小程序将他/她的任意数据返回到您的命令并将其安装在智能卡上并使其默认选中。在这种情况下,当他/她将卡片放在您的读卡器上时,他/她的小程序会响应您的卡片外应用命令,并且您无法检测到假卡片。

2:正如上面提到的亲爱的guidot,不同的卡可能支持也可能不支持相同的命令来返回这些卡的特定数据。

因此,我建议您在您的小程序中添加一对setSerialNumber()getSerialNumber() 方法,并在您的offcard 和您的小程序之间实现一个安全通道,以确保您的卡片的唯一性。

【讨论】:

  • 亲爱的 Guidot,如果此编辑打扰您,我们深表歉意。觉得不好可以撤消。
【解决方案2】:

对于大多数用例,PC/SC UID 应该足够了。这是一个 4 到 7 字节的标识符,在与卡建立 非接触式 通信时无论如何都会读取该标识符。虽然有些卡片可能被配置为返回随机 UID,但如果您的项目的卡片在您的控制之下,这不是问题

【讨论】:

  • 这个 UID 旨在解决当多个同时在读卡器的字段中时选择正确的卡(因此它解决了低级协议问题)。鉴于最初的问题既没有提到非接触式,也没有相应地标记,最后由于内在的弱点(概率而不是唯一性)导致我投反对票。
  • 我真的不明白你的意思。答案是建议,我明确地用螺栓固定 contactless 部分并解释了 PC/SC UID 的熵强度。他的问题甚至询问“唯一智能卡 ID”,这几乎是 PC/SC UID 的翻译。答案绝不是错误的,并且是根据所述情况提出的建议。不同意你..
  • 顺便说一句,事物可以用于某些事物,而且它们也以其他方式被使用是很常见的。我知道很多用例,例如仅依靠 PC/SC UID 来识别用户的打印机……
  • 我投了赞成票,因为非随机 UID 当然可以用于这种目的,但我也投了 guidot 的评论...这是一个严重受限的选项,但没有选项-the-less.
猜你喜欢
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2011-05-12
  • 1970-01-01
  • 2016-09-12
相关资源
最近更新 更多