CN116366248B - 基于紧凑指令集扩展的Kyber实现方法及系统 - Google Patents

基于紧凑指令集扩展的Kyber实现方法及系统 Download PDF

Info

Publication number
CN116366248B
CN116366248B CN202310631631.2A CN202310631631A CN116366248B CN 116366248 B CN116366248 B CN 116366248B CN 202310631631 A CN202310631631 A CN 202310631631A CN 116366248 B CN116366248 B CN 116366248B
Authority
CN
China
Prior art keywords
result
polynomial
transformation
multiplication
butterfly
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310631631.2A
Other languages
English (en)
Other versions
CN116366248A (zh
Inventor
王伟嘉
李璐
秦国峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN202310631631.2A priority Critical patent/CN116366248B/zh
Publication of CN116366248A publication Critical patent/CN116366248A/zh
Application granted granted Critical
Publication of CN116366248B publication Critical patent/CN116366248B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及密钥封装技术领域,本发明公开了基于紧凑指令集扩展的Kyber实现方法及系统,包括:第一客户端通过多项式乘法和多项式加法,生成公钥和私钥,并将公钥发送至第二客户端;第二客户端使用公钥将明文加密为密文;第一客户端通过多项式乘法和多项式减法,得到明文;其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储。平衡了扩展指令集的硬件资源开销和Kyber算法实现速度。

Description

基于紧凑指令集扩展的Kyber实现方法及系统
技术领域
本发明涉及密钥封装技术领域,具体的说,是涉及基于紧凑指令集扩展的Kyber实现方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
Kyber是一种密钥封装方法,其安全性建立在解决模块格上的带错误学习问题的难度上。经过三轮筛选,Kyber在美国国家标准研究院(NIST,National Institute ofStandards and Technology)启动的后量子算法竞赛中成功入围候选标准算法,之后对Kyber算法的高效实现方法进行了广泛研究。
现在已有的Kyber的数论变换中的模乘运算都是基于蒙哥马利约化算法(Montgomery Reduction)或巴瑞特约化算法(Barrett Reduction)的,这两个约化算法中包括两个相对较大的因数的乘法,这些大因数的乘法在硬件电路中会消耗较多的硬件资源。
发明内容
为了解决上述背景技术中存在的技术问题,本发明提供基于紧凑指令集扩展的Kyber实现方法及系统,使用蝴蝶变换来计算Kyber的正向数论变换和逆向数论变换,平衡了扩展指令集的硬件资源开销和Kyber算法实现速度。
为了实现上述目的,本发明采用如下技术方案:
第一方面,本发明提供了基于紧凑指令集扩展的Kyber实现方法;
基于紧凑指令集扩展的Kyber实现方法,应用于第一客户端,包括:
通过多项式乘法和多项式加法,生成公钥和私钥,并发送公钥,接收通过所述公钥加密明文得到的密文;
基于所述密文和所述私钥,通过多项式乘法和多项式减法,得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储。
进一步地,所述多项式乘法的实现过程为:对两个环上多项式分别进行过正向数论变换后,采用所述蝴蝶变换进行数论变换域上的乘法运算,并对计算结果进行逆向数论变换。
进一步地,所述正向数论变换中,采用一次扭转技术。
进一步地,所述数论变换域上的乘法运算中,通过比特位的交换完成系数的交换。
进一步地,所述正向数论变换前,通过若干条交换系数指令,保证进行正向数论变换的系数对在同一个寄存器中;
或者,所述逆向数论变换前,通过若干条交换系数指令,保证进行逆向数论变换的系数对在同一个寄存器。
第二方面,本发明提供了基于紧凑指令集扩展的Kyber实现方法;
基于紧凑指令集扩展的Kyber实现方法,应用于第二客户端,包括:
获取公钥和明文;
基于公钥和明文,通过多项式乘法和多项式加法,得到密文,并发送;
其中,发送出的密文,通过多项式乘法和多项式减法,采用私钥解密得到明文;所述多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储。
第三方面,本发明提供了基于紧凑指令集扩展的Kyber实现方法;
基于紧凑指令集扩展的Kyber实现方法,包括:
第一客户端通过多项式乘法和多项式加法,生成公钥和私钥;
第二客户端获取公钥和明文,通过多项式乘法和多项式加法,得到密文;
第一客户端获取所述密文,并结合所述私钥,通过多项式乘法和多项式减法,得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储。
第四方面,本发明提供了基于紧凑指令集扩展的Kyber实现系统;
基于紧凑指令集扩展的Kyber实现系统,包括第一客户端和第二客户端;
所述第一客户端,用于通过多项式乘法和多项式加法,生成公钥和私钥;
所述第二客户端,用于获取公钥和明文,通过多项式乘法和多项式加法,得到密文;
所述第一客户端,还用于获取所述密文,并结合所述私钥,通过多项式乘法和多项式减法,得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储。
第五方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,该程序被处理器执行时实现如上述第一方面或第二方面所述的基于紧凑指令集扩展的Kyber实现方法中的步骤。
第六方面,本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面或第二方面所述的基于紧凑指令集扩展的Kyber实现方法中的步骤。
与现有技术相比,本发明的有益效果是:
本发明提供了基于紧凑指令集扩展的Kyber实现方法,其使用蝴蝶变换来计算Kyber的正向数论变换和逆向数论变换来平衡扩展指令集的硬件资源开销和Kyber算法实现速度。
本发明提供了基于紧凑指令集扩展的Kyber实现方法,其与原始的k 2约化算法相比,广义的k 2约化的GE值更小,输出范围更小,意味着更少的资源开销就可将结果约化到其标准表示。
附图说明
构成本发明的一部分说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的限定。
图1是本发明实施例一的GS-butterfly的原理图;
图2是本发明实施例一的GS-butterfly的电路图;
图3(a)是本发明实施例一的GS-butterfly的整体运算图;
图3(b)是本发明实施例一的基于GS-butterfly的模乘运算图;
图3(c)是本发明实施例一的基于GS-butterfly的模加运算图;
图3(d)是本发明实施例一的基于GS-butterfly的模减运算图;
图4是本发明实施例一的交换系数示例图;
图5是本发明实施例一的一个4层的合并数论变换示例图;
图6是本发明实施例一的自定制GS-butterfly和交换系数指令的格式示例图;
图7是本发明实施例一的采用GS-butterfly和实现正向数论变换和逆向数论变换的示例图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合下面结合附图与实施例对本发明作进一步说明。
术语解释:
Kyber算法:是基于MLWE(Module Learning With Errors)困难问题的密钥封装机制(KEM,Key Encapsulation Mechanism)。它的核心是一个IND-CPA(Indistinguishability under Chosen-Plaintext Attack,选择明文攻击下的不可区分性)安全的公钥加密(PKE,Public Key Encryption)方案Kyber.PKE,通过FO(Fujisaki-Okamoto)转换,可以将其转换为IND-CCA2(Indistinguishability under Chosen-Ciphertext Attack,选择密文攻击下的不可区分性)安全的密钥封装(Key EncapsulationMechanism,KEM)机制Kyber.KEM。
RISC-V:是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),V表示为第五代RISC。
实施例一
本实施例一的目的是提供基于紧凑指令集扩展的Kyber实现方法。
公钥加密方案Kyber.PKE包括以下步骤:
步骤1、密钥生成(key-generation)阶段:第一客户端生成公钥pk和私钥sk
具体地,首先第一客户端生成一个系数矩阵,系数矩阵中的每一个元素都是环R q上的一个多项式;接着使用CBDη函数生成服从中心二项分布(CBD,CenteredBinomial Distribution)CBDη1的向量s和e,,向量s和e中的每个元素是环R q上的一个多项式,且系数都比较小;最后基于系数矩阵A、向量s和e,通过多项式乘法和加法计算向量t=As+e,公钥pk是编码后的t,私钥sk是编码后的s,将公钥发送至第二客户端。
步骤2、加密(encryption)阶段:第二客户端利用公钥pk加密信息M,得到密文c
具体地,首先第二客户端从公钥pk中解码得到t,接着生成系数矩阵、符合中心二项分布的小系数向量r和e1、以及小系数多项式e 2,其中,,r服从分布CBDη1,e1e 2服从分布CBDη2;然后通过多项式乘法和加法计算向量u=ATr+e1v=tTr+e 2+M,密文c是编码后的u和编码后的v的级联,并将密文c发送至第一客户端。
步骤3、解密(decryption)阶段:第一客户端利用私钥sk解密密文c,得到M
具体地,首先第一客户端从密文c中解码得到u和v,从私钥sk中解码得到s,通过多项式乘法和减法计算M=v-sTu来得到M
其中,R q为模qX n+1的多项式环,即多项式的每个系数都模q且多项式的最高次数为n+1,Z q为模整数q的环,Z q[X]为模整数q的多项式环,即多项式的每个系数都模qn=256,q=3329,η 2=2,η 1的取值随着不同的安全级别而变化,在Kyber512、Kyber768和Kyber1024中η 1的取值分别为3、2和2,的取值分别为2、3和4,因此Kyber的系数所在的多项式环为
Kyber的密钥生成阶段、加密阶段和解密阶段需要计算大量的多项式乘法,本实施例提高了多项式乘法的速度,从而对Kyber的整体实现达到了很好的加速效果。
Kyber中环上多项式ab的乘积的计算过程包括:
步骤(1)对两个环上多项式ab分别进行过正向数论变换(Number TheoreticTransform,NTT)变换,将有限域上的多项式系数映射到NTT域中。
在Kyber中,q=3329,n=256,在环上只有256阶的单位根,没有512阶的单位根。
以多项式a为例环上多项式,其中a i为多项式a的系数,经过7层正向数论变换后被映射为128组NTT域上的2项多项式,即,这些2项多项式的最高次数为1次,如:
其中:
其中,表示映射,a 2j的多项式表示中的第2j项系数,br 7(i)是无符号7位整数i的位反转,是正向数论变换中的旋转因子,它是n阶单位根ζ n的(2br 7(i)+1)j次方;在Kyber上,它就是256阶单位根ζ 256的(2br 7(i)+1)j次方。
步骤(2)进行NTT域上的乘法运算。
NTT域上的乘法运算需要计算:
上式是一个2项×2项的乘法而不是点乘,其中,a的一组NTT域上的2项多项式中的系数,b的一组NTT域上的2项多项式中的系数。
本实施例中,使用自定制指令进行NTT域上的乘法运算。通过自定制的交换系数指令(swapll指令和swaphh指令)交换寄存器中的高16比特和低16比特,把操作数正确配对以便于后续计算;其中,“swaphh, rd, rs1, rs2”表示将rs1的高16比特放在rd的高16比特,把rs2的高16比特放在rd的低16比特;“swapll, rd, rs1, rs2”表示将rs1的低16比特放在rd的高16比特,将rs2的低16比特放在rd的低16比特。使用自定制的butterfly指令(GS-butterfly指令,以下简称butterfly(蝴蝶变换)指令或蝴蝶变换)完成模乘计算和模加计算。具体的:
NTT域上的乘法运算的输入包括:寄存器a存储的,‖表示级联,即,放在寄存器a的低16比特,放在寄存器a的高16比特;寄存器b存储的,即,放在寄存器b的低16比特,放在寄存器b的高16比特;寄存器c存储旋转因子ζ,,即,寄存器c的高16比特用0填充;
NTT域上的乘法运算的输出包括:
NTT域上的乘法运算的步骤包括:
1)、swapll t0,x0,a,即;x0表示32比特全为0的变量;
2)、swaphh a,x0,a,即
3)、swapll t1,x0,b,即
4)、swaphh b,x0,b,即
5)、butterfly t2,t0,b,即
6)、butterfly t3,a,t1,即
7)、swaphh t2,t2,t3,即
8)、butterfly t2,t2,x0,即
9)、butterfly b,b,c,即
10)、swaphh b,x0,b,即
11)、butterfly b,b,a,即,
12)、butterfly t0,t0,t1,即
13)、swaphh b,b,t0,即
14)、butterfly b,b,x0,即
15)、swapll d,t2,b,即,
步骤(3)对计算结果d进行逆向数论变换来获得有限域上的多项式乘积结果。
在步骤(1)的正向数论变换中应用一次扭转技术(twisting)。具体地,扭转技术利用映射Z q[X]/[X n+1]映射到Z q[X]/[X n-1],ζ 2n是一个2n次的单位根,(ζ 2n)n=-1 modq;利用扭转技术可以将Z q[X]/[X n+1]上的负循环数论变换(negacyclic NTT)运算映射到Z q[X]/[X n-1]上的循环数论变换(cyclic NTT)运算;如图7所示,环Z q[X]/[X 8+1]上有8个系数a ii=0,…,7,a i经过正向数论变换后在NTT域上的值,ζ 16是一个16阶的单位根,ζ 16 i和是ζ 16i次方,ζ 8是一个8阶的单位根,ζ 8 iζ 8i次方;为了在正向数论变换和逆向数论变换中只使用GS-butterfly,应用twisting技术,将Z q[X]/(X 8+1)上的系数乘上ζ 16 i,将系数映射到Z q[X]/(X 8-1)上;这样,正向数论变换是负循环数论变换,逆向数论变换是循环数论变换;这种负循环数论变换和循环数论变换混合使用的策略只需要在正向数论变换中应用一次twisting技术。如果在Z q[X]/(X 8+1)上采用纯循环数论变换,需要在正向数论变换之前和逆向数论变换之后分别应用一次twisting技术,一共需要两次twisting技术。因此,跟纯循环数论变换(cyclic-NTT)相比,本实施例节约了一次twisting技术,即节约了2nZ q[X]/(X n+1)上的模乘。
本实施例使用GS-butterfly来计算Kyber的正向数论变换和逆向数论变换来平衡扩展指令集的硬件资源开销和Kyber算法实现速度。Kyber算法的说明文档中正向数论变换使用CT-butterfly,逆向数论变换使用GS-butterfly,如果自定制这两个指令,那么将需要额外的硬件资源来实现CT-butterfly的功能,本实施例中,只用定制一个GS-butterfly,就对资源和速度做了很好的平衡。
本实施例中,在RISC-V核上集成了自定制的GS-butterfly指令和交换系数指令(swapll指令和swaphh指令);GS-butterfly可以完成GS-butterfly操作和算术模运算操作;“butterfly rd, rs1, rs2”表示完成rs1中存储的系数和rs2中存储的旋转因子之间的蝴蝶变换,并将结果存储到目的寄存器rd中;详细地说,两个系数a 0a 1级联放在寄存器rs1中,;旋转因子ζ放在寄存器rs2中,剩下的16比特用0填充,;经过“butterfly rd, rs1, rs2”,目标寄存器rd中存储以及。自定制的两个交换系数指令swaphh和swapll完成寄存器中系数的交换;如图6所示,“swaphh rd,rs1,rs2”表示将rs1的高16比特放在rd的高16比特,把rs2的高16比特放在rd的低16比特;“swapll rd,rs1,rs2”表示将rs1的低16比特放在rd的高16比特,将rs2的低16比特放在rd的低16比特。
在采用数论变换来计算Kyber中环上多项式ab的乘积时,正向数论变换(NTT)和逆向数论变换(NTT -1)都采用GS-butterfly,GS-butterfly由加法、减法和乘法组成,如图1所示。
GS-butterfly的输入为:a 0a 1,ζ;Kyber中的素数q=3329,它是一个12比特的数,两个输入的系数a 0a 1被打包放在同一个32位的寄存器a(源寄存器之一,即图2中的SRC1)中,分别置于寄存器a的高半部分SRC1[15:0]和低半部分SRC1[31:16],旋转因子ζ放置在寄存器b(源寄存器之一,即图2中的SRC2)中。
如图2所示,GS-butterfly的输出为:b 0=(a 0+a 1) modqb 1=(a 0-a 1)ζ modq,并将输出结果b 0b 1放在寄存器b(目的寄存器)中,即
如图2所示,GS-butterfly的计算步骤包括:
①、将a 0a 1的和(add)作为第一结果b 0,即
②、将a 0a 1的差(sub)赋值给t 0,即
③、将a 0a 1的差t 0通过一个数据选择器mux,映射到标准值,即;其中,mux是将整数映射到其标准表示的操作,通过数据选择器实现;
④、对旋转因子ζ和差的标准值t 0进行mul运算(乘法运算),得到乘积t 1,即
⑤、通过广义的k 2约化(k 2-reduction),对乘积t 1进行模约化,得到第二结果b 1,即
⑥、第一结果通过一个数据选择器mux被映射到标准表示值,第一结果的标准表示值为add_res,add_res为需要计算的(a 0+a 1)modq,即
⑦、第二结果通过一个数据选择器mux被映射到标准表示值,第二结果的标准表示值为sub_res,sub_res为需要计算的(a 0-a 1)ζmodq
⑧、b 0b 1被同时打包放置在目的寄存器b中,即,add_res被放置在低16比特,sub_res被放置在高16比特,且输出系数b 0b 1的范围是[0,q)。
将蝴蝶变换的输出b 0b 1约化到其标准表示的一个好处是NTTNTT -1变换的中间值不会一层一层地增长,因此中间值不会溢出,不需要额外的约化算法来限制中间值的大小;另一个好处是一条指令可以实现多个算术运算,如图3(a)、图3(b)、图3(c)和图3(d)所示,图3(b)说明当a 1为0时,蝴蝶变换指令的输出系数b 1a 0ζ的模乘结果,即b 1=a 0·ζ;图3(c)说明蝴蝶变换指令的输出系数b 0是两个输入系数a 0a 1的模加结果,即b 0=a 0+a 1;图3(d)说明当ζ为1时,蝴蝶变换指令的输出系数b 1是两个输入系数a 0a 1的模减结果,即b 1=a 0-a 1。本实施例的自定制指令,不仅可以完成GS-butterfly,经过适当的参数选择,还可以完成模乘、模加和模减运算;Kyber的实现中,密钥生成、加密和解密中的多项式加减法可以由自定制的GS-butterfly指令加速实现。
在步骤(1)和步骤(3)的每层正向数论变换或逆向数论变换前,通过若干条交换系数指令(swap)(即swapll和swaphh指令),保证进行下一层正向数论变换或逆向数论变换的系数对在同一个寄存器中,以及进行GS-butterfly的系数对在同一个寄存器中。
使用自定制指令后,在主存和寄存器之间传递系数的加载(load)和存储(store)操作是数论变换的主要性能瓶颈。为了解决这个问题,合并数论变换层(merging NTT)的方法应运而生,它在寄存器中保留尽可能多的系数,完成尽可能多的层数的数论变换后再将结果写回内存,而不是仅完成一层数论变换后就将结果写回内存。Kyber中多项式的系数均小于16比特,为了进一步减少加载和存储操作的数量,可以用指令lw将两个连续的系数从内存加载到一个寄存器中,用指令sw将两个系数从一个寄存器写回连续的内存中。
自定制的GS-butterfly指令需要将一对正确的系数(进行GS-butterfly的系数对)存储在同一个寄存器中,为了顺利利用合并数论变换层方法,需要定制交换系数指令(swap)来保证正确系数对在同一个寄存器中。交换系数指令的原理如图4所示,a 0a 1a 2a 3是合并2层数论变换中的4个系数,(a 0,a 1)和(a 2,a 3)是完成第一层数论变换的正确系数对,完成蝴蝶变换后的结果依然写入(a 0,a 1)和(a 2,a 3),则进行第二层数论变换的正确系数对应该是(a 0,a 2)和(a 1,a 3),因此,a 1a 2应该如图4所示交换位置。交换系数操作将两个寄存器中的16位整数进行重新排列,以便于数论变换中正确的系数对存储在同一寄存器中,硬件实现中的交换系数操作只是简单的位排列。
图5是应用合并数论变换层技术和交换系数指令的一个示例。在该示例中,两个系数在主存中存储于连续的32位,16个系数完成4层数论变换,8条lw指令就可以将这16个系数从主存中加载到8个32位寄存器中。例如,a 0a 1表示主存中连续的两个系数,a 0a 1可以通过1条lw指令加载到1个寄存器中,a 0a 8是数论变换中的一个正确系数对,通过交换系数指令可以将a 0a 8存储在一个寄存器中,曲线连接的两个系数需要通过交换系数指令进行交换,以便将正确系数对存放在一个寄存器中。
开始时,16个系数a 0,a 1,a 2,…,a 15,按照主存中的顺序被加载到寄存器中;接着,利用自定制交换系数指令来准备第一层数论变换需要的正确系数对,正确系数对格式是(a i,a i+8),i=0,1,…,7;经过第一层的GS-butterfly(1stlayer)后,按照第二层数论变换正确系数对的格式,(a i,a i+4),i=8m+n,m=0,1,n=0,1,2,3,准备正确系数对;同样,第三层数论变换正确系数对的格式是(a i,a i+2),i=4m+n,m=0,1,2,3,n=0,1;第四层数论变换中正确系数对的格式是(a i,a i+1),i=2m,m=0,1,2,…,7;第四层数论变换结束后,使用8个sw指令将结果写回主存中。数论变换中需要的15个旋转因子(w 0,w 1,w 2,…,w 14)按照它们使用的顺序进行加载。总的来说,图5所示的合并4层数论变换,需要32个自定制GS-butterfly指令、16个交换系数指令、8个存储指令(sw指令)和8+15个加载指令(lw指令)。
本实施例采用合并数论变换技术并充分利用RISC-V架构中的32个寄存器。16个lw指令可以将Kyber中多项式的32个系数加载到16个寄存器中。根据数论变换中正确系数对的配对关系,这些系数可以合并计算4层数论变换;剩下的寄存器用来存放4层数论变换中需要的15个旋转因子。因此,Kyber中的7层数论变换(正向数论变换和逆向数论变换)可以合并成4层和3层进行计算。这样,只需要进行两次加载数据和存储数据的操作,每次数据分成8组,每组32个。
本实施例中,预先计算好数论变换中需要的旋转因子,并且在计算旋转因子时,乘以k 0 -1 k 1 -1来消除k 2约化中的因子k 0 k 1。数论变换中使用的旋转因子随加载的多项式系数的顺序的变化而变化,因此,预计算的旋转因子将按照它们在数论变换中使用的顺序来存储。这样,在需要加载下一个旋转因子时可以直接加载,不需要额外计算旋转因子地址,节约了计算成本。
本实施例提供的基于紧凑指令集扩展的Kyber实现方法,采用广义的k 2约化(k 2-reduction)进行模约化,k 2约化中乘法的因数明显比蒙哥马利(Montgomery)约化和巴瑞特(Barrett)约化的小;和原始的k 2约化相比,广义的k 2约化(优化的k 2约化)在两次连续的k约化(k-reduction)中使用不同的k值,进一步降低了硬件开销。
广义的k 2约化由连续的两个k约化算法构成,广义的k 2约化中,两个连续的k约化算法可以使用不同的k值,即k 0k 1可以取不同的值,而在原始的k 2约化中这两个k约化使用相同的k值并且输入参数δ为1;输入参数δ的符号(正1或负1)会影响硬件资源的开销,因为硬件中的减法操作需要额外的运算来计算减数的补值。其中,k 0为第一个k约化的k值,k 2为第二个k约化的k值。
广义的k 2约化的输入包括ijδC,则;其中,是一个素数,在Kyber中
广义的k 2约化的输出结果是
广义的k 2约化的步骤如下:
第一步,通过C的除法取整运算得到获得C的高位比特C 01,除数为2m-i;即,计算C 01的长度为比特;
第二步,通过C的移位运算得到C的低m-i位比特C 00;即,计算C 00的长度为比特;
第三步,计算,且的长度为比特;
第四步,计算,当δ为1时,这里是减法运算,当δ为-1时,这里实际上是加法运算;且的长度是中的最大值;
第五步,与第一步类似,得到C 11,除数为2m-j;即计算,且C 11的长度为比特;
第六步,与第二步类似,通过移位得到低m-j位比特C 10;即计算,且C 10的长度为比特;
第七步,计算,且的长度为比特;
第八步,计算,得到输出结果;且的长度是中的最大值。
k 2约化、Montgomery约化和Barrett约化,都是可集成到电路中的模约化候选算法,本实施例采用UMC 55nm技术和Design Compiler 2016.03-SP1工具链来综合这些约化算法,并通过等效门电路(gate equivalent,GE)作为参照标准来衡量它们的电路尺寸大小,并以此来确定Kyber上将性能和硬件开销平衡的最好的模约化算法,表1展示了Kyber上这三个约化算法的比较情况。
表1、Kyber上的约化算法的比较
k 2约化算法中有两个乘法k 0 C 00k 1 C 10,Kyber上的原始的k 2约化算法中δ=1,k 0=13,k 1=13,它的输出范围是(-q,2q),GE值是359;对于广义的k 2约化算法,当δ=-1,k 0=-13×2ik 1=-13×2j且0≤i+j≤4时,广义的k 2约化算法的输出范围是(-q,q)。通过测试所有的ij的组合,发现当k 0=-13,k 1=-13×24(即)时,电路大小最小,GE为250,与原始的k 2约化算法相比,优化后的k 2约化算法的GE值更小,输出范围也更小,意味着更少的资源开销就可将结果约化到其标准表示。
在广义的k 2约化的第一个k约化中,k 0=-13是一个5比特的整数,它的最高比特位是符号位,C 00是一个8比特的整数,因此k 0 C 00是一个5bit×8bit的乘法;在广义的k 2约化的第二个k约化中k 1=-13×24C 10不超出4比特,因此k 1 C 10是一个5bit×4bit的乘法,即-13×C 10,剩下的×24的运算使用移位操作完成。优化的k 2约化中的两个加法t 1+C 01t 3+C 11直接利用原始加法即可完成计算。
Montgomery约化中也有两个乘法,第一个乘法C 0 q 是13bit×12bit的乘法,其中C 0CmodRR是一个大于模数的2的幂,且。Kyber中q =3327<212;另一个乘法t 2 q也是13bit×12bit,其中t 2t 1modRt 1C 0 q ;Montgomery约化中的输入值C和中间值t 1低位部分(即C 0t 2)通过比特移位运算得到;余下的加法C+t 3直接利用原始的加法即可,其中t 3t 2 q;而算法输出通过比特位移即可完成运算。
Barrett约化中的输入参数包括:0≤Cq 2,223q 2≤224R=224;为了满足Barrett约化的有效性还有约束条件;因此,Barrett约化中的第一个乘法Cm是24bit×13bit的,而且这个乘法的37bit的结果需要被全部保存下来以便完成后面的运算;第二个乘法t 2 q是13bit×12bit的,其中t 2t 1Cm。最后算法的输出结果可以利用原始的减法操作完成计算。
根据以上比较结果,广义的k 2约化确实是集成电路中性价比最高的模约化算法;实验数据显示,优化后的k 2约化的GE是250,原始的k 2约化的GE是359,Montgomery约化的GE是647,Barrett约化的GE是2095;因此,本实施例将以广义的k 2约化算法为基础来进行自定制指令的扩展。
本实施例提供的基于紧凑指令集扩展的Kyber实现方法,专注于紧耦合设计,并研究了在良好地平衡速度和面积开销的情况下的Kyber的基于数论变换(Number TheoreticTransform,NTT)的紧凑指令集扩展,为模运算和数论变换提供RISC-V指令集架构的自定制指令,并利用这些自定制指令来加速Kyber的实现。
本实施例提供的基于紧凑指令集扩展的Kyber实现方法,使用基于k 2约化的模乘来设计Kyber数论变换的紧凑指令集扩展,并将其深度集成到RISC-V处理器架构中;同时,还提供了一个定制指令来实现蝴蝶变换(butterfly transformation);另外,RISC-V的基本指令格式最多由两个源寄存器和一个目的寄存器构成,为了满足基本指令的格式要求,蝴蝶变换的两个输入系数分别放在一个源寄存器的高半部分和低半部分,另一个源寄存器存放旋转因子(twiddle factor);此外,为了加快数论变换中系数的重排,设计了硬件成本极低的系数交换(swap)指令来交换两个寄存器之间的半字。
本实施例提供的基于紧凑指令集扩展的Kyber实现方法,在Hummingbird E203核的芯片上实现了自定制的指令集扩展,与使用RISC-V汇编代码的纯软件实现相比,本实施例的软硬件协同设计的数论变换的速度提高了2.6倍,Kyber算法的时钟周期减少了50%以上;当使用Artix-7 35T FPGA综合时,本实施例的指令集扩展的资源开销是93个查找表(Look-Up-Table,LUT)和1个数字信号处理(Digital-Signal-Processing,DSP),不需要额外的触发器(Flip-Flop,FFs)和随机存取存储器(Random-Access-Memory,RAMs)。
本实施例选择Hummingbird E203作为实验平台,它是一个开源的32比特的RISC-V架构。
表2总结了在Kyber的环Z 3329[X]/(X 256+1)上利用数论变换计算多项式乘积的时钟周期。basemul是多项式经过数论变换后在NTT域上的乘积,C-Ref.是Kyber参考实现中推荐的C代码实现的多项式乘法,Assembly Impl.是基于RISC-V基础指令集RV32i实现的多项式乘法,Custom是基于本实施例的自定制指令实现的多项式乘法。从表2数据可见,自定制指令可以显著提升多项式乘法的速度。与Assembly Impl.相比,Custom把NTT、basemul和NTT -1的速度提高了2.6倍、2.5倍和3.7倍,与C-Ref.相比,Custom把NTT、basemul和NTT -1的速度提高了5.9倍、2.8倍和10倍。
表2、Z 3329[X]/(X 256+1)上多项式运算的时钟周期
表3总结了三种不同安全级别的Kyber实现的性能。C-Ref.是Kyber参考实现中推荐的C代码实现;Assembly Impl.是基于RISC-V基础指令集RV32i的实现;Custom是基于本实施例的自定制指令的实现;Custom&Keccak-C中多项式的计算也是基于自定制指令的实现,不过其中的Keccak是用C代码实现的,而Custom中使用简单的RISC-V基础指令实现Keccak算法。Custom&Keccak-C和C-Ref.相比,Kyber512的密钥生成阶段(key generation,K)少了18%的时钟周期,封装阶段(encapsulation,E)少了21%的时钟周期,解封装阶段(decapsulation,D)少了31%的时钟周期。Custom策略实现的Kyber512比C-Ref.少了48%到54%的时钟周期,比Assembly Impl.少了12%到21%的时钟周期。比较Kyber768和Kyber1024的不同显示,基于本实施例的定制指令的实现的优势同样很明显。其中,Kyber512、Kyber768、Kyber1024是三个不同安全强度的Kyber算法。
表3、Kyber.KEM的性能(单位:kolo cycles)
本实施例选择Artix-7 35T来进行FPGA评估,使用Xilinx Vivado 2021.1工具链来进行综合。
表4展示了FPGA的设备利用率,本实施例提供了原始核和定制核中电路资源的相对数量和数据变化的百分比。orig.(E203)是原始核;custom是嵌入了本实施例自定制的扩展指令的核;custom-nomul也嵌入了自定制的扩展指令,但是其中没有通用乘法器。结果表明,定制的系统开销是相当小的。例如,自定制的E203和原始E203相比,多用了93个LUTs和1个DSP,没有额外的FFs和RAMs开销。自定制的指令使最大频率降低了6.8%,在没有乘法的情况下频率降低了1.98%。
表4、Xilinx Artix-35T设备利用率
对于ASIC,本实施例选择了UMC 55nm技术和Design Compiler 2016.03-SP1工具链进行综合。
表5展示了需要的逻辑单元数和消耗的面积。和FPGA一样,orig.(E203)是原始核;custom是嵌入了自定制的扩展指令的核;custom-nomul也嵌入了自定制的扩展指令但是其中没有通用乘法器。自定制的E203比原来的多了1262个GE,没有通用乘法器的定制核比原来的少5612个GE。没有通用乘法器的定制核在ASIC综合中看起来比FPGA节省了更多的面积,应为FPGA中节省的2个DSP对应了ASIC中的多个GE。因此,ASIC的综合结果与FPGA的结果是一致的。
表5、ASIC综合结果(UMC 55 nm)
实施例二
本实施例提供了基于紧凑指令集扩展的Kyber实现方法,应用于第一客户端,包括:
通过多项式乘法和多项式加法,生成公钥和私钥,并将公钥发送至第二客户端,以使第二客户端使用公钥将明文加密为密文;
获取所述密文,并结合所述私钥,通过多项式乘法和多项式减法,得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一寄存器(同一位置)中的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包放置在同一寄存器(同一位置)。
其中,多项式乘法的实现过程为:对两个环上多项式分别进行过正向数论变换后,采用所述蝴蝶变换进行数论变换域上的乘法运算,并对计算结果进行逆向数论变换。
其中,正向数论变换中,采用一次扭转技术。
其中,数论变换域上的乘法运算中,通过比特位的交换完成寄存器中系数的交换。
其中,通过若干条交换系数指令,保证进行数论变换的系数对在同一寄存器。
实施例三
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一所述的基于紧凑指令集扩展的Kyber实现方法中的步骤。
本实施例提供了基于紧凑指令集扩展的Kyber实现方法,应用于第二客户端,包括:
获取公钥和明文,通过多项式乘法和多项式加法,得到密文,并发送至第一客户端,以使第一客户端通过多项式乘法和多项式减法,采用私钥对密文解密得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一寄存器中的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包放置在同一寄存器。
实施例四
本实施例提供了基于紧凑指令集扩展的Kyber实现系统,其具体包括第一客户端和第二客户端;
所述第一客户端,用于通过多项式乘法和多项式加法,生成公钥和私钥;
所述第二客户端,用于获取公钥和明文,通过多项式乘法和多项式加法,得到密文;
所述第一客户端,还用于获取所述密文,并结合所述私钥,通过多项式乘法和多项式减法,得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一寄存器中的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包放置在同一寄存器。
此处需要说明的是,本实施例中的各个模块与实施例一中的各个步骤一一对应,其具体实施过程相同,此处不再累述。
实施例五
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,该程序被处理器执行时实现如上述实施例二或实施例三所述的基于紧凑指令集扩展的Kyber实现方法中的步骤。
实施例六
本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例二或实施例三所述的基于紧凑指令集扩展的Kyber实现方法中的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (9)

1.基于紧凑指令集扩展的Kyber实现方法,其特征在于,应用于第一客户端,包括:
通过多项式乘法和多项式加法,生成公钥和私钥,并发送公钥,接收通过所述公钥加密明文得到的密文;
基于所述密文和所述私钥,通过多项式乘法和多项式减法,得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储;
所述多项式乘法的实现过程为:对两个环上多项式分别进行过正向数论变换后,采用所述蝴蝶变换进行数论变换域上的乘法运算,并对计算结果进行逆向数论变换;
所述旋转因子,br 7 (i)是无符号7位整数i的位反转,是正向数论变换中的旋转因子,它是n阶单位根ζn(2br 7 (i)+1)j次方;
所述多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;蝴蝶变换的输入为:a 0a 1ζ;Kyber中的素数q=3329;蝴蝶变换的计算步骤包括:
①、将a 0a 1的和作为第一结果b 0,即
②、将a 0a 1的差赋值给t 0,即
③、将a 0a 1的差t 0通过一个数据选择器mux,映射到标准值,即;其中,mux是将整数映射到其标准表示的操作,通过数据选择器实现;
④、对旋转因子ζ和差的标准值t 0进行乘法运算,得到乘积t 1,即
⑤、通过广义的k 2约化,对乘积t 1进行模约化,得到第二结果b 1,即
⑥、第一结果通过一个数据选择器mux被映射到标准表示值,第一结果的标准表示值为add_res,add_res为需要计算的(a 0 +a 1 )mod q,即
⑦、第二结果通过一个数据选择器mux被映射到标准表示值,第二结果的标准表示值为sub_res,sub_res为需要计算的(a 0 -a 1 )ζmod q
⑧、b 0b 1被同时打包放置在目的寄存器b中,即,add_res被放置在低16比特,sub_res被放置在高16比特,且输出系数b 0b 1的范围是[0,q)
蝴蝶变换指令的输出系数b 1(a 0 -a 1 )ζ的模乘结果,即b 1 =(a 0 -a 1 )·ζ;蝴蝶变换指令的输出系数b 0是两个输入系数a 0a 1的模加结果,即b 0 =a 0 +a 1;当ζ为1时,蝴蝶变换指令的输出系数b 1是两个输入系数a 0a 1的模减结果,即b 1 =a 0 -a 1
2.如权利要求1所述的基于紧凑指令集扩展的Kyber实现方法,其特征在于,所述正向数论变换中,采用一次扭转技术。
3.如权利要求1所述的基于紧凑指令集扩展的Kyber实现方法,其特征在于,所述数论变换域上的乘法运算中,通过比特位的交换完成系数的交换。
4.如权利要求1所述的基于紧凑指令集扩展的Kyber实现方法,其特征在于,所述正向数论变换前,通过若干条交换系数指令,保证进行正向数论变换的系数对在同一个寄存器中;
或者,所述逆向数论变换前,通过若干条交换系数指令,保证进行逆向数论变换的系数对在同一个寄存器。
5.基于紧凑指令集扩展的Kyber实现方法,其特征在于,应用于第二客户端,包括:
获取公钥和明文;
基于公钥和明文,通过多项式乘法和多项式加法,得到密文,并发送;
其中,发送出的密文,通过多项式乘法和多项式减法,采用私钥解密得到明文;所述多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储;
所述多项式乘法的实现过程为:对两个环上多项式分别进行过正向数论变换后,采用所述蝴蝶变换进行数论变换域上的乘法运算,并对计算结果进行逆向数论变换;
所述旋转因子,br 7 (i)是无符号7位整数i的位反转,是正向数论变换中的旋转因子,它是n阶单位根ζn(2br 7 (i)+1)j次方;
所述多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;蝴蝶变换的输入为:a 0a 1ζ;Kyber中的素数q=3329;蝴蝶变换的计算步骤包括:
①、将a 0a 1的和作为第一结果b 0,即
②、将a 0a 1的差赋值给t 0,即
③、将a 0a 1的差t 0通过一个数据选择器mux,映射到标准值,即;其中,mux是将整数映射到其标准表示的操作,通过数据选择器实现;
④、对旋转因子ζ和差的标准值t 0进行乘法运算,得到乘积t 1,即
⑤、通过广义的k 2约化,对乘积t 1进行模约化,得到第二结果b 1,即
⑥、第一结果通过一个数据选择器mux被映射到标准表示值,第一结果的标准表示值为add_res,add_res为需要计算的(a 0 +a 1 )mod q,即
⑦、第二结果通过一个数据选择器mux被映射到标准表示值,第二结果的标准表示值为sub_res,sub_res为需要计算的(a 0 -a 1 )ζmod q
⑧、b 0b 1被同时打包放置在目的寄存器b中,即,add_res被放置在低16比特,sub_res被放置在高16比特,且输出系数b 0b 1的范围是[0,q)
蝴蝶变换指令的输出系数b 1(a 0 -a 1 )ζ的模乘结果,即b 1 =(a 0 -a 1 )·ζ;蝴蝶变换指令的输出系数b 0是两个输入系数a 0a 1的模加结果,即b 0 =a 0 +a 1;当ζ为1时,蝴蝶变换指令的输出系数b 1是两个输入系数a 0a 1的模减结果,即b 1 =a 0 -a 1
6.基于紧凑指令集扩展的Kyber实现方法,其特征在于,包括:
第一客户端通过多项式乘法和多项式加法,生成公钥和私钥;
第二客户端获取公钥和明文,通过多项式乘法和多项式加法,得到密文;
第一客户端获取所述密文,并结合所述私钥,通过多项式乘法和多项式减法,得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储;
所述多项式乘法的实现过程为:对两个环上多项式分别进行过正向数论变换后,采用所述蝴蝶变换进行数论变换域上的乘法运算,并对计算结果进行逆向数论变换;
所述旋转因子,br 7 (i)是无符号7位整数i的位反转,是正向数论变换中的旋转因子,它是n阶单位根ζn(2br 7 (i)+1)j次方;
所述多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;蝴蝶变换的输入为:a 0a 1ζ;Kyber中的素数q=3329;蝴蝶变换的计算步骤包括:
①、将a 0a 1的和作为第一结果b 0,即
②、将a 0a 1的差赋值给t 0,即
③、将a 0a 1的差t 0通过一个数据选择器mux,映射到标准值,即;其中,mux是将整数映射到其标准表示的操作,通过数据选择器实现;
④、对旋转因子ζ和差的标准值t 0进行乘法运算,得到乘积t 1,即
⑤、通过广义的k 2约化,对乘积t 1进行模约化,得到第二结果b 1,即
⑥、第一结果通过一个数据选择器mux被映射到标准表示值,第一结果的标准表示值为add_res,add_res为需要计算的(a 0 +a 1 )mod q,即
⑦、第二结果通过一个数据选择器mux被映射到标准表示值,第二结果的标准表示值为sub_res,sub_res为需要计算的(a 0 -a 1 )ζmod q
⑧、b 0b 1被同时打包放置在目的寄存器b中,即,add_res被放置在低16比特,sub_res被放置在高16比特,且输出系数b 0b 1的范围是[0,q)
蝴蝶变换指令的输出系数b 1(a 0 -a 1 )ζ的模乘结果,即b 1 =(a 0 -a 1 )·ζ;蝴蝶变换指令的输出系数b 0是两个输入系数a 0a 1的模加结果,即b 0 =a 0 +a 1;当ζ为1时,蝴蝶变换指令的输出系数b 1是两个输入系数a 0a 1的模减结果,即b 1 =a 0 -a 1
7.基于紧凑指令集扩展的Kyber实现系统,其特征在于,包括第一客户端和第二客户端;
所述第一客户端,用于通过多项式乘法和多项式加法,生成公钥和私钥;
所述第二客户端,用于获取公钥和明文,通过多项式乘法和多项式加法,得到密文;
所述第一客户端,还用于获取所述密文,并结合所述私钥,通过多项式乘法和多项式减法,得到明文;
其中,多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;所述蝴蝶变换包括:将存储在同一位置的两个输入系数的和作为第一结果;将两个输入系数的差的标准值,与旋转因子进行乘法运算;对乘积进行模约化,得到第二结果;将第一结果和第二结果映射到标准表示值后,打包存储;
所述多项式乘法的实现过程为:对两个环上多项式分别进行过正向数论变换后,采用所述蝴蝶变换进行数论变换域上的乘法运算,并对计算结果进行逆向数论变换;
所述旋转因子,br 7 (i)是无符号7位整数i的位反转,是正向数论变换中的旋转因子,它是n阶单位根ζn(2br 7 (i)+1)j次方;
所述多项式乘法、多项式加法和多项式减法均通过蝴蝶变换实现;蝴蝶变换的输入为:a 0a 1ζ;Kyber中的素数q=3329;蝴蝶变换的计算步骤包括:
①、将a 0a 1的和作为第一结果b 0,即
②、将a 0a 1的差赋值给t 0,即
③、将a 0a 1的差t 0通过一个数据选择器mux,映射到标准值,即;其中,mux是将整数映射到其标准表示的操作,通过数据选择器实现;
④、对旋转因子ζ和差的标准值t 0进行乘法运算,得到乘积t 1,即
⑤、通过广义的k 2约化,对乘积t 1进行模约化,得到第二结果b 1,即
⑥、第一结果通过一个数据选择器mux被映射到标准表示值,第一结果的标准表示值为add_res,add_res为需要计算的(a 0 +a 1 )mod q,即
⑦、第二结果通过一个数据选择器mux被映射到标准表示值,第二结果的标准表示值为sub_res,sub_res为需要计算的(a 0 -a 1 )ζmod q
⑧、b 0b 1被同时打包放置在目的寄存器b中,即,add_res被放置在低16比特,sub_res被放置在高16比特,且输出系数b 0b 1的范围是[0,q)
蝴蝶变换指令的输出系数b 1(a 0 -a 1 )ζ的模乘结果,即b 1 =(a 0 -a 1 )·ζ;蝴蝶变换指令的输出系数b 0是两个输入系数a 0a 1的模加结果,即b 0 =a 0 +a 1;当ζ为1时,蝴蝶变换指令的输出系数b 1是两个输入系数a 0a 1的模减结果,即b 1 =a 0 -a 1
8.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,其特征在于,该程序被处理器执行时实现如权利要求1-4或权利要求5中任一项所述的基于紧凑指令集扩展的Kyber实现方法中的步骤。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4或权利要求5中任一项所述的基于紧凑指令集扩展的Kyber实现方法中的步骤。
CN202310631631.2A 2023-05-31 2023-05-31 基于紧凑指令集扩展的Kyber实现方法及系统 Active CN116366248B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310631631.2A CN116366248B (zh) 2023-05-31 2023-05-31 基于紧凑指令集扩展的Kyber实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310631631.2A CN116366248B (zh) 2023-05-31 2023-05-31 基于紧凑指令集扩展的Kyber实现方法及系统

Publications (2)

Publication Number Publication Date
CN116366248A CN116366248A (zh) 2023-06-30
CN116366248B true CN116366248B (zh) 2023-09-29

Family

ID=86909383

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310631631.2A Active CN116366248B (zh) 2023-05-31 2023-05-31 基于紧凑指令集扩展的Kyber实现方法及系统

Country Status (1)

Country Link
CN (1) CN116366248B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117714054B (zh) * 2024-02-01 2024-04-23 山东大学 基于数论变换的密钥封装轻量化方法、系统、介质及设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103369326A (zh) * 2013-07-05 2013-10-23 西安电子科技大学 适于高性能视频编码标准hevc的变换编码器
CN106685663A (zh) * 2017-02-15 2017-05-17 华中科技大学 一种环域上误差学习问题的加密方法及电路
CN113541922A (zh) * 2021-07-20 2021-10-22 山东大学 交换网络和跳转算法指令化的侧信道攻击抵抗方法及系统
CN115276948A (zh) * 2022-07-20 2022-11-01 京信数据科技有限公司 一种同态加密计算方法及系统
CN115622684A (zh) * 2022-11-16 2023-01-17 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 基于全同态加密的隐私计算异构加速方法及装置
CN115664634A (zh) * 2022-10-14 2023-01-31 山东大学 一种抗侧信道攻击的aes加密算法硬件实现方法及系统
CN115801244A (zh) * 2022-11-10 2023-03-14 山东大学 用于资源受限处理器的后量子密码算法实现方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3903300A4 (en) * 2019-02-19 2022-09-07 Massachusetts Institute Of Technology CONFIGURABLE GRID CRYPTOGRAPHY PROCESSOR FOR THE QUANTUM SECURE INTERNET OF THINGS AND ASSOCIATED PROCEDURES
US11804968B2 (en) * 2021-09-30 2023-10-31 Pqsecure Technologies, Llc Area efficient architecture for lattice based key encapsulation and digital signature generation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103369326A (zh) * 2013-07-05 2013-10-23 西安电子科技大学 适于高性能视频编码标准hevc的变换编码器
CN106685663A (zh) * 2017-02-15 2017-05-17 华中科技大学 一种环域上误差学习问题的加密方法及电路
CN113541922A (zh) * 2021-07-20 2021-10-22 山东大学 交换网络和跳转算法指令化的侧信道攻击抵抗方法及系统
CN115276948A (zh) * 2022-07-20 2022-11-01 京信数据科技有限公司 一种同态加密计算方法及系统
CN115664634A (zh) * 2022-10-14 2023-01-31 山东大学 一种抗侧信道攻击的aes加密算法硬件实现方法及系统
CN115801244A (zh) * 2022-11-10 2023-03-14 山东大学 用于资源受限处理器的后量子密码算法实现方法及系统
CN115622684A (zh) * 2022-11-16 2023-01-17 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 基于全同态加密的隐私计算异构加速方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
NTRU公钥密码算法基于J2ME的实现;贺蕾;陶宏才;;微计算机信息(21);101 *
理想格上高效的身份基加密方案;魏理豪;艾解清;刘生寒;;计算机工程(07);136-137 *

Also Published As

Publication number Publication date
CN116366248A (zh) 2023-06-30

Similar Documents

Publication Publication Date Title
Boyle et al. Function secret sharing for mixed-mode and fixed-point secure computation
JP3851115B2 (ja) 暗号回路
US8340280B2 (en) Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
EP3903300A1 (en) Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques
CN110351087B (zh) 流水线型的蒙哥马利模乘运算方法
Xie et al. Special session: The recent advance in hardware implementation of post-quantum cryptography
CN116366248B (zh) 基于紧凑指令集扩展的Kyber实现方法及系统
Shahbazi et al. Design and implementation of an ASIP-based cryptography processor for AES, IDEA, and MD5
KR20050078271A (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
Nath et al. Efficient arithmetic in (pseudo-) Mersenne prime order fields
Ni et al. A high-performance SIKE hardware accelerator
Elkhatib et al. Accelerated RISC-V for post-quantum SIKE
CN117714054B (zh) 基于数论变换的密钥封装轻量化方法、系统、介质及设备
Zhao et al. Efficient implementation of kyber on mobile devices
JP4098719B2 (ja) Aesアルゴリズム用のプログラマブルデータ暗号化エンジン
Wang et al. TCPM: A reconfigurable and efficient Toom-Cook-based polynomial multiplier over rings using a novel compressed postprocessing algorithm
EP1366596A1 (en) Recursive cryptoaccelerator and recursive vhdl design of logic circuits
CN114371828A (zh) 多项式乘法器及具有该乘法器的处理器
El-Hadedy et al. Reco-Pi: a reconfigurable cryptoprocessor for π-cipher
CN115037485B (zh) 轻量级认证加密算法的实现方法、装置及设备
CN115765990B (zh) 一种后量子密码算法的ntru安全协处理器
Jalali et al. Optimized supersingular isogeny key encapsulation on armv8 processors
Choi et al. Lightweight Polynomial Multiplication Accelerator for NTRU Using Shared SRAM
Xiaohui et al. Researching and implementation of reconfigurable Hash chip based on FPGA
KR102282363B1 (ko) 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant