一种基于ClassicMcEliece密码体制的密码系统

文档序号:31054030发布日期:2022-08-06 10:27阅读:168来源:国知局
一种基于ClassicMcEliece密码体制的密码系统
一种基于classic mceliece密码体制的密码系统
技术领域
1.本发明涉及后量子密码技术领域,具体来说涉及由fpga(fieldprogrammable gate array)实现classic mceliece密码体制的硬件方案,更具体地,涉及一种基于classic mceliece密码体制的密码系统。


背景技术:

2.在基于编码的抗量子密码体制中,classic mceliece密码体制以其高效的加密解密过程和高安全系数成为抗量子密码体制标准的有力竞争者。该体制的安全性是基于任意线性码的译码问题。公开日为2021.12.30,公开号为 us20210409214a1的美国发明申请:支持后量子密码学的订阅隐藏标识符(suci) 中公开了classic mceliece密码体制在通信加密领域的应用。在此密码体制中,主要分为三个过程,分别是密钥生成过程,加密过程和解密过程。同时,由于该密码体制的显著特点是其公钥尺寸很大,其计算过程和存储过程都是需要考虑的重点。
3.classic mceliece密码体制是基于goppa码的加密方案,针对其公钥尺寸过大,不便传输的特点,目前大多数研究的主要内容都是使用其他码型(如ldpc 码,polar码等)代替goppa码,从而降低公钥尺寸,但目前可知的这类替代方案均会导致安全系数的降低。而基于goppa码的classic mceliece方案具有高安全性的保障,但基于该体制的硬件实现方案的研究仍然较少。
4.classic mceliece密码体制的加密过程中,涉及的主要操作是将公钥矩阵与向量e相乘,得到密文c;传统的做法是按行取出公钥,一次性取出至少2720bit,与向量e进行位与,将两个向量相与的结果进行位异或,从而得到最终结果c。这对于公钥的存储并不友好,对于xilinx的存储单元bram而言,bram的大小一般为18kb或36kb,单个bram支持读写的最大位宽一般为32bit,若一次性读取2720bit,则意味着公钥中的一行数据需要存储在多个bram中,数据存储分散,而且单次数据的传输量过大,不利于根据不同的并行度进行结构的变换与扩展。


技术实现要素:

5.针对的现有技术的局限,本发明提出一种基于classic mceliece密码体制的密码系统,本发明采用的技术方案是:
6.一种基于classic mceliece密码体制的密码系统,包括密钥生成装置、加密装置、解密装置、公钥存储模块以及私钥存储模块;所述密钥生成装置连接所述公钥存储模块以及私钥存储模块;所述公钥存储模块连接所述加密装置;所述私钥存储模块连接所述解密装置;其中:
7.所述密钥生成装置用于根据输入的随机数组r1生成公钥pk存储于所述公钥存储模块以及私钥sk存储于所述私钥存储模块;
8.所述加密装置用于根据输入的随机数组r2以及从所述公钥存储模块读取的公钥
pk生成密文c;所述加密装置包括数据筛选模块、误差向量生成模块以及 syndrome模块;
9.所述数据筛选模块用于对所述随机数组r2进行筛选;所述误差向量生成模块用于根据所述随机数组r2以及所述数据筛选模块对所述随机数组r2的筛选结果生成向量e;所述syndrome模块用于根据所述向量e以及从所述公钥存储模块读取的公钥pk生成密文c;
10.所述syndrome模块包括控制单元以及n个计算单元;所述控制单元用于对所述向量e分若干次进行读取,以行为单位、每行分若干次读取的方式对所述公钥pk进行读取;
11.所述计算单元包括与操作器a、异或操作器b、寄存器c1、寄存器c2;所述与操作器a连接所述异或操作器b,所述异或操作器b连接所述寄存器c2;所述寄存器c1用于向下一级计算单元中的与操作器a以及寄存器c1传递所述向量e;
12.所述解密装置用于根据从所述私钥存储模块读取的私钥sk对输入的密文c 进行解密,得到解密结果。
13.相较于现有技术,本发明基于classic mceliece密码体制的密码系统可以部署在fpga上,通过提供一种syndrome模块来完成公钥与向量e相乘,能够充分利用算法运行过程中的并行度和硬件丰富的逻辑资源,从而加速classicmceliece密码体制的运行速度;可支持不同安全系数下的结构变换,根据需求进行并行度的调整。
14.作为一种优选方案,所述数据筛选模块与所述误差向量生成模块之间采用 fifo单元进行缓冲。
15.作为一种优选方案,所述公钥存储模块按以下方式存储由a行b列的公钥矩阵构成的所述公钥pk:以行为单位将所述公钥矩阵的矩阵数据存储在n个bram 中,各bram中分别存储最多d行矩阵数据以及至少(n-1)个填充数据。
16.进一步的,所述公钥矩阵的行数a、存储所述公钥矩阵的bram数量n以及各bram中分别存储的矩阵数据行数d之间满足n*d≥a。
17.更进一步的,若n*d=a,则各bram的数据分布方式如下:在brami(1 ≤i≤n)中,头部存储(i-1)个填充数据,中间存储d行矩阵数据,尾部存储(n-i) 个填充数据。
18.更进一步的,若n*d>a,则各bram的数据分布方式如下:在brami(1 ≤i≤n-1)中,头部存储(i-1)个填充数据,中间存储d行矩阵数据,尾部存储(n-i) 个填充数据;在bramn中,头部存储(n-1)个填充数据,中间存储(n*d-a) 行矩阵数据,尾部存储(a+d-n*d)个填充数据。
19.更进一步的,同一计算单元在读取各brami中的数据时,均访问相同的内部地址。
20.作为一种优选方案,所述密钥生成装置包括排序模块、第一求值模块、高斯消除模块以及最小多项式生成模块;所述排序模块用于将输入所述密钥生成装置的随机数组r1的前p个元素转化为有限域序列数组l,作为私钥sk的一部分存入所述私钥存储装置;所述最小多项式生成模块用于将所述随机数组r1的后q 个元素转化生成私钥sk的另一部分存入所述私钥存储装置;
21.所述第一求值模块以及高斯消除模块用于将所述有限域序列数组l转化生成公钥pk存入所述公钥存储装置。
22.进一步的,所述随机数组r1按以下方式划分前p个元素与后q个元素:
23.p=2b;q=4t;其中,b表示预设的码长,t表示预设的纠错个数。
24.作为一种优选方案,所述解密装置包括第一synd模块、第二synd模块、bm 模块、第
二求值模块以及比较模块;其中,所述第一synd模块的输入端接收密文c以及私钥sk,输出端连接所述bm模块以及比较模块的输入端;所述第二synd模块的输入端接收私钥sk,输出端连接所述比较模块的输入端;所述bm 模块的输出端连接所述第二求值模块的输入端;所述第二求值模块的输出端连接所述第二synd模块的输入端。
附图说明
25.图1为本发明实施例提供的基于classic mceliece密码体制的密码系统示意图;
26.图2为本发明实施例提供的基于classic mceliece密码体制的密码系统中的公钥存储方式的示例;
27.图3为本发明实施例提供的基于classic mceliece密码体制的密码系统中的 syndrome模块的运行示例。
具体实施方式
28.附图仅用于示例性说明,不能理解为对本专利的限制;
29.应当明确,所描述的实施例仅仅是本技术实施例一部分实施例,而不是全部的实施例。基于本技术实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本技术实施例保护的范围。
30.在本技术实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术实施例。在本技术实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
31.下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。在本技术的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本技术中的具体含义。
32.此外,在本技术的描述中,除非另有说明,“多个”是指两个或两个以上。“和 /或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。以下结合附图和实施例对本发明做进一步的阐述。
33.为了解决现有技术的局限性,本实施例提供了一种技术方案,下面结合附图和实施例对本发明的技术方案做进一步的说明。
34.实施例1
35.请参考图1和图3,一种基于classic mceliece密码体制的密码系统,包括密钥生成装置1、加密装置2、解密装置3、公钥存储模块4以及私钥存储模块5;所述密钥生成装置1连接所述公钥存储模块4以及私钥存储模块5;所述公钥存储模块4连接所述加密装置2;所述私钥存储模块5连接所述解密装置3;其中:
36.所述密钥生成装置1用于根据输入的随机数组r1生成公钥pk存储于所述公钥存储
模块4以及私钥sk存储于所述私钥存储模块5;
37.所述加密装置2用于根据输入的随机数组r2以及从所述公钥存储模块4读取的公钥pk生成密文c;所述加密装置2包括数据筛选模块21、误差向量生成模块22以及syndrome模块23;
38.所述数据筛选模块21用于对所述随机数组r2进行筛选;所述误差向量生成模块22用于根据所述随机数组r2以及所述数据筛选模块21对所述随机数组r2 的筛选结果生成向量e;所述syndrome模块23用于根据所述向量e以及从所述公钥存储模块4读取的公钥pk生成密文c;
39.所述syndrome模块23包括控制单元以及n个计算单元232;所述控制单元用于对所述向量e分若干次进行读取,以行为单位、每行分若干次读取的方式对所述公钥pk进行读取;
40.所述计算单元232包括与操作器a、异或操作器b、寄存器c1、寄存器c2;所述与操作器a连接所述异或操作器b,所述异或操作器b连接所述寄存器c2;所述寄存器c1用于向下一级计算单元232中的与操作器a以及寄存器c1传递所述向量e;
41.所述解密装置3用于根据从所述私钥存储模块5读取的私钥sk对输入的密文c进行解密,得到解密结果。
42.相较于现有技术,本发明基于classic mceliece密码体制的密码系统可以部署在fpga上,通过提供一种syndrome模块来完成公钥与向量e相乘,能够充分利用算法运行过程中的并行度和硬件丰富的逻辑资源,从而加速classicmceliece密码体制的运行速度;可支持不同安全系数下的结构变换,根据需求进行并行度的调整。
43.具体的,syndrome模块需要完成大小为a*b的矩阵pk与长度为b的向量e 的相乘操作,最后得到长度为b的向量作为最终结果。在二元矩阵中,相乘操作简化为与操作,相加操作简化为异或操作。在计算过程中,长度为b的向量相乘需要进行p次。
44.对于并行度为n的syndrome模块,使用n个对应的计算单元,计算单元的输入分别是矩阵中的前n行和向量e,因此,在n个单元同时工作时,可以同时计算矩阵中的n行数据与向量e的结果。而对于重复使用的向量e,为了尽量减少访问存储的次数,n个计算单元并不是同时开始有效数据的计算。向量e分多次读出,在n个计算单元中依次流动,当向量e开始流动至对应的计算单元时(即计算单元开始有效数据计算的时刻),该单元开始有效数据的运算。而当向量e流动至第n个计算单元时,此时所有的计算单元均计算对应的有效数据,当一行数据被完整读出时,即可得到第一个输出结果,接下来的n个周期,即可得到n个结果数据的输出。
45.而classic mceliece密码体制是基于纠错编码的密码体制,该密码体制中可纠错的码字的参数为t,加密过程首先需要生成一个权重为t的向量e,向量e的长度为码长b(t《b),将向量e与公钥矩阵pk进行相乘运算,从而得到密文向量c。加密模块接收输入的随机数组r2,并对数组内的数据进行筛选,若数组内包含指定范围内t个不重复数据,则可以确定向量e中的非零元素的位置分布,从而生成完整的向量e。随后,将公钥pk以行为单位从存储单元中取出,进行向量相乘运算得到密文c。其中,根据已提交的安全系数,可以确定各个安全系数下的公钥的尺寸。如下表所示:
[0046][0047][0048]
其中,m即有限域比特数,b为码长,t为纠错个数;可见公钥的尺寸非常的大。
[0049]
同时,在fpga平台中,存储主要由两种资源实现,分别是分布式存储和块存储(block ram),块存储也称为bram,是用于存储批量数据的存储资源。由于传统的加密方案无提及公钥存储方案,每次取出一行公钥所造成的数据传输量大。对于bram存储而言,数据的存储分散,难以管理。
[0050]
另外,对于传统的加密方案而言,由于一次性取出整行数据,在扩展并行度上有所局限。
[0051]
因此,作为一种优选实施例,所述公钥存储模块4按以下方式存储a行b列的公钥矩阵构成的所述公钥pk:以行为单位将所述公钥矩阵的矩阵数据存储在n 个bram中,各bram中分别存储最多d行矩阵数据以及至少(n-1)个填充数据。
[0052]
具体的,数据位宽越大,可支持的时钟工作频率可能降低,综合多方面因素考虑,可以指定各bram每次读出的数据位宽为32bit,则公钥矩阵一行数据需要分次读出。
[0053]
进一步的,所述公钥矩阵的行数a、存储所述公钥矩阵的bram数量n以及各bram中分别存储的矩阵数据行数d之间满足n*d≥a。
[0054]
更进一步的,若n*d=a,则各bram的数据分布方式如下:在brami(1 ≤i≤n)中,头部存储(i-1)个填充数据,中间存储d行矩阵数据,尾部存储(n-i) 个填充数据。
[0055]
更进一步的,若n*d>a,则各bram的数据分布方式如下:在brami(1 ≤i≤n-1)中,头部存储(i-1)个填充数据,中间存储d行矩阵数据,尾部存储(n-i) 个填充数据;在bramn中,头部存储(n-1)个填充数据,中间存储(n*d-a) 行矩阵数据,尾部存储(a+d-n*d)个填充数据。
[0056]
更进一步的,由于n个计算单元并非同时开始有效数据的运算,而是跟随着向量e的流动而开始,为了简化地址访问逻辑,同一计算单元232在读取各 brami中的数据时,均访问相同的内部地址。
[0057]
以768*2720大小的公钥矩阵为例,请参阅图2,p为填充的数据,矩阵共 768行,分存在192个bram中,每个bram中存储4行矩阵数据和n-1个填充数据;填充数据的分布的方式如下,在bram1的尾部填充n-1个数据,在 bram2的头部填充1个数据,尾部填充n-2个数据,以此类推,bram192的头部填充n-1个数据,从而完成公钥存储。
[0058]
通过上述的公钥存储方式,能更好地与加密过程中采取的并行度相互配合,使得系统可根据并行度灵活调整存储策略。
[0059]
接下来,6*96大小的二元矩阵与长度为96比特的向量相乘作为例子,设置 syndrome模块的并行度n=3,即该syndrome模块内部包含3个计算单元,如图 3所示,标号
①②③
分别代表内部的3个计算单元,在每个计算单元中,标识a 表示逻辑与单元,标识b表示逻辑异或单元,标识c标识使用寄存器进行数据寄存。向量的长度为96比特,每次读出数据的位宽为32比特,因此,每一个向量需要分3次读出,e0,e1,e2为同一向量e分三次读出的结果,x(0,0),x(0,1),x(0,2) 分别为公钥矩阵第0行分三次读出的结果,其余变量以此类推,padding表示填充的数据,对计算结果不产生影响。
[0060]
基于上述定义,具体的计算步骤如下,在t=0时,将e0,x(0,0)和两个填充数据送入模块,此时单元

工作,完成向量e0与x(0,0)的与操作并寄存结果。在t=1时,将e1,x(0,1)和一个填充数据送入模块,单元

完成e1 与x(0,1)的与并和本单元上周期的结果进行异或,单元

完成e0与x(1,0) 的与,并且寄存结果。在t=2时,单元

完成e2与x(0,2)的与并和上单元上周期的结果进行异或,单元

完成e1与x(1,1)的与并于上周期结果异或,单元

完成e0与x(2,0)的与,后续周期与第三周期类似,三个单元均开始有效数据的计算。而从t=3开始,即可轮流从





单元获得输出y0,y1, y2等输出结果,最终当e输入端的最后一个数据流动到

单元,即可完成所有的数据运算,从而得到最终结果以n=3的情况为例,标号为
①‑③
的计算单元分别接收第1-3行的矩阵向量作为输入,编号为i的计算单元在第i个时钟周期开始进行有效数据的运算,对于第一行的数据,不需要在头部进行填充,而第二行的数据,由于第一个周期的运算并非有效,因此需要在头部填充1个数据,同理,第n行数据需要在头部填充n-1个数据,从而保证计算单元获得的数据是有效的。假设一个bram中存储4行公钥数据,为了保持数据总长度(有效数据+ 填充数据)的一致性,bram中共包含四行有效公钥数据和n-1个额外填充数据,而填充的规则如图2所示,p表示填充数据,填充的数据并不影响流程中的计算结果,只是为了简化使用地址访问多个存储的控制逻辑。
[0061]
由于前后模块之间运算的吞吐量有区别,因此,作为一种优选实施例,所述数据筛选模块21与所述误差向量生成模块22之间采用fifo单元进行缓冲。若所述数据筛选模块21的输出结果无效,则fifo中的数据不会被所述误差向量生成模块22读取,而如果所述数据筛选模块21的输出结果有效,则fifo中的数据会被所述误差向量生成模块22读取。
[0062]
实施例2
[0063]
本实施例可以视为在实施例1基础上衍生、改进或补充得到的结果,具体方案为:一种基于classic mceliece密码体制的密码系统,包括密钥生成装置1、加密装置2、解密装置3、公钥存储模块4以及私钥存储模块5;所述密钥生成装置1连接所述公钥存储模块4以及私钥存储模块5;所述公钥存储模块4连接所述加密装置2;所述私钥存储模块5连接所述解密装置3;其中:
[0064]
所述密钥生成装置1用于根据输入的随机数组r1生成公钥pk存储于所述公钥存储模块4以及私钥sk存储于所述私钥存储模块5;
[0065]
所述密钥生成装置1包括排序模块11、第一求值模块12、高斯消除模块13 以及最小多项式生成模块14;所述排序模块11用于将输入所述密钥生成装置1 的随机数组r1的前p个元素转化为有限域序列数组l,作为私钥sk的一部分存入所述私钥存储装置5;所述最小多项式生成模块14用于将所述随机数组r1的后q个元素转化生成私钥sk的另一部分存入所
述私钥存储装置5;
[0066]
所述第一求值模块12以及高斯消除模块13用于将所述有限域序列数组l 转化生成公钥pk存入所述公钥存储装置4;
[0067]
所述加密装置2用于根据输入的随机数组r2以及从所述公钥存储模块4读取的公钥pk生成密文c;所述加密装置2包括数据筛选模块21、误差向量生成模块22以及syndrome模块23;
[0068]
所述数据筛选模块21用于对所述随机数组r2进行筛选;所述误差向量生成模块22用于根据所述随机数组r2以及所述数据筛选模块21对所述随机数组r2 的筛选结果生成向量e;所述syndrome模块23用于根据所述向量e以及从所述公钥存储模块4读取的公钥pk生成密文c;
[0069]
所述syndrome模块23包括控制单元以及n个计算单元232;所述控制单元用于对所述向量e分若干次进行读取,以行为单位、每行分若干次读取的方式对所述公钥pk进行读取;
[0070]
所述计算单元232包括与操作器a、异或操作器b、寄存器c1、寄存器c2;所述与操作器a连接所述异或操作器b,所述异或操作器b连接所述寄存器c2;所述寄存器c1用于向下一级计算单元232中的与操作器a以及寄存器c1传递所述向量e;
[0071]
所述解密装置3用于根据从所述私钥存储模块5读取的私钥sk对输入的密文c进行解密,得到解密结果。
[0072]
作为一种优选实施例,所述随机数组r1按以下方式划分前p个元素与后q 个元素:
[0073]
p=2b;q=4t;其中,b表示预设的码长,t表示预设的纠错个数。
[0074]
实施例3
[0075]
本实施例可以视为在实施例1或2基础上衍生、改进或补充得到的结果,具体方案为:一种基于classic mceliece密码体制的密码系统,包括密钥生成装置 1、加密装置2、解密装置3、公钥存储模块4以及私钥存储模块5;所述密钥生成装置1连接所述公钥存储模块4以及私钥存储模块5;所述公钥存储模块4连接所述加密装置2;所述私钥存储模块5连接所述解密装置3;其中:
[0076]
所述密钥生成装置1用于根据输入的随机数组r1生成公钥pk存储于所述公钥存储模块4以及私钥sk存储于所述私钥存储模块5;
[0077]
所述加密装置2用于根据输入的随机数组r2以及从所述公钥存储模块4读取的公钥pk生成密文c;所述加密装置2包括数据筛选模块21、误差向量生成模块22以及syndrome模块23;
[0078]
所述数据筛选模块21用于对所述随机数组r2进行筛选;所述误差向量生成模块22用于根据所述随机数组r2以及所述数据筛选模块21对所述随机数组r2 的筛选结果生成向量e;所述syndrome模块23用于根据所述向量e以及从所述公钥存储模块4读取的公钥pk生成密文c;
[0079]
所述syndrome模块23包括控制单元以及n个计算单元232;所述控制单元用于对所述向量e分若干次进行读取,以行为单位、每行分若干次读取的方式对所述公钥pk进行读取;
[0080]
所述计算单元232包括与操作器a、异或操作器b、寄存器c1、寄存器c2;所述与操作
器a连接所述异或操作器b,所述异或操作器b连接所述寄存器c2;所述寄存器c1用于向下一级计算单元232中的与操作器a以及寄存器c1传递所述向量e;
[0081]
所述解密装置3用于根据从所述私钥存储模块5读取的私钥sk对输入的密文c进行解密,得到解密结果;
[0082]
所述解密装置3包括第一synd模块31、第二synd模块32、bm模块33、第二求值模块34以及比较模块35;其中,所述第一synd模块31的输入端接收密文c以及私钥sk,输出端连接所述bm模块33以及比较模块35的输入端;所述第二synd模块32的输入端接收私钥sk,输出端连接所述比较模块35的输入端;所述bm模块33的输出端连接所述第二求值模块34的输入端;所述第二求值模块34的输出端连接所述第二synd模块32的输入端。
[0083]
具体的,synd算法在于使用内部的私钥,根据输入的向量的取值进行计算,最后输出包含2t个元素的数组;更具体的,所述第一synd模块的输入向量为密文,输出结果为s1,作为比较模块的其中一路输入;所述第二synd模块的输入向量为第二求值模块的输出结果,所述第二synd模块的输出结果为s2,作为比较模块的另一路输入;最终,通过比较模块对s1和s2进行比较,若结果相同,则解密结果为成功。
[0084]
所述bm模块33实现的是berlekamp-massey算法,bm模块以所述第一synd 模块的输出序列s1作为输入,在遍历s1中的元素后,通过2t轮计算获得序列的最小多项式c,序列c包含t个元素。
[0085]
作为一种优选实施例,所述解密装置3内部也可以采用fifo单元进行缓冲。
[0086]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1