无需输入PIN即可从受PIN保护的SIM中读取哪些数据/元数据?

时间:2015-04-16 10:01:09

标签: embedded gsm sim-card iot

我正在使用GSM调制解调器和SIM卡构建设备。我想用一个引脚保护SIM卡,以防止在现场安装设备时误用SIM卡。

将相关SIM的引脚存储到每个设备中会很麻烦。此外,如果更换SIM,我希望设备自动知道新SIM的PIN。所以我考虑使用单向散列函数从SIM的一个或多个属性生成引脚,如IMSI,ICCID,SIM卡组标识符,服务提供商名称等。

插入SIM卡后,设备可以根据这些属性动态计算出正确的PIN码。

(我知道基于秘密算法的安全性违反了计算机安全的基本原则,但在这种情况下,我不需要它是傻瓜证明 - 我只需要更好的东西而不是让它不受保护。)

问题是在输入PIN之前无法读取这些属性。 是否有任何其他财产可以在不输入密码的情况下阅读?或者您是否有任何解决方法,不需要提前在设备上存储PIN?

1 个答案:

答案 0 :(得分:3)

是的,应该可以使用SIM属性本身生成PIN(假设您与卡供应商和运营商有关系)。

PIN = some_function(sim_properties)

关于您提到的每个属性:

  1. ICCID - 是的,这张卡每张都有。没有读取限制,无法更新。首选使用。
  2. IMSI - 每张卡唯一但无法使用。您需要提供PIN才能阅读此文件。
  3. SPN - 是的,也可以使用,但每张卡不是唯一的。如果您想使用此文件,请确保操作员不会通过OTA(空中下载)RFM(远程文件管理)更新它。
  4. GID - 此文件是可选的,最好不要使用它。
  5. 对于函数本身,我建议使用加密哈希而不是哈希,以提供更高的安全性。

    此外,您还可以要求卡供应商添加其他专有文件(EF),您可以在其中添加其他数据(附加密钥,位掩码,要使用的主密钥的密钥索引等)。

    在最后一步,不要忘记将加密哈希结果转换为4-8位数字格式。