一种基于LWE的加密方法与流程

文档序号:32614157发布日期:2022-12-20 20:57阅读:25来源:国知局
一种基于LWE的加密方法与流程
一种基于lwe的加密方法
技术领域
1.本发明涉及信息技术领域,尤其涉及一种能够自动化生成密钥并提升方案的可靠性的方法及存储介质。


背景技术:

2.传统区块链加密机制是:用sha和ecdsa算法进行数据签名,hash算法以及base58编码算法进行加密等等,这些算法在量子计算面前不堪一击,对现行的区块链平台造成很大的安全隐患,加密体系的安全性是区块链面临量子计算的到来必须逾越的课题。


技术实现要素:

3.为此,需要提供一种能够进行密码的生成和加密的方法,从而更好地进行区块链领域中进行强的技术效果。
4.为实现上述目的,发明人提供了一种基于lwe的加密方法,包括如下步骤,
5.获取lwe问题的安全参数n,根据所述安全参数n,依次计算出m、q、b的值,其中q为模参数,b满足q/4》mb;b为误差上限,m为线性方程组的方程组数,而n代表了每个方程中有多少个未知数;
6.然后随机选取lwe问题中所需的矩阵e=(xb)
t
,矩阵a的维度为m
×
n,s为随机向量,为向量e的无限范数,xb为一个最大值封顶为b的随机分布,zq为(-q/2,q/2)范围的一个素数有限域;
7.计算出误差b=as+e%q;
8.加密步骤:
9.对每一个二进制位单独进行加密,且每次只可以处理一个bit。随机选取一个nonce向量通过regev算法计算出密文的第一部分c0=r
t
a;随后再计算出密文的第二部分c1=r
t
b+(q/2)x;最终(c0,c1)即为输出的加密密文;
10.解密步骤:
11.令z=c
1-c0·
s,判断z是否《q/4,如果是,则输出解密成功的结果,否则输出解密失败的结果。
12.在本技术的一些实施例中,输出密钥步骤:输出私钥sk=s,公钥pk=(a,b)。
13.在本技术的一些实施例中,m是n的一个多项式倍数,m=poly(n)。
14.在本技术的一些实施例中,q也是n的一个多项式倍数,设置为o(n2)。
15.在本技术的一些实施例中,还包括步骤,所述向量e的维度为m。
16.通过上述方案,安全参数n的取值可以随机化生成,也可以通过人工方式进行设定,n的具体取值可以设计在内存之中,获取安全参数n的步骤可以通过调用内存来实现。m的取值随着n的变动而改变,m可以是n的多项式时间,q可以设置为n的二次多项式时间。随
着m的增大,误差上限b《《q,b决定和可以相差多少。上述方案的加密逻辑全部基于线性方程\线性矩阵,其运算大多是线性运算,因此本技术的算法方案比现有传统方案运算速度更快,且至少目前不存在解决lwe困难问题的多项式量子算法,从而本加密体系可以有效抵御量子攻击从而提升方案的安全性。
17.上述发明内容相关记载仅是本技术技术方案的概述,为了让本领域普通技术人员能够更清楚地了解本技术的技术方案,进而可以依据说明书的文字及附图记载的内容予以实施,并且为了让本技术的上述目的及其它目的、特征和优点能够更易于理解,以下结合本技术的具体实施方式及附图进行说明。
附图说明
18.图1为本发明一实施方式所述的基于lwe的加密方法流程图;
19.图2为本发明一实施方式所述的输出密钥步骤示意图;
20.图3为本发明另一实施方式所述的复杂度设置示意图;
21.图4为本发明另一实施方式所述的模式参数q设置示意图;
22.图5为本发明一实施方式所述的基于lwe的加密存储介质示意图。
具体实施方式
23.为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
24.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中各个位置出现的“实施例”一词并不一定指代相同的实施例,亦不特别限定其与其它实施例之间的独立性或关联性。原则上,在本技术中,只要不存在技术矛盾或冲突,各实施例中所提到的各项技术特征均可以以任意方式进行组合,以形成相应的可实施的技术方案。
25.除非另有定义,本文所使用的技术术语的含义与本技术所属技术领域的技术人员通常理解的含义相同;本文中对相关术语的使用只是为了描述具体的实施例,而不是旨在限制本技术。
26.在本技术的描述中,用语“和/或”是一种用于描述对象之间逻辑关系的表述,表示可以存在三种关系,例如a和/或b,表示:存在a,存在b,以及同时存在a和b这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的逻辑关系。
27.在本技术中,诸如“第一”和“第二”之类的用语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何实际的数量、主次或顺序等关系。
28.在没有更多限制的情况下,在本技术中,语句中所使用的“包括”、“包含”、“具有”或者其他类似的表述,意在涵盖非排他性的包含,这些表述并不排除在包括所述要素的过程、方法或者产品中还可以存在另外的要素,从而使得包括一系列要素的过程、方法或者产品中不仅可以包括那些限定的要素,而且还可以包括没有明确列出的其他要素,或者还包括为这种过程、方法或者产品所固有的要素。
29.与《审查指南》中的理解相同,在本技术中,“大于”、“小于”、“超过”等表述理解为
不包括本数;“以上”、“以下”、“以内”等表述理解为包括本数。此外,在本技术实施例的描述中“多个”的含义是两个以上(包括两个),与之类似的与“多”相关的表述亦做此类理解,例如“多组”、“多次”等,除非另有明确具体的限定。
30.在本技术实施例的描述中,所使用的与空间相关的表述,诸如“中心”“纵向”“横向”“长度”“宽度”“厚度”“上”“下”“前”“后”“左”“右”“竖直”“水平”“垂直”“顶”“底”“内”“外”“顺时针”“逆时针”“轴向”“径向”“周向”等,所指示的方位或位置关系是基于具体实施例或附图所示的方位或位置关系,仅是为了便于描述本技术的具体实施例或便于读者理解,而不是指示或暗示所指的装置或部件必须具有特定的位置、特定的方位、或以特定的方位构造或操作,因此不能理解为对本技术实施例的限制。
31.除非另有明确的规定或限定,在本技术实施例的描述中,所使用的“安装”“相连”“连接”“固定”“设置”等用语应做广义理解。例如,所述“连接”可以是固定连接,也可以是可拆卸连接,或成一体设置;其可以是机械连接,也可以是电连接,也可以是通信连接;其可以是直接相连,也可以通过中间媒介间接相连;其可以是两个元件内部的连通或两个元件的相互作用关系。对于本技术所属技术领域的技术人员而言,可以根据具体情况理解上述用语在本技术实施例中的具体含义。
32.带误差学习(learning with error)是一种困难问题学习的方法,是一个格上的平均性困难问题,可以被归约到格的svp等困难问题,是抗量子计算攻击的,目前基于格的主流加密方案都是构建在lwe之上。本技术的一种如图1所示的实施例中,展示了一种基于lwe的加密方法,包括如下步骤,
33.s1、获取lwe问题的安全参数n,根据所述安全参数n,依次计算出m、q、b的值,其中q为模参数,b满足q/4》mb;b为误差上限,m为线性方程组的方程组数,而n代表了每个方程中有多少个未知数;
34.s2、然后计算获得lwe问题中所需的矩阵e=(xb)
t
,矩阵a的维度为m
×
n,s为随机向量,为向量e的无限范数,xb为一个最大值封顶为b的随机分布,zq为(-q/2,q/2)范围的一个素数有限域;
35.计算出误差b=as+e%q;
36.s3、加密步骤:
37.对每一个二进制位单独进行加密,且每次只可以处理一个bit,随机选取一个nonce向量通过regev算法计算出密文的第一部分c0=r
t
a;随后再计算出密文的第二部分c1=r
t
b+(q/2)x;最终(c0,c1)即为输出的加密密文;
38.s4、解密步骤:
39.令z=c
1-c0·
s,判断z是否《q/4,如果是,则输出解密成功的结果,否则输出解密失败的结果。
40.在上述方案中,安全参数n的取值可以随机化生成,也可以通过人工方式进行设定,n的具体取值可以设计在内存之中,获取安全参数n的步骤可以通过调用内存来实现。m的取值随着n的变动而改变,m可以是n的多项式时间,q可以设置为n的二次多项式时间。随着m的增大,误差上限b《《q,b决定和可以相差多少。这里的加密步骤与解密步骤可以分别
通过系统中的加密装置和解密装置进行,regev算法是一种对偶加密算法,加密装置获得加密密文之后,可以将加密密文发送至解密装置,解密装置进行解密验证步骤,能够达到解密密文的技术效果。上述方案的加密逻辑全部基于线性方程\线性矩阵,其运算大多是线性运算,因此本技术的算法方案比现有传统方案运算速度更快,且至少目前不存在解决lwe困难问题的多项式量子算法,从而本加密体系可以有效抵御量子攻击从而提升方案的安全性。
41.在本技术的一些实施例中,如图2所示,还包括输出密钥步骤s10:输出私钥sk=s,公钥pk=(a,b)。通过进行密钥输出步骤,将私钥和公钥分开保存,能够使得本方案的安全性得到有效提升。
42.在本技术的一些实施例中,如图3所示,还进行步骤s11、设置m是n的一个多项式倍数,m=poly(n)。通过设计函数关系为m=poly(n),能够使得m的复杂度随着n的变化进行指数级的提升,通过对安全参数n进行调整,能够更好地进行密钥的生成和调试。
43.在本技术的一些实施例中,如图4所示,还进行步骤s12、设置q是n的一个多项式倍数,设置为o(n2)。通过上述方案,能够使得模参数q的复杂度随着n的变化进行指数级的提升,通过对安全参数n进行调整,能够更好地进行密钥的生成和调试。
44.在本技术的一些实施例中,还包括步骤,s13、设置所述向量e的维度为m。通过对向量e的维度进行调整,能够更好地进行密钥的生成和调试。
45.如图5所示,一种基于lwe的加密存储介质50,存储有计算机程序,所述计算机程序在被运行时将执行包括如下步骤,
46.s1、获取lwe问题的安全参数n,根据所述安全参数n,依次计算出m、q、b的值,其中q为模参数,b满足q/4》mb;b为误差上限,m为线性方程组的方程组数,而n代表了每个方程中有多少个未知数;
47.s2、然后计算获得lwe问题中所需的矩阵e=(xb)
t
,矩阵a的维度为m
×
n,s为随机向量,为向量e的无限范数,xb为一个最大值封顶为b的随机分布,zq为(-q/2,q/2)范围的一个素数有限域;
48.计算出误差b=as+e%q;
49.s3、加密步骤:
50.对每一个二进制位单独进行加密,且每次只可以处理一个bit,随机选取一个nonce向量通过regev算法计算出密文的第一部分c0=r
t
a;随后再计算出密文的第二部分c1=r
t
b+(q/2)x;最终(c0,c1)即为输出的加密密文;
51.s4、解密步骤:
52.令z=c
1-c0·
s,判断z是否《q/4,如果是,则输出解密成功的结果,否则输出解密失败的结果。
53.在上述存储介质的运行方案中,安全参数n的取值可以随机化生成,也可以通过人工方式进行设定,n的具体取值可以设计在内存之中,获取安全参数n的步骤可以通过调用内存来实现。m的取值随着n的变动而改变,m可以是n的多项式时间,q可以设置为n的二次多项式时间。随着m的增大,误差上限b《《q,b决定和可以相差多少。这里的加密步骤与解密步骤可以分别通过系统中的加密装置和解密装置进行,regev算法是一种对偶加密算法,加密
装置获得加密密文之后,可以将加密密文发送至解密装置,解密装置进行解密验证步骤,能够达到解密密文的技术效果。上述方案的加密逻辑全部基于线性方程\线性矩阵,其运算大多是线性运算,因此本技术的算法方案比现有传统方案运算速度更快,且至少目前不存在解决lwe困难问题的多项式量子算法,从而本加密体系可以有效抵御量子攻击从而提升方案的安全性。在本技术的一些实施例中,矩阵a的维度为m
×
n。通过设置矩阵a的大小为方程组数*安全参数,能够方便矩阵a的使用并能够对m和n进行更快速地调用。
54.在本技术的一些实施例中,计算机程序在被运行时将执行包括输出密钥步骤s10:输出私钥sk=s,公钥pk=(a,b)。通过进行密钥输出步骤,将私钥和公钥分开保存,能够使得本方案的安全性得到有效提升。
55.在本技术的一些实施例中,计算机程序在被运行时将执行包括如下步骤:m是n的一个多项式倍数,m=poly(n)。能够使得m的复杂度随着n的变化进行指数级的提升,通过对安全参数n进行调整,能够更好地进行密钥的生成和调试。通过上述方案能够使得模参数q的复杂度随着n的变化进行指数级的提升,通过对安全参数n进行调整,能够更好地进行密钥的生成和调试。
56.在本技术的一些实施例中,计算机程序在被运行时将执行包括如下步骤:q也是n的一个多项式倍数,设置为o(n2)。通过上述方案,能够使得模参数q的复杂度随着n的变化进行指数级的提升,通过对安全参数n进行调整,能够更好地进行密钥的生成和调试。
57.在本技术的一些实施例中,所述计算机程序在被运行时还执行包括步骤,所述向量e的维度为m。通过对向量e的维度进行调整,能够更好地进行密钥的生成和调试。
58.在本技术的一些具体的实施例中,我们还将假定预设参数并进行如下代码化工作:
59.n=5
60.q=2^10
61.p=2^4
62.d=q//p
63.a=np.random.randint(0,q,n)
64.1.输出密钥
65.defkey_generate():
66.e1=np.random.randint(0,d//4)
67.s=np.random.randint(0,2,n)
68.s_n=-s
69.sk=np.concatenate((s_n,np.array[1]),axis=0)
[0070]
pk=np.sum(a*s)+e1
[0071]
return sk,pk
[0072]
2.加密
[0073]
m=15
[0074]
defecrpt(m,pk):
[0075]
e2=np.random.randint(0,d//8)
[0076]
c=pk+e2+d*m
[0077]
cipher=np.concatenate((a,np.array[c]),axis=0)%q
[0078]
return cipher
[0079]
3.解密
[0080]
defdcrpt(cipher,sk):
[0081]
drpt_m=np.round((np.sum(sk*cipher)%q)/d)
[0082]
return int(dcrpt_m)
[0083]
defeval_add(c1,c2):
[0084]
c3=(c1.copy()+c2.copy())%q
[0085]
return c3
[0086]
defeval_const_mul(const,c):
[0087]
c4=(c.copy()*const)%q
[0088]
return c4
[0089]
加解密结果:
[0090]
sk,pk=key_generate()
[0091]
c1=ecrpt(3,pk)
[0092]
dcrpt_m1=dcrpt(c1,sk)
[0093]
output(dcrpt_m1)3
[0094]
c2=ecrpt(7,pk)
[0095]
dcrpt_m2=dcrpt(c2,sk)
[0096]
output(dcrpt_m2)7
[0097]
c3=eval_add(c1,c2)
[0098]
output(dcrpt(c3,sk))10
[0099]
c4=eval_const_mul(2,c2)
[0100]
output(dcrpt(c4,sk))14。
[0101]
综上所述,安全参数n的取值可以随机化生成,也可以通过人工方式进行设定,n的具体取值可以设计在内存之中,获取安全参数n的步骤可以通过调用内存来实现。m的取值随着n的变动而改变,m可以是n的多项式时间,q可以设置为n的二次多项式时间。随着m的增大,误差上限b《《q,b决定和可以相差多少。这里的加密步骤与解密步骤可以分别通过系统中的加密装置和解密装置进行,regev算法是一种对偶加密算法,加密装置获得加密密文之后,可以将加密密文发送至解密装置,解密装置进行解密验证步骤,能够达到解密密文的技术效果。上述方案的加密逻辑全部基于线性方程\线性矩阵,其运算大多是线性运算,因此本技术的算法方案比现有传统方案运算速度更快,且至少目前不存在解决lwe困难问题的多项式量子算法,从而本加密体系可以有效抵御量子攻击从而提升方案的安全性。
[0102]
需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1