基于非对称密钥池的抗量子计算代理数字签名方法、签名系统以及计算机设备与流程

文档序号:17298476发布日期:2019-04-03 04:40阅读:278来源:国知局
基于非对称密钥池的抗量子计算代理数字签名方法、签名系统以及计算机设备与流程

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



背景技术:

在现实世界里,人们经常需要将自己的某些权力委托给可靠的代理人,让代理人代表本人去行使这些权力。在这些可以委托的权力中包括人们的签名权。委托签名权的传统方法是使用印章,因为印章可以在人们之间灵活地传递。数字签名是手写签名的电子模拟,但是数字签名不能提供代理功能。

1996年,mambo、usuda和okamoto提出了代理签名的概念,给出了解决这个问题的一种方法。代理签名方案应满足不可否认性、可验证性、不可伪造性、可区分性等六条性质。由于代理签名在实际应用中起着重要作用,所以代理签名一提出便受到广泛关注,国内外学者对其进行了深入的探讨与研究。迄今为止,人们已提出了多种代理签名方案。首先,mambo、usuda和okamoto提出了完全代理签名、部分代理签名和具有授权证书的代理签名。zhang提出了具有授权证书的部分代理签名和门限代理签名。sun、lee和hwang指出zhang和kim、park和won的门限代理签名方案是不安全的,并给出了一个改进方案。李继国、曹珍富进一步指出sun、lee和hwang的方案不能抵抗公钥替换攻击,并给出了一个更安全的不可否认门限代理签名方案。后来,sun提出了具有已知签名者的有效不可否认门限代理签名方案,具有一些较好的性质。但hwang、lin和lu指出sun的方案也是不安全的,并给出相应的改进。sun和chen以及sun提出了具有跟踪接收者的时戳代理签名。最近,伊丽江等与祁明、harn分别提出了一个新的代理签名方案:代理多重签名。李继国等与王晓明、符方伟分别指出他们的方案是不安全的,并给出了相应的改进。不可否认性是代理签名的重要性质,现存的大部分代理签名方案不具有不可否认性。在实践中,不可否认性是非常重要的。例如,当签名滥用发生争议时,权威机构必须确定谁是代理签名的真正签名者。mambo等和kim等称他们的代理保护代理签名方案具有不可否认性,但sun和hsieh指出了他们的代理签名方案是不安全的,并给出了相应的改进。lee,hwang和wang也指出zhang的不可否认代理签名方案是不安全的。hwang和shi提出的方案能对原始签名方和代理签名方进行公平安全保护。李继国等对代理签名的不可否认性进行了较深入的研究。由此可见,关于不可否认代理签名方案尚待进一步研究。

mambo、usuda和okamoto把代理签名分为三大类:完全代理签名、部分代理签名和具有证书的代理签名。

完全代理签名(fulldelegation)在完全代理签名中,原始签名方直接把自己的签名密钥通过安全信道发送给代理签名方,他们能产生相同的签名。

由于代理签名方所产生的签名与原始签名方所产生的签名是不可区分的,所以不能制止可能的签名滥用。完全代理签名也不具有可识别性和不可否认性。在很多情况下,原始签名方过后不得不修改他的签名密钥。因此这种签名不适用于商业应用。

部分代理签名(partialdelegation)在部分代理签名中,原始签名方使用自己的签名密钥s产生代理签名密钥σ,并把σ以安全的方式发送给代理签名方。出于安全考虑,要求从代理签名密钥σ不能求出原始签名方的密钥s。使用这种方法有两种类型的方案:

代理非保护代理签名(proxy-unprotectedproxysignature)除了原始签名方,指定的代理签名方能够代替原始签名方产生有效代理签名。但是,没有指定为代理签名方的第三方不能产生有效代理签名。

代理保护代理签名(proxy-protectedproxysignature)只有指定的代理签名方能够代替原始签名方产生有效代理签名。但是,原始签名方和第三方都不能产生有效代理签名。

在部分代理签名中,代理签名方以σ为签名密钥按普通的签名方案产生代理签名,可以使用修改的验证方程来验证代理签名的有效性。因为在验证方程中有原始签名方的公钥,所以验证方能够确信代理签名是经原始签名方授权的。人们根据不同的需要提出了各种各样的部分代理签名。例如,门限代理签名、不可否认代理签名、多重代理签名、具有接收者的代理签名、具有时戳的代理签名和具有证书的部分代理签名,极大地丰富和发展了部分代理签名。

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

现有技术存在的问题:

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

2.现有技术中,基于公私钥的数字签名的输入和输出均可被他方所知,在量子计算机存在的情况下,可能被推导出私钥,导致数字签名被量子计算机破解。



技术实现要素:

本发明提供一种具有更高安全性的代理数字签名方法,通过作为独立硬件的密钥卡对公钥池进行隔离,不容易被量子计算机破解。

一种基于非对称密钥池的抗量子计算代理数字签名方法,参与的各方分别持有密钥卡,各密钥卡存储有相同的公钥池、各方的公钥指针随机数以及已方的签名私钥,所述公钥指针随机数用于在公钥池中提取对应的签名公钥,同一方的签名私钥和签名公钥用于相应的加解密运算;

所述抗量子计算代理数字签名方法包括:

步骤1,原始签名方利用原始签名方的签名私钥生成代理密钥,并将待签名的原文、所述代理密钥以及与原始签名方的签名公钥相应的公钥指针随机数发送给代理签名方;

步骤2,代理签名方根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述代理密钥进行验证;验证通过后代理签名方利用代理密钥对所述原文进行签名运算生成文件签名,并将所述原文、所述文件签名以及所述公钥指针随机数发送给验证方;

步骤3,验证方根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述文件签名进行验证。

以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。

可选的,所述公钥指针随机数公钥池中提取对应的公钥时,包括用公钥指针函数作用于该公钥指针随机数到公钥指针,公钥池中,该公钥指针指向的位置所存储的即为对应的公钥。

可选的,各密钥卡中还存储有已方的传输私钥,所述公钥指针随机数还用于在公钥池中提取对应的传输公钥,所述传输私钥和传输公钥用于相应的加解密运算;

步骤1中,原始签名方向代理签名方发送所述公钥指针随机数时,采用代理签名方的传输公钥加密;步骤2中,代理签名方利用已方的传输私钥相应解密。

可选的,步骤2中,代理签名方向验证方发送所述公钥指针随机数时,采用验证方的传输公钥加密;步骤3中,验证方利用已方的传输私钥相应解密。

可选的,步骤1中,原始签名方向代理签名方发送所述代理密钥时,所述代理密钥采用第一随机数加密,且该第一随机数利用代理签名方的传输公钥加密发送给代理签名方;步骤2中,代理签名方相应解密获得所述代理密钥。

可选的,步骤2中,代理签名方向验证方发送所述文件签名时,所述文件签名采用第二随机数加密,且该第二随机数利用验证方的传输公钥加密发送给验证方;步骤3中,验证方相应解密获得所述文件签名。

本发明还提供一种基于非对称密钥池的抗量子计算代理数字签名系统,包括原始签名方、代理签名方和验证方,各方分别持有密钥卡,各密钥卡存储有相同的公钥池、各方的公钥指针随机数以及已方的签名私钥,所述公钥指针随机数用于在公钥池中提取对应的签名公钥,同一方的签名私钥和签名公钥用于相应的加解密运算;

所述抗量子计算代理数字签名系统包括:

第一模块,用于原始签名方利用原始签名方的签名私钥生成代理密钥,并将待签名的原文、所述代理密钥以及与原始签名方的签名公钥相应的公钥指针随机数发送给代理签名方;

第二模块,用于代理签名方根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述代理密钥进行验证;验证通过后代理签名方利用代理密钥对所述原文进行签名运算生成文件签名,并将所述原文、所述文件签名以及所述公钥指针随机数发送给验证方;

第三模块,用于验证方根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述文件签名进行验证。

本发明还提供一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时,实现抗量子计算代理数字签名方法的如下步骤:

利用原始签名方的签名私钥生成代理密钥,并将待签名的原文、所述代理密钥以及与原始签名方的签名公钥相应的公钥指针随机数发送给代理签名方;

其中参与抗量子计算代理数字签名方法的各方分别持有密钥卡,各密钥卡存储有相同的公钥池、各方的公钥指针随机数以及已方的签名私钥,所述公钥指针随机数用于在公钥池中提取对应的签名公钥,同一方的签名私钥和签名公钥用于相应的加解密运算。

可选的,所述处理器执行计算机程序时,还实现抗量子计算代理数字签名方法的如下步骤:

根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述代理密钥进行验证;验证通过后代理签名方利用代理密钥对所述原文进行签名运算生成文件签名,并将所述原文、所述文件签名以及所述公钥指针随机数发送给验证方。

可选的,所述处理器执行计算机程序时,还实现抗量子计算代理数字签名方法的如下步骤:

根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述文件签名进行验证。

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

附图说明

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

图2为本发明中用户和密钥卡之间的关系图;

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

具体实施方式

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

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

本发明中对原文进行普通的数字签名并验证的过程如下。发送方将要签名的原文作单向散列函数运算得到消息摘要,用发送方私钥对消息摘要进行算法加密,将得到的数字签名和原文一起发送给接收方。接收方将获得原文和数字签名分开,同样对原文进行单向散列函数运算得到新的消息摘要;用对应的发送方的公钥对数字签名进行算法解密,得到原来的消息摘要并与新的消息摘要进行比较,如果完全一致则说明原文的发送方是可靠的,并且传输的过程原文没有被篡改。

本发明中,本组织所有用户都拥有一块密钥卡,密钥卡内有非对称密钥池,也称为公钥池,还有公钥指针随机数和私钥。每个用户对应的密钥卡都拥有相同的公钥池和不同的私钥,公钥池拥有本组织所有用户的公钥。

本发明中的公钥都不公开,公开使用的都是跟密钥卡内密钥池中存储的公钥之位置有关的公钥指针随机数。两者对应的方法是:对于某个用户,取一个公钥指针随机数rk,用一个公钥指针函数frkp作用于它,得到公钥指针rkp,再将rkp指向密钥卡内的非对称密钥池得到一个位置,在该位置存入该用户的公钥krk。将公开的公钥指针随机数rk作为抗量子计算公钥。因为非对称密钥池在密钥卡内,想要得到真正原始的公钥,只有在密钥卡内把抗量子公钥和密钥池结合起来操作才可以得到原始公钥,所以公钥被泄露被破解的可能性大大降低,极大程度上的提高了安全性。

例如,原始签名方a、代理签名方b和验证方c(以下也分别简称a、b、c)对应的签名公钥/签名私钥分别为va/sa、vb/sb和vc/sc,对应的公钥指针随机数分别为pa、pb和pc,三个公钥指针随机数同时也作为a、b、c的id来标识个人身份。a、b和c都从密钥卡颁发机构拿到属于自己的密钥卡,密钥卡内存有非对称密钥池(公钥池)、各自的公钥指针随机数和各自的私钥。

其中根据随机取得的公钥指针随机数pa/pb/pc,用具体实施方式中描述的存取公钥方法,在密钥卡内的非对称密钥池内存储了用户对应的签名公钥va/vb/vc。公钥指针随机数pa/pb/pc作为抗量子计算公钥对外公布。

并且,a、b、c还分别对应一对用于加在数据传输时进行加解密的传输公钥/传输私钥对,即ea/da、eb/db、ec/dc。

为了便于提取,其中ea与va存储在一起,例如地址相邻或相关,这样利用与pa既可以取出va也可以取出ea。

同理da与sa存储在一起;eb与vb存储在一起,db与sb存储在一起;ec与vc存储在一起,dc与sc存储在一起。

步骤1,原始签名方利用原始签名方的签名私钥生成代理密钥,并将待签名的原文、所述代理密钥以及与原始签名方的签名公钥相应的公钥指针随机数发送给代理签名方;

其中公钥指针随机数时采用代理签名方的传输公钥加密;代理密钥采用第一随机数加密,且该第一随机数利用代理签名方的传输公钥加密。

具体为:

设p是一个大素数,q是p-1的一个素因子,g∈zp*是一个q阶生成元,参数设置以下都通用。

a的签名私钥sa∈rzq,相应的签名公钥是va=gsamodp。随机选择k∈rzq并计算:k=gkmodp,σ=sa+kkmodq,即得到代理密钥(σ,k)。用随机数ra(可利用已方密钥卡生成或预先存储)加密代理密钥(σ,k),得到{σ,k}ra;

根据公开的b的公钥指针随机数pb在密钥卡内找到b的传输公钥eb,用传输公钥eb加密随机数ra和公钥指针随机数pa得到{ra,pa}eb;

将包括有原文m、pb、{ra,pa}eb和{σ,k}ra在内的消息发送给b。

其中,pb可表示该消息是发送给b的,pa可表示该消息来自于a。

步骤2,代理签名方根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述代理密钥进行验证;验证通过后代理签名方利用代理密钥对所述原文进行签名运算生成文件签名,并将所述原文、所述文件签名以及所述公钥指针随机数发送给验证方;

其中公钥指针随机数采用验证方的传输公钥加密;文件签名采用第二随机数加密,且该第二随机数利用验证方的传输公钥加密发送给验证方。

具体为:

b接收到来自a的消息后,用自己的传输私钥db解密{ra,pa}eb得到ra和pa,用ra解密{σ,k}ra得到σ和k,根据pa从密钥卡中取出对应的签名公钥va。

验证等式gσ=vakkmodp是否成立。如果该等式成立,则代理密钥(σ,k)有效,否则,拒绝接受该密钥,并要求a重新给他发送一个新的代理密钥,或者停止协议。

代理密钥(σ,k)有效时,b可以代表a在原文m上签名。利用代理密钥对原文进行签名运算时,可利用代理密钥中与原始签名方的签名私钥sa相关的部分参数进行签名运算。

例如签名时使用σ执行普通的签名运算,生成文件签名signσ(m)。即b将要签名的原文m作单向散列函数运算得到消息摘要,用σ对消息摘要进行算法加密,得到文件签名signσ(m)。

b取随机数rb(可利用已方密钥卡生成或预先存储)加密signσ(m)和k,得到{signσ(m),k}rb。

根据公开的c的公钥指针随机数pc在密钥卡内找到c的传输公钥ec,再用ec加密rb、pa和pb得到{rb,pa,pb}ec。

将包含pc、m、{rb,pa,pb}ec和{signσ(m),k}rb的消息发送给c。

其中,pc表示该消息是发送给c的,pa表示该签名权限来自于a,pb表示该签名权限由b代理。

步骤3,验证方根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述文件签名进行验证。

具体为:

c接收到来自b的消息后,c用处在和自己的签名私钥sc位置相应的传输私钥dc解密{rb,pa,pb}ec得到rb、pa和pb,再用rb解密{signσ(m),k}rb得到signσ(m)和k,还可根据pa从密钥卡中取出va。

c首先计算va’=vakkmodp,然后用va’代替va(因为签名时使用σ代替签名私钥sa,所以此处相应处理),使用与验证普通签名相同的验证运算就可以验证代理签名的有效性。

即c将获得原文m和数字签名分开,同样对原文m进行单向散列函数运算得到新的消息摘要;用va’对数字签名进行算法解密,得到原来的消息摘要并与新的消息摘要进行比较,如果完全一致则说明原文m的发送方是可靠的,并且传输的过程原文m没有被篡改。

在一个实施例中,提供一种基于非对称密钥池的抗量子计算代理数字签名系统,包括原始签名方、代理签名方和验证方,各方分别持有密钥卡,各密钥卡存储有相同的公钥池、各方的公钥指针随机数以及已方的签名私钥,所述公钥指针随机数用于在公钥池中提取对应的签名公钥,同一方的签名私钥和签名公钥用于相应的加解密运算;

所述抗量子计算代理数字签名系统包括:

第一模块,用于原始签名方利用原始签名方的签名私钥生成代理密钥,并将待签名的原文、所述代理密钥以及与原始签名方的签名公钥相应的公钥指针随机数发送给代理签名方;

第二模块,用于代理签名方根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述代理密钥进行验证;验证通过后代理签名方利用代理密钥对所述原文进行签名运算生成文件签名,并将所述原文、所述文件签名以及所述公钥指针随机数发送给验证方;

第三模块,用于验证方根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述文件签名进行验证。

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

例如,第一模块配置于原始签名方,第二模块配置于代理签名方,第三模块配置于验证方。

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

计算机设备可包括多个部分,分别部署于原始签名方、代理签名方和验证方中的至少一方。

一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时,实现抗量子计算代理数字签名方法的如下步骤:

利用原始签名方的签名私钥生成代理密钥,并将待签名的原文、所述代理密钥以及与原始签名方的签名公钥相应的公钥指针随机数发送给代理签名方;

其中参与抗量子计算代理数字签名方法的各方分别持有密钥卡,各密钥卡存储有相同的公钥池、各方的公钥指针随机数以及已方的签名私钥,所述公钥指针随机数用于在公钥池中提取对应的签名公钥,同一方的签名私钥和签名公钥用于相应的加解密运算。

所述处理器执行计算机程序时,还实现抗量子计算代理数字签名方法的如下步骤:

根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述代理密钥进行验证;验证通过后代理签名方利用代理密钥对所述原文进行签名运算生成文件签名,并将所述原文、所述文件签名以及所述公钥指针随机数发送给验证方。

所述处理器执行计算机程序时,还实现抗量子计算代理数字签名方法的如下步骤:

根据所述公钥指针随机数从已方的密钥卡中得到原始签名方的签名公钥,利用该签名公钥对所述文件签名进行验证。

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

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

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