-
-
[原创]零成本入门车联网安全研究
-
发表于: 2021-11-12 16:26 21090
-
对车联网安全感兴趣,但却没有实车拿来练手,是一件很可惜的事情。为了解决这个问题,笔者结合自己的车联网安全实践经验,为大家搭建一个高度接近真实车辆的实验环境。这个环境使用了目前流行的多域架构,实现了包括VLAN、防火墙等真实的安全功能,供大家学习和参考。
域架构
对域架构的解释:
1)本实验环境实现了两个经典的通信域VCU和HU,VCU可以理解为整车控制域,而HU则是信息娱乐域,两个域通过以太网进行通信;
2)VCU域实现了车身CAN(BDCAN)和自动驾驶CAN(ASCAN),这两路CAN通过网关相连,用来模拟车身CAN报文发送至自动驾驶模块;
3)HU域实现了仪表CAN(ICCAN)与摄像头CAN(CAMCAN),它们分别与BDCAN、ASCAN通过以太网相连,第一路连接(BDCAN -> ICCAN)模拟车身数据在仪表盘上显示,第二路连接(CAMCAN -> ASCAN)模拟摄像头采集的数据传送给自动驾驶模块;
4)第一路连接与第二路连接通过VLAN进行隔离。
车辆功能
通过ICSim[1]模拟车辆功能,ICSim是一个开源的车辆仪表模拟器,该模拟器包含controls和ICSim两个模块,其中controls负责生成模拟的车辆数据,以CAN报文的方式发送给虚拟的CAN接口,ICSim从虚拟CAN接口读取CAN报文,并在仪表上更新对应零件的状态,如车速、车门状态等等。
(ICSim仪表和操作界面)
在我们这个架构中,ICSim和controls分别连接到两路不同的CAN上,其中ICSim连接到HU域的ICCAN,代表真实的仪表盘;controls连接到VCU域的BDCAN,代表真实的车身部件。VCU域与HU域通过以太网进行连接,controls产生的CAN报文通过以太网传送给ICSim。这种实现与真实的整车域架构及其接近,因为有些车型的仪表确实被划分到了HU域,以太网作为VCU与HU的通信协议也是当下比较流行的域架构。
通过如下方式创建vcanic和vcanbd:
接下来将ICSim与HU域的vcanic绑定,controls与VCU域的vcanbd绑定:
此时,代表车身零部件的controls产生的报文还不能顺利达到ICSim,因为vcanic与vcanbd两路CAN总线目前还未联通,我们将通过以太网的方式将这两路CAN连接起来,同时也将意味着VCU与HU的联通。
CAN-ETH通信
以太网的实现使用开源项目cannelloni[2],cannelloni的核心原理是通过UDP协议传送CAN报文,如下图所示:
(图片来自论文《Mapping CAN-to-ethernet communication channels within virtualized embedded environments》)
因为我们这个实验是在一台机器上进行的,所以我们将通过不同的端口区分VCU和HU这两个独立的通信域,结合划分广播域的需求,我们将通过vconfig创建带有vlan id的虚拟网卡。
VLAN划分广播域
考虑到通过以太网传输的报文类型包含了安全性要求比较高的ADAS(自动驾驶)报文,我们的想法是根据报文的不同安全等级来划分广播域,将普通控制报文和自动驾驶报文通过VLAN划分到不同的网络,相互之间不能访问。
首先需要在真实的网卡上创建带有vlan id的虚拟网卡:
创建结果如下:
给网卡添加ip地址并启动网卡:
启动成功之后的效果如下:
赞赏
- [原创]零成本入门车联网安全研究(二) 14217
- 特斯拉攻击案例解读:硬件逆向分析 35648
- [原创]车载导航GPS欺骗 45192
- [原创]解锁一辆车的非“优雅”方式 33039
- [原创]零成本入门车联网安全研究 21091