新唐MCU技术
直播中

王艳

8年用户 1372经验值
私信 关注
[问答]

如何从 MCU/MPU 角度保护物联网应用?

如何从 MCU/MPU 角度保护物联网应用?

回帖(1)

杜喜喜

2025-9-11 17:55:13

从 MCU/MPU(微控制器/微处理器)角度保护物联网应用是整个设备安全链中最核心的一环,是构建信任根和安全启动的基础。以下是一些关键的策略和技术:


一、 硬件级安全基础 (构建信任根)




  1. 选择带有内置硬件安全特性的 MCU/MPU:



    • 硬件加密加速器: AES (ECB, CBC, CTR, CCM, GCM), DES/3DES, SHA-1/SHA-2 (SHA-256, SHA-512), RSA, ECC (椭圆曲线加密)。大幅提高加密/解密/签名/验证的速度和效率,降低功耗,同时避免纯软件实现的时序漏洞。

    • 真随机数发生器: 高质量的硬件 TRNG 对于生成强加密密钥、初始化向量、会话 ID 等至关重要。

    • 内存保护单元: 划分内存区域,限制不同特权级代码(如操作系统内核 vs 用户应用)的访问权限,防止缓冲区溢出等攻击篡改关键代码和数据。

    • 安全启动/安全固件更新:

      • Boot ROM: 只读、制造商预烧录、不可篡改的代码。系统加电/复位后首先执行,验证初始引导加载程序的完整性和真实性(通常使用加密签名,如 ECDSA, RSA)。

      • 信任链: Boot ROM 验证一级 Bootloader,一级 Bootloader 验证二级 Bootloader 或操作系统/应用镜像,形成逐级信任链。


    • 唯一设备识别符: 出厂时预烧录在芯片不可篡改区域的唯一标识符。可用于设备认证、防克隆、密钥生成绑定(如将密钥派生与 UID 绑定)。

    • 物理安全特性:

      • 防篡改检测传感器: 检测外壳被打开、温度变化、电压毛刺等物理攻击尝试,触发擦除密钥等应急响应。

      • 主动屏蔽层/金属保护网格: 物理上保护关键存储器区域(如存储密钥的区域),防止探测、读取和篡改。

      • 侧信道攻击防护: 降低对功耗分析、时序分析、电磁辐射分析等攻击的敏感性。





  2. 使用专用的安全元件:



    • 硬件安全模块: 独立的专用加密芯片或 IP 核(如 Arm TrustZone 中的 Secure Element),提供更高级别的物理和逻辑隔离,专门用于高安全性地存储密钥、执行加密操作。

    • 集成安全 IP: 许多现代 MCU/MPU 集成了基于 Arm TrustZone 等技术的安全区域,可视为片上安全元件。

    • 隔离密钥存储: 将最敏感的密钥存储在安全的隔离区域(如 OTP, EFUSE),普通应用代码无法直接访问,只能通过受控的安全 API 请求加密服务。




二、 固件级安全措施




  1. 强制实施安全启动和信任链:



    • 确保设备每次启动都从验证过的、未被篡改的代码开始执行,是抵御恶意软件植入的基石。

    • 所有后续加载的固件(OS, 应用)都必须经过前一级可信代码的签名验证。




  2. 启用并正确配置 MPU/MMU:



    • 将代码(尤其是 Bootloader)、只读数据、堆栈、堆、外设寄存器等划分到不同的、具有明确访问权限的内存区域。

    • 防止攻击者利用软件漏洞(如缓冲区溢出)执行恶意代码或修改关键数据。




  3. 安全存储敏感数据:



    • 绝不硬编码密码、密钥到源代码中。

    • 利用芯片提供的安全存储器功能(如果可用)存储敏感数据。

    • 如果没有专用安全存储,则使用派生密钥(如结合 UID 和用户 PIN 通过 KDF 算法)加密敏感数据后存储,密钥本身在运行时生成或由用户输入。




  4. 实现安全固件更新:



    • 签名验证: 所有固件更新包必须在传输前由开发者私钥签名,在设备端用公钥验证签名。

    • 加密传输(可选但推荐): 如果固件包含敏感信息,应在传输过程中加密(使用 TLS/DTLS 或预配置的共享密钥)。

    • 防回滚: 确保设备不会安装已知存在漏洞的旧版本固件(通过版本号检查和签名验证)。




三、 运行时安全防护




  1. 代码与数据保护:



    • 启用 Flash 的读写保护位: 防止未授权的读写访问。

    • 代码读保护: 防止攻击者通过调试接口轻易读取固件代码。

    • 安全调试访问控制: 在生产设备上禁用开放调试端口(如 JTAG/SWD),或启用需要密码、密钥才能连接的调试锁机制。




  2. 最小权限原则:



    • 使用 MPU 限制驱动程序和应用程序的权限。

    • 非必要功能(如某个驱动的配置接口)不应拥有不必要的特权(如直接访问网络或文件系统)。




  3. 安全外设访问:



    • 使用 MPU 限制对关键外设(如无线模块、安全存储区域)寄存器的访问权限。

    • 仅在需要时,由高特权级代码(如受信任的驱动程序)操作这些外设。




  4. 利用安全扩展 (如 Arm TrustZone):



    • 创建硬件隔离的安全环境,将安全关键代码(密钥管理、安全启动、支付处理)与丰富应用操作系统隔离开。

    • 即使富操作系统被攻陷,安全世界的资产仍然受到保护。




四、 安全开发实践




  1. 安全的代码编写和审查:



    • 避免使用不安全的函数。

    • 严格进行输入验证。

    • 安全处理内存(防范溢出)。

    • 使用静态分析工具扫描代码漏洞。

    • 定期进行安全代码审计。




  2. 密钥管理生命周期:



    • 安全生成(使用硬件 TRNG)。

    • 安全存储(使用安全元件/安全区域)。

    • 安全分发(避免明文传输)。

    • 安全使用(通过安全 API,限制直接访问)。

    • 安全撤销与更新。




  3. 最小化攻击面:



    • 移除或禁用设备上不使用的功能、服务、外设、接口。

    • 禁用未使用的网络端口。




  4. 监控与日志 (在资源允许的前提下):



    • 监视系统运行状态(如 MPU 异常、篡改传感器触发)。

    • 安全记录关键事件(日志存储在受限访问或加密区域),用于事后分析。




总结关键点:



  • 信任根和信任链: MCU/MPU 是建立硬件信任根的关键。

  • 硬件特性是基石: 选择带有必要安全硬件(加密加速器、TRNG、MPU、安全启动、UID)的芯片。物理安全和隔离是关键。

  • 安全启动必不可少: 确保设备运行在可信的软件基础上。

  • 密钥是关键: 保护密钥的安全生成、存储和使用是核心。

  • 最小权限与隔离: 利用 MPU/TrustZone 限制访问权限,隔离关键资源。

  • 安全更新机制: 保证固件更新的真实性和完整性,并防止回滚。

  • 纵深防御: MCU/MPU 的安全只是物联网设备整体安全策略的一部分,还需要结合网络安全(如 TLS/DTLS)、云安全、设备物理安全才能构建纵深防御体系。


选择正确的 MCU/MPU 是物联网设备安全的第一步。开发者应仔细评估项目所需的安全等级(如消费级 vs 工业/医疗级),并据此选择具有适当安全特性的处理器,并在整个开发和部署周期中严格执行安全措施。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分