基于非对称密钥池的抗量子计算环签名方法和系统与流程

文档序号:17817235发布日期:2019-06-05 21:53
基于非对称密钥池的抗量子计算环签名方法和系统与流程

本发明涉及安全通信领域,尤其是一种使用密钥卡技术手段实现抗量子计算的环签名方法。



背景技术:

环签名是一种数学签名方案,最初由Rivest等人提出,环签名是一种简化的群签名,环签名中只有环成员没有管理者,不需要环成员间的合作。

环签名因签名中参数根据一定的规则首尾相接组成环状而得名。其实就是实际的签名方用其他可能签字者的公钥产生了一个带有断口的环,然后用私钥将断口连成一个完整的环。任何验证人利用环成员的公钥都可以验证一个环签名是否由某个可能的签名人生成。2001年,Rivest,Shamir和Tauman三位科学家首次提出了环签名。签名方利用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名集合中的成员可能并不知道自己被包含在其中。

环签名是一种特殊的群签名,没有可信中心,没有群的建立过程,对于验证者来说签名人是完全匿名的。环签名的这种无条件匿名性在对信息需要长期保护的一些特殊环境中非常有用。例如,即使RSA被攻破也必须保护匿名性的场合。

环签名的正确性体现在,如果按照正确的签名步骤对消息进行签名,并且在传播过程中签名没有被篡改,那么环签名满足验证等式;环签名的无条件匿名性体现在,攻击者即使非法获取了所有可能签名方的私钥,他能确定出真正的签名方的概率不超过1/N,这里N为所有可能签名方的个数;不可伪造性,外部攻击者在不知道任何成员私钥的情况下,即使能从一个产生环签名的随机预言者那里得到任何消息m的签名,他成功伪造一个合法签名的概率也可以忽略不计。

量子计算机在密码破解上有着巨大潜力。当今主流的非对称(公钥)加密算法,如RSA加密算法,大多数都是基于大整数的因式分解或者有限域上的离散对数的计算这两个数学难题。它们的破解难度也就依赖于解决这些问题的效率。传统计算机上,要求解这两个数学难题,花费时间为指数时间(即破解时间随着公钥长度的增长以指数级增长),这在实际应用中是无法接受的。而为量子计算机量身定做的秀尔算法可以在多项式时间内(即破解时间随着公钥长度的增长以k次方的速度增长,其中k为与公钥长度无关的常数)进行整数因式分解或者离散对数计算,从而为RSA、离散对数加密算法的破解提供可能。

现有技术存在的问题:现有技术中,由于量子计算机能快速通过公钥得到对应的私钥,因此基于公私钥的数字签名方法容易被量子计算机破解。



技术实现要素:

本发明提供一种基于非对称密钥池的抗量子计算环签名方法,应用于多个用户的群组中,各用户分别配置有密钥卡,密钥卡内存储有私钥、非对称密钥池以及分别与各参与方相应的公钥指针随机数,通过各用户的公钥指针随机数可在非对称密钥池中得到与该用户相应的公钥;所述抗量子计算环签名方法在签名时包括:

通过密钥卡内的多个公钥指针随机数R1~Rr结合非对称密钥池得到与多个用户相应的公钥P1~Pr,其中r小于等于群组中的用户数,且公钥指针随机数R1~Rr中至少包括对应签名方用户的公钥指针随机数;利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr,;

选择r-1个随机数x1~xr-1,利用所述多个公钥分别参与陷门函数的计算得到参数yi;所述陷门函数表达为yi=gi(xi),其中i为序号从1至r-1,i还对应至用户索引号,其中i不包括签名方的用户索引号;

利用组合函数Ck,v(y1,y2,…,yr)=v和Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))进行环计算,得到参数ys以及相应的参数xs,其中:

v为预设的验证参数;

y1,y2,…,yr为相应序号的参数yi;

Ek表示分别用所述签名K1~Kr作为密钥进行加密;

s表示签名方的用户索引号;

以2r+1个数的组合即R1~Rr;v;x1~xr作为环签名,其中x1~xr中包含xs,将一起发送给群组内作为验证方的用户。

可选的,所述抗量子计算环签名方法在验证时包括:

接收环签名和原文,根据环签名中的公钥指针随机数R1~Rr结合密钥卡得到与多个用户相应的公钥P1~Pr;

使用环签名中的随机数x1~xr,在公钥P1~Pr参与下通过陷门函数计算得到参数yi;

利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr;

利用公式Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))计算Ck,v(y1,y2,…,yr)的结果与环签名中的验证参数v是否相同,得到相应的验证结果。

可选的,利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr具体包括:

利用hash函数分别作用于原文和公钥P1~Pr,得到相应的签名K1~Kr。

可选的,利用组合函数Ck,v(y1,y2,…,yr)=v;

和Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))进行环计算时包括:

根据公式v1=Ek(y1⊕v)依次计算得到vs-1;

根据公式v=vr=Ek(yr⊕vr-1)依次计算得到vs+1;

根据公式vs+1=Ek(ys+1⊕vs),利用Ks+1作为密钥解密得到ys+1⊕vs的值,即得到vs;

根据公式公式vs=Ek(ys⊕vs-1),利用Ks作为密钥解密得到ys⊕vs-1的值,即得到ys的值;

根据公式xs=gs-1(ys),使用签名方的私钥作为参数进行运算得到xs。

本发明还提供一种基于非对称密钥池的抗量子计算环签名系统,应用于多个用户的群组中,各用户分别配置有密钥卡,密钥卡内存储有私钥、非对称密钥池以及分别与各参与方相应的公钥指针随机数,通过各用户的公钥指针随机数可在非对称密钥池中得到与该用户相应的公钥;所述抗量子计算环签名系统包括配置在签名方的:

第一模块,用于通过密钥卡内的多个公钥指针随机数R1~Rr结合非对称密钥池得到与多个用户相应的公钥P1~Pr,其中r小于等于群组中的用户数,且公钥指针随机数R1~Rr中至少包括对应签名方用户的公钥指针随机数;利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr,;

第二模块,用于选择r-1个随机数x1~xr-1,利用所述多个公钥分别参与陷门函数的计算得到参数yi;所述陷门函数表达为yi=gi(xi),其中i为序号从1至r-1,i还对应至用户索引号,其中i不包括签名方的用户索引号;

第三模块,用于利用组合函数Ck,v(y1,y2,…,yr)=v;

和Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))进行环计算,得到参数ys以及相应的参数xs,其中:

v为预设的验证参数;

y1,y2,…,yr为相应序号的参数yi;

Ek表示分别用所述签名K1~Kr作为密钥进行加密;

s表示签名方的用户索引号;

第四模块,用于以2r+1个数的组合即R1~Rr;v;x1~xr作为环签名,其中x1~xr中包含xs,将一起发送给群组内作为验证方的用户。

可选的,所述抗量子计算环签名系统还包括配置在验证方的:

第五模块,用于接收环签名和原文,根据环签名中的公钥指针随机数R1~Rr结合密钥卡得到与多个用户相应的公钥P1~Pr;

第六模块,用于使用环签名中的随机数x1~xr,在公钥P1~Pr参与下通过陷门函数计算得到参数yi;

第七模块,用于利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr;

第八模块,用于利用公式Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))计算Ck,v(y1,y2,…,yr)的结果与环签名中的验证参数v是否相同,得到相应的验证结果。

本发明还提供一种基于非对称密钥池的抗量子计算环签名系统,应用于多个用户的群组中,各用户分别配置有密钥卡,密钥卡内存储有私钥、非对称密钥池以及分别与各参与方相应的公钥指针随机数,通过各用户的公钥指针随机数可在非对称密钥池中得到与该用户相应的公钥;

各用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的基于多个非对称密钥池的抗量子计算环签名方法。

本发明中,使用密钥卡存储公钥、私钥和公钥指针随机数;且对外发布的只是公钥的指针随机数,并不是原始的公钥本身。密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥可能性大大降低。由于量子计算机无法得到明文公钥,于是也无法得到对应的私钥,因此该方案的环签名不容易被量子计算机破解。

附图说明

图1为本发明中使用的密钥卡内部结构图;

图2为本发明中的公钥与抗量子计算公钥的关系图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了更好地描述和说明本申请的实施例,可参考一幅或多幅附图,但用于描述附图的附加细节或示例不应当被认为是对本申请的发明创造、目前所描述的实施例或优选方式中任何一者的范围的限制。

应该理解的是,除非本文中有明确的说明,各步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

本发明中的每个用户的签名公钥都不公开,公开使用的都是跟密钥卡内密钥池中存储的公钥之位置有关的公钥指针随机数。两者对应的存储方法是:对于某个用户,取一个公钥指针随机数R,用一个公钥指针函数FPP作用于它,得到公钥指针PP,再将PP指向密钥卡内的非对称密钥池(公钥)得到一个位置,在该位置存入该用户的公钥P,将公开的公钥指针随机数R作为抗量子计算公钥。对应的,根据公钥指针随机数R从密钥卡中取公钥P也是相同的流程。因为非对称密钥池(公钥)在密钥卡内,想要得到真正原始的公钥,只有在密钥卡内把抗量子公钥和密钥池结合起来操作才可以得到原始公钥。

本发明中的密钥卡内都存有非对称密钥池(公钥)、用户各自的公钥指针随机数和用户各自的私钥,非对称密钥池(公钥)存储本组织所有用户的公钥,其中公钥指针随机数作为该用户的抗量子计算公钥对外公布,任何用户可以根据公开的公钥指针随机数和密钥卡得到其他用户的公钥。拥有本发明中的密钥卡的用户都是一个组织内的成员,签名验签都是针对本组织内的成员而言。

其中一实施例中,提供一种基于非对称密钥池的抗量子计算环签名方法,应用于多个用户的群组中,各用户分别配置有密钥卡,密钥卡内存储有私钥、非对称密钥池以及分别与各参与方相应的公钥指针随机数,通过各用户的公钥指针随机数可在非对称密钥池中得到与该用户相应的公钥;所述抗量子计算环签名方法在签名时包括:

通过密钥卡内的多个公钥指针随机数R1~Rr结合非对称密钥池得到与多个用户相应的公钥P1~Pr,其中r小于等于群组中的用户数,且公钥指针随机数R1~Rr中至少包括对应签名方用户的公钥指针随机数;利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr,;

选择r-1个随机数x1~xr-1,利用所述多个公钥分别参与陷门函数的计算得到参数yi;所述陷门函数表达为yi=gi(xi),其中i为序号从1至r-1,i还对应至用户索引号,其中i不包括签名方的用户索引号;

利用组合函数Ck,v(y1,y2,…,yr)=v和Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))进行环计算,得到参数ys以及相应的参数xs,其中:

v为预设的验证参数;

y1,y2,…,yr为相应序号的参数yi;

Ek表示分别用所述签名K1~Kr作为密钥进行加密;

s表示签名方的用户索引号;

以2r+1个数的组合即R1~Rr;v;x1~xr作为环签名,其中x1~xr中包含xs,将一起发送给群组内作为验证方的用户。

所述抗量子计算环签名方法在验证时包括:

接收环签名和原文,根据环签名中的公钥指针随机数R1~Rr结合密钥卡得到与多个用户相应的公钥P1~Pr;

使用环签名中的随机数x1~xr,在公钥P1~Pr参与下通过陷门函数计算得到参数yi;

利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr;

利用公式Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))计算Ck,v(y1,y2,…,yr)的结果与环签名中的验证参数v是否相同,得到相应的验证结果。

利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr具体包括:

利用hash函数分别作用于原文和公钥P1~Pr,得到相应的签名K1~Kr。

利用组合函数Ck,v(y1,y2,…,yr)=v;和Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))进行环计算时包括:

根据公式v1=Ek(y1⊕v)依次计算得到vs-1;

根据公式v=vr=Ek(yr⊕vr-1)依次计算得到vs+1;

根据公式vs+1=Ek(ys+1⊕vs),利用Ks+1作为密钥解密得到ys+1⊕vs的值,即得到vs;

根据公式公式vs=Ek(ys⊕vs-1),利用Ks作为密钥解密得到ys⊕vs-1的值,即得到ys的值;

根据公式xs=gs-1(ys),使用签名方的私钥作为参数进行运算得到xs。

结合附图,在另一实施例中提供一种基于非对称密钥池的抗量子计算环签名,包括:1.签名

1.1签名方根据本组织内公开的公钥指针随机数R1、R2、R3…Rr从自己密钥卡里取出对应的各个用户的公钥P1、P2、P3…Pr。再根据公式Ki=h(m,Pi),用hash函数作用于原文m和取出的每个公钥Pi从而得到K1、K2、K3…Kr。Ki将作为密钥用于接下来的步骤(其中1<=i<=r)。

1.2签名方选择一个验证参数v,再选择r-1个随机数x1、x2、x3…xr-1分别对应本组织内的r-1个用户,其中x的下标不等于s,设xs为签名方对应的x值。

利用取出的公钥Pi参与陷门函数gi(例如RSA算法)的计算,用公式yi=gi(xi)得到yi,计算得到除ys以外的r-1个yi值。

1.3根据组合函数Ck,v(y1,y2,…,yr)=v和Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))可进行如下计算(其中的Ek表示分别用1.1中得到的K1、K2、K3…Kr作为密钥进行加密):

1)根据公式v1=Ek(y1⊕v),用1.1中得到的K1作为密钥来加密y1与v异或得到的结果,令得到的值为v1;再根据公式v2=Ek(y2⊕v1),用1.1中得到的K2加密y2与v1异或得到的结果,令得到的值为v2;...;根据公式vs-1=Ek(ys-1⊕vs-2),用1.1中得到的Ks-1加密ys-1与vs-2异或得到的结果,令得到的值为vs-1;根据公式vs=Ek(ys⊕vs-1),但是因为不知道ys的值,只能停止计算。

2)又可以根据公式v=vr=Ek(yr⊕vr-1),用1.1中得到的Kr作为密钥解密可以得到yr⊕vr-1的值,继而得到vr-1的值;根据公式vr-1=Ek(yr-1⊕vr-2),用1.1中得到的Kr-1作为密钥解密可以得到yr-1⊕vr-2的值,继而得到vr-2的值;...;根据公式vs+1=Ek(ys+1⊕vs),用1.1中得到的Ks+1作为密钥解密可以得到ys+1⊕vs的值,继而得到vs的值。

3)根据前面两步得到的vs-1和vs,以及公式vs=Ek(ys⊕vs-1),可以用1.1中得到的Ks作为密钥解密得到ys⊕vs-1的值,继而得到ys的值。

1.5根据公式xs=gs-1(ys),使用签名方的私钥作为参数进行运算得到签名方对应的xs,该值可以使得组合函数成立。

1.6输出环签名,即为一个2r+1个数的组合(R1,R2,…,Rr;v;x1,x2,…,xs,…,xr)。该环签名和原文一起发送给本组织内任意其他成员。

2.验证环签名

2.1在本组织内某个其他成员作为验证方,其得到签名方发送的环签名(R1,R2,…,Rr;v;x1,x2,…,xs,…,xr)和原文m。首先根据环签名中的公钥指针随机数R从密钥卡中取出所有对应的公钥P。

2.2该成员使用环签名中的xi根据有公钥P参与计算的公式yi=gi(xi)得到yi,其中1<=i<=r;

2.3根据公式Ki=h(m,Pi),使用与签名方相同的hash函数作用于原文m和取出的每个公钥Pi从而得到K1、K2、K3…Kr。

2.4根据公式Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))计算Ck,v(y1,y2,…,yr)的结果(其中的Ek表示分别用2.3中得到的K1、K2、K3…Kr作为密钥进行加密),如果结果等于v,则环签名验证通过,该成员接收到的原文确定是来自于本组织内拥有公钥集合{P1、P2、P3…Pr}其中某个公钥的某个成员;如果结果不等于v则说明环签名验证失败,不能确认该结论。

在一个实施例中,提供了一种基于非对称密钥池的抗量子计算环签名系统,应用于多个用户的群组中,各用户分别配置有密钥卡,密钥卡内存储有私钥、非对称密钥池以及分别与各参与方相应的公钥指针随机数,通过各用户的公钥指针随机数可在非对称密钥池中得到与该用户相应的公钥;所述抗量子计算环签名系统包括配置在签名方的:

第一模块,用于通过密钥卡内的多个公钥指针随机数R1~Rr结合非对称密钥池得到与多个用户相应的公钥P1~Pr,其中r小于等于群组中的用户数,且公钥指针随机数R1~Rr中至少包括对应签名方用户的公钥指针随机数;利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr,;

第二模块,用于选择r-1个随机数x1~xr-1,利用所述多个公钥分别参与陷门函数的计算得到参数yi;所述陷门函数表达为yi=gi(xi),其中i为序号从1至r-1,i还对应至用户索引号,其中i不包括签名方的用户索引号;

第三模块,用于利用组合函数Ck,v(y1,y2,…,yr)=v和Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))进行环计算,得到参数ys以及相应的参数xs,其中:

v为预设的验证参数;

y1,y2,…,yr为相应序号的参数yi;

Ek表示分别用所述签名K1~Kr作为密钥进行加密;

s表示签名方的用户索引号;

第四模块,用于以2r+1个数的组合即R1~Rr;v;x1~xr作为环签名,其中x1~xr中包含xs,将一起发送给群组内作为验证方的用户。

所述抗量子计算环签名系统还包括配置在验证方的:

第五模块,用于接收环签名和原文,根据环签名中的公钥指针随机数R1~Rr结合密钥卡得到与多个用户相应的公钥P1~Pr;

第六模块,用于使用环签名中的随机数x1~xr,在公钥P1~Pr参与下通过陷门函数计算得到参数yi;

第七模块,用于利用公钥P1~Pr分别对原文签名得到多个签名K1~Kr;

第八模块,用于利用公式Ck,v(y1,y2,…,yr)=Ek(yr⊕Ek(yr-1⊕Ek(yr-2⊕Ek(…⊕Ek(y1⊕v)))))计算Ck,v(y1,y2,…,yr)的结果与环签名中的验证参数v是否相同,得到相应的验证结果。

关于抗量子计算环签名系统的具体限定可以参见上文中对于抗量子计算环签名方法的限定,在此不再赘述。上述各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,即一种基于非对称密钥池的抗量子计算环签名系统,该计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述抗量子计算环签名方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

其中一实施例中,提供一种基于非对称密钥池的抗量子计算环签名系统,应用于多个用户的群组中,各用户分别配置有密钥卡,密钥卡内存储有私钥、非对称密钥池以及分别与各参与方相应的公钥指针随机数,通过各用户的公钥指针随机数可在非对称密钥池中得到与该用户相应的公钥;

各用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的基于多个非对称密钥池的抗量子计算环签名方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1