我正在使用GSM调制解调器和SIM卡构建设备。我想用一个引脚保护SIM卡,以防止在现场安装设备时误用SIM卡。
将相关SIM的引脚存储到每个设备中会很麻烦。此外,如果更换SIM,我希望设备自动知道新SIM的PIN。所以我考虑使用单向散列函数从SIM的一个或多个属性生成引脚,如IMSI,ICCID,SIM卡组标识符,服务提供商名称等。
插入SIM卡后,设备可以根据这些属性动态计算出正确的PIN码。
(我知道基于秘密算法的安全性违反了计算机安全的基本原则,但在这种情况下,我不需要它是傻瓜证明 - 我只需要更好的东西而不是让它不受保护。)
问题是在输入PIN之前无法读取这些属性。 是否有任何其他财产可以在不输入密码的情况下阅读?或者您是否有任何解决方法,不需要提前在设备上存储PIN?
答案 0 :(得分:3)
是的,应该可以使用SIM属性本身生成PIN(假设您与卡供应商和运营商有关系)。
PIN = some_function(sim_properties)
关于您提到的每个属性:
对于函数本身,我建议使用加密哈希而不是哈希,以提供更高的安全性。
此外,您还可以要求卡供应商添加其他专有文件(EF),您可以在其中添加其他数据(附加密钥,位掩码,要使用的主密钥的密钥索引等)。
在最后一步,不要忘记将加密哈希结果转换为4-8位数字格式。