汽车高级驾驶辅助系统(ADAS)涉及ABS防抱死制动、安全气囊、刹车控制、转向控制、引擎控制、巡航控制、启停、自动泊车、集成导航(GPS与Gallileo)等等,随着这一系统的被引入,汽车电子生态系统正在变得更加互连且更为复杂。但与此同时,汽车电子器件也取代了很多的琐碎功能,如车灯控制、空调、电动车窗、引擎启动、车门开启、可调及加热座椅等等。
一般来说,车内的每个功能都由一个网络微控制器(MCU)来管理,这些MCU使用相同的通信总线来交换数据与信息,包括面向动力传动、底盘与车身电子功能的CAN、FlexRay或LIN总线,以及用于娱乐信息系统的MOST光纤网络和以太网。
从纯粹的机械环境发展到复杂的电子环境,尽管从舒适性以及驾驶员和乘客的主动与被动安防方面来看,确实增加了许多附加价值,但同时,由于这些引擎控制单元(ECU)彼此互连,也引发了隐私与数据可靠性方面的重大安全问题。例如,几十年前,CAN总线的设计初衷并没有要求其具有高度的安全性,实际上,车内通信总线内部的任何CAN信息都会发送给系统的其它组成部分,而且不支持任何授权、鉴别和加密协议。现代汽车使用CAN总线交换数据,用来开启车门和启动引擎,这些信息在车内的ECU与电子钥匙内部的ECU之间交换。如果该系统遭到损害,窃贼就能轻易地偷走汽车,而且“黑客”也可以访问车内GPS来查看汽车常去的地方,从中探知司机在哪里,什么时候汽车无人看管。
此外,用于实现电邮、SMS、视频流、视频电话等互联网移动功能的蓝牙、GPRS或UMTS,也扩大了“黑客”的攻击面,他们可以通过远程访问,侵入任何通信和驾驶系统,或者插入恶意软件来窃取各种数据,如汽车的实时位置、经常使用的路线和完整的对话等。
车载硬件安全架构
顾名思义,“开放系统”是暴露的,它面临通过多种方式实施各类攻击的可能性正在持续增加。汽车车身内部与外部通信网络的不断发展,正在迅速挑战汽车电子本身的安全防护能力。
迄今为止,由于最普遍使用的传输总线CAN的内部弱点,人们一直从软件应用的角度来研究“攻击面”。但现在,行业内开始把注意力转向硬件架构,以及应该如何“密封”ECU使其难以渗透并避免受到非法操纵,例如未经授权的安装、恶意软件上载、“木马”软件以及虚假升级等,或者至少能够限制非法访问并留下确凿的篡改证据。
正因为如此,通过硅器件厂商与一家知名汽车OEM厂商的合作,开发出了面向汽车功能的新一代MCU。这类四核微控制器利用专门的安全内核,即HSM(硬件安全模块),提供安全与防护功能,HSM内部包含系统安全配置、安全启动、外部访问保护、闪存保护、加密功能和寿命结束保护等。
图1 嵌入ECU内部的HSM硬件安全模块
如图2所示,HSM模块嵌入在ECU内部,绝对独立于其它与内存和外设访问相关的内核,数据和代码都有专用的闪存扇区,而且严格限于预留访问。
图2 五种不同阶段的安全功能配置
配置系统安全性
系统安全性配置是在硬件层面保护敏感数据的第一步,在加电之前的重置阶段完全控制整个初始配置,防止非法侵入和擅自篡改。
利用设备配置格式(DCF),硅器件厂商和软件开发商都可以保留所有初始配置,从而可以在启动阶段检查与击穿试验和用户击穿试验内部DCF相关的特殊内存地址、ECC(纠错码)错误以及奇偶校验误差。
在重置阶段,利用各种渐进步骤,可以检查一些安全防护功能。利用这种方式,通过几个参数进行交叉检查控制,就可以阻止以多种手段修改特殊内存地址的企图,或者强行改变启动以加载新的恶意固件的企图。
硬件架构规则基于预先定义的设备功能状态。安全设计人员提供出几种安全级别,以便软件开发者在最终实现其应用时拥有较高的自由度。实际上,一些层级较低的软件应用经常可以交给第三方开发,然后设计和实施递增的、不可逆的保护,满足不同开发者提出的要求。此外,多数安全机制在激活时要考虑设备的寿命周期(DLC)情况。硅器件厂商与软件开发者可以建立五种可能的递增与不可逆配置,以便实现针对侵入与操纵攻击的反制措施。
对于每一个阶段来说,安全等级都会得到提升,而且不能撤销。从第二级开始,在客户交付阶段,这个非常有限的安全机制为软件开发阶段提供了最大的自由度,而在现场设备阶段则开启完整的各种安全防护功能。
通常,在JDP生产阶段至客户交付阶段的过渡阶段,设备从原始生产商手中转移到第一个软件开发者手中,后者把MCU整合到更加复杂的系统之中。从客户交付阶段到OEM生产阶段,第三方为了保护自己的知识产权,一般会为设备开发最后的软件应用程序。最终,到达现场设备阶段,需要在嵌入汽车的最终应用里面采取一系列控制与不可撤销的保护措施,来满足OEM厂商以及系统开发者和汽车制造商的要求。“故障分析”是最后的设备生产阶段,用于测试的是被退回到工厂的设备系统,因此在这一过程中,一些相关安全保护功能将被停用,避免MCU因寿命周期保护而被认定为失效。
启动安全机制
在启动阶段,MCU四个内核中只有两个通过重置被唤醒。这两个是IOP(输入输出处理器)和HSM内核。通过一个DCF记录,IOP与HSM CPU之间的一个信号交换过程被激活。IOP执行BAF启动辅助闪存,而HSM CPU执行客户定义的代码。IOP内核执行系统设置,如果敏感数据遭到修改或者发现有侵入企图,HSM内核就会进行各种检验,例如闪存完整性检验。
安全启动能够一直保持并处于受控状态,同时进入特殊的预定边界和微启动阶段,与此同时,能够检测篡改攻击或ROM中的固件操纵。在这种情况下,它可以禁用所有的加密功能,使所有密钥不可用。
POR(加电重置)过程中的IOP内核,如果处于设备的客户交付阶段,则对其编程以便执行BAF辅助闪存。这个BAF是写入某些内存地址中的嵌入代码,利用两种机制加以保护:OTP(一次性可编程)和OPP(程序外保护)。通过这种方式,启动永远在受控状态下执行,也可以利用一个串行引导装入过程,或者在直接跳转到应用代码起点的情况下,把访问权授予RAM。各种软件开发者都参与到最后的应用发布中,仅在客户交付和OEM生产阶段启用BAF,允许上载固件,而在现场设备阶段则完全禁用。通过这种方式,应用代码在执行过程中遭到限制,不可能利用硬件系统资源进行未经授权的固件升级。在现场设备阶段,只有OEM厂商开发的应用才能执行固件升级。
防范外部访问
汽车选用电子器件是因为其可以通过多种通信总线实现先进的互连功能,因此对于安全设计者来说,保护和外部界面的访问是最大的挑战。为了能对器件访问具有较强的选择性,业内开发出一种多层JTAG安全架构。
JTAG安全架构采用了所谓的“PASS”模块,除了保护器件闪存访问的基本任务以外,它利用一种口令机制来限制JTAG端口访问。因此,JTAG端口得到了严格控制,采用一种挑战/响应协议,封锁任何自由访问。
与PASS模块相配合的还有“审查模块”,在设备遭到审查或JTAG口令无法识别的时候,启用闪存读出保护和调试界面访问。换句话说,从OEM生产阶段及后续阶段,审查模块可以让设备被审查或不被审查,在授权调试器访问的时候,修改闪存可以被JTAG界面读取。
此外,设备访问也依赖来自现场设备阶段的“生产禁用”DCF设备配置格式,具有高于所有访问控制的优先级,可以禁用调试端口界面。在设置DCF之后,MCU的运行将不受任何限制,但调试端口界面将被禁用。软件开发者可以决定重新启用这个端口,但设备不再能够使用。实际上,这种机制是在CAN和FlexRay总线波特率中添加了一个时钟偏差,使得这些通信总线无法工作。
另一方面,还需增加两个安全级别,以限制利用调试端口界面对MCU的内存访问。HSM使用两个寄存器(HSMDUR和MDUR)来控制外部工具对主内核与HSM内核的访问。这样一来,在发生非法访问的情况下,同一个TAP控制器就可以受到严格限制。换句话说,即使攻击者能够在调试端口进行未经授权的访问,但仍然无法访问HSM及其代码。
最弱环节:MCU闪存
对于任何外部攻击来说,最薄弱的环节也许就是MCU闪存,这里存放着固件以及所有的安全配置,如口令和密钥。
因此很自然,在MCU内部采取了多种机制和模块加以保护,与MPU(内存保护单元)一道,另外两个模块完全用于保护设备闪存内容:即PASS和TDM模块。此外还有上面提到的HSM、审查模块和密封模块能够有效地限制闪存访问。
如图3所示,PASS与TDM模块组合可以禁用所有的闪存擦除与程序操作,而一个专用DCF(OTP_EN)可以启用原始设备的编程。
图3 MCU闪存封锁保护系统
尽管MPU在不同访问层级(读/写或用户/审查模式等等)保护和管理内存,但无法抵抗可以修改内存内容的侵入攻击和外部操纵。进入PASS模块,该模块不仅可以利用256位口令机制控制任何闪存操作(闪存读取、闪存编程、闪存擦除),而且也能检查外部调试访问端口。这些口令是受到保护的,而且与OEM生产和后续阶段相隔离。一旦那些256位口令写入用户闪存测试DCF,就不能再被访问,只能通过PASS模块输入寄存器来修改受到保护的存储区。
TDM篡改检测模块可提供一个非常有效的针对数据操纵企图的反制措施,因为它创建出一种电子日志,当某些受保护的内存区被擦除的时候,操作者不得不在日志上留下数字记录。也就是受到TDM保护的所有内存区块只能通过对特殊的闪存区编程来擦除,从而确保不可撤销的机制留下修改和固件升级企图的证据。
设备中采取的其它闪存保护机制还有OTP和OPP,它们只在原始设备和密封阶段才允许内存擦除请求。这完全保护了内存区,禁止在故障分析阶段访问某些内存区。此外,就HSM模块而言,还有其它两种保护机制限制对这个安全内核中专用闪存区的访问:HSM执行机制和替代接口机制。第一种机制只允许HSM访问HSM闪存专用部分,而第二种机制允许通过专用界面访问HSM闪存寄存器,只供HSM内核使用。
HSM模块的每个存储区可以指定为“HSM专用”。这样,该存储区就可以利用替代接口机制来访问。替代接口机制是一组闪存寄存器,复制主接口寄存器功能用于擦除与编程操作。这样,一旦HSM存储区通过DCF被映射到替代接口,对于主接口来说,任何访问、编程或擦除该存储区的企图都不可能得逞。
加密功能
加密系统是用于保持汽车网络内部通信总线数据传输完整性、可靠性与保密性的最有效方法之一。利用加密功能,可能是阻止利用通用CAN破 解机制发动攻击的最佳手段。这意味着任何单个设备都应该具有自己的加密模块或者应该把这些功能委托给一个独特的综合单元,该单元可以加密和解密汽车内部传感器与激励器之间交换的任何信息。
HSM模块可以提供多种加密功能,因为它采用一个密码通道控制器来管理一个TRNG(真随机码生成器)和一个MPAES(微处理器先进加密标准)。
当设备进入故障分析阶段时,就必须解除某些保护机制,以便对可能的问题进行分析。乍看起来,这种配置似乎会给打破安全保护创造条件,并允许修改嵌入固件,把设备设置到现场设备阶段,以便与原始系统相连。但是,可以利用几种反制性保护措施来应对这种情况。这些措施包含在“寿命终止保护”机制之中,可以在CAN和FlexRay总线传输完全中断的情况下恢复上述情形,如E-fuse保护机制,而且可以选择无限地循环运行BAF启动辅助闪存。
E-fuse机制可在特定闪存测试模式启用时在设备内部留下永久的证据。由于这种操作是不可逆转的,因此通过这种方式,就很容易检测设备的状态,并永远保持在故障分析模式下,使其不可能回到DCF现场状态。
HSM硬件安全模块代表对于安全需求、反侵入控制和数据加密的最全面答案。车内信息娱乐设备数量不断增加,如控制公路交通事件以及提供撞车及天气预报信息的设备等,使得这些安全功能变得非常关键。
HSM模块是嵌入在ASIC中的一个SoC系统芯片,它由一个100MHz内核、带有MPU的一个数据交叉开关以及一个中断控制器构成。该100MHz内核具有专用本地RAM和预留的代码与数据闪存。HSM模块拥有一个HSM/HOST接口用来与MCU内部的其它内核交换数据和指令,交换以安全和自动的方式进行。此外还具有一个C3模块(加密通道控制器)。HSM用于控制MCU功能,但也控制所有的加密功能,因为它包含一个内部模块C3,C3集成了一个真随机数生成器和一个MPAES模块。除了安全启动和调试界面访问控制之外,它最重要的功能是密钥生成随机数,并执行所有的加密与解决功能。
如前所述,CAN总线当初设计并没有追求太高的安全性,因为它不能保证传输保密性,而且是以广播模式发送信息。它不能保证传输数据的可靠性与完整性,加密信息则可以满足车内传输总线的要求。采用非对称与对称密钥算法,可实现传输数据的保密性、完整性和可靠性,而HASH功能如数字签名或者MAC(信息验证码)可提供数字签名来鉴别数据发送人,或者提供一个CMAC(密码信息鉴别码)来发出安全启动。所有的加密与解决功能,以硬件方式实现,并给予CAN通信总线所需的带宽,不至于让主CPU过载。
这些将用于下一代汽车的半导体器件是新型MCU,如意法半导体的SPC57EM80、SPC574K72和SPC572L64。它们是嵌入在电子设备中的安防硬件措施,可以阻断外部与内部攻击者的非法操纵和未经授权的侵入,专注于实施这种多层架构。这些硬件保护机制能够提供强大的保护措施,防止他人非法访问MCU内部数据,而加密功能可以成功地用于汽车的CAN传输总线。