本发明属于网络信息安全技术领域,具体涉及到密码学、格公钥密码体制或无证书签密方法。
背景技术:
签密能够以比先签名后加密低得多的计算和通信代价,在一个逻辑步骤内同时完成加密和签名操作。然而,签密作为十分重要的密码原语在格上的构造发展相对缓慢。
1996年,ajtai发现某些著名的格问题的最坏情况复杂性和平均情况复杂性之间存在一种联系。后来ajtai和dwork提出了一种基于格理论的公钥密码体制,自此便为公钥密码体制开辟了一个新的领域。ggh公钥密码体制,ntru公钥密码体制,regev公钥密码体制等基于格理论的公钥密码体制相继提出。由于它们具有抵抗量子计算攻击而且运算简单的优点,成为众多学者研究和关注的热点。2013年,yan等人提出了标准模型下基于格的高效签密方案。2015年,yan等人提出了一种格上基于身份的签密方案。2016年,路秀华等人提出了无陷门的格基签密方案。2018年,gérard和merckx提出了格上的后量子签密方案。随着格公钥密码体制的不断发展,基于格的各种签密算法也越来越多。
为了解决身份密码学中的密钥托管问题和传统公钥密码算法中涉及到的证书管理问题,在2003年的亚密会上,ai-riyami和paterson提出无证书密码学,减少了对密钥生成中心的信赖,密钥生成中心生成用户的部分私钥,用户的完整私钥由部分私钥和用户自己随机选取的秘密值构成,而用户公钥由用户自己计算得出。构造无证书的密码方案一直是密码学界感兴趣的研究方向。然而,目前并没有后量子安全的无证书签密被提出。
技术实现要素:
本发明所要解决的技术问题在于克服现有技术的不足,提供一种后量子安全的格上无证书签密方法。
解决上述技术问题所采用的技术方案是由下述步骤组成:
a、系统初始化
(a1)可信方选取素数模q:
q=poly(n)
其中n为安全参数,poly(n)为关于n的多项式。
(a2)可信方对logq向上取整得到整数k,取整数n为2n与k的乘积。
(a3)可信方定义带错误学习的错误率α∈(0,1),选取高斯分布的偏差s1:
(a4)可信方定义哈希函数h1和哈希函数h2:
(a5)密钥生成中心用陷门生成算法gentrap(1n,1n,q)得到nk行nk列的矩阵r和n行n列的矩阵a:
其中
(a6)可信方定义离散高斯分布的参数
(a7)可信方确定原像抽样算法的参数s2:
其中s1(r)表示矩阵r的奇异值。
(a8)可信方公开系统参数params:
params={a,r,h1,h2,s1,s2,χb}
其中χb为误差分布、与离散高斯分布dz,qα相同,b为误差分布参数。
b、密钥提取
(b1)密钥生成中心kgc确定随机化身份u:
u=h1(id)
其中id∈{0,1}*、为用户的身份。
(b2)密钥生成中心kgc采用原像抽样算法
(b3)密钥生成中心kgc通过安全信道将部分私钥d传送给用户,用户验证满足ad=u且
c、密钥生成
(c1)身份为id的用户选择自己的秘密值xid,确定私钥sk:
(c2)用户确定部分公钥b
其中e1为选自误差分布的m维向量、为正实数,b为n行m列矩阵,bt为矩阵b的转置矩阵,m与时间复杂度o(nlogq)相等。
(c3)用户设置公钥pk
d、用户签密
(d1)发送者随机选取向量y:
其中
(d2)用户设置部分签名h
其中m为明文。
(d3)用户以概率
σ′=ε+h
其中ε为部分签名,σ′编码后得到σ。
(d4)用户确定部分密文v1、部分密文v2以及部分密文v:
v=m+(b,r)+(w,h1(id))+2emodq
其中,r为m长的序列,w与e2为n维向量,e为一维向量。
(d5)用户输出签密密文c
c=(v|v1|v2)。
e、验证
(e1)接收方获得密文c,用接收方的公私钥对(pk2,sk2)进行解签密得到明文m:
m=[v-(v1,x)-(v2,d)]qmod2
(e2)接收方通过(id,ε,h,m)得到验证参数h′
当
在本发明的系统初始化步骤a、密钥提取步骤b、密钥生成c、用户签密步骤d中,本发明的安全参数n的取值为128或256或512。
本发明借鉴传统密码体制下无证书签密和格密码方法,构造出了一种后量子安全的格上无证书签密方法,无证书签密的效率高于先无证书签名后加密的效率,并且比基于格上的无证书签名方法增加了加密功能,相比于有限域离散对数和椭圆曲线离散对数假设下的无证书签密方法,可以抗量子计算攻击并且计算效率更高。本发明抵抗量子计算攻击、运算效率高等优点,可适用于电子签密领域。
附图说明
图1是本发明实施例1的流程图。
具体实施方式
下面结合附图和实施例对本发明进一步详细说明,但本发明不限于这些实施例。
实施例1
以安全参数n为256为例,后量子安全的格上无证书签密方法由下述步骤组成(如图1所示):
a、系统初始化
(a1)可信方选取素数模q:
q=poly(n)
其中n是安全参数,n取值为256,poly(n)为关于n的多项式。
(a2)可信方对logq向上取整得到整数k,取整数n为512与k的乘积。
(a3)可信方定义带错误学习的错误率α∈(0,1),选取高斯分布的偏差s1:
式中n取值为256。
(a4)可信方定义哈希函数h1和哈希函数h2:
式中n取值为256。
(a5)密钥生成中心用陷门生成算法gentrap(1n,1n,q)得到256k行256k列的矩阵r和256行n列的矩阵a:
其中
(a6)可信方定义离散高斯分布的参数
(a7)可信方确定原像抽样算法的参数s2:
其中s1(r)表示矩阵r的奇异值。
(a8)可信方公开系统参数params:
params={a,r,h1,h2,s1,s2,χb}
其中χb为误差分布、与离散高斯分布dz,qα相同,b为误差分布参数。
b、密钥提取
(b1)密钥生成中心kgc确定随机化身份u:
u=h1(id)
其中id∈{0,1}*、为用户的身份。
(b2)密钥生成中心kgc采用原像抽样算法
(b3)密钥生成中心kgc通过安全信道将部分私钥d传送给用户,用户验证满足ad=u且
c、密钥生成
(c1)身份为id的用户选择自己的秘密值xid,确定私钥sk:
式中n取值为256。
(c2)用户确定部分公钥b
其中e1为选自误差分布的m维向量、为正实数,b为n行m列矩阵,bt为矩阵b的转置矩阵,m与时间复杂度o(nlogq)相等,n取值为256。
(c3)用户设置公钥pk
式中n取值为256。
d、用户签密
(d1)发送者随机选取向量y:
其中
(d2)用户设置部分签名h
其中m为明文。
(d3)用户以概率
σ′=ε+h
其中ε为部分签名,σ′编码后得到σ。
(d4)用户确定部分密文v1、部分密文v2以及部分密文v:
v=m+(b,r)+(w,h1(id))+2emodq
其中,r为m长的序列,w与e2为n维向量,e为一维向量,n取值为256。
(d5)用户输出签密密文c
c=(v|v1|v2)
e、验证
(e1)接收方获得密文c,用接收方的公私钥对(pk2,sk2)进行解签密得到明文m
m=[v-(v1,x)-(v2,d)]qmod2
(e2)接收方通过(id,ε,h,m)得到验证参数h′
当
完成后量子安全的格上无证书签密。
由于本发明在用户部分签名采用了改进的部分签名h、确定部分密文v1、部分密文v2以及部分密文v方法,使得无证书签密的效率高于先无证书签名后加密的效率,并且比基于格上的无证书签名方法增加了加密功能,相比于有限域离散对数和椭圆曲线离散对数假设下的无证书签密方法,可以抗量子计算攻击并且计算效率更高。本发明具有抵抗量子计算攻击、运算效率高等优点,可适用于电子签密领域。
实施例2
以安全参数n为128为例,后量子安全的格上无证书签密方法由下述步骤组成:
a、系统初始化
(a1)可信方选取素数模q:
q=poly(n)
其中n是安全参数,n取值为128,poly(n)为关于n的多项式。
(a2)可信方对logq向上取整得到整数k,取整数n为256与k的乘积。
(a3)可信方定义带错误学习的错误率α∈(0,1),选取高斯分布的偏差s1:
式中n取值为128。
(a4)可信方定义哈希函数h1和哈希函数h2:
式中n取值为128。
(a5)密钥生成中心用陷门生成算法gentrap(1n,1n,q)得到128k行128k列的矩阵r和128行n列的矩阵a:
其中
(a6)可信方定义离散高斯分布的参数
(a7)可信方确定原像抽样算法的参数s2:
其中s1(r)表示矩阵r的奇异值。
(a8)可信方公开系统参数params:
params={a,r,h1,h2,s1,s2,χb}
其中χb为误差分布、与离散高斯分布dz,qα相同,b为误差分布参数。
b、密钥提取
(b1)密钥生成中心kgc确定随机化身份u:
u=h1(id)
其中id∈{0,1}*、为用户的身份。
(b2)密钥生成中心kgc采用原像抽样算法
(b3)密钥生成中心kgc通过安全信道将部分私钥d传送给用户,用户验证满足ad=u且
c、密钥生成
(c1)身份为id的用户选择自己的秘密值xid,确定私钥sk:
式中n取值为128。
(c2)用户确定部分公钥b:
其中e1为选自误差分布的m维向量、为正实数,b为n行m列矩阵,bt为矩阵b的转置矩阵,m与时间复杂度o(nlogq)相等,n取值为128。
(c3)用户设置公钥pk
式中n取值为128。
d、用户签密
(d1)发送者随机选取向量y:
其中
(d2)用户设置部分签名h
其中m为明文。
(d3)用户以概率
σ′=ε+h
其中ε为部分签名,σ′编码后得到σ。
(d4)用户确定部分密文v1、部分密文v2以及部分密文v:
v=m+(b,r)+(w,h1(id))+2emodq
其中,r为m长的序列,w与e2为n维向量,e为一维向量,n取值为128。
(d5)用户输出签密密文c
c=(v|v1|v2)
e、验证
验证步骤与实施例1相同。
完成后量子安全的格上无证书签密。
实施例3
以安全参数n为512为例,后量子安全的格上无证书签密方法由下述步骤组成:
a、系统初始化
(a1)可信方选取素数模q:
q=poly(n)
其中n是安全参数,n取值为512,poly(n)为关于n的多项式。
(a2)可信方对logq向上取整得到整数k,取整数n为1024与k的乘积。
(a3)可信方定义带错误学习的错误率α∈(0,1),选取高斯分布的偏差s1:
式中n取值为512。
(a4)可信方定义哈希函数h1和哈希函数h2:
式中n取值为512。
(a5)密钥生成中心用陷门生成算法gentrap(1n,1n,q)得到512k行512k列的矩阵r和512行n列的矩阵a:
其中
(a6)可信方定义离散高斯分布的参数
(a7)可信方确定原像抽样算法的参数s2:
其中s1(r)表示矩阵r的奇异值。
(a8)可信方公开系统参数params:
params={a,r,h1,h2,s1,s2,χb}
其中χb为误差分布、与离散高斯分布dz,qα相同,b为误差分布参数。
b、密钥提取
(b1)密钥生成中心kgc确定随机化身份u:
u=h1(id)
其中id∈{0,1}*、为用户的身份。
(b2)密钥生成中心kgc采用原像抽样算法
(b3)密钥生成中心kgc通过安全信道将部分私钥d传送给用户,用户验证满足ad=u且
c、密钥生成
(c1)身份为id的用户选择自己的秘密值xid,确定私钥sk:
式中n取值为512。
(c2)用户确定部分公钥b
其中e1为选自误差分布的m维向量、为正实数,b为n行m列矩阵,bt为矩阵b的转置矩阵,m与时间复杂度o(nlogq)相等,n取值为512。
(c3)用户设置公钥pk
式中n取值为512。
d、用户签密
(d1)发送者随机选取向量y:
其中
(d2)用户设置部分签名h
其中m为明文。
(d3)用户以概率
σ′=ε+h
其中ε为部分签名,σ′编码后得到σ。
(d4)用户确定部分密文v1、部分密文v2以及部分密文v:
v=m+(b,r)+(w,h1(id))+2emodq
其中,r为m长的序列,w与e2为n维向量,e为一维向量,n取值为512。
(d5)用户输出签密密文c
c=(v|v1|v2)
e、验证
验证步骤与实施例1相同。
完成后量子安全的格上无证书签密。