美文网首页黑客
车门不是那么好开的

车门不是那么好开的

作者: 萝卜头实验室 | 来源:发表于2017-11-04 19:13 被阅读121次

本文以自己的菜车为例分析了其无线钥匙的安全性。包括编码方式,滚动码窗口,芯片等。本想通过解码大量数据,破解其加密算法的,但发觉并没有那么容易。

信号分析

车钥匙发出的是433MHz的无线电信号,ASK调幅模式。首先用ASK接收模块解调(详见前文),并用逻辑分析仪观察其波形。

下图中:

  • Overview 里有两个完整的钥匙信号(以3个较长的低电平分隔);
  • 第一次Zoom in显示了一个完整的信号;
  • 第二次Zoom in只显示了前导(Leading)和开始(Start)部分的波形。
车钥匙无线电信号概况

图中只是尝试用 PWM 解码(因为 PWM 在无线电遥控中用得比较多),但实际上并不一定是 PWM。

和其它无线电遥控类似,一次按键会发送多个重复的信号,它们的数据是相同的,以确保接收端会收到。
不过这个车钥匙的第一个信号的前导波形会更长一些,可能是要确保接收端被唤醒。

下图是连续两次按键的信号。可以看出:

  • 前导部分波形一样;
  • 第一个红圈里的波形一样;
  • 两个红圈之间的波形完全不一样;
  • 第二个红圈里的波形相反。
连续两次按键的信号波形

至此,基本可以确定不是固定码。如果是固定码,打开车门就太容易了。

差分曼彻斯特编码

下图是常用的单线编码(图片来自WiKi

Biphase系列就是通常说的曼彻斯特编码,其中Biphase-S和差分曼彻斯特只是平移半个周期(并反向)的关系,所以可认为是一回事。而Biphase-M和Biphase-S是按位取反关系(即0和1的对应关系反过来),所以也可以认为是等价的。下面以“差分曼彻斯特编码”来统称。

常用的单线编码(主要看不同的曼彻斯特编码类型)

观察我的车钥匙的波形,可以和差分曼彻斯特编码对应起来。主要表现在:

  • 波形数据中只有两种宽度的电平,并且是两倍关系;
  • 窄的电平是成对出现的。(其实这种编码简单地说就是:两个窄电平表示0,一个宽电平表示1)

差分曼彻斯特编码还有一个特性是:波形反相,表示的数据相同。这说明上图中第二个红圈中的波形其实是表示相同的数据。这也比较合符逻辑。

综上,我们可认为其编码方式是差分曼彻斯特编码。

顺便说一下,曼彻斯特编码也是很常用的,比如以太网中就是。另外,后续的收发测试表明,这种编码比PWM的抗干扰能力要强。

解码的数据

下面是按同一把车钥匙的同一个键依次得到的实际数据:

0x7283df 664fac42ae d22d
0x7283df 0d2ea18d3e d22d
0x7283df 1f78611523 d22d
0x7283df c37b06f96b d22d
0x7283df fa0eff1919 d22d
0x7283df 6bec6e956e d22d
0x7283df 2a83ccbc78 d22d

可以看到,总共80 bit,只有中间40 bit的数据在变。通过按不同的键,以及换另一把钥匙试验,可以得出:

  • 前24 bit (0x7283df) 中包含钥匙相关的信息;
  • 后16 bit (0xd22d) 是操作码,即开门、关门,开后备箱等。
  • 中间的40 bit就是传说中的滚动码了。肉眼看,毫无规律。

实验1:简单重放

  1. 录下(解码)钥匙信号;
  2. 再(编码)发送出去。

结果:显然是开不了车门的。滚动码的特征是用过就作废。

实验2:截获重放

  1. 把钥匙和车分隔(确保车收不到钥匙信号);
  2. 录下(解码)钥匙信号;
  3. 再(编码)发送给车。

结果:可以开门。由于车没有收到原始的钥匙信号,截获的信号是有效的。

这个实验看似简单,其实也说明了不少问题:

  • 钥匙和车之间的通讯是单向的,不存在动态认证的过程;
  • 信号是时间无关的(即不会随时间过期),只与顺序相关。

而且这个实验是盗车手段的原型。即盗贼通过干扰器阻止汽车接受钥匙信号,自己把钥匙信号保存下来,然后用来开门。

实验3:操作码替换

  1. 把钥匙和车分隔(确保车收不到钥匙信号);
  2. 录下(解码)关门时的钥匙信号;
  3. 把关门的操作码替换为开门的;
  4. 再(编码)发送给车。

结果:可以开门。这说明同一把钥匙,不同的操作是共用一个滚动码序列的。

另外,因为组装数据重新编码后汽车接收端能接受,这也进一步确认了差分曼彻斯特的编码方式。

实验4:滚动码窗口测试

有文章说某种伪随机数的滚动码的窗口是256。超过这个窗口,会导致开不了门,或需要复位。我们可以测试一下。

  1. 把钥匙和车分隔(确保车收不到钥匙信号);
  2. 连续按开门键360次(远远超过了256);
  3. 再把钥匙拿到车附近,按开门键。

结果:可以开门。这说明,我的车的滚动窗口是大于256的,或者根本没有“窗口”。至于到底是怎样,就不得而知了。

注意:这个实验有一定的危险性,因为万一有256的窗口限制,会有可能导致开不了门。但我在实验的时候,录下了这360次的钥匙信号,万一开不了,可以用这些录下来的信号去开门。但如果不能录下信号,就不要随便做这个实验了。

芯片分析

为了找到加密算法的线索,我拆开了车钥匙。其主芯片是 NXP 61X0915,应该是一款汽车钥匙专用的单片机。但网上找不到Datasheet。
问了一些朋友,说这个资料就是不公开的。也许是出于安全考虑吧。

车钥匙芯片

参考

下面主要是一些加密算法相关的链接。有一些算法是已被破解了的。但对于普通人,尤其是在没有额外信息的前提下,破解并不是那么容易的。总之,没在自己的菜车上验证通过,就不多说了。

结语

本文对车钥匙的无线电信号进行了解码和编码的一些测试。确定是差分曼彻斯特编码。通过模拟拦截无线电信号,可以打开车门,证明钥匙和车之间是没有时间信息的单向通讯。这种方式也是中级盗车贼的简易手段。即使只拦截或窃取了关门信号,也有可能用于开门(至少对于我的车是可以的)。所以,只要“偷走”车钥匙的一个无线按键信号,就有可能把车门打开。

另外,我的车并没有传说中的256的滚动码窗口。从芯片上也得不到加密算法的线索。安全级别也算高了一点。

对于加密码算法的直接破解,并不是那么容易。有些破解可能是基于一些额外的信息,比如泄密的密钥(或者密钥发行体系的隐患,比如一个厂家多款车共用一个根密钥,容易导致泄密)。

相关文章

  • 车门不是那么好开的

    本文以自己的菜车为例分析了其无线钥匙的安全性。包括编码方式,滚动码窗口,芯片等。本想通过解码大量数据,破解其加密算...

  • 别不信,你连车门都不会开

    如果我说你连车门也不会开,你肯定会不屑一顾。“开车门”只是个小小动作,却有着杀人致命的危险。 那么如何避免这种情况...

  • 1253.修车带来的烦恼

    前两天,我发现副驾驶的车门打不开了。 这个车门原来也不是很好开,硬拉拉不动,只有使用一些巧劲才能打开。每一次妻子坐...

  • MVVM 不是那么好

    作者:Soroush Khanlou,原文链接,原文日期:2015-12-17译者:zltunes;校对:Chan...

  • 看《后海不是海》之云南之旅

    喜欢张嘉译看的《 后海不是海》,剧情不是那么好,剧里拍摄地很美,海鸥开的客栈不是海边,那是洱海。看到洱海...

  • Duang,老婆快看这人开门…

    车门怎么开? 顺手一推就开,还是用其它方式? 开车门看起来是件小事,其实里面存在着许多技巧。 车外后视镜普遍存在一...

  • Duang,老婆快看这人开门…

    车门怎么开? 顺手一推就开,还是用其它方式? 开车门看起来是件小事,其实里面存在着许多技巧。 车外后视镜普遍存在一...

  • Duang,老婆快看这人开门…

    车门怎么开? 顺手一推就开,还是用其它方式? 开车门看起来是件小事,其实里面存在着许多技巧。 车外后视镜普遍存在一...

  • 这世界不是那么好,也不是那么坏!

    我翻开历史一查, 这历史没有年代。 歪歪斜斜的每页上都写着“仁义道德”几个字, 我横竖睡不着,仔细看了半夜, 才从...

  • 这世界不是那么好,也不是那么坏。

    文章首发notes.hudabai.com.未经允许,禁止转载! 这世界不是那么好,也不是那么坏。 小故事,源于今...

网友评论

    本文标题:车门不是那么好开的

    本文链接:https://www.haomeiwen.com/subject/pikqmxtx.html