【发布时间】:2015-06-01 06:24:15
【问题描述】:
SIM 卡在我的项目中用作安全元件。从终端设备通过NFC-SWP非接触式接口访问。
我需要使用唯一且永久的标识符以某种方式识别 SIM 卡,并且我需要能够通过 NFC 读取标识符。 ICCID 似乎是最好的选择,但我必须通过非接触式接口公开 EF ICCID 文件,这可能很危险。此外,EF ICCID 文件超出了我在 SIM 卡上的范围 - 我只有访问我的专用安全域。
我也尝试使用 ISO/IEC 14443 Type A 中指定的 4 字节长 UID,但每次通过 NFC 读取 SIM 卡时都会得到不同的 UID。为什么?
另一种解决方案是通过全球平台获取数据命令(卡生产生命周期数据(CPLC))访问卡序列号,但我必须能够通过非接触式接口选择卡管理器,默认情况下是禁止的出于安全考虑,不推荐使用。
有没有解决这个问题的典型方法?
【问题讨论】:
-
每次通过 NFC 读取 SIM 卡时,我都会获得不同的 UID。为什么? 我认为在 Bodewes 先生的 asnwerhere 下的最后三个 cmets 对你有好处。
-
同样,如here 所述,UID 通常有 16 个字节长度。
-
@Abraham:您说的是卡序列号,而不是 A 类的 14443 UID,它可能是 4、7 或 10 个字节长。
-
啊,对不起,你是对的。我刚刚检查了 14443-3,我在 Table-9 下看到了这一行:UID 是一个固定的唯一数字或随机数字,它是由 PICC 动态生成的。 UID的第一个字节(uid0)分配了UID后面字节的内容。
-
是否有任何事情阻止您发布应用程序特定的唯一标识符,该标识符已个性化到您的小程序/应用程序中?
标签: android nfc smartcard sim-card