本周一,360汽车信息安全实验室负责人刘健皓与一同进行这项课题研究的浙江大学教授/博士生导师徐文渊、浙江大学闫琛一起,在Defcon上共同进行演示,介绍了是如何骗过特斯拉Model S上的超声波传感器、摄像头和毫米波雷达。
自动驾驶,包括现阶段的半自动驾驶,实现的过程都是通过安装在车辆上的各类传感器对车辆周围的环境进行感知,数据传到分析处理单元,控制单元根据分析处理单元发送的结果得到判断,进而向车辆的执行器发出命令,做出转向、加速、刹车等不同的命令。
他们的切入点,就是在第一步,传感器感知周围环境时,做了一些手脚,让传感器得到错误的数据。
如何干扰传感器?
不同的传感器干扰的方式自然不同。这次研究的三个传感器工作原理各不相同,咱们一个一个看。
1.超声波传感器
超声波传感器在车辆上的作用是探测障碍物,发出超声波之后,根据接收到回声的时间来判断与障碍物之间的距离。特斯拉的Model S的车身周围安装有12个超声波传感器用来探测车辆周围的障碍物,并且会在检测到有障碍物之后发出警告声,仪表盘上对应位置会有障碍物以及距离提示。如果开启了Autopilot,那么车辆还会在距离过近的时候自动刹车。
影响超声波传感器的方式很简单,一种是通过发出超声波的噪声,增加超声波传感器接收到回声的信噪比来影响它的判断;一种是发出相同频率的超声波给超声波传感器,让它误以为原本没有障碍物的地方是有障碍物的。
实现起来也很方便,只需要一个成本在60元人民币的干扰设备,在车辆的超声波传感器前方发出对应信号就可以了。从团队研究的结果来看,如果是通过噪声来干扰,那么会影响超声波对距离的判断,判断结果不精准,从而显示在仪表盘上的距离信息也是错误的;而如果是通过发出同频率的信号,那么会让传感器做出完全相反的判断。
如果是在人工驾驶状态下,那么会被仪表盘显示的错误信息而误导,而如果是在Autopilot的状态下,那么同样会被误导而做出错误判断,或者误以为系统不工作而发出警告声,必须由人类驾驶员接手。需要注意的是,如果是发出同频率信号来进行干扰,那么时间很重要,只有第一次让传感器接收到的超声波是有效的,能够产生影响。
当然,除此之外还有一个最简单的办法,使用一些可以吸声的材料,就可以吸收传感器发出的超声波,直接让其被罢工。
2.毫米波雷达
相比之下,对于毫米波雷达的破解难度要大很多。最直接的体现就在设备的成本上,据刘健皓透露,他们干扰毫米波雷达的设备成本在120万人民币。不过,出于安全考虑以及设备电源线长的限制,对于毫米波雷达的干扰并非是在车辆高速运行状态下实现的。
毫米波雷达的理论干扰距离就是毫米波的探测距离,不过无线毫米波发射装置很少且成本会更高,这也是对毫米波雷达的攻击会更加难以发生在现实中。
刘健皓表示,通过电磁波的干扰,可以在前方无车的状态下让传感器认为有车,这个信息会同步显示到仪表盘上,如果距离足够近,报警装置还会提醒,同样,在Autopilot状态下,会自动刹车。同样,可以在前方有车的时候,让系统认为前方无车,而继续行驶。
与超声波雷达相同的是,同样可以通过干扰设备来让系统进行错误的距离判断。而不论是超声波雷达还是毫米波雷达的距离判断,从实际的开车场景来说,只有微小距离的错误判断会更容易给人以误导,比如在倒车或者停车入位的时候,更多的干扰,是对于Autopilot这套系统。
如果传感器被严重干扰,在Autopilot下,系统同样会做出「传感器不能正常工作」的判断,从而无法启动Autopilot,要求进入人工状态。
3.摄像头
虽然现在特斯拉5月份的致死事故还没有最终确定原因,但是卡车的白色集装箱对摄像头带来的「致盲」效果,正是刘健皓着手研究的切入点。不过对于摄像头的干扰,并没有直接在车上进行,而是将摄像头拆下。
让摄像头致盲的手段是采用光源直射摄像头(或者直射标定板,让其反光射向摄像头),其最终的效果取决于光源与摄像头的距离,以及光源的强度。据刘健皓介绍,在距离摄像头50cm的位置用200毫瓦的红外线,可以让摄像头致盲40秒。如果距离增加,效果会递减。如果光源过强,还会造成摄像头直接被烧坏。
当然,距离50cm在现实生活中是无法对行驶过程中的车辆实现的,随着距离的拉长,可以通过增加光源强度的方法,来造成致盲。而只要致盲2-3秒,对于开启了自动行驶状态的车来说,就很可能带来严重的后果。
从硬件来说,摄像头本身存在一个刷新频率,如果刷新频率够高,则会让致盲的效果减弱。
传感器可以被欺骗,这说明了什么?
从前面的描述中其实可以看出,从传感器入手来进行攻击,其实并不是一个很容易实现的方式。
在提到的三种传感器中,最容易实现的就是超声波了。设备成本低,入手容易,一个充电宝就可以让其保持工作,虽然有距离的限制,但是除了地库之外,也可以通过跟车的方式来实现。而要致盲摄像头,一方面是距离越远效果越差,虽然只要致盲哪怕一秒钟就可能会引起严重的后果,但是需要一场精心策划,毫米波雷达更是如此。
之所以从传感器入手,是因为360在研究自动驾驶过程中,巧合发现了传感器接收到错误数据对系统的影响。不过,干扰传感器并不是根本目的,刘健皓表示,「我们研究的还是自动驾驶,干扰传感器只是想说明现阶段自动驾驶的模型和算法还存在缺陷,需要去解决」。选择Model S,也是因为Autopilot能够在车辆停止时打开,便于试验研究。目前特斯拉也已经与360联系,双方将共同研究这一问题。
传感器被干扰之后系统得到错误的结果,从刘健皓的角度来看,一方面是传感器本身没有「弹性」机制,二则是在决策算法上,没有进行容错。以毫米波雷达为例,Model S毫米波雷达的频率与波长都是被逆向得出,如果设置了弹性机制,频率随机,那么逆向的难度自然会加大;而从算法层面来说,目前Model S虽然进行了不同传感器的数据融合,但是并没有针对异常数据有分析过程。
在刘健皓去美国之前,车云菌在360的地下车库观看了他们对超声波干扰的实时演示。除了错误的信息得到的错误判断之外,其实还顺带发现了另外一个问题:
在正常状态下,开启Autopilo之后,如果车辆处于前进状态,那么后方是否存在障碍物是不会影响车辆状态。但是如果此时将干扰设备放在后方传感器附近(实测3米左右就可以),那么车辆就会自动刹停。车辆倒车时,干扰前方超声波传感器可以得到同样的效果。
造成这一结果的原因尚未得知,不过可以知道还是出在Autopilot系统本身的判断机制上。
360和自动驾驶
很容易想到的一个问题是,360为什么开始研究自动驾驶了?在这点上,360攻防实验室的想法和成立了Comma的黑客George Hotz相类似。
据刘健皓介绍,他们目前正在将一辆混合动力车改装成自动驾驶车辆。不过实现的手段与目前其他团队的方式有所不同。现在通过改装车实现自动驾驶相关功能的,都是通过新增执行器的方式,让执行器变成电子控制的。而执行器的技术则被一级供应商所垄断。
刘健皓认为,如果要让自动驾驶普及的话,那么可以通过软件改装的方式来实现。只要车辆的转向、动力和刹车等控制是可以电控的,那么就可以而通过逆向执行器控制协议的方式,拿到控制权。而后在加装传感器,让车辆变成具备L2辅助驾驶功能的车辆。
关于目前的改装进度,刘健皓并没有透露太多。从理论上来说,这个方式是可以实现的。虽然实际操作过程中会存在很多问题,比如逆向控制协议的过程,再比如他们需要对车辆的执行控制需要有很长时间的研究,不过这个方式也给汽车圈带来了新的思路。
小结
聊到最后的时候,似乎「360要研究自动驾驶」这件事情比「干扰传感器」更能引起车云菌的兴趣。毕竟干扰传感器这事儿的实现难度摆在那里。但是不可忽视的是,自动驾驶车的安全问题正是为人们所担忧的。在传感器之外,数据传输、V2X以及CAN总线架构,都是需要注意的节点。