按照这个思路,我再次踏上寻找加密密钥的道路。NGTP协议包含更新密钥的函数,让我确信密钥一定存在某个地方。长期以来,寻找总是徒劳无功。在最后一次尝试中,我分析了固件中一个随机数据块。我尝试把该数据块的部分数据作为密钥来解密记录的紧急文本消息。经过一些失败的尝试后,最后获得了成功。
这个发现愈发让我感到怪异。他们不会真的对所有的汽车都使用同样的密钥材料吧?另外,我目前只能查看紧急文本消息。对那种使用场景,所有车拥有相同密钥并不会造成什么危害。
我发现了加密使用DES(56位密钥)算法和AES128(128位密钥)算法。为签名消息,固件使用了三种签名算法DES CBC-MAC,HMAC-SHA1和HMAC-SHA256。消息的头部指定了算法的类型和所用的密钥对。
目前,尚不清楚宝马公司为什么会使用DES算法,因为DES算法的破解已有一段时间了。而且相对于其他加密算法,DES数据块的长度更短,从而生成更短的加密消息。3DES情况也一样,但起码3DES被多数人认为是安全的。
重组
在成功地尝试解密与解码应急短信后,我把注意力转向了汽车本身。我想要查明当涉及安全相关的功能时,宝马汽车的通信是否会受到更好的保护。为了这个目的,我开始调查车门远程解锁的功能。
为使用这个功能,车主首先需要在BMW网站上注册账户并开启远程服务。驾驶员可以使用iOS和Android版的My BMW Remote移动应用来打开驾驶员旁边的车门。为了详细了解其工作原理,我不得不再次记录汽车收发的数据。这需要先发送一条短信,否则不可能与已关闭引擎的汽车建立数据连接。
获得这条短信的最简单方法是监听Combox设备上蜂窝调制解调器与V850ES微控制器之间的串口连接。在只是APP打开车门后,我的确在记录的数据中找到一条文本消息。这条消息似乎包含调试字符,因为它实际上已经蜂窝调制解调器处理过。