本发明属于信息安全,尤其涉及一种抗量子攻击的门限公钥加密系统及方法。
背景技术:
1、随着物联网的快速发展,各种设备部署在我们生活的每个角落,通过收集、处理和分析系统用户终端数据,为我们提供多样化的生活体验,提高生活质量。互联网网关和平台具有强大的通信和存储能力。它们承担着在设备和应用程序之间传输、存储、处理和分析数据的角色。然而,在基于网关的框架中,系统用户终端的敏感信息面临着隐私泄露、数据滥用和恶意访问等各种挑战。
2、这些挑战归根结底源于沟通过程中有意和无意的信息泄露。要应对这些挑战,密码技术是必要的。一种简单的方法是使用门限公钥加密(tpke)。网关对系统用户终端数据进行加密,并将密文上传到平台,确保系统用户终端数据在传输过程中的安全;平台以分布式方式持有系统用户终端私钥,确保系统用户终端数据在存储过程中不会被恶意解密者泄露。
3、随着量子计算机的发展,传统的(基于rsa的、基于ecc的)tpke方案已经不再安全,抗量子密码具有巨大的研究价值。基于格的密码是目前最高效的抗量子密码原语之一,kyber、dilithium和falcon已被正式选为nist项目抗量子密码标准。此外,因为tpke可以很好地应用于多方计算(mpc)中,而mpc通常是用ss来论证的,以及平台的解密参与者终端也可能会发送错误的“部分解密”,模拟安全性(ss)和可验证性对于tpke同样至关重要。
4、然而,现有的大多数tpke方案存在无法抵抗量子攻击、不能满足模拟安全性、不可验证性、效率不高等问题,更难以应用于基于网关的物联网等实际场景中。
技术实现思路
1、针对现有技术中存在的问题,本发明提出了一种抗量子攻击的门限公钥加密系统及方法,实现门限方案的模拟安全性,实现门限解密的可验证性。
2、本发明系统的技术方案为一种抗量子攻击的门限公钥加密系统,包括:
3、系统用户终端、可信认证服务器、可信服务器、多个解密参与者终端;
4、可信认证服务器定义多种参数及函数模型,应用shamir秘密共享设置主私钥、主公钥;提交注册申请,分解生成部分解密私钥,计算相应的验证公钥并公开;系统用户终端使用可信认证服务器公开的主公钥通过矩阵和向量运算加密机密消息并发送给可信服务器;通过循环判断直至生成所有的零知识证明,部分解密参与者终端将所有部分解密结果和对应的零知识证明打包发送给可信服务器;可信服务器将解密参与者终端发送来的零知识证明中的每一项进行验证,以判断解密参与者终端发送来的部分解密值有效性;可信服务器通过多项式线性运算和编码运算对密文做最终解密生成明文,将最终解密得到的明文分别发送给解密参与者终端。
5、本发明方法的技术方案为一种抗量子攻击的门限公钥加密方法,包括以下步骤:
6、步骤1:可信认证服务器定义多种参数及函数模型,应用shamir秘密共享设置主私钥、主公钥;
7、步骤2:提交注册申请,分解生成部分解密私钥,计算相应的验证公钥并公开;
8、步骤3:需要发送机密消息的系统用户终端根据特定的分布生成四组随机数,使用可信认证服务器公开的主公钥通过矩阵和向量运算加密机密消息并发送给可信服务器;
9、步骤4:通过向量运算利用私钥、抽样出的多项式向量和挑战值生成一个响应值,通过循环判断直至生成所有的零知识证明,部分解密参与者终端将所有部分解密结果和对应的零知识证明打包发送给可信服务器;
10、步骤5:可信服务器将解密参与者终端发送来的零知识证明中的每一项进行验证,以判断解密参与者终端发送来的部分解密值有效性;
11、步骤6:可信服务器确认发送来所有部分解密结果都能通过步骤5的验证后,通过多项式线性运算和编码运算对密文做最终解密生成明文,将最终解密得到的明文分别发送给解密参与者终端;
12、作为优选,步骤1所述可信认证服务器定义多种参数及函数模型,具体如下:
13、可信认证服务器选择系统的模素数,定义矩阵的维数以及多项式向量环,选定门限值以及系统所需的多种分布,定义一个无碰撞的哈希函数;
14、步骤1所述应用shamir秘密共享设置主私钥、主公钥,具体如下:
15、应用shamir秘密共享设置多个插值多项式为主私钥,并设置相应的主公钥,公开系统参数;
16、所述可信认证服务器选择系统的模素数,定义矩阵的维数以及多项式向量环为:
17、输入安全参数为λ,可信认证服务器选择模素数q,定义矩阵的维数m和n;
18、所述多项式向量环为:
19、
20、其中,表示系数大小范围在的多项式,是的n维扩展,每一维的元素都属于n是一个正整数表示维数,表示多项式环模多项式(xn+1)形成的多项式环,n是一个正整数表示多项式的阶,x表示多项式的变量,xn表示x的n次幂;
21、所述门限值为一个小于正整数t;
22、所述系统所需的多种分布为:
23、χsk,xtpk,xterr,xenc,xerr,xtdec
24、其中,xsk表示秘密值s的分布,xtpk表示主公钥中误差项e的分布,χterr表示每个解密参与者终端的掩码项的分布,χenc表示加密产生的误差项的分布,和χerr表示加密产生的误差项的分布,χtdec表示部分解密过程中产生的误差项的分布,i∈{1,…,k},k为系统内部分解密参与者终端的总人数,η为一个较小的正整数,lenη为正整数q为一个素数,表示q关于(2η+1)的对数的向下取整,表示将后者的值赋给前者,误差项e′ij代表解密参与者终端pi生成的第j部分解密结果uij对应的误差项,误差项代表解密参与者终端pi生成的部分解密结果对应的误差值,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
25、所述定义两个无碰撞的哈希函数为:
26、所述无碰撞的哈希函数为:
27、h:{0,1}*→bτ
28、其中,h作用是把解密参与者终端公钥和承诺值组合成的比特串映射到集合bτ中,{0,1}*表示长度为任意比特的二进制序列组合的集合,br表示系数中含有τ个1或-1,其他n-τ个数为0的多项式的集合,τ是一个小于多项式的阶的正整数;
29、所述应用shamir秘密共享设置若干个插值多项式为主私钥为:
30、可信认证服务器根据分布χsk随机选取一个多项式向量s作为秘密值,从环中均匀随机地抽样出n×(n-1)×t个随机数并赋值设置其中
31、n表示矩阵的列数,n表示多项式的阶,t表示门限值,fh(x,x)为所计算的第h个二元多项式,fhj(x)为一个一元多项式,x为二元多项式fh(x,x)的一个变量,x为二元多项式fh(x,x)的另一个变量,也是一元多项式fhj(x)的变量,xj表示x的j次幂,xk表示x的k次幂,表示第h个二元多项式fh(x,x)的关于变量xj项的系数多项式fhj(x)的关于变量xk项的系数,表示多项式向量s的第h个分量的第j项多项式系数,表示将后者的值赋给前者,q表示一个素数,mod表示取模的结果,{fh(x,x)}h∈{1,…,n}作为主私钥并保密,{fh(x,x)}h∈{1,…,n}表示总共n个二元多项式fh(x,x)组成的集合,表示将后者的值赋给前者;
32、所述设置相应的主公钥为:
33、可信认证服务器从环中均匀随机选取矩阵a,从环中均匀随机选取矩阵aζ,并从分布χtpk中抽样出一个误差项计算设置主公钥为(a,aζ,t),主公钥(a,aζ,t)公开;
34、其中,表示多项式环模多项式(xn+1)形成的多项式环,其中表示多项式环模多项式(xn+1)形成的多项式环,是的m×n维扩展,是的m×m维扩展,每一维的元素都属于m是一个正整数表示矩阵的行数,n是一个正整数表示矩阵的列数,n是一个正整数表示多项式的阶,x表示多项式的变量,xn表示x的n次幂,t表示一个由计算得出的多项式向量,表示将后者的值赋给前者,q表示一个素数;
35、所述公开系统参数为:
36、param={λ,q,m,n,τ,h}
37、其中,param为系统参数,λ为输入安全参数,q是选定的模素数,m是矩阵的行数,n是矩阵的列数,τ是一个小于多项式的阶的正整数,用于确定bτ集合的范围,h作用是把解密参与者终端公钥和承诺值组合成的比特串映射到集合bτ中,{0,1}*表示长度为任意比特的二进制序列组合的集合,bτ表示系数中含有τ个1或-1,其他n-τ个数为0的多项式的集合,τ是一个小于多项式的阶的正整数;
38、可信认证服务器保留主私钥s;
39、作为优选,步骤2所述提交注册申请,具体如下:
40、门限公钥加密系统中的解密参与者终端向可信认证服务器提交注册申请;
41、步骤2所述分解生成部分解密私钥,具体如下:
42、由可信认证服务器分别为每个解密参与者终端从特定分布抽样出一系列误差值,根据参与者的身份id和对数分解生成其对应的部分解密私钥;
43、步骤2所述计算相应的验证公钥并公开,具体如下:
44、从安全信道将部分解密私钥传输给对应的解密参与者终端,计算相应的验证公钥并公开;
45、所述门限公钥加密系统中的解密参与者终端向可信认证服务器提交注册申请为:
46、门限公钥加密系统中的解密参与者终端pi向可信认证服务器提交身份idi,表示发出系统用户终端注册申请,其中i∈{1,…,k},k为系统内部分解密参与者终端的总人数,pi表示第i个解密参与者终端,idi表示第i个解密参与者终端的身份;
47、所述可信认证服务器分别为每个解密参与者终端从特定分布抽样出一系列误差值为:
48、可信认证服务器为解密参与者终端pi根据分布生成(η+1)个误差值eij,根据分布生成误差值其中i∈{1,…,k},k为系统内部分解密参与者终端的总人数,pi表示第i个解密参与者终端,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,表示χtpk分布的n维扩展,n为一个正整数,表示χtpk分布的m维扩展,m为一个正整数,χtpk为步骤1中所定义的分布,误差项eij代表可信认证服务器为解密参与者终端pi生成的第j部分私钥sij对应的误差项,误差项代表可信认证服务器为解密参与者终端pi生成的私钥ζi对应的误差值,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
49、表示将后者的值赋给前者;
50、所述可信认证服务器根据参与者的身份id和对数分解生成其对应的部分解密私钥,从安全信道将部分解密私钥传输给对应的解密参与者终端为:
51、可信认证服务器根据参与者pi的身份idi计算
52、以(2η+1)的大小做对数分解得到根据分布抽样出ζi,设置为解密参与者终端pi的部分解密私钥,将其通过安全信道传输给pi;
53、其中,i∈{1,…,k},k为系统内部分解密参与者终端的总人数,pi表示第i个解密参与者终端,idi表示第i个解密参与者终端的身份,η为一个较小的正整数,lenη为正整数q为一个素数,表示q关于(2η+1)的对数的向下取整,表示χterr分布的m维扩展,m为一个正整数,xterr为步骤1中所定义的分布,表示多项式环模多项式(xn+1)形成的多项式环,n是一个正整数表示多项式的阶,x表示多项式的变量,xn表示x的n次幂,si是将第i个解密参与者终端的身份idi代入进二元多项式组{fh(x,x)}h∈{1,…,n}中计算得到的一个多项式向量,{fh(x,x)}h∈{1,…,n}表示总共n个二元多项式fh(x,x)组成的集合,其在步骤1中被具体定义,sij表示si做对数分解后生成的第j部分多项式向量,误差项eij代表可信认证服务器为解密参与者终端pi生成的第j部分私钥sij对应的误差项,误差项代表可信认证服务器为解密参与者终端pi生成的私钥ζi对应的误差值,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
54、所述可信认证服务器计算相应的验证公钥并公开为:
55、可信认证服务器计算计算将设置为解密参与者终端pi相应的验证公钥,并将其公开;
56、其中,i∈{1,…,k},k为系统内部分解密参与者终端的总人数,pi表示第i个解密参与者终端,η为一个较小的正整数,lenη为正整数q为一个素数,表示q关于(2η+1)的对数的向下取整,表示多项式环模多项式(xn+1)形成的多项式环,n是一个正整数表示多项式的阶,x表示多项式的变量,xn表示x的n次幂,m是向量的维数,a为主公钥中的矩阵,aζ为主公钥中的矩阵,表示将后者的值赋给前者,误差项eij代表可信认证服务器为解密参与者终端pi生成的第j部分私钥sij对应的误差值,误差项代表可信认证服务器为解密参与者终端pi生成的私钥ζi对应的误差值,tij表示一个由解密参与者终端pi计算得出的多项式向量,代表第j部分私钥sij对应的公钥,表示一个由解密参与者终端pi计算得出的多项式向量,代表最后一部分私钥ζi对应的公钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
57、作为优选,步骤3所述需要发送机密消息的系统用户终端根据特定的分布生成四组随机数为:
58、需要发送机密消息μ的系统用户终端su根据分布生成两组随机多项式向量r,raux,根据分布抽样生成随机误差项根据分布χerr抽样生成随机误差项其中表示χenc分布的m维扩展,m为一个正整数,表示χenc分布的n维扩展,n为一个正整数,χenc为步骤1中所定义的分布,χerr为步骤1中所定义的分布;
59、步骤3所述系统用户终端su使用可信认证服务器公开的主公钥通过矩阵和向量运算加密机密消息并发送给可信服务器为:
60、系统用户终端su计算
61、
62、将(a,raux)编码为c1,将b编码为c2,记并发送给ts,其中at表示矩阵a的转置,tt表示向量t的转置,decodem(μ)表示将机密消息μ解编码为一个多项式,a为主公钥中的矩阵,t为主公钥中的向量,a为通过计算得到的多项式向量,作为密文c1中的一部分,表示将后者的值赋给前者;
63、作为优选,步骤4所述通过向量运算利用私钥、抽样出的多项式向量和挑战值生成一个响应值,具体如下:
64、可信服务器确认参加部分解密的成员集合,将部分密文发送给集合内的成员,集合内的部分解密参与者终端根据特定分布抽样出一组误差值,利用各自的私钥对部分密文做向量运算解密生成部分解密值,同时利用部分密文和主公钥组合出一组新的矩阵,利用部分解密值和对应的部分解密者持有的公钥组合出一组新的向量,对于每个新矩阵,抽样出一个多项式向量,通过矩阵运算和舍入运算生成一个承诺值,打包新生成的矩阵、向量和承诺值做哈希映射生成一个挑战值,通过向量运算利用私钥、抽样出的多项式向量和挑战值生成一个响应值;
65、步骤4所述通过循环判断直至生成所有的零知识证明,具体如下:
66、结合误差值判断响应值的大小和承诺的大小是否满足要求,如果满足则将响应值和挑战值打包表示生成了一个零知识证明,否则重复这个过程直到生成了一个零知识证明为止;
67、当生成了所有的零知识证明后,部分解密参与者终端将所有部分解密结果和对应的零知识证明打包发送给可信服务器;
68、所述可信服务器确认参加部分解密的成员集合,将部分密文发送给集合内的成员为:
69、可信服务器ts根据解密参与者终端申请参与部分解密的情况确定参加此次部分解密的参与者集合s,将部分密文c1发送给s中的每个成员pi,其中i∈s,pi表示集合s中的第i个解密参与者终端;
70、所述集合内的部分解密参与者终端根据特定分布抽样出一组误差值为:
71、每个集合s中的解密参与者终端pi根据分布χtdec抽样出一组多项式误差值其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,χdec为步骤1中所定义的分布,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,表示将后者的值赋给前者,误差项ei′j代表解密参与者终端pi生成的第j部分解密结果uij对应的误差项,误差项代表解密参与者终端pi生成的部分解密结果对应的误差值,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
72、所述每个部分解密参与者终端利用各自的私钥对部分密文做向量运算解密生成部分解密值为:
73、每个部分解密参与者终端pi将部分密文c1解编码为(a,raux),利用各自的私钥sij计算
74、
75、其中,i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数q为一个素数,表示q关于(2η+1)的对数的向下取整,c1为可信服务器ts发送来的部分密文,误差项ei′j代表解密参与者终端pi生成的第j部分解密结果uij对应的误差项,误差项代表解密参与者终端pi生成的部分解密结果对应的误差值,uij表示参与者pi计算得到的第j部分部分解密结果,表示参与者pi计算得到的最后一部分部分解密结果,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi,a为一个多项式向量是密文c1的一部分,raux为一个多项式向量是密文c1的另一部分,为一个整数,表示集合s中的参与者pi所对应的拉格朗日插值常数,其大小为mod表示取模的结果,表示将后者的值赋给前者,rq表示多项式环模多项式(xn+1)形成的多项式环,n是一个正整数表示多项式的阶,x表示多项式的变量,xn表示x的n次幂;
76、所述每个部分解密参与者终端利用部分密文和主公钥组合出一组新的矩阵为:
77、每个部分解密参与者终端pi,利用部分密文(a,raux)和主公钥(a,aζ,t),组合为
78、
79、其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,部分密文(a,raux)为由c1解编码得到,c1为可信服务器ts发送来的部分密文,(a,aζ,t)为步骤1中生成的主公钥,a为主公钥中的矩阵,aζ为主公钥中的矩阵,a为一个多项式向量是密文c1的一部分,raux为一个多项式向量是密文c1的另一部分,为一个整数,表示集合s中的参与者pi所对应的拉格朗日插值常数,其大小为mod表示取模的结果,表示将后者的值赋给前者,表示多项式环模多项式(xn+1)形成的多项式环,表示多项式环模多项式(xn+1)形成的多项式环,n是一个正整数表示多项式的阶,x表示多项式的变量,xn表示x的n次幂,是的(m+1)×n维扩展,是的(m+1)×m维扩展,每一维的元素都属于n是一个正整数,m是一个正整数,aij表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表第j部分私钥sij对应的公共矩阵,表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表最后一部分私钥ζi对应的公共矩阵,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
80、所述每个部分解密参与者终端利用部分解密值和对应的部分解密者持有的公钥组合出一组新的向量公钥组合出一组新的向量为:
81、每个部分解密参与者终端pi,利用部分解密值和其对应的公钥组合为
82、和
83、其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,为步骤2中计算生成的pi的公钥,表示将后者的值赋给前者,tij表示一个由解密参与者终端pi计算得出的多项式向量,代表第j部分私钥sij对应的公钥,表示一个由解密参与者终端pi计算得出的多项式向量,代表最后一部分私钥ζi对应的公钥,uij表示参与者pi计算得到的第j部分部分解密结果,表示参与者pi计算得到的最后一部分部分解密结果,t′ij表示一个由解密参与者终端pi组合得出的新的多项式向量,代表第j部分私钥sij对应的用于零知识证明的验证密钥,表示一个由解密参与者终端pi组合得出的新的多项式向量,代表最后一部分私钥ζi对应的用于零知识证明的验证密钥,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
84、所述每个部分解密参与者终端对于每个新矩阵,抽样出一个多项式向量,通过矩阵运算和舍入运算生成一个承诺值为:
85、每个部分解密参与者终端pi对于每个新矩阵aij(和),从集合中抽样出一个多项式向量yij(和),通过矩阵运算和舍入运算生成一个承诺值
86、其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,l表示矩阵aij(和)的列数,γ1为一个正整数,γ2为一个正整数,表示系数在[-γ1+1,γ1-1]范围内的l维多项式向量元素组成的集合,highbits(aijyij,2γ2)(和)表示将aijyij(和)关于分割为r1和r0两部分,并返回r1,表示将后者的值赋给前者,aij表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表第j部分私钥sij对应的公共矩阵,表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表最后一部分私钥ζi对应的公共矩阵,yij表示一个由解密参与者终端pi从集合中随机抽样出的第j个多项式向量,将参与第j部分私钥sij相关的运算,表示一个由解密参与者终端pi从集合中随机抽样出的最后一个多项式向量,将参与最后一部分私钥ζi相关的运算,wij表示解密参与者终端pi计算得到的第j个承诺多项式向量,wζi表示解密参与者终端pi计算得到的最后一个承诺多项式向量,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
87、所述每个部分解密参与者终端打包新生成的矩阵、向量和承诺值做哈希映射生成一个挑战值为:
88、每个部分解密参与者终端pi将aij(和),t′ij(和)和wij(和)一同打包,做哈希映射生成挑战值其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,所选无碰撞哈希函数h:{0,1}*→bτ是把解密参与者终端公钥和承诺值组合成的比特串映射到集合bτ中,{0,1}*表示长度为任意比特的二进制序列组合的集合,bτ表示系数中含有τ个1或-1,其他n-τ个数为0的多项式的集合,τ是一个小于多项式的阶的正整数,表示将后者的值赋给前者,aij表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表第j部分私钥sij对应的公共矩阵,表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表最后一部分私钥ζi对应的公共矩阵,t′ij表示一个由解密参与者终端pi组合得出的新的多项式向量,代表第j部分私钥sij对应的用于零知识证明的验证密钥,表示一个由解密参与者终端pi组合得出的新的多项式向量,代表最后一部分私钥ζi对应的用于零知识证明的验证密钥,wij表示解密参与者终端pi计算得到的第j个承诺多项式向量,表示解密参与者终端pi计算得到的最后一个承诺多项式向量,cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
89、所述每个部分解密参与者终端通过向量运算利用私钥、抽样出的多项式向量和挑战值生成一个响应值为:
90、每个部分解密参与者终端pi利用私钥sij(和ζi)、抽样出的多项式向量yij(和)和挑战值cij(和)做向量运算得到其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,私钥sij(和ζi)为步骤2中由可信认证服务器生成并发送给部分解密参与者终端pi,表示将后者的值赋给前者,yij表示一个由解密参与者终端pi从集合中随机抽样出的第j个多项式向量,将参与第j部分私钥sij相关的运算,表示一个由解密参与者终端pi从集合中随机抽样出的最后一个多项式向量,将参与最后一部分私钥ζi相关的运算,cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,zij表示一个由解密参与者终端pi计算得到的多项式向量,代表第j部分私钥sij对应的响应值,表示一个由解密参与者终端pi计算得到的多项式向量,代表最后一部分私钥ζi对应的响应值,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
91、所述每个部分解密参与者终端结合误差值判断响应值的大小和承诺的大小是否满足要求,如果满足则将响应值和挑战值打包表示生成了一个零知识证明,否则重复这个过程直到生成了一个零知识证明为止为:
92、每个部分解密参与者终端pi记误差项
93、和
94、首先判断||zij||∞<γ1-β是否成立,如果不成立则表示未能成功生成一个零知识证明,需要重新抽取多项式yij并进行后续的计算,反之,继续判断||lowbits(aijyij-cije′ij,2γ2)||∞<γ2-β是否成立,如果不成立则表示未能成功生成一个零知识证明,需要重新抽取多项式yij并进行后续的计算,反之表示解密参与者终端pi成功生成了一个有效的零知识证明,并将副本(zij,cij)记为πij,其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,γ2为一个正整数,β为一个正整数,||zij||∞表示多项式向量zij的无穷范数大小,表示将aijyij-cije′ij关于分割为r1和r0两部分,并返回r0,eij(和)为步骤2中由可信认证服务器生成并发送给部分解密参与者终端pi,此外,该判断方法也同样应用于和成功生成的零知识证明被记为表示将后者的值赋给前者,误差项eij代表可信认证服务器为解密参与者终端pi生成的第j部分私钥sij对应的误差项,误差项代表可信认证服务器为解密参与者终端pi生成的私钥ζi对应的误差值,误差项ei′j代表解密参与者终端pi生成的第j部分解密结果uij对应的误差项,误差项代表解密参与者终端pi生成的部分解密结果对应的误差值,误差项e′ij代表解密参与者终端pi新组合出的第j部分私钥sij对应的误差值,误差项代表解密参与者终端pi新组合出的最后一部分私钥ζi对应的误差值,cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,aij表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表第j部分私钥sij对应的公共矩阵,表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表最后一部分私钥ζi对应的公共矩阵,zij表示一个由解密参与者终端pi计算得到的多项式向量,代表第j部分私钥sij对应的响应值,表示一个由解密参与者终端pi计算得到的多项式向量,代表最后一部分私钥ζi对应的响应值,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi,πij表示第j项零知识证明,内容为(zij,cij),为最后一项零知识证明,内容为
95、所述当生成了所有的零知识证明后,部分解密参与者终端将所有部分解密结果和对应的零知识证明打包发送给可信服务器为:
96、当每个部分解密参与者终端pi成功生成的所有部分解密结果对应的承诺、挑战值、响应值副本都能够判断通过后,其将所有部分解密结果和生成的对应的零知识证明组发送给可信服务器ts,其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,表示将后者的值赋给前者,uij表示参与者pi计算得到的第j部分部分解密结果,表示参与者pi计算得到的最后一部分部分解密结果,πij表示第j项零知识证明,内容为(zij,cij),为最后一项零知识证明,内容为cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,zij表示一个由解密参与者终端pi计算得到的多项式向量,代表第j部分私钥sij对应的响应值,表示一个由解密参与者终端pi计算得到的多项式向量,代表最后一部分私钥ζi对应的响应值,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
97、作为优选,步骤5所述可信服务器将解密参与者终端发送来的零知识证明中的每一项进行验证,以判断解密参与者终端发送来的部分解密值有效性,具体如下:
98、可信服务器使用与步骤4相同的方式利用部分密文和公钥组合出一组新的矩阵,利用部分解密值和公钥组合出一组新的向量,对于每个新矩阵和对应的向量,找到对应的零知识证明,验证响应值的大小,如果大小不满足要求则验证不通过,否则利用矩阵运算和舍入运算计算承诺值的大小,打包新生成的矩阵、向量和承诺值做哈希映射生成一个挑战值,如果生成的挑战值和解密参与者终端发送来的零知识证明中对应的挑战值不相等,则验证不通过,反之验证通过,如果解密参与者终端发送来的零知识证明中的每一项都能通过验证,那么可信服务器可以认为解密参与者终端发送来的部分解密值是有效的,验证通过,反之零知识证明中如果有任何一项不能通过验证,则认为解密参与者终端发送来的部分解密值是无效的,验证不通过;
99、所述可信服务器使用与步骤4相同的方式利用部分密文和公钥组合出一组新的矩阵,利用部分解密值和公钥组合出一组新的向量为:
100、可信服务器ts针对部分密文(a,raux)和主公钥(a,aζ,t)组合为
101、
102、利用每个部分解密参与者终端pi发送来的部分解密结果和其对应的公钥为
103、和
104、其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,a为一个多项式向量是密文c1的一部分,raux为一个多项式向量是密文c1的另一部分,为一个整数,表示集合s中的参与者pi所对应的拉格朗日插值常数,其大小为mod表示取模的结果,表示将后者的值赋给前者,c1为可信服务器ts发送来的部分密文,at为a的转置向量,raux为的转置向量,(a,aζ,t)为步骤1中生成的主公钥,a为主公钥中的矩阵,aζ为主公钥中的矩阵,为步骤2中计算生成的pi的公钥,表示多项式环模多项式(xn+1)形成的多项式环,表示多项式环模多项式(xn+1)形成的多项式环,n是一个正整数表示多项式的阶,x表示多项式的变量,xn表示x的n次幂,是的(m+1)×n维扩展,是的(m+1)×m维扩展,每一维的元素都属于n是一个正整数,m是一个正整数,aij表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表第j部分私钥sij对应的公共矩阵,表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表最后一部分私钥ζi对应的公共矩阵,tij表示一个由解密参与者终端pi计算得出的多项式向量,代表第j部分私钥sij对应的公钥,表示一个由解密参与者终端pi计算得出的多项式向量,代表最后一部分私钥ζi对应的公钥,uij表示参与者pi计算得到的第j部分部分解密结果,表示参与者pi计算得到的最后一部分部分解密结果,t′′j表示一个由解密参与者终端pi组合得出的新的多项式向量,代表第j部分私钥sij对应的用于零知识证明的验证密钥,表示一个由解密参与者终端pi组合得出的新的多项式向量,代表最后一部分私钥ζi对应的用于零知识证明的验证密钥,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
105、所述对于每个新矩阵和对应的向量,找到对应的零知识证明为:
106、可信服务器ts针对每个部分解密参与者终端pi发送来的每个部分解密结果uij,找到对应的πij,对发来的部分解密结果找到对应的其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,表示将后者的值赋给前者,uij表示参与者pi计算得到的第j部分部分解密结果,表示参与者pi计算得到的最后一部分部分解密结果,πij表示第j项零知识证明,内容为(zij,cij),为最后一项零知识证明,内容为cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,zij表示一个由解密参与者终端pi计算得到的多项式向量,代表第j部分私钥sij对应的响应值,表示一个由解密参与者终端pi计算得到的多项式向量,代表最后一部分私钥ζi对应的响应值,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
107、步骤5所述验证响应值的大小,如果大小不满足要求则验证不通过为:
108、可信服务器ts针对每个部分解密参与者终端pi发送来的每个零知识证明πij(和),验证对应的响应值||zij||∞<γ1-β(和)是否成立,如果不成立则表示大小不满足要求,验证不通过,其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,||zij||∞表示多项式向量zij的无穷范数大小,表示多项式向量的无穷范数大小,γ1为一个正整数,β为一个正整数,表示将后者的值赋给前者,πij表示第j项零知识证明,内容为(zij,cij),为最后一项零知识证明,内容为cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,zij表示一个由解密参与者终端pi计算得到的多项式向量,代表第j部分私钥sij对应的响应值,表示一个由解密参与者终端pi计算得到的多项式向量,代表最后一部分私钥ζi对应的响应值,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
109、所述否则利用矩阵运算和舍入运算计算承诺值的大小为:
110、可信服务器ts针对每个部分解密参与者终端pi发送来的每个零知识证明πij(和)的响应值大小已验证通过,接下来利用新矩阵aij(和)、解密参与者终端pi对应的向量t′′j(和)和零知识证明副本(zij,cij)(和),通过矩阵运算和舍入运算计算
111、和
112、其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,γ2为一个正整数,||zij||∞表示多项式向量zij的无穷范数大小,(和)表示将aijzij-cijt′ij(和)关于分割为r1和r0两部分,并返回r1,表示将后者的值赋给前者,πij表示第j项零知识证明,内容为副本(zij,cij),为最后一项零知识证明,内容为副本cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,zij表示一个由解密参与者终端pi计算得到的多项式向量,代表第j部分私钥sij对应的响应值,表示一个由解密参与者终端pi计算得到的多项式向量,代表最后一部分私钥ζi对应的响应值,aij表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表第j部分私钥sij对应的公共矩阵,表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表最后一部分私钥ζi对应的公共矩阵,t′′j表示一个由解密参与者终端pi组合得出的新的多项式向量,代表第j部分私钥sij对应的用于零知识证明的验证密钥,表示一个由解密参与者终端pi组合得出的新的多项式向量,代表最后一部分私钥ζi对应的用于零知识证明的验证密钥,wi′i表示可信服务器ts计算得到的解密参与者终端pi的第j个承诺多项式向量,表示可信服务器ts计算得到的解密参与者终端pi的最后一个承诺多项式向量,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
113、所述打包新生成的矩阵、向量和承诺值做哈希映射生成一个挑战值为:
114、可信服务器ts针对每个部分解密参与者终端pi发送来的每个零知识证明πij(和),将aij(和),t′ij(和)和w′ij(和)一同打包,做哈希映射生成挑战值其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,所选无碰撞哈希函数h:{0,1}*→bτ是把解密参与者终端公钥和承诺值组合成的比特串映射到集合bτ中,{0,1}*表示长度为任意比特的二进制序列组合的集合,bτ表示系数中含有τ个1或-1,其他n-τ个数为0的多项式的集合,τ是一个小于多项式的阶的正整数,表示将后者的值赋给前者,πij表示第j项零知识证明,内容为副本(zij,cij),为最后一项零知识证明,内容为副本cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,aij表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表第j部分私钥sij对应的公共矩阵,表示一个由解密参与者终端pi组合得出的新的多项式矩阵,代表最后一部分私钥ζi对应的公共矩阵,′′j表示一个由解密参与者终端pi组合得出的新的多项式向量,代表第j部分私钥sij对应的用于零知识证明的验证密钥,表示一个由解密参与者终端pi组合得出的新的多项式向量,代表最后一部分私钥ζi对应的用于零知识证明的验证密钥,wi′j表示可信服务器ts计算得到的解密参与者终端pi的第j个承诺多项式向量,表示可信服务器ts计算得到的解密参与者终端pi的最后一个承诺多项式向量,ci′j表示可信服务器ts通过哈希映射生成的解密参与者终端pi的第j个挑战值,参与了第j部分私钥sij相关的运算,表示可信服务器ts通过哈希映射生成的解密参与者终端pi的最后一个挑战值,参与了最后一部分私钥ζi相关的运算,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
115、所述如果生成的挑战值和解密参与者终端发送来的零知识证明中对应的挑战值不相等,则验证不通过,反之验证通过,如果解密参与者终端发送来的零知识证明中的每一项都能通过验证,那么可信服务器可以认为解密参与者终端发送来的部分解密值是有效的,验证通过,反之零知识证明中如果有任何一项不能通过验证,则认为解密参与者终端发送来的部分解密值是无效的,验证不通过为:
116、可信服务器ts对每个部分解密参与者终端pi发送来的每个零知识证明πij(和)所生成的挑战值ci′j(和)和发送来的挑战值cij(和)做等值判定,如果存在至少一组则验证不通过,可信服务器ts将认为pi发送来的部分解密值无效;反之即每一组均成立,则验证通过,可信服务器ts将接受pi发送来的部分解密值,其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,表示将后者的值赋给前者,πij表示第j项零知识证明,内容为副本(zij,cij),为最后一项零知识证明,内容为副本cij表示解密参与者终端pi通过哈希映射生成的第j个挑战值,将参与第j部分私钥sij相关的运算,表示解密参与者终端pi通过哈希映射生成的最后一个挑战值,将参与最后一部分私钥ζi相关的运算,ci′j表示可信服务器ts通过哈希映射生成的解密参与者终端pi的第j个挑战值,参与了第j部分私钥sij相关的运算,表示可信服务器ts通过哈希映射生成的解密参与者终端pi的最后一个挑战值,参与了最后一部分私钥ζi相关的运算,sij表示参与者pi持有的第j部分私钥,ζi表示参与者pi持有的最后一部分私钥,其参与运算生成的元素的下标被标为ζi;
117、作为优选,步骤6中可信服务器确认发送来所有部分解密结果都能通过步骤5的验证后,通过多项式线性运算和编码运算对密文做最终解密生成明文,将最终解密得到的明文分别发送给参与解密的成员,具体如下:
118、步骤6所述可信服务器确认发送来所有部分解密结果都能通过步骤5的验证后,通过多项式线性运算和编码运算对密文做最终解密生成明文为:
119、可信服务器ts通过步骤5的验证过程确认了所有部分解密参与者终端pi发送来的部分解密结果的有效性后,首先通过多项式线性运算计算
120、
121、然后结合多项式线性运算和编码运算计算最终解密生成的明文
122、
123、其中i∈s,pi表示集合s中的第i个解密参与者终端,s表示参加此次部分解密的参与者集合,η为一个较小的正整数,lenη为正整数j∈{0,…,lenη},q为一个素数,表示q关于(2η+1)的对数的向下取整,rq表示多项式环模多项式(xn+1)形成的多项式环,n是一个正整数表示多项式的阶,x表示多项式的变量,xn表示x的n次幂,b为可信服务器ts持有的c2部分密文的内容,encodem(b-∑i∈sui)表示将多项式b-∑i∈sui编码为一个字符串,表示将后者的值赋给前者,uij表示解密参与者终端pi计算得到的第j部分部分解密结果,表示参与者pi计算得到的最后一部分部分解密结果,ui表示解密参与者终端pi的密文,由uij和累加计算得到,μ′表示通过最终解密得到的明文,是一个字符串;
124、步骤6所述将最终解密得到的明文分别发送给参与解密的成员为:
125、可信服务器ts将计算得到的最终解密明文μ′通过安全信道发送给每个集合s中的解密参与者终端pi,即参与了部分解密的解密参与者终端,其中s表示参加此次部分解密的参与者集合。
126、本发明优点在于:
127、本发明将shamir秘密共享应用在了模格中,为门限加密系统提供了初步的安全保障。结合dilithium算法设计的非交互式零知识证明满足完备性、可靠性和零知识性,使部分门限解密的结果可以被验证,提高了门限加密系统的安全性。系统的安全性基于格上的标准mlwe问题,可以抵抗量子计算机攻击,且具备模拟安全性。相比于已有的相关文献,本系统在实现方面具有非常优秀的性能和较高的安全性。
128、本发明保证了门限解密参与者终端的部分解密结果的正确性,保证了方案的可模拟性,恶意的解密参与者终端无法生成错误的部分解密结果,从解密生成的副本中也无法知晓其他解密参与者终端的部分解密私钥;
129、本发明实现了解密结果的可验证和门限加密的模拟安全性,能够抵抗量子攻击,具备高效性,可以适用于基于网关的物联网架构等多种场景;
1.一种抗量子攻击的门限公钥加密系统,其特征在于,包括:
2.一种应用权利要求1所述的抗量子攻击的门限公钥加密系统进行抗量子攻击的门限公钥加密方法,其特征在于,包括以下步骤:
3.根据权利要求2所述的抗量子攻击的门限公钥加密方法,其特征在于:
4.根据权利要求3所述的抗量子攻击的门限公钥加密方法,其特征在于:
5.根据权利要求4所述的抗量子攻击的门限公钥加密方法,其特征在于:
6.根据权利要求5所述的抗量子攻击的门限公钥加密方法,其特征在于:
7.根据权利要求6所述的抗量子攻击的门限公钥加密方法,其特征在于:
8.根据权利要求7所述的抗量子攻击的门限公钥加密方法,其特征在于:
9.根据权利要求8所述的抗量子攻击的门限公钥加密方法,其特征在于: