用于实现后量子密码saber算法的处理器
技术领域
1.本发明涉及信息安全技术领域,尤其涉及一种用于实现后量子密码saber算法的处理器。
背景技术:
2.在信息安全技术领域中,为了保证信息的安全性,发送端在信息发送前需要对信息进行加密,接收端在接收到信息之后,需要使用相应的密钥对信息进行解密。
3.随着技术的发展,密码技术正在由传统的基于公钥的密码技术向pqc(post-quantum cryptography,后量子密码)技术方向发展,所谓pqc技术是指可以抵抗量子计算机攻击的密码技术,因此也被称为“抗量子密码技术”。其中的“后”是指在大规模稳定的量子计算机出现后,现有的绝大多数公钥密码算法(诸如rsa、diffie-hellman、椭圆曲线等)将会被攻破,只有能抵抗这种攻击的密码算法才能够在进入量子计算时代之后存活。
4.在pqc技术中,后量子密码saber算法是其中一种,其具有公钥长度短和易于实现等优点,该算法是由jan-pieter等人提出的基于mlwr(machine learning with rounding)问题的密码学原语,其包含了公钥加密(saber.pke)和密钥封装(saber.kem)两种方案。其中,saber.pke是一种具有选择明文攻击下不可区分性(indistinguishability under chosen plaintext attack,ind-cpa)的公钥加密方案。而saber.kem是一种具有选择密文攻击下不可区分性(indistinguishability under chosen ciphertext attack,ind-cca)的密钥交换机制。其中,saber.pke到saber.kem的转换通过fujisaki-okamoto变换即可完成。
5.在针对后量子密码saber算法的研究中,如何提高后量子密码saber算法的效率,即高效性,是当前的主要研究方向,即当前研究主要关注于高效性问题上。但是,当后量子密码saber算法用硬件实现时,资源消耗也会成为一个重要问题,而现有对此则鲜有研究。
技术实现要素:
6.有鉴于此,本发明的目的在于提供一种用于实现后量子密码saber算法的处理器,能够在使用硬件实现后量子密码saber算法的方案中,同时兼顾高效性和资源消耗的问题。
7.为了实现上述发明目的,本发明实施例提供了一种用于实现后量子密码saber算法的处理器,所述处理器由硬件实现,所述处理器包括:存储模块,用于存储数据和指令,其中所述处理器使用自定义的精简指令集,且所述存储模块中存储的指令为所述指令集中的指令;功能模块,用于执行后量子密码saber算法中涉及的操作,且所述功能模块包括以下子模块:第三代安全散列算法sha3子模块、二进制采样子模块、多项式乘法器、加解密子模块、验证子模块和数据位宽转换子模块;以及控制模块,用于根据所述存储模块中存储的指令,控制所述功能模块中的各子模块执行对应的操作,以实现所述后量子密码saber算法中的密钥生成、密钥封装和密钥解封中的至少一个。
8.在一种实施方式中,所述自定义的精简指令集中各指令的长度和格式均相同,且
每条指令包括:控制部分,用于指示欲启动的子模块及该子模块的工作模式;读地址部分,用于指示输入数据的存储地址;以及写地址部分,用于指示输出数据的存储地址。
9.在一种实施方式中,所述sha3子模块和所述多项式乘法器均具有多个工作模式,所述控制部分包括:7位,其中所述7位中的其中2位用作所述sha3子模块和所述多项式乘法器的启动标志位,剩余的5位用作剩余子模块的启动标志位和所述sha3子模块和所述多项式乘法器的模式控制位。
10.在一种实施方式中,所述读地址部分包括:第一读地址部分,用于指示第一输入数据的存储地址;以及第二读地址部分,用于指示第二输入数据的存储地址。
11.在一种实施方式中,所述每条指令的长度均为37位,且所述控制部分由第0~6位实现,所述第一读地址部分由第7~16位实现,所述第二读地址部分由第17~26位实现,所述写地址部分由第27~36位实现。
12.在一种实施方式中,所述sha3子模块仅支持实现sha3-256函数、sha3-512函数和shake128函数。
13.在一种实施方式中,所述sha3-256函数、sha3-512函数和shake128函数均基于轮函数而实现,且所述sha3子模块采用展开系数为1,不插入流水线的方式来实现所述轮函数。
14.在一种实施方式中,所述指令集由以下17条指令构成:用于程序结束的指令;用于启动二进制采样子模块的指令;用于启动加密子模块的指令;用于启动解密子模块的指令;用于启动验证子模块的指令;用于启动数据位宽转换子模块的指令;用于启动多项式乘法器且指示执行一次a
t
·
s中的多项式矢量乘法的指令;用于启动多项式乘法器且指示执行一次a
·s′
中的多项式矢量乘法的指令;用于启动多项式乘法器且指示执行一次b
·
s中的多项式矢量乘法的指令;用于启动sha3子模块且指示执行shake128函数并输出256位消息的指令;用于启动sha3子模块且指示执行shake128函数并输出29925位消息的指令;用于启动sha3子模块且指示执行shake128函数并输出6144位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收8704位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收512位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收256位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收7936位消息的指令;以及用于启动sha3子模块且指示执行sha3-512函数的指令。
15.在一种实施方式中,所述存储模块包括:程序存储器,连接至所述处理器的指令修改接口,所述处理器透过所述指令修改接口接收修改的指令并保存至所述程序存储器中。
16.在一种实施方式中,所述存储模块包括:程序存储器和数据存储器;所述控制模块包括:指令读取单元,用于从所述程序存储器中读取指令;以及指令解析与总线管理单元,用于解析所述读取的指令,并基于解析的结果控制相应的子模块工作,并且控制仅当前工作的子模块能够使用所述数据存储器。
17.本发明的有益效果是:
18.本发明实施例的处理器,基于硬件而实现(硬件比软件更高效),因此天然具有高效性。同时,处理器使用自定义的精简指令集,由于自定义的精简指令是针对后量子密码saber算法而开发,因此一方面具有高效性,另一方面可以减少控制逻辑,从而节约资源开销,因此可以同时兼顾高效性和节约资源。另外,通过分析后量子密码saber算法中会涉及
的操作,将主要执行后量子密码saber算法的功能模块合理地划分为sha3子模块、二进制采样子模块、多项式乘法器、加解密子模块、验证子模块和数据位宽转换子模块,并采用分别对这些功能模块进行控制的方式;一方面可以在实现后量子密码saber算法时,充分复用这些子模块以减少资源消耗,另一方面在开发指令时,也只需要主要针对上述6个子模块来设计指令,从而保证指令的数量不会太多,长度也不会太长。综合上述各方面,本发明实施例的以硬件方式实现的用于执行后量子密码saber算法的处理器,能够在具有高效性的同时,降低资源消耗,即同时兼顾高效性和资源消耗的问题。
附图说明
19.图1是本发明的用于实现后量子密码saber算法的处理器的一实施例的结构示意图;
20.图2是本发明的用于实现后量子密码saber算法的处理器的另一实施例的结构示意图;
21.图3是本发明的用于实现后量子密码saber算法的处理器的另一实施例的结构示意图;以及
22.图4是本发明实施例的指令的结构示意图。
具体实施方式
23.为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅以解释本发明,并不用于限定本发明。
24.在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
25.本发明实施例提供了一种用于实现后量子密码saber算法的处理器,其针对现有技术中,在采用纯硬件的方式来实现后量子密码saber算法时,没有兼顾高效和资源开销的问题,通过对处理器中功能模块的合理划分和采用自定义的精简指令集的方式,来达到既保证算法执行时高的效率,同时又能够降低资源(例如硬件电路查找表、触发器和晶体管电路)的开销。下面结合附图,对本发明实施例的处理器的结构和功能进行说明。
26.如图1所示,是本发明的用于实现后量子密码saber算法的处理器的一实施例的结构示意图。该处理器1可以用于实现后量子密码saber算法的专用处理器,例如专用于实现后量子密码saber算法的协/辅助处理器;当然处理器1除了能够实现后量子密码saber算法,也可以实现其他的算法,例如图1所示结构的处理器1,可以进行简单的扩展而支持kyber算法。处理器1在实现后量子密码saber算法时,可以实现基于后量子密码saber算法的密钥生成、密钥封装和密钥解封中的至少一个;在背景技术中,已对后量子密码saber算法做了简单介绍,下面再结合下述的算法1说明后量子密码saber算法是如何实现密钥生成的;对于后量子密码saber算法如何实现密钥封装和密钥解封的,在此不赘述。
27.算法1:saber.pke.keygen
28.[0029][0030][0031][0032][0033]
6 return(pk:=(seeda,b),s)
[0034]
在算法1中,seeda为均匀分布的256位随机数种子。a为l
×
l的多项式矩阵,l的值根据算法安全等级的不同而不同。多项式矩阵中a的元素为256阶多项式,系数为13位。算法定义了矩阵a的生成方式:采用sha3标准定义的输出可扩展函数shake128生成多项式矩阵a的全部系数。r与seeda相似,为随机数种子,算法并没有严格定义其产生方式。s为长度为1的多项式向量,其多项式元素的系数需要满足二项分布。二项分布的系数可以通过对均匀分布的伪随机数序列进行简单的采样得到。b为多项式向量,是公钥的主要组成部分。所有计算完成之后,随机数种子seeda与向量b进行位拼接,作为公钥发送给客户端。
[0035]
在上述基础上,继续对图1的结构进行说明。如图1所示,处理器1包括:存储模块10、功能模块11和控制模块12,其中存储模块10用于存储数据和指令,功能模块11用于执行后量子密码saber算法中涉及的操作,控制模块12介于存储模块10和控制模块12之间,用于根据存储模块10中的指令,控制功能模块11执行相应的操作,同时管理功能模块11对存储模块10进行的数据读和写,以实现后量子密码saber算法。
[0036]
具体地,存储模块10中可以存储有执行后量子密码saber算法的程序(由指令组成),以及存储执行后量子密码saber算法所需要使用的随机数种子和算法运行产生的中间数据和结果数据等等。在本实施例中,处理器1使用自定义的精简指令集,因此存储模块10中存储的指令是自定义的精简指令。所谓“自定义”是指本实施例的指令均是根据后量子密码saber算法而设计的,其指令长度以及每一位(bit,也称为比特)的作用都是由本方案设定的,采用自定义的方式能够使指令有针对性从而能够提高效率和节约资源。所谓“精简”是相对于复杂而言的,在精简的指令集中,其对指令数目和寻址方式都做了精简,使其更容易实现,且指令并行执行程度更好,编译的效率也更高,透过使用精简的指令集能够提高后量子密码saber算法的运行效率。
[0037]
其中,功能模块11,用于执行后量子密码saber算法中涉及的各个操作,例如多项式乘法、二进制采样和验证等。具体而言,本技术的发明人通过分析后量子密码saber算法中涉及的操作以及各操作出现的频次,将功能模块11划分为6个子模块,如图1所示。需要说明的是,不同的技术人员对功能模块11的划分可能是不一样的,但是本技术的发明人认为图1的划分方式会是较优的方式,因为这样的划分是从节约资源开销的角度考量的,采用这样的划分方式能够在处理器1实现后量子密码saber算法时,充分地复用各子模块从而节约资源开销。
[0038]
具体地,如图1所示,功能模块11包括:sha3(secure hash algorithm 3,第三代安全散列算法)子模块111、二进制采样子模块112、多项式乘法器113、加解密子模块114、验证子模块115和数据位宽转换子模块116。其中,上述各子模块相互独立,在控制模块12的控制下,分别实现各自的功能。例如,sha3子模块11能够生成hash(哈希)散列,二进制采样子模块112能够生成满足二项分布的多项式,多项式乘法器113(例如,基于karatsuba算法来实
现的多项式乘法器)能够实现多项式矩阵乘法,加解密子模块114能够实现信息的加密或解密,验证子模块115能够验证后量子密码saber算法是否正确,以及数据位宽转换子模块116能够调整数据的位宽。需要说明的是,上述各子模块执行的均是后量子密码saber算法中涉及的操作,由于后量子密码saber算法是已知的算法,因此上述各模块如何执行上述操作对本领域技术人员而言是熟悉的,在此不赘述。另外,加解密子模块114也可以进一步包括:分别执行加密和解密操作的加密单元和解密单元。
[0039]
其中,控制模块12用于根据存储模块10中存储的指令,控制功能模块11中的各子模块(即111~116)执行对应的操作,从而实现后量子密码saber算法中的密钥生成、密钥封装和密钥解封中的至少一个。举例而言,存储模块10中存储有后量子密码saber算法的运行程序(由多条指令构成),控制模块12按照指令的存储地址由低到高的顺序,先从存储模块10取出第一条指令(例如该第一条指令用于指示执行一次sha3子模块11),然后控制模块101解析该指令,并基于解析的结果,控制sha3子模块11执行一次;当sha3执行一次之后,其向控制模块12输出完成的指示,接着控制模块12取出第二条指令,以此类推,完成所有指令的执行,从而实现后量子密码saber算法。
[0040]
本实施例的处理器,基于硬件而实现(硬件比软件更高效),因此天然具有高效性。同时,处理器使用自定义的精简指令集,由于自定义的精简指令是针对后量子密码saber算法而开发,因此一方面具有高效性,另一方面可以减少控制逻辑,从而节约资源开销,因此可以同时兼顾高效性和节约资源。另外,通过分析后量子密码saber算法中会涉及的操作,将主要执行后量子密码saber算法的功能模块合理地划分为sha3子模块、二进制采样子模块、多项式乘法器、加解密子模块、验证子模块和数据位宽转换子模块,并采用分别对这些功能模块进行控制的方式;一方面可以在实现后量子密码saber算法时,充分复用这些子模块以减少资源消耗,另一方面在开发指令时,也只需要主要针对上述6个子模块来设计指令,从而保证指令的数量不会太多,长度也不会太长。综合上述各方面,本发明实施例的以硬件方式实现的用于执行后量子密码saber算法的处理器,能够在具有高效性的同时,降低资源消耗,即同时兼顾高效性和资源消耗的问题。
[0041]
如图2和3所示,是本发明的处理器的另一实施例的结构示意图。在图2中,其对图1中存储模块10和控制模块12做了进一步的举例说明。如图2所示,存储模块10可以包括:程序存储器101和数据存储器102。其中,程序存储器101用于存储程序(由指令构成),例如实现后量子密码saber算法的程序;数据存储器102用于存储数据,例如随机数种子、后量子密码saber算法在运行时的中间数据和结果数据等。在一种实施方式中,程序存储器101与处理器1的指令修改接口(未图示)连接,透过该指令修改接口可以修改程序存储器中存储的程序(即指令),以增加该处理器1的可扩展性。
[0042]
继续如图2所示,控制模块12包括:指令读取单元121和指令解析与总线管理单元122。其中,指令读取单元121用于从程序存储器101中读取指令,例如按照地址由低到高的顺序读取。指令解析与总线管理单元122用于解析指令读取单元121读取的指令,并基于解析的结果启动对应的子模块(即111~116)来执行相关操作;同时,指令解析与总线管理单元122控制仅启动的子模块能够使用数据存储器,例如从数据存储器读取数据或向数据存储器写数据。在一种实施方式中,指令解析与总线管理单元122可以进一步分解为指令解析子单元和总线管理子单元,在此不赘述。
[0043]
如图3所示,其不仅示出了处理器1的主要模块,还示出了处理器1的主要外部接口,其中di即为上述的指令修改接口,其用于接收输入的指令并将其存储至程序存储器101。ctr为控制信号接口,用于接收外部对处理器的控制信号。dio为数据输入/输出接口。rst为复位接口,用于接收复位信号。clk为时钟接口。flag为状态信号接口,用于输出处理器状态信号。
[0044]
透过上述图1~3,已经对本发明实施例的处理器的具体结构进行了详细说明。下面对上述提及的自定义的精简指令集做更进一步的说明。
[0045]
如图4所示,是本发明实施例的自定义的精简指令的格式示意图。如图所示,本发明的实施例的精简指令的长度固定,例中均为图示的37位,且每条指令包括:
[0046]
控制部分41,用于指示欲启动的子模块(即图1中的111~116)及其工作模式,在本实施列中,只有sha3子模块和多项式乘法器具有多个工作模式,因此此两个模块需要特别指明其工作模式。举例而言,m0位作为sha3子模块启动标志位,可以用于指示是否启动sha3子模块,例如其为“1”时,表示启动sha3子模块,其为“0”时,表示不启动sha3子模块。m1位作为多项式乘法器的启动标志位,用于指示是否启动多项式乘法器,例如其为“1”时,表示启动多项式乘法器,其为“0”时,表示不启动多项式乘法器。剩余的m2~m6为剩余的子模块启动标志位和模式控制位,用于指示剩余的子模块中哪一个启动或者sha3子模块和多项式乘法器的工作模式。例如,m1和m0均为0,m6~m2为“00001”时,表示启动二进制采样子模块;又例如,当m1为“0”,m0为“1”时,m6~m2为“00001”时,可以表示启动sha3子模块,且sha3子模块工作于“执行shake128函数,输出256位消息”的模式。
[0047]
在本实施例中,sha3子模块的工作模式可以包括:执行shake128函数并输出256位消息的模式,执行shake128函数并输出29925位消息的模式,执行shake128函数并输出6144位消息的模式,执行sha3-256函数并吸收8704位消息的模式,执行sha3-256函数并吸收512位消息的模式,执行sha3-256函数并吸收256位消息的模式,执行sha3-256函数并吸收7936位消息的模式,和执行sha3-512函数的模式。多项式乘法器的工作模式可以包括:执行一次a
t
·
s中的多项式矢量乘法的模式,执行一次a
·s′
中的多项式矢量乘法的模式,和执行一次b
·
s中的多项式矢量乘法的模式。
[0048]
其中,读地址部分42,用于指示输入数据的存储地址。在图示中,读地址部分42包括第一读地址部分421和第二读地址部分422,分别用于指示两个输入数据的存储地址。具体而言,读地址部分42由指令的第7~26位实现,即a0~a9和b0~b9;其中,a0~a9用于实现第一读地址部分421,其存放第一输入数据的存储地址,例如第一输入数据的起始地址;b0~b9用于实现第二读地址部分422,其存放第二输入数据的存储地址,例如第二输入数据的起始地址。在本实施例中,由于读地址部分42包括:两个输入数据的存储地址,因此有助于加速多项式乘法器的工作效率,因为其通过一条指令就可以取到两个输入数据。但是,在实际应用中,读地址部分42仅包括一个输入数据的存储地址也是可以的,但这会影响多项式乘法器的工作效率。当读地址部分42仅包括一个输入数据的存储地址时,本实施例的指令由27位构成。
[0049]
其中,写地址部分43,用于指示输出数据将要写入的存储地址。在图示中,其由r0~r9实现;需要说明的是,此处的输出数据并不一定是执行后量子密码saber算法最终的输出数据,也可以是执行上述各子模块时生成的数据。
[0050]
综上,本发明实施例透过一条指令可以指示如下内容:要启动的子模块;若要启动的子模块有多个工作模式,还指示其工作模式;从哪取输入数据;运算后得到的输出数据存入哪里。由此可见,上述指令格式简单,而且位数合理(37位),因此在运行时,能够高效地控制各子模块的工作,从而实现后量子密码saber算法。
[0051]
在图4中,对本发明实施例的自定义的精简指令的格式进行了说明。下面对本发明实施例的指令集进行说明。在本发明实施例中,为了能够实现后量子密码saber算法,基于对功能模块的划分方式,本发明实施例的指令可以包括17条,例如分别为:用于程序结束的指令;用于启动二进制采样子模块的指令;用于启动加密子模块的指令;用于启动解密子模块的指令;用于启动验证子模块的指令;用于启动数据位宽转换子模块的指令;用于启动多项式乘法器且指示执行一次a
t
·
s中的多项式矢量乘法的指令;用于启动多项式乘法器且指示执行一次a
·s′
中的多项式矢量乘法的指令;用于启动多项式乘法器且指示执行一次b
·
s中的多项式矢量乘法的指令;用于启动sha3子模块且指示执行shake128函数并输出256位消息的指令;用于启动sha3子模块且指示执行shake128函数并输出29925位消息的指令;用于启动sha3子模块且指示执行shake128函数并输出6144位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收(输入)8704位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收512位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收256位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收7936位消息的指令;以及用于启动sha3子模块且指示执行sha3-512函数的指令。利用这17条指令的组合,本发明实施例可以实现后量子密码saber算法。
[0052]
需要说明的是,由上述指令可知,sha3子模块实现了sha3-256函数、sha3-512函数和shake128函数。一般而言,sha3算法中共涉及6种函数,本发明实施例基于后量子密码saber算法实际只用到其中三种,因此将sha3子模块设计为仅支持sha3-256函数、sha3-512函数和shake128函数,从而可以简化sha3子模块的结构。另外,sha3-256函数、sha3-512函数和shake128函数均基于轮函数而实现,则在本发明实施例的sha3子模块采用展开系数为1,不插入流水线的方式来实现轮函数,从而可以节约资源开销。一般而言,展开系数越高,sha3子模块的效能越好,即越高效;但是,决定系统整体性能的并不是其中性能最高的模块,而是性能最低的模块。sha3算法硬件实现的高效性使其即使不进行专门的优化,理论上也不会成为制约密钥交换系统性能的瓶颈,而在后量子密码系统中制约系统性能的模块大部分都是多项式乘法器。因此,本方案在设计sha3子模块时,主要是从节省资源开销的角度确定设计方案,即采用展开系数为1,不插入流水线的方式实现轮函数。
[0053]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
技术特征:
1.一种用于实现后量子密码saber算法的处理器,所述处理器由硬件实现,其特征在于,所述处理器包括:存储模块,用于存储数据和指令,其中所述处理器使用自定义的精简指令集,且所述存储模块中存储的指令为所述指令集中的指令;功能模块,用于执行后量子密码saber算法涉及的操作,且所述功能模块包括以下子模块:第三代安全散列算法sha3子模块、二进制采样子模块、多项式乘法器、加解密子模块、验证子模块和数据位宽转换子模块;以及控制模块,用于根据所述存储模块中存储的指令,控制所述功能模块中的各子模块执行对应的操作,以实现所述后量子密码saber算法中的密钥生成、密钥封装和密钥解封中的至少一个。2.根据权利要求1所述的处理器,其特征在于,所述自定义的精简指令集中各指令的长度和格式均相同,且每条指令包括:控制部分,用于指示欲启动的子模块及该子模块的工作模式;读地址部分,用于指示输入数据的存储地址;以及写地址部分,用于指示输出数据的存储地址。3.根据权利要求2所述的处理器,其特征在于,所述sha3子模块和所述多项式乘法器均具有多个工作模式,所述控制部分包括:7位,其中所述7位中的其中2位用作所述sha3子模块和所述多项式乘法器的启动标志位,剩余的5位用作剩余子模块的启动标志位和所述sha3子模块和所述多项式乘法器的模式控制位。4.根据权利要求2所述的处理器,其特征在于,所述读地址部分包括:第一读地址部分,用于指示第一输入数据的存储地址;以及第二读地址部分,用于指示第二输入数据的存储地址。5.根据权利要求4所述的处理器,其特征在于,所述每条指令的长度均为37位,且所述控制部分由第0~6位实现,所述第一读地址部分由第7~16位实现,所述第二读地址部分由第17~26位实现,所述写地址部分由第27~36位实现。6.根据权利要求1所述的处理器,其特征在于,所述sha3子模块仅支持实现sha3-256函数、sha3-512函数和shake128函数。7.根据权利要求6所述的处理器,其特征在于,所述sha3-256函数、sha3-512函数和shake128函数均基于轮函数而实现,且所述sha3子模块采用展开系数为1,不插入流水线的方式来实现所述轮函数。8.根据权利要求1至7中任一项所述的处理器,其特征在于,所述指令集由以下17条指令构成:用于程序结束的指令;用于启动二进制采样子模块的指令;用于启动加密子模块的指令;用于启动解密子模块的指令;用于启动验证子模块的指令;用于启动数据位宽转换子模块的指令;用于启动多项式乘法器且指示执行一次a
t
·
s中的多项式矢量乘法的指令;
用于启动多项式乘法器且指示执行一次a
·
s
′
中的多项式矢量乘法的指令;用于启动多项式乘法器且指示执行一次b
·
s中的多项式矢量乘法的指令;用于启动sha3子模块且指示执行shake128函数并输出256位消息的指令;用于启动sha3子模块且指示执行shake128函数并输出29925位消息的指令;用于启动sha3子模块且指示执行shake128函数并输出6144位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收8704位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收512位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收256位消息的指令;用于启动sha3子模块且指示执行sha3-256函数并吸收7936位消息的指令;以及用于启动sha3子模块且指示执行sha3-512函数的指令。9.根据权利要求1所述的处理器,其特征在于,所述存储模块包括:程序存储器,连接至所述处理器的指令修改接口,所述处理器透过所述指令修改接口接收修改的指令并保存至所述程序存储器中。10.根据权利要求1所述的处理器,其特征在于,所述存储模块包括:程序存储器和数据存储器;所述控制模块包括:指令读取单元,用于从所述程序存储器中读取指令;以及指令解析与总线管理单元,用于解析所述读取的指令,并基于解析的结果控制相应的子模块工作,并且控制仅当前工作的子模块能够使用所述数据存储器。
技术总结
本发明实施例涉及信息安全技术领域,并公开了一种用于实现后量子密码Saber算法的处理器,该处理器由硬件实现,并且包括:存储模块,用于存储数据和指令,其中处理器使用自定义的精简指令集,且存储模块中存储的指令为指令集中的指令;功能模块,用于执行后量子密码Saber算法涉及的操作,且功能模块包括以下子模块:第三代安全散列算法SHA3子模块、二进制采样子模块、多项式乘法器、加解密子模块、验证子模块和数据位宽转换子模块;以及控制模块,用于根据存储模块中存储的指令,控制功能模块中的各子模块执行对应的操作,以实现后量子密码Saber算法中的密钥生成、密钥封装和密钥解封中的至少一个。本发明实施例,能够在实现高效性的同时,节约资源开销。节约资源开销。节约资源开销。
技术研发人员:刘冬生 李翔 胡昂 李奥博 杨朔 陆家昊
受保护的技术使用者:华中科技大学
技术研发日:2021.11.25
技术公布日:2022/3/8