RISC-V安全扩展

wen IT资讯 29

本文目录导读:

RISC-V安全扩展

  1. 核心安全扩展:Zkr(随机数生成)
  2. 加密算法加速扩展:
  3. 内存与执行安全扩展:
  4. 平台级别的安全框架:
  5. 总结与应用场景
  6. 当前状态与未来

RISC-V 安全扩展是 RISC-V 国际基金会定义的一组可选指令集扩展,旨在为 RISC-V 架构提供硬件级别的安全基础,这些扩展并非单一的指令集,而是一系列相互关联的规范,用于解决不同层次的安全需求。

RISC-V 安全扩展主要包含以下几个关键部分:

核心安全扩展:Zkr(随机数生成)

这是最基础且广泛被提及的安全扩展。

  • 目标:为系统提供高质量、不可预测的熵源(Entropy Source)。
  • 核心指令pollentropygetnoise(后者在后续版本中可能有所调整或合并)。
    • pollentropy:用于查询和获取硬件真随机数生成器(TRNG)的状态和熵值,它返回一个状态码指示熵是否就绪,并提供一个种子。
  • 重要性:几乎所有现代密码学协议(如 TLS、SSH、加密货币钱包)都依赖于高质量的随机数,没有硬件熵源,软件实现的随机数生成器很容易被预测,导致密钥泄露或协议被攻破,Zkr 提供了这一基础。

加密算法加速扩展:

  • Zknd & Zkne(NIST 算法扩展)
    • 目标:加速美国国家标准与技术研究院(NIST)标准化的现代加密算法。
    • 核心算法:AES(高级加密标准)、SHA2/3(安全哈希算法)、SM3/SM4(中国国密算法,在某些实现中也被归类至此)。
    • 特性:通常通过提供专用的向量化指令(在 V 向量扩展上构建的指令)来并行处理 AES 的轮函数、SHA 的哈希核心计算,显著提升加密/解密、数字签名、哈希验证的性能。
  • Zknh(哈希算法扩展)
    • 目标:专门加速 SHA-256/384/512 算法。
    • 特性:指令直接对应哈希算法的关键压缩步骤,减少代码体积和执行周期。
  • Zkb(标量加密扩展)
    • 目标:为没有向量单元(V 扩展)的低功耗或嵌入式核心提供基础的加密加速。
    • 特性:提供标量(单个寄存器)级别的 AES、SHA-256 等操作,适用于资源受限的物联网设备。

内存与执行安全扩展:

  • Smepmp(物理内存保护 - PMP 增强)
    • 背景:RISC-V 基础指令集包含物理内存保护(PMP),用于定义内存区域的访问权限(可读、可写、可执行)。
    • 增强:Smepmp 在 PMP 基础上增加了更精细的控制,特别是针对机器模式(M-mode)管理员模式(S-mode) 之间的安全隔离,它允许更灵活地设置特权级和执行权限,是构建可信执行环境(TEE)如 Keystone、Penglai 等的重要基础。
  • Zifencei(指令获取 fence)
    • 目标:保证指令自修改代码的一致性,当核心写入内存区域(通过自修改代码或 JIT 编译器)并随后执行该区域的内容时,Zifencei 提供了一条屏障指令,确保后续的指令获取能看到之前写入的数据。
    • 重要性:是构建安全监控器(如 M-mode 下的安全监控器)和执行动态代码分析所必需的。
  • Pointer Masking(指针掩码)
    • 目标:允许软件在指针的高位(通常未使用)中存储元数据,例如用于内存安全、对象标签(Object Capabilities)或地址空间随机化(ASLR)的标记。
    • 特性:通过指令忽略或操作指针的高位位,避免每次访问内存时软件手动进行掩码操作,这为更高级的内存安全方案(如 CHERI 扩展的思想)提供了基础,但其自身更轻量级。

平台级别的安全框架:

  • TEE(可信执行环境):RISC-V 的 TEE 平台规范(如 Keystone 项目)利用上述扩展(Smepmp、PMP、加密扩展)在 M-mode 和 S-mode 之间建立强隔离,安全应用程序在 S-mode 的一个隔离的执行环境中运行,而操作系统在另一个 S-mode 环境中运行,M-mode 的安全监控器(Security Monitor)负责管理这两个世界的切换和保护。
  • Root of Trust(信任根):结合 Zkr(随机数)、PMP(物理保护)以及一个不可变的第一阶段引导加载程序(Boot ROM),RISC-V 可以构建一个硬件信任根,它可以从一个可验证的状态启动,确保固件和操作系统的完整性。

总结与应用场景

扩展/特性 主要应用场景
Zkr 硬件随机数生成 密钥生成、协议随机数、身份验证令牌、防回滚
Zknd/Zkne/Zbkb 加密/哈希算法加速(AES、SHA、SM4等) HTTPS/TLS、IPsec、磁盘加密(LUKS)、数字签名、区块链
Smepmp 物理内存保护增强 可信执行环境(TEE)、安全启动、隔离内核模块、DRM(数字版权管理)
Zifencei 指令自修改一致性 JIT 编译器、安全监控器、动态代码加载、沙箱
Pointer Masking 指针元数据支持 内存安全、对象能力系统、ASLR 增强、轻量级沙箱

当前状态与未来

  • 标准化进程:Zkr、Zknd、Zkne、Zknh、Zbkb 等加密扩展已经标准化(Ratified),Smepmp 也已标准化,Pointer Masking 还处于草案/更新阶段。
  • 生态系统支持:主要的 RISC-V 实现(如 SiFive、平头哥、香山处理器)和软件工具链(GCC、LLVM、Linux Kernel)都已经或正在添加对这些扩展的支持。
  • 未来方向:更高级的安全扩展正在被研究,
    • CHERI(能力硬件增强的 RISC 指令):提供硬件级的内存安全(边界检查、权限隔离),能有效防御缓冲区溢出等常见攻击。
    • IOMMU(输入输出内存管理单元)与安全 DMA:保护系统内存免受恶意外设的DMA访问。
    • SGX/TDX风格的机密计算:类似 Intel SGX/TDX,保护运行中的应用程序数据和使用中数据的内存加密技术。

对于开发者而言,虽然这些扩展是可选的,但为了构建安全的关键基础设施(如服务器、物联网节点、汽车电子、金融终端),选择支持这些扩展的 RISC-V 核心和软件平台至关重要,对于普通应用开发者,通常不需要直接操作这些指令,而是通过操作系统内核或加密库(如 OpenSSL、Mbed TLS)间接获益。

上一篇电磁辐射安全

下一篇ARM TrustZone

抱歉,评论功能暂时关闭!