3

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

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

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

(我知道基于秘密算法的安全违反了计算机安全的基本原则,但在这种情况下,我不需要它是万无一失的——我只需要比让它不受保护更好的东西。)

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

4

1 回答 1

3

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

PIN = some_function(sim_properties)

关于您提到的每个属性:

  1. ICCID - 是的,每张卡都是独一无二的。没有读取限制,不能更新。首选使用。
  2. IMSI - 每张卡唯一但不能使用。您需要提供 PIN 码才能阅读此文件。
  3. SPN - 是的,也可以使用,但每张卡不是唯一的。如果要使用此文件,请确保运营商不会通过 OTA(Over The Air)RFM(远程文件管理)对其进行更新。
  4. GID - 这个文件是可选的,最好不要使用它。

对于函数本身,我建议使用加密散列而不是仅散列,以提供更高的安全性。

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

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

于 2015-04-29T06:58:16.847 回答