车真的那么容易偷吗?汽车无线钥匙通信安全的一点科普

不久前在HackPWN的启动仪式上,安全人员仅用2分钟就通过无线钥匙破解了一辆奔驰汽车,看起来黑客要偷走一辆汽车很容易。真的这么简单吗?作为无线安全研究者,在这里给大家做一点简单的汽车无线钥匙通信安全的科普。

先从汽车无线钥匙的“信号”长什么样说起吧?

常见的汽车无线钥匙一般工作在两个频点,315MHz和433MHz。调制方式比较常见的有两种,ASK和FSK。复杂一点的有双频点FSK,还见过多频点ASK的。

可以用俗称电视棒的一种小硬件来观察汽车钥匙的无线信号。在网络上搜索“RTLSDR”,”电视棒”,就可以找到。它本来是用来插在电脑上,收看电视节目的。大概50块钱就可以买到。

把它接上天线,然后插到电脑上,使用一些观察频谱的软件就可以看到,比如:

- HDSDR (http://www.hdsdr.de/)

- SDR# (http://sdrsharp.com/)

- Gqrx (http://gqrx.dk/)

把频点设在汽车钥匙使用的频点上,就可以看到像下图这样的频谱。

这是一辆奔驰车的钥匙信号频谱。频段是433MHz。中心频点是433.96MHz。

这是一辆奥迪车钥匙的信号。

从图中可以看出,信号的频段是315MHz频段。中心频点是315.04MHz。

这里使用的软件是HDSDR。我们将这段信号存为波形文件。

使用音频分析软件打开波形文件。

这就是一次按键发出的信号。有两段信号。如果按的时间长一点,就会是这样。

出现好几段信号。按下的时间内,钥匙持续发出一段一段的信号。这里面的每一段信号都是一样的,重复发送。我们来仔细看一下每一段信号的样子。

把信号放大展开,可以看到每一段信号,前面部分是一些重复的脉冲,就叫它同步引导序列吧,它用来提示接收机有信号即将到来,还可以获得时钟信息。后面的部分是有效的数据。

我们把一次按键的两段信号拖到一起,比较一下。

可以看到是完全一样的。如果把两次按键的信号放在一起比较。

可以发现,两个信号是不一样的。也就是说汽车钥匙每次按键,发射的信号是不一样的。

这就是大名鼎鼎的“滚动码”,“Rolling code”。

滚动码的原理大致是这样滴:

1.滚动码是一个周期很长的伪随机码。例如有240。意思就是码的长度有40个bit。现在大部分车钥匙的码长都比40bit长。

2.车钥匙里存有当前的滚动码。当车钥匙按下时,滚动码加上功能码(比如是开锁,解锁,还是开后备箱)一起发送给汽车。

3.汽车也存有当前的滚动码。当它收到同样的滚动码时,它就执行相应的开锁之类的操作。如果收到的码不匹配,它就不做任何动作。

4.车钥匙和汽车里的滚动码是保持同步的。

5.当车钥匙距离车很远的时候,有人不小心按了几次车钥匙,车钥匙的随机码就会前进好几步。此时跟车内的码就不同步了。为了解决这个问题,汽车允许接收当前码之后的(比如)几百个码。只要车钥匙发送的码在这个窗口之内,汽车都认为是有效的。

6.如果车钥匙被误按超过设定的几百次,那么车钥匙和车就彻底失去同步了。这时,需要查找汽车的使用手册,找到恢复同步的方法了。

从上面这个原理可以看出来,如果我们能得到汽车当前滚动码“之后”的一个码,只要在窗口之内,就可以把车打开。怎样才能得到一个有效的,未被使用的码呢?比较简单的方法是这样的:

录制一段信号,然后到汽车那边去播放。

或者是,一边录,一边播……

不管怎样都需要接触到车钥匙,所以这并不是那么容易的事情啊。录音工具呢,有很多种,用前面讲到的电视棒就可以了。播放工具呢,也有很多种,比如rfcat

再比如,使用TI的C1111自己做一个RF收发分析器,比如UnicornTeam做的下面这个东西(增加了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通过蜂窝网络连接,等等各种新的开车的方法。就不在本文讨论的范畴了。一个系统越复杂,可能出现的漏洞就越多。

另外,开关车门和发动汽车又是两码事,分别有两个系统管理。所以即使打开了门,也很难把车开走。你以为扯出两根电线短路一下就能发动汽车吗?那都是电视剧!

Hack,这个词有拆开来,钻进去,看看里面究竟是怎么回事,这样的意思。所以我们常常说破解XX,未必是有漏洞能利用,也有分析内部原理的意思。

*作者:360UnicornTeam(团队账号),转载须注明来自FreeBuf黑客与极客(FreeBuf.COM)

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2015-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

SDN私享汇(十五):SDN之道Juniper Contrail深入解析

1.介绍 ? 云计算为了适应业务/APP 的快速开发和部署,会把网络分为两层:Overlay和Underlay网络。对于Underlay网络适用于传统的物理网...

5578
来自专栏ShaoYL

APP上线被APPStore拒绝的各种原因

4297
来自专栏Android自学

某天会毁了你的“实名制”!某天会毁了你的“实名制”!

2235
来自专栏逸鹏说道

携程:关于反爬虫,看这一篇就够了

编者:本文来自携程酒店研发部研发经理崔广宇在第三期【携程技术微分享】上的分享,以下为整理的内容概要。墙裂建议点击视频回放(http://v.qq.com/pag...

61110
来自专栏FreeBuf

用面包和无线接收器黑一台电脑

FreeBuf前些天报道了《利用无线电波窃取计算机密码》,这一种新的且十分富有想象力的方法用以黑进电脑的方法。最重要的是其成本很低,你只需要一块皮塔面包和一个接...

2096
来自专栏FreeBuf

任天堂3DS游戏机烧录卡蓝屏事件

在2013年8月份gateway-3ds发布第一款3DS游戏烧录卡,正式宣告了3DS被破解,可以免费玩众多3DS游戏。在这几个月之后多家山寨厂商开始盗用gate...

29810
来自专栏FreeBuf

没时间了,赶紧上车!教你如何在一小时之内加密你的整个数字生活

写在前面的话 Andy Grove曾经担任过英特尔公司的首席执行官,他参与了英特尔公司的创建并主导了公司在1980年-2000年间的成功发展。他是一位匈牙利出生...

3549
来自专栏域名资讯

四字母域名kqiu.com竟以五位数被秒

四字母域名简短好记,方便用户输入和访问,性价比也非常高,是许多企业所青睐的品种,终端应用价值大。这不有消息:一枚四字母.com竟然卖了五位数!

25510
来自专栏张叔叔讲互联网

【一文读懂】什么是网络爬虫,每天都在忙乎什么?

先自我介绍一下,我是一只网络爬虫,出生在计算机中,操作系统就是我的爸爸妈妈,现在都活了2000毫秒了,这个放到我们生活的世界来说,已经属于比较长寿了。我出生之后...

1942
来自专栏Java架构

程序员如何通俗易懂的给老婆解释什么是微服务?

程序员有了老婆之后就是累,上次好不容易给她解释了什么是Restful,这不,麻烦又来了…

2192

扫码关注云+社区

领取腾讯云代金券