背景简介
3. 智能汽车功能安全(Safety)和信息安全(Security)在设计阶段也有冲突的地方,比如过度基于软件实现的安全特性,会导致控制指令的延时,影响功能安全特性的实现。因此为了提升产品的性能,以及Safety和Secuirty的强隔离,也必然会要求将更多的信息安全特性集成到芯片里,或者基于芯片的能力来实现。
芯片安全知识图谱
芯片安全图谱的两个维度:
1. 一个维度是芯片自身的安全防护能力,比如能抵抗物理侵入式、半侵入式物理攻击;能检测和防御故障注入攻击;以及耳濡目染的侧信道攻击。这就像是一辆坦克自身厚重的钢板,能抵挡普通子弹和炸弹的攻击。物理攻击需要较强的专业能力,比如借助专用的测试仪器,以及可以近距离接触的物理设备。
常见的芯片攻击手段
3.1 侧信道攻击
a)概念:利用设备的接口对芯片进行电磁和功耗的分析,无需对芯片进行破坏
b)常见测评、攻击类型:时间分析、功耗分析、电磁辐射分析、光子分析
c)适用对象:集成电路/芯片、智能卡、智能门锁、物联网终端、车载电子等产品
图2(图源:百家号)
下面是一个针对手机的侧信道攻击(电磁分析攻击),作为一个简单的样例。
图3(图源:https://www.sohu.com/a/165330167_99909589)
d)防护原理:消除和降低侧信道信息与密钥的相关性,常用手段:
掩码技术:引入随机掩码,平衡“0”和“1”分布。
隐藏技术:平均化侧信道信息,降低数据的可区分度。
混淆技术:降低信噪比(有效侧信道信息),如使用随机时钟等,增加侧信道分析难度。
3.2 故障注入攻击
利用故障(电压、时钟等)引起电路出现异常,根据异常信息分析芯片内部的敏感信息;或者直接利用引起电路的异常来改变程序运行等。
(信息来源:乐鑫发布关于故障注入和安全启动的安全性公告(CVE-2019-15894))
传感器:专用传感器(电压、频率、温度等)对电压、时钟故障可以起到检测和告警作用
逻辑&时钟冗余:逻辑冗余分为面积冗余和时间冗余。面积冗余是指多分计算逻辑各计算一次,最终对比各个计算逻辑的结果来检查是否有故障注入;时间冗余是指一份计算逻辑计算多次,比较多次的结果来检查是否有故障注入。
金属外壳&特殊封装:通过金属外壳,可以对激光故障注入,电磁故障注入等手段具有一定的抑制作用
逻辑深埋:将关键电路逻辑部署在芯片内层,而不是直接部署在芯片表层,使得故障注入的难度增加
CRC校验
3.3 物理攻击
a)概念:去除芯片封装,对内部电路进行电接触,结合其他攻击手段获取保存在芯片内部的敏感信息
b)常见攻击类型:FIB电路修改/探针攻击、单板级走线篡改/探听、整机攻击。
c)防护技术:
Passive shield:被动屏蔽层,例如在芯片表面构建钝化层,金属屏蔽层,增加攻击者解封装难度
Active shield:主动屏蔽层会构建一个电路检测网,覆盖在关键电路表面检测电路,一旦有损坏,就会发出告警
特殊封装:对电路(芯片)采用特殊封装
验证辅助的安全特性
- 提供加解密功能
- SHE
- HSM
以下为详细的案例介绍。
图4
2)核心能力:
芯片内支持4个并发加解密任务(job),每个任务带有资源ID、TZ(Trustzone标记)和任务ID,并能和Trustzone机制配合使用,具有很强的权限控制能力。
4.2 专用算法密码引擎
图5:BEE 逻辑架构图
2)NXP针对RAM在线加解密引擎-Inline Encryption Engine
AES-XTS模式下的DDR加密和解密
QSPI闪存解密,在AES-CTR模式下
I/O DMA直接加密的存储和检索(AES CTR 128)
多核资源域分离
使用专用总线安全地加载片上密钥
差分功率分析(DPA)电阻
检测物理篡改并响应
4.3 小结
1. SHE规范奠定了汽车安全基础,引入了汽车可配置的安全子系统概念
2. EVITA的HSM规范扩展了SHE,并采用了Full,Medium、Light三种规格,从而满足更多场景的要求
3. 如今,OEM正在创建自己的技术规范,包括SHE、EVITA和FIPS 140-2的某些方面,以及区域/行业性特殊要求(比如支持国密算法)
4. 还有一些厂商定义特定的轻量级加密引擎,比如NXP的IEE、BEE、PRINCE算法等
启动安全
先讲一个概念:信任链(chain of trust)
在可信计算体系中,建议信任需要先拥有可信根(Root of Trust),然后建立一条可信链(chain of Trust),再将信任传递到系统的各个模块,之后就能建立整个系统的可信链。
安全启动的原理就是硬件信任锚+信任链。
网络设备的安全性严重依赖设备上运行软件的完整性,通常使用信任链确保软件完整性,启动期间每个阶段在执行前检查下一个阶段,如下图所示,这个过程有一个特例,这一步之前没有任何东西可以进行任何检查,此阶段称为信任根(Root of Trust)。
5.1 安全启动
安全启动(Secure Boot):安全启动也叫Verify boot,就是在启动过程中,前一个部件验证后一个部件的数字签名,验证通过后,运行后一个部件。
图7
目前安全启动基本上是对安全要求比较高的场景下,芯片必备功能。
扩展:在IoT领域,以微软为主推出了轻量级的类TPM技术-DICE,就使用了基于硬件信任锚的可信启动方式。
5.3 加密启动
顾名思义,就是存储在flash中的image是密文,启动过程中会先解密再启动,下图是NXP加密启动的流程图:
图9
安全存储
6.1 OTP存储器
一次性可编程存储器(On Chip One Time Programmable ROM, On-Chip OTP ROM):OTP存储器,也称为eFuse,是芯片中特殊存储模块;字段中的任何eFuse位都只能从0编程为1(融合),但是读取操作没有限制。OTP在安全中的应用一般可以存放一些固定不变的值,比如:
每个设备唯一的根密钥(Master Key)
设备唯一ID(Device Unique ID)或者MAC地址
芯片第一次boot时,软件bootloader根据以下步骤使能Secure boot:
1)硬件产生一个secure boot key,将这个key保存在efuse中,利用这个key、一个随机数IV和bootloader image计算出secure digest。
2)secure digest与随机数IV保存在flash的0x0地址,用于在后续boot时验证bootloader image是否被篡改。
3)bootloader通过烧写efuse中的ABS_DONE_0永久使能secure boot。
4)芯片在后面的boot中,ROM bootloader发现efuse中的ABS_DONE_0被烧写,于是从flash的地址0x0读取第一次boot时保存的secure digest和随机数IV,硬件使用efuse中的secure boot key 、随机数IV与当前的bootloader image计算当前的secure digest,若与flash中的secure digest不同,则boot不会继续,否则就执行软件bootloader。
5)软件bootloader使用bootloader image中保存的公钥对flash中的partition table和app images签字进行验证,验证成功之后才会boot到app代码中。
第一次boot时secure boot与flash encryption的生效过程如下图所示,图中蓝色框是 secure boot的步骤,绿色框是flash encryption的步骤:
图10
6.2 Flash空间保护机制
Flash空间保护主要是Flash某些区域设置只读或者只写,防止非法访问和篡改。Flash保护区域的数量和大小会根据Flash的类型和该Flash块的大小而有所不同。主要的应用场景有:
保护包含代码的闪存的所有区域,以保护应用程序本身不被覆盖。用于存储数据的闪存区域将不受保护。
6.3. 内存的保护机制
目前操作系统也可以设置一些区域的不可读或者写的机制,也有芯片级内存保护机制,下面仍然以NXP芯片为例。
图13:i.MX 8安全性概述
FOTA(Firmware over the air)
能够对汽车执行现场软件更新的优势已得到充分确立:它将为制造商节省资金,使关键错误得以立即修复并在其生命周期内随时向汽车添加引人注目的新功能。理想情况下,对车辆操作至关重要的更新应在后台无缝且不可见地进行。
图14
上图显示了关键组件,这些组件将更新文件从OEM服务器获取到车辆中的特定ECU。通过蜂窝网络在单个车辆和服务器之间建立安全连接。这样就可以将新的固件更新安全地发送到车辆的Telematics Unit,然后再发送到OTA Manager。OTA Manager管理车辆内所有ECU的更新过程。它控制固件更新到ECU的分配,并告诉ECU何时执行更新。
这在需要同时更新多个ECU的情况下非常重要。为涉及多个ECU的车辆添加新功能。更新过程完成后,OTA Manager将向OEM发送确认。
可以在运行OTA Manager的ECU上安装外部NAND闪存,以存储固件更新,直到需要它们为止。外部闪存还可以用于存储其他车辆ECU的固件备份副本,如果ECU更新出现重大故障,则可以调用该备份副本,从而使ECU没有任何可用的固件。这些备份副本将通过加密和身份验证来提供保护,以防止存储在外部存储模块中的同时对固件进行任何篡改。
完整二进制文件:新固件完整发送。这具有不依赖于先前固件的优点,从而即使先前版本已损坏也可以进行更新。该方法的两个缺点是传输二进制文件所花费的时间以及在接收方ECU中存储二进制文件所需的空间。许多传统的ECU在CAN总线上的典型速度为500kbit/s。
差异文件:在服务器上,OEM将新固件与以前的版本进行比较,并创建一个“差异”文件,其中包含它们之间的差异列表。
根据更改的数量,此文件通常是:
“A/B”方法(“A/B” approach):这会使每个ECU上的闪存数量增加一倍,以便它可以在“主”闪存中包含当前固件,并在“第二”闪存中具有用于全新版本的空间。从最终用户的角度来看,这种方法是理想的,因为ECU可以使用主存储器保持正常运行,而新固件可以在后台写入辅助存储器。更新完成后,ECU在方便的时间使用新更新的固件(在辅助闪存块中)(例如,在下次启动时,也可以等待将开关与要更新的其他ECU进行同步)。由于始终有可用的固件,因此没有将ECU置于不可操作状态的危险,因为始终可以立即“回滚”到先前的可用固件。一个明显的缺点是在MCU上实现两倍于执行闪存的成本。
“就地”方法(“In place” approach):在这种情况下,设备上仅存在固件的一个版本,并且作为更新的一部分擦除并编程了各个块。当ECU处于正常运行状态时,更新无法运行——这意味着车辆将在一段时间内无法运行。该时间段主要由重新编程ECU Flash所需的时间决定。车辆中的主要ECU(如发动机控制器)将具有数MB的闪存,如果需要对完整的固件进行重新编程,则可能需要数十秒的时间才能完成。对于OEM厂商来说,这是一个挑战——客户是否会接受这样的事实,即他们无法在长达一分钟的时间内启动引擎。A/B方法的增加成本必须与“就地”方法给客户带来的不便之间进行权衡。由于“就地”方法中仅存在固件的一个版本,因此更新过程中发生错误或重置可能很难从中恢复,并且如果未仔细处理,则可能导致模块(以及汽车)功能无法正常运行,因此在车库对其进行更新之前,车辆将一直无法使用。
安全诊断(Secure Debug)
现代处理器配备了基于硬件的调试功能,以促进片上调试过程。
通常需要电缆连接(例如JTAG [1])才能使用这些功能。
如果诊断过程没有合适的安全机制,很容易被黑客利用,如下图所示:
图15
安全JTAG模式通过使用基于挑战/响应的身份验证机制来限制JTAG访问。检查对JTAG端口的任何访问。只有授权的调试设备(具有正确响应的设备)才能访问JTAG端口。未经授权的JTAG访问尝试将被拒绝。此功能需要支持基于质询/响应的身份验证机制的外部调试器工具(例如Lauterbach Trace32,Arm®RVDS/DS5调试器等)。通常在设备制造期间而不是在开发板上启用安全JTAG模式。目前很多芯片厂商都提供自己的安全诊断方案,下面仅以NXP为例:
图16
1.用户通过JTAG接口请求调试
2.SOC以芯片唯一ID响应
3.服务器找到相应的密钥(TZ或normal world)
4.用户通过JTAG界面提交密钥
5.安全的JTAG模块将密钥与预先配置的密钥进行比较
6.如果匹配,则启用调试(对于TZ或normal world)
注:
2. 从安全角度通常建议设备真正投入使用时,应关闭芯片的JTAG口或者其他类型的调测端口。
安全运行环境
安全运行环境主要是指芯片向OS和APP提供安全隔离的计算环境,以及配套的虚拟机管理程序或者SDK,通常包括芯片计算多分区(Multi Partitions)机制和可信计算环境(Trust zone)。
2)Secure EL1中安全分区具有隔离的地址空间,其他安全分区无法访问此空间,是一个沙箱环境。
2. 系统资源隔离(以NXP的XRDC特性为例)
1)什么是分区:
内核,外围设备和内存可以属于多个分区
2)分区的工作原理:
如果某个域外设试图非法访问其他域,则会发生总线错误
3)分区的好处:
图19
注:限于篇幅,本文没有讲述Trustzone技术本身,这方面的技术在网上有大量的论述,本文不再重复。
3. 多核虚拟化
总结
1.芯片的安全为什么这么重要?
最重要原因是汽车容易进行近距离和物理接触,所以黑客可以较容易实施物理攻击,如果没有安全的芯片设计,很难保障整车的安全。比如密钥和隐私数据的盗取,篡改等;同时行业标准,整车性能要求也促使大家不得不把更多安全功能建立在芯片安全辅助的基础之上。
2.汽车芯片级安全技术层次以及各技术之间的关系
2.1首先要关注芯片自身的物理安全能力,汽车芯片必须能抵抗一定级别的物理攻击,比如黑客可以利用侧信道攻击获取芯片内部的密钥信息,一旦获取密钥,就可以成功突破车内其他部件,甚至突破一批汽车的安全控制措施,因为目前很多车型是使用相同密钥的,安全强度低。
2.2 汽车智能化和网联化的加强,从封闭的安全世界走向了一个相对开放的危险世界。那么整车的信任源在哪里?因为没有信任源,整车的信任体系就无法建立起来。这个时候我们就要求车内核心的芯片自身必须嵌入信任根或者引入第三方TPM芯片,确保上电的“第一行代码就是完全可信的”,由此通过安全启动,构建整车的信任链。
2.3 有个信任根,就需要关注安全存储。汽车的密钥,设备的唯一身份,以及一些特殊的安全度量值(比如软件hash),安全配置等,都需要安全的存储机制,确保黑客看不见,拿不走,改不了,这类安全技术比如OTP、PUP、芯片级访问控制等。
2.4. 有个硬件层面的安全底座,就要考虑上层应用的安全机制,尤其是安全隔离。随着现在ECU计算能力的增强,运行的功能越来越集中,就需要考虑功能之间的隔离,确保一个功能被黑客攻破,让攻击不能蔓延开,从而不会影响其他功能的正常运行,因此就出现了各种安全运行的机制,比如trust zone,虚拟化技术,运行期内存一致性检查技术,控制流一致性(CFI)技术等。
2.5.另外还有一些特殊场景的安全,比如内置数字版权技术,芯片安全调测技术,固件安全刷写等场景,都需要考虑安全性,否则都会带来严重后果。
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理。
贸泽电子设计圈由贸泽电子(Mouser Electronics)开发和运营,服务全球广大电子设计群体。贸泽电子原厂授权分销超过1,100家知名品牌,可订购500多万种在线产品,为客户提供一站式采购平台,欢迎关注我们,获取第一手的设计与产业资讯信息!