RISC-V 位操作和标量密码学扩展的实践探讨:对流行开源协议和库进行基准测试

1. 引言

信息安全在现代世界中变得越来越重要:数字设备的数量逐年增加,网络技术不断演进,处理的信息量和互联网流量日益增长。计算系统渗透到日常生活的方方面面——从电表、家用电器到工业自动化系统。

根据分析机构的预测,到 2030 年,活跃的物联网连接数量将达到 430 亿,复合年增长率为 15%*(图 1)。这些趋势得到了美国国家标准与技术研究院(NIST)注册漏洞统计数据的支持,该机构被认为是全球安全标准的权威(图 2)。

Total active IoT connections globally

图 1. 全球活跃物联网连接总数

*截至2024年第四季度的数据。来源: https://iot-analytics.com/number-connected-iot-devices/
https://www.ericsson.com/en/reports-and-papers/mobility-report/dataforecasts/iot-connections-outlook

 

Cumulative count of registered cybersecurity vulnerabilities

图 2. 已注册网络安全漏洞的累计数量

*截至2025年六月的数据。来源: https://nvd.nist.gov/vuln/search#/nvd/home?resultType=statistics 漏洞——指软件和硬件组件中存在的计算逻辑(例如代码)层面的弱点,当该弱点被利用时,会导致机密性、完整性或可用性遭受负面影响。 https://nvd.nist.gov/vuln

当前的信息安全趋势导致了国家立法要求的出现,例如欧洲的 GDPR、美国的 CCPA 和中国的《密码法 CSL》,这些法规要求对个人数据的保护承担责任,包括电子邮件地址、IP 地址和其他个人信息。此外,各国已经制定并正在推进国家密码标准,旨在确保国家在信息安全领域的技术主权和独立性。

创建一个完全安全的计算设备需要实施一系列措施,包括例如内存保护、安全启动、控制流完整性(CFI)等等。本文重点探讨构建健壮系统的一个方面——ISA 级别的安全性——具体研究 RISC-V 位操作和标量密码学扩展,这些扩展在确保强密码安全方面发挥着重要作用。我们将回顾现代加密算法(包括国家算法),研究基于 ISA 实现的具体细节,并对由 Syntacore 开发的 RISC-V MCU 和 APU IP 核进行性能对比测试。

2. 现代密码算法概述

现代安全挑战促使社区加强现有的安全方法。特别是,这导致了开放标准算法的发展,其中密钥的保密性而非算法的保密性至关重要。此外,增加密钥长度已成为关键因素,因为计算能力的提高增加了被黑客攻击的风险,要求算法确保更高水平的安全性。

让我们审视一些最著名和广泛使用的加密算法及哈希函数 (hash function)的关键特性。

AES (高级加密标准)

AES (高级加密标准)是一种基于 Rijndael 算法的对称分组密码,于 2001 年取代了过时的 DES(数据加密标准),并支持长达 256 位的密钥。AES 已成为全球对称加密标准,由 NIST 采纳,经受住了数十年的研究和实际使用考验,至今仍在使用。它在软件和硬件中都能有效实现。它广泛应用于 HTTPS(TLS)、磁盘加密和物联网数据保护等应用中。

SHA (安全哈希 Hash算法)

使用最广泛的哈希函数 (hash function)是 SHA-2 和更现代的 SHA-3。SHA-2 包括多个变体,哈希长度分别为 224、256、384 和 512 位,提供了更高的安全级别。这些函数广泛用于数据完整性验证、数字签名、身份验证和密码存储,提供防篡改保护。

SM3/SM4 (商密 3 和商密 4)

中国国家算法 SM3SM4。SM3 是一种 256 位密码哈希函数(Hash Function),类似于 SHA-256。它用于生成数字签名、验证数据完整性、生成密钥和辅助身份验证过程。它与国际标准竞争,并广泛用于保护无线网络和交易。SM4(商密 4)是一种对称分组密码(128 位分组大小,128 位密钥)。它已被采纳为中国国家标准和国际数据加密标准。在中国广泛应用于保护无线网络(WAPI)、金融交易、政府平台和 VPN。

3. 基于 ISA 的加密实现

如前所述,全球流量的不断增加和计算设备数量的持续上升对性能提出了更高的要求。基于软件的加密通常会严重占用 CPU,造成瓶颈,限制处理速度、吞吐量和系统响应能力。此外,紧凑型电池供电设备的普及需要更高的能效,而对于执行数千条指令进行加密、解密和签名计算的 CPU 来说,这很难实现。

另一个重要问题是易受侧信道攻击,攻击者可以监视和分析算法的执行过程,从而识别特定模式并恢复密钥。这个问题对于资源受限的设备(如物联网设备)尤其重要,在这些设备上实施强大的安全措施具有挑战性,使它们特别容易受到此类攻击。

最后,标准化是一个重要方面。由于 SoC 是复杂的设备,不同制造商解决方案的兼容性有助于统一架构、协议、安全算法和测试方法的要求,从而简化组件集成并提高整体系统可靠性。

在处理器架构发展的背景下,创建能够在指令集(ISA)级别实现密码功能、并能满足国家标准和国际要求的处理器的概念变得日益重要。

许多现代架构,如 x86 和 ARM,都包含用于加速加密算法和增强安全性的扩展。RISC-V 也不例外——其模块化设计通过专门的扩展——位操作(官方称为 "B")和标量密码学("K")——为改进安全性提供了新的机会。让我们更详细地探讨这些扩展。

位操作Bit Manipulation

一个专用的位操作扩展,旨在加速各种算法中常见的位操作,如移位、掩码和逻辑运算,这些操作常见于密码学、数据压缩、编码等领域。虽然不专门属于密码学范畴,但被广泛用于密码处理过程中。

主要子扩展:

  • Zba(地址生成):用于加速地址计算的指令;
  • Zbb(基本位操作):位运算;
  • Zbc(无进位乘法)– 用于执行无进位乘法运算的指令;
  • Zbs(单比特操作):用于处理单个比特的指令;

标量密码学

一个旨在加速标准密码算法和原语的扩展。与其他架构不同,RISC-V 标量密码扩展使用 GPR 寄存器并处理小操作数(32 位和 64 位),使其成为一种灵活且经济高效的解决方案,特别是对于面积最小化和高性能至关重要的嵌入式内核。

主要子扩展:

  • Zkne/Zknd:用于 AES 加密和解密的指令;
  • Zknh:用于 SHA-2 系列哈希函数的指令;
  • Zkse/Zksh:用于中国 SM4 分组密码和 SM3 哈希函数的指令;
  • Zkr:提供对硬件熵源的访问;
  • Zkt(数据无关执行延迟):确保特定指令集的执行与数据无关。
  • Zbk(Zbkb, Zbkx, Zbkc):从 "B" 扩展中选出的对密码学至关重要的指令子集,包括字节反转和无进位 GCM 乘法等位运算。

4. 实践性能评估结果

Syntacore 的微控制器和应用级内核支持位操作和标量密码学扩展,完全符合 RISC-V 架构规范。这使得开发能够高效处理广泛使用的算法的加密、数据完整性验证和哈希任务的 SoC 成为可能。

本节展示了位操作和标量密码学扩展如何在 MCU 和 APU 级内核的实际应用中提升 AES 和 SM4 加密算法的性能。重点是利用 SCR4、SCR5 和 SCR9 内核的数据传输和磁盘加密场景。Syntacore 产品组合中其他 MCU(SCR3 和 SCR6)和 APU(SCR7)内核的性能结果与下文所示结果相当。

MCU 内核的算法加密性能

固定大小数据包的 SM4-ECB

SM4 在 ECB 模式(每个数据块独立加密)下的实现,处理固定长度的数据包。输入数据是数据块大小 N(1360 字节有效载荷的处理周期数)。性能指标(Payload/N)——吞吐量指标的倒数——是处理单个数据块所需的周期数。

SM4 algorithm performance evaluationSM4 algorithm performance evaluation

图 3. SM4 算法性能评估

测试条件: SC-DT 2025.09, LLVM-20-sc, O3

APU 内核的算法加密性能

NB-IoT 中的 AES-128-CTR

  • 平台:SCR5, Linux 6.12
  • 算法:AES-128-CTR
  • 库:OpenSSL
  • 网络协议栈:NB-IoT

一个流量加密场景,涉及处理大小从 16 到 16,384 字节不等的可变长度数据包。

AES-CTR algorithm performance comparison

图 4. AES-CTR 算法性能比较

测试条件: SC-DT 2025.06, LLVM-19-sc

使用 AES-GCM 的网络流量加密

  • 平台:SCR9, Linux 6.6
  • 算法:AES-GCM
  • 库:OpenSSL 3.4

一个使用 wget 通过安全通道从网络下载文件的场景。AES-GCM(伽罗瓦/计数器模式)是一种结合了对称 AES 加密与数据认证的加密模式,可同时确保消息的机密性和完整性。

AES-GCM encryption performance evaluationAES-GCM encryption performance evaluation

图 5. AES-GCM 加密性能评估

测试条件: SC-DT 2025.03, LLVM-19-sc

使用 wget 的测量包含了显著的网络协议栈开销,这扭曲了实际的加密性能加速比。为了更准确地评估工作负载中与密码学相关的部分,这些测量数据辅以了处理 1480 字节数据包的独立 AES-GCM 密码测试数据(图 6)。

Standalone AES-GCM encryption performance evaluationStandalone AES-GCM encryption performance evaluation

图 6. 独立 AES-GCM 加密性能评估

测试条件: SC-DT 2025.03, LLVM-19-sc

使用 AES-128-XTS 的磁盘加密

  • 平台:SCR9, Linux 6.12
  • 算法:AES-128-XTS
  • 库:OpenSSL 3.4

一个磁盘加密场景,比较两种数据块大小:标准的 512 字节块和为 NVMe 设备优化的扩展 4096 字节块。测试使用 AES-128 算法的 XTS 模式运行 5 秒,该模式专门设计用于保护磁盘和文件系统上的数据。

AES-XTS performance evaluation in a disk encryption scenario

图 7. 磁盘加密场景中的 AES-XTS 性能评估

测试条件: SC-DT 2025.09, LLVM-20-sc

实际测试表明,与通用实现相比,所有测试算法的加密性能均有显著提升:

  • SM4, AES-CTR:最高达 3 倍
  • AES-GCM, AES-XTS:最高达 4 倍
  • AES-GCM(独立):最高达 14 倍

结果证实了在所观察场景中使用专用密码扩展的优势。

5. 总结

在当今世界,安全性变得越来越重要,因为威胁的数量逐年增加,其复杂性和多样性也在增长。信息安全问题在国家层面通过实施安全标准和法规来解决,以加强防范潜在风险。

设备安全问题是复杂的,需要考虑多种因素。在本文中,我们重点关注了其中一个因素——在 RISC-V 架构的指令集级别实现加密(位操作和标量密码学扩展),强调了其相对于通用软件解决方案的优势。使用 Syntacore SCR4、SCR5 和 SCR9 内核以及 AES 和 SM4 算法在各种模式和场景下的实际测试表明,使用专用扩展可带来显著的性能提升。这使得在设计符合现代国际安全要求的计算设备时,实施这种机制既可行又完全合理。