嵌入式系统累积认证内核:设计、实现与评估
1. 引言
在嵌入式系统中,应用固件的完整性审计至关重要。通过在核内存中记录系统上安装的应用固件版本的连续序列,并在认证操作期间向验证者提供该审计日志的签名版本,可以实现审计。本文将介绍一种可完全在固件中实现的认证内核设计,并对其进行评估。
2. 系统设计与运行机制
2.1 认证流程
当处理器复位或应用固件需要时,内核会被调用。内核会计算当前应用固件的哈希值,并将其与最新的审计日志条目进行比较。如果不同,则在日志中添加新条目,最后将控制权转移给应用程序。当远程实体请求应用固件版本的审计日志时,主程序会向内核发送 Quote 命令,内核返回固件审计日志及其签名,将审计日志与生成它的嵌入式系统关联起来。
2.2 前向完整性问题
当前设计不提供前向完整性,因为攻击者如果破坏主密钥或认证密钥,就可以伪造日志以显示任意系统历史。提供删除检测前向完整性的设计可以防止攻击者在不被检测的情况下修改或删除过去的条目,但这需要额外的开销,如每个条目使用消息认证码(MAC)、额外的条目数据和相关基础设施,这会减少日志可存储的条目数量,在某些嵌入式系统应用中的实用性存疑。
3. 原型实现
3.1 硬件组件
- Atmel ATSTK600 开发套件,包含 AVR32 AT32UC3A0512 微控制器,供电电压 3.3V。
- Schweitzer Engineering Laboratories SEL - 734 变电站电表,具有 RS - 232 Modbus 数据接口,作为连接到 AVR32 微控制器的现实数据源。
- 标准桌面 PC,通过 Java 应用程序通过 RS - 232 串口向 AVR32 微控制器发送 Modbus 命令。
- 一对 ZigBee 无线电,用于在 PC 和 AVR32 微控制器之间中继 RS - 232 数据。
3.2 应用固件
准备了两个应用固件映像,都实现了 Modbus 主从接口。主接口通过 RS - 232 串口与电表通信,从接口通过 ZigBee 链路接受来自 PC 的命令,将其传递给内核或直接处理(如果是请求电表数据)。第一个映像准确中继电表数据,第二个映像将所有电表读数减半,模拟恶意固件。
3.3 内核固件
- 调用与接口 :内核在处理器复位和应用固件需要时被调用,使用 AVR32 scall 指令实现应用与内核之间的简单系统调用风格接口。
- 算法实现 :TinyECC 提供 SHA - 1 哈希和椭圆曲线密码学(ECC)的软件实现,未针对 AVR32 进行显著优化。伪随机数由 Mersenne Twister 生成,商业实现需要真正的随机数生成器(RNG)。
- 内存占用 :除了加密和 Atmel 提供的驱动程序外,内核约由 1620 行 C++ 代码组成,包括 13 行内联汇编。内核消耗 81312 字节的程序内存,预留 88KiB 闪存存储内核代码,40KiB 存储持久数据。使用 10872 字节的 SRAM 存储静态数据,392B 用于堆,1KiB 用于栈,总共 12KiB 的 SRAM 用于内核。在该原型中,最大应用固件映像大小为 191.5KiB。商业内核实现将比未优化的原型在闪存和 SRAM 上更紧凑,并且可以通过巧妙的交换方案在不活动时有效消除内核的 SRAM 消耗。审计日志可记录多达 107 次升级和事件,之后会溢出。
3.4 性能比较
将仅固件原型(集成 CRAESI)与 Atmel AT97SC3203 TPM 执行类似操作所消耗的能量和时间进行比较。TPM 使用 2048 位 RSA 密钥对 PCR 进行签名,提供相当于 224 位 ECC 密钥的安全性,优于集成 CRAESI 中使用的 192 位 ECC 密钥的安全性。由于使用硬件,TPM RSA 签名生成机制的能耗与集成设计中的 ECC 软件实现大致相同。集成 CRAESI 支持的椭圆曲线 Diffie - Hellman 密钥交换在 TPM 辅助的 CRAESI 中不被支持,但可能可以用等效功能替代。TPM 的最大效率缺点是空闲时消耗 10.6mW,虽然可以将其置于深度睡眠状态以减少持续负担,但在测试系统中未实际操作,且可能存在未研究的安全后果。
以下是性能比较的表格:
| 系统 | 空闲能耗 | 安全性 | 支持功能 |
| — | — | — | — |
| 集成 CRAESI | 可忽略不计 | 192 位 ECC 密钥 | 椭圆曲线 Diffie - Hellman 密钥交换 |
| TPM 辅助 CRAESI | 10.6mW | 224 位 ECC 等效(2048 位 RSA 密钥) | 不支持椭圆曲线 Diffie - Hellman 密钥交换 |
2.5 实验的实际影响
假设短期内要部署 530 万个高级电表。如果安装 AT97SC3203 TPM,即使它们一直闲置,每年也将消耗 492136 kWh,按每 kWh 0.07 美元计算,每年供电成本约为 34450 美元。而如果使用集成 CRAESI,在复位或实际使用之前不会消耗能量。假设每个电表每天进行一次认证,TPM 每年在执行报价操作时除了空闲能耗外至少消耗 31651 kWh,集成 CRAESI 每年执行类似操作消耗不到 32489 kWh,且空闲能耗可忽略不计。
4. 正确性和容错性分析
4.1 模型检查方法
使用 Maude 模型检查器确保设计满足关键安全要求。首先将设计转换为重写逻辑模型,用重写规则表示状态之间的转换,然后将设计要求的各个方面表示为定理,转换为 LTL 公式并使用模型检查器进行检查。
4.2 定理验证
4.2.1 应用固件升级的正确性和可审计性
定理 1
:在任何修改活动应用固件映像的操作结束时,审计日志会更新以准确反映新状态。如果进行了选择性升级(非回滚),则会缓存先前的活动应用固件映像。
证明过程中,检查了所有可能的升级和回滚操作的正确性,以及每次操作后固件审计日志是否正确更新。通过以下五个引理检查了六个不同的升级和回滚操作情况,这些情况代表了所有可能的升级和回滚操作。
-
引理 1
:如果未执行升级操作,则应用程序活动时,映像 #0 处于活动状态。
-
引理 2
:如果已安装映像 #1,且尚未执行其他升级或回滚操作,则应用程序活动时,映像 #1 处于活动状态,映像 #0 被缓存。
-
引理 3
:如果已安装映像 #2 替换映像 #N,且尚未执行其他升级或回滚操作,则应用程序活动时,映像 #2 处于活动状态,映像 #N 被缓存。
-
引理 4
:如果在回滚时映像 #0 被缓存,则回滚后到下一次升级操作之前,应用程序活动时,映像 #0 处于活动状态。
-
引理 5
:如果在回滚时映像 #1 被缓存,则回滚后应用程序活动时,映像 #1 处于活动状态。
-
引理 6
:应用程序活动时,当前审计日志条目与活动应用固件相对应。
4.2.2 容错应用固件升级机制
定理 2 :执行任何应用固件升级操作,只要处理器不会永远持续复位,最终都会在应用程序随后激活时使预期的应用固件映像被缓存并处于活动状态,无论在升级过程中处理器复位多少次。通过对非确定性电源故障进行建模,允许它们在升级过程的任意点发生,模型检查器对所有电源故障组合进行了详尽搜索,验证了只要电源故障不会永远持续发生,应用固件升级过程最终总会成功。在实际硬件上通过在升级过程中反复按下复位按钮进行测试,验证了它最终仍然成功,但无法像模型检查器那样对所有可能的中断点进行详尽测试。
4.2.3 容错持久配置数据存储机制
定理 3
:文件系统能正确处理任何事务,只要处理器不会永远持续复位,无论在事务处理过程中处理器复位多少次。
证明时需表明无论事务在关键点之前是否被中断,都能提供事务语义。关键点是处理器执行使文件系统冗余副本中的第一个金丝雀无效的指令时。
-
引理 7
:如果事务在关键点之前被中断,执行任何文件系统事务最终都会恢复到原始文件系统状态。
-
引理 8
:如果事务在关键点之后首次被中断或根本未被中断,执行任何文件系统事务会导致事务成功完成后预期的文件系统状态。
以下是应用固件升级流程的 mermaid 流程图:
graph TD;
A[开始升级] --> B{是否有电源故障};
B -- 否 --> C[继续升级];
B -- 是 --> D{电源故障是否持续};
D -- 否 --> C;
D -- 是 --> E[升级失败];
C --> F{升级是否完成};
F -- 是 --> G[缓存并激活新固件];
F -- 否 --> B;
通过上述验证,模型检查器未发现所建模的实现部分存在错误,增加了对这些实现部分正确性的信心。
5. 相关工作
5.1 Linux 完整性测量架构(Linux - IMA)
它支持 Linux 平台的远程认证,利用现代桌面和笔记本电脑中部署的 TPM 来记录系统配置,并向授权的远程挑战者提供该配置信息的签名副本。不过,它仅维护系统自上次复位以来的配置信息。
5.2 移动电话工作组参考模型
该模型由可信计算组内的移动电话工作组提出,涉及移动设备的配置控制和完整性测量。它建议使用移动本地所有者可信模块(MLTM)来实现 TPM 的功能,同时考虑到移动设备的资源限制,使 TPM 的许多操作变为可选。此外,还建议使用基于 MLTM 设计的移动远程所有者可信模块(MRTM),该模块根据证书控制系统某些区域可以运行的代码,并且可以通过 ARM TrustZone 硬件安全扩展以软件形式实现。
5.3 Terra 架构
Terra 将虚拟化和认证相结合,提供应用程序隔离和对“封闭盒”虚拟机的支持,可通过远程认证进行观察。这种架构可以扩展为支持累积认证,适用于嵌入式系统。
5.4 SWATT 方法
用于验证嵌入式系统的内存内容,其基本操作模型假设存在一个外部验证器,该验证器需要知道待验证嵌入式系统中安装的精确硬件类型,并通过低延迟通信链路连接到该系统。但在许多嵌入式系统安装中,这种低延迟通信链路并不存在。此外,它无法保证嵌入式系统的持续正常运行,并且要求被验证的系统不能将计算任务卸载到外部设备(防止代理攻击),而嵌入式系统通常运行在不满足此假设的网络中。
5.5 ReVirt 和 DejaView 项目
ReVirt 项目表明,在虚拟机中运行的全功能桌面或服务器系统的执行信息可以被维护,足以重放系统在发生故障之前执行的精确指令序列,以便进行调试。DejaView 使用内核级方法进行进程记录,允许在任意点搜索和重启桌面会话。虽然这些技术可能支持桌面和服务器的累积认证内核,但可能无法在系统的足够长生命周期内存储累积信息以发挥作用。
5.6 已认证追加只读内存(A2M)和可信增量器项目
A2M 在隔离组件中维护内核事件的累积记录,为拜占庭容错复制状态机提供支持。其架构建议主要面向服务器应用,但展示了除应用固件身份之外的已认证信息的有用性。可信增量器项目表明,A2M 和许多其他有趣系统的可信计算基(TCB)可以简化为一组简单的计数器、密码学和在称为“小饰品”的可信硬件组件中实现的基于认证的 API。当前设计可以进行调整,以在固件中提供类似功能,并可能具有不同的威胁模型。
5.7 其他相关设计特点
硬件安全协处理器的安全问题主要源于其 API 的复杂性。为了便于分析并减少漏洞的发生,本文提出的设计导出了非常简单的 API,并使用模型检查器分析了该设计的安全性。此外,之前使用模型检查器显式建模系统可能发生的故障并验证系统容错能力的方法仅给出了逻辑故障(如消息丢失)的示例,而本文分析了系统对物理故障(如电源故障)的容错能力。
以下是相关工作对比表格:
| 相关工作 | 主要功能 | 适用场景 | 局限性 |
| — | — | — | — |
| Linux - IMA | 支持 Linux 平台远程认证,记录系统配置 | Linux 桌面和笔记本电脑 | 仅记录自上次复位后的配置信息 |
| 移动电话工作组参考模型 | 移动设备配置控制和完整性测量 | 移动设备 | 受移动设备资源限制 |
| Terra | 结合虚拟化和认证,支持“封闭盒”虚拟机 | 嵌入式系统 | - |
| SWATT | 验证嵌入式系统内存内容 | 嵌入式系统 | 需要特定通信链路,无法保证持续运行 |
| ReVirt 和 DejaView | 记录系统执行信息,支持进程记录和会话重启 | 桌面和服务器系统 | 可能无法长期存储累积信息 |
| A2M 和可信增量器项目 | 维护内核事件累积记录,简化可信计算基 | 服务器应用 | 主要面向服务器 |
6. 结论
本文提出了用于带闪存微控制器单元(MCU)的嵌入式系统累积认证内核的要求,通过在内核内存中记录系统上安装的应用固件版本的连续序列,并在认证操作期间向验证者提供该审计日志的签名版本来实现应用固件完整性审计。这种认证模型适用于传感器和控制系统的应用,并提出了一种可完全在固件中实现的认证内核设计。
原型累积认证内核在中低端 32 位闪存 MCU 上具有成本效益和能源效率,无需微控制器制造商的特殊支持即可实现。使用模型检查器验证了该原型满足重要的正确性和容错性属性。
以下是整个系统的优势列表:
1.
适用性
:适用于传感器和控制系统等嵌入式系统应用。
2.
成本效益
:可在中低端 32 位闪存 MCU 上实现,无需特殊支持。
3.
能源效率
:相比 TPM 辅助的系统,空闲能耗低,整体能耗也更具优势。
4.
正确性和容错性
:通过模型检查器验证,满足重要的正确性和容错性属性。
综上所述,该嵌入式系统累积认证内核设计具有良好的应用前景和实际价值。
graph LR;
A[嵌入式系统] --> B[累积认证内核设计];
B --> C[应用固件完整性审计];
C --> D[满足应用需求];
B --> E[原型实现];
E --> F[成本效益和能源效率];
E --> G[正确性和容错性验证];
G --> H[具有实际价值];
超级会员免费看
8143

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



