为何要引入汽车网络安全
随着汽车新四化的发展,尤其是网联化及自动驾驶的推进,汽车网络信息安全显得越来越重要。
一方面,汽车在使用过程中会产生大量用户数据,比如你什么时间去了什么地方,以及日常车辆行驶路线规律等信息,这些数据都是用户的隐私。假如你每个月的某一天都会驾车去一个固定的酒店(此处省略一万字),而你的车辆行驶信息被人窃取会带来什么样的后果。
另一方面,随着高级驾驶辅助(ADAS)及自动驾驶的推出,车辆动力及制动控制需要部分或全部授权给智能驾驶系统,而车辆又暴露在互联网当中,此时如果智能驾驶系统被黑客攻破,后果将不堪设想。
看过《升级》这部电影的朋友应该会对一个情景记忆犹新,男主Grey和女友Asha乘坐的自动驾驶汽车突然失控,车辆脱离预定驾驶路线,驶向一处暴民聚集的贫民窟。在那里,两人遭到了袭击,Asha不幸丧生,而Grey身受重伤下半身瘫痪。
这样的情景不只是发生在影视剧里,早在2015年黑客就能通过攻破车辆的通信系统从而控制汽车。
在以70英里/小时的速度行驶过程中,一辆吉普车的空调系统突然被打开,开始吹冷风;然后车的无线电开关自动开启,雨刮器也突然动了起来,雨刷液喷射到挡风玻璃上;最后车自动驶离了原来的路线。甚至可以远程控制车辆的制动系统,导致车毁人亡。
上述车辆奇怪的行为是IOActive的研究员Charlie Miller 和Chris Valasek 利用Jeep车Uconnect信息娱乐系统中的0-day漏洞,远程攻击车辆导致的后果。
今天来介绍一下MCU上有哪些网络安全相关的技术手段,虽然车载MCU一般不会直接通过网络与互联网连接,但是黑客一旦攻破车载无线通信系统(WIFI, 蓝牙等),之后就可以通过CAN网络访问MCU。因此在MCU上使用网络安全措施也是非常有必要的。
安全启动 – 检查Bootloader的完整性和可靠性
下图展示了如何检测和防止bootloader被篡改。
1)MCU上电之后,CSE模块(Cryptographic Services Engine – 加密服务引擎)会从Code Flash读取bootloader。
2)CSE模块使用boot key通过AES-128加密算法为bootloader计算出一个MAC值(Message Authentication Code)。
3)CSE模块比较第2步计算出来的MAC与存储在CSE寄存器中的MAC(该MAC值是刷写bootloader时写入的)是否相同。如果相同,则安全启动认证成功 -> 表示安全启动成功的数据位会被置位并解锁。
4)黑色箭头处,开始执行bootloader程序。
安全通信
下图展示了如何防止非法的消息发送。左侧是主ECU,右侧是传感器ECU,二者通过CAN网络进行通信。
1)主ECU的CSE模块会生成一个随机数并把它发送给传感器ECU。
2)传感器ECU读取传感器的值,把传感器的值、从主ECU收到的随机数和key #x输入给AES-128加密算法进行加密。
3)传感器ECU发送加密后的消息给主ECU。
4)主ECU的CSE模块使用key #x对收到的消息进行解密。
5)主ECU把解密出来的随机数和自己发送给传感器ECU的随机数进行对比,如果一致则认为该消息是合法的,否则丢弃该消息。
部件保护
ECU的替换或篡改会改变它唯一的ID或key。下面的例子将会展示这二者的改变是如何被检测的。
1)主ECU生成一个随机数并把它发送给ECU。
2)ECU把它自己特有的ID和收到的随机数进行加密(使用key #x),并把加密后的消息发送给主ECU。
3)主ECU使用key #x对收到的消息进行解密。
4)主ECU检查解密出来的随机数是否和自己发出去的相一致,解密出来的ID是否和本地存储的ECU的ID相一致。如果二者都一致,则认为ECU 正常,否则认为ECU被非法替换或者篡改了。
上面简单介绍了MCU上使用到的几个常用的Cyber security的手段,以后有机会再介绍更多相关技术。
欢迎订阅公号“日拱一卒不期而至”,获取更多相关内容。