Aigis密钥封装算法多平台高效实现与优化

沈诗羽 何 峰 赵运磊

(复旦大学计算机科学技术学院 上海 200433)

摘 要 量子计算技术快速发展带来的新挑战使得后量子密码(post-quantum cryptography, PQC)成为当前密码学界研究热点.基于格的密码方案因其安全高效的特性,已经成为后量子公钥密码的主流之一.Aigis密钥封装算法(Aigis-enc)是我国学者自主设计的基于模格上非对称错误学习(A-MLWE)问题的后量子密码算法,是中国密码学会举办的全国密码算法设计竞赛公钥密码算法一等奖获奖算法之一.为了应对量子攻击,维护国家网络空间的长远安全,为未来国家后量子密码算法标准的制定和实际部署贡献力量,对我国自行研发的优秀后量子密码算法进行优化具有重要意义.工作重点关注Aigis-enc算法在不同平台的实现优化,包含高性能平台的快速并行实现与嵌入式低功耗平台的紧凑实现.具体而言,运用单指令多数据流(single instruction multiple data, SIMD)指令,充分优化了Aigis-enc现有AVX2实现,并提供了其首个ARM Cortex-M4平台的轻量级紧凑实现.实现包含4个关键优化点:降低Montgomery约减与Barrett约减汇编指令数目,提升了约减效率;使用裁剪层数的数论变换并优化指令流水调度,加速多项式乘法运算并减少了预计算表存储需求;提供了多项式序列化与反序列化的并行汇编指令实现,加快了编码解码与加解密过程;结合on-the-fly计算与空间复用优化算法存储空间.实验结果表明:提出的优化技术在8核Intel Core i7处理器上可将Aigis-enc算法原始AVX2实现提升25%,且大幅减少了其在ARM Cortex-M4平台的预计算表存储、代码尺寸与运行堆栈占用,对算法的实际应用有重要现实意义.

关键词 后量子密码;格密码;密钥封装机制;AVX2并行优化;嵌入式轻量级实现

近年来,为应对大数据和互联网时代对计算能力的需求,各国都对量子计算研究投入了极大的力度和资源.谷歌、IBM、阿里、腾讯等公司相继成立了实验室来研究量子计算与后量子安全技术.谷歌于2019年研制出53位量子比特计算机[1], 可于3 min 20 s内完成世界第一超级计算机Summit一万年才能完成的计算任务.2020年Yang等人[2]研制出能在超过1 K温度下运作的量子计算平台,在实用性方面取得了巨大的突破.2021年美国芝加哥大学和阿贡实验室研究人员利用超导同轴电缆提高量子态传输保真度,首次实现确定性多量子比特纠缠,为构建大规模量子计算机提供了一种模块化的方法[3].

量子计算主要通过利用量子叠加与纠缠两大量子物理学特性带来的强大并行处理性来超越经典计算的性能,且其计算模型中的特殊性质也给抗量子密码算法方案设计带来了巨大挑战.随着量子计算机的出现与量子计算技术的不断推进,现代密码算法面临着前所未有的挑战.传统的公钥密码设施大多基于离散对数或大整数分解困难问题,如联邦信息处理标准出版物(FIPS)186[4]中规定的数字签名方案和美国国家标准与技术局(NIST)特别出版物(SP)800-56A和(SP)800-56B[5-6]中规定的密钥建立机制. 这些公钥密码算法虽然目前尚无法被传统计算机攻破,但是均可在量子计算机中找到多项式时间的破解方法[7]. 密码技术是国家网络空间安全的关键技术,公钥密码体制在网络、金融、军事等方面都有着举足轻重的作用,它被广泛用于各种网络安全协议中,如IPSEC,TLS等.因此,实现抵抗量子攻击的新型密码体制,即后量子密码(post-quantum cryptography, PQC),是目前重要的研究方向.

为了应对量子计算的威胁,2016年美国国家标准与技术局(NIST)开展后量子密码算法征集,向全球学者征集后量子密码算法[8].2019年中国密码学会也举办了全国密码算法设计竞赛,旨在为我国制定后量子算法标准做准备[9].后量子密码的构造主要包括基于编码(Code-based)、基于哈希(Hash-based)、基于多变量(Multivariate-based)、基于格(Lattice-based)和基于同源(Isogeny-based)的.近期, NIST宣布了第3轮7个进入决赛(finalists)的算法[10],其中5个是基于格构建的. 相较于其他后量子密码技术路线,基于格的密码方案具有理论上的最坏情况困难保证[11],计算速度更快,更易于并行,而且通信开销较小,可用于构造多种功能强大的密码方案,如公钥加密、数字签名、全同态加密等.我国密码算法设计竞赛一等奖Aigis方案[12-13]即是格上构建的基于非对称模-LWE(A-MLWE)与非对称SIS(A-SIS)困难问题的方案,包含密钥封装机制Aigis-enc与数字签名方案Aigis-sig. 对于密钥封装机制,相比于NIST第3轮中基于MLWE问题的Kyber方案,Aigis密钥封装算法(简记为Aigis-enc)需要基于额外的假设,但通过压缩公钥以及密钥和噪声从不同的分布中采样,Aigis-enc在安全性与错误率之间取得了更好的权衡.

为了应对量子攻击,维护国家网络空间的长远安全,为未来国家后量子密码算法标准的制定和实际部署贡献力量,对我国自行研发的优秀后量子密码算法进行优化具有重要意义.本文重点关注Aigis-enc算法在不同平台的实现优化,包含高性能平台的快速并行实现与嵌入式低功耗平台的紧凑实现.对此,本文充分利用了单指令多数据(single instruction multiple data, SIMD)指令集,如Intel的AVX2指令集和ARM Cortex-M4的数字信号处理(DSP)指令集, 对算法底层多项式运算以及算法运行所需堆栈与存储空间进行优化. 特别地,据我们所知,本文工作提供了首个Aigis-enc的ARM Cortex-M4平台的轻量级紧凑实现. 具体而言,本文的主要贡献有5个方面:

1) 使用了改进版有符号数Montgomery约减与Barrett约减,并运用乘加指令减少了ARM Cortex-M4平台模约减所需指令条数,提升约减效率;

2) 使用了删减层数的数论变换(T-NTT)并提供AVX2与ARM的汇编实现,相比与传统NTT,删减了变换的最后一层,极大地减少了预计算表存储需求;

3) 对多项式压缩并编码为字节流和字节流解码并解压缩这2个核心多项式序列化与反序列化操作,使用一个乘法和一个移位运算来替换耗时高的除法,并借助AVX2并行处理加快整个过程;

4) 调整算式结构以充分适应各平台指令特性,从而达到减少总指令数目与load/store指令开销的目的;

5) 采用on-the-fly计算与空间复用的优化方法,大幅减少了运行所需堆栈空间、代码大小以及存储占用.

实验结果表明:综合本文提及的优化技术,在8核Intel Core i7处理器上可将Aigis-enc算法原始AVX2实现提升25%,且大幅减少了其在ARM Cortex-M4平台的预计算表存储、代码尺寸与运行堆栈占用,对算法实际应用有重要价值.

1 相关工作

基于格的密码体制首先由Ajtai[14]提出.2005年Regev[15]提出的格上基于错误学习(LWE)问题的密码方案极大提升了格密码算法的效率,目前格密码已经成为密码学领域的研究热点.NIST后量子标准化进程中,基于模格的密钥封装算法Kyber是第3轮入选算法之一.Zhang等人[12]观察到MLWE问题的私钥与噪音分布对方案安全性与错误率的影响不对等,从而提出了A-MLWE与A-SIS问题,并在此基础上构造了Aigis算法.其中,密钥封装机制Aigis-enc可视为Kyber的变体,但能更好地平衡安全性与错误率.自第2轮算法提交以来,Kyber取消了对公钥的压缩,而Aigis-enc保留了该操作.

算法性能是衡量算法优劣的重要指标之一,近年来,学者们提出了很多针对格密码算法的软件优化实现方法[16],包含AVX2并行快速实现与ARM Cortex-M4平台的轻量级实现.2016年Alkim等人[17]公开了基于RLWE困难问题的NewHope算法,算法参数设计使得其适合使用数论变换(number theoretic transform, NTT)加速多项式乘法,且使用浮点型NTT进行实现.Avanzi等人[18-19]于2018年公开了Kyber第1轮算法实现,包含C参考实现、C优化实现与AVX2优化实现.该实现中使用了lb q层变换的整型NTT.随后,在第2轮提交中,该团队对算法参数进行了调整,删减了NTT层数以降低q的规模[20].对于ARM Cortex-M4平台实现,pqm4[21]提供了一个Cortex-M4微处理器上算法运行时钟周期与堆栈空间的测试框架.目前,Kyber算法的M4实现已被纳入该项目.2020年Alkim等人[22]基于其2016年的工作[17],对NewHope算法的设计与ARM实现进行改进,并使用该技术优化了Kyber的堆栈使用.

目前尚未有针对7681模数的汇编指令实现.本文在充分结合运用这些优化技术的基础上,进一步调整代码运算结构,优化了多项式序列化、加解密过程,结合空间复用等方法,将指令个数与存储降至最低,从而给出了首个针对该模数高效紧凑的优化实现方案.

2 预备知识

本节给出了本文工作相关的预备知识.首先定义了变量符号、数学运算与格上困难问题,接着详细描述Aigis-enc算法并介绍了实现平台与优化方式.

2.1 基本定义及符号说明

1) 环与多项式.n是一个以2为底的正指数,q是一个素数.定义集合为分圆多项式环,其中Φ(X)是n维分圆多项式,中元素为整系数n维多项式.定义其中每个多项式系数均在环Zq.定义为字符串空间.f中的多项式,可表示为多项式f的列向量形式是f=(f0,f1,…,fn-1)T,行向量形式是f=(f0,f1,…,fn-1),其中fi∈Zq,i=0,1,…,n-1.

2) 运算符.默认情况下,常规字体字母表示中的元素,黑斜体小写字母表示向量,黑斜体大写字母表示矩阵.对于一个元素x,x表示x四舍五入至最近的整数.|·|表示一个字符串的字节长度或者一个数的绝对值.mod q表示模约减操作,r′=r mod q表示将整数r约减到Zq中的代表元r′,mod±q表示约减一个偶数至范围奇数至范围对于一个元素a∈Zq,表示|a mod±q|.对于一个向量a=(a0,a1,…,an-1),定义

3) 分布.对于集合S,sS表示从S中随机选取一个元素s.离散均匀分布是一种对称概率分布,其中有限数量的样本被采样的概率相同.中心二项分布ψη近似于高斯分布,该分布在区间之间采样元素,

4) 算法参数.算法方案描述中,n为多项式的维度,q为模数,l表示向量的维度,lb m表示消息编码中1 b可编码结果的个数.此外,η表示噪声的大小,d(或t)表示Zq域的整数被压缩(或删减)的比特数,g=2d,其下标指示操作对象.pk,skct分别表示公钥、私钥与密文,B为通信带宽,是公钥和密文长度的总和(单位为字节).方案分析中,δ表示解密的错误率,pq-sec表示后量子安全等级,K表示待封装密钥.

5) MLWE困难问题. LWE问题及其在模、环上的变体是格密码算法主要基于的困难问题.定义分布χx,α={(a,y=aTx+z mod 当秘密x从Zq中均匀随机选取时,计算性LWE问题为给定多个服从χx,α的样本,从中计算出x.判定性LWE问题为给定多个χx,α样本,区分其与上的均匀分布.LWE问题的困难性表现在没有多项式时间内的算法能解决这2个问题.标准格LWE困难问题允许灵活的参数选择,但在速度和存储空间上有明显的缺点,它涉及大量耗时的矩阵-向量乘法运算,且密钥和密文的存储需要较大的空间.基于LWE困难问题,RLWE困难问题在效率和存储上有了很好的提升.主要的思想是通过构建一个额外的多项式环,把标准格中的n维向量替换成维度较小的多项式,具有稳定的结构特性,但额外代数结构的引入可能导致安全隐患.相比于LWE困难问题的2个形式,其不同便体现在样本为(A,bAs+e),且均匀样本随机选自其中 MLWE困难问题为LWE和RLWE问题的结合版本,平衡了安全与效率.MLWE在多项式环结构上引入了向量维度k,其值影响方案安全等级.特别的,当se是从不同的分布中得到时,可以提供MLWE问题的非对称版本(A-MLWE). A-MLWE问题可看作是MLWE问题的一个特例,其中sψηe,eψηe,ηsηe.

2.2 Aigis-enc算法介绍

Aigis-enc方案是基于A-MLWE困难问题的后量子密钥分装算法,其核心构造为IND-CPA安全的公钥加密PKE=(KeyGen,Enc,Dec),由密钥生成、加密和解密3个部分组成,遵循文献[23]的设计框架.在此框架基础上,通过FO转换(Fujisaki-Okamoto transformation)[24]可构建IND-CCA安全的密钥封装机制KEM=(KeyGen,Encaps,Decaps).由于目前FO转换已有较为统一的模块化实现方案,且多为对PKE所涵盖函数接口的调用,所以本文重点关注Aigis-enc方案中IND-CPA安全的公钥加密模块,进而开展对底层多项式运算的优化实现.在文献[23]加密框架的基础上,私钥与噪音服从中心二项分布χα,其值在区间[-α,α]内.Zhang等人[12]观察到,α的值对方案安全性与正确性起着不对等的作用,换模压缩技术的使用也使得秘密向量及其对应的噪音向量在最终噪音项中起着不对等的作用.由此,Aigis-enc中秘密向量与噪音向量分别从不同的分布χsχe中采样,选取了非对称体制来平衡参数间的影响.

Aigis-enc-PKE的密钥生成算法如算法1所示. 密钥生成时首先从n位二进制串中均匀采样出σρ,然后将随机种子ρ传入SamParse函数以生成NTT域上的矩阵A,接着以σ为参数通过CBD算法生成私钥s和噪音向量e,最后计算As+e后并压缩,与ρ拼接形成公钥pk.

算法1. Aigis-enc-PKE密钥生成算法.

输出: 公钥pk(t,ρ),私钥sks.

① function Aigis-enc.KeyGen( )

σ,ρ←{0,1}n;

AParse(Sam(ρ));

CBD(σ);

tCompressq(As+e,dt);

⑥ return (pk(t,ρ),sks).

⑦ end function

Aigis-enc-PKE的加密算法如算法2所示.给定公钥pk=(t,ρ)以及明文消息msg∈{0,1}n,使用相同的种子ρ生成矩阵A的转置.以随机数r为输入通过CBD生成错误向量(r,e1,e2),进而结合×k的明文内嵌入机制计算密文uv,最后将u压缩成c1,将v压缩成c2,得到密文ct=(c1,c2).

算法2. Aigis-enc-PKE加密算法.

输入:公钥pk(t,ρ)、待加密消息msg、随机数r;

输出:密文ct(c1,c2).

① function Aigis-enc.Enc(pk,msg,r)

Decompressq(t,dt);

AParse(Sam(ρ));

CBD(r);

uAT·r+e1;

v

vv+Decompressq(msg,dm);

c1Compressq(u,du);

c2Compressq(v,dv);

⑩ return ct(c1,c2).

end function

Aigis-enc-PKE的解密算法如算法3所示.算法传入参数为密钥sk和密文ct,通过对密文ct,即c1c2进行解压缩,分别得到uv,最后解码v-sT·u得到明文msg.

算法3. Aigis-enc-PKE解密算法.

输入: 私钥sks、密文ct(c1,c2);

输出: 解密消息msg.

① function Aigis-enc.Dec( )

uDecompressq(c1,du);

vDecompressq(c2,dv);

msgCompressq(v-sT·u,dm);

⑤ return msg.

⑥ end function

2.3 实现平台与SIMD指令

SIMD是一种采用一个控制器控制多个平行的处理单元、同时对一组向量化数据的每个元素执行相同操作的并行技术.相比于多进程并发运算,该技术实现的是空间上的数据级并行,同一时刻只有一个进程被执行.SIMD技术多用于实现一些简单的通用运算,如算术运算、逻辑运算、数据排列混合、数据批量加载与存储等.

高级向量扩展(advanced vector extensions, AVX)指令集是x86架构微处理器中一种128 b的SIMD指令集,由英特尔提出,随后也得到了AMD的支持.AVX2指令集是AVX的延伸,将大多数作用于整数上的指令扩展至256 b,以增加一倍的运算效率.另外,三操作数运算指令的支持也减少了操作数的额外复制消耗.

ARM Cortex-M4是ARMv7E-M架构的数字信号控制器,以满足高性能通用代码处理以及数字信号处理应用的需求.其核心通用指令集包含基本的Thumb-1,Thumb-2指令,以及32 b宽乘法.另外,ARM Cortex-M4也提供了SIMD指令,即数字信号处理(digital signal processing, DSP)扩展指令集.该指令集可在32 b宽的寄存器内同时对4个8 b或2个16 b整数进行操作.

在格密码算法中,底层操作多为互相独立的多项式系数算术运算与逻辑运算,非常适合用SIMD指令进行并行优化.Aigis-enc算法中多项式系数规模为16 b,使用AVX2可实现16个数据的并行运算,DSP可实现2个数据的并行运算,对多项式算数运算、模约减、数论变换等模块效率的提升有明显的效果.

3 Aigis-enc算法测试及优化函数选定

本节给出了gprof与nm工具下Aigis-enc-768实现的软件分析测试结果,并据此选定开销大、调用频率高或存储占用多的模块以进一步优化,如离散采样、多项式乘法、模约减等;对于尚未并行优化的函数,如多项式序列化与反序列化,本文也将其纳入优化范围.对于选定的函数,本节中给出了相关理论与算法描述.

3.1 Aigis-enc算法软件分析

Aigis-enc算法团队在中国密码学会官网上提交了Aigis-enc原始实现,作为第2轮算法竞赛的支撑材料[12].为确定实现中有待进一步优化的函数、从而提升算法整体运行效率与空间占用,本文使用gprof与nm工具对Aigis-enc-768算法实现进行了测试分析,结果如图1所示:

Fig. 1 Test results of the Aigis-enc-768 algorithm
图1 Aigis-enc-768算法测试分析

结果显示,伪随机数扩展占用了61.70%的时间开销,主要用于噪音采样与矩阵A的生成,这2项运算所需时长分别为总体的45.52%与28.65%.一些多项式操作函数开销相比较大,如基于NTT的多项式乘法中,前向与逆向NTT共占5.71%,多项式向量的点乘占2.80%.此外,有4.31%的时间用于多项式序列化与反序列化,包含多项式压缩与解压缩、消息编码与解码等多项式与字节流间的转换操作,其中部分函数目前尚未进行并行优化.对于ARM平台的轻量级实现,内存与栈空间占用为算法优化的重要指标之一.nm工具得到的符号表显示,Aigis-enc-768代码大小为968.304 KB,其中,前向与逆向NTT分别占据了30 KB.另外,为控制数据规模,模约减函数在运算中调用频率较高.原始实现中模约减并无显式调用,而是实现在各个函数中,这也会造成代码冗余.

本文对Aigis-enc-768算法优化主要集中于多项式运算处理模块,对通用哈希模块暂不进行调整.对于结构复杂的函数,如NTT、模约减、压缩与序列化等,本文提供了汇编指令优化实现.结合工具分析结果,本文确定的主要优化点有2个方面:

1) AVX2.使用NTT变体提高多项式乘法计算效率;对未优化的多项式运算函数进行AVX2并行优化;提供部分函数的AVX2汇编指令实现,以优化流水调度;

2) ARM.减少NTT运算中预计算表大小;运用on-the-fly[22]等优化思想减少代码运行的栈空间;使用DSP指令减少运算所需时钟周期,并提升并行度.

3.2 模约减

多项式系数为群Zq中的元素,将其规约为群Zq中的代表元,可以控制系数规模,从而减小算法运行所需的时空资源.x86与ARM架构的处理器通常使用除法指令来完成取模运算.为此,密码算法实现中引入了Barrett约减与Montgomery约减,以减少除法运算带来的过多消耗,同时保证约减可以在常数时间内完成,以抵抗侧信道攻击.

3.2.1 Barrett约减

β为基底,Barrett约减可实现[-β/2,β/2)区间的整数a至群Zq的规约,满足r=a mod q,0≤r<q.其约减过程可通过乘以模数逆元,将标准模约减所需的除法转化为乘法来完成,即:

r=a mod q=a-q =a-q a q-1.

为了更适配计算机硬件结构,Barrett算法在实际部署中进行了一些调整[25-26],即将a q-1表示为通过预计算与移位运算来提高效率,其中μ一般表示为2的幂次.算法步骤见算法4.

算法4. 有符号数Barrett约减算法.

输入: 16 b有符号整数a满足-β/2≤a<β/2、模数q满足q<β/2;

输出: ra(mod q),其中0≤rq.

① function Barrett(a,q)

r=a-(tq mod β);

⑤ return r.

⑥ end function

算法4中,β根据约减数据的规模来确定,对于int16_t类型的数据,通常设定β=216.v=提供了一种μ/q的近似,确定qv为可预计算的常量.t为约减a时需要减去的q的个数,通过a-tq对其进行约减.

3.2.2 Montgomery约减

不同于Barrett约减,Montgomery约减作用于基数为β的MONT域上.数据需从正常域转换到MONT域才可使用Montgomery约减.

Montgomery约减的主要思想是通过对MONT域内的数加上模数q的倍数,转换取模时除法的除数,使得整除运算更容易进行.约减完成后再转换回正常数域.对于无符号数,约减结果在[0,2q)范围内,需要与q进行比较判断,以得到[0,q)范围内的输出.有符号数的Montgomery约减在原本的算法上进行了一些调整,输入范围为[-βq/2,βq/2),输出为(-q,q)范围内的有符号数,见算法5.

算法5. 有符号数Montgomery约减算法.

输入:32 b有符号整数a满足-βq/2≤a<βq/2;

输出:16 b有符号整数r′满足-q<r′<q.

① function Montgomery(a)

m=aq-1 mod±β;

r′=-t;

⑤ return r.

⑥ end function

3.3 多项式乘法与数论变换

数论变换是快速傅里叶变换(fast Fourier transform, FFT)在有限域上的一种特殊形式,常用于实现Zq环上的多项式乘法加速.对于n长多项式,其中n为2的幂次,传统NTT要求参数q是满足2n|(q-1)的素数.

ωγ分别为Zq上的n阶与2n阶单位根,ω=γ2,对于多项式其前向NTT定义为

c

逆向NTT定义为

且二者满足f=NTT-1(NTT(f)).给定f,g∈Zq[x]/(xn+1),NTT能够用来计算h=fg∈Zq[x]/(xn+1),矩阵形式的线性变换可表示为

在NIST发起的后量子密码算法征集中,候选算法Kyber使用了一种NTT变体,删减了传统NTT最后一层[20],使得变换对单位根个数的需求降至原本的一半,从而参数只需要满足n|(q-1).对于这类遵循“底部裁剪”方法的数论变换,本文简称其为T-NTT(truncated-NTT),并令β为删减的层数.Kyber使用了T-NTTβ=1的情况.给定Zq[x]/(xn+1),对任意的整数β≥0,q是满足的素数,T-NTT(f)的一般形式为

通过T-NTT变换, n维多项式被分解为n/2个一次子多项式.此时多项式向量之间的乘法为一次多项式的点乘.即对于变换后的应执行n/2对的一次多项式点乘.

环上均匀采样

Aigis-enc采用了确定性伪随机函数扩展作为公钥一部分传输的种子ρ,来生成通信双方计算所需的矩阵A. A-MLWE困难问题要求该矩阵均匀随机,采用拒绝采样[27]可生成近似于均匀的分布.算法6描述了通过Parse函数采样多项式的过程.

算法6. 多项式系数拒绝采样算法.

输入: 字节流

输出: 根据字节流采样的多项式

① function Parse(B)

i,j0;

③ while j<n do

dbi+256×bi+1;

d

⑥ if d<q then

d;

jj+1;

⑨ end if

ii+2;

end while

end function

3.5 多项式压缩与解压缩

基于MLWE困难问题构造的密钥封装方案,在实现中经常使用一些压缩和解压缩的方法,一方面,舍弃一些对正确性影响不大的低阶位可节省带宽和通信成本;另一方面,在加密和解密过程中执行LWE错误纠正.目前Aigis-enc[11]中使用的函数定义为

Compressq(x,d)=x mod 2d

Decompressq(y,d)=y mod q,

其中,d<lb q为压缩后剩余的位数,x∈Zq,y∈Z2d.Compress函数输入为x∈Zq,输出{0,1,…,2d-1}内一个整数,继而通过Decompress可得到x′=Decompressq(Compressq(x,d),d),满足|x′-x mod±q|≤Bq.

4 Aigis-enc算法AVX2高效实现方案设计

本文提出的针对Aigis-enc-768算法的AVX2优化方案主要包括3个关键点:

1) 模约减.使用汇编指令实现针对有符号数的改进版Barrett约减与Montgomery约减,结合二者提升约减效率;

2) 多项式乘法.采取删减一层的NTT,使用汇编指令实现并优化指令流水,以提升效率;

3) 多项式序列化处理.将压缩与解压缩中的除法运算替换为乘法与移位,从而可使用AVX2指令并行加速.

4.1 模约减

4.1.1 Barrett约减AVX2实现

Aigis-enc-768算法模数为q=7681,从而可将系数规模控制在16 b有符号数范围内.设定β=216,16倍并行的Barrett约减算法可使用4条指令实现,具体见算法7.

算法7. 改进的Barrett约减算法的AVX2实现.

输入:向量化的16 b有符号整数a、常数模数q以及预计算的vx;

输出:向量化的约减后的值r.

① function Barrett_AVX2(a,q,v,x)

② vpmulhw ta v;

/*计算a v,取高16 b*/

③ vpsraw ttx; /*算术右移x位*/

④ vpmullw tt q;

/*计算t q,取低16 b*/

⑤ vpsubw ra-t;

/*计算a-t,得到结果*/

⑥ return r.

⑦ end function

算法的模数q固定后,输入参数v即为确定常量,可进行预计算并存储以节省计算量.计算t时,需要将av相乘的结果右移lb q-1-β.结合AVX2指令特性,不需要存储完整的32 b结果,可以仅保留乘积高字并右移lb q-1位.同时,tq mod β的计算等价于tq乘积低字,通过vpmullw指令可节省此处的取模运算.

4.1.2 Montgomery约减AVX2实现

在Aigis-enc-768实现中,Montgomery约减用于规约Montgomery域内2个16 b数的乘积,并保持其在Montgomery域内.根据模数设定β=216,实现步骤见算法8.

算法8. 改进的Montgomery约减算法的AVX2实现.

输入:向量化的32 b有符号整数a,记为ahialo;

输出:向量化的16 b有符号整数r.

① function Montgomery_AVX2(a)

② vpmullw malo q-1;

/*m=(alo q-1) mod±β*/

③ vpmulhw tm q; /*t=m q/β*/

④ vpsubw r′←ahi-t; /*r′=ahi-t*/

⑤ return r.

⑥ end function

算法输入为2个256 b的ymm寄存器,分别用于存储向量化的16个32 b乘积的高字ahi与低字alo,其中,a用于指代该乘积.同理,m=alo mod±β的计算可通过仅保存低字来实现,t=m q/β可通过保留乘积的高字完成.最后,用ahi减去t得到约减结果.

4.2 多项式数论变换改进

Aigis-enc原始实现中采用了AVX2接口调用的形式,实现了(n,q)=(256,7681)的传统NTT.相比于API接口调用,直接使用AVX2指令实现具有更高的性能及指令调度安排灵活度,也可省略一些额外的调用消耗.另外,由于Aigis-enc三组参数中使用的q不统一,每个q对应的预计算表互不相同,导致算法需要开辟很多额外的存储空间.使用T-NTT,根的个数即可由n降低至n/2,减少了预计算表的空间需求.

根据分析,本文采用T-NTT,删减NTT运算的最后一层,并提供了AVX2指令集形式的汇编实现.AVX2实现中,先单独处理第0层,将系数a0,a1,…,a63a128,a129,…,a191分别存入寄存器.通过指令vpmullw和vpmulhw进行蝴蝶变换,将系数与第1个单位根相乘,再通过指令vpaddw与vpsubw进行Montgomery约减,将系数约减至[-q,q]范围内.多项式剩余的128个系数,即a64,a65,…,a127a192,a193,…,a255,也进行相同的处理.不同于第0层,第1~6层中,256个系数统一按序载入处理,乘以对应的单位根.在第4~6层中,需要使用PACK和UNPACK相关指令调整系数顺序,将相关的系数整合到一起.前向NTT采用了CT蝴蝶变换(Cooley-Tuckey butterflies),输入为正序多项式系数,输出为比特反转顺序的NTT域元素.逆向NTT采用了GS蝴蝶变换(Gentleman-Sande butterflies),输入为比特反转顺序的NTT域元素,输出正序多项式系数,其伪代码见算法9与算法10.通过这2种变换的组合可以省略位反转操作,以提高运行效率.

算法9. CT蝴蝶变换AVX2实现.

输入:向量化的16个低位系数rl、高位系数rh、模数q与单位根ζ;

输出:变换后的低位系数与高位系数向量rh′与rl.

① function CT_Butterfly_AVX2(rl,rh,q,ζ)

② vpmullw ζ q-1,rh,t1;

/*t1=(rh×ζ q-1)(mod 216)*/

③ vpmulhw ζ,rh,(rh ζ)hi;

/*(rh×ζ)hi=*/

④ vpmulhw q,t1,t2; /*t2=*/

⑤ vpsubw t2,(rh×ζ)hi,(rh×ζ)′;

/*(rh×ζ)′=(rh×ζ)hi-t2*/

⑥ vpsubw (rh×ζ)′,rl,rh′;

/*rh′=rl-(rh×ζ)′*/

⑦ vpaddw (rh×ζ)′,rh,rl′;

/*rl′=rh+(rh×ζ)′*/

⑧ return (rh′,rl′).

⑨ end function

算法10. GS蝴蝶变换AVX2实现.

输入:向量化的16个低位系数rl、高位系数rh、模数q与单位根ζ;

输出:变换后的低位系数与高位系数向量rh′与rl.

① function GS_Butterfly_AVX2(r)

② vpsubw rh,rl,rh′; /*rh′=rl-rh*/

③ vpaddw rh,rl,rl; /*rl=rl+rh*/

④ vpmullw ζ q-1,rh′,t1;

/*t1=(rh′×ζ q-1) mod 216*/

⑤ vpmulhw ζ,rh′,rh′;

/*(rh′×ζ)hi=*/

⑥ vpmulhw q,t1,t2; /*t2=*/

⑦ vpsubw t2,(rh′×ζ)hi,rh;

/*rh=(rh′×ζ)hi-t2*/

⑧ return (rh′,rl′).

⑨ end function

4.3 多项式序列化与反序列化优化

本节主要说明了多项式压缩并编码为字节流、字节流解码为多项式并解压缩这2个过程的优化方案,在算法中用于对公钥与密文进行处理.优化的主要难点在于除法运算的处理,由于AVX2指令集中不包含除法指令,Aigis-enc原始实现中尚未对其进行优化,这也造成了该过程较大的开销.

Barrett在文献[25]中首次提出可以用一个乘法和一个移位运算来代替较为耗时除法运算,即

=a bs

其中,b=,s>lb(aq).利用该转换思想,即可使用一条乘法指令和一条移位指令代替除法,从而向量化的数据可以借助AVX2指令实现充分的16倍并行加速.具体实施中,公钥pk与密文c1需要压缩至9 b,取值为b=35 786 735,k=38;密文c2需压缩至4 b,取值为b=8 737,k=26.

5 Aigis-enc算法ARM平台轻量级实现方案设计

本节介绍了针对Aigis-enc-768算法的ARM Cortex-M4平台优化方案.设计中采取与第4节相同的改进方案,并结合该平台寄存器大小和Thumb与DSP指令集结构,对实现方案进行调整,从而最优化计算的速度与开销.另外,轻量级实现平台还需考虑片上存储,本文采用空间复用等方法减少了堆栈与存储资源的占用.

5.1 模约减

5.1.1 Barrett约减ARM实现

算法11描述了Barrett约减在ARM Cortex-M4上的实现,一次调用可完成2个16 b的约减.

算法11. Barrett约减算法ARM实现.

输入:封装2个系数的32 b寄存器单元a=ahi|alo;

输出:约减后的32 b寄存器单元r=rhi|rlo.

① function Barrett_ARM(a)

② smulbb t1,a,v; /*t1alo v*/

③ smultb t2,a,v; /*t2ahi v*/

④ asr t1,t1,#(log(β)+lb q-1);

/*t1t1≫(log(β)+lb q-1)*/

⑤ asr t2,t2,#(log(β)+lb q-1);

/*t2t2≫(log(β)+lb q-1)*/

⑥ smulbb t1,t1,q; /*t1t1q*/

⑦ smulbb t2,t2,q; /*t2t2q*/

⑧ pkhbt t,t1,t2,lsl#16

⑨ usub 16r,a,t;

/*rhiahi-thi,rloalo-tlo*/

⑩ return r.

end function

算法的输入为封装在32 b单元的2个16 b有符号数aloahi,输出为约减后的结果.v预计算后作为常量写入寄存器,之后分别与aloahi相乘、右移lb β+lb q-1位后乘q.将这2个16 b数封装后,运用usub16指令可同时执行alo-tloahi-thi,并将结果存储回相应地址.

5.1.2 Montgomery约减ARM实现

ARM Cortex-M4平台上多数指令执行时间均为一个时钟周期.调整算式结构以结合乘加运算,则可充分利用此特性,将一个乘法与一个加法替换为乘加运算,从而节省了一个周期的时钟消耗.

本文应用了改进后的Montgomery约减[22].算法的输入为2个16 b的有符号数aloahi,分别为2个32 b乘积的低字.输出为打包好的2个(-q,q)区间内的约减结果.将预存储的q-1调整为-q-1,则r′=ahi-t变更为r′=ahi+t,结合t计算中的乘法,即可使用smlabb指令在一个周期内完成2个16 b的乘积与一个32 b的加法.在Aigis-enc-768中,一个多项式向量由3个256维多项式构成,且2个多项式的乘法需要执行1 856次Montgomery约减(其中2次前向NTT需要896个,一次逆向NTT需要448个,向量点乘需要512个),改进后的方法可以大幅减少乘法所需的总时钟周期.

算法12. Montgomery约减算法ARM实现.

输入:封装2个系数的32 b寄存器单元a=ahi|alo;

输出:约减后的32 b寄存器单元r=rhi|rlo.

① function Montgomery_ARM(a)

② smulbb t1,a,v;

③ smulbb r1,t1,-q-1;

/*r1←(t1mod β) (-q-1)*/

④ smlabb r1,r1,q,t1;

/*r1hi+*/

⑤ smultb t2,a,v;

⑥ smulbb r2,t2,-q-1;

/*r2←(t2mod β) (-q-1)*/

⑦ smlabb r2,r2,q,t2;

/*r2hi+*/

⑧ pkhbt r,r2,r1,asr#16;

/*r←(r2hi|(r1hi≫16))*/

⑨ return r.

⑩ end function

5.2 多项式数论变换改进

本文使用了β=1的T-NTT,即删减最后一层.该方法大幅减小了预计算表存储空间,利于算法在嵌入式设备的部署.在AVX2实现中,由于寄存器存储空间充足,可加载完整的多项式并逐层变换.而ARM Cortex-M4为32 b架构,且资源受限(只有16个32 b寄存器),load与store一次只能存取2个系数,若采取如AVX2实现般逐层变换的方法,会引入过多的load与store指令,所以需要对NTT结构进行调整以适应平台特性,调整后的方案如图2所示:

Fig. 2 Implementation of NTT on ARM Cortex-M4
图2 ARM平台NTT实现

该方案的主要思想为以固定的距离拆分多项式,每次取16个系数存入8个寄存器,进行3层变换后存回原位置.举例来说,第一次循环存取的系数为r2={a1a0},r3={a33a32},r4={a65a64},…,r9={a65a64}.随后对其进行前3层数论变换,一对变换系数的距离间隔分别为128,64,32.变换结束后存回原地址,地址指针前进4 B,进入下一次循环.T-NTT第4~6层的操作同理进行,一对变换系数的距离间隔分别为16,8,4,最后统一执行系数间隔为2的第7层变换,得到最终结果.这里, 一个寄存器可以存放2个16 b的系数,相当于二并行加速.

5.3 加解密并行优化处理

本节中论述了多项式压缩与序列化在ARM Cortex-M4上的优化方案.优化时考虑的要素主要为:

1) 调整算式结构以尽可能结合运算过程,减少所需指令的数目;

2) 尽量在一个系数存在于寄存器的整个生命周期内进行尽可能多的运算操作,以减少load与store指令的开销.

为了达成这2个目标,需要在效率与寄存器容量2个指标之间权衡折衷.加密中将秘密消息编码、多项式压缩与序列化结合,即为算法2中的行⑦⑨,c2Compressq(v+Decompressq(msg,dm),dv);在解密中结合多项式反序列化、解压缩与消息解码,即算法3中的行③④,从而得到解密后消息msgCompressq(Decompressq(c2),σ).进而,本文结合除法运算转换法,对该运算顺序进行调整,使得DSP指令集中一些复合运算指令得以运用.优化后对单个位加密的核心过程见图3,解密核心过程如图4所示.

Fig. 3 Implementation of encryption on ARM Cortex-M4
图3 ARM平台加密核心步骤实现

Fig. 4 Implementation of decryption on ARM Cortex-M4
图4 ARM平台解密核心步骤实现

这里加解密实现中均需对多项式进行预处理,通过指令pkhbt与pkhtb将σk同一索引位的系数封装入一个32 b的寄存器.继而,在加密中使用指令smuad与mla,解密中使用指令smlsd与mul以完成核心运算.此外,实现中还使用了位运算指令bfi与orr,已实现寄存器中位的提取与比特流的拼接.

5.4 存储空间及栈空间优化

嵌入式设备上存储空间是一重要瓶颈,算法空间使用情况也决定了其能否实际部署.考虑到这一要素,本文在保持性能尽可能不受影响的情况下,采取on-the-fly[22]计算与空间复用等优化思想,减小代码大小以及运行所需栈空间.本文对Aigis-enc-768的优化中以堆栈使用和速度为主要指标,同时保持代码大小的合理性.

5.4.1 栈空间资源复用

在Aigis-enc-768原始实现中,对方案涉及的所有元素都申请了空间,并且分别对其进行采样、存储.考虑到该运算的线性特性,各对多项式之间的乘法以及多项式内各系数的乘法均互相独立,内存中不需要同时存在多个多项式.由此,本文在实现中减少了空间申请,通过空间复用的方式完成多个多项式运算.具体来说,对于密钥生成和密钥封装,申请一个多项式变量与一个多项式向量变量,对于密钥解封装,申请2个多项式变量,每个多项式的运算都在此空间上进行,得到结果后即存入对应的密钥或密文位置.

环上采样空间优化

基于模格的密钥封装方案在密钥生成与密钥封装中都包含A·s的核心运算,对此运算进行充分优化有利于降低代码运行空间需求.如3.3节所述,经过数论变换后1个多项式由128个一次多项式组成,它们之间的点乘互相独立,所以执行一次点乘仅需要一次多项式ai+ai+1xsi+si+1x相关的4个系数ai,ai+1,sisi+1,这就意味着矩阵A的系数可以需要时再采样,而不用全部生成后再读取.详细地说,由种子ρ扩展得到字节流后,一次只采样2个符合条件的系数,与s中的2个系数点乘,并存储回s的相应位置,从而省略了存储矩阵A所用的空间.

与之相同的还有噪音的采样.原始实现中,噪音采样函数输入为字节流,输出为服从中心二项分布的多项式.采用on-the-fly计算优化思想[22],噪音采样函数输入调整为字节流和多项式,每次采样噪音后即与输入多项式对应位置的系数相加,而不用再进行存储.但是这种方法也意味着不能对噪音多项式进行数论变换(因为NTT作用对象为一个完整的多项式),从而t′的计算方式由t′=AT-NTT(s)+T-NTT(e)调整为t′=T-NTT(T-NTT-1(AT-NTT(s))+e).这样会引入一个额外的NTT-1的消耗.在ARM Cortex-M4平台上,这意味着需要增加6944时钟周期,约占总运行时间的0.3%,但是可以节省矩阵A与多项式s,e共7 680 B的栈存储空间,权衡二者这样的消耗是值得的.

6 实验结果与性能比较

6.1 测试环境

本文针对Aigis-enc密钥分装机制设计了AVX2与ARM Cortex-M4的优化方案,并于Aigis-enc-768算法上实现验证.本节介绍了2个平台的代码测试环境.

1) AVX2测试环境:本文进行AVX2测试的硬件环境为3.6 GHz的八核Intel Core i7-9700K和32 GB内存,且关闭了处理器的睿频加速技术(Turbo Boost)和硬件多线程技术(Hardware Multi-Threading);软件环境为macOS Big Sur 11.1操作系统与Apple clang 12.0.0.31.1编译器.使用的编译参数为-Wall -Wextra -Wpedantic -Wmissing-prototypes -Wredundantdecls -Wshadow -Wpointer-arith -mavx2 -mbmi2 -mpopcnt maes -march=native -mtune=native -O0 -fomit-frame-pointer -fno-stack-check.

2) ARM Cortex-M4测试环境:本文使用带有ARMv7E-M 指令集的STM32F4DISCOVERY开发板为测试平台,其内存为196 KB,闪存为1 MB,且最大频率为168 MHz.

本文采用CPU周期数作为衡量算法效率的标准,AVX2代码测试的CPU周期数为对应的函数执行10 000次后所得结果的中位数,ARM Cortex-M4上的结果为执行100次后的中位数.

6.2 AVX2实现性能比较

图5与图6为Aigis-enc与本文AVX2实现效率的对比,其具体数值分别如表1所示.

Fig. 5 Comparisons of polynomial compression and serialization betweenAigis-enc and our work
图5 多项式压缩与序列化AVX2实现对比

Fig. 6 Comparisons of Aigis-enc and our work in AVX2 implementations
图6 Aigis-enc与本文工作AVX2实现效率对比

图5为多项式压缩和序列化速度的比较,其中,压缩位数d=4的情形用于密文c中第2部分c2的生成,即计算c2Compressq(v+k,d),d=9用于生成密文的第一部分,即c1Compressq(u,d).本文设计中采取的方案性能将原始提升了97.9%和94.7%,相当于对原过程有47倍和19倍的加速.

图6是Aigis-enc与本文工作AVX2实现效率对比.如表1中时钟周期数所示,本文工作将密钥生成函数提升23.62%,密钥封装函数提升23.56%,密钥解封装函数提升27.74%,在总性能上体现为25.00%的加速,彰显了本文优化设计方案的作用效果.

Table 1 Comparisons of Each Function of Aigis-enc and Our Work in AVX2 Implementations
表1 Aigis-enc与本文工作AVX2实现效率比较

测试函数Aigis-enc∕时钟周期本文工作∕时钟周期优化率∕%序列化反序列化d=4915219697.9d=91098858494.7d=4529819296.4d=9552025095.5密钥生成72545455410523.62密钥封装80074061211023.56密钥解封装78999057080927.74总性能2316184173702425.00

表2为Aigis-enc与本文AVX2实现NTT预计算表存储量的对比.在q=7 681下,为了适配AVX2指令实现,Aigis-enc扩展的预计算表总共需要3 008 B存储空间,而本文工作仅需1 584 B,减少了47.34%的存储.

Table 2 Comparison of Precomputed Table Storage Between Aigis-enc and Our AVX2 Implementation
表2 Aigis-enc与本文AVX2实现NTT预计算表 存储量对比

预计算变量存储量∕BAigis-enc本文工作优化率∕%ξ1504792ξ-11504792总存储3008158447.34

6.3 ARM实现性能与空间测试

鉴于目前Aigis-enc仅提供了AVX2实现,且尚未有ARM平台或C参考实现方案,这里仅给出本文优化前后STM32F4DISCOVERY开发板上的实验测试结果来对比,如图7所示,具体数值如表3所示.其中,优化前的算法为根据Aigis-enc原始实现自主修改的C实现.

Fig. 7 Comparison of implementation before and after optimization of Aigis-enc on ARM platform
图7 ARM平台Aigis-enc优化前后实现效率对比

Table 3 Comparisons of Each Function of Aigis-enc and Our Work on ARM Cortex-M4 Platform

表3 Aigis-enc各函数与本文工作在ARM Cortex-M4平台上实现效率对比

测试函数优化前∕时钟周期优化后∕时钟周期优化率∕%密钥生成128694492083828.45密钥封装1664934111950432.76密钥解封装1822945109591739.88总性能4774823313625934.32

在栈空间占用上,原始实现密钥生成、密钥封装及密钥解封装分别占据10.8 KB,14.1 KB与15.3 KB,优化后达到3.3 KB,2.9 KB与3.0 KB,总体上有3.4倍的提升,如表4所示:

Table 4 Menory Evaluation of Aigis-enc and Our Work on ARM Cortex-M4 Platform
表4 Aigis-enc与本文工作在ARM Cortex-M4 平台上存储量测试

测试函数存储占用∕KB优化前优化后优化率∕%密钥生成10.83.369.44密钥封装14.12.979.43密钥解封装15.33.080.39总性能40.29.277.11

可见,采取改进的模约减算法、多项式乘法等优化方案,可大幅度提高ARM Cortex-M4上的实现效率.

7 总 结

本文给出了一种针对Aigis-enc算法的高效AVX2与ARM Cortex-M4实现方案,并选用Aigis-enc-768参数集进行实现验证.该实现方案在模约减、多项式乘法、序列化与反序列化等方面对Aigis-enc原始实现进行优化,同时大幅减少了代码尺寸、运行堆栈空间占用与预计算表存储需求,提升了算法总体性能,使其更易于实际部署,具有非常大的实际应用价值.

参考文献

[1]Biance L Z. Google achieves “quantum hegemony”[J]. The Windy Generation, 2019, 2019(33): 40-41

[2]Yang C H, Leon R CC, Hwang J C C, et al. Operation of a silicon quantum processor unit cell above one kelvin[J]. Nature, 2020, 580(7803): 350-354

[3]Zhong Youpeng, Chang H S, Bienfait A, et al. Deterministic multi-qubit entanglement in a quantum network[J]. Nature, 2021, 590(7847): 571-575

[4]NIST. Digital Signature Standard (DSS)[S]. Gaithersburg: NIST, 2013

[5]NIST. Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography[S]. Gaithersburg: NIST, 2018

[6]NIST. Recommendation for Pair-Wise Key-Establishment Schemes Using Integer Factorization Cryptography[S]. Gaithersburg: NIST, 2019

[7]Shor P W. Algorithms for quantum computation: Discrete logarithms and factoring[C] //Proc of the 35th Annual Symp on Foundations of Computer Science. Piscataway, NJ: IEEE, 1994: 124-134

[8]NIST. Post-Quantum cryptography call for proposals[EB/OL]. (2017-01-03)[2021-05-01]. https://csrc.nist.gov/Projects/post-quantum-cryptography/post-quantum-cryptography-standardization/Call-for-Proposals

[9]Chinese Association for Cryptologic Research. Public key algorithms selected to thesecond round competition of national cryptographic algorithm competitions[EB/OL]. (2019-09-27)[2021-05-01]. http://sfjs.cacrnet.org.cn/site/term/list_77_1.html (in Chinese)(中国密码学会. 全国密码算法设计竞赛进入第2轮公钥算法[EB/OL]. (2019-09-27)[2021-05-01]. http://sfjs.cacrnet.org.cn/site/term/list_77_1.html)

[10]NIST. Post-Quantum cryptography round 3 submissions[EB/OL]. (2020-07-22)[2021-05-01]. https://csrc.nist.gov/Projects/post-quantum-cryptography/round-3-submissions

[11]Micciancio D, Regev O. Worst-case to average-case reductions based on Gaussian measures[J]. SIAM Journal on Computing, 2007, 37(1): 267-302

[12]Zhang Jiang, YuYu, Fan Shuqin, et al. Tweaking the asymmetry of asymmetric-key cryptography on lattices: KEMs and signatures of smaller sizes[J]. IACR Cryptol, ePrint Arch, 2019: No.510

[13]Zhang Jiang, YuYu, Fan Shuqin, et al. Supporting documentation of Aigis-enc[EB/OL]. (2019-09-27)[2021-05-01]. http://sfjs.cacrnet.org.cn/upload/5-db41c5175e9c.zip

[14]Ajtai M. Generating hard instances of lattice problems[C] //Proc of the 28th Annual ACM Symp on Theory of Computing. New York: ACM, 1996: 99-108

[15]Regev O. On Lattices, Learning with Errors, Random LinearCodes,and Cryptography[J]. Journal of the ACM, 2009, 56(6): 1-34

[16]Nejatollahi H, Dutt N, Ray S, et al. Post-Quantum Lattice-Based Cryptography Implementations: A Survey[J]. ACM computing surveys, 2019, 51(6): 1-129

[17]Alkim E, Ducas L, Pöppelmann T, et al. Post-quantum key exchange—A new hope[C] //Proc of the 25th USENIX Security Symp (USENIX Security 16). Berkeley, CA: USENIX Association, 2016: 327-343

[18]Avanzi R, Bos J, Ducas L, et al. Supporting documentation: CRYSTALS-Kyber: Algorithm specifications and supporting documentation[EB/OL]. (2017-12-21)[2021-05-01]. https://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/round-1/submissions/CRYSTALS_Ky-ber.zip

[19]Bos J,Ducas L, Kiltz E, et al. CRYSTALS-Kyber: a CCA-secure module-lattice-based KEM[C] //Proc of 2018 IEEE European Symp on Security and Privacy (EuroS&P). Piscataway, NJ: IEEE, 2018: 353-367

[20]Avanzi R, Bos J, Ducas L, et al. Supporting documentation: CRYSTALS-Kyber: Algorithm specifications and supporting documentation (version 2.0)[EB/OL]. (2019-01-30)[2021-05-01]. https://csrc.nist.gov/CSRC/media/Pro-jects/Post-Quantum-Cryptography/documents/round-2/submissions/CRYS-TALS-Kyber-Round2.zip

[21]Kannwischer M J, Rijneveld J, Schwabe P, et al. pqm4: Testing and Benchmarking NIST PQC on ARM Cortex-M4[R]. Gaithersburg: CSRC, 2019

[22]Alkim E, Bilgin Y A, Cenk M, et al. Cortex-M4 optimizations for {R, M} LWE schemes[J]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2020, 2020(3): 336-357

[23]Lindner R,Peikert C. Better key sizes (and attacks) for LWE-based encryption[C] //Proc of the Cryptographers’ Track at the RSA Conf. Berlin: Springer, 2011: 319-339

[24]Fujisaki E, Okamoto T. Secure integration of asymmetric and symmetric encryption schemes[C] //Proc of the Annual International Cryptology Conf. Berlin: Springer, 1999: 537-554

[25]Barrett P. Implementing the Rivest Shamir and Adleman public key encryption algorithm on a standard digital signal processor[C] //Proc of the Conf on the Theory and Application of Cryptographic Techniques. Berlin: Springer, 1986: 311-323

[26]Seiler G. Faster AVX2 optimized NTT multiplication for Ring-LWE lattice cryptography[J]. IACR Cryptol, ePrint Arch, 2018: No.39

[27]Gueron S, Schlieker F. Speeding up R-LWE post-quantum key exchange[C] //Proc of the Nordic Conf on Secure IT Systems. Berlin: Springer, 2016: 187-198

Multi-Platform Efficient Implementation and Optimization of Aigis-enc Algorithm

Shen Shiyu, He Feng, and Zhao Yunlei

(School of Computer Science, Fudan University, Shanghai 200433)

Abstract The new challenges brought by the rapid development of quantum computing technology have made post-quantum cryptography (PQC) a hot research topic in the current cryptographic community. The Aigis-enc key encapsulation mechanism is a post-quantum cryptographic algorithm based on the asymmetric module learning with errors (A-MLWE) problem, which is one of the algorithms that won the first prizes of public key cryptographic algorithms in the National Cryptographic Algorithm Design Competition held by the Chinese Association for Cryptologic Research. In order to resist quantum attacks, maintain the long-term security of national cyberspace, and contribute to the development of future national PQC algorithm standards, it is important to optimize the excellent post-quantum cryptographic algorithms developed by Chinese scholars. In this paper, we focus on optimizing the Aigis-enc algorithm for different platforms, including fast parallel implementation for high-performance platforms and compact implementation for embedded low-power platforms. Specifically, we fully optimize the existing AVX2 implementation of Aigis-enc using single instruction multiple data stream (SIMD) instructions, and provide its first lightweight compact implementation for the ARM Cortex-M4 platform. Our implementation includes the following optimizations: reducing the number of assembly instructions for Montgomery and Barrett reduction to improve the efficiency of reduction; using number theoretic transformations with trimmed layers and optimized instruction pipelining to speed up polynomial multiplication and reduce the precomputed table storage; providing a parallel implementation of assembly instructions for polynomial serialization and deserialization to speed up the processes of encoding, decoding and encryption; combining on-the-fly computation and space multiplexing to optimize the algorithm storage space. The experimental results show that the proposed optimization techniques can improve the original AVX2 implementation of the Aigis-enc-768 algorithm by 25% on an 8-core Intel Core i7 processor, and significantly reduce its precomputed table storage, code size and stack usage on the ARM Cortex-M4 platform, which is of great practical importance for future deployment of the algorithm.

Key words post-quantum cryptography; lattice cryptography; key encapsulation mechanism; AVX2 parallel optimization; embedded lightweight implementation

收稿日期2021-06-10;修回日期: 2021-08-12

基金项目国家自然科学基金项目(U1536205,61472084);国家重点研发计划项目(2017YFB0802000);上海市科技创新行动计划项目(16DZ1100200);上海市科学技术发展基金项目(16JC1400801);山东省重点研发计划项目(2017CXG0701,2018CXGC0701)

This work was supported by the National Natural Science Foundation of China (U1536205, 61472084), the National Key Research and Development Program of China (2017YFB0802000), Shanghai Science and Technology Innovation Development Program (16DZ1100200), Shanghai Science and Technology Development Funds (16JC1400801), and the Key Research and Development Program of Shandong Province(2017CXG0701, 2018CXGC0701).

(syshen19@fudan.edu.cn)

中图法分类号 TP391

Shen Shiyu, born in 1997. PhD candidate. Her main research interests include lattice-based cryptography and cryptographic engineering.

沈诗羽,1997年生.博士.主要研究方向为基于格的密码和密码工程.

He Feng,born in 1998. Master candidate. His main research interests include post-quantum cryptography and cryptographic engineering. (20210240069@fudan.edu.cn)

何 峰,1998年生.硕士研究生.主要研究方向为后量子密码和密码工程.

Zhao Yunlei, born in 1974. PhD, distinguished professor at Fudan university. His main research interests include post-quantum cryptography, cryptographic protocols, theory of computing. (ylzhao@fudan.edu.cn)

赵运磊,1974年生.博士,复旦大学特聘教授.主要研究方向为后量子密码、密码协议和计算理论.