91、嵌入式系统的累积认证内核:保障安全与高效

嵌入式系统的累积认证内核:保障安全与高效

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架构为网络嵌入式系统的安全认证提供了一种创新的解决方案,能够在满足嵌入式系统各种限制的同时,保障系统的安全性和数据完整性,具有重要的理论和实际应用价值。

【信息科学与工程学】计算机科学与自动化——第三十五篇 调度理论和调度算法01——资源调度算法 算法逻辑 阅读详情

相关推荐

【信息科学与工程学】【制造工程】第三十六篇 机械工程与自动化101

本系统通过多模型集成、知识增强、主动学习和持续优化等关键技术,实现了高效、高质量的自动化文本语料标注。系统采用模块化设计,支持灵活扩展,能够处理不同类型的文本数据,适应多样的标注需求。

weixin_49199313的博客 967

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 01

算法设计

weixin_49199313的博客 1501

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01

当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。

weixin_49199313的博客 1272

QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

用Qt和QtWebApp能够实现在C++中开发HTTP Web服务器应用程序。 首先,需要先安装Qt的软件开发工具包。点此下载 其次,下载最新的QtWebApp库。点此下载 下载并解压缩QtWebApp ZIP文件。你将会看到: 如何使用QtWebApp 1)将QtWebApp.zip文件解压到文件夹中,并创建一个名为“ MyFirstWebApp”的新Qt控制台项目。然后,建立如下文件结构: 2)将以下行添加到MyFirstWebApp项目的项目文件中: QT += network include(

饭的笔记本 2万+

基于Arduino UNO的OLED显示器使用方法x2(Arduino系列五)

Arduino使用OLED显示模块可以实现串口数据显示,还可以与其他模块联合使用,实现实时显示开发板实时数据。

LNN0212的博客 4171

保姆级教程:在LKD3588开发板上为RK3588添加SC2210摄像头驱动(含完整DTS配置)

本文提供了一份详细的教程,指导如何在LKD3588开发板上为RK3588处理器添加SC2210摄像头驱动,包括完整的DTS配置和内核编译步骤。教程涵盖了环境准备、驱动文件添加、DTS配置详解、内核编译与烧录、驱动测试以及常见问题排查,帮助开发者快速实现SC2210传感器在RK3588平台上的集成与优化。

weixin_42641741的博客 480

哨兵1号(Sentinel-1)雷达SAR数据预处理全流程:从下载到精确配准

本文详细介绍了哨兵1号(Sentinel-1)雷达SAR数据从下载到精确配准的全流程预处理方法。内容涵盖SLC与GRD数据选择、ASF平台下载技巧,并重点解析了使用SNAP软件进行几何校正、辐射定标及高精度配准的核心步骤,为InSAR形变监测等应用提供可靠的数据基础。

weixin_29208327的博客 478

PLL锁相环性能上不去?可能是电荷泵的电流失配在捣鬼(附Jae-Shin Lee经典方案解析)

本文深入分析了PLL锁相环性能瓶颈的根源——电荷泵电流失配问题,详细解析了Current Mismatch和Current Deviation的区别及其对系统的影响。重点介绍了Jae-Shin Lee的多级电流镜技术,该方案通过运放构建虚拟短路和四级电流镜结构,显著降低了电流失配,使参考杂散改善15dB以上。文章还提供了从仿真到流片的完整优化流程,帮助工程师系统解决电荷泵性能问题。

weixin_30684743的博客 370

学习笔记--在线强化学习、离线强化学习、连续强化学习的区别(4)

在连续强化学习中,状态和动作都是连续的,这意味着智能体可以采取无限数量的动作,并且状态空间是连续的,而不是离散的点。- 策略评估和模型选择:在离线学习中,如何有效地评估不同策略和模型的性能,是一个重要的研究问题。- 连续学习和迁移学习:在线学习中,学习者需要不断在不同任务和环境中学习,研究者致力于研究如何将之前学到的知识迁移到新任务中,以实现更高效的学习和决策。- 连续动作选择和优化:在连续动作空间中,智能体对动作的选择是无限的,研究者在连续强化学习中通常关注如何有效地选择连续动作,以达到最优决策策略。

hzlalb的博客 3601

目前最强的价格行为技术分析AI!大A也能用!还免费!

有球友推荐了一个历史最强的价格行为技术分析AI工具,使用下来确实很惊艳,解决了 很多AI工具黑盒过程,难以回溯的问题,他的决策过程可解释,提供决策树、诊断结果、原始响应、调试信息和未来走势预期。用户能够看到模型为什么选择“做多、做空或不下单”。会检查置信度、入场条件、盈亏比、结构失效和冷却期。最大的优点不是“预测一定准确”,而是把主观的价格行为分析整理成了可重复、可解释、可校验、可持续跟踪的工程化流程。本文记录本项目在 Windows 上的实际部署与启动方法。

木头大左的博客 75

秋叶ComfyUI整合包使用FRP实现公网访问教程 ComfyUI内网穿透 秋叶整合包

最近在做 ComfyUI 的实验时,我发现很多小伙伴都遇到一个问题:本地启动的 ComfyUI 服务只能在本地访问,想要通过公网远程访问,就必须借助来实现。作为一名前端开发工程师,我花了点时间把 ComfyUI 启动器和 FRP 配置整合了一下,今天就分享给大家。本文适合已经了解。需要注意的是 穿透到公网的话任何人都能访问 为了安全建议看我另一篇帖子加上密码验证 防止恶意攻击。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1348

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 66、听觉流形成中的不稳定性与多稳态现象解析
下一篇: 12、Windows系统优化与维护全攻略
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值