车载软件架构 - AUTOSAR 的信息安全框架
在Crypto的一个标准文档里面,它分了几种类型:Crypto Key管理和键值管理这样几个接口类型。整个Crypto的设计,实际上还是充分考虑信息安全的一些使用场景对它做了一些加密的分类,最后它可以访问你硬件上的TEE或者HSM,通信链路的都是安全可靠,这是AUTOSAR Crypto的一个设计。
·
车载软件架构 - AUTOSAR 的信息安全架构
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。
老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:
屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。
无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。
时间不知不觉中,快要来到春末的六月。清晨起来,抬望眼处那份嫩绿,还是能让人心生欢喜。
本文主要分享车载软件架构 - AUTOSAR 的信息安全架构
1、信息安全背景
2、信息安全措施
3、AUTOSAR信息安全架构
正文如下:
一、信息安全背景
信息安全需求来源
现在车可能相比于十年之前,它有更多的联网的功能,越来越像一个手机。有一些隐私的信息也会存放在车上,车辆已经越来越多的跟自己的一些个人相关的信息有关。
自动驾驶功能引入以后,因为它可以依靠一些软件来实现自动驾驶。信息安全,它的特点是:可能会去篡改软件的内容或者是让一些功能失效。
对于Safety来讲,它有一部分也关系到信息安全,所以从个人隐私、信息和车辆的使用安全来讲,它都离不开信息安全,有非常强相关的关系。
随着汽车技术的飞速发展,现代车辆不仅拥有更强大的性能,还集成了更多的联网功能,使其越来越像一部智能手机。这种趋势使得车辆与个人信息的关联日益紧密,但同时也带来了隐私泄露和信息安全方面的挑战。
自动驾驶技术的引入,尤其是依赖软件进行自动驾驶的实现,使得信息安全问题变得尤为重要。攻击者可能会尝试篡改软件内容,导致自动驾驶功能失效,甚至可能利用安全漏洞对车辆进行远程控制,从而威胁到乘客和行人的安全。
从个人隐私的角度来看,车辆上存储的敏感信息,如位置数据、驾驶习惯等,如果被未经授权的第三方获取,可能会导致个人隐私泄露。这不仅侵犯了车主的隐私权,还可能被用于不正当的商业活动或犯罪活动。
从车辆使用安全的角度来看,信息安全问题同样不容忽视。一旦车辆的安全系统被攻破,攻击者可能会利用漏洞进行远程操控,导致车辆失控或发生其他安全事故。这不仅会对车主造成巨大的经济损失,还可能对公共安全构成严重威胁。
因此,对于现代汽车而言,信息安全已经成为一个不可忽视的问题。汽车制造商需要采取一系列措施来加强车辆的信息安全防护,包括加强软件的加密和验证机制、定期更新安全补丁、建立完善的安全漏洞报告和应急响应机制等。同时,车主也需要提高信息安全意识,避免在车辆上存储过多的敏感信息,并定期检查和更新车辆的安全设置。
在车里面,有哪些场景会和信息安全有关?以往我们用的多的是诊断,它是一个接入车上电子ECU的一个通道,是诊断入口。
车连上互联网后。多了很多应用场景,如下图所示。像远程收集汽车的状态,有些信息还可以和4S店系统做一个同步,得到维护和服务的信息;像车队管理,物流公司整车都有架构系统,还有V2X跟路边单元通信和云端的一些V2S的服务;
-> 远程收集和同步信息:
当车辆连接到互联网时,它可以远程收集汽车的状态信息,如油耗、行驶里程、故障码等。
这些信息可以与4S店系统同步,以便4S店能够及时了解车辆的运行情况,并提供相应的维护和服务建议。
在此过程中,信息安全至关重要,因为需要确保数据的完整性和隐私性,防止未经授权的访问和篡改。
-> 车队管理:
对于物流公司等大型车队来说,车队管理系统是必不可少的。
该系统通过联网功能,可以实时追踪车辆的位置、速度、行驶路线等信息,实现对车队的实时监控和管理。
信息安全在车队管理中同样重要,需要确保数据的准确性和实时性,防止数据泄露或被恶意篡改。
-> V2X(车对万物)通信:
V2X技术允许车辆与基础设施、其他车辆以及行人进行通信,以获取更丰富的交通信息,提高行车安全性和效率。
在V2X通信中,路边单元(RSU)作为信息采集和分发的关键节点,其信息安全尤为重要。
需要确保V2X通信中的数据传输安全,防止恶意攻击和数据泄露。
-> 云端服务(V2S):
随着云计算技术的发展,越来越多的车辆服务被迁移到云端。
云端服务可以提供更强大的数据处理能力和存储能力,为车主提供更便捷的服务体验。
然而,云端服务也带来了新的信息安全挑战。需要确保云端数据的安全存储和传输,防止数据泄露和非法访问。
-> 诊断接口(ECU诊断):
尽管传统的诊断接口主要用于接入车辆电子控制单元(ECU)进行故障诊断和维修,但在联网环境下,它也可能成为攻击者入侵车辆的途径。
因此,需要加强诊断接口的安全防护,防止未经授权的访问和恶意操作。
-> 软件更新和升级:
随着软件定义汽车(Software-Defined Vehicle)的兴起,车辆的功能和性能越来越依赖于软件。
车辆需要定期接收和安装软件更新和升级,以修复安全漏洞、提升性能和增加新功能。
在此过程中,需要确保软件更新和升级的安全性,防止恶意软件和病毒的传播。
-> 车载娱乐系统:
车载娱乐系统为乘客提供了丰富的媒体内容和互动体验。
然而,这些系统也可能成为攻击者的目标,他们可能通过恶意软件或网络钓鱼等手段窃取用户信息或控制车辆。
因此,需要加强对车载娱乐系统的安全防护,确保用户数据的安全性和隐私性。
还有自动驾驶保险,比如说保险以后跟车上面是不是有一个非常健全的信息安全系统,有很大关联;比如说可以根据车辆倾向性等级,制定不同保险的策略;还有OTA可以远程去更新车上的一些固件;还有远程驾驶员协助;这些都是可能和信息安全可能会有些关系的应用场景。
信息安全的风险点
在这种场景下,有哪些手段可能会成为车辆信息安全被攻击的途径呢?从下图里面可以看到,如Head Unit或者一个导航系统,它是最主要的一些被攻击者去攻击的一个途径,因为它上面有存储设备的接入,又有网络互联的功能。
OTA也是通过下载。所以它上面可以有很多手段黑客可以攻击。有些手段在互联网时代是比较多见的。比如通过以太网的一些协议来攻击和侵入我们的系统。
上面的系统也是Linux或者安卓的,这些也是在消费电子领域经常使用的,有很多手段和恶意的方式来攻击我们的系统。包括去获取系统上的一些用户数据什么的。除了这个,还有我们车上的ECU,ECU跟安全用车有非常大的关系。
ECU上面的固件也是非常重要的,信息安全的一个问题点就是:它有可能通过一些方式去更新ECU的一些固件,达到破坏功能,会获取用户数据的一些目的。
除了通过CAN的OBD或者直接去更改固件、应用,现在有OTA以后,也可以远程去更新车上大部分ECU固件,这些都成为信息安全需要去考虑怎么去做保护的一些点。如:
-> 1. 一些非法接入设备,有非法OBD的设备,非法USB的一些磁盘的设备去做访问 。
-> 2. DOS类似的攻击手段,大多数也是基于以太网上面去做一些基于DOS的攻击,像TCP 、SYN 、ACK、办公攻击,都是黑客经常会使用这种手段。
-> 3. 为了触发一些非标准的畸形的报文,去系统进入瘫痪或者进入一个无法工作的状态。
-> 4. 通常会被黑客使用的手段之一就是端口扫描,去提前获取我们车上设备的一些基本信息,根据这些基本信息再去有针对性的去制定一些破解的方案。这些都是信息安全的技术手段。
-> 5. 密码爆破,这种系统通常都会用一个密码系统来保证是不是合法客户在操作设备,所以它也会有很多技术用一些密码破解,达到介入你这个系统地。
二、信息安全措施
中央计算架构下的数据通信安全
针对刚才提到的这些有可能信息安全的一些点。我们有什么考虑呢?我们就当前比较火的中央计算区域控制器下的架构来分析一下。
我们可以看出,中央计算这个组上面需要考虑的一些经济安全的技术,比如说它们之间最基本的还是用以太网做一个骨干网。如果是这样一个设计,这个以太网上的数据通信的安全通信就显得非常重要。
比如现在使用的TLS/DTLS就是这样一个通信的安全机制。它基于公钥加密进行会话、密钥协商和加密通信这样一个手段来保证,这样一个中央计算单元上面,我们通常会布置一个可信的执行环境。上面会运行一些可信的应用,可专门做一些密钥的管理,做一些加密算法的运行。
在这样一个中央计算单上面,我们会布置一个入侵检测系统和一个防护系统,也叫IDPS。
为了做内网和外网的一个隔离,我们经常会设计一个安全网关。将对外的一些流量和车内使用流量做一个划分,将有可能会被攻击的这样的网络,相对来说比较安全,属于车辆内部的网络作为一个隔离,就是中央网关的架构下做的。
中央网关通常是需要有一个比较强的处理器,因为它可能需要做一些深度的包的一个检测;还要运行一个IDPS的引擎;有些固件需要做它的一个转发;需要一些固件实现类似于黑白名单、过滤器这样的一个功能。
除了在中央计算单元上去做这样一些信息安全的设计外,对于区域控制器这样的节点,实际上也要布置类似的信息安全策略,如果它是一个接入的以太网,TLS这种安全通信机制也需要去实施的。
另外类似,还有一个HSM,用来做一些信息安全模块密钥的管理、安全算法。像这种区域控制器也要有这样的设计,另外区域控制上会接入CAN的ECU通信。
以往对于CAN上面的保护,我们考虑的经常是,有没有设定CAN ID的发送,虽然它能实现过滤一些非法ID,实际上如果比较了解车上CAN总线设计的一些专业人员来讲,它是有办法做一些模仿CAN总线消息的发送,去做一些能攻破系统的一些攻击手段;或者操作车上的一些开关什么的都是可以通过模仿一些CAN消息发送来实现。
因此,需要在传统的CAN总线上也布置一个IDS系统,去针对CAN报文的一些异常行为做一个检测,然后去做上报,并且做一些保护的措施,达到从CAN通讯层面的信息安全的一个策略。
在MCU上的IDPS,实现相对来说是轻量级的,因为它需要部署在一个MCU的环境下面。这样的一个区控制器它有以太网通信能力,所以用VLAN做一些虚拟网段的划分;做一些数据流量的隔离,让它运行在一个比较安全的环境下面。
我们现在基本上也用上了SecOC通信,因为CAN或者是以太网在ECU层面,它们都是通过PDU去通信的,我们可以对PDU做一个信息安全层面的校验,这就是secOC做的一个方法。
对于使用了SecOC的情况,攻击者就不能轻易破坏掉了,因为secOC有一些加密机制来保证它通信的信号的完整性和真实性。
从软件的设计上来讲,SecOC可以保证每个电路与执行的链路都是安全可信的。比如获取密钥到运行密钥的一个模块到最终应用层去得到它,经过的每一个软件模块,它都是在一个很严密的一个框架下面去实现。
所以,即使有黑客通过一些手段进入你的软件系统,它也很难从一个可信的链路当中获取一部分的数据,截取出来。这就是可信软件链路的一个要求。
像CP AUTOSAR里面CSM它其实在设计当中也会考虑这样一个可信链路,保障不会从某一个软件模块数据被截取了,这就是在设计这些模块的时候需要考虑的一些原则。
零部件信息安全架构
接下来看一下零部件提的信息安全的一个架构,在中央计算单元模块里面我们通常会做会引入一些概念,比如说可信执行、运行时环境RTE、安全核、安全启动等。
从总体思路上来讲,就是将需要信息安全有关的功能运行在一个可信的环境里面,并且保证它调用这些可信应用的时候,都是一个安全的路径上面去完成的;
另外就是做一个功能的隔离,笔者认为比较重要的一些应用统一放在一个单独的分区上面。这样的话跟一些比较容易被受攻击的一些娱乐功能做一个物理软件层面的隔离或者是硬件上的隔离。
如果是硬件上隔离,通常效果会更好。软件上隔离成本会低一点,会降低一定的运行效率,但是从一定程度上也能起到信息安全的一些隔离的作用。对于可信执行谋害,通常会叫TEE的概念,就是可信应用。
可信应用完全是依照信息安全的标准去设计模块,它的可靠性和鲁棒性是非常强的,不会轻易出现一些被攻破的bug什么的。
TEE上一般会做一些密钥的管理去读取的一些策略,还有一些安全算法,比如说加密算法一般会实现在TEE的核心核上面。
那么,每个域APP怎么去使用一些信息安全呢。比如说密钥信息它怎么去获取它,怎么样去调用一个加密库?这就需要在每个分区上面有自己的信息安全的一些组件去实现。也可以认为它们是一些类似中间件的东西,它就保证说让上层更容易的去调用一些TEE上面的一些功能。
像现在AP上面提到的一些跟信息安全有关的组件,类似于IAM还有Crypto,这些都是去提供一些标准的Crypto接口去让应用或者是一些Functional去调用一些密钥的信息或者是加密函数。
还有就是操作系统,类似于现在的Linux,除了标准Linux,也有一些衍生出来的是经过信息安全加固的这样一个Linux操作系统,它为信息安全做了一些特定的机制来保证它的系统从信息安全的角度更加健全,不容易被攻破。
还有类似于IDS的软件组件去做一些部署,IDS会去做一些数据的收集,这些数据都是跟信息安全有关,因为这些信息就表现出来当前系统运行是不是在合理的情况下;
有没有一些特征是正在被黑客攻击或者是一些状况,根据这些状况再去下发一些保护的策略,如立即制止这种非正常的一些操作,或者说切断一些入口的通道,来保证你被攻击的影响减少。
数据传输安全
信息安全在笔者看来有一大部分说的是安全通信协议,下图里面显示了一些我们通常会用的一些数据传输安全的一些机制。
从最底下来看,假设我们这个通信是基于以太网的,从最底下的一个MACsec的通信,我们需要有MACsec的一些安全协议。像MAC Security也有相应的标准,比如说IEEE 802.I AE这样一个协议。
再往上到IP层也有Security的协议,再往上数据链路层的安全,以及对于数据报文的一个安全协议SecOC;每一层都有相应的一个安全机制;再往上,应用层之间可以有一些特定的通信机制。如果认为SOME/IP也是偏应用层的一个通信协议,SOME/IP上面也会有相应的Security的一些协议可以去使用。
下面这张图是从一个纵向的角度去解释了每个层面数据安全它是位于什么层级?刚才也有简单的介绍,这边可以再强调一下。
对于防火墙或者是IDPS,它的层级是跨的比较深的。它从VLAN到第一层第二层,再到往上的数据包和应用层包,其实都可以做一些分析。如果要做到第四层以上,我们就认为它是一个深度的包检测了,可以从协议层和应用层的再去帮你分析这个包是否是合理的?是不是非法的一个数据包?
如果要实现这样的功能,一般都需要比较强的一个CPU去实现了,通常这种比较成熟的防火墙,IDPS在IP领域其实是已经做得很好了。有这样一个模块,可以一个专门用来做IDPS防火墙模块通常有可能要达到几千几万这样一个模块都有,它的作用就是帮你一个深度的包的检测和去判断一些信息安全的检测。
在车载领域相对来说这个概念还比较新,毕竟我们车内用到的芯片的算力还是比较受限的,所以一般来讲只会在数据链路层左右做一个黑白名单或者是IP地址层面的一些过滤与防御。
入侵检测与防御
IDPS概念是什么?
首先我们所有的一些检测行为都需要有一个数据输入,所以第一个阶段就是数据包嗅探,一般这些数据包都是从操作系统那边第一手拿到的一个IP的数据包作为一个精准的数据输入,
经过解码以后做一些处理,然后去分析一些协议层面或者数据层面的一些解析,用一些规则来判断它是否是正常的一个数据库。
所以这边与规则匹配,当然一些比较有特点的攻击或者是那种对于标识不合规的一些,我们可以自动做一个检测过滤。基于这种规则匹配以后就形成了一个报警和日志,这就是一个IDPS的功能。
这有个P指的是protect,既然已经检测到这样攻击行为以后,我怎么样去尽量的减少对这个系统产生的影响,立即去更新我本地的一个规则,马上实施以后,立即直指当前被攻击的这个源头,这都是一些手段。
在当前车载中,protect的动作设计,基本上是不太会引入的,因为你平时比较担心的是立即执行这个保护行为会不会影响车的功能,所以现在大部分做的是IDS。对于规则的更新和发放,实际上是比较谨慎的。
这张图进一步解释了对于车载IDPS它是怎样一个部署的系统?像我们用的PC这种,它就是一个电脑,就是直接一个以太网。就是说你电脑上装IDS的一个程序就可以做这个系统。
它部署比较容易,在车上去做IDPS的话,它要做很多事情,比如说我让左边这张图,中央网关去要部署这样一个IDPS主节点做一些本地的一个引擎和规则管理。
一些入侵行为需要去收集车上所有ECU的一些报文,无论是CLAN还是以太网,这些都是你去判断是否有入侵行为的一个数据源头,所以你要从域控制器上把一些数据包给收集过来上面,
但不能把所有包直接全部传过来,需要有一定规则的,有IDPS的话,有一些slave的谋害会按一定的规则去一些数据的异常行为,然后更新给中央网关,中央网关再去统一去做筛选和规则匹配。
对于试验报告,一般这个系统部署在云端,它的上面可以算力比较强,它可以去上面运行一些安全机制,策略管理,它可以做很多对于IDPS的一些规则判断或者是对于整个车辆平台和车型做一个进步的IDPS的这样一个规则的升级。
它可以获得这些漏洞。最新的漏洞和攻击手段,它都可以在这个系统上去识别,然后再匹配车上反应出来的一些数据,做一个规则匹配。对于车载IDPS,大概就是这样一个系统设计。
三、AUTOSAR信息安全架构
AUTOSAR提供的安全模块
今天我们讲AUTOSAR里面信息安全架构有哪些?前面也提到了一些概念,就是实际上就是AUTOSAR里面就在使用的。像Crypto Stack提供一些软件加密和密码服务,这是一个基本的模块和CSM 提供可信软件的模块链路。
还有就是一些通信的安全协议像SecOC 、TLS、IPsec每个层级都有一些安全的协议。还有就是AP里面的IDS专门是用来做一个权限的管理,对于本地的资源做访问,做统一的安全诊断,安全诊断除了UDS里面的R7服务,现在多了一个R9,专门用来做一些信息安全产品的验证,对UDS做了一个这方面的扩展。
下图左边是AUTOSAR里面跟信息安全有关的一些组件模块,主要Crypto Driver、Crypto Interface以及CSM模块。
右边是AP下面和信息安全有关的。AP那边不能直接说这几个模块是信息安全有关的,应该说它是哪些模块信息安全会影响它?它的设计里面体现出来信息安全的一些理念,
像刚说到的通信链路,主要是Communication Management,在这个层面它有很多信息安全的协议的设计,如 IAM、Crypto Stack都是一些与上层应用和Functional Clusters去使用密钥和加密程序的一个必要的模块。
SecOC
下图是SecOC,它可能已经用在当前的设计里面,所以就不展开了分享IAM这就是一个标准的SecOC的一个架构图。
Identity and Access Management
IAM稍微去理解一下它的过程,首先是应用程序去请求一些动作。它是通过一些中间件Functional Clusters去操作,操作它之前我们去先通过IAM这个模块去认证它是否是被认证过的一个应用。在IAM返回一个认定结果以后,它才可以真正的使用到一些请求的一些资源,它就是IAM标准的实现的一个过程
下图细节地描述了怎么做它的一个隔离?首先它应用和下面的一些资源是在没有IAM做一些Check之前它是隔离的。需要通过一系列的判断的以后,给出一些认证结果,它才能正常的使用资源。
Secure Communication-Motivation
接下来分享一下AP中的安全通信。主要从以下三个方面考虑:
-> 1. 完整性,安全通信的目的就是要保证数据的完整性。
-> 2. 真实性是不是合法的一个来源。
-> 3. 机密性,在未授权的情况下不能被访问到。
支持的SOME/IP Binding协议
对于SOME/IP Binding来说,我们 Communication Management可以看到这几种绑定的协议,SecOC它支持Message Signing、多播、TCP/UDP都支持。
TLS层面也有相关的一些绑定的支持,IPsec Security在标准里面都是支持的。
IPsec-Internet Protocol Security
IPsec Security通常是以软件的模式体现,首先有一个IKE的模块是Exchange这样的模块,下面IPsec里面有相应的IPsec模块,还有一些Framework的一些模块,像这样一些Database的Security策略也是通过一些配置可以去产生,这是AUTOSAR对于信息安全有一些设计,有它一定的便捷性。
配置Secure Communication
如果进行配置,我们可以在SWC Port端口上面相应去设计绑定你的安全策略。比如说SOME/IP Binding、secOS/TLS/DTLS,在一个系统级的设计层面都可以去部署这些安全策略。
Crypto Stack
Crypto Stack刚才也说了,它主要包含的功能是密钥管理的一些加密算法执行。一般使用Crypto时,还需要一些Crypto Internet,然后再通过一些返回取得解密以后的一些消息。
下图的例子就是原始未解密的信息,然后我们去调用Crypto的一些模块,然后得到一个解密的一些消息的过程。
Use Cases
在Crypto的一个标准文档里面,它分了几种类型:Crypto Key管理和键值管理这样几个接口类型。整个Crypto的设计,实际上还是充分考虑信息安全的一些使用场景对它做了一些加密的分类,最后它可以访问你硬件上的TEE或者HSM,通信链路的都是安全可靠,这是AUTOSAR Crypto的一个设计。
搁笔分享完毕!
愿你我相信时间的力量
做一个长期主义者
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)