加密、加密签名处理、解密方法及相关设备与流程
未命名
07-14
阅读:307
评论:0

1.本发明实施例涉及签名领域,尤其涉及一种加密、加密签名处理、解密方法及相关设备。
背景技术:
2.可验证加密签名(verifiable encryption of signature,ves)是一种公钥加密算法,其工作原理如下:已知一数字签名方案的公钥pks,其对应私钥为sks。假设一个可信第三方(trusted third party,ttp)持有某公钥加密方案的公私钥对(pk
ttp
,sk
ttp
)。加密方使用pk
ttp
加密由sks产生的一数字签名σ而生成密文c;同时产生一个零知识证明(zero knowledge proof of knowledge)π证明c所加密的明文的确是一个合法的数字签名,即可以被pks验证。具体可以表示如下:
3.ves(σ):=(c:=enc(pk
ttp
,σ),
4.π:=pok[σ|c=enc(pk
ttp
,σ)∧verify(pks,σ)=1]。
[0005]
其中,(c,π)具有公开可证性,每个人都可以验证(c,π)。而只有ttp可以解密c获取σ。
[0006]
目前的可验证加密签名方案中,例如elgamal公钥加密方案,在验证零知识证明时需要进行单比特挑战,导致零知识证明的验证效率较低,影响可验证加密签名的使用体验。
[0007]
如何提高零知识证明的验证效率,是本领域技术人员正在研究的热点。
技术实现要素:
[0008]
本技术提供一种加密、加密签名处理、解密方法及相关设备,利用同态加密公钥对数字签名进行加密而得到密文,再根据密文生成零知识证明,不仅签名加密效率高,而且可以有效提高零知识证明的验证效率,提升可验证加密签名的使用体验。
[0009]
第一方面,提供一种加密方法,该方法包括以下步骤:利用可信第三方确定的同态加密公钥对数字签名进行加密处理得到密文;根据密文生成零知识证明,零知识证明用于证明密文所加密的明文为数字签名;提供密文和零知识证明给验证方。
[0010]
示例性地,本技术实施例的加密方法可以应用于加密方。
[0011]
可以看出,本实施例中的加密方法,加密方利用同态加密公钥对数字签名进行加密得到密文,再根据密文生成零知识证明,并将密文和零知识证明提供给验证方,以使验证方可以通过验证零知识证明进而验证密文,实现可验证加密签名;其中,由于对数字签名进行同态加密处理,使得签名加密效率高,而且零知识证明的验证效率高,可以有效提升可验证加密签名的使用体验。
[0012]
在第一方面的一种可能的实施例中,同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0013]
可以看出,当同态加密公钥为paillier同态加密公钥pk1时,pk1的具体组成为(n,g)。具体地,第一安全素数和第二安全素数的具体取值可以根据实际情况进行确定,不做特
别限定。
[0014]
在第一方面的一种可能的实施例中,同态加密公钥为paillier同态加密公钥时,利用可信第三方确定的同态加密公钥对数字签名进行加密处理得到密文,具体包括以下步骤:根据n确定第一随机数u,第一随机数u和n的最大公约数为1;根据第一随机数u和pk1对数字签名中的s值进行paillier同态加密处理,得到加密参数c;根据加密参数c和数字签名中的r值确定密文,密文为(r,c)。
[0015]
可以看出,通过仅对数字签名中的s值进行加密,而不处理数字签名中的r值,以便后续验证解密后的密文所组成的数字签名的正确性。其中,由于pailler是标准化的加密方案,因此,本技术的加密方法可以被信任、以及被推广使用。
[0016]
在第一方面的一种可能的实施例中,数字签名为曲线数字签名时,零知识证明具体如下式:其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。
[0017]
第二方面,本技术还提供一种加密签名处理方法,该方法包括以下步骤:获取密文和零知识证明,密文为加密方利用可信第三方确定的同态加密公钥对数字签名进行加密处理而得到的,零知识证明为加密方为证明密文所加密的明文为数字签名而根据密文生成的;对零知识证明进行验证,得到零知识证明的验证结果。
[0018]
示例性地,本技术实施例的加密方法可以应用于验证方。
[0019]
可以看出,本实施例中的加密签名处理方法,由于密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的,而零知识证明为根据密文生成的,使得零知识证明的验证效率高,可以有效提升可验证加密签名的使用体验。
[0020]
在第二方面的一种可能的实施例中,同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0021]
在第二方面的一种可能的实施例中,同态加密公钥为paillier同态加密公钥时,密文为(r,c),其中,r为数字签名中的r值,c为根据第一随机数u和pk1对数字签名中的s值进行paillier同态加密处理而得到的加密参数,第一随机数u和n的最大公约数为1。
[0022]
在第二方面的一种可能的实施例中,数字签名为曲线数字签名,零知识证明具体如下式:其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。
[0023]
在第二方面的一种可能的实施例中,加密签名处理方法还包括以下步骤:验证结果为通过验证,且未收到加密方发送的数字签名时,向可信第三方发送解密请求,以请求可信第三方利用同态加密私钥对密文进行解密处理以得到数字签名,解密请求包括密文;接收可信第三方发送的数字签名。
[0024]
可以看出,在零知识证明的验证结果为通过验证,且未收到加密方发送的数字签
名时,验证方可以向可信第三方发送解密请求,该解密请求包括密文,以请求可信第三方利用同态加密私钥对密文进行解密处理以得到数字签名,最后可信第三方将解密得到的数字签名发送给验证方,避免加密方无端不提供数字签名而损害验证方的合法权益,有效保障验证方的权益。
[0025]
在第二方面的一种可能的实施例中,解密请求还包括零知识证明,以使可信第三方在对密文进行解密处理之前,先验证零知识证明,在零知识证明通过验证时,再对密文进行解密处理,以确保利用密文解密得到的是正确的加密方的数字签名,提升加密签名的解密效率。
[0026]
第三方面,本技术还提供一种解密方法,该解密方法包括以下步骤:接收来自验证方的解密请求,解密请求包括密文,密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;响应解密请求,利用同态加密私钥对密文进行解密处理,得到数字签名;向验证方发送数字签名。
[0027]
示例性地,本技术实施例中的解密方法可以应用于可信第三方,可信第三方可以由可信的至少一个解密设备来实现。
[0028]
可以看出,本技术实施例的解密方法中,接收到验证方的解密请求之后,根据同态加密公钥对解密请求中携带的密文进行解密处理,以得到数字签名,并将数字签名发送给验证方,避免加密方无端不提供数字签名而损害验证方的合法权益,有效保障验证方的权益。
[0029]
在第三方面的一种可能的实施例中,同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0030]
在第三方面的一种可能的实施例中,同态加密公钥为paillier同态加密公钥时,密文为(r,c),其中,r为数字签名中的r值,c为根据第一随机数u和pk1对数字签名中的s值进行paillier同态加密处理而得到的加密参数,第一随机数u和n的最大公约数为1。
[0031]
在第三方面的一种可能的实施例中,解密请求还包括零知识证明,零知识证明为加密方为证明密文所加密的明文为数字签名而根据密文生成的;在利用同态加密私钥对密文进行解密处理之前,方法还包括以下步骤:对零知识证明进行验证,得到零知识证明的验证结果;验证结果为通过验证时,利用同态加密私钥对密文进行解密处理。
[0032]
可以看出,可信第三方在对密文进行解密处理之前,先验证零知识证明,在零知识证明通过验证时,再对密文进行解密处理,以确保利用密文解密得到的是正确的加密方的数字签名,提升加密签名的解密效率。
[0033]
在第三方面的一种可能的实施例中,数字签名为曲线数字签名,零知识证明具体如下式:其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。
[0034]
在第三方面的一种可能的实施例中,在向验证方发送数字签名之前,方法还包括以下步骤:对数字签名进行有效性验证处理,得到签名验证结果,签名验证结果用于指示数字签名为有效签名或无效签名;签名验证结果指示数字签名为有效签名时,向验证方发送
数字签名。
[0035]
可以看出,在可信第三方解密密文得到数字签名之后,先对该数字签名进行有效性验证处理,得到签名验证结果,确定签名验证结果只是数字签名为有效签名时,则可信第三方可以将该数字签名发送给验证方,保障解密得到的数字签名是有效签名。
[0036]
第四方面,本技术还提供一种解密方法,应用于第一解密设备,第一解密设备应用于解密系统,解密系统还包括m个第二解密设备,m为大于零的整数;第一解密设备、每个第二解密设备均持有从同态加密私钥拆分出的一个子私钥,且第一解密设备及每个第二解密设备持有的子私钥各不相同;该解密方法包括以下步骤:接收来自验证方的解密请求,解密请求包括密文,密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;响应解密请求,利用解密系统中的至少两个解密设备所持有的子私钥对密文进行解密处理,得到数字签名;向验证方发送数字签名。
[0037]
示例性地,本技术实施例中的解密方法可以应用于可信第三方,可信第三方可以由可信的至少两个解密设备来实现,其中,上述至少两个解密设备为第一解密设备和m个第二解密设备,m为大于零的整数。
[0038]
可以看出,本技术实施例中的解密方法,在响应验证方的解密请求时,利用解密系统中的至少两个解密设备所持有的子私钥对密文进行解密处理得到数字签名后,将该数字签名发送给验证方;避免加密方无端不提供数字签名而损害验证方的合法权益,有效保障验证方的权益。
[0039]
在第四方面的一种可能的实施例中,在接收解密请求之前,解密方法还包括以下步骤:根据密钥分割算法对同态加密私钥进行拆分得到m+1个子私钥;将m个子私钥分配给m个第二解密设备,m个子私钥为m+1个子私钥中除了第一解密设备持有的子私钥之外的子私钥。
[0040]
可以看出,解密系统中的任一解密设备所持有的子私钥,可以是由解密系统中的任一个解密设备,如第一解密设备或第二解密设备,根据密钥分割算法对同态加密私钥进行拆分后得到的。以第一解密设备为例,第一解密设备对同态加密私钥进行拆分后得到m+1个子私钥,将m个子私钥分配给m个第二解密设备,该m个子私钥为m+1个子私钥中除了第一解密设备持有的子私钥之外的子私钥。对于解密系统中除第一解密设备之外的其他解密设备来说,拆分同态加密私钥的方法和第一解密设备一样,不做赘述。
[0041]
在第四方面的一种可能的实施例中,同态加密私钥为paillier同态加密私钥,同态加密公钥为paillier同态加密公钥pk1时;在接收解密请求之前,解密方法还包括以下步骤:确定第一安全素数p'和第二安全素数q';根据第一安全素数p'和第二安全素数q'确定同态加密私钥和同态加密公钥,同态加密私钥为第一差值和第二差值之间的最小公倍数,第一差值为p'和1之间的差值,第二差值为q'和1之间的差值,同态加密公钥pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0042]
可以看出,第一解密设备在响应解密请求之前,需要先确定同态加密私钥和同态加密公钥,当同态加密私钥为paillier同态加密私钥,同态加密公钥为paillier同态加密公钥pk1时,具体的确定方法为先确定第一安全素数p'和第二安全素数q';再根据第一安全素数p'和第二安全素数q'确定同态加密私钥和同态加密公钥。
[0043]
在第四方面的一种可能的实施例中,m个第二解密设备为两个以上第二解密设备,
至少两个子私钥为三个以上子私钥时,根据密钥分割算法对同态加密私钥进行拆分得到至少两个子私钥,包括以下步骤:根据同态加密私钥和同态加密公钥确定衍生密钥d,衍生密钥d满足下式:(d modλ)=0,且(d mod n)=1,其中,λ为同态加密私钥,n为同态加密私钥中的n值,mod为求余函数;根据秘密共享算法对衍生密钥d进行拆分得到三个以上子私钥。
[0044]
可以看出,当解密系统包括3个以上解密设备时,在对同态加密私钥进行拆分时,需要先根据同态加密私钥和同态加密公钥确定衍生密钥d,再根据秘密共享算法对衍生密钥d进行拆分得到3个以上子私钥,其中,秘密共享算法的优点在于每个解密设备都独立持有一部分关于衍生密钥d的子私钥,只有将足够数目的子私钥组合起来,才能够重新恢复出衍生密钥d。当获得的子私钥数量不足时,无论采用何种组合策略,不会泄露关于衍生密钥d的任何信息。
[0045]
在第四方面的一种可能的实施例中,m个第二解密设备为一个第二解密设备,至少两个子私钥为两个子私钥时,根据密钥分割算法对同态加密私钥进行拆分得到至少两个子私钥,包括以下步骤:根据同态加密私钥和同态加密公钥确定衍生密钥d,衍生密钥d满足下式:(d modλ)=0,且(d mod n)=1,其中,λ为同态加密私钥,n为同态加密私钥中的n值,mod为求余函数;确定第二随机数α,α为小于d的整数;将d和α的差值、α确定为两个子私钥。
[0046]
可以看出,当解密系统包括2个解密设备时,在对同态加密私钥进行拆分时,需要先根据同态加密私钥和同态加密公钥确定衍生密钥d,再确定一个小于衍生密钥d的整数α,接着,可以将d和α的差值、α确定为解密系统的两个子私钥。
[0047]
在第四方面的一种可能的实施例中,在将至少两个子私钥分配给第一解密设备和至少一个第二解密设备之后,方法还包括:删除第一安全素数p'、第二安全素数q'、同态加密私钥和衍生密钥d。
[0048]
可以看出,在完成子私钥分配之后,需要将同态加密私钥、第一安全素数p'、第二安全素数q'和衍生密钥d等秘密信息删除,避免因信息泄露对加密方的合法权益造成损害。
[0049]
在第四方面的一种可能的实施例中,在接收解密请求之前,方法还包括以下步骤:接收第三解密设备发送的子私钥,子私钥是第三解密设备从同态加密私钥拆分出的一个子私钥,第三解密设备为m个第二解密设备中的一个第二解密设备。
[0050]
可以看出,解密系统中的解密设备所持有的子私钥,也可以是由解密系统中除该解密设备自身之外的任一个解密设备,如第三解密设备,根据密钥分割算法对同态加密私钥进行拆分后得到的。以第三解密设备为例,第三解密设备对同态加密私钥进行拆分后得到m+1个子私钥,将m个子私钥分配给第一解密设备和m-1个第二解密设备,该m个子私钥为m+1个子私钥中除了第三解密设备持有的子私钥之外的子私钥,该m-1个第二解密设备为m个第二解密设备中除第三解密设备之外的第二解密设备。
[0051]
在第四方面的一种可能的实施例中,解密请求还包括零知识证明,零知识证明为加密方为证明密文所加密的明文为数字签名而根据密文生成的;在对密文进行解密处理之前,解密方法还包括以下步骤:对零知识证明进行验证,得到零知识证明的验证结果;验证结果为通过验证时,利用解密系统中的至少两个解密设备所持有的子私钥对密文进行解密处理。
[0052]
可以看出,在对密文进行解密处理之前,先验证零知识证明,在零知识证明通过验证时,再对密文进行解密处理,以确保利用密文解密得到的是正确的加密方的数字签名,提
升加密签名的解密效率。
[0053]
在第四方面的一种可能的实施例中,数字签名为曲线数字签名,零知识证明具体如下式:其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。
[0054]
在第四方面的一种可能的实施例中,在向验证方发送数字签名之前,解密方法还包括以下步骤:对数字签名进行有效性验证处理,得到签名验证结果信息,签名验证结果信息用于指示数字签名为有效签名或无效签名;签名验证结果信息指示数字签名为有效签名时,向验证方发送数字签名。
[0055]
可以看出,在解密密文得到数字签名之后,先对该数字签名进行有效性验证处理,得到签名验证结果,确定签名验证结果只是数字签名为有效签名时,则可以将该数字签名发送给验证方,保障解密得到的数字签名是有效签名。
[0056]
第五方面,本技术还提供一种加密设备,该加密设备包括:处理模块,用于利用可信第三方确定的同态加密公钥对数字签名进行加密处理得到密文;生成模块,用于根据密文生成零知识证明,零知识证明用于证明密文所加密的明文为数字签名;提供模块,用于提供密文和零知识证明给验证方。
[0057]
第六方面,本技术还提供一种加密签名处理装置,该装置包括:获取模块,用于获取密文和零知识证明,密文为加密方利用可信第三方确定的同态加密公钥对数字签名进行加密处理而得到的,零知识证明为加密方为证明密文所加密的明文为数字签名而根据密文生成的;验证模块,用于对零知识证明进行验证,得到零知识证明的验证结果。
[0058]
第七方面,本技术还提供一种解密设备,该解密设备包括:接收模块,用于接收来自验证方的解密请求,解密请求包括密文,密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;解密模块,用于响应解密请求,利用同态加密私钥对密文进行解密处理,得到数字签名;发送模块,用于向验证方发送数字签名。
[0059]
第八方面,本技术还提供一种第一解密设备,第一解密设备应用于解密系统,解密系统还包括m个第二解密设备,m为大于零的整数;第一解密设备、每个第二解密设备均持有从同态加密私钥拆分出的一个子私钥,且第一解密设备及每个第二解密设备持有的子私钥各不相同;第一解密设备包括:接收模块,用于接收来自验证方的解密请求,解密请求包括密文,密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;解密模块,用于响应解密请求,利用解密系统中的至少两个解密设备所持有的子私钥对密文进行解密处理,得到数字签名;发送模块,用于向验证方发送数字签名。
[0060]
第九方面,本技术还提供一种电子设备,包括处理器和存储器,其中,处理器和存储器相连,其中,存储器用于存储程序代码,处理器用于调用程序代码,以执行如第一方面所述的加密方法,或者,执行如第二方面所述的加密签名处理方法,或者,执行如第三方面所述的解密方法,或者,执行如第四方面所述的解密方法。
[0061]
第十方面,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如第一方面所述的加密方法,或者,
实现如第二方面所述的加密签名处理方法,或者,实现如第三方面所述的解密方法,或者,实现如第四方面所述的解密方法。
[0062]
第十一方面,本技术还提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面所述的加密方法,或者,执行如第二方面所述的加密签名处理方法,或者,执行如第三方面所述的解密方法,或者,执行如第四方面所述的解密方法。
[0063]
第十二方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行如第一方面所述的加密方法,或者,执行如第二方面所述的加密签名处理方法,或者,执行如第三方面所述的解密方法,或者,执行如第四方面所述的解密方法。
[0064]
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行如第一方面所述的加密方法,或者,执行如第二方面所述的加密签名处理方法,或者,执行如第三方面所述的解密方法,或者,执行如第四方面所述的解密方法。
附图说明
[0065]
下面对本技术实施例用到的附图进行介绍。
[0066]
图1是操作-反馈示意图;
[0067]
图2是电子旅馆预定系统的工作流程示意图;
[0068]
图3是图2的事件划分示意图;
[0069]
图4是对图3改进后的智能合约执行流程示意图;
[0070]
图5是本技术实施例提供的一种加密方法的流程示意图;
[0071]
图6是本技术实施例提供的一种加密方、验证方、可信第三方的交互流程图;
[0072]
图7是本技术实施例提供的一种加密签名处理方法的流程示意图;
[0073]
图8是本技术实施例提供的一种解密方法的流程示意图;
[0074]
图9是本技术实施例提供的另一种解密方法的流程示意图;
[0075]
图10是本发明实施例提供的一种加密设备的结构示意图;
[0076]
图11是本发明实施例提供的一种加密签名处理装置的结构示意图;
[0077]
图12是本发明实施例提供的一种解密设备的结构示意图;
[0078]
图13是本发明实施例提供的一种第一解密设备的结构示意图;
[0079]
图14是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
[0080]
下面将结合附图,对本技术中的技术方案进行描述。
[0081]
由于本技术实施例涉及签名加解密的应用,为了便于理解,下面先对本技术实施例涉及的相关术语等相关概念进行介绍。
[0082]
(1)、可信第三方
[0083]
可信第三方(trusted third party,ttp)是指通信双方都信任的实体,可信第三方具有一定的计算能力和存储能力。
[0084]
(2)、可验证加密签名
[0085]
可验证加密签名ves是一种公钥加密算法,其有很多应用,如certified e-mail,fair exchange,contract signing等。以利用ves构造一个公平的端对端智能合约系统为应用背景,一个端对端的智能合约由合同双方直接执行一系列操作-反馈,无需可信第三方实时监督合同的执行,见图1,一个操作-反馈可定义为一个事件。
[0086]
图2是一个具体的例子,一个电子旅馆预定系统的工作流程,抽象为两个合约方,用户和旅馆之间的一系列操作-反馈。其中箭头指向旅馆的代表操作,箭头指向用户的代表相应的反馈。这样的端对端智能合约的最大挑战是合约的公平性(fairness),即对于一些关键的操作如付钱,签名等,如果一方执行操作后,而对方不按合约返还响应如终止合约继续执行,则合约的公平性受到破坏。为了解决这个问题,可区分合约的一系列事件为公平敏感事件和非公平敏感事件,公平敏感事件为对合约公平性有重要影响的操作-响应,既所涉及的操作通常为付款,签名等,参考图3,图3是对图2中事件的一个划分。
[0087]
由于公平敏感事件的操作所涉及的本质上都是数字签名,因此可采用ves技术将每个公平敏感事件“操作-响应”转化为“承诺-响应-兑现”。图4所示的流程是将图3中的公平敏感事件利用ves进行转化从而实现端到端的智能合约执行流程,(假设“用户签名+电子货币内容”构成真正的电子支付)。由于使用ves,需设置一个离线ttp进行纠纷处理,即如果承诺方不提交“兑现”,反馈方可求助ttp解密并获取“兑现”(即数字签名)。
[0088]
(3)、安全素数
[0089]
素数,也即质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。如果一个素数p=2q+1,并且q也为素数,则p为安全素数(safe prime)。
[0090]
(4)、零知识证明
[0091]
零知识证明(zero-knowledge proof)或零知识协议是一种基于概率的验证方法,包括两部分:宣称某一命题为真的证明者(prover)和确认该命题确实为真的验证者(verifier)。
[0092]
零知识证明指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的,在密码学中非常有用。顾名思义,零知识证明就是既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄漏出去,即给外界的“知识”为“零”。
[0093]
(5)、杂凑函数
[0094]
杂凑函数又称hash函数、哈希函数,用于将任意长度的消息x压缩为固定长度的杂凑值(哈希值、指纹值)y。
[0095]
(6)、椭圆曲线数字签名算法
[0096]
椭圆曲线数字签名算法(elliptic curve digital signature algorithm,ecdsa)是数字签名算法(digital signature algorithm,dsa)的椭圆曲线实现。椭圆曲线密码术能够以较小的密钥提供与rsa相对相同的安全级别。其工作原理如下:
[0097]
让g是个阶为素数q的椭圆曲线群,而p是g的一个生成元,及h:{0,1}
*
→
{0,1}
*
是一个杂凑函数。一个用户的公私钥对为(pk=y=[x]p,sk=x∈rz
q*
),z
q*
表示所有与q互素并小于q的整数集合,r表示随机(random),也即从z
q*
集合中随机选择一个数作为私钥sk。
[0098]
则利用ecdsa算法对消息m的签名的过程为:
[0099]
选取k∈rz
q*
,计算r=(r
x
,ry)=[k]p;
[0100]
计算s=k-1
·
(h(m)+r
x
·
x)(mod q),则签名σ=(r,s)。
[0101]
(7)、爱德华曲线数字签名算法
[0102]
爱德华曲线数字签名算法(edwardscurvedigital signature algorithm,eddsa)是一种使用基于扭曲爱德华兹曲线的施诺尔(schnorr)签名变体的数字签名方案。签名创建在eddsa中是确定性的,其安全性是基于某些离散对数问题的难处理性,因此它比dsa和ecdsa更安全,后者要求每个签名都具有高质量的随机性。eddsa与ecdsa的参数和公私钥相同。其工作原理如下:
[0103]
对消息m的签名的过程为:
[0104]
选取k∈rz
q*
,计算r=(r
x
,ry)=[k]p;
[0105]
计算s=r
x
+h(r,y,m)
·
x(mod q);则签名σ=(r,s)。
[0106]
由于ecdsa签名和eddsa签名的可验证性,它们在区块链及智能合约中广泛应用。
[0107]
(8)、同态加密
[0108]
同态加密(homomorphic encryption,he)是一种特殊的加密方法,它允许直接对加密数据执行计算,如加法和乘法,而计算过程不会泄露原文的任何信息。计算的结果仍然是加密的,拥有密钥的用户对处理过的密文数据进行解密后,得到的正好是处理后原文的结果。
[0109]
根据支持的计算类型和支持程度,同态加密可以分为以下三种类型:
[0110]
半同态加密(partially homomorphic encryption,phe):只支持加法或乘法中的一种运算。其中,只支持加法运算的又叫加法同态加密(additive homomorphic encryption,ahe);部分同态加密(somewhat homomorphic encryption,swhe):可同时支持加法和乘法运算,但支持的计算次数有限;
[0111]
全同态加密(fully homomorphic encryption,fhe):支持任意次的加法和乘法运算。
[0112]
(9)、派利尔加密(paillier encryption)
[0113]
派利尔加密(paillier encryption)是最著名的半同态加密方案,paillier是一个支持加法同态的公钥密码系统。其工作原理如下:
[0114]
让p,q是两个等长的两个安全素数,且n=p.q。设g=n+1,λ=λ(n)=lcm(p-1,q-1),lcm表示最小公倍数;用户的公钥pk=(n,g),私钥sk=λ。
[0115]
加密数据m∈zn的过程如下:
[0116]
选取u∈zn,s.t.,gcd(u,n)≠1,并计算密文c=un.gm(mod n2)。
[0117]
解密密文c的过程如下:
[0118]
计算t=c
λ
=(u
ngm
)
λ
=(n+1)
mλ
=1+n.m.λ(mod n2);计算明文
[0119]
(10)、门限加密
[0120]
门限加密方案是门限密码算法常见应用之一,常常体现为一类分布式加解密协议,可以实现如下功能:任意用户都可以使用公钥对数据进行加密。私钥的所有权由多个指定的秘密持有者联合控制,只有满足数目的秘密持有者合作,将解密分片聚合,才能实现解密。门限加密方案可以有效保护需要多方授权才能使用的隐私数据。换句话说,在(w-out-of-z)门限秘密共享体制中,秘密分发者将一个秘密信息分成z个秘密份额,分发给z个人,
当需要恢复秘密信息时,任意少于w个的秘密保存者都得不到该秘密的任何信息。
[0121]
其中,门限秘密共享体制包括沙米尔(shamir)秘密分享算法,线性秘密共享方案(linear secret sharing scheme,lsss)等,shamir秘密分享算法是基于插值法来实现秘密分享,而lsss是基于秘密共享矩阵来实现。
[0122]
(11)、门限派利尔加密
[0123]
w-出自-z(w-out-of-z)门限派利尔加密的工作原理如下:
[0124]
密钥拆分:选取整数d,s.t.,d=0(modλ)and d=1(mod n);使用w-出自-z的shamir秘密分享机制拆分d,满足d=f(0)and di=f(i),并将di安全传送给参与方i,i=[1,z]。
[0125]
门限解密c=u
ngm
(mod n2):第i
th
参与方计算ci=c
di
(mod n2);设s为一个包含w或多于w个ci的集合,则由s中的ci可计算(让δ=z!):
[0126][0127]
因为d=0(modλ),d=1(mod n),c'=1+nmδ(mod n2),所以
[0128]
目前,可验证加密签名包括可验证加密离散对数(discrete logarithm,dl)类数字签名,而dsa是dl类数字签名的代表。dsa的工作原理如下:
[0129]
公钥:g是阶为素数q的循环群,g为生成元。公私钥对为(y=g
x
,x∈z
q*
)。
[0130]
签名:σ=(r=gk,s=k-1
(h(m)+r.x)(mod q))。
[0131]
验证:rs=g
h(m)
yr。
[0132]
为了便于生成零知识证明,通常ttp的加密方案为elgamal。假设elgamal的公私钥为(ω=g
ω
,ω∈z
q*
)。可利用elgamal直接加密s,得到c1=s.g
α
,c2=ω
α
,α∈z
q*
。
[0133]
那么由于ves需计算
[0134]
这样,所以,ves(σ):=(c=(c1=s.g
α
,c2=ω
α
),π)。
[0135]
由于零知识需证明双指数,只能采用单比特挑战,验证零知识证明时需要重复多次,因此零知识证明的验证效率低,影响可验证加密签名的使用体验。
[0136]
针对上述技术问题,本技术实施例提供一种加密方法以及一种加密签名处理方法,利用同态加密公钥对数字签名进行加密而得到密文,再根据密文生成零知识证明,不仅签名加密效率高,而且可以有效提高零知识证明的验证效率,提升可验证加密签名的使用体验。另外,本技术实施例还提供两种解密方法,接收到验证方的解密请求之后,根据同态加密公钥对解密请求中携带的密文进行解密处理,以得到数字签名,并将数字签名发送给验证方,避免加密方无端不提供数字签名而损害验证方的合法权益,有效保障验证方的权益。
[0137]
下面介绍本技术实施例提供的加密方法、加密签名处理方法以及解密方法。其中,加密方法的执行主体可以是加密设备自身,也可以是加密设备中的芯片。同样地,加密签名处理方法的执行主体可以是加密签名处理装置自身,也可以是加密签名处理装置中的芯片。另外,解密方法的执行主体可以是解密设备自身,也可以是解密设备中的芯片;或者,解密方法的执行主体可以是第一解密设备自身,也可以是第一解密设备中的芯片。
[0138]
需要说明的是,本技术的ves涉及三个参与方:加密方,验证方和可信第三方。包括
四个过程:
[0139]
系统初始化(setup):各方建立自己的系统参数,包括数字签名方案的参数(如具体采用的数字签名算法、签名的长度等参数)及公私钥对的生成(数字签名方案可由加密方拥有,也可不为加密方拥有),及可信第三方建立公钥加密的参数及公私钥对。可选地,加密方生成并拥有对数据进行签名和验证的公钥(公开)和私钥,其中,加密方对数据进行签名处理得到数字签名σ。
[0140]
加密(encryption):加密方利用可信第三方确定的公钥加密其所拥有的数字签名σ而生成可验证的加密数字签名ves(σ)。
[0141]
验证(verify):验证方验证ves(σ)的正确性。
[0142]
解密(decryption):可信第三方利用自身确定的私钥验证并解密ves(σ)而获取σ。
[0143]
利用上述过程可以实现对数字签名的加密、验证和解密,实现可验证加密签名。
[0144]
请参考图5,图5是本技术实施例提供的一种加密方法的流程示意图;加密方法包括以下步骤:
[0145]
101、加密方利用可信第三方确定的同态加密公钥对数字签名进行加密处理得到密文;
[0146]
具体地,本技术实施例的加密方法的执行主体以加密设备(即加密方)为例。参考图6,图6是本技术实施例提供的一种加密方、验证方、可信第三方的交互流程图;加密方以自身拥有的私钥对数据进行签名处理得到数字签名之后,利用可信第三方确定的同态加密公钥对上述数字签名进行加密处理,以得到密文。其中,加密方对数据进行签名处理以得到数字签名的方法可以是采用ecdsa或eddsa等签名算法(具体签名处理过程可以参考前述内容,不做赘述。),即上述数字签名可以为ecdsa签名或eddsa等曲线数字签名,数字签名包括但不限于前面列举的签名。另外,利用同态加密公钥对数字签名进行加密处理得到密文,加密处理的效率高,可以节省生成可验证签名的时间。
[0147]
102、加密方根据密文生成零知识证明,零知识证明用于证明密文所加密的明文为数字签名;
[0148]
具体地,根据步骤101得到的密文成一个零知识证明,该零知识证明用于证明密文所加密的明文为数字签名。
[0149]
103、加密方提供密文和零知识证明给验证方。
[0150]
相应地,加密签名处理方法的执行主体以加密签名处理装置(即验证方)为例,参考图7,图7是本技术实施例提供的一种加密签名处理方法的流程示意图;步骤201中,验证方获取密文和零知识证明。
[0151]
具体地,将密文和零知识证明提供给验证方,以使验证方可以通过验证零知识证明进而验证密文,实现可验证加密签名。其中,由于对数字签名进行同态加密处理,使得签名加密效率高,而且零知识证明的验证效率高,可以有效提升可验证加密签名的使用体验。
[0152]
在一些可能的实施例中,在利用同态加密公钥对数字签名进行加密处理之前,需要先确定同态加密私钥和同态加密公钥。其中,同态加密公钥包括半同态加密公钥(包括派利尔同态加密公钥)、部分同态加密公钥或全同态加密公钥。同态加密私钥包括半同态加密私钥(包括派利尔同态加密私钥)、部分同态加密私钥或全同态加密私钥。同态加密私钥和同态加密公钥包括但不受限于上述列举的情况。具体地,本技术实施例中由可信第三方来
确定同态加密私钥和同态加密公钥。当可信第三方由一个解密设备组成时,由该解密设备来确定同态加密私钥和同态加密公钥;而当可信第三方包括两个以上解密设备时,由两个以上解密设备中的任一个解密设备来确定同态加密私钥和同态加密公钥。
[0153]
进一步地,同态加密私钥为paillier同态加密私钥,同态加密公钥为paillier同态加密公钥pk1时;可信第三方确定同态加密私钥和同态加密公钥的方法包括:
[0154]
s1、确定第一安全素数p'和第二安全素数q';具体地,第一安全素数和第二安全素数的具体取值可以根据实际情况进行确定,不做特别限定。
[0155]
s2、根据第一安全素数p'和第二安全素数q'确定同态加密私钥和同态加密公钥,其中,同态加密私钥为第一差值和第二差值之间的最小公倍数,第一差值为p'和1之间的差值(p'-1),第二差值为q'和1之间的差值(q'-1),而同态加密公钥pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0156]
可见,本技术实施例采用paillier加密方案对数字签名进行加密,由于paillier加密方案是标准化的公钥加密方案,可信度高且易于推广使用。
[0157]
在一些可能的实施例中,同态加密公钥为paillier同态加密公钥时,步骤101具体包括以下步骤:
[0158]
1011、加密方根据n确定第一随机数u,第一随机数u和n的最大公约数为1;
[0159]
1012、加密方根据第一随机数u和pk1对数字签名中的s值进行paillier同态加密处理,得到加密参数c;
[0160]
1013、加密方根据加密参数c和数字签名中的r值确定密文,密文为(r,c)。
[0161]
可以看出,当同态加密公钥为paillier同态加密公钥pk1时,先根据pk1中的n值确定第一随机数u,再根据第一随机数u和pk1对数字签名中的s值进行paillier同态加密处理得到加密参数c;并将(r,c)确定为密文。通过仅对数字签名中的s值进行加密,不处理数字签名中的r值,以便后续验证解密后的密文所组成的数字签名的正确性。
[0162]
在一些可能的实施例中,数字签名为曲线数字签名时,零知识证明具体如下式:
[0163][0164]
其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。利用本技术的方法,可以得到完整的高效的零知识证明,可实际应用。
[0165]
进一步地,加密方构建上述零知识证明的过程如下:
[0166]
选取随机数并计算zs=[zs]r。
[0167]
选取随机数zu∈rzn并计算zn为小于n的整数的集合。
[0168]
计算e=h([s]r,c,zs,z
u,s
)。h()为可信第三方确定的用于建立零知识证明的杂凑函数。
[0169]
计算vs=zs+e.s(in z),vu=zu.ue(mod n)。
[0170]
则零知识证明π=(zs,z
u,s
,vs,vu)。
[0171]
在一些可能的实施例中,参考图6和图7,加密签名处理方法还包括以下步骤:
[0172]
202、验证方对零知识证明进行验证,得到零知识证明的验证结果。
[0173]
具体地,验证方收到加密方发送的可验证加密签名(即密文和零知识证明)之后,对零知识证明进行验证,得到零知识证明的验证结果,验证结果包括通过验证或未通过验证。可以看出,本实施例中的加密签名处理方法,由于密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的,而零知识证明为根据密文生成的,使得零知识证明的验证效率高,可以有效提升可验证加密签名的使用体验。示例性地,而当零知识证明的验证结果为通过验证时,验证方可以向加密方提供服务,例如,用户(加密方)预订酒店房间时,向酒店(验证方)提供了可验证加密签名,在酒店验证零知识证明通过时,向用户提供预订房间的电子钥匙。而当零知识证明的验证结果为未通过验证时,验证方不向加密方提供服务,例如,酒店不向用户提供预订房间的电子钥匙。
[0174]
进一步地,验证方验证零知识证明的过程如下:
[0175]
验证[vs]r?=zs+[e.h(m)]p+[e.r
x
]r;
[0176]
验证v
ungvs
?=z
u,s
.ce(mod n2);
[0177]
验证0《vs《2
(ε+1)(lq+k)
,验证s的大小是否满足要求;
[0178]
只有上述验证全部通过,才输出验证结果信息,如1代表验证通过,否则输出验证结果信息,如0代表验证未通过。验证结果信息的具体形式还可以是其他形式,不做特别限定。其中,在验证零知识证明时,由于e是作为一个整体进行运算,不需要逐比特进行验证,因此,零知识证明的验证效率较高。
[0179]
在一些可能的实施例中,参考图6,加密签名处理方法还包括以下步骤:
[0180]
203、验证结果为通过验证,且未收到加密方发送的数字签名时,验证方向可信第三方发送解密请求,以请求可信第三方利用同态加密私钥对密文进行解密处理以得到数字签名,解密请求包括密文;
[0181]
相应地,参考图8,图8是本技术实施例提供的一种解密方法的流程示意图;该解密方法应用于可信第三方,该可信第三方可以由一个以上的解密设备来实现,本实施例中,以可信第三方为一个解密设备为例,此时的解密方法包括以下步骤:
[0182]
301、可信第三方接收来自验证方的解密请求;
[0183]
302、可信第三方响应解密请求,利用同态加密私钥对密文进行解密处理,得到数字签名;
[0184]
303、可信第三方向验证方发送数字签名。
[0185]
另外,相应地,参考图9,图9是本技术实施例提供的另一种解密方法的流程示意图;该解密方法应用于第一解密设备,第一解密设备应用于解密系统(即可信第三方),解密系统还包括m个第二解密设备,m为大于零的整数;其中,第一解密设备、每个第二解密设备均持有从同态加密私钥拆分出的一个子私钥,且第一解密设备及每个第二解密设备持有的子私钥各不相同;即此时的可信第三方由两个以上的解密设备来实现,步骤203中,验证方向可信第三方中的第一解密设备发送解密请求;该解密方法包括以下步骤:
[0186]
401、第一解密设备接收来自验证方的解密请求;
[0187]
402、第一解密设备响应解密请求,利用解密系统中的至少两个解密设备所持有的子私钥对密文进行解密处理,得到数字签名;
[0188]
403、第一解密设备向验证方发送数字签名。
[0189]
其中,实际应用中,解密请求中除了密文之外,还可以包括其他信息,例如证明验证方确实向加密方提供了服务的证明,具体不做特别限定。
[0190]
204、验证方接收可信第三方发送的数字签名。
[0191]
可以看出,在零知识证明的验证结果为通过验证,且未收到加密方发送的数字签名时,验证方可以向可信第三方发送解密请求,以请求可信第三方利用同态加密私钥对密文进行解密处理以得到数字签名(即利用图8或图9的方法进行解密处理),最后可信第三方将解密得到的数字签名发送给验证方,避免加密方无端不提供数字签名而损害验证方的合法权益,有效保障验证方的权益。
[0192]
在一些可能的实施例中,上述解密请求(适用于图8或图9的解密方法中的解密请求)还可以包括上述零知识证明,以使可信第三方在对密文进行解密处理之前,先验证零知识证明,在零知识证明通过验证时,再利用同态加密私钥对密文进行解密处理(即图8或图9所示的解密处理步骤),以确保利用密文解密得到的是正确的加密方的数字签名,提升加密签名的解密效率。
[0193]
在一些可能的实施例中,参考图8和图9,在向验证方发送数字签名之前,解密方法还包括以下步骤:
[0194]
可信第三方对数字签名进行有效性验证处理,得到签名验证结果,签名验证结果用于指示数字签名为有效签名或无效签名;
[0195]
签名验证结果指示数字签名为有效签名时,可信第三方向验证方发送数字签名。
[0196]
可以看出,在可信第三方利用图8或图9的解密方法对密文进行解密处理以得到数字签名之后,先对该数字签名进行有效性验证处理,得到签名验证结果,确定签名验证结果只是数字签名为有效签名时,则可信第三方可以将该数字签名发送给验证方,保障解密得到的数字签名是有效签名。
[0197]
下面以可信第三方为一个解密设备,数字签名为ecdsa签名为例,对加密方、验证方和可信第三方的交互过程进行具体说明:
[0198]
基于paillier加密方案对ecdsa签名进行加密,并有完整的零知识证明。具体地,加密方使用tpp的paillier公钥加密ecdsa签名σ的s部分生成密文c,然后构建零知识证明π证明密文c中的s与公开的r部分构成一个完整的ecdsa签名,且s满足特定的尺寸要求。验证方根据特定的步骤验证(c=(r,c),π)的正确性。ttp可使用其paillier私钥加密解密c以获取s。具体过程如下:
[0199]
首先,进行系统初始化。其中,可信第三方选取两个安全素数p',q',计算n=p'q',g=n+1;λ=λ(n),则((n,g),λ)分别是paillier同态加密的公钥和私钥。相关方(加密方、验证方和可信第三方等系统相关方)生成ecdsa公共参数,如g,q,p,h(),g是个阶为素数q的椭圆曲线群,而p是g的一个生成元,及h是一个杂凑函数。加密方生成公私钥对(pk=y=[x]p,sk=x∈rz
q*
),pk为公钥,sk为私钥。系统(如ttp)决定一个杂凑函数h:{0,1}*
→
{0,1}k,其中k决定零知识证明的完备性(soundness),k为整数,而完备性的错误率为另外,系统决定参数ε是决定零知识证明的零知识性的参数,其中,ln是ttp同态加密公钥中的n值的比特数,而lq是ecdsa公共参数q的比特数。而零知识证明的零知识性的统计误差为
[0200]
接着,加密方对数字签名进行加密。其中,利用可信第三方确定的paillier同态加密公钥加密一个ecdsa签名σ=(r=(r
x
,ry)=[k]p,s=k-1
.(h(m)+r
x
.x)(mod q))的过程如下:
[0201]
1)选取随机数u∈rzn,s.t.,gcd(u,n)=1,u和n的最大公约数为1;计算c=un.gs(mod n2),其中g=n+1。
[0202]
2)构造零非交互知识证明2)构造零非交互知识证明其中,s1为中间变量,[h(m)]p+[r
x
]y=[s1]r)为曲线数字签名的验证公式,构造零非交互知识证明的过程如下:
[0203]
选取随机数并计算zs=[zs]r;
[0204]
选取随机数zu∈rzn,并计算其中,zn为小于n的整数的集合;
[0205]
计算e=h([s]r,c,zs,z
u,s
);
[0206]
计算vs=zs+e.s(in z),vu=zu.ue(mod n);
[0207]
设π=(zs,z
u,s
,vs,vu)。
[0208]
3)输出(c=(r,c),π)。加密方将(c=(r,c),π)发送给验证方。
[0209]
接着,验证方进行验证。其中验证(c=(r,c),π=(zs,z
u,s
,vs,vu))的过程如下:
[0210]
1)验证[vs]r?=zs+[e.h(m)]p+[e.r
x
]r;
[0211]
2)验证v
ungvs
?=z
u,s
.ce(mod n2);
[0212]
3)验证
[0213]
4)只有上述验证全部通过,才输出1(代表验证通过),否则输出0。
[0214]
最后,当可信第三方接收到验证方的解密请求时,可信第三方解密(c=(r,c=un.gs),π)的过程如下:
[0215]
1)首先验证(c,π)如上,验证失败输出l(表示解密失败);否则,处理如下:
[0216]
2)计算t=c
λ
=(un.g
s’)
λ
=1+n.s’.λ(mod n2);
[0217]
3)计算
[0218]
4)输出s=s’(mod q)。其中,步骤1)至步骤4)的处理过程也可以被替代为:先解密得到s,再根据解密得到的s和r组成数字签名,对数字签名的有效性进行验证,验证通过,则执行步骤5)。
[0219]
5)可信第三方可以只将解密出来的s发送给验证方,也可以将解密出来的s和r组成完整的数字签名(r,s)发送给验证方。
[0220]
使用标准化的密码机制pailllier加密,加密效率高,且零知识证明的计算量为常数;而且完整的零知识证明具有落地实用的条件。
[0221]
在一些可能的实施例中,在接收解密请求之前,解密方法还包括以下步骤:
[0222]
根据密钥分割算法对同态加密私钥进行拆分得到m+1个子私钥;
[0223]
将m个子私钥分配给m个第二解密设备,m个子私钥为m+1个子私钥中除了第一解密设备持有的子私钥之外的子私钥。
[0224]
可以看出,当可信第三方为两个以上的解密设备组成时,图9所示的解密方法在执行之前,每个解密设备需要得到一个子私钥。具体地,解密系统中的任一解密设备所持有的子私钥,可以是由解密系统中的任一个解密设备,如第一解密设备或第二解密设备,根据密钥分割算法对同态加密私钥进行拆分后得到的。以第一解密设备为例,第一解密设备对同态加密私钥进行拆分后得到m+1个子私钥,将m个子私钥分配给m个第二解密设备,该m个子私钥为m+1个子私钥中除了第一解密设备持有的子私钥之外的子私钥。对于解密系统中除第一解密设备之外的其他解密设备来说,拆分同态加密私钥的方法和第一解密设备一样,不做赘述。
[0225]
在一些可能的实施例中,m个第二解密设备为一个第二解密设备,至少两个子私钥为两个子私钥时,根据密钥分割算法对同态加密私钥进行拆分得到至少两个子私钥,包括以下步骤:
[0226]
根据同态加密私钥和同态加密公钥确定衍生密钥d,衍生密钥d满足下式:(d modλ)=0,且(d mod n)=1,其中,λ为同态加密私钥,n为同态加密私钥中的n值,mod为求余函数;
[0227]
确定第二随机数α,α为小于d的整数;
[0228]
将d和α的差值(d
–
α)、α确定为两个子私钥。
[0229]
可以看出,当解密系统包括2个解密设备时,在对同态加密私钥进行拆分时,需要先根据同态加密私钥和同态加密公钥确定衍生密钥d,再确定一个小于衍生密钥d的整数α,接着,可以将d和α的差值、α确定为解密系统的两个子私钥。
[0230]
下面以可信第三方为两个解密设备(ttpa和ttpb),数字签名为ecdsa签名为例,对加密方、验证方和可信第三方的交互过程进行具体说明:
[0231]
一个ttp负责建立paillier加密方案的参数p',q',计算n=p'q'及d,s.t.,d=0(modλ(n))及d=1(mod n),然后拆分私钥d为两个密钥份α和d
–
α,并将其中一份通过安全通道传递给令一个ttp。解密c时,两个ttp分别计算t1=c
α
(mod n2)和t2=c
d-α
(mod n2),接着由其中一个ttp合并t1和t2为t=t1.t2,然后再按照常规paillier解密方案进行解密,可见,只有两个ttp合作才可以解密,安全性高。具体过程如下:
[0232]
首先,进行系统初始化。其中,本实施例采取由一个ttp(如ttpa)负责建立paillier加密方案的参数并负责密钥分配的方案。在两个ttp互不信任的情况下,两者可利用安全多方证明的技术进行分配。
[0233]
ttpa选取两个安全素数p',q',计算n=p'q'和λ=λ(n),则((n,g),λ)分别是paillier加密的公私钥。ttpa计算整数d,s.t.,d=0(modλ)及d=1(mod n)。ttpa选取随机数α∈rz,α《d,并计算d
–
α。ttpa安全保留α作为自己的密钥,并通过安全通道发送d
–
α给ttpb作为密钥。其中,安全通道可具有对d
–
α进行加密、并且在收到d
–
α后验证其是否被修改等功能,ttpa删除所有其它秘密信息,包括安全素数p,q,λ,d。相关方(加密方、验证方和可信第三方等系统相关方)生成ecdsa公共参数,如g,q,p,h(),g是个阶为素数q的椭圆曲线群,而p是g的一个生成元,及h是一个杂凑函数。加密方生成公私钥对(pk=y=[x]p,sk=x∈rz
q*
),pk为公钥,sk为私钥。系统(如ttp)决定一个杂凑函数h:{0,1}*
→
{0,1}k,其中k决定零知识证明的完备性。另外,系统决定参数ε是决定零知识证明的零知识性的参
数,其中,ln是ttp同态加密公钥中的n值的比特数,而lq是ecdsa公共参数q的比特数。
[0234]
接着,加密方对数字签名进行加密。其中,加密一个ecdsa签名σ=(r=(r
x
,ry)=[k]p,s=k-1
.(h(m)+r
x
.x)(mod q))的过程如下:
[0235]
1)选取随机数u∈rzn,s.t.,gcd(u,n)=1,u和n的最大公约数为1;计算c=un.gs(mod n2),其中g=n+1。
[0236]
2)构造零非交互知识证明2)构造零非交互知识证明其中,s1为中间变量,[h(m)]p+[r
x
]y=[s1]r)为曲线数字签名的验证公式,构造零非交互知识证明的过程如下:
[0237]
选取随机数并计算zs=[zs]r;
[0238]
选取随机数zu∈rzn,并计算其中,zn为小于n的整数的集合;
[0239]
计算e=h([s]r,c,zs,z
u,s
);
[0240]
计算vs=zs+e.s(in z),vu=zu.ue(mod n);
[0241]
设π=(zs,z
u,s
,vs,vu)。
[0242]
3)输出(c=(r,c),π)。加密方将(c=(r,c),π)发送给验证方。
[0243]
接着,验证方进行验证,其中验证(c=(r,c),π=(zs,z
u,s
,vs,vu))的过程如下:
[0244]
1)验证[vs]r?=zs+[e.h(m)]p+[e.r
x
]r;
[0245]
2)验证v
ungvs
?=z
u,s
.ce(mod n2);
[0246]
3)验证
[0247]
4)只有上述验证全部通过,才输出1(代表验证通过),否则输出0。
[0248]
最后,当可信第三方(ttpa或ttpb,以ttpa为例)接收到验证方的解密请求时,两个ttp合作解密(c=(r,c=un.gs),π)的过程如下:
[0249]
1)两个ttp分别验证(c,π)如上,验证失败输出l(表示解密失败),否则,处理如下:
[0250]
2)ttp a计算并输出t1=c
α
(mod n2);
[0251]
3)ttp b计算并输出t2=c
d-α
(mod n2);
[0252]
4)合并t1和t2过程如下:(合并过程可由任一ttp完成,也可由验证者完成)
[0253]
计算t=t1.t2=(u
ngs’)d=1+n.s’(mod n2);
[0254][0255]
输出s=s’(mod q)。
[0256]
在一些可能的实施例中,m个第二解密设备为两个以上第二解密设备,至少两个子私钥为三个以上子私钥时,上述根据密钥分割算法对同态加密私钥进行拆分得到至少两个子私钥,具体包括以下步骤:
[0257]
根据同态加密私钥和同态加密公钥确定衍生密钥d,衍生密钥d满足下式:(d modλ)=0,且(d mod n)=1,其中,λ为同态加密私钥,n为同态加密私钥中的n值,mod为求余函数;
[0258]
根据秘密共享算法对衍生密钥d进行拆分得到三个以上子私钥。
[0259]
具体地,秘密共享算法包括沙米尔秘密分享算法、线性秘密共享算法等。其中,秘密共享算法的优点在于每个解密设备都独立持有一部分关于衍生密钥d的子私钥,只有将
足够数目的子私钥组合起来,才能够重新恢复出衍生密钥d。当获得的子私钥数量不足时,无论采用何种组合策略,不会泄露关于衍生密钥d的任何信息。
[0260]
下面以可信第三方为由3个以上的解密设备组成,数字签名为ecdsa签名为例,对加密方、验证方和可信第三方的交互过程进行具体说明:
[0261]
部署z个ttp(z≥3),且至少w(z≥w》1)个ttp合作才可以解密,w为2或3等整数。其中,一个ttp负责按照多ttp门限paillier方案建立相应的参数并负责密钥分配。解密密文c时,多个ttp按照多ttp门限paillier方案的解密算法进行解密,获取s。具体过程如下:
[0262]
首先,进行系统初始化。本实施例采取由一个ttp(假设为ttpa)负责建立paillier加密方案的参数并负责密钥分配的方案。在ttp间互不信任的情况下,z个ttp可利用安全多方证明的技术进行分配密钥。则ttpa选取两个安全素数p',q',计算n=p'q'和λ=λ(n),则((n,g),λ)分别是paillier加密的公私钥。ttpa利用前述“(11)、门限派利尔加密”的中“密钥拆分”方法分配密钥给所有的ttp。相关方(加密方、验证方和可信第三方等系统相关方)生成ecdsa公共参数,如g,q,p,h(),g是个阶为素数q的椭圆曲线群,而p是g的一个生成元,及h是一个杂凑函数。加密方生成公私钥对(pk=y=[x]p,sk=x∈rz
q*
),pk为公钥,sk为私钥。系统(如ttp)决定一个杂凑函数h:{0,1}*
→
{0,1}k,其中k决定零知识证明的完备性。另外,系统决定参数ε是决定零知识证明的零知识性的参数,其中,ln是ttp同态加密公钥中的n值的比特数。
[0263]
接着,加密方对数字签名进行加密,其中,加密一个ecdsa签名σ=(r=(r
x
,ry)=[k]p,s=k-1
.(h(m)+r
x
.x)(mod q))的过程如下:
[0264]
1)选取随机数u∈rzn,s.t.,gcd(u,n)=1,计算c=un.gs(mod n2),其中g=n+1。
[0265]
2)构造零非交互知识证明2)构造零非交互知识证明其中,s1为中间变量,[h(m)]p+[r
x
]y=[s1]r)为曲线数字签名的验证公式,构造零非交互知识证明的过程如下:
[0266]
选取随机数并计算zs=[zs]r;
[0267]
选取随机数zu∈rzn,并计算其中,zn为小于n的整数的集合;
[0268]
计算e=h([s]r,c,zs,z
u,s
);
[0269]
计算vs=zs+e.s(in z),vu=zu.ue(mod n);
[0270]
设π=(zs,z
u,s
,vs,vu)。
[0271]
3)输出(c=(r,c),π)。加密方将(c=(r,c),π)发送给验证方。
[0272]
接着,验证方进行验证,其中,验证(c=(r,c),π=(zs,z
u,s
,vs,vu))的过程如下:
[0273]
1)验证[vs]r?=zs+[e.h(m)]p+[e.r
x
]r;
[0274]
2)验证v
ungvs
?=z
u,s
.ce(mod n2);
[0275]
3)验证
[0276]
4)只有上述验证全部通过,才输出1(代表验证通过),否则输出0。
[0277]
最后,当可信第三方(任意一个ttp,以ttpa为例)接收到验证方的解密请求时,至少w个ttp合作解密(c=(r,c=un.gs),π)的过程如下:
[0278]
1)每个ttp分别验证(c,π)如上,验证失败输出l(表示解密失败),否则,处理如下:
[0279]
2)第i
th
参与方计算并输出给合并过程。合并过程计算如下:
[0280]
设s为参与解密的ttp输出的ci的集合,则由s中的ci可计算(让δ=z!)
[0281][0282]
因为d=0(modλ),d=1(mod n),c’=1+n.s’.δ(modn2),所以计算
[0283]
输出s=s’(mod q)。
[0284]
本实施例中,w-out-z门限派利尔加密方案,使用标准化的密码机制,可实际部署性强;使用的零知识证明效率高,因此整体效率高;门限解密使得多个ttp使用户无需信任单一ttp,并增强解密过程的鲁棒性。
[0285]
在一些可能的实施例中,在将至少两个子私钥分配给第一解密设备和至少一个第二解密设备之后,方法还包括:删除第一安全素数p'、第二安全素数q'、同态加密私钥和衍生密钥d。
[0286]
可以看出,在完成子私钥分配之后,需要将同态加密私钥、第一安全素数p'、第二安全素数q'和衍生密钥d等秘密信息删除,避免因信息泄露对加密方的合法权益造成损害。
[0287]
在一些可能的实施例中,在接收解密请求之前,解密方法还包括以下步骤:
[0288]
接收第三解密设备发送的子私钥,子私钥是第三解密设备从同态加密私钥拆分出的一个子私钥,第三解密设备为m个第二解密设备中的一个第二解密设备。
[0289]
可以看出,解密系统中的解密设备所持有的子私钥,也可以是由解密系统中除该解密设备自身之外的任一个解密设备,如第三解密设备,根据密钥分割算法对同态加密私钥进行拆分后得到的。以第三解密设备为例,第三解密设备对同态加密私钥进行拆分后得到m+1个子私钥,将m个子私钥分配给第一解密设备和m-1个第二解密设备,该m个子私钥为m+1个子私钥中除了第三解密设备持有的子私钥之外的子私钥,该m-1个第二解密设备为m个第二解密设备中除第三解密设备之外的第二解密设备。
[0290]
上述详细阐述了本技术实施例的方法,下面提供本技术实施例的装置。
[0291]
参考图10,图10是本发明实施例提供的一种加密设备的结构示意图;该加密设备包括处理模块1001、生成模块1002和提供模块1003,其中:
[0292]
处理模块1001,用于利用可信第三方确定的同态加密公钥对数字签名进行加密处理得到密文;
[0293]
生成模块1002,用于根据密文生成零知识证明,零知识证明用于证明密文所加密的明文为数字签名;
[0294]
提供模块1003,用于提供密文和零知识证明给验证方。
[0295]
在一些可能的实施例中,同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0296]
在一些可能的实施例中,同态加密公钥为paillier同态加密公钥时,处理模块1001具体用于:
[0297]
根据n确定第一随机数u,第一随机数u和n的最大公约数为1;
[0298]
根据第一随机数u和pk1对数字签名中的s值进行paillier同态加密处理,得到加
密参数c;
[0299]
根据加密参数c和数字签名中的r值确定密文,密文为(r,c)。
[0300]
在一些可能的实施例中,数字签名为曲线数字签名时,零知识证明具体如下式:
[0301][0302]
其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。
[0303]
利用本技术实施例的加密设备,可以实现可验证加密签名;其中,由于对数字签名进行同态加密处理,使得签名加密效率高,而且零知识证明的验证效率高,可以有效提升可验证加密签名的使用体验。
[0304]
需要说明的是,加密设备的实施例与前述方法实施例相互对应,具体的描述及有益效果描述可以参照方法实施例,不再赘述。值得注意的是,装置实施例可以与上述方法配合使用,也可以单独使用。
[0305]
参考图11,图11是本发明实施例提供的一种加密签名处理装置的结构示意图;加密签名处理装置包括获取模块1101和验证模块1102,其中:
[0306]
获取模块1101,用于获取密文和零知识证明,密文为加密方利用可信第三方确定的同态加密公钥对数字签名进行加密处理而得到的,零知识证明为加密方为证明密文所加密的明文为数字签名而根据密文生成的;
[0307]
验证模块1102,用于对零知识证明进行验证,得到零知识证明的验证结果。
[0308]
在一些可能的实施例中,同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0309]
在一些可能的实施例中,同态加密公钥为paillier同态加密公钥时,密文为(r,c),其中,r为数字签名中的r值,c为根据第一随机数u和pk1对数字签名中的s值进行paillier同态加密处理而得到的加密参数,第一随机数u和n的最大公约数为1。
[0310]
在一些可能的实施例中,数字签名为曲线数字签名,零知识证明具体如下式:
[0311][0312]
其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。
[0313]
在一些可能的实施例中,加密签名处理装置还包括:
[0314]
发送模块,用于验证结果为通过验证,且未收到加密方发送的数字签名时,向可信第三方发送解密请求,以请求可信第三方利用同态加密私钥对密文进行解密处理以得到数字签名,解密请求包括密文;
[0315]
接收模块,用于接收可信第三方发送的数字签名。
[0316]
在一些可能的实施例中,解密请求还包括零知识证明,以使可信第三方在对密文进行解密处理之前,先验证零知识证明,在零知识证明通过验证时,再对密文进行解密处
理,以确保利用密文解密得到的是正确的加密方的数字签名,提升加密签名的解密效率。
[0317]
利用本技术实施例的加密签名处理装置,由于密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的,而零知识证明为根据密文生成的,使得零知识证明的验证效率高,可以有效提升可验证加密签名的使用体验。
[0318]
需要说明的是,加密签名处理装置的实施例与前述方法实施例相互对应,具体的描述及有益效果描述可以参照方法实施例,不再赘述。值得注意的是,装置实施例可以与上述方法配合使用,也可以单独使用。
[0319]
参考图12,图12是本发明实施例提供的一种解密设备的结构示意图;该解密设备包括接收模块1201、解密模块1202和发送模块1203,其中:
[0320]
接收模块1201,用于接收来自验证方的解密请求,解密请求包括密文,密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;
[0321]
解密模块1202,用于响应解密请求,利用同态加密私钥对密文进行解密处理,得到数字签名;
[0322]
发送模块1203,用于向验证方发送数字签名。
[0323]
在一些可能的实施例中,同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0324]
在一些可能的实施例中,同态加密公钥为paillier同态加密公钥时,密文为(r,c),其中,r为数字签名中的r值,c为根据第一随机数u和pk1对数字签名中的s值进行paillier同态加密处理而得到的加密参数,第一随机数u和n的最大公约数为1。
[0325]
在一些可能的实施例中,解密请求还包括零知识证明,零知识证明为加密方为证明密文所加密的明文为数字签名而根据密文生成的;解密设备还包括:
[0326]
验证模块,用于在利用同态加密私钥对密文进行解密处理之前,对零知识证明进行验证,得到零知识证明的验证结果;验证结果为通过验证时,解密模块1202利用同态加密私钥对密文进行解密处理。
[0327]
在一些可能的实施例中,数字签名为曲线数字签名,零知识证明具体如下式:
[0328][0329]
其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。
[0330]
在一些可能的实施例中,验证模块,还用于在向验证方发送数字签名之前,对数字签名进行有效性验证处理,得到签名验证结果,签名验证结果用于指示数字签名为有效签名或无效签名;签名验证结果指示数字签名为有效签名时,发送模块1203向验证方发送数字签名。
[0331]
利用本技术实施例的解密设备,接收到验证方的解密请求之后,根据同态加密公钥对解密请求中携带的密文进行解密处理,以得到数字签名,并将数字签名发送给验证方,避免加密方无端不提供数字签名而损害验证方的合法权益,有效保障验证方的权益。
[0332]
需要说明的是,解密设备的实施例与前述方法实施例相互对应,具体的描述及有益效果描述可以参照方法实施例,不再赘述。值得注意的是,装置实施例可以与上述方法配
合使用,也可以单独使用。
[0333]
参考图13,图13是本发明实施例提供的一种第一解密设备的结构示意图,该第一解密设备应用于解密系统,解密系统还包括m个第二解密设备,m为大于零的整数;第一解密设备、每个第二解密设备均持有从同态加密私钥拆分出的一个子私钥,且第一解密设备及每个第二解密设备持有的子私钥各不相同;该第一解密设备包括接收模块1301、解密模块1302和发送模块1303,其中:
[0334]
接收模块1301,用于接收来自验证方的解密请求,解密请求包括密文,密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;
[0335]
解密模块1302,用于响应解密请求,利用解密系统中的至少两个解密设备所持有的子私钥对密文进行解密处理,得到数字签名;
[0336]
发送模块1303,用于向验证方发送数字签名。
[0337]
在一些可能的实施例中,第一解密设备还包括:
[0338]
拆分模块,用于在接收解密请求之前,根据密钥分割算法对同态加密私钥进行拆分得到m+1个子私钥;
[0339]
分配模块,用于将m个子私钥分配给m个第二解密设备,m个子私钥为m+1个子私钥中除了第一解密设备持有的子私钥之外的子私钥。
[0340]
在一些可能的实施例中,同态加密私钥为paillier同态加密私钥,同态加密公钥为paillier同态加密公钥pk1时;第一解密设备还包括:
[0341]
确定模块,用于在接收解密请求之前,确定第一安全素数p'和第二安全素数q';根据第一安全素数p'和第二安全素数q'确定同态加密私钥和同态加密公钥,同态加密私钥为第一差值和第二差值之间的最小公倍数,第一差值为p'和1之间的差值,第二差值为q'和1之间的差值,同态加密公钥pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。
[0342]
在一些可能的实施例中,m个第二解密设备为两个以上第二解密设备,至少两个子私钥为三个以上子私钥时,拆分模块具体用于:
[0343]
根据同态加密私钥和同态加密公钥确定衍生密钥d,衍生密钥d满足下式:(d modλ)=0,且(d mod n)=1,其中,λ为同态加密私钥,n为同态加密私钥中的n值,mod为求余函数;
[0344]
根据秘密共享算法对衍生密钥d进行拆分得到三个以上子私钥。
[0345]
在一些可能的实施例中,m个第二解密设备为一个第二解密设备,至少两个子私钥为两个子私钥时,拆分模块具体用于:
[0346]
根据同态加密私钥和同态加密公钥确定衍生密钥d,衍生密钥d满足下式:(d modλ)=0,且(d mod n)=1,其中,λ为同态加密私钥,n为同态加密私钥中的n值,mod为求余函数;
[0347]
确定第二随机数α,α为小于d的整数;
[0348]
将d和α的差值、α确定为两个子私钥。
[0349]
在一些可能的实施例中,第一解密设备还包括:
[0350]
删除模块,用于在将至少两个子私钥分配给第一解密设备和至少一个第二解密设备之后,删除第一安全素数p'、第二安全素数q'、同态加密私钥和衍生密钥d。
[0351]
在一些可能的实施例中,接收模块1301,还用于在接收解密请求之前,接收第三解密设备发送的子私钥,子私钥是第三解密设备从同态加密私钥拆分出的一个子私钥,第三解密设备为m个第二解密设备中的一个第二解密设备。
[0352]
在一些可能的实施例中,解密请求还包括零知识证明,零知识证明为加密方为证明密文所加密的明文为数字签名而根据密文生成的;第一解密设备还包括:
[0353]
验证模块,用于在对密文进行解密处理之前,对零知识证明进行验证,得到零知识证明的验证结果;验证结果为通过验证时,解密模块1302利用解密系统中的至少两个解密设备所持有的子私钥对密文进行解密处理。
[0354]
在一些可能的实施例中,数字签名为曲线数字签名,零知识证明具体如下式:
[0355][0356]
其中,m为待签名消息,数字签名是对待签名消息进行签名处理而得到的;h(m)为待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成数字签名的公钥,ε为决定零知识证明的零知识性的参数,k为决定零知识证明的完备性的参数,lq是素数q的比特数。
[0357]
在一些可能的实施例中,验证模块,还用于在向验证方发送数字签名之前,对数字签名进行有效性验证处理,得到签名验证结果信息,签名验证结果信息用于指示数字签名为有效签名或无效签名;签名验证结果信息指示数字签名为有效签名时,发送模块1303向验证方发送数字签名。
[0358]
利用本技术实施例的第一解密设备,在响应验证方的解密请求时,利用解密系统中的至少两个解密设备所持有的子私钥对密文进行解密处理得到数字签名后,将该数字签名发送给验证方;避免加密方无端不提供数字签名而损害验证方的合法权益,有效保障验证方的权益。
[0359]
需要说明的是,第一解密设备的实施例与前述方法实施例相互对应,具体的描述及有益效果描述可以参照方法实施例,不再赘述。值得注意的是,装置实施例可以与上述方法配合使用,也可以单独使用。
[0360]
另外,本技术还提供一种电子设备,图14是本技术实施例提供的一种电子设备的结构示意图;图14所示的电子设备1400包括存储器1401、处理器1402、通信接口1404以及总线1403。其中,存储器1401、处理器1402、通信接口1404通过总线1403实现彼此之间的通信连接。
[0361]
存储器1401可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器1401可以存储程序,当存储器1401中存储的程序被处理器1402执行时,处理器1402和通信接口1404用于执行前述实施例中的加密方法的各个步骤,或者,执行前述实施例中的加密签名处理方法的各个步骤,或者,执行前述实施例中的解密方法的各个步骤。
[0362]
处理器1402可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),图形处理器(graphics processing unit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现上述实施例所述的加密设备、加密签名处理装置、解密设备或第一解密设备中的单元所需执行的功能,或者执行前述实施例中的加密方法的各个步骤,或者,执行前述实施例中的
加密签名处理方法的各个步骤,或者,执行前述实施例中的解密方法的各个步骤。
[0363]
处理器1402还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术前述实施例中的加密方法、加密签名处理方法或解密方法的各个步骤可以通过处理器1402中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1402还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例中的加密方法、加密签名处理方法或解密方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1401,处理器1402读取存储器1401中的信息,结合其硬件完成上述实施例所述的加密设备、加密签名处理装置、解密设备或第一解密设备中包括的单元所需执行的功能,或者执行本技术前述实施例中的加密方法、加密签名处理方法或解密方法。
[0364]
通信接口1404使用例如但不限于收发器一类的收发装置,来实现电子设备1400与其他设备或通信网络之间的通信。例如,可以通过通信接口1404获取待签名的数据。
[0365]
总线1403可包括在电子设备1400各个部件(例如,存储器1401、处理器1402、通信接口1404)之间传送信息的通路。
[0366]
应注意,尽管图14所示的电子设备1400仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,电子设备1400还包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,电子设备1400还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,电子设备1400也可仅仅包括实现本技术实施例所必须的器件,而不必包括图14中所示的全部器件。
[0367]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0368]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0369]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0370]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0371]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以
存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以计算机程序产品的形式体现出来,该计算机程序产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0372]
本发明实施例还提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行前述实施例中的加密方法、加密签名处理方法或解密方法。
[0373]
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行前述实施例中的加密方法、加密签名处理方法或解密方法。
[0374]
本技术实施例还提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行前述实施例中的加密方法、加密签名处理方法或解密方法。
[0375]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0376]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种加密方法,其特征在于,所述方法包括以下步骤:利用可信第三方确定的同态加密公钥对数字签名进行加密处理得到密文;根据所述密文生成零知识证明,所述零知识证明用于证明所述密文所加密的明文为所述数字签名;提供所述密文和所述零知识证明给验证方。2.根据权利要求1所述的方法,其特征在于,所述同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。3.根据权利要求2所述的方法,其特征在于,所述同态加密公钥为paillier同态加密公钥时,所述利用可信第三方确定的同态加密公钥对数字签名进行加密处理得到密文,具体包括以下步骤:根据所述n确定第一随机数u,所述第一随机数u和所述n的最大公约数为1;根据所述第一随机数u和所述pk1对所述数字签名中的s值进行paillier同态加密处理,得到加密参数c;根据所述加密参数c和所述数字签名中的r值确定所述密文,所述密文为(r,c)。4.根据权利要求3所述的方法,其特征在于,所述数字签名为曲线数字签名,所述零知识证明具体如下式:其中,所述m为待签名消息,所述数字签名是对所述待签名消息进行签名处理而得到的;所述h(m)为所述待签名消息的哈希值,所述p为g的一个生成元,所述g为阶为素数q的椭圆曲线群,所述r
x
为r的横坐标,所述y为用于生成所述数字签名的公钥,所述ε为决定所述零知识证明的零知识性的参数,所述k为决定所述零知识证明的完备性的参数,所述lq是所述素数q的比特数。5.一种加密签名处理方法,其特征在于,所述方法包括以下步骤:获取密文和零知识证明,所述密文为加密方利用可信第三方确定的同态加密公钥对数字签名进行加密处理而得到的,所述零知识证明为所述加密方为证明所述密文所加密的明文为所述数字签名而根据所述密文生成的;对所述零知识证明进行验证,得到所述零知识证明的验证结果。6.根据权利要求5所述的方法,其特征在于,所述同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。7.根据权利要求6所述的方法,其特征在于,所述同态加密公钥为paillier同态加密公钥时,所述密文为(r,c),其中,所述r为所述数字签名中的r值,所述c为根据第一随机数u和所述pk1对所述数字签名中的s值进行paillier同态加密处理而得到的加密参数,所述第一随机数u和所述n的最大公约数为1。8.根据权利要求7所述的方法,其特征在于,所述数字签名为曲线数字签名,所述零知识证明具体如下式:其中,所述m为待签名消息,所述数字签名是对所述待签名消息进行签名处理而得到的;所述h(m)为所述待签名消息的哈希值,所述p为g的一个生成元,所述g为阶为素数q的椭
圆曲线群,所述r
x
为r的横坐标,所述y为用于生成所述数字签名的公钥,所述ε为决定所述零知识证明的零知识性的参数,所述k为决定所述零知识证明的完备性的参数,所述lq是所述素数q的比特数。9.根据权利要求5至8任一项所述的方法,其特征在于,所述方法还包括以下步骤:所述验证结果为通过验证,且未收到所述加密方发送的所述数字签名时,向所述可信第三方发送解密请求,以请求所述可信第三方利用同态加密私钥对所述密文进行解密处理以得到所述数字签名,所述解密请求包括所述密文;接收所述可信第三方发送的所述数字签名。10.根据权利要求9所述的方法,其特征在于,所述解密请求还包括所述零知识证明。11.一种解密方法,其特征在于,所述方法包括以下步骤:接收来自验证方的解密请求,所述解密请求包括密文,所述密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;响应所述解密请求,利用同态加密私钥对所述密文进行解密处理,得到所述数字签名;向所述验证方发送所述数字签名。12.根据权利要求11所述的方法,其特征在于,所述同态加密公钥为paillier同态加密公钥pk1,pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。13.根据权利要求12所述的方法,其特征在于,所述同态加密公钥为paillier同态加密公钥时,所述密文为(r,c),其中,r为所述数字签名中的r值,c为根据第一随机数u和pk1对所述数字签名中的s值进行paillier同态加密处理而得到的加密参数,所述第一随机数u和n的最大公约数为1。14.根据权利要求11至13任一项所述的方法,其特征在于,所述解密请求还包括零知识证明,所述零知识证明为所述加密方为证明所述密文所加密的明文为所述数字签名而根据所述密文生成的;在利用所述同态加密私钥对所述密文进行解密处理之前,所述方法还包括以下步骤:对所述零知识证明进行验证,得到所述零知识证明的验证结果;所述验证结果为通过验证时,利用所述同态加密私钥对所述密文进行解密处理。15.根据权利要求14所述的方法,其特征在于,所述数字签名为曲线数字签名,所述零知识证明具体如下式:其中,m为待签名消息,所述数字签名是对所述待签名消息进行签名处理而得到的;h(m)为所述待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成所述数字签名的公钥,ε为决定所述零知识证明的零知识性的参数,k为决定所述零知识证明的完备性的参数,lq是所述素数q的比特数。16.根据权利要求11至13任一项所述的方法,其特征在于,在向所述验证方发送所述数字签名之前,所述方法还包括以下步骤:对所述数字签名进行有效性验证处理,得到签名验证结果,所述签名验证结果用于指示所述数字签名为有效签名或无效签名;所述签名验证结果指示所述数字签名为有效签名时,向所述验证方发送所述数字签名。
17.一种解密方法,其特征在于,应用于第一解密设备,所述第一解密设备应用于解密系统,所述解密系统还包括m个第二解密设备,m为大于零的整数;所述第一解密设备、每个所述第二解密设备均持有从同态加密私钥拆分出的一个子私钥,且所述第一解密设备及每个所述第二解密设备持有的子私钥各不相同;所述方法包括以下步骤:接收来自验证方的解密请求,所述解密请求包括密文,所述密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;响应所述解密请求,利用所述解密系统中的至少两个解密设备所持有的子私钥对所述密文进行解密处理,得到所述数字签名;向所述验证方发送所述数字签名。18.根据权利要求17所述的方法,其特征在于,在接收所述解密请求之前,所述方法还包括以下步骤:根据密钥分割算法对所述同态加密私钥进行拆分得到m+1个子私钥;将m个子私钥分配给所述m个第二解密设备,所述m个子私钥为所述m+1个子私钥中除了所述第一解密设备持有的子私钥之外的子私钥。19.根据权利要求18所述的方法,其特征在于,所述同态加密私钥为paillier同态加密私钥,所述同态加密公钥为paillier同态加密公钥pk1时;在接收所述解密请求之前,所述方法还包括以下步骤:确定第一安全素数p'和第二安全素数q';根据所述第一安全素数p'和所述第二安全素数q'确定所述同态加密私钥和所述同态加密公钥,所述同态加密私钥为第一差值和第二差值之间的最小公倍数,所述第一差值为p'和1之间的差值,所述第二差值为q'和1之间的差值,所述同态加密公钥pk1为(n,g),其中,n为第一安全素数p'和第二安全素数q'的乘积,g为n+1。20.根据权利要求19所述的方法,其特征在于,所述m个第二解密设备为两个以上第二解密设备,所述至少两个子私钥为三个以上子私钥时,所述根据密钥分割算法对所述同态加密私钥进行拆分得到至少两个子私钥,包括以下步骤:根据所述同态加密私钥和所述同态加密公钥确定衍生密钥d,所述衍生密钥d满足下式:(d modλ)=0,且(d mod n)=1,其中,λ为所述同态加密私钥,n为所述同态加密私钥中的n值,mod为求余函数;根据秘密共享算法对所述衍生密钥d进行拆分得到所述三个以上子私钥。21.根据权利要求19所述的方法,其特征在于,所述m个第二解密设备为一个第二解密设备,所述至少两个子私钥为两个子私钥时,所述根据密钥分割算法对所述同态加密私钥进行拆分得到至少两个子私钥,包括以下步骤:根据所述同态加密私钥和所述同态加密公钥确定衍生密钥d,所述衍生密钥d满足下式:(d modλ)=0,且(d mod n)=1,其中,λ为所述同态加密私钥,n为所述同态加密私钥中的n值,mod为求余函数;确定第二随机数α,α为小于d的整数;将d和α的差值、α确定为所述两个子私钥。22.根据权利要求20或21所述的方法,其特征在于,在将所述至少两个子私钥分配给所述第一解密设备和所述至少一个第二解密设备之后,所述方法还包括:
删除所述第一安全素数p'、所述第二安全素数q'、所述同态加密私钥和所述衍生密钥d。23.根据权利要求17所述的方法,其特征在于,在接收所述解密请求之前,所述方法还包括以下步骤:接收第三解密设备发送的子私钥,所述子私钥是所述第三解密设备从所述同态加密私钥拆分出的一个子私钥,所述第三解密设备为所述m个第二解密设备中的一个第二解密设备。24.根据权利要求23所述的方法,其特征在于,所述第三解密设备从所述同态加密私钥拆分出的一个子私钥,具体为m+1个子私钥中除了所述第三解密设备持有的子私钥之外的任意一个子私钥,所述m+1个子私钥为所述第三解密设备根据密钥分割算法对所述同态加密私钥进行拆分而得到的。25.根据权利要求17至24任一项所述的方法,其特征在于,所述解密请求还包括零知识证明,所述零知识证明为所述加密方为证明所述密文所加密的明文为所述数字签名而根据所述密文生成的;在对所述密文进行解密处理之前,所述方法还包括以下步骤:对所述零知识证明进行验证,得到所述零知识证明的验证结果;所述验证结果为通过验证时,利用所述解密系统中的至少两个解密设备所持有的子私钥对所述密文进行解密处理。26.根据权利要求25所述的方法,其特征在于,所述数字签名为曲线数字签名,所述零知识证明具体如下式:其中,m为待签名消息,所述数字签名是对所述待签名消息进行签名处理而得到的;h(m)为所述待签名消息的哈希值,p为g的一个生成元,g为阶为素数q的椭圆曲线群,r
x
为r的横坐标,y为用于生成所述数字签名的公钥,ε为决定所述零知识证明的零知识性的参数,k为决定所述零知识证明的完备性的参数,lq是所述素数q的比特数。27.根据权利要求17至24任一项所述的方法,其特征在于,在向所述验证方发送所述数字签名之前,所述方法还包括以下步骤:对所述数字签名进行有效性验证处理,得到签名验证结果信息,所述签名验证结果信息用于指示所述数字签名为有效签名或无效签名;所述签名验证结果信息指示所述数字签名为有效签名时,向所述验证方发送所述数字签名。28.一种加密设备,其特征在于,所述设备包括:处理模块,用于利用可信第三方确定的同态加密公钥对数字签名进行加密处理得到密文;生成模块,用于根据所述密文生成零知识证明,所述零知识证明用于证明所述密文所加密的明文为所述数字签名;提供模块,用于提供所述密文和所述零知识证明给验证方。29.一种加密签名处理装置,其特征在于,所述装置包括:获取模块,用于获取密文和零知识证明,所述密文为加密方利用可信第三方确定的同
态加密公钥对数字签名进行加密处理而得到的,所述零知识证明为所述加密方为证明所述密文所加密的明文为所述数字签名而根据所述密文生成的;验证模块,用于对所述零知识证明进行验证,得到所述零知识证明的验证结果。30.一种解密设备,其特征在于,所述设备包括:接收模块,用于接收来自验证方的解密请求,所述解密请求包括密文,所述密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;解密模块,用于响应所述解密请求,利用同态加密私钥对所述密文进行解密处理,得到所述数字签名;发送模块,用于向所述验证方发送所述数字签名。31.一种第一解密设备,其特征在于,所述第一解密设备应用于解密系统,所述解密系统还包括m个第二解密设备,m为大于零的整数;所述第一解密设备、每个所述第二解密设备均持有从同态加密私钥拆分出的一个子私钥,且所述第一解密设备及每个所述第二解密设备持有的子私钥各不相同;所述第一解密设备包括:接收模块,用于接收来自验证方的解密请求,所述解密请求包括密文,所述密文为加密方利用同态加密公钥对数字签名进行加密处理而得到的;解密模块,用于响应所述解密请求,利用所述解密系统中的至少两个解密设备所持有的子私钥对所述密文进行解密处理,得到所述数字签名;发送模块,用于向所述验证方发送所述数字签名。32.一种电子设备,其特征在于,包括处理器和存储器,其中,处理器和存储器相连,其中,存储器用于存储程序代码,处理器用于调用程序代码,以执行如权利要求1至4任一项所述的加密方法,或者,执行如权利要求5至10任一项所述的加密签名处理方法,或者,执行如权利要求11至16任一项所述的解密方法,或者,执行如权利要求17至27任一项所述的解密方法。33.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1至4任一项所述的加密方法,或者,实现如权利要求5至10任一项所述的加密签名处理方法,或者,实现如权利要求11至16任一项所述的解密方法,或者,实现如权利要求17至27任一项所述的解密方法。34.一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行如权利要求1至4任一项所述的加密方法,或者,执行如权利要求5至10任一项所述的加密签名处理方法,或者,执行如权利要求11至16任一项所述的解密方法,或者,执行如权利要求17至27任一项所述的解密方法。
技术总结
本申请实施例提供一种加密、加密签名处理、解密方法及相关设备,应用于签名领域。加密方法中,加密方利用同态加密公钥对数字签名进行加密得到密文,再根据密文生成零知识证明,零知识证明用于证明密文所加密的明文为数字签名;并将密文和零知识证明提供给验证方,以使验证方可以通过验证零知识证明进而验证密文,实现可验证加密签名;其中,由于对数字签名进行同态加密处理,使得签名加密效率高,而且零知识证明的验证效率高,可以有效提升可验证加密签名的使用体验。加密签名的使用体验。加密签名的使用体验。
技术研发人员:杨艳江 王贵林 鲍丰
受保护的技术使用者:华为技术有限公司
技术研发日:2021.12.29
技术公布日:2023/7/13

版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/