高性能密码学实现技术综述

了解开源、关注开源、使用开源
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
 项目地址:https://gitcode.com/openHiTLS/openhitls

1 技术背景

随着新一代信息技术的快速发展,数字化、网络化、智能化成为整个智慧社会的基本特征,一个万物智联的全新时代正在开启。网络空间安全日益重要,密码学是网络空间安全的基础。密码学的理论基础是数学,包含大量的代数、大整数等数学运算,这些数学运算需要消耗大量的计算资源,占用正常业务的计算资源,增加时延、降低业务并发性能。在万物智联的演进中,数据量将指数级增长,密码学的需求将越来越多,密码学的性能消耗占比会越来越大,业务对密码学性能提升的诉求将越来越强,高性能密码学算法是学术界和产业界重要的研究课题。

2 技术概述

密码学算法是密码学的基础,密码学算法可分为对称算法、非对称算法两类,数字签名、消息摘要、密钥派生、随机数发生器、安全通信协议等密码算法都是这两类,密码学算法是密码学性能的关键。不同算法和参数的安全强度不同,计算复杂度不同,需要在需求分析阶段根据系统的安全强度需求选择合适的算法和参数。当确定了密码学算法和参数,密码学算法的性能由工程实现决定。在性能优化的同时需要保证密码学算法的安全性不降低,包含算法计算结果正确、运算中密钥没有侧信道泄露风险等。

图表 1 高性能密码学实现技术总览

高性能密码学实现技术总览见图表 1,主要包含设计和实现两类。从设计上,可分为算法优化和并行计算两种。从实现上,可分为编译优化和内存优化两种,这些技术可以组合应用。软件实现中需要充分利用编译器的优化技术、部分场景需要人工调整汇编逻辑,实现二进制运行最优化;在软硬件实现中需要充分利用内存优化,充分使用寄存器、高速缓存等低时延内存、减少不必要的内存拷贝等。软件实现成本低、算法加速范围广,硬件实现成本高、算法加速范围有限、部分加速效果显著,业务系统可以综合性能优化目标、成本等综合选型。

高性能密码实现技术的目标是减少单位数据在密码学上的运算耗时,是数学、密码学、软件工程、硬件工程等多学科协同的系统性工程。实现上的优化技术在业务实现中广泛应用,设计上的优化技术和算法原理强相关,本文将介绍设计上的优化技术原理以及典型实践。

3 算法优化

算法优化是通过降低密码学运算的计算复杂度来减少单位数据运算耗时,进而减少系统中密码学运算占比、提升系统中正常业务的性能规格,包含密码学算法优化和算法预计算优化两类。密码学算法优化是通过减少算法数学运算量来降低算法计算的复杂度,适用软件、硬件等不同的实现方式,应用最广泛。算法预计算优化是通过空间换时间消除重复运算降低计算量,需要权衡性能收益和内存开销。

3.1 密码学算法优化

密码学算法优化和算法原理强相关,需要保证优化前后密码学算法运算结果一致。RSA 和 EC 是两种常用的非对称算法,RSA 算法可以使用模幂运算优化、椭圆曲线算法(EC)可以使用射影坐标坐标系转换等完成算法优化,降低计算复杂度。

RSA 加密原语的数学表达式为“c = m^e mod n”,这里是大整数模幂运算,需要大量的计算。模幂运算有平方乘法以及减少幂次计算的模乘法等优化。平方乘法优化见图表 2,这种优化将模幂运算转化为模平方和模乘运算,减少计算复杂度。减少幂次计算的模乘法等优化见图表 3,这里使用窗口算法减少乘法次数,进一步减少计算复杂度。

图表 2 基于平方乘法的左至右二元模幂

图表 3 具有 k 位固定窗口的从左到右 k 进制模幂

在椭圆曲线算法中,椭圆曲线上的点有不同的形式,比如仿射坐标、射影坐标,在仿射坐标表达的椭圆曲线中,乘法逆元基于扩展欧几里得算法,这个算法的计算开销非常大,使用射影坐标系可以避开扩展欧几里得算法,降低算法计算的复杂度。在有限域上的椭圆曲线方程为:y^2=x^3+ax+b(a、b 在有限域上,且(4a^3+27b^2) mod p != 0), a、b 取值不同曲线不同,椭圆曲线算法运算分层关系见图表 4。

图表 4 椭圆曲线算法运算分层关系

SM2 曲线是商用密码非对称算法选用的曲线,不同域上椭圆曲线运算复杂度不同,素域上不同坐标系下椭圆曲线运算的复杂度见图表 5,二元扩域上不同坐标系下椭圆曲线运算的复杂度见图表 6 。有限域中求逆是性能开销最大的运算,仿射坐标改为射影坐标可以消除有限域中求逆运算,提升性能。此外,基于数学建模,选取高效的编码形式降低 K 的平均 Hamming 重量,提高标量乘的效率。基于椭圆曲线的理论,选择最优坐标系,减少倍点和点加的计算量,提升倍点/点加效率,基于计算数论的理论,提升有限域中大数乘法/平方/求逆/取模运算性能。

图表 5 素域上椭圆曲线加法运算复杂度

图表 6 二元扩域上椭圆曲线加法运算复杂

注:表中I、M和S分别表示有限域中的求逆运算、乘法运算和平方运算。

3.2 算法预计算优化

算法预计算优化是通过预计算保存为数据表,将算法运算部分转换为查表,降低计算消耗。比如 AES 查表法实现、EC 椭圆曲线中的倍点预计算等。

AES 是分组算法,基础运算 AES 块运算逻辑见图表 7,AES 块运算由多次 AES 轮运算组成,AES 轮运算包含字节替换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)、轮密钥加(AddRoundKey)四种操作。

图表 7 AES 块运算逻辑

AES 轮运算中四种操作重复执行,包含伽罗瓦域和矩阵乘法计算,是复杂的计算,这些计算操作可以转成查表运算如图表 8,这样复杂的计算转换为简单的查表计算,降低计算消耗。

图表 8 基于查表的 AES 轮运算

4 并行计算

并行计算技术是通过同时执行多个计算任务来提高密码算法的执行速度,可以分为指令级并行、数据级并行和任务级并行三种,其中指令级并行和数据级并行是最通用的两种技术,在软硬件实现中广泛应用。硬件实现通过电路并行设计实现数据级并行、软件实现通过集成硬件实现的加速能力使能应用性能提升。硬件实现通过提供专用 CPU 指令和宽位寄存器、软件实现通过使用这些指令和寄存器实现指令级和数据级并行,使能应用性能提升。

4.1 指令级并行

指令级并行是通过解耦的数据应用计算机指令并行计算实现的,CPU 提供 SIMD 指令以及指令流水线技术来提供并行计算能力,密码学算法的软件实现应用这些能力来减少单位数据计算的指令周期数、提升密码学算法计算性能。

SIMD 指令包含密码学算法原语指令、浮点运算指令、向量运算指令,密码学算法原语指令和密码算法逻辑强相关,常见的有 AES 轮运算指令,Intel 提供了 AES-NI 指令,ARM 提供了 AESE/AESD/AESIMC/AESMC 指令。这些操作需要几十条移位、加等基础指令。ARM 提供的 AESE/AESD 实现了 AES 块加密/解密操作,AESE 指令见图表 9,一条指令实现了几十条基础指令的功能,缩短了 AES 运算指令执行周期。
 

图表 9 AES 轮加密指令

4.2 数据级并行

独立输入数据上进行相同的计算,这些计算理论上可以并行执行,这种并行性称为数据级并行。将密码学算法运算的数据分离,使用硬件提供的并行计算能力可以实现密码学算法数据级并行。

部分 CPU 支持 SIMD 指令和向量寄存器、GPU 支持 SIMT 指令,这些指令可以为密码学算法提供数据级并行基础能力。AES-GCM 不同数据块的块计算是独立的,可以基于这些基础能力减少算法运行时间,提升算法运行效率。

业界还提供了专用的密码学加速硬件,应用可以直接使用,比如 Intel QAT 硬件加速引擎和鲲鹏 KAE 硬件加速引擎。鲲鹏 KAE 利用鲲鹏处理器内置的硬件加速单元和特有的指令,用硬件算法代替软件算法,大幅度提升应用性能,使用特有框架,帮助降低调用路径性能损耗。

4.3 任务级并行

任务级并行,也被称为功能并行或控制并行,主要在多处理器的并行计算环境中运用。这种并行性的关键在于分配不同处理器上的进程或线程同时执行的任务。每个控制流都会计算多个并行任务中的某个子任务,各个任务之间相互独立,即它们之间不存在依赖关系。通常,任务级并行的粒度比较大,通信较少。

部分处理器提供 MIMD 的能力,密码算法可以在数据级并行的基础上使用这种能力;不同处理器间的并行一般是在密码学应用程序中使用,比如 Web 服务器的负荷分担。

5 技术应用

openHiTLS 将面向万物智联不同场景的性能加速需求,结合不同硬件能力,综合应用高性能密码学实现技术,实现同等运行环境下算法性能最优,打造极致性能的密码套件,夯实万物智联时代网络空间安全基石。

6 参考文献

[1] High-Speed Cryptography and Cryptanalysis https://cryptojedi.org/peter/thesis/data/phdthesis-schwabe-printed.pdf
[2] elliptic curve cryptography a gentle introduction https://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introduction/
[3] SM2 椭圆曲线公钥密码算法http://www.gmbz.org.cn/main/viewfile/20180108015515787986.html
[4] Specification for the ADVANCED ENCRYPTION STANDARD (AES) https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.197.pdf
[5] Intel® QuickAssist Technology (Intel® QAT). https://www.intel.com/content/www/us/en/developer/topic-technology/open/quick-assist-technology/overview.html
[6] 鲲鹏加速库. https://www.hikunpeng.com/document/detail/zh/kunpengaccel/overview/kunpengaccel.html
[7] Fast Parallel Table Lookups to Accelerate Symmetric-Key Cryptography.
https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1428516
[8] Jeffrey Keith Rott.Intel® Advanced Encryption Standard Instructions(AES-NI). https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-encryption-standard-instructions-aes-ni.html
[9] ARM 指令集. https://developer.arm.com/documentation/ddi0487/ja/
[10] PKCS #1: RSA Cryptography Specifications Version 2.2 https://datatracker.ietf.org/doc/html/rfc8017
[11] Fast and Constant-Time Implementation of Modular Exponentiation. https://cse.buffalo.edu/srds2009/escs2009_submission_Gopal.pdf
[12] 智慧,让“连”接成为“联”接 https://carrier.huawei.com/cn/trends-and-insights/ubbf/business-practices/03

了解开源、关注开源、使用开源

 旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
 项目地址:https://gitcode.com/openHiTLS/openhitls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值