本发明属于信息安全技术领域,具体涉及一种基于格的加密方法。
背景技术:
随着shor算法的提出,大数分解和离散对数问题在多项式时间内可以用量子计算机解决。因此,基于经典数论难题的公钥加密体制在量子计算机面前毫无安全性可言。许多国家和地区开始投入巨大的人力物力来研制抗量子的密码算法以替代现有公钥算法,其中最有影响力的是美国标准与技术局发起的后量子算法征集项目。该项目得到了国际上广泛的关注。
作为基于数论难题的公钥密码的替代,基于格的密码被广泛认为是最有潜力的后量子密码之一。目前量子计算机尚未能对格密码造成威胁。特别是,格难题往往具有最难情形困难性保证,目前这是其他后量子密码所不具有的良好性质。
基于格设计的公钥加密算法所采用的底层困难问题一般为lwe问题及其在环或模上的变种。格加密往往采用类elgamal结构。以环lwe(rlwe)版本为例,其结构一般如下:
密钥生成:按照某种高度集中的分布抽取短多项式s,e,计算公钥(a,b=as+e),私钥s。
加密:按照某种高度集中的分布抽取短多项式r,e1,e2,计算密文c1=ar+e1,c2=encode(m)+(br+e2),其中encode(m)为消息m的某种编码。
解密:计算decode(c2-c1s)来恢复消息,其中decode为解码函数。
其中,对消息m最常见的编码是
技术实现要素:
本发明的目的在于提供一种基于格的加密方法,其底层困难问题是模lwe(mlwe)问题。
本发明涉及到剩余类环zq,当q为正偶数时,选取
对于zq中的任意元素x,和给定的非零正整数d,由整数环上的带余除法,可以得到x的表示如下:
x=d·quo(x)+rem(x)
其中quo(x)为x除以d的商,rem(x)为相应的余数且满足-d/2<=rem(x)<d/2。
给定整系数多项式f(x)=a0+a1x+a2x2+…+ajxj,对每个整系数ai对d做如上带余除法,即令ai=d·quo(ai)+rem(ai),则称多项式quo(a0)+quo(a1)x+quo(a2)x2+…+quo(aj)xj为f(x)关于d的商多项式,多项式rem(a0)+rem(a1)x+rem(a2)x2+…+rem(aj)xj为f(x)关于d的余数多项式。
本发明的公钥加密体制包括密钥生成,加密和解密三个算法。
一.密钥生成:选取正整数p、q、m、n、k和d,其中1<p<q且p与q互素,d<q;选取整系数多项式f(x),并记商环rq=zq[x]/f(x),其中zq[x]为剩余类环zq上的多项式环,类似地,记商环rp=zp[x]/f(x);选取环rq上的分布χ,χ′,一般选取离散高斯分布或中心二项分布等高度集中的分布,即按该分布选取rq中的多项式,将以很大的概率,该多项式所有系数的绝对值都比较小;选取
步骤1:生成矩阵
步骤2:生成秘密方阵
步骤3:生成错误矩阵
步骤4:计算私钥
步骤5:计算
步骤6:最终生成的私钥为s,公钥为(b,a)。
二.加密算法,包含以下步骤:
步骤1:输入消息
步骤2:发送方生成随机矩阵
步骤3:发送方生成错误矩阵
步骤4:发送方利用接收方的公钥的一部分a,计算
步骤5:发送方利用接收方的公钥的一部分b,计算
步骤6:对矩阵c的各分量多项式的各系数对d求余数,将得到的余数多项式矩阵记为rem(c),并令w=rem(c)·d-1modp。
步骤7:将消息矩阵m放到密文的第一部分,得到
步骤8:对矩阵c的各分量多项式的各系数对d求商,将得到的商多项式矩阵记为c2=quo(c)。
步骤9:发送方输出密文(c1,c2)。
三.解密算法,包含以下步骤:
步骤1:输入密文(c1,c2),私钥s。
步骤2:接收方通过计算c3=d·c2对c2进行解压缩;
步骤3:接收方利用自己的私钥s,计算m′=(c1s-c3modq)modp。
步骤4:接收方输出恢复的明文m′·d-1modp。
步骤3中的modq操作,指的是将相关矩阵各分量多项式的各系数调整到区间
注意到c1s-c3=p(e1s-ve0-e2+ms′-ws′)+rem(c)-wd+mdmodq,通过合理的参数选取,可以保证向量p(e1s-ve0-e2+ms′-ws′)+rem(c)-wd+md的各分量多项式的各系数以设定概率落在
特别地,当取m=n=k=1时,该体制的底层数学困难问题可以看做是环lwe问题。
与现有技术相比,本发明的积极效果为:
与之前类elgamal结构将消息放在密文第二部分的高位不同,本发明将消息放在了密文第一部分的低位,由于类elgamal结构的两部分密文并不具有对称性,因此本发明给出了一种本质上新的的加密体制,为利用密文低位来隐藏消息提供了一种有效的解决途径,结构清晰,易于实现,加解密速度快。通过与之前类elgamal结构的加密结合使用,可以实现利用密文的高位和低位同时隐藏密文。同时,由于引入了密文压缩的技术,也降低了通信的带宽需求。
附图说明
图1为本发明实施实例提供的密钥生成方法流程图;
图2为本发明实施实例提供的加密方法流程图;
图3为本发明实施实例提供的解密方法流程图。
具体实施方式
下面结合附图对本发明进行进一步详细描述。
首先生成公共参数:选取正整数p、q、m、n、k和d,其中1<p<q且p与q互素,d<q;选取整系数多项式f(x),并记环rq=zq[x]/f(x),rp=zp[x]/f(x);选取环rq上的离散高斯分布χ,χ′;选取
如图1所述,密钥生成方法步骤包括:
步骤1:生成n×m维矩阵a,其中a的各分量在多项式环rq上均匀选取。
步骤2:生成m×m维rq上的方阵s′,方阵各分量依照环rq上的分布χ抽取。
步骤3:生成n×m维rq上的方阵e0,方阵各分量依照环rq上的分布χ′抽取。
步骤4:计算
步骤5:计算
步骤6:返回公钥(b,a),私钥s。
如图2所示,加密方法步骤包括:
输入:消息
步骤1:生成k×n维矩阵v,矩阵各分量依照环rq上的分布χ抽取。
步骤2:生成k×m维矩阵e1和e2,矩阵各分量依照环rq上的分布χ′抽取。
步骤3:计算
步骤4:计算
步骤5:对矩阵c的各分量的各系数对d求余数后得到余数多项式矩阵记为rem(c),并令w=rem(c)·d-1modp。
步骤6:计算
步骤7:对矩阵c的各分量的各系数对d求商后得到的商多项式矩阵c2,记为
步骤8:返回密文(c1,c2)。
如图3所示,解密方法步骤包括:
输入:密文(c1,c2),私钥s
步骤1:计算c3=d·c2,
步骤2:计算m′=(c1s-c3modq)modp。
步骤3:返回明文m′·d-1modp。
为了保证解密算法以大于预设值p(例如取p=1-2-128)的概率解密出正确的消息,在选取公共参数时,应保证p(e1s-ve0-e2+ms′-ws′)+rem(c)-wd+md的各分量多项式的各系数以大于p的概率落在区间
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域技术人员来说,本发明可有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。