西西河

主题:【原创】汽车遥控防盗器安全吗 续篇 -- 代码ABC

共:💬19 🌺39 新:
全看分页树展 · 主题 跟帖
家园 关于身份验证和随机数那段我有点疑问

1.破解随机数算法的含义:这个在于是否能缩小可能的搜索空间,打个比方如果理论上总共可能生成1w个随机数,但是算法有某种缺陷结果只能在这1w个里头的1k个打转,或者能控制算法的种子值等等,否则的话我认为不能算“破解”。

2.关于分析加密信息:这样的设计是不合理,事实上如果非要重复加密传输同样的信息的话,可以通过random padding或更换initialization vector之类的办法加扰。当然了,最好的办法还是不把身份验证信息传来传去,不管加不加密。

如果要我来设计的话,钥匙和车的系统应该是这样的:

0.随机数的产生:有自然源,比如无线电噪声、刹车/油门的间隔和力度等等。

1.钥匙插入点火开关时在验证钥匙的机械特征(这算what you have吧)后,车和钥匙协商用以在后续步骤验证身份的K0,这个是每次插入钥匙都会变的.

2.汽车锁闭状态,钥匙按开锁按钮时发出明文的请求(为了避免群呼,可以带车辆标识;为避免穷举可以限制重试频率).

3.汽车收到钥匙的认证请求后,用K0为key通过加密算法A加密一个新生成的随机数K1,将此密文C0发送给钥匙.

4.钥匙收到C0后用K0解密得到K1,用K1通过算法A加密{操作码,一个新随机数}为密文C1,其中随机数可以用钥匙上的时钟生成(比如距离上一次点火启动的时间等).

5.汽车收到C1后用K1解密如能得到正确的操作码即证明钥匙身份可信,可以执行其命令。因为此时从车的角度讲C1能被K1正确解密说明钥匙的到了正确的K1,而K1是通过正确的K0加密的,所以钥匙必然有正确的K0;而从钥匙的角度讲,如果车方是假冒的,那么其加密K1'所用的K0'很大可能不是真的K0,这样钥匙解密后得到的K1就极不可能是K1'了,因此即使是有假冒的车来响应钥匙,钥匙方面也没有泄漏多于被动空中监听得到的唯密文信息。

这里的算法A完全可以用公开的、久经考验的对称加密算法。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河