我的申请如下
需求
以下是我迄今所做的
发布于 2018-06-02 08:02:07
让我们研究一下问题中的命题:
虽然有比RSA更紧凑的签名系统,但所有签名都至少比目标"7-8位数“高出10倍。因此,我们不能使用公钥密码学。
标准选项将是对称加密,每个设备中都有一个密钥。标准做法是,设备密钥来自发证机构已知的主密钥,而设备序列号则由某种密钥派生功能(智能卡行业自1980年代以来以多样化的名称实现)。必须保留一个主密钥,但是提取设备的密钥不会损害其他密钥。HMAC-SHA-256是一种合适的衍生方法.$\mathsf{DeviceKey}=\operatorname{HMAC}(\mathsf{MasterKey},\mathsf{SerialNumber})$就行了。
解锁代码可以是某种消息身份验证代码,其索引在每次重新加载时递增,并被设备(和权威机构的发射系统)保存在永久内存中,并被截断。这可能是$\mathsf{UnlockCode}=\operatorname{HMAC}(\mathsf{DeviceKey},\mathsf{Index}\bmod10^8$的十进制表达式。
正常操作是,授权机构获得付款,在其数据库中为$\mathsf{SerialNumber}$查找$\mathsf{索引}$,计算$\mathsf{DeviceKey}$然后$\mathsf{UnlockCode}$,在数据库中为该设备增加$\mathsf{索引}$。设备根据$\mathsf{UnlockCode}$检查输入内容,如果有匹配,则激活并在永久内存中增加$\mathsf{Index}$。
有些问题需要解决:
strcmp
或类似的库/语言特性进行比较,后者通过计时泄漏第一次失配的位置,而不需要打开框就可以观察到,例如,由于使用了LED或键盘扫描EMI,可以在大约40次(而不是5000万次)内找到8位数的代码。安全工程可不容易!注意:我认为格式保持加密在这里并没有真正的帮助,即使在有辅助信息要传达的时候也是如此,因为它的机密性似乎是一种麻烦而不是一种有用的特性。
发布于 2018-06-01 22:57:09
https://crypto.stackexchange.com/questions/59720
复制相似问题