车门无线钥匙的安全研究

本文以自己的菜车为例分析了其无线钥匙的安全性。包括编码方式,滚动码窗口,芯片等。本想通过解码大量数据,破解其加密算法的,但发觉并没有那么容易。虽然有点烂尾,但还是把做过的写下来吧。信号分析车钥匙发出的是MHz的无线电信号,ASK调幅模式。首先用ASK接收模块解调(详见前文),并用逻辑分析仪观察其波形。下图中:Overview里有两个完整的钥匙信号(以3个较长的低电平分隔);第一次Zoomin显示了一个完整的信号;第二次Zoomin只显示了前导(Leading)和开始(Start)部分的波形。图:车钥匙无线电信号概况图中只是尝试用PWM解码(因为PWM在无线电遥控中用得比较多),但实际上并不一定是PWM。和其它无线电遥控类似,一次按键会发送多个重复的信号,它们的数据是相同的,以确保接收端会收到。不过这个车钥匙的第一个信号的前导波形会更长一些,可能是要确保接收端被唤醒。下图是连续两次按键的信号。可以看出:前导部分波形一样;第一个红圈里的波形一样;两个红圈之间的波形完全不一样;第二个红圈里的波形相反。图:连续两次按键的信号波形至此,基本可以确定不是固定码。如果是固定码,打开车门就太容易了。差分曼彻斯特编码下图是常用的单线编码(图片来自WiKi)Biphase系列就是通常说的曼彻斯特编码,其中Biphase-S和差分曼彻斯特只是平移半个周期(并反向)的关系,所以可认为是一回事。而Biphase-M和Biphase-S是按位取反关系(即0和1的对应关系反过来),所以也可以认为是等价的。下面以“差分曼彻斯特编码”来统称。图:常用的单线编码(主要看不同的曼彻斯特编码类型)观察我的车钥匙的波形,可以和差分曼彻斯特编码对应起来。主要表现在:波形数据中只有两种宽度的电平,并且是两倍关系;窄的电平是成对出现的。(其实这种编码简单地说就是:两个窄电平表示0,一个宽电平表示1)差分曼彻斯特编码还有一个特性是:波形反相,表示的数据相同。这说明上图中第二个红圈中的波形其实是表示相同的数据。这也比较合符逻辑。综上,我们可认为其编码方式是差分曼彻斯特编码。顺便说一下,曼彻斯特编码也是很常用的,比如以太网中就是。另外,后续的收发测试表明,这种编码比PWM的抗干扰能力要强。解码的数据下面是按同一把车钥匙的同一个键依次得到的实际数据:0xdffac42aed22d0xdf0d2ea18d3ed22d0xdf1fd22d0xdfc37b06f96bd22d0xdffa0effd22d0xdf6bec6eed22d0xdf2a83ccbc78d22d可以看到,总共80bit,只有中间40bit的数据在变。通过按不同的键,以及换另一把钥匙试验,可以得出:前24bit(0xdf)中包含钥匙相关的信息;后16bit(0xd22d)是操作码,即开门、关门,开后备箱等。中间的40bit就是传说中的滚动码了。肉眼看,毫无规律。实验1:简单重放录下(解码)钥匙信号;再(编码)发送出去。结果:显然是开不了车门的。滚动码的特征是用过就作废。实验2:截获重放把钥匙和车分隔(确保车收不到钥匙信号);录下(解码)钥匙信号;再(编码)发送给车。结果:可以开门。由于车没有收到原始的钥匙信号,截获的信号是有效的。这个实验看似简单,其实也说明了不少问题:钥匙和车之间的通讯是单向的,不存在动态认证的过程;信号是时间无关的(即不会随时间过期),只与顺序相关。而且这个实验是盗车手段的原型。即盗贼通过干扰器阻止汽车接受钥匙信号,自己把钥匙信号保存下来,然后用来开门。实验3:操作码替换把钥匙和车分隔(确保车收不到钥匙信号);录下(解码)关门时的钥匙信号;把关门的操作码替换为开门的;再(编码)发送给车。结果:可以开门。这说明同一把钥匙,不同的操作是共用一个滚动码序列的。另外,因为组装数据重新编码后汽车接收端能接受,这也进一步确认了差分曼彻斯特的编码方式。实验4:滚动码窗口测试有文章说某种伪随机数的滚动码的窗口是。超过这个窗口,会导致开不了门,或需要复位。我们可以测试一下。把钥匙和车分隔(确保车收不到钥匙信号);连续按开门键次(远远超过了);再把钥匙拿到车附近,按开门键。结果:可以开门。这说明,我的车的滚动窗口是大于的,或者根本没有“窗口”。至于到底是怎样,就不得而知了。注意:这个实验有一定的危险性,因为万一有的窗口限制,会有可能导致开不了门。但我在实验的时候,录下了这次的钥匙信号,万一开不了,可以用这些录下来的信号去开门。但如果不能录下信号,就不要随便做这个实验了。芯片分析为了找到加密算法的线索,我拆开了车钥匙。其主芯片是NXP61X,应该是一款汽车钥匙专用的单片机。但网上找不到Datasheet。问了一些朋友,说这个资料就是不公开的。也许是出于安全考虑吧。图:车钥匙芯片参考下面主要是一些加密算法相关的链接。有一些算法是已被破解了的。但对于普通人,尤其是在没有额外信息的前提下,破解并不是那么容易的。总之,没在自己的菜车上验证通过,就不多说了。Corrodingimmobilizercryptography这篇文章里有各种加密算法的市场份额。LockItandStillLoseIt—Onthe(In)SecurityofAutomotiveRemoteKeylessEntrySystemsGoneinSeconds:HijackingwithHitag2RFIDDevicesandCryptography:AnalysisoftheDST40HowRemoteEntryWorks对于伪随机数的滚码,超过次,会导致汽车钥匙打不开MicrochipHCS:KeeLoqcodehoppingEncoder有比较详细的时序,但这个是PWM的编码的。结语本文对车钥匙的无线电信号进行了解码和编码的一些测试。确定是差分曼彻斯特编码。通过模拟拦截无线电信号,可以打开车门,证明钥匙和车之间是没有时间信息的单向通讯。这种方式也是中级盗车贼的简易手段。即使只拦截或窃取了关门信号,也有可能用于开门(至少对于我的车是可以的)。所以,只要“偷走”车钥匙的一个无线按键信号,就有可能把车门打开。另外,我的车并没有传说中的的滚动码窗口。从芯片上也得不到加密算法的线索。安全级别也算高了一点。对于加密码算法的直接破解,并不是那么容易。有些破解可能是基于一些额外的信息,比如泄密的密钥(或者密钥发行体系的隐患,比如一个厂家多款车共用一个根密钥,容易导致泄密)


转载请注明:http://www.aierlanlan.com/tzrz/6874.html