嵌入式系统的累积认证内核:保障安全与高效
1. 引言
随着网络嵌入式系统的部署日益广泛,恶意软件入侵的威胁也在不断增加。以高级计量基础设施(AMI)为例,它作为“智能电网”技术的核心,通过联网电表收集、处理和传输用电数据,并将公用事业公司的指令传达给智能电器。然而,电表需要支持远程升级,这使得它们成为恶意软件攻击的目标,可能导致电力服务被盗用等严重后果。
为了应对这一挑战,人们希望能让常用的嵌入式处理器(闪存微控制器单元,即闪存MCU)像个人计算机中的可信平台模块(TPM)一样,提供远程认证保证。但闪存MCU在成本、功耗、计算能力和内存方面存在特殊限制,并且许多应用需要系统在一段时间内的完整性保证,而不仅仅是某个特定时刻的保证。
本文将介绍一种名为累积认证内核(CAK)的架构,它可以在网络嵌入式系统上提供加密安全的固件审计。同时,我们将通过一个名为累积远程认证嵌入式系统完整性(CRAESI)的实现,展示CAK在闪存MCU上的可行性,并正式验证其在应对意外断电等情况时的安全性和容错性。
2. 背景知识
2.1 远程认证
远程认证是一种让远程方获取系统部分状态认证测量值的过程。通常,这个过程至少涉及两条消息:第一条是远程方的请求消息,包含一个用于验证认证结果新鲜度的随机数;第二条是被认证系统发送给远程方的消息,包含结合了远程方提供随机数的系统状态认证记录。在个人计算机上,TPM和系统软件中的支持组件通常承担这一角色。
2.2 闪存MCU
过去,闪存MCU常见的是8位架构,内存较小,内存保护功能有限。例如,Atmel的流行8位megaAVR系列MCU,其程序内存最大为256KiB,数据内存为8KiB,主要的内存保护是一个引导块,用于存放修改闪存内存的指令。
2007年4月,Atmel推出了基于AVR32架构的32位闪存MCU,注重低功耗和高代码密度;同年6月,意法半导体推出了基于ARM Cortex - M3架构的STM32闪存MCU,具有类似的功能。这些新处理器表明,现在已经具备了使用低功耗、大内存且有内存保护功能的处理器的条件。而且,由于许多原本为8位MCU开发的应用还不需要新MCU架构提供的内存保护功能,因此可以利用这些功能在MCU上实现受保护的安全功能,甚至在未来嵌入式应用普遍需要内存保护时,也可以通过虚拟化来满足需求。
2.3 高级计量基础设施(AMI)
高级电表是公用事业公司部署在家庭或企业中的嵌入式系统,用于记录和传输从配电网获取的电力信息。它源于自动抄表(AMR),目前许多公用事业公司计划大规模部署AMI,以实现双向通信等新应用,如通过向电表发送价格信号或直接命令来控制设施的电力消耗。
然而,高级电表的复杂功能带来了众多攻击场景,增加了因固件漏洞导致安全漏洞的可能性。电表故障可能会给公用事业公司带来巨大的经济损失,因此需要具备代码审计能力,而远程认证可以提供这种能力。
2.4 形式化方法
形式化方法用于验证CRAESI设计的正确性和容错性。具体来说,模型检查是一种系统地探索模型整个状态空间,并验证特定属性在整个空间中是否成立的方法。Maude是一种语言和相应的工具,支持基于重写逻辑模型和线性时态逻辑(LTL)属性的模型检查。我们将使用Maude进行验证任务。
3. 威胁模型和需求
3.1 威胁模型
恶意应用固件可能通过多种方式破坏嵌入式系统的数据完整性。CAK可以检测和报告所有三种类型的入侵,而仅在数据报告时调用且不提供累积认证的远程认证方案,只能检测当时运行的固件造成的损坏,容易受到使用时间与检查时间不一致(TOUTTOC)问题的影响。
我们假设攻击者能够通过网络与受保护系统通信并安装恶意应用固件,即使系统有访问控制机制,也可能被攻击者突破。此外,“普通”环境现象(如意外断电,除非系统有可靠的电源)不应导致内核的安全要求被违反,而宇宙辐射导致的位翻转等则被视为“特殊”现象。在本文的威胁模型中,只考虑意外断电,不考虑对微控制器的物理攻击(如故障分析、硅片修改和探测)。
为了确保设计的安全性,应用固件的运行权限低于CAK,并且不允许访问安全关键的内存和外设,以排除各种攻击,如Cloaker攻击。不同微控制器的安全关键外设可能不同。
3.2 需求
CAK的基本安全和功能需求是维护嵌入式系统上安装的应用固件版本的审计日志,并向请求的授权远程方提供该日志的认证副本。为了提供安全保障,它必须满足以下属性:
-
全面性
:审计日志必须代表系统上曾经激活过的所有应用固件版本。当处理器的程序计数器位于应用固件的活动代码空间内时,该固件被视为激活状态。
-
准确性
:每当应用固件处于激活状态时,审计日志中的最新条目必须对应该固件,并且早期条目应根据其所代表的固件版本的激活时间按时间顺序排列。
此外,基于许多嵌入式系统的特点和约束,我们为广泛适用的嵌入式CAK定义了以下需求:
-
成本效益
:在竞争激烈的市场中,低成本设备无法承受哪怕是最小的不合理费用。
-
能源效率
:一些嵌入式系统受限于有限的能源供应(通常由电池提供),即使连接到市电的嵌入式系统也可能需要限制能耗以降低成本。
-
适合硬件保护
:CAK必须适应嵌入式系统处理器提供的保护机制。
4. CAK设计
4.1 持久内存布局
CAK的持久内存(NVRAM)概念上分为多个区域,包含以下数据:
1.
应用固件版本哈希列表
:按时间顺序排列的所有应用固件版本的加密哈希值列表,其最大大小由NVRAM容量决定。如果需要,还包括一个代表最旧应用固件版本哈希链的哈希值,即使这些版本已无法全部存储在NVRAM中。若发生异常事件(如升级尝试中止),条目还会包含事件代码。
2.
计数器
:记录审计日志和哈希链中当前条目的数量。
3.
非对称密钥对
:用于在认证操作中对固件审计日志进行签名。
4.
显式状态变量
:用于控制事务。
5.
主密钥对
:用于对其他协处理器公钥进行签名。
6.
密钥对
:用于Diffie - Hellman密钥交换。
7.
签名计数器
:记录审计日志和密钥交换私钥生成的签名数量。当这些计数器达到阈值时,密钥将自动刷新。
主密钥对在CAK首次启动时使用内置随机数生成器(RNG)生成并存储在内存中,或者在工厂以一种任何实体(包括制造商)都无法确定其值的方式烧录到熔丝中。主密钥对仅用于对其他两个公钥进行签名,以延长其密码学使用寿命。
4.2 状态机管理
为了满足全面性和准确性要求,内核很可能需要控制对系统中应用固件内存区域的底层固件修改机制的所有访问。图2展示了CAK中管理应用固件升级过程的状态机:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始]):::startend --> B(等待命令):::process
B -->|升级命令| C(升级中):::process
C -->|成功| D(升级完成):::process
C -->|失败| E(升级失败):::process
D --> F(等待心跳):::process
F -->|收到心跳| B
F -->|未收到心跳| G(恢复到上一版本):::process
G --> B
E --> B
状态机的转换标签(非括号内的)是应用程序可以发出的命令,用于触发自身的升级。显式状态变量记录当前状态。“等待心跳”状态会在一定时间内未收到心跳命令时,将应用固件恢复到上一版本。CAK会忽略任何意外的命令。
4.3 额外命令
除了状态机中的命令外,应用程序还可以执行以下三个额外命令:
-
Quote
:对审计日志进行数字签名并传输包含随机数的副本,以验证新鲜度。
-
Retrieve Public Keys
:检索使用主私钥签名的公钥。
-
Handshake
:执行Diffie - Hellman密钥交换,展示了内核中实现的非对称密码学如何直接为应用程序执行有用的操作(如与远程实体建立对称密钥),从而减少CAK所需的内存空间。
4.4 事务语义和容错性
为了为内核使用的所有持久数据提供事务语义,该设计通过在静态“文件系统”中维护所有持久数据的冗余副本来实现。这个文件系统包含一组使用绝对地址引用的固定文件,并且在文件数据前后都放置了金丝雀值,以支持标准的容错技术。应用固件升级过程也是容错的,系统的基本内存布局(包括概念上的金丝雀位置)如图3所示。
每次嵌入式系统启动时,处理器会立即将控制权转移给CAK。CAK首先初始化内存保护,必要时进行文件系统恢复,并在升级事务因断电中断时完成应用固件升级。然后,它会生成当前应用固件的加密哈希值。
综上所述,CAK架构通过合理的内存布局、状态机管理和容错设计,为网络嵌入式系统提供了一种有效的安全解决方案,能够在满足闪存MCU各种限制的同时,保障系统的安全性和数据完整性。
5. CRAESI实验结果
5.1 实验环境
我们使用CRAESI(Cumulative Remote Attestation of Embedded System Integrity)作为CAK的实现原型,目标是配备内存保护单元(MPU)的中高端Atmel AVR32闪存MCU,并将其集成到一个实际的高级电表中进行实验。
5.2 资源占用情况
| 资源类型 | 占用情况 |
|---|---|
| 内存 | 实现CAK所需的内存不到低端AVR32闪存MCU可用内存的四分之一,这表明CAK在内存受限的嵌入式系统中具有良好的可行性。 |
| 功耗 | CAK仅在实际被调用时消耗能量,并且能够以可接受的效率运行,满足了嵌入式系统对能源效率的要求。例如,在电表应用中,不会对电网造成过大的电力消耗。 |
5.3 功能验证
通过一系列实验,我们验证了CRAESI能够正确地检测和报告应用固件的各种入侵情况,包括恶意固件的安装和数据篡改。同时,它也能够准确地维护审计日志,确保日志的全面性和准确性。
6. CRAESI形式化分析
6.1 分析方法
我们使用Maude工具基于重写逻辑模型和线性时态逻辑(LTL)属性对CRAESI的重要属性进行形式化分析。这种方法可以系统地探索模型的整个状态空间,验证特定属性是否在所有可能的状态下都成立。
6.2 安全性验证
我们重点验证了CRAESI在应对意外断电情况时的安全性。由于电表等嵌入式系统在长期运行过程中难以依赖电池备份,因此必须确保系统在突然断电时不会违反安全要求。通过形式化证明,我们得出结论:即使没有电池备份来防止突然断电,CRAESI的CAK设计仍然能够满足远程认证的要求,保证系统的安全性和数据完整性。
6.3 容错性验证
除了安全性,我们还验证了CRAESI的容错性。通过对内存操作和事务处理的分析,我们证明了系统能够在意外断电等故障发生后正确恢复,确保应用固件升级过程和审计日志的正确性。
7. 相关工作对比
7.1 传统远程认证方案
传统的远程认证方案通常是为个人计算机设计的,如TPM。这些方案在嵌入式系统中面临诸多挑战,因为嵌入式系统具有成本、功耗、内存和计算能力等方面的限制。而CAK架构专门针对嵌入式系统的特点进行设计,能够更好地适应这些限制。
7.2 其他嵌入式安全方案
一些其他的嵌入式安全方案可能侧重于特定的安全功能,如防止物理攻击或数据加密。然而,CAK不仅提供了基本的安全认证功能,还能够提供累积认证,确保系统在一段时间内的完整性,这是其他方案所不具备的优势。
8. 结论
8.1 主要贡献
- 提出了适用于基于闪存MCU的网络嵌入式系统的CAK架构,该架构具有容错性,能够满足系统在成本、功耗、内存和计算能力等方面的限制。
- 实现了一个名为CRAESI的CAK原型,通过实验验证了其在实际应用中的可行性和有效性。
- 通过形式化证明,验证了CRAESI具有特定的安全和容错属性,特别是在应对意外断电情况时的安全性。
8.2 应用前景
CAK架构在网络嵌入式系统中具有广泛的应用前景,特别是在高级计量基础设施(AMI)、智能电子设备(IED)和汽车数据记录器等领域。这些领域对系统的安全性和数据完整性要求较高,CAK能够提供有效的保障。
8.3 未来展望
未来的研究可以进一步优化CAK架构,提高其性能和安全性。例如,可以探索更高效的加密算法和内存管理策略,以减少资源占用。同时,还可以考虑将CAK与其他安全技术相结合,提供更全面的安全解决方案。
总之,CAK架构为网络嵌入式系统的安全认证提供了一种创新的解决方案,能够在满足嵌入式系统各种限制的同时,保障系统的安全性和数据完整性,具有重要的理论和实际应用价值。
超级会员免费看
1061

被折叠的 条评论
为什么被折叠?



