车门钥匙的原理(无线车钥匙原理和技术科普)
【PConline 干货铺】想过为什么现在用上技术含量高的无线钥匙的汽车反而比以前只是用单纯机械钥匙的汽车更爱被偷(准确来讲应该是开车门盗取车内财物)吗?这里面除了人类欲望和社会秩序等不可抗因素外,我想更多的是因为这么一个词:物极必反。也就是说,我们既然可以用高科技造出更先进的车钥匙和锁车技术,就完全有能力去破解它。
不久前在HackPWN的启动仪式上,安全人员仅用2分钟就通过无线钥匙破解了一辆某国际大厂汽车,看起来想要开车门似乎并不难。真的这么容易吗?想要搞清楚这一问题,就得知道汽车无线钥匙的原理和相关技术了。
首先,让我们先从汽车无线钥匙的“信号”长什么样说起。
常见的汽车无线钥匙一般工作在两个频点:315MHz和433MHz。调制方式比较常见的有两种,ASK和FSK。复杂一点的有双频点FSK,还有多频点ASK的。
实际上我们可以用俗称电视棒的一种小硬件来观察汽车钥匙的无线信号。在网络上搜索“RTLSDR”,”电视棒”,就可以找到。
把它接上天线,然后插到电脑上,使用一些观察频谱的软件就可以看到,比如:
- HDSDR(hdsdr.de/)
- SDR#(sdrsharp/)
- Gqrx(gqrx.dk/)
这里我们使用HDSDR,把频点设在汽车钥匙使用的频点上,就可以看到像下图这样的频谱。
先来看一辆奔X车子的钥匙信号频谱。频段是433MHz,中心频点是433.96MHz。
再来是一辆奥X车子的钥匙信号。频段是315MHz,中心频点是315.04MHz。
然后,我们将这段信号存为波形文件。再使用音频分析软件打开。
上面这就是一次按键发出的信号。可以看到是有两段信号。如果按的时间长一点,就会是这样。
出现好几段信号。这里面的每一段信号都是一样的,重复发送。我们来放大仔细看一下每一段信号的样子。
前面部分是一些重复的脉冲,就叫它同步引导序列吧,它用来提示接收机有信号即将到来,还可以获得时钟信息。后面的部分是有效的数据。
我们把一次按键的两段信号拖到一起,比较一下。可以看到是完全一样的。
如果是两次按键的信号放在一起比较的话,就不一样了。
也就是说,我们每次按动汽车钥匙,发射的信号是不一样的。这就是大名鼎鼎的“滚动码”(Rolling code)。
《干货铺》安全系列
为一年能挣多少?中国黑客生存状况大起底! security.pconline/671/6713918.html
打开一名黑客的装备库 看看究竟都有什么 security.pconline/665/6653422.html
解密BadUSB:可黑掉世上所有USB的漏洞 network.pconline/573/5734879.html
滚动码的原理大致是这样的:
1、滚动码是一个周期很长的伪随机码。例如有240,意思就是码的长度有40个bit。现在大部分车钥匙的码长都比40bit长;
2、车钥匙里存有当前的滚动码。当车钥匙按下时,滚动码加上功能码(比如是开锁,解锁,还是开后备箱)一起发送给汽车;
3、汽车也存有当前的滚动码。当汽车收到同样的滚动码时,它就执行相应的开锁之类的操作。如果收到的码不匹配,它就不做任何动作;
4、车钥匙和汽车里的滚动码是保持同步的;
5、当车钥匙距离车很远的时候,有人不小心按了几次车钥匙,车钥匙的随机码就会前进好几步,此时跟车内的码就不同步了。为了解决这个问题,汽车允许接收当前码之后的几百个码。只要车钥匙发送的码在这个窗口之内,汽车都认为是有效的;
6、如果车钥匙被误按超过设定的几百次,车钥匙和车就会彻底失去同步,这时候你就只能找办法恢复同步了。
从上面这个原理可以看出来,如果我们能得到汽车当前滚动码“之后”的一个码,只要在窗口之内,就可以把车打开。怎样才能得到一个有效的,未被使用的码呢?比较简单的方法是这样的:
录制一段信号,然后到汽车那边去播放。
或者是,一边录,一边播……
不过不管怎样,我们都需要接触到车钥匙,所以这并不是那么容易的事。
录音工具有很多种,用前面讲到的电视棒就可以。播放工具也有很多种,比如rfcat(int3/products/rfcat)
再比如使用TI的C1111自己做一个RF收发分析器,下面这个东西就是我们自己做的,而且还增加了PA和SMA。
那有没有不需要接触钥匙就能得到一个有效码的方法呢?
当然也是有的,那就是一些高级方法了。下面进入密码学的学术领域……
这个链接是2007年以色列和比利时的几个研究者找到的一种破解滚动码的方法。它需要先花大约一个小时的时间对钥匙进行65536次试探,解出64bit中的36个bit,然后再花几秒钟就可以完全破解钥匙的滚动码。完全破解的意思就是,这个伪随机码的全部规律都已经被破解了,可以知道下一个码是什么。
在实践中,它需要用相应的芯片(也就是汽车端配对的芯片)伪造一个transponder and encoder,让它工作在IFF(IDENTIFY FRIEND OR FOE)模式,对车钥匙发出试探信号(challenge),车钥匙发回一个response。车钥匙每产生一次response需要60ms或90ms。因此,收集65536个challenge/response消息对,需要65或者98分钟的时间。而且,车钥匙能够支持IFF模式的距离是多远呢?应该是非常近的距离。所以场景差不多是这样的:
2008年,德国鲁尔大学的几个研究者使用了side-channel attack(中文有翻译为,旁路攻击,也有叫边信道攻击)的方法,通过分析解码控制器的功耗来解出KeeLoq密码。因为控制器在做不同运算时消耗的功率是不一样的。通过测量控制器的功耗,结合KeeLoq的算法,这种算法基本上是很成熟和固定的,可以推导出控制器中存储的密钥是什么。他们的研究成果,把破解KeeLoq密码的时间缩短到了几秒钟。
看起来这个方法是最牛最高效的了。但是你仍然要接触到钥匙,还要懂得怎么测量控制器的功耗,能分析出啥时候在算乘法啥时候在算加法……估计全世界懂这个技术的人也不多了。
所以,开车门也不是那么容易的。实践中,小偷们的开门方法其实是这样的:
以上说的都是通过钥匙的无线信号解锁的方法。现在的车越来越智能,出现了用蓝牙连接,用手机APP通过蜂窝网络连接等等各种开锁车的新方法。当然,这就不在本文讨论的范畴了,感兴趣的可以找破解特斯拉的材料。总之有一个道理是永远不会变的:你的系统越复杂,可能出现的漏洞和风险就越多。
另外,开关车门和发动汽车又是两码事,分别有两个系统管理。所以即使你打开了车门,也很难把车开走,至于扯出两根电线短路一下汽车发动的美好画面,只会出现在电影电视剧里。你能做的就是打开车门碰运气,看看有啥贵重财物。还得注意乔装,别让监控把你拍下来。
声明:文中涉及软件和工具均为研究使用,所举破解案例和方法也仅供探讨和警示汽车厂家改进技术。切勿用于非法目的。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com