CN114337994A - 数据处理方法、装置及系统 - Google Patents

数据处理方法、装置及系统 Download PDF

Info

Publication number
CN114337994A
CN114337994A CN202011063484.6A CN202011063484A CN114337994A CN 114337994 A CN114337994 A CN 114337994A CN 202011063484 A CN202011063484 A CN 202011063484A CN 114337994 A CN114337994 A CN 114337994A
Authority
CN
China
Prior art keywords
participant
parameter
electronic device
parameters
devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011063484.6A
Other languages
English (en)
Other versions
CN114337994B (zh
Inventor
周李京
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011063484.6A priority Critical patent/CN114337994B/zh
Publication of CN114337994A publication Critical patent/CN114337994A/zh
Application granted granted Critical
Publication of CN114337994B publication Critical patent/CN114337994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本申请提供一种数据处理方法、装置及系统,在门限加密、门限解密以及门限签名的数据处理过程中,参与方设备对所使用的密钥以及中间数据进行验证后,才继续对密钥进行后续处理。其中,在目标参与方设备确定第一电子设备的公钥时还对公钥进行验证、对第一电子设备的数据进行门限签名时对签名参数进行验证,以及对第一电子设备接收到的数据进行解密时对解密参数进行验证等,从而能够保证电子设备使用的密钥本身、以及用于计算密钥的相关参数的准确性,进而减少使用错误密钥处理数据导致的出错,提高了对数据进行处理时处理效率。

Description

数据处理方法、装置及系统
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法、装置及系统。
背景技术
随着电子技术以及互联网通信技术的不断发展,人们使用电子设备传输的数据越来越多,一些重要的数据在传输的过程中存在数据泄露和篡改的安全风险,同时一些电子设备本身也容易被远程控制和非法操控,因此,保证在电子设备之间传输的数据的安全称为了行业内重要的发展和研究方向。
在现有的门限加密的技术中,电子设备的公钥和私钥被多个参与方分担,多个参与方各自持有电子设备的私钥分片,并且能够在不恢复私钥本身且不暴露每个参与方持有的私钥分片的情况下,由多个参与方共同完成对电子设备的数据进行加密或解密;在现有的门限签名的技术中,电子设备的公钥和私钥被多个参与方分担,多个参与方各自持有电子设备的私钥分片,并且能够在不恢复私钥本身且不暴露每个参与方持有的私钥分片的情况下,由多个参与方共同完成对电子设备的数据进行签名或验证。
但是,现有技术在得到密钥以及使用密钥进行门限签名、门限加密以及门限解密时,无法保证由多个参与方设备共同提供的密钥的准确,一旦所使用的密钥本身错误,也就无法根据错误的密钥进一步对数据进行加密、解密以及签名,从而降低了电子设备对数据进行处理时的成功率,进而降低了电子设备对数据进行处理效率。
发明内容
本申请提供一种数据处理方法、装置及系统,以解决现有的技术中存在的对密钥本身以及密钥计算相关的中间数据缺乏验证的问题,其中,在门限加密、门限解密以及门限签名的相关数据处理过程中,参与相关计算的电子设备对所使用的密钥以及中间数据进行验证后,才继续对密钥进行后续处理,从而保证了电子设备使用密钥对数据进行处理时处理效率。
本申请第一方面提供一种数据处理方法,应用于由n个参与方设备共同计算生成一个第一电子设备的公钥的场景中,多个参与方设备共同计算第一电子设备的公钥时,多个参与方设备中的目标参与方设备得到第一电子设备的公钥后并不立即输出,而是验证所生成的第一电子设备的公钥是否准确,并在验证通过的情况下才输出供后续计算,否则不会将得到的公钥输出。因此,在本实施例中,目标参与方设备在得到第一电子设备的公钥后还对公钥进行验证,并在验证通过后才输出,防止当多个参与方设备共同计算第一电子设备的公钥时,有参与方设备因被攻击、盗用等原因提供错误数据后计算错误的公钥,从而保证了所计算得到的公钥的准确,进而保证了第一电子设备使用其公钥对数据进行处理时的准确,使得其他设备也能够得到正确的公钥,提高了第一电子设备对数据进行处理的效率。
在本申请第一方面一实施例中,目标参与方设备具体通过利用n个参与方设备中任意t个参与方设备的ID计算得到待验证公钥后,判断所计算的所有待验证的公钥是否相同,并在相同时,才输出所得到的公钥。因此,能够在任一个参与方设备提供的中间数据错误的情况下发现出错,如果验证通过,说明参与计算第一电子设备的公钥的多个参与方设备所提供的私钥分片是正确的,使得能够保证后续计算得到的公钥也是正确的。
在本申请第一方面一实施例中,目标参与方设备具体通过如下方式确定公钥计算参数,即第一承诺信息,目标参与方设备,并将所确定的私钥分片发送至其他n-1个参与方设备;接收其他n-1个参与方设备发送的私钥分片;随后,目标参与方设备将所接收到的n-1个私钥分片以及自身所确定的1个私钥分片相加得到联合分片;随后,目标参与方设备根据联合分片和椭圆曲线的基点,确定第一承诺信息,并将所确定的第一承诺信息发送至其他n-1个参与方设备;最终,目标参与方设备接收其他n-1个参与方设备发送的第一承诺信息,其他n-1个参与方设备计算第一承诺信息的方式与目标参与方设备相同。
在本申请第一方面一实施例中,应用于由n个参与方设备中的t个参与方设备共同对第一电子设备向第二电子设备发送的数据进行签名的场景中,并在多个参与方设备共同计算第一电子设备的签名信息时,多个参与方设备中的目标参与方设备得到第一电子设备的签名信息的计算信息后并不立即计算签名信息,而是验证所得到的计算信息是否准确,并在验证通过的情况下才继续计算签名信息,否则不会计算签名信息。因此,在本实施例中,目标参与方设备在得到第一电子设备的签名信息的计算信息后还对计算信息进行验证,并在验证通过后才计算得到第一电子设备的签名信息,防止当多个参与方设备共同计算第一电子设备的签名信息时,有参与方设备因被攻击、盗用等原因提供错误数据后导致签名信息错误,从而在保证了所计算得到的第一电子设备的签名信息的准确的基础上,进而保证了多个参与方设备使用对第一电子设备的数据进行数字签名的准确,使得其他接收到数据的设备能够成功对第一电子设备的签名信息进行验证,提高了第一电子设备对数据进行处理的效率。
在本申请第一方面一实施例中,目标参与方设备具体通过如下步骤确定签名参数Tao和Beta。其中,目标参与方设备计算参数M、参数N、参数L、参数R和参数sign_ski;其中,t≤n,参数M为t个参与方设备提供的参数Mi之和,Mi由t个参与方设备中的第i个参与方设备通过公式Mi=roi*G计算得到,G为椭圆曲线的基点,roi为随机数;参数R为t个参与方设备提供的参数Ri之和,Ri由t个参与方设备中的第i个参与方设备通过公式Ri=ki*G计算得到;参数N为t个参与方设备提供的参数Ni之和,Ni由t个参与方设备中的第i个参与方设备通过公式Ni=roi*PK计算得到,PK为第一电子设备的公钥;参数L为t个参与方设备提供的参数Li之和,Li=roi*R;参数sign_ski通过公式sign_ski=lambdai*p(IDi)计算得到,其中,lambdai由t个参与方设备的ID得到;目标参与方设备以参数roi和参数1/t+sign_ski(mod q)作为第一次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数wi后,将计算得到的wi发送给t个参与方设备中的其他t-1个参与方设备;目标参与方设备以参数roi和ki–r*sign_ski(mod q)作为第二次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数vi后,将计算得到的vi发送给t个参与方设备中的其他t-1个参与方设备;r为第一电子设备的签名sigma=[r,s]的第一部分;目标参与方设备接收t个参与方设备中其他t-1个参与方设备发送的参数wi,并将所接收到的t-1个参数wi以及自身所确定的1个参数wi计算得到签名参数Beta;目标参与方设备接收t个参与方设备中其他t-1个参与方设备发送的参数vi,并将所接收到的t-1个参数vi以及自身所确定的1个参数vi计算得到签名参数Tao。
在本申请第一方面一实施例中,目标参与方设备验证公式Beta*G=M+N和公式Tao*G=L–r*N是否成立;其中,若公式均成立,则验证通过。
则在本实施例中所设计的两次多方乘法协议中,所使用的参数不同,使得这两次多方乘法协议相互独立且互不干扰,因此,在本实施例具体的执行过程中,t个参与方设备可以通过并行的方式,同时执行两次多方乘法协议,从而与现有技术中存在的两次多方乘法协议之间参数相同、参数交互的方式相比,还能够提高计算效率,节省计算所需的时间,还能够相当于进一步提高电子设备对数据进行处理的效率。
在本申请第一方面一实施例中,目标参与方设备具体通过如下步骤计算能得到第一电子设备的签名信息:目标参与方设备通过公式r=e+x1(mod q)计算第一电子设备的签名sigma=[r,s]的第一部分r,其中,e=Hash(message||Z),message为消息,Z为公开字符串;目标参与方设备通过公式s=Tao/Beta计算第一电子设备的签名sigma=[r,s]的第二部分s;目标参与方设备根据第一部分r和第二部分s得到第一电子设备的签名sigma=[r,s]。
在本申请第一方面一实施例中,应用于由n个参与方设备中的t个参与方设备共同对第三电子设备发送给第一电子设备的数据进行解密的方法,则对于多个参与方设备共同对第一电子设备接收的数据进行解密时,多个参与方设备中的目标参与方设备得到第一电子设备的解密参数后并不立即对数据进行解密,而是验证所得到的解密参数是否准确,并在验证通过的情况下才继续对数据进行解密,否则不会对数据进行解密。因此,在本实施例中,目标参与方设备在得到第一电子设备的解密参数后还对解密参数进行验证,防止当多个参与方设备共同对第一电子设备接收的数据进行解密时,有参与方设备因被攻击、盗用等原因提供错误数据后导致解密参数错误,从而在保证了所计算得到的第一电子设备的解密参数的准确的基础上,进而保证了多个参与方电子设备对第一电子设备的数据进行解密的准确,提高了第一电子设备对数据进行处理的效率。
在本申请第一方面一实施例中,目标参与方设备具体通过如下方法确定解密参数:目标参与方设备计算参数Ri、参数Qi和参数proofi;其中,参数Ri=decrypt_ski*C1,decrypt_ski=lambdai*p(IDi),IDi用于表示t个参与方设备中的第i个参与方设备的ID,拉格朗日系数lambdai由t个参与方设备的ID得到;参数Qi=decrypt_sk_i*G,G为椭圆曲线的基点;参数proof_i为参与方设备Pi计算G,Qi,C1,Ri的DH Tuple零知识证明;C1为第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第一部分;目标参与方设备将参数Ri、参数Qi和参数proofi发送给其他t-1个参与方设备;目标参与方设备接收其他t-1个参与方设备发送的参数Ri、参数Qi和参数proofi,结合目标参与方的参数Ri、参数Qi和参数proofi,得到t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt作为多个解密参数。
在本申请第一方面一实施例中,目标参与方设备具体通过如下方法对解密参数进行验证:所述目标参与方设备对所有t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt的正确性进行验证,对所有t个参与方设备的解密参数proof1,proof2,…,prooft的DHTuple零知识证明有效性进行验证,以及验证公式PK=Q1+Q2+…+Qt是否成立;其中,当正确性、有效性以及公式均成立时,则验证通过。
在本申请第一方面一实施例中,目标参与方设备具体通过如下方法对数据进行解密:目标参与方设备通过公式R=R1+R2+…+Rt=(x1,y1)计算参数x1和y1,并通过公式e=KDF(x1||y1||parameters)计算参数e,其中parameters为公开参数,KDF是密钥生成函数;目标参与方设备通过公式M’=C2 XOR e计算待验证明文数据M’;其中,C2为第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第二部分;目标参与方设备根据公式C3’=Hash(x1||M||y1)计算参数C3’,并判断C3’是否与C3相等,其中,C3为第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第三部分;目标参与方设备在C3’=C3时,确定输出明文数据M’。
本申请第二方面提供一种数据处理装置,可用于作为目标参与方设备,并执行如本申请第一方面提供的数据处理方法,该数据传输装置可应用于数据处理系统,所述数据处理系统包括:第一电子设备和n个参与方设备,n为大于1的整数,所述数据处理装置为所述n个参与方设备中的目标参与方设备,所述数据处理装置包括:确定模块,用于接收其他n-1个参与方设备发送的公钥计算参数;其中,所述公钥计算参数用于计算所述第一电子设备的公钥,根据所接收到的n-1个公钥计算参数以及自身的1个公钥计算参数,计算得到所述第一电子设备的公钥;验证模块,用于对所述第一电子设备的公钥进行验证;处理模块,用于若所述验证模块验证通过,输出所述第一电子设备的公钥。
在本申请第二方面一实施例中,所述公钥计算参数包括:第一承诺信息;所述确定模块具体用于,从所接收到的n-1个第一承诺信息以及自身的1个第一承诺信息中的随机选择t个第一承诺信息,计算得到所述第一电子设备的待验证公钥,并重复多次得到多个待验证公钥;所述验证模块具体用于,验证所述多个待验证公钥是否相同;其中,当所述多个待验证公钥都相同时,验证通过,并由所述确定模块确定所述第一电子设备的公钥为所述多个待验证公钥中的任一个。
在本申请第二方面一实施例中,所述确定模块具体用于,确定私钥分片,并将所确定的私钥分片发送至所述其他n-1个参与方设备;接收所述其他n-1个参与方设备发送的私钥分片;将所接收到的n-1个私钥分片以及自身所确定的1个私钥分片相加得到联合分片;根据联合分片和椭圆曲线的基点,确定第一承诺信息,并将所确定的第一承诺信息发送至所述其他n-1个参与方设备;接收所述其他n-1个参与方设备发送的第一承诺信息,所述其他n-1个参与方设备计算第一承诺信息的方式与所述目标参与方设备相同。
在本申请第二方面一实施例中,所述确定模块还用于,确定至少两个签名参数;其中,所述至少两个签名参数用于得到所述第一电子设备的签名信息;所述验证模块还用于,对所述至少两个签名参数进行验证;所述处理模块还用于,若所述验证模块验证通过,根据所述至少两个签名参数,计算得到所述第一电子设备的签名信息。
在本申请第二方面一实施例中,所述确定模块具体用于,计算参数M、参数N、参数L、参数R和参数sign_ski;其中,t≤n,参数M为t个参与方设备提供的参数Mi之和,Mi由t个参与方设备中的第i个参与方设备通过公式Mi=roi*G计算得到,G为椭圆曲线的基点,roi为随机数;参数R为t个参与方设备提供的参数Ri之和,Ri由t个参与方设备中的第i个参与方设备通过公式Ri=ki*G计算得到;参数N为t个参与方设备提供的参数Ni之和,Ni由t个参与方设备中的第i个参与方设备通过公式Ni=roi*PK计算得到,PK为所述第一电子设备的公钥;参数L为t个参与方设备提供的参数Li之和,Li=roi*R;参数sign_ski通过公式sign_ski=lambdai*p(IDi)计算得到,其中,lambdai由t个参与方设备的ID得到;以参数roi和参数1/t+sign_ski(mod q)作为第一次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数wi后,将计算得到的wi发送给t个参与方设备中的其他t-1个参与方设备;以参数roi和ki–r*sign_ski(mod q)作为第二次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数vi后,将计算得到的vi发送给t个参与方设备中的其他t-1个参与方设备;所述r为所述第一电子设备的签名sigma=[r,s]的第一部分;接收所述t个参与方设备中其他t-1个参与方设备发送的参数wi,并将所接收到的t-1个参数wi以及自身所确定的1个参数wi计算得到签名参数Beta;接收所述t个参与方设备中其他t-1个参与方设备发送的参数vi,并将所接收到的t-1个参数vi以及自身所确定的1个参数vi计算得到签名参数Tao。
在本申请第二方面一实施例中,所述验证模块具体用于,验证公式Beta*G=M+N和公式Tao*G=L–r*N是否成立;其中,若公式均成立,则验证通过。
在本申请第二方面一实施例中,所述处理模块具体用于,通过公式r=e+x1(modq)计算所述第一电子设备的签名sigma=[r,s]的第一部分r,其中,e=Hash(message||Z),message为消息,Z为公开字符串;通过公式s=Tao/Beta计算所述第一电子设备的签名sigma=[r,s]的第二部分s;根据所述第一部分r和所述第二部分s得到所述第一电子设备的签名sigma=[r,s]。
在本申请第二方面一实施例中,所述确定模块还用于,确定多个解密参数;其中,所述解密参数用于对所述第一电子设备接收到的数据进行解密;所述验证模块还用于,对所述多个解密参数进行验证;所述处理模块还用于,根据所述多个解密参数,对所述第一电子设备接收到的数据进行解密。
在本申请第二方面一实施例中,所述确定模块具体用于,计算参数Ri、参数Qi和参数proofi;其中,参数Ri=decrypt_ski*C1,decrypt_ski=lambdai*p(IDi),IDi用于表示t个参与方设备中的第i个参与方设备的ID,拉格朗日系数lambdai由t个参与方设备的ID得到;参数Qi=decrypt_sk_i*G,G为椭圆曲线的基点;参数proof_i为参与方设备Pi计算G,Qi,C1,Ri的DH Tuple零知识证明;C1为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第一部分;将参数Ri、参数Qi和参数proofi发送给其他t-1个参与方设备;接收其他t-1个参与方设备发送的参数Ri、参数Qi和参数proofi,结合所述目标参与方的参数Ri、参数Qi和参数proofi,得到t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt作为所述多个解密参数。
在本申请第二方面一实施例中,所述验证模块具体用于,对所有t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt的正确性进行验证,对所有t个参与方设备的解密参数proof1,proof2,…,prooft的DHTuple零知识证明有效性进行验证,以及验证公式PK=Q1+Q2+…+Qt是否成立;其中,当正确性、有效性以及公式均成立时,则验证通过。
在本申请第二方面一实施例中,所述处理模块具体用于,通过公式R=R1+R2+…+Rt=(x1,y1)计算参数x1和y1,并通过公式e=KDF(x1||y1||parameters)计算参数e,其中parameters为公开参数,KDF是密钥生成函数;通过公式M’=C2 XOR e计算待验证明文数据M’;其中,C2为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第二部分;根据公式C3’=Hash(x1||M||y1)计算参数C3’,并判断C3’是否与C3相等,其中,C3为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第三部分;确定C3’=C3时,确定输出明文数据M’。
本申请第三方面提供一种数据处理系统,包括:第一电子设备和n个参与方设备,n为大于1的整数,所述n个参与方设备中包括目标参与方设备,所述目标参与方设备可以通过如本申请第二方面任一项提供的数据传输设备时间。
本申请第四方面提供一种电子设备,包括:处理器和通信接口。
所述通信接口用于实现所述通信装置与外设的连接通信。
所述处理器用于实现上述第一方面、第二方面或者第三方面任一项所述的方法。
作为一种可能的设计,上述通信装置还包括:存储器。
所述存储器用于存储计算机程序,所述处理器执行所述存储器中存储的计算机程序,以使得所述装置执行上述第一方面、第二方面或者第三方面任一项所述的方法。
本申请第五方面提供一种芯片,包括:处理器和通信接口;
所述通信接口用于实现与其他设备通信;
所述处理器用于读取指令以实现如上述第一方面、第二方面或者第三方面任一项所述的方法。
本申请第六方面提供一种计算机程序产品,所述计算机程序产品包括计算机程序代码,当所述计算机程序代码被计算机执行时,使得所述计算机执行如上述第一方面、第二方面或者第三方面任一项所述的方法。
附图说明
图1为本申请应用场景一的示意图;
图2为本申请应用场景二的示意图;
图3为本申请提供的数据处理方法一实施例的流程示意图;
图4为本申请提供的数据处理方法一实施例的流程示意图;
图5为本申请提供的数据处理方法一实施例的流程示意图;
图6为本申请提供的数据处理方法一实施例的流程示意图;
图7为本申请提供的数据传输装置一实施例的结构示意图;
图8为本申请提供的电子设备一实施例的结构示意图。
具体实施方式
在正式介绍本申请实施例之前,先结合附图,对比本申请所应用的场景以及现有技术中存在的问题进行介绍。
图1为本申请应用场景一的示意图,如图1示出了在电子设备之间传输数据时,对数据进行加密和解密的过程,其中,随着电子技术以及互联网通信技术的不断发展,人们使用电子设备传输的数据越来越多,一些重要的数据在传输的过程中存在数据泄露和篡改的安全风险,同时一些电子设备本身也容易被远程控制和非法操控,因此,保证在电子设备之间传输的数据的安全称为了行业内重要的发展和研究方向。本申请各实施例中所述电子设备可以是手机、平板电脑、笔记本电脑、台式电脑、工作站、IoT设备或者服务器等具有相关数据处理能力并实现相关功能的设备,在图1所示的示例中以电子设备为电脑作为示例而非对其进行限定,如图1所示的场景具体可以是应用于设备协同认证、联合支付、匿名投票、设备协同解密和敏感数据备份与恢复等场景。
在一些技术中,当如图1所示的电子设备1要将数据A发送给电子设备2时,首先使用电子设备2的公钥对数据A进行加密,得到密文B,再将密文B发送给电子设备2,电子设备2通过其私钥可以对密文B进行解密得到数据A,最终完成了数据A从电子设备1向电子设备2的传输。在这个过程中,公钥是电子设备2所公开的,可用于其他设备对数据进行加密,并且通过电子设备2的公钥加密的数据只能够通过电子设备2未公开的私钥进行解密,使得密文B在从电子设备1传输到电子设备2的过程中,即使发生泄漏或者被恶意盗取,他人也无法解密密文B得到未加密的数据A,从而保证了数据A在传输过程中的数据安全。
在上述技术中,虽然只有电子设备2拥有其私钥,使得其他设备无法对通过电子设备2的公钥加密的数据进行加密,但是电子设备2的私钥本身还是存在一定的安全隐患,一旦电子设备2被远程控制或者非法操控,电子设备2的私钥还是存在被盗用的风险,进而也就无法进一步确保发送给电子设备2的数据的安全。
因此,在另一些技术中提出了“门限加密”的概念,其最大的特点可以理解为“密钥的可用但不可见”,例如,在如图1所示的数据加密的场景中,电子设备2所使用的私钥是通过多个电子设备21(记为多个参与方)所共同生成的,使得电子设备2的公钥和私钥被多个参与方分担,多个参与方各自持有电子设备2的私钥分片,并且能够在不恢复私钥本身且不暴露每个参与方持有的私钥分片的情况下,完成加密或解密。例如,如图1所示的多个电子设备21可以共同计算得到电子设备2的公钥和私钥,并且当电子设备1向电子设备2发送数据A时,可以先使用多个电子设备21共同提供的电子设备2的公钥对数据A进行加密得到数据B,并将数据B发送给电子设备2,则电子设备2接收到数据B后,通过多个电子设备21所提供的电子设备2的私钥对数据B进行解密得到数据A。在这个过程中,即使数据B发生泄漏或者被恶意盗取,盗用者在无法获得多个电子设备21所拥有的全部私钥分片的情况下,仍然无法对数据B进行解密,从而在保证了数据A在传输过程中数据安全的情况下,还进一步保证了私钥的安全,同时提高了密钥的安全性和可用性。
但是,在门限加密的技术中,由于电子设备的私钥由多个参与方共享,更多的参与方也随之带来了更多的风险可能,在每个参与方都有可能被恶意远程控制和非法操控的情况下,对电子设备的数据所进行的加密或者解密处理也存在一定的风险。例如,当多个电子设备21共同为电子设备2生成公钥时,如果多个电子设备21中的任一或多个电子设备提供了错误的数据,则多个电子设备21则无法生成正确的公钥,所生成的错误公钥无法用于后续的加密;又例如,当电子设备2使用多个电子设备21提供的私钥对数据进行解密时,如果多个电子设备21中任一或多个的电子设备提供了错误的数据,电子设备2则无法通过私钥成功解密接收到的加密数据,进而降低了使用密钥(公钥或者私钥)对数据进行处理(加密或者解密)时的成功率,降低了电子设备对数据进行处理的效率。
图2为本申请应用场景二的示意图,其中,如图2示出了在电子设备之间传输数据时,对数据进行签名和验证的过程,其中,当电子设备3要将数据C发送给电子设备4时,为了使电子设备4能够对数据C来源有效性进行验证,电子设备3可以使用其私钥对数据C进行签名后发送给电子设备4,则电子设备4在接收到经过电子设备3签名的数据C后,可以通过电子设备3的公钥对其中的数据C的签名进行验证,确定数据C的签名属于电子设备3。在这个过程中,只有电子设备3拥有的私钥可用于对数据进行签名,公钥是电子设备3所公开的,可用于对电子设备3的私钥签名进行验证,使得其他设备无法仿造电子设备3发送数据C,从而实现了电子设备3对其所传输的数据进行签名,进而保证了数据有效性。
然而,在上述技术中,虽然只有电子设备3拥有私钥,使得其他设备无法使用电子设备3的私钥对数据进行签名,但是电子设备3的私钥本身还是存在一定的安全隐患,一旦电子设备3被远程控制或者非法操控,电子设备3的私钥也依然存在被盗用的风险,进而也就会降低其签名的有效性。
因此,在另一些技术中提出了“门限签名”的概念,例如,在如图2所示的数据签名的场景中,电子设备3用于签名的私钥是通过多个电子设备31(记为多个参与方)所共同生成的,使得电子设备3的公钥和私钥被多个参与方分担,多个参与方各自持有电子设备3的私钥分片,并且能够在不恢复私钥本身且不暴露每个参与方持有的私钥分片的情况下,完成签名或验证。例如,如图2所示的多个电子设备31可以共同计算得到电子设备3的公钥和私钥,并且当电子设备3向电子设备4发送数据C时,可以使用多个电子设备31共同提供的电子设备3的私钥对数据C进行签名后发送给电子设备4,则电子设备4接收到数据C后,通过多个电子设备31所提供的电子设备3的公钥对数据C中的签名进行验证,从而通过验证签名确保了数据有效性的基础上,还进一步保证了私钥的安全,同时提高了密钥的安全性和可用性。
但是,在门限签名的技术中,由于电子设备的私钥由多个参与方共享,更多的参与方也随之带来了更多的风险可能,在每个参与方都有可能被恶意远程控制和非法操控的情况下,对电子设备的数据所进行的签名或者验证处理也存在一定的风险。例如,当多个电子设备31共同为电子设备3生成公钥时,如果多个电子设备31中的任一或多个电子设备提供了错误的数据,则多个电子设备31则无法生成正确的公钥,所生成的错误公钥无法用于后续电子设备4对签名进行验证;又例如,当电子设备3使用多个电子设备31提供的私钥对数据进行签名时,如果多个电子设备31中任一或多个的电子设备提供了错误的数据,电子设备3则无法通过私钥对数据进行签名,进而降低了使用密钥(公钥或者私钥)对数据进行处理(签名或者验证)时的成功率,降低了电子设备对数据进行处理的效率。
综上,在如图1所示的门限加密以及如图2所示的门限签名的场景中,现有的技术都存对密钥本身以及密钥计算相关的中间数据缺乏验证的问题,从而导致了在密钥本身或者中间数据出现错误的情况下,无法保证所得到的密钥(公钥和私钥)的准确,也就降低了对数据进行处理时的成功率,降低了电子设备对数据进行处理效率。因此,本申请提供一种数据处理方法及装置,在门限加密、门限解密以及门限签名的过程中,参与相关计算的电子设备对所使用的密钥以及中间数据进行验证后,才继续对密钥进行后续处理,从而保证了电子设备使用密钥对数据进行处理时处理效率。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,或者,还可以单独执行,对于相同或相似的概念或过程可能在某些实施例不再赘述。
实施例一
实施例一总述:本实施例提供一种由n个参与方设备共同计算生成一个第一电子设备的公钥的方法,可应用于如图1所示的场景中,由n个电子设备21共同生成电子设备2的公钥(此时将图1中的电子设备2记为第一电子设备),或者可应用与如图2所示的场景中,由n个电子设备31共同生成电子设备3的公钥(此时将图2中的电子设备3记为第一电子设备)。其中,假设所有可以参与计算参与方设备的公钥的参与方设备共有n个,并标记为P1,P2,…,Pn,这n个参与方设备的ID记为ID1,ID2,…,IDn。此外,本申请实施例中n个参与方设备可以基于国密SM2算法(具体又可被划分为SM2加密算法、SM2解密算法、SM2签名算法等)生成第一电子设备的公钥,其中,国密SM2算法是基于椭圆曲线的算法,在计算过程中使用到的参数至少包括:G为椭圆曲线循环群的生成元,被称为椭圆曲线的基点。q是G的阶,q*G等于无穷远点O,满足O+P=P,其中P是椭圆曲线循环群中任何点。0<k<q,k*P表示椭圆曲线点乘。
具体地,图3为本申请提供的数据处理方法一实施例的流程示意图,本申请实施例一提供的方法包括:
S101:目标参与方设备确定第一电子设备的公钥的计算参数,所述计算参数可以是第一承诺信息。
其中,当n个参与方设备共同生成第一电子设备的公钥时,目标参与方设备可以是n个参与方设备中的任一个。或者,可选地,第一电子设备也可以是n个参与方设备中的任一个。
则在S101中,作为执行主体的目标参与方设备计算得到第一电子设备的公钥,其中,由于是n个参与方设备共同确定第一电子设备的公钥,因此n个参与方设备首先各自选取一个t-1次多项式,记n个参与方设备中第i个参与方设备为Pi,则参与方设备Pi所选取的多项式记为fi(x),并将多项式fi(x)中的常数项作为第i个参与方设备Pi所选取的私钥分片,记为setup_sk_i,即fi(0)=setup_sk_i。
随后,对于n个参与计算的参与方设备,记ID1,ID2,…,IDn是n个参与方设备的ID。则其中的第i个(0<i≤n)参与方设备Pi,可以利用n个参与方设备的ID计算得到n个私钥分片,记为fi(ID1),fi(ID2),…,fi(IDn),并把fi(IDj)发送给对应的第j个(0<j≤n,i≠j)参与方设备Pj
随后,对于每个参与计算的参与方设备,在获得n个私钥分片fi(ID1),fi(ID2),…,fi(IDn)之后(包括自己为自己计算的分片fi(IDi)),将这n个私钥分片相加,得到一个联合分片p(IDi)=f1(IDi)+f2(IDi)+…+fn(IDi)。由于每个fi(x)都是由第i个参与方设备Pi选取的t-1次多项式,所以p(x)也是一个t-1多项式。因此,第i个参与方设备Pi可以通过公式Ti=p(IDi)*G,计算总私钥分片与椭圆曲线基点的点乘结果Ti,并将Ti通过广播的方式发送给其他参与方,所述Ti又可被称为“第一承诺”。在本实施例中第一承诺又可被称为第一承诺信息,可以作为计算公钥的公钥计算参数。
S102:目标参与方设备计算第一电子设备的公钥并对第一电子设备的公钥进行验证。
其中,当n个参与计算的参与方设备中的第i个参与方设备Pi都将获得所有n个参与方设备的第一承诺(包括第i个参与方设备自己的第一承诺),则此时,对于n个参与方设备中任一一个参与方设备(记为本实施例中的目标参与方设备,并记为n个参与方设备中的第i个参与方设备Pi),可以通过任意t个参与方设备的ID,ID1,ID2,…,IDt计算得到拉格朗日系数m11,m12,…,m1t,进而通过公式PK1=m11*T1+m12*T2+…,+m1t*Tt,计算得到第一电子设备的公钥,记为PK1。其中,t≤n,t个参与方设备后续可共同用于对第一电子设备的数据门限签名、门限解密等处理(详见实施例二和实施例三的描述)。
具体地,在本实施例中,目标参与方设备在S101生成第一电子设备的公钥之后,在S103实际输出第一电子设备的公钥之前,还需要对所生成的公钥进行验证。
其中,在一种具体的实现方式中,目标参与方设备可以通过不同的t个参与方设备的ID,计算得到拉格朗日系数并计算第二设备的公钥,例如目标参与方设备还通过利用n个参与方设备中任意t个参与方设备的ID,ID2,ID3,…,IDt+1计算得到拉格朗日系数m21,m22,…,m2t。计算PK2=m21*T2+m22*T3+…,+m2t*Tt+1
则目标参与方设备按照上述同样的方式,以此类推,利用n个参与方设备中任意t个参与方设备的ID,IDn-t+1,IDn-t+2,…,IDn计算得到PKn-t+1后,判断所计算得到的n-t+1个第一电子设备的公钥是否相同,即判断PK1、PK2…PKn-t+1是否满足PK1=PK2=…=PKn-t+1
可选地,在上述示例中,以任意t个参与方设备的ID计算第一电子设备的公钥作为示例,可以理解的是,在计算第一电子设备的公钥时,还可以使用其他m个参与方设备的ID计算第一电子设备的公钥,t<m≤n,并判断所有计算出的第一电子设备的公钥是否相同。
S103:若验证通过,目标参与方设备输出第一电子设备的公钥。
具体地,当目标参与方设备确定S102中所得到的所有第一电子设备的公钥都相同时,确定验证通过,并输出第一电子设备的公钥;相反,若S102中得到的所有第一电子设备的公钥不完全相同时,验证不同过,则目标参与方设备不会输出第一电子设备的公钥。
示例性地,在如图1所示的场景中,多个电子设备21中的目标参与方设备得到电子设备2的公钥并验证通过后,向电子设备1和电子设备2发送电子设备2的公钥,又例如,在如图2所示的场景中,多个设备31中的目标参与方设备计算得到电子设备3的公钥并验证通过后,向电子设备3和电子设备4发送电子设备3的公钥。
综上,本申请实施例一提供的方法中,多个参与方设备共同计算第一电子设备的公钥时,多个参与方设备中的目标参与方设备得到第一电子设备的公钥后并不立即输出,而是验证所生成的第一电子设备的公钥是否准确,并在验证通过的情况下才输出供后续计算,否则不会将得到的公钥输出。本实施例中通过上述的在生成第一电子设备的公钥后的验证过程,如果验证通过,说明参与计算第一电子设备的公钥的多个参与方设备所提供的私钥分片是正确的,使得计算得到的公钥也是正确的;如果验证未通过,说明参与计算第一电子设备的公钥的多个参与方设备中,可能有参与方设备提供的私钥分片错误,后续计算得到的公钥也是错误的。因此,在本实施例中,目标参与方设备在得到第一电子设备的公钥后还对公钥进行验证,并在验证通过后才输出,防止当多个参与方设备共同计算第一电子设备的公钥时,有参与方设备因被攻击、盗用等原因提供错误数据后计算错误的公钥,从而保证了所计算得到的公钥的准确,进而保证了第一电子设备使用其公钥对数据进行处理时的准确,使得其他设备也能够得到正确的公钥,提高了第一电子设备对数据进行处理的效率。
实施例二
实施例二总述:本实施例提供一种由n个参与方设备中的t个参与方设备共同对第一电子设备向第二电子设备发送的数据进行签名的方法(基于参与方设备的个数,又可被称为t-n门限签名方法),可应用于如图2所示的场景中,由n个电子设备31中的t个电子设备31(记为参与方设备)共同对电子设备3(记为第一电子设备)向电子设备4(记为第二电子设备)发送的数据C进行数字签名的场景中。其中,假设所有可以参与对第一电子设备的数据进行签名的参与方设备共有n个,并标记为P1,P2,…,Pn,这n个参与方设备的ID记为ID1,ID2,…,IDn,并且这n个参与方设备中的任意t(t≤n)个参与方设备可以联合用于生成门限签名sigma=(r,s),少于t个参与方设备则无法完成签名。
此外,本申请实施例中t个参与方设备可以基于国密SM2签名算法,对第一电子设备的数据进行数字签名,其中,国密SM2算法是基于椭圆曲线的算法,在计算过程中使用到的参数至少包括:G为椭圆曲线循环群的生成元,被称为椭圆曲线的基点。q是G的阶,q*G等于无穷远点O,满足O+P=P,其中P是椭圆曲线循环群中任何点。0<k<q,k*P表示椭圆曲线点乘。同时,为了实现本实施例,还利用了以下三个数学概念:①、多方乘法协议:t个参与方设备P1,P2,…,Pt执行多方乘法协议时,对于第i个参与方设备Pi输入的{a_i,b_i},执行乘法协议,使得t个参与方设备各自得到的输出c_i,满足c_1+c_2+…+c_t=(a_1+a_2+…+a_t)*(b_1+b_2+…+b_t)。②、离散对数零知识证明:证明者P在不暴露k的情况下,能够向验证者证明P知道R=k*G的k。③、DHtuple零知识证明:证明者P在不暴露w的情况下,能够向验证者证明{G,P,U,V}满足P=w*G,V=w*G。
具体地,图4为本申请提供的数据处理方法一实施例的流程示意图,本申请实施例二提供的数据处理方法包括:
S201:目标参与方设备确定至少两个计算参数,所述至少两个计算参数用于得到第一电子设备的签名信息。
其中,当t个参与方设备共同计算生成第一电子设备的公钥时,目标参与方设备可以是t个参与方设备中的任一个。或者,可选地,第一电子设备也可以是t个参与方设备中的任一个。在S201一种具体的实现方式中,作为执行主体的目标参与方设备计算得到第一电子设备的签名信息,其中,由于是t个参与方设备共同确定至少两个计算参数,来计算得到第一电子设备的签名信息,因此这t个参与方设备在S201中将联合执行如下步骤:
步骤a、t个参与方设备中的每个参与方设备各自计算参数M。其中,对于t个参与方设备中的第i个参与方设备Pi,首先随机选择roi后,通过公式Mi=roi*G计算出Mi,记为第二承诺,并对计算得到的第二承诺Mi进行离散对数零知识证明。随后第i个参与方设备Pi将所计算的第二承诺和证明广播发送给其他t个参与方设备。当每个参与方设备都收集到所有t个参与方设备广播的第二承诺M1,M2,…,Mt(包括自己产生的Mi)和相应的离散对数零知识证明之后,验证所有零知识证明的有效性。如果验证都有效,则继续通过公式M=M1+M2+…+Mt,计算得到参数M用于后续的验证计算。
步骤b、t个参与方设备中的每个参与方设备各自计算参数R和e。其中,对于t个参与方设备中的第i个参与方设备Pi,首先随机选择ki,通过公式Ri=ki*G计算出计算Ri,记为第三承诺,并计算第三承诺Ri的离散对数零知识证明。随后第i个参与方设备Pi将所计算的第三承诺Ri和证明广播发送给其他t个参与方设备。当每个参与方都收集到所有t个参与方设备广播发送的第三承诺R1,R2,…,Rt(包括自己产生的Ri)和相应的离散对数零知识证明之后,验证所有零知识证明的有效性。如果验证都有效,则继续通过公式R=R1+…+Rt计算出参数R,并通过公式e=Hash(message||Z)计算出参数e。其中message为消息,Z为公开字符串。将e转化为整数类型。R=(x1,y1),Pi提取x1。计算得到的参数R和参数e用于后续的验证计算。在计算得到参数e之后,每个参与方设备还通过公式r=e+x1(mod q)计算第一电子设备的签名sigma=[r,s]的第一部分r。
步骤c、t个参与方设备中的每个参与方设备各自计算参数Ni=roi*PK,其中,对于t个参与方设备中的第i个参与方设备Pi,计算步骤a中得到的Mi、第一电子设备的公钥PK,以及所计算的Ni的DHTuple零知识证明,记为proof_Mi_PK_Ni_DH。随后,第i个参与方设备Pi将Mi,Ni和proof_Mi_PK_Ni_DH发送给其他t个参与方设备。则当每个参与方都收集到所有t个参与方设备发送的DHTuple零知识证明proof_Mi_PK_Ni_DH且均验证通过后,则继续通过公式N=N1+N2+…+Nt计算出参数N,计算得到的参数N用于后续的验证计算。
步骤d、t个参与方设备中的每个参与方设备各自计算参数Li=roi*R,其中,对于t个参与方设备中的第i个参与方设备Pi,计算计算{G,Mi,R,Li}的DHtuple零知识证明,记为proof_Mi_R_Li_DH。随后,第i个参与方设备Pi将Li和proof_Mi_R_Li_DH发送给其他t个参与方设备。则当每个参与方都收集到所有t个参与方设备发送的DHTuple零知识证明proof_Mi_R_Li_DH且均验证通过后,则继续通过公式L=L1+L2+…+Lt计算出参数L,计算得到的参数L用于后续的验证计算。
步骤e、t个参与方设备中的每个参与方设备各自利用所有t个参与方设备的ID,ID1,ID2,…,IDt计算拉格朗日系数lambdai,并通过公式sign_ski=lambdai*p(IDi)(mod q)计算参数sign_ski,其中,(mod q)表示取模运算。
步骤f、t个参与方设备执行两次多方乘法协议,使得目标参与方设备确定两个计算参数,记为Beta和Tao,所计算的两个计算参数用于得到第一电子设备的签名信息。
具体地,将第一次多方乘法协议得到的计算参数记为Beta=ro*(1+sk)。则对于t个参与方设备中的第i个参与方设备Pi分别以各自的roi和1/t+sign_ski(mod q)作为多方乘法协议的输入,则t个参与方设备共同进行多方乘法协议计算,得到的输出结果记为wi,则每个第i个参与方设备Pi将计算得到的wi发送给t个参与方设备中的其他参与方设备。则当t个参与方设备中的目标参与方设备收集到所有t个参与方设备发送的多方乘法协议的输出结果w1、w2…wt后,通过公式Beta=w1+w2+…+wt(mod q)计算出参数Beta,所得到的参数Beta用于后续签名信息的计算。
将第二次多方乘法协议得到的计算参数记为Tao=ro*(k–r*sk)。则对于t个参与方设备中的第i个参与方设备Pi分别以各自的roi和ki–r*sign_ski(mod q)作为多方乘法协议的输入,则t个参与方设备共同进行多方乘法协议计算,得到的输出结果记为vi,则每个第i个参与方设备Pi将计算得到的vi发送给t个参与方设备中的其他参与方设备。则当t个参与方设备中的目标参与方设备收集到所有t个参与方设备发送的多方乘法协议的输出结果v1、v2…vt后,通过公式Tao=v1+v2+…+vt(mod q)计算出参数Tao,所得到的参数Tao用于后续签名信息的计算。
需要说明的是,由于本实施例中所设计的两次多方乘法协议中,所使用的参数不同,使得这两次多方乘法协议相互独立且互不干扰,因此,在本实施例具体的执行过程中,t个参与方设备可以通过并行的方式,同时执行两次多方乘法协议,从而与现有技术中存在的两次多方乘法协议之间参数相同、参数交互的方式相比,还能够提高计算效率,节省计算所需的时间,还能够相当于进一步提高电子设备对数据进行处理的效率。
S202:目标参与方设备对至少两个计算参数进行验证。
具体地,对于t个参与方设备中的目标参与方设备,可以在经过S201确定两个计算参数Beta和Tao之后,并不直接用两个计算参数计算第一电子设备的签名信息,而是对两个计算参数进行验证。
在一种具体的实现方式中,目标参与方设备通过公式Beta*G=M+N和公式Tao*G=L–r*N对两个计算参数进行验证,只有当上述两个公式同时成立时,验证通过,可以继续执行后续S203的步骤;否则当上述两个公式不能同时成立时,验证不通过,不会执行后续S203的步骤。
其中,由于M是通过每个参与方设备提供的Mi=roi*G计计算得到、N是通过每个参与方提供的Ni=roi*PK计算得到,又Beta=ro*(1+sk),因此将等式Beta*G=M+N右边的M与N相加之后,可以得到左侧的Beta*G。同样地,由于L是通过每个参与方设备提供的Li=roi*R计计算得到、N是通过每个参与方提供的Ni=roi*PK计算得到,又Tao=ro*(k–r*sk),因此将等式Tao*G=L–r*N右边的L与r*N相减之后,可以得到左侧的Tao*G。
也就是说,当每个参与方设备提供的Mi、Ni、Li等中间计算数据都准确时,所计算的计算参数Beta和Tao也是正确的,而当t个参与方设备中任意一个或多个参与方设备提供的Mi、Ni、Li等中间计算数据不准确时,所计算的计算参数Beta和Tao也都将出现错误,无法计算出后续准确的第一电子设备的签名。故在S202中,可以通过上述两个公式对用于计算第一电子设备的签名信息的两个计算参数进行验证,若两个计算参数验证通过,说明每个参与方设备提供的中间计算数据也是准确地,从而可以继续执行后续S203的步骤。
S203:若验证通过,目标参与方设备根据至少两个计算参数,计算第一电子设备的签名信息。
具体地,若目标参与方设备通过S202对所得到的计算参数Beta和Tao验证通过后,才继续通过公式r=e+x1(mod q)和公式s=Tao/Beta(mod q)计算出第一电子设备的签名信息的第二部分s,并结合已经计算出的第一电子设备的签名信息的第一部分s,最终得到第一电子设备的签名sigma=[r,s]。例如,在如图2所示的场景中,由t个电子设备21中的目标参与方设备经过上述步骤计算得到电子设备3的签名信息后,将得到的签名信息发送给电子设备3。
可选地,在计算得到签名信息sigma=[r,s]之后,目标参与方设备还可以通过SM2公钥签名算法、消息message和PK的等方式验证签名信息sigma的有效性,若再次验证签名信息sigma有效之后,再最终输出第一电子设备的签名信息sigma。
综上,本申请实施例二提供的方法中,多个参与方设备共同计算第一电子设备的签名信息时,多个参与方设备中的目标参与方设备得到第一电子设备的签名信息的计算信息后并不立即计算签名信息,而是验证所得到的计算信息是否准确,并在验证通过的情况下才继续计算签名信息,否则不会计算签名信息。本实施例中通过上述的在得到签名信息的计算信息后的验证过程,如果验证通过,说明得到计算信息的多个参与方设备所提供的中间计算数据是正确的,使得得到的计算信息也是正确的,后续可以保证计算出正确的第一电子设备的签名信息;如果验证未通过,说明得到计算信息的多个参与方设备中,可能有参与方设备提供的中间数据错误,后续计算得到的第一电子设备的签名信息也将是错误的。因此,在本实施例中,目标参与方设备在得到第一电子设备的签名信息的计算信息后还对计算信息进行验证,并在验证通过后才计算得到第一电子设备的签名信息,防止当多个参与方设备共同计算第一电子设备的签名信息时,有参与方设备因被攻击、盗用等原因提供错误数据后导致签名信息错误,从而在保证了所计算得到的第一电子设备的签名信息的准确的基础上,进而保证了多个参与方设备使用对第一电子设备的数据进行数字签名的准确,使得其他接收到数据的设备能够成功对第一电子设备的签名信息进行验证,提高了第一电子设备对数据进行处理的效率。
实施例三
实施例三总述:本实施例提供一种由n个参与方设备中的t个参与方设备共同对第三电子设备发送给第一电子设备的数据进行解密的方法(基于参与方设备的个数,又可被称为t-n门限解密方法),可应用于如图1所示的场景中,当电子设备1(记为第三电子设备)向电子设备2(记为第一电子设备)发送数据A时,第三电子设备使用第一电子设备的公钥对数据A进行加密为数据B后发送给第一电子设备,则当第一电子设备接收到数据B后,由n个电子设备21中的t个电子设备21(记为参与方设备)共同对数据B进行解密并得到数据A的场景中。其中,假设所有可以参与对第一电子设备的数据进行解密的参与方设备共有n个,并标记为P1,P2,…,Pn,这n个参与方设备的ID记为ID1,ID2,…,IDn,并且这n个参与方设备中的任意t(t≤n)个参与方设备可以联合用于完成第一电子设备的数据的解密,少于t个参与方设备则无法解密。
此外,本申请实施例中t个参与方设备可以基于国密SM2解密算法,对第一电子设备的数据进行解密,其中,国密SM2算法是基于椭圆曲线的算法,在计算过程中使用到的参数至少包括:G为椭圆曲线循环群的生成元,被称为椭圆曲线的基点。q是G的阶,q*G等于无穷远点O,满足O+P=P,其中P是椭圆曲线循环群中任何点。0<k<q,k*P表示椭圆曲线点乘。同时,为了实现本实施例,还利用了以下三个数学概念:①、多方乘法协议:t个参与方设备P1,P2,…,Pt执行多方乘法协议时,对于第i个参与方设备Pi输入的{a_i,b_i},执行乘法协议,使得t个参与方设备各自得到的输出c_i,满足c_1+c_2+…+c_t=(a_1+a_2+…+a_t)*(b_1+b_2+…+b_t)。②、离散对数零知识证明:证明者P在不暴露k的情况下,能够向验证者证明P知道R=k*G的k。③、DHtuple零知识证明:证明者P在不暴露w的情况下,能够向验证者证明{G,P,U,V}满足P=w*G,V=w*G。
此外,在本实施例中,基于第三电子设备已经通过第一电子设备的公钥PK对数据进行加密,其加密的方式可以通过SM2公钥加密算法进行,所使用的公钥PK可以是实施例一种生成的。例如,第三电子设备通过如下步骤对数据data进行加密得到密文C:(1)选择一个随机数k,计算C1=k*G,其中G是椭圆曲线基点。(2)(x1,y1)=k*PK。计算e=KDF(x1||y1||parameters),其中KDF是密钥生成函数,可以用哈希函数替代,另外parameters是公开参数。(3)计算C2=data XOR e。(4)C3=Hash(x1||M||y1)。(5)设置密文C={C1||C2||C3}。本实施例对第三电子设备使用公钥PK对数据进行加密的实现不做限定。
则本申请实施例三提供的方法是第一电子设备接收到密文C之后,通过t个参与方设备共同对密文C进行解密得到明文data的过程,图5为本申请提供的数据处理方法一实施例的流程示意图,该方法包括:
S301:目标参与方设备获取多个解密参数,解密参数用于对第一电子设备接收到的数据进行解密。
其中,当t个参与方设备共同对第一电子设备接收到的数据进行解密时,目标参与方设备可以是t个参与方设备中的任一个。或者,可选地,第一电子设备也可以是t个参与方设备中的任一个。在S301一种具体的实现方式中,由t个参与方设备首先共同确定多个解密参数,来用于后续对第一电子设备的数据进行解密,因此这t个参与方设备在S301中将联合执行如下步骤:
首先,t个参与方设备中的每个参与方设备,记第i个参与方设备Pi利用共t个参与方设备的ID,ID1,ID2,…,IDt计算各自的拉格朗日系数lambdai,随后计算decrypt_ski=lambdai*p(IDi),并通过接收到的密文C中提取C1,并计算Ri=decrypt_ski*C1,并计算Qi=decrypt_sk_i*G。随后,每个参与方设备Pi计算G,Qi,C1,Ri的DH Tuple零知识证明proof_i,以及Qi,Ri和proofi的承诺,并将所计算得到的承诺广播给其他所有t个参与方设备。当每个参与方设备都收集到所有其他t-1个参与方设备的承诺之后,每个参与方Pi将Qi,Ri和proofi发送给目标参与方设备,将目标参与方设备记为P0
S302:目标参与方设备对多个解密参数进行验证。
其中,目标参与方设备对S301中所接收到的所有t个参与方设备的R1,R2,…,Rt,Q1,Q2,…,Qt和proof1,proof2,…,prooft进行验证。所述验证包括:验证所接收到的承诺的正确性,验证每个DHTuple零知识证明的有效性,以及通过公式验证PK=Q1+Q2+…+Qt。则当验证通过后,可以继续执行后续S303的步骤,否则当上述任一验证不通过时,不会继续执行后续S303的步骤。
也就是说,当每个参与方设备提供的Qi,Ri等用于解密参数都准确时,t个参与方设备可以共同准确地对第一电子设备的数据进行解密,保证解密成功;而当t个参与方设备中任意一个或多个参与方设备提供的Qi,Ri等解密参数不准确时,t个参与方设备可能无法准确对第一电子设备接收到的数据进行解密,故在S301确定解密参数之后、在S303实际对数据进行解密之前,本实施例中目标参与方设备还对确定的解密参数进行验证,只有在验证通过保证解密参数准确的情况下,才进行后续的解密步骤。
S303:若验证通过,目标参与方设备根据多个解密参数,对第一电子设备接收到的数据进行解密。
具体地,若目标参与方设备在S302中对所得到的解密参数进行验证通过后,可以通过如下具体的公式对第一电子设备接收到的数据密文C进行解密。其中,通过公式R=R1+R2+…+Rt=(x1,y1)计算参数x1、y1和R,通过公式e=KDF(x1||y1||parameters)计算参数e。随后通过公式M’=C2 XOR e计算M’。最终,通过公式C3’=Hash(x1||M||y1)计算C3’。若C3’=C3,那么M’是正确的明文,输出M’。否则,输出False。从而完成对第一电子设备接收到的数据密文C进行解密得到加密签的数据data。
综上,本申请实施例三提供的方法中,多个参与方设备共同对第一电子设备接收的数据进行解密时,多个参与方设备中的目标参与方设备得到第一电子设备的解密参数后并不立即对数据进行解密,而是验证所得到的解密参数是否准确,并在验证通过的情况下才继续对数据进行解密,否则不会对数据进行解密。本实施例中通过上述的在得到解密参数后验证过程,如果验证通过,说明多个参与方设备所提供的中间计算数据即解密参数是正确的,使得通过解密参数对第一电子设备接收的数据进行解密时也能够保证解密的正确;如果验证未通过,说明多个参与方设备中,可能有参与方设备提供的中间数据错误,后续对第一电子设备的数据进行解密也将是错误的。因此,在本实施例中,目标参与方设备在得到第一电子设备的解密参数后还对解密参数进行验证,防止当多个参与方设备共同对第一电子设备接收的数据进行解密时,有参与方设备因被攻击、盗用等原因提供错误数据后导致解密参数错误,从而在保证了所计算得到的第一电子设备的解密参数的准确的基础上,进而保证了多个参与方电子设备对第一电子设备的数据进行解密的准确,提高了第一电子设备对数据进行处理的效率。
实施例四
实施例四总述:本实施例提供一种由n个参与方设备共同计算生成一个第一电子设备的公钥的方法,可应用于如图1所示的场景中,由n个电子设备21共同生成电子设备2的公钥,或者可应用与如图2所示的场景中,由n个电子设备31共同生成电子设备3的公钥。其中,假设所有可以参与计算参与方设备的公钥的参与方设备共有n个,并标记为P1,P2,…,Pn,这n个参与方设备的ID记为ID1,ID2,…,IDn。此外,本申请实施例中n个参与方设备可以基于国密SM2算法(具体又可被划分为SM2加密算法、SM2解密算法、SM2签名算法等)生成第一电子设备的公钥,其中,国密SM2算法是基于椭圆曲线的算法,在计算过程中使用到的参数至少包括:G为椭圆曲线循环群的生成元,被称为椭圆曲线的基点。q是G的阶,q*G等于无穷远点O,满足O+P=P,其中P是椭圆曲线循环群中任何点。0<k<q,k*P表示椭圆曲线点乘。其中,本实施例与实施例一的区别在于,这n个参与方设备(实施例一是n个参与方设备中的t个参与方设备)后续可共同用于对第一电子设备的数据门限签名、门限解密等处理(详见实施例五和实施例六的描述)。
具体地,图6为本申请提供的数据处理方法一实施例的流程示意图,本申请实施例四提供的方法包括:
S401:目标参与方设备确定第一电子设备的公钥的计算参数,计算参与用于得到第一电子设备的公钥。
其中,当n个参与方设备共同生成第一电子设备的公钥时,目标参与方设备可以是n个参与方设备中的任一个。或者,可选地,第一电子设备也可以是n个参与方设备中的任一个。
则在S101中,n个参与方设备中的任意第i个参与方设备Pi获取私钥sk_i,并通过公式pk_i=sk_i*G计算出第i个参与方设备Pi对应的公钥pk_i,以及计算公钥pk_i的离散对数零知识证明记为proof_i,随后计算pk_i和proof_i的承诺后,将承诺广播给其他n-1个参与方设备。
S402:目标参与方设备对第一电子设备的公钥的计算参数进行验证。
随后,对于n个参与方设备中的目标参与方设备,可以是其中第i个参与方设备Pi,可以对S401中所接收到的计算参数pk_i即进行验证,例如第i个参与方设备Pi对所有收集到的其他参与方设备发送的子公钥(pk_i)及其离散对数零知识证明(proof_i)进行验证。则当目标参与方设备通过对上述验证方式对计算参数验证成功后,可以继续执行后续S403的步骤;否则当上述验证没有通过时,不会执行后续的S403的步骤。
S403:目标参与方设备根据计算参数确定第一电子设备的公钥。
具体地,目标参与方设备在S402对计算参数pk_1、pk_2…pk_n验证通过之后,将所得到的计算参数代入公式PK=pk_1+pk_2+…+pk_n计算得到第一电子设备的公钥PK。
综上,本实施例提供的方法中,多个参与方设备共同计算第一电子设备的公钥时,在得到第一电子设备的公钥的计算参数后,还验证计算参数是否准确,并在验证通过的情况下才根据计算参数计算第一电子设备的公钥,否则不会计算公钥输出。本实施例中通过上述的在生成第一电子设备的计算参数后的验证过程,如果验证通过,说明参与计算第一电子设备的公钥的多个参与方设备所提供的计算参数是正确的,使得计算得到的公钥也是正确的;如果验证未通过,说明参与计算第一电子设备的公钥的多个参与方设备中,可能有参与方设备提供的计算参数错误,后续计算得到的公钥也是错误的。因此,在本实施例中,目标参与方设备在得到第一电子设备的计算参数后还对计算参数进行验证,并在验证通过后才计算共啊哟,防止当多个参与方设备共同计算第一电子设备的公钥时,有参与方设备因被攻击、盗用等原因提供错误数据后计算错误的公钥,从而保证了所计算得到的公钥的准确,进而保证了第一电子设备使用其公钥对数据进行处理时的准确,使得其他设备也能够得到正确的公钥,提高了第一电子设备对数据进行处理的效率。
实施例五
实施例五总述:本实施例提供一种由n个参与方设备中的n个参与方设备共同对第一电子设备向第二电子设备发送的数据进行签名的方法(基于参与方设备的个数,又可被称为n-n门限签名方法),可应用于如图2所示的场景中,由n个电子设备31(记为参与方设备)共同对电子设备3(记为第一电子设备)向电子设备4(记为第二电子设备)发送的数据C进行数字签名的场景中。其中,假设所有可以参与对第一电子设备的数据进行签名的参与方设备共有n个,并标记为P1,P2,…,Pn,这n个参与方设备的ID记为ID1,ID2,…,IDn,并且这n个参与方设备,可以联合用于生成门限签名sigma=(r,s),少于n个参与方设备则无法完成签名。
此外,本申请实施例中n个参与方设备可以基于国密SM2签名算法,对第一电子设备的数据进行数字签名,其中,国密SM2算法是基于椭圆曲线的算法,在计算过程中使用到的参数至少包括:G为椭圆曲线循环群的生成元,被称为椭圆曲线的基点。q是G的阶,q*G等于无穷远点O,满足O+P=P,其中P是椭圆曲线循环群中任何点。0<k<q,k*P表示椭圆曲线点乘。同时,为了实现本实施例,还利用了以下三个数学概念:①、多方乘法协议:n个参与方设备P1,P2,…,Pt执行多方乘法协议时,对于第i个参与方设备Pi输入的{a_i,b_i},执行乘法协议,使得n个参与方设备各自得到的输出c_i,满足c_1+c_2+…+c_t=(a_1+a_2+…+a_t)*(b_1+b_2+…+b_t)。②、离散对数零知识证明:证明者P在不暴露k的情况下,能够向验证者证明P知道R=k*G的k。③、DHtuple零知识证明:证明者P在不暴露w的情况下,能够向验证者证明{G,P,U,V}满足P=w*G,V=w*G。
其中,本实施例提供的门限签名方法中,与实施例二提供的方法S201-S203的逻辑顺序相同,所不同在于将t改为n,并将sign_ski改为sk_i即可。本实施例其他的具体实现方式、原理以及技术效果,与实施例二相同,不再赘述。例如,本实施例提供的数据处理方法包括:
S501:目标参与方设备确定至少两个计算参数,所述至少两个计算参数用于得到第一电子设备的签名信息。
其中,当n个参与方设备共同计算生成第一电子设备的公钥时,目标参与方设备可以是n个参与方设备中的任一个。或者,可选地,第一电子设备也可以是n个参与方设备中的任一个。在S501一种具体的实现方式中,作为执行主体的目标参与方设备计算得到第一电子设备的签名信息,其中,由于是n个参与方设备共同确定至少两个计算参数,来计算得到第一电子设备的签名信息,因此这n个参与方设备在S501中将联合执行如下步骤:
步骤a、n个参与方设备中的每个参与方设备各自计算参数M。其中,对于n个参与方设备中的第i个参与方设备Pi,首先随机选择roi后,通过公式Mi=roi*G计算出Mi,记为第二承诺,并对计算得到的第二承诺Mi进行离散对数零知识证明。随后第i个参与方设备Pi将所计算的第二承诺和证明广播发送给其他n-1个参与方设备。当每个参与方设备都收集到所有n个参与方设备广播的第二承诺M1,M2,…,Mt(包括自己产生的Mi)和相应的离散对数零知识证明之后,验证所有零知识证明的有效性。如果验证都有效,则继续通过公式M=M1+M2+…+Mt,计算得到参数M用于后续的验证计算。
步骤b、n个参与方设备中的每个参与方设备各自计算参数R和e。其中,对于n个参与方设备中的第i个参与方设备Pi,首先随机选择ki,通过公式Ri=ki*G计算出计算Ri,记为第三承诺,并计算第三承诺Ri的离散对数零知识证明。随后第i个参与方设备Pi将所计算的第三承诺Ri和证明广播发送给其他n-1个参与方设备。当每个参与方都收集到所有n个参与方设备广播发送的第三承诺R1,R2,…,Rt(包括自己产生的Ri)和相应的离散对数零知识证明之后,验证所有零知识证明的有效性。如果验证都有效,则继续通过公式R=R1+…+Rt计算出参数R,并通过公式e=Hash(message||Z)计算出参数e。其中message为消息,Z为公开字符串。将e转化为整数类型。R=(x1,y1),Pi提取x1。计算得到的参数R和参数e用于后续的验证计算。
步骤c、n个参与方设备中的每个参与方设备各自计算参数Ni=roi*PK,其中,对于n个参与方设备中的第i个参与方设备Pi,计算步骤a中得到的Mi、第一电子设备的公钥PK,以及所计算的Ni的DHTuple零知识证明,记为proof_Mi_PK_Ni_DH。随后,第i个参与方设备Pi将Mi,Ni和proof_Mi_PK_Ni_DH发送给其他n-1个参与方设备。则当每个参与方都收集到所有n个参与方设备发送的DHTuple零知识证明proof_Mi_PK_Ni_DH且均验证通过后,则继续通过公式N=N1+N2+…+Nt计算出参数N,计算得到的参数N用于后续的验证计算。
步骤d、n个参与方设备中的每个参与方设备各自计算参数Li=roi*R,其中,对于n个参与方设备中的第i个参与方设备Pi,计算计算{G,Mi,R,Li}的DHtuple零知识证明,记为proof_Mi_R_Li_DH。随后,第i个参与方设备Pi将Li和proof_Mi_R_Li_DH发送给其他n-1个参与方设备。则当每个参与方都收集到所有n个参与方设备发送的DHTuple零知识证明proof_Mi_R_Li_DH且均验证通过后,则继续通过公式L=L1+L2+…+Lt计算出参数L,计算得到的参数L用于后续的验证计算。
步骤e、n个参与方设备中的每个参与方设备各自利用所有n个参与方设备的ID,ID1,ID2,…,IDt计算拉格朗日系数lambdai,并通过公式sk_i=lambdai*p(IDi)(mod q)计算参数sk_i,其中,(mod q)表示取模运算。
步骤f、n个参与方设备执行两次多方乘法协议,使得目标参与方设备确定两个计算参数,记为Beta和Tao,所计算的两个计算参数用于得到第一电子设备的签名信息。
具体地,将第一次多方乘法协议得到的计算参数记为Beta=ro*(1+sk)。则对于n个参与方设备中的第i个参与方设备Pi分别以各自的roi和1/t+sk_i(mod q)作为多方乘法协议的输入,则n个参与方设备共同进行多方乘法协议计算,得到的输出结果记为wi,则每个第i个参与方设备Pi将计算得到的wi发送给n个参与方设备中的其他参与方设备。则当n个参与方设备中的目标参与方设备收集到所有n个参与方设备发送的多方乘法协议的输出结果w1、w2…wt后,通过公式Beta=w1+w2+…+wt(mod q)计算出参数Beta,所得到的参数Beta用于后续签名信息的计算。
将第二次多方乘法协议得到的计算参数记为Tao=ro*(k–r*sk)。则对于n个参与方设备中的第i个参与方设备Pi分别以各自的roi和ki–r*sk_i(mod q)作为多方乘法协议的输入,则n个参与方设备共同进行多方乘法协议计算,得到的输出结果记为vi,则每个第i个参与方设备Pi将计算得到的vi发送给n个参与方设备中的其他参与方设备。则当n个参与方设备中的目标参与方设备收集到所有n个参与方设备发送的多方乘法协议的输出结果v1、v2…vt后,通过公式Tao=v1+v2+…+vt(mod q)计算出参数Tao,所得到的参数Tao用于后续签名信息的计算。
需要说明的是,由于本实施例中所设计的两次多方乘法协议中,所使用的参数不同,使得这两次多方乘法协议相互独立且互不干扰,因此,在本实施例具体的执行过程中,n个参与方设备可以通过并行的方式,同时执行两次多方乘法协议,从而与现有技术中存在的两次多方乘法协议之间参数相同、参数交互的方式相比,还能够提高计算效率,节省计算所需的时间,还能够相当于进一步提高电子设备对数据进行处理的效率。
S502:目标参与方设备对至少两个计算参数进行验证。
具体地,对于n个参与方设备中的目标参与方设备,可以在经过S501确定两个计算参数Beta和Tao之后,并不直接用两个计算参数计算第一电子设备的签名信息,而是对两个计算参数进行验证。
在一种具体的实现方式中,目标参与方设备通过公式Beta*G=M+N和公式Tao*G=L–r*N对两个计算参数进行验证,只有当上述两个公式同时成立时,验证通过,可以继续执行后续S503的步骤;否则当上述两个公式不能同时成立时,验证不通过,不会执行后续S503的步骤。
其中,由于M是通过每个参与方设备提供的Mi=roi*G计计算得到、N是通过每个参与方提供的Ni=roi*PK计算得到,又Beta=ro*(1+sk),因此将等式Beta*G=M+N右边的M与N相加之后,可以得到左侧的Beta*G。同样地,由于L是通过每个参与方设备提供的Li=roi*R计计算得到、N是通过每个参与方提供的Ni=roi*PK计算得到,又Tao=ro*(k–r*sk),因此将等式Tao*G=L–r*N右边的L与r*N相减之后,可以得到左侧的Tao*G。
也就是说,当每个参与方设备提供的Mi、Ni、Li等中间计算数据都准确时,所计算的计算参数Beta和Tao也是正确的,而当n个参与方设备中任意一个或多个参与方设备提供的Mi、Ni、Li等中间计算数据不准确时,所计算的计算参数Beta和Tao也都将出现错误,无法计算出后续准确的第一电子设备的签名。故在S502中,可以通过上述两个公式对用于计算第一电子设备的签名信息的两个计算参数进行验证,若两个计算参数验证通过,说明每个参与方设备提供的中间计算数据也是准确地,从而可以继续执行后续S503的步骤。
S503:若验证通过,目标参与方设备根据至少两个计算参数,计算第一电子设备的签名信息。
具体地,若目标参与方设备通过S502对所得到的计算参数Beta和Tao验证通过后,才继续通过公式r=e+x1(mod q)和公式s=Tao/Beta(mod q)计算出第一电子设备的签名信息sigma=[r,s]。例如,在如图2所示的场景中,由n个电子设备21中的目标参与方设备经过上述步骤计算得到电子设备3的签名信息后,将得到的签名信息发送给电子设备3。
可选地,在计算得到签名信息sigma=[r,s]之后,目标参与方设备还可以通过SM2公钥签名算法、消息message和PK的等方式验证签名信息sigma的有效性,若再次验证签名信息sigma有效之后,再最终输出第一电子设备的签名信息sigma。
实施例六
实施例六总述:本实施例提供一种由n个参与方设备中的n个参与方设备共同对第三电子设备发送给第一电子设备的数据进行解密的方法(基于参与方设备的个数,又可被称为n-n门限解密方法),可应用于如图1所示的场景中,当电子设备1(记为第三电子设备)向电子设备2(记为第一电子设备)发送数据A时,第三电子设备使用第一电子设备的公钥对数据A进行加密为数据B后发送给第一电子设备,则当第一电子设备接收到数据B后,由n个电子设备21(记为参与方设备)共同对数据B进行解密并得到数据A的场景中。其中,假设所有可以参与对第一电子设备的数据进行解密的参与方设备共有n个,并标记为P1,P2,…,Pn,这n个参与方设备的ID记为ID1,ID2,…,IDn,并且这n个参与方设备可以联合用于完成第一电子设备的数据的解密,少于n个参与方设备则无法解密。
此外,本申请实施例中n个参与方设备可以基于国密SM2解密算法,对第一电子设备的数据进行解密,其中,国密SM2算法是基于椭圆曲线的算法,在计算过程中使用到的参数至少包括:G为椭圆曲线循环群的生成元,被称为椭圆曲线的基点。q是G的阶,q*G等于无穷远点O,满足O+P=P,其中P是椭圆曲线循环群中任何点。0<k<q,k*P表示椭圆曲线点乘。同时,为了实现本实施例,还利用了以下三个数学概念:①、多方乘法协议:n个参与方设备P1,P2,…,Pt执行多方乘法协议时,对于第i个参与方设备Pi输入的{a_i,b_i},执行乘法协议,使得n个参与方设备各自得到的输出c_i,满足c_1+c_2+…+c_t=(a_1+a_2+…+a_t)*(b_1+b_2+…+b_t)。②、离散对数零知识证明:证明者P在不暴露k的情况下,能够向验证者证明P知道R=k*G的k。③、DHtuple零知识证明:证明者P在不暴露w的情况下,能够向验证者证明{G,P,U,V}满足P=w*G,V=w*G。
此外,在本实施例中对第三电子设备使用公钥PK对数据进行加密的实现不做限定,记第三电子设备已经通过第一电子设备的公钥PK对数据进行加密,并得到密文设置密文C={C1||C2||C3}。则本申请实施例三提供的方法是第一电子设备接收到密文C之后,通过n个参与方设备共同对密文C进行解密得到明文data的过程,本实施例提供的门限解密方法中,与实施例三提供的方法S301-S303的逻辑顺序相同,所不同在于将t改为n,并让decrypt_ski改为sk_i即可。本实施例其他的具体实现方式、原理以及技术效果,与实施例三相同,不再赘述。例如,本实施例提供的数据处理方法包括:
S601:目标参与方设备获取多个解密参数,解密参数用于对第一电子设备接收到的数据进行解密。
其中,当n个参与方设备共同对第一电子设备接收到的数据进行解密时,目标参与方设备可以是n个参与方设备中的任一个。或者,可选地,第一电子设备也可以是n个参与方设备中的任一个。在S601一种具体的实现方式中,由n个参与方设备首先共同确定多个解密参数,来用于后续对第一电子设备的数据进行解密,因此这n个参与方设备在S601中将联合执行如下步骤:
首先,n个参与方设备中的每个参与方设备,记第i个参与方设备Pi利用共n个参与方设备的ID,ID1,ID2,…,IDt计算各自的拉格朗日系数lambdai,随后计算sk_i=lambdai*p(IDi),并通过接收到的密文C中提取C1,并计算Ri=sk_i*C1,并计算Qi=decrypt_sk_i*G。随后,每个参与方设备Pi计算G,Qi,C1,Ri的DH Tuple零知识证明proof_i,以及Qi,Ri和proofi的承诺,并将所计算得到的承诺广播给其他所有n个参与方设备。当每个参与方设备都收集到所有其他n-1个参与方设备的承诺之后,每个参与方Pi将Qi,Ri和proofi发送给目标参与方设备,将目标参与方设备记为P0
S602:目标参与方设备对多个解密参数进行验证。
其中,目标参与方设备对S601中所接收到的所有n个参与方设备的R1,R2,…,Rn,Q1,Q2,…,Qn和proof1,proof2,…,proofn进行验证。所述验证包括:验证所接收到的承诺的正确性,验证每个DHTuple零知识证明的有效性,以及通过公式验证PK=Q1+Q2+…+Qn。则当验证通过后,可以继续执行后续S603的步骤,否则当上述任一验证不通过时,不会继续执行后续S603的步骤。
也就是说,当每个参与方设备提供的Qi,Ri等用于解密参数都准确时,n个参与方设备可以共同准确地对第一电子设备的数据进行解密,保证解密成功;而当n个参与方设备中任意一个或多个参与方设备提供的Qi,Ri等解密参数不准确时,n个参与方设备可能无法准确对第一电子设备接收到的数据进行解密,故在S601确定解密参数之后、在S603实际对数据进行解密之前,本实施例中目标参与方设备还对确定的解密参数进行验证,只有在验证通过保证解密参数准确的情况下,才进行后续的解密步骤。
S603:若验证通过,目标参与方设备根据多个解密参数,对第一电子设备接收到的数据进行解密。
具体地,若目标参与方设备在S602中对所得到的解密参数进行验证通过后,可以通过如下具体的公式对第一电子设备接收到的数据密文C进行解密。其中,通过公式R=R1+R2+…+Rt=(x1,y1)计算参数x1、y1和R,通过公式e=KDF(x1||y1||parameters)计算参数e。随后通过公式M’=C2XORe计算M’。最终,通过公式C3’=Hash(x1||M||y1)计算C3’。若C3’=C3,那么M’是正确的明文,输出M’。否则,输出False。从而完成对第一电子设备接收到的数据密文C进行解密得到加密签的数据data。
实施例七
在上述实施例一到实施例三中,提供的是通过去中心化的“t-n”方式进行的门限签名、门限解密的方式,而本申请实施例七中,还提供一种中心化的门限签名、门限解密的方法。其中,在n个参与方设备中的t个参与方设备共同对第三电子设备发送给第一电子设备的数据进行门限解密、n个参与方设备中的t个参与方设备共同对第一电子设备向第二电子设备发送的数据进行门限签名的这些场景中,均可以设置一个中心节点设备D,用于生成第一电子设备的公钥。
具体地,中心节点设备D具体通过随机选取总私钥SK,并计算总公钥PK=SK*G后,公开PK。中心节点设备D还随机选取t-1次多项式p(x),计算p(ID1),p(ID2),…,p(IDt),将p(IDi)发送给Pi
可选地,在本实施例七中,当中心节点设备D生成了第一电子设备的公钥以及私钥分片后,后续即可实现n个参与方设备中的t个参与方设备共同对第三电子设备发送给第一电子设备的数据进行门限解密、n个参与方设备中的t个参与方设备共同对第一电子设备向第二电子设备发送的数据进行门限签名,上述这些方法的实现与实施例二和实施例三相同,不再赘述。
实施例八
在上述实施例四到实施例六中,提供的是通过去中心化的“n-n”方式进行的门限签名、门限解密的方式,而本申请实施例八中,还提供一种中心化的门限签名、门限解密的方法。其中,在n个参与方设备中共同对第三电子设备发送给第一电子设备的数据进行门限解密、n个参与方设备中共同对第一电子设备向第二电子设备发送的数据进行门限签名的这些场景中,均可以设置一个中心节点设备D,用于生成第一电子设备的公钥。
具体地,中心节点设备D具体通过随机选取总私钥SK,并计算总公钥PK=SK*G后,公开PK。中心节点设备D还随机选取n-1个随机数sk1,sk2,…,skn-1,计算skn=sk–(sk1+sk2+…+skn-1),中心节点将ski发送给Pi
可选地,在本实施例八中,当中心节点设备D生成了第一电子设备的公钥以及私钥分片后,后续即可实现n个参与方设备共同对第三电子设备发送给第一电子设备的数据进行门限解密、n个参与方设备共同对第一电子设备向第二电子设备发送的数据进行门限签名,上述这些方法的实现与实施例五和实施例六相同,不再赘述。
在前述实施例中,对本申请实施例提供的方法进行了介绍,而为了实现上述本申请实施例提供的各方法中的各功能,作为执行主体的目标参与方设备可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
例如,图7为本申请提供的数据传输装置一实施例的结构示意图,如图7所示的装置可以是本申请前述任一实施例中的目标参与方设备,并执行目标参与方设备所执行的功能。其中,该数据传输装置700包括:确定模块701,验证模块702和处理模块703。
示例性地,当如图7所示的数据传输装置作为目标参与方设备,并执行本申请实施例一中的方法时,确定模块701用于接收其他n-1个参与方设备发送的公钥计算参数;其中,公钥计算参数用于计算第一电子设备的公钥,根据所接收到的n-1个公钥计算参数以及自身的1个公钥计算参数,计算得到第一电子设备的公钥;验证模块702用于对第一电子设备的公钥进行验证;处理模块703用于若验证模块验证通过,输出第一电子设备的公钥。
可选地,当公钥计算参数包括:第一承诺信息;确定模块701具体用于,从所接收到的n-1个第一承诺信息以及自身的1个第一承诺信息中的随机选择t个第一承诺信息,计算得到第一电子设备的待验证公钥,并重复多次得到多个待验证公钥;验证模块702具体用于,验证多个待验证公钥是否相同;其中,当多个待验证公钥都相同时,验证通过,并由确定模块确定第一电子设备的公钥为多个待验证公钥中的任一个。
可选地,确定模块701具体用于,确定私钥分片,并将所确定的私钥分片发送至其他n-1个参与方设备;接收其他n-1个参与方设备发送的私钥分片;将所接收到的n-1个私钥分片以及自身所确定的1个私钥分片相加得到联合分片;根据联合分片和椭圆曲线的基点,确定第一承诺信息,并将所确定的第一承诺信息发送至其他n-1个参与方设备;接收其他n-1个参与方设备发送的第一承诺信息,其他n-1个参与方设备计算第一承诺信息的方式与目标参与方设备相同。
又例如,当如图7所示的数据传输装置作为目标参与方设备,并执行本申请实施例二中的方法时,确定模块701用于确定至少两个签名参数;其中,至少两个签名参数用于得到第一电子设备的签名信息;验证模块702还用于,对至少两个签名参数进行验证;处理模块703还用于,若验证模块702验证通过,根据至少两个签名参数,计算得到第一电子设备的签名信息。
可选地,确定模块701具体用于,计算参数M、参数N、参数L、参数R和参数sign_ski;其中,t≤n,参数M为t个参与方设备提供的参数Mi之和,Mi由t个参与方设备中的第i个参与方设备通过公式Mi=roi*G计算得到,G为椭圆曲线的基点,roi为随机数;参数R为t个参与方设备提供的参数Ri之和,Ri由t个参与方设备中的第i个参与方设备通过公式Ri=ki*G计算得到;参数N为t个参与方设备提供的参数Ni之和,Ni由t个参与方设备中的第i个参与方设备通过公式Ni=roi*PK计算得到,PK为第一电子设备的公钥;参数L为t个参与方设备提供的参数Li之和,Li=roi*R;参数sign_ski通过公式sign_ski=lambdai*p(IDi)计算得到,其中,lambdai由t个参与方设备的ID得到;以参数roi和参数1/t+sign_ski(mod q)作为第一次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数wi后,将计算得到的wi发送给t个参与方设备中的其他t-1个参与方设备;以参数roi和ki–r*sign_ski(mod q)作为第二次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数vi后,将计算得到的vi发送给t个参与方设备中的其他t-1个参与方设备;r为第一电子设备的签名sigma=[r,s]的第一部分;接收t个参与方设备中其他t-1个参与方设备发送的参数wi,并将所接收到的t-1个参数wi以及自身所确定的1个参数wi计算得到签名参数Beta;接收t个参与方设备中其他t-1个参与方设备发送的参数vi,并将所接收到的t-1个参数vi以及自身所确定的1个参数vi计算得到签名参数Tao。
可选地,验证模块702具体用于,目标参与方设备验证公式Beta*G=M+N和公式Tao*G=L–r*N是否成立;其中,若公式均成立,则验证通过。
可选地,处理模块703具体用于,备通过公式r=e+x1(mod q)计算第一电子设备的签名sigma=[r,s]的第一部分r,其中,e=Hash(message||Z),message为消息,Z为公开字符串;通过公式s=Tao/Beta计算第一电子设备的签名sigma=[r,s]的第二部分s;根据第一部分r和第二部分s得到第一电子设备的签名sigma=[r,s]。
当如图7所示的数据传输装置作为目标参与方设备,并执行本申请实施例三中的方法时,确定模块701还用于,确定多个解密参数;其中,解密参数用于对第一电子设备接收到的数据进行解密;验证模块702还用于,对多个解密参数进行验证;处理模块703还用于,根据多个解密参数,对第一电子设备接收到的数据进行解密。
可选地,确定模块701具体用于,计算参数Ri、参数Qi和参数proofi;其中,参数Ri=decrypt_ski*C1,decrypt_ski=lambdai*p(IDi),IDi用于表示t个参与方设备中的第i个参与方设备的ID,拉格朗日系数lambdai由t个参与方设备的ID得到;参数Qi=decrypt_sk_i*G,G为椭圆曲线的基点;参数proof_i为参与方设备Pi计算G,Qi,C1,Ri的DH Tuple零知识证明;C1为第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第一部分;将参数Ri、参数Qi和参数proofi发送给其他t-1个参与方设备;接收其他t-1个参与方设备发送的参数Ri、参数Qi和参数proofi,结合目标参与方的参数Ri、参数Qi和参数proofi,得到t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt作为多个解密参数。
可选地,验证模块702具体用于,对所有t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt的正确性进行验证,对所有t个参与方设备的解密参数proof1,proof2,…,prooft的DHTuple零知识证明有效性进行验证,以及验证公式PK=Q1+Q2+…+Qt是否成立;其中,当正确性、有效性以及公式均成立时,则验证通过。
可选地,处理模块703具体用于,通过公式R=R1+R2+…+Rt=(x1,y1)计算参数x1和y1,并通过公式e=KDF(x1||y1||parameters)计算参数e,其中parameters为公开参数,KDF是密钥生成函数;通过公式M’=C2 XOR e计算待验证明文数据M’;其中,C2为第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第二部分;根据公式C3’=Hash(x1||M||y1)计算参数C3’,并判断C3’是否与C3相等,其中,C3为第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第三部分;确定C3’=C3时,确定输出明文数据M’。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,确定模块、验证模块以及处理模块均可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上确定模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
图8为本申请提供的电子设备一实施例的结构示意图,该电子设备可作为本申请前述实施例中任一所述的目标参与方设备,并执行目标参与方设备所执行的方法。如图8所示,该通信装置1100可以包括:处理器111(例如CPU)、收发器113;其中,收发器113耦合至处理器111,处理器111控制收发器113的收发动作。可选的,所述通信装置1100还包括存储器112,存储器112中可以存储各种指令,以用于完成各种处理功能以及实现本申请实施例中目标参与方设备执行的方法步骤。
可选的,本申请实施例涉及的电子设备还可以包括:电源114、系统总线115以及通信接口116。收发器113可以集成在电子设备的收发信机中,也可以为电子设备上独立的收发天线。系统总线115用于实现元件之间的通信连接。上述通信接口116用于实现电子设备与其他外设之间进行连接通信。
在本申请实施例中,上述处理器111用于与存储器112耦合,读取并执行存储器112中的指令,以实现上述方法实施例中目标参与方设备执行的方法步骤。收发器113与处理器111耦合,由处理器111控制收发器113进行消息收发,其实现原理和技术效果类似,在此不再赘述。
该图8中提到的系统总线可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含RAM,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
该图8中提到的处理器可以是通用处理器,包括中央处理器CPU、网络处理器(network processor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选的,本申请实施例还提供一种可读存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如本申请前述任一实施例中由目标参与方设备所执行的方法。
可选的,本申请实施例还提供一种运行指令的芯片,所述芯片用于执行如本申请前述任一实施例中由目标参与方设备所执行的方法。
本申请实施例还提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在存储介质中,至少一个处理器可以从所述存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序时可实现如本申请前述任一实施例中由目标参与方设备所执行的方法。
在本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中,a,b,c可以是单个,也可以是多个。同时,在本申请实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围。并且,在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
此外,为了对本申请提供的各实施例进行更为详细的说明,下面以举例的方式,增加对本申请前述各实施例进行更细致的解释,可用于对照并解释本申请前述的各实施例。
其中,几个概念可以表示为多方乘法协议:t各参与方P1,P2,…,Pt执行多方乘法协议,Pi的输入{a_i,b_i}执行乘法协议,各自得到输出c_i,满足c_1+c_2+…+c_t=(a_1+a_2+…+a_t)*(b_1+b_2+…+b_t)。离散对数零知识证明:证明者P在不暴露k的情况下,能够向验证者证明P知道R=k*G的k。DH tuple零知识证明:证明者P在不暴露w的情况下,能够向验证者证明{G,P,U,V}满足P=w*G,V=w*G。
本申请基于多方乘法协议(可以但不限于基于OTe多方乘法协议和基于同态加密的多方乘法协议)设计出安全高效的门限SM2公钥签名算法和门限SM2公钥加密算法。可以应用于设备协同认证、联合支付、匿名投票、设备协同解密和敏感数据备份与恢复等场景。可用于手机、IoT设备、电脑和服务器等设备。
将本申请前述各实施例中提供的要点可以简要概括为:
1,验证总公钥和第一私钥分片的正确性。具体如下:(1)第一私钥分片是总私钥的t-n秘密分享分片。(2)每个参与方计算自己第一私钥分片和和椭圆曲线基点的乘积得到第一承诺,并将此承诺广播给其他参与方。每个参与方收集到自己的第一承诺和其他参和方发送过来的第一承诺。(3)随机选取t个第一承诺,并利用这t个第一承诺对应参与方的身份标识计算一组拉格朗日插值系数(含有t个数字),利用这t个第一承诺和这组拉格朗日插值系数对应相乘再相加得到一个验证公钥。重复上述过程,得到多个验证公钥。如果所有验证公钥都相等,则验证通过,即说明各方的第一私钥分片都是正确的,并且验证公钥即为正确的总公钥。否则,终止协议。
2,执行两次多方乘法协议生成第一乘法值和第二乘法值,通过第二乘法值除以第一乘法值得到签名的第二部分。具体如下:(1)这t个参与方将第一私钥分片转变为总私钥的得到第二私钥分片,第二私钥分片为总私钥的加法分片。具体来说,各个参与方利用利用t个参与方的身份标识计算出属于其自己的拉格朗日插值系数,将属于自己的拉格朗日插值系数与自己的第一私钥分片相乘得到第二私钥分片。(2)在执行第一次乘法协议时,各参与方计算t的逆元,计算t的逆元和第二私钥分片相加得到第一乘法输分片,选取第一随机数,各个参与方以第一随机数和第一乘法输入分片执行第一次多方乘法协议,得到第一乘法值分片。各个参与方将第一乘法值分片发送给签名聚合者(签名聚合者可以是一个参与方,也可以是多个参与方,并且签名聚合者可以是这t个参与方中的参与方,也可以是这t个参与方之外的参与方)。签名聚合者将收集到的t第一乘法值分片相加得到第一乘法值。(3)在执行第二乘法协议时,各个参与方利用已经获得的签名第一部分、在生成签名第一部分选的第二随机数和第二私钥分片计算得到第二乘法输入分片。各个参与方以第一随机数和第二乘法输入分片执行第二次多方乘法协议,得到第二乘法值分片。各个参与方将第二乘法值分片发送给签名聚合者将收集到的t个第二乘法值分片相加得到第二乘法值。(4)签名聚合者计算第二乘法值除以第一乘法值,得到签名第二部分。
3,通过离散对数零知识证明和DH Tuple零知识证明,证明两次多方乘法值正确性。具体来说,设t个参与方欲产生签名。不妨设这t个参与方是P1,P2,…,Pt,他们的身份标识是ID1,ID2,…,IDt。(1)各个参与方在生成签名第一部分时,已经利用第二随机数和椭圆曲线点乘计算出承诺,并将这些承诺叠加得到第二承诺。(2)各个参与方计算第一随机数和椭圆曲线基点相乘得到第三承诺,并计算第三承诺的离散对数零知识证明。各参与方计算第一随机数和总公钥的点乘得到第四承诺,并利用第一随机数计算第三承诺与第四承诺的DH tuple零知识证明。各参与方计算第一随机数和第二承诺的点乘得到第五承诺,并利用第一随机数计算第三承诺与第五承诺的DH tuple零知识证明。将第三承诺、第四承诺、第五承诺和所有零知识证明广播给其他参与方。不失一般性,设第六、第七、第八承诺分别为M,N,L,第一乘法值为Beta,第二乘法值为Tao,椭圆曲线基点为G,签名第一部分为r。如果下面等式成立,则说明两个乘法输出值都是正确的。Beta*G=M+NTao*G=L–r*N
4,在门限SM2公钥加密方案中的解密阶段,利用离散对数零知识证明和DH Tuple零知识证明验证解密分片正确性。不妨设参与解密的参与方是P1,P2,…,Pt,他们的身份标识为ID1,ID2,…,IDt,具体过程如下:(1)在启动阶段,各个参与方利用ID1,ID2,…,IDt计算出t个拉格朗日插值系数,并利用这t个拉格朗日插值系数和收集到的来自P1,P2,…,Pt的t个第一承诺对影相乘,得到t个第九承诺。(2)各个参与方计算第二私钥分片与密文第一部分的点乘得到第十承诺,并利用第二私钥分片、第九承诺和第十承诺计算DH tuple零知识证明。之后,将第九承诺、第十承诺和DH tuple零知识证明发送给解密者(解密者可以是t个参与方中的某个参与方,也可以是t各参与方以外的某个节点或设备)。(3)解密者在得到所有t个第九承诺、t个第十承诺和t个DH tuple灵芝只证明,验证DH tuple零知识证明的有效性。如果验证通过,则说明所有第十承诺都是正确的,并继续协议。否则,终止协议。(4)叠加通过验证的第十承诺得到解密承诺。利用解密承诺和公开参数计算出解密字符串,将解密字符串与密文第二部分进行逐比特疑惑运算,得到明文。如果明文和解密承诺计算的哈希值等于密文第三部分,则明文是正确的。否则,明文是错误的。
则对于进行门限SM2签名计算的参与方设备,各参与方包含的模块:公私钥生成模块、验证模块、零知识证明模块、多方乘法模块。(1)公私钥对生成模块:产生公钥和私钥。(2)零知识证明模块:计算和验证零知识证明。(3)验证模块:验证接收数据的正确性。(4)分片计算模块:各个参与方利用自己选取的随机数和私钥分片联合计算。
则对于进行门限SM2加密计算的参与方设备,各参与方包含的模块:加密密钥生成模块、加密模块、解密密钥生成模块、解密模块。(1)加密密钥生成模块:利用解密方的多个公钥生成加密密钥。(2)加密模块:用加密密钥加密数据。(3)解密密钥生成模块:多个解密方利用各自私钥和密文中的辅助数据生成解密密钥。(4)解密模块:利用解密密钥解密密文。(5)验证模块:结合零知识证明和验证算法判断发送者提供数据的诚实性。
在一种具体的实现中,为了实现门限SM2签名算法,系统中含的角色:n个参与方,其中t个参与方可以产生有效签名(t可以是小于等于n的任意数字)。参与方可以是手机、人或其他具有签名能力的电子设备。总公钥、总私钥和总私钥分片可以由n各参与方联合生成,也可由中心化节点生成之后发送给n个参与方。
系统包含两个阶段:启动阶段和签名阶段。在启动阶段,n个参与方联合生成总公钥;在签名阶段,n个参与方中的t个参与方可以联合产生数字签名,且此数字签名能够被总公钥验证。
可替代方案:(1)本申请可以是去中心化方案,也可以是中心化方案。这两种情况的主要区别在于启动阶段。下面介绍的是去中心化方案的工作流程。对于中心化方案,只需将启动阶段改为由中心化节点产生总私钥、总私钥分片和总公钥,并将总私钥分片分发给参与方。(2)如果是n-n门限签名(或加密)方案,可以用总私钥的加法分片代替n-n门限Shamir秘密分享的分片。这两类分片对于n-n门限方案效果相同。(3)为便于理解算法工作流程,下面介绍的签名阶段流程中,剩掉了产生零知识证明和承诺的细节。相应的零知识证明、承诺以及利用承诺验证中间数据的过程在后续实施例中给出详细介绍。本申请可以根据实际使用的需求,调整零知识证明和承诺使用的数量,在安全性和性能之间寻求平衡。
在启动阶段,(1)各方随机选取t-1次多项式,且常数项作为自己的第一私钥分片setup_sk_i。(2)各方基于自己选取的多项式和所有参与方的ID为所有参与方计算分享分片,并把分享分片发送给对应的参与方。(3)当收到所有参与方发送过来的分享分片之后,将这些分享分片相加得到总私钥分片,并计算总私钥分片与椭圆曲线基点的点乘得到第一承诺,并将第一承诺广播给其他参与方。(4)当收集到所有参与方广播的第一承诺之后,利用多组t个参与方ID产生拉格朗日系数,利用这些拉格朗日系数和对应第一承诺计算得到总公钥。如果每组ID计算出来的公钥都相同,则公钥是有效的,并输出公钥。否则,终止协议。
在签名阶段,(1)t个参与方参与签名阶段,不妨设这t个参与方为P1,P2,…,Pt。每个参与方利用他们的t个ID计算属于自己的拉格朗日系数lgr_i,并计算第二私钥分片sk_i=lgr_i*setup_sk_i。(2)各方随机选取随机数k_i,计算R_i=k_i*G,将R_i广播给其他参与方。(3)收到所有参与方广播的R_i之后,计算R=R_1+R_2+…+R_t=(x1,y1)。根据SM2签名算法,利用消息M、公开参数和x1计算出r。(4)各自选择随机数ro_i,分别以{ro_i,1/t+sk_i}和{ro_i,k_i–r*sk_i}为输入执行两次多方乘法协议得到两个加法分片beta_i和tao_i,
满足beta_1+beta_2+…+beta_t=ro*(sk+1)和tao_1+tao_2+…+tao_t=ro*(k–r*sk)。(5)每个参与方将自己的beta_i和tao_i发送给聚合者(聚合者可以是某个参与方,也可以是所有参与方以外的人),聚合者计算Beta=beta_1+beta_2+…+beta_t,Tao=tao_1+tao_2+…+tao_t,计算s=1/beta*tao,合成签名sig={r,s},利用pk和SM2签名验证算法验证sig的有效性,如果验证通过,则输出sig,否则终止协议。
在一种具体的实现中,为了实现门限SM2加密算法,系统中含的角色:加密者、解密者和n个参与方,其中t个参与方可以联合完成解密(t可以是小于等于n的任意数字)。在本文中,我们以加密者和解密者是n个参与方中的成员为例介绍方案工作流程,但实际上加密者和解密者可以是n个参与方以外的人或设备,具体情况可以根据实际应用进行调整。参与方可以是手机、人或其他具有签名能力的电子设备。总公钥、总私钥和总私钥分片可以由n各参与方联合生成,也可由中心化节点生成之后发送给n个参与方。
系统包含两个阶段:启动阶段、加密阶段和解密阶段。在启动阶段,n个参与方联合生成总公钥;在签名阶段,n个参与方中的t个参与方可以联合产生数字签名,且此数字签名能够被总公钥验证。
可替代方案:(1)本申请可以是去中心化方案,也可根据需要调整为中心化方案。这两种情况的主要区别在于启动阶段。下面介绍的是去中心化方案的工作流程。对于中心化方案,只需将启动阶段改为由中心化节点产生总私钥、总私钥分片和总公钥,并将总私钥分片分发给参与方。(2)如果是n-n门限加密方案,可以用总私钥的加法分片代替n-n门限Shamir秘密分享的分片。这两类分片对于n-n门限方案的门限效果相同,但对于启动阶段的性能有显著区别,即基于加法分片的启动阶段的计算复杂度和通信复杂度明显小于基于Shamir秘密分享的启动阶段。(3)为便于理解算法工作流程,下面介绍的流程中,剩掉了产生零知识证明和承诺的细节。相应的零知识证明、承诺以及利用承诺验证中间数据的过程在后续实施例中给出详细介绍。本申请可以根据实际使用的需求,调整零知识证明和承诺使用的数量,在安全性和性能之间寻求平衡。
在启动阶段,(1)各方随机选取t-1次多项式,且常数项作为自己的第一私钥分片setup_sk_i。(2)各方基于自己选取的多项式和所有参与方的ID为所有参与方计算分享分片,并把分享分片发送给对应的参与方。(3)当收到所有参与方发送过来的分享分片之后,将这些分享分片相加得到总私钥分片,并计算总私钥分片与椭圆曲线基点的点乘得到第一承诺,并将第一承诺广播给其他参与方。(4)当收集到所有参与方广播的第一承诺之后,利用多组t个参与方ID产生拉格朗日系数,利用这些拉格朗日系数和对应第一承诺计算得到总公钥。如果每组ID计算出来的公钥都相同,则公钥是有效的,并输出公钥。否则,终止协议。
在加密阶段,(1)加密者使用解密者的多个公钥生成总公钥,利用总公钥对明文进行加密得到密文。得到密文C={C1,C2,C3}。
在解密阶段,(1)t个参与方参与解密阶段,不妨设这t个参与方为P1,P2,…,Pt。每个参与方利用他们的t个ID计算属于自己的拉格朗日系数lgr_i,并计算第二私钥分片sk_i=lgr_i*setup_sk_i。(2)参与方利用sk_i和C1计算R_i=sk_i*C1,将R_i发送给聚合者(聚合者可以是某个参与方,也可以是所有参与方以外的人)。(3)聚合者将接收到的R_1,R_2,…,R_t叠加得到R=R_1+R_2+…+R_t。聚合者利用SM2加密算法指定的函数,利用R和公开参数计算出e。计算e和C2的异或得到明文M。(4)聚合者利用R和M计算哈希值,如果此哈希值等于C3,则说明M为有效明文。否则,则说明本次解密出现错误(可能密文被篡改过,可能某个参与方提供了错误数据、可能密文本身有错误等)。
更为具体地,在SM2门限签名的一种具体实现中,设所有参与方为P1,P2,…,Pn,任何t个参与方(t小于等于n)可以联合产生门限签名sigma=(r,s)。不妨设参与产生门限签名的参与方是P1,P2,…,Pt,他们的ID是ID1,ID2,…,IDt。G为椭圆曲线循环群的生成元,被称为椭圆曲线的基点。q是G的阶,q*G等于无穷远点O,满足O+P=P,其中P是椭圆曲线循环群中任何点。0<k<q,k*P表示椭圆曲线点乘。
则在1,启动阶段,(1)各方获取启动阶段的私钥setup_sk_i。各参与方都随机选取一个t-1次多项式fi(x),多项式的常数项为Pi选取的setup_sk_i,即fi(0)=setup_ski。ID1,ID2,…,IDn是n个参与方的ID。Pi利用n个参与方的ID计算n个分片,即fi(ID1),fi(ID2),…,fi(IDn),并把fi(IDj)发送给Pj。每个人都收到n个分片之后(包括自己为自己计算的分片),将这些分片相加,得到一个联合分片p(IDi)=f1(IDi)+f2(IDi)+…+fn(IDi),由于每个fi(x)都是由参与方Pi选取的t-1次多项式,所以p(x)也是一个t-1多项式。Pi计算Ti=p(IDi)*G,并将Ti发送给其他参与方。(2)当收集到n个T1,T2,…,Tn时(包括自己产生的Ti),利用ID1,ID2,…,IDt计算得到拉格朗日系数m11,m12,…,m1t。计算PK1=m11*T1+m12*T2+…,+m1t*Tt。利用ID2,ID3,…,IDt+1计算得到拉格朗日系数m21,m22,…,m2t。计算PK2=m21*T2+m22*T3+…,+m2t*Tt+1。以此类推,利用IDn-t+1,IDn-t+2,…,IDn计算得到PKn-t+1。如果PK1=PK2=…=PKn-t+1,则令PK=PK1。否则,终止协议。本过程Pi输出:p(IDi),PK。
在2,签名阶段,设t个参与方欲产生签名sigma=(r,s)。不妨设他们是前t个参与方,他们的ID是ID1,ID2,…,IDt。a)Pi随机选择roi,计算Mi=roi*G,计算Mi的离散对数零知识证明。计算Mi和Mi的离散对数零知识证明的承诺,并将此承诺广播给其他参与方。当每个参与方都收集到所有参与方广播的承诺之后,Pi将Mi和Mi的离散对数零知识证明发送给其他参与方。当Pi收集到M1,M2,…,Mt(包括自己产生的Mi)和相应的零知识证明之后,验证与之前收到的承诺是否一致以及所有零知识证明的有效性。如果验证都有效,则继续执行协议。计算M=M1+M2+…+Mt。b)Pi随机选择ki,各自计算Ri=ki*G,计算Ri的离散对数零知识证明,计算Ri和Ri的离散对数零知识证明的承诺,并将此承诺广播给其他参与方。当每个参与方都收集到所有参与方广播的承诺之后,Pi将Ri和Ri的离散对数零知识证明发送给其他参与方。当Pi收到R1,R2,…,Rt(包括自己产生的Ri)和相应的零知识证明之后,验证与之前收到的承诺是否一致以及所有零知识证明的有效性。如果验证都有效,则继续执行协议。计算出R=R1+…+Rt。注:R=k*G,k=k1+…+kt(mod q)。R=(x1,y1),Pi提取x1。计算e=Hash(message||Z),其中message为消息,Z为某个公开字符串。将e转化为整数类型。计算r=e+x1(mod q)。c)Pi计算Ni=roi*PK,计算Mi,PK,Ni的DH Tuple零知识证明proof_Mi_PK_Ni_DH。将Mi,Ni和proof_Mi_PK_Ni_DH发送给其他参与方。若所有proof_Mi_PK_Ni_DH验证通过,则继续。计算N=N1+N2+…+Ntd)Pi计算Li=roi*R,并计算{G,Mi,R,Li}的DH tuple零知识证明proof_Mi_R_Li_DH,将Li和相应的proof_Mi_R_Li_DH发送给其他参与方。若所有proof_Mi_R_Li_DH验证通过,则继续。计算L=L1+L2+…+Lt
e)各方利用ID1,ID2,…,IDt计算自己的拉格朗日系数,lambdai,计算sign_ski=lambdai*p(IDi)(mod q)。
f)执行两次多方乘法协议,计算Beta和Tao(Beta=ro*(1+sk),Tao=ro*(k–r*sk)),第一次多方乘法协议:Pi(i=1,2,…,t)以roi和1/t+sign_ski(mod q)为多方乘法协议的输入,乘法协议Pi得到的输出是wi。Pi向其他参与方发送wi。q是椭圆曲线基点G的阶。收集到w1,w2,…,wt之后,Pi计算Beta=w1+w2+…+wt(mod q)。第二次多方乘法协议:Pi以roi和ki–r*sign_ski(mod q)为多方乘法协议的输入,乘法协议Pi得到的输出是vi。Pi向其他参与方发送vi。收集到v1,v2,…,vt之后,Pi计算Tao=v1+v2+…+vt(mod q)。注意,此处Beta=ro*(1+sk)(mod q),Tao=ro*(k–r*sk)(mod q)。g)验证过程若以下验证的等式都成立,则验证通过。否则终止协议。Beta*G=M+N和Tao*G=L–r*N。若通过验证,则继续执行协议。否则,终止协议。h)输出签名sigma。计算s=Tao/Beta(mod q),令sigma=[r,s]。用SM2公钥签名算法、消息message和PK验证sigma的有效性,若sigma有效,则输出sigma。
则在本实施例中,实现了(1)在启动阶段,通过使用总私钥分片的椭圆曲线点乘承诺和拉格朗日插值系数解决私钥分片和总公钥正确性问题。具体来说,每个参与方计算总私钥分片的椭圆曲线点乘承诺,并将其广播给其他参与方。每个参与方在收到n-1来自其他参与方发送过来的承诺之后,利用拉格朗日插值系数和这些承诺能够验证是否任意t个承诺都可以利用拉格朗日插值系数组合出相同的总公钥,如果验证通过,则继续。否则,终止协议。通过上述过程,如果通过验证,则说明各参与方手中的总私钥分片是正确的,并且总公钥也是正确的。否则,有可能因为某个参与方提供错误私钥分片导致其他参与方得到错误的总私钥分片,并无法得到正确的总公钥。(2)通过结合离散对数零知识证明、DH tuple零知识证明和椭圆曲线点乘承诺解决协议过程中中间数的正确性。通过本方法,如果验证通过则说明本阶段的中间结果是正确的,并且各个参与方为此中间结果提供的数据也是正确的。否则,存在提供错误数据的情况,并且能够确定是哪个参与方提供了错误数据。(3)通过设计使得两次多方乘法协议可以并行执行。原因是,在本申请中,任何一个多方乘法协议的输出都与另一个多方乘法协议的输入无关。由于多方乘法协议的通信量和通信轮数较多,所以如果能够并行执行多方乘法协议,那么将会显著提升算法效率。尤其是,(1)在启动阶段,通过使用总私钥分片的椭圆曲线点乘承诺和拉格朗日插值系数解决私钥分片和总公钥正确性问题。而现有技术中,关于总分片和总公钥的正确性验证是缺失或不足的。(2)通过结合离散对数零知识证明、DH tuple零知识证明和椭圆曲线点乘承诺解决算法中间数据正确性,和各个参与方为此中间数据提供的数据的正确性的问题。而现有技术中,关于中间数据正确性和中间数据相关分片正确性验证的工作是缺失或不足的。(3)通过设计实现两次多方乘法协议可并行执行。而现有技术中,两次多方乘法协议只能串行执行,一定程度上限制了他们算法的性能。
在一种具体的实现中,为了实现门限SM2解密算法,设所有参与方为P1,P2,…,Pn。t个参与方(t小于等于n)可以完成解密,少于t个参与方无法解密。不妨设这t个参与方是P1,P2,…,Pt,他们的ID是ID1,ID2,…,IDt。负责解密出消息的人可以是P1,P2,…,Pt之中的一个人或多个人,只要把需要给解密者的信息重复的发送给多个人,即可实现多人具有解密出消息M的能力。设某个用户P0是P1,P2,…,Pt中的一个参与方。下面以P0为例,介绍P0解密C得到明文M的过程如下:
在1,启动阶段,(1)各方获取启动阶段的私钥setup_sk_i。各参与方都随机选取一个t-1次多项式fi(x),多项式的常数项为Pi选取的setup_sk_i,即fi(0)=setup_ski。ID1,ID2,…,IDn是n个参与方的ID。Pi利用n个参与方的ID计算n个分片,即fi(ID1),fi(ID2),…,fi(IDn),并把fi(IDj)发送给Pj。每个人都收到n个分片之后(包括自己为自己计算的分片),将这些分片相加,得到一个联合分片p(IDi)=f1(IDi)+f2(IDi)+…+fn(IDi),由于每个fi(x)都是由参与方Pi选取的t-1次多项式,所以p(x)也是一个t-1多项式。Pi计算Ti=p(IDi)*G,并将Ti发送给其他参与方。(2)当收集到n个T1,T2,…,Tn时(包括自己产生的Ti),利用ID1,ID2,…,IDt计算得到拉格朗日系数m11,m12,…,m1t。计算PK1=m11*T1+m12*T2+…,+m1t*Tt。利用ID2,ID3,…,IDt+1计算得到拉格朗日系数m21,m22,…,m2t。计算PK2=m21*T2+m22*T3+…,+m2t*Tt+1。以此类推,利用IDn-t+1,IDn-t+2,…,IDn计算得到PKn-t+1。如果PK1=PK2=…=PKn-t+1,则令PK=PK1。否则,终止协议。本过程Pi输出:p(IDi),PK。
在2,加密阶段,数据持有人利用公钥PK对数据M进行加密,加密的方式与SM2公钥加密算法一致。过程如下:(1)选择一个随机数k,计算C1=k*G,其中G是椭圆曲线基点。(2)(x1,y1)=k*PK。计算e=KDF(x1||y1||parameters),其中KDF是密钥生成函数,可以用哈希函数替代,另外parameters是公开参数。(3)计算C2=data XOR e。(4)C3=Hash(x1||M||y1)。(5)设置密文C={C1||C2||C3}。
在3,解密阶段,a)每个参与方Pi利用ID1,ID2,…,IDt计算自己的拉格朗日系数lambdai,计算decrypt_ski=lambdai*p(IDi)。b)在C中提取C1,Pi计算Ri=decrypt_ski*C1,并计算Qi=decrypt_sk_i*G。Pi计算G,Qi,C1,Ri的DH Tuple零知识证明proof_i。计算Qi,Ri和proofi的承诺,并将此承诺广播给其他所有参与方。当每个参与方都收集到所有其他t-1个参与方的承诺之后,每个参与方Pi将Qi,Ri和proofi发送给P0。c)当P0收集到所有R1,R2,…,Rt,Q1,Q2,…,Qt和proof1,proof2,…,prooft之后验证之前收到的承诺的正确性,并验证每个零知识证明的有效性,且验证PK=Q1+Q2+…+Qt。如果所有验证都通过,则继续协议。如果任何proofi无法通过验证,则说明Pi提供了错误数据,并终止协议。d)计算R=R1+R2+…+Rt=(x1,y1),e=KDF(x1||y1||parameters)。e)计算M’=C2 XOR e。f)计算C3’=Hash(x1||M||y1)。若C3’=C3,那么M’是正确的明文,输出M’。否则,输出False。
则在本实施例中,实现了(1)在启动阶段,通过使用总私钥分片的椭圆曲线点乘承诺和拉格朗日插值系数解决私钥分片和总公钥正确性问题。而现有技术中,关于总分片和总公钥的正确性验证是缺失或不足的。(2)通过结合离散对数零知识证明、DH tuple零知识证明和椭圆曲线点乘承诺解决算法中间数据正确性,和各个参与方为此中间数据提供的数据的正确性的问题。而现有技术中,关于中间数据正确性和中间数据相关分片正确性验证的工作是缺失或不足的。尤其是(1)在启动阶段,通过使用总私钥分片的椭圆曲线点乘承诺和拉格朗日插值系数解决私钥分片和总公钥正确性问题。而现有技术中,关于总分片和总公钥的正确性验证是缺失或不足的。(2)通过结合离散对数零知识证明、DH tuple零知识证明和椭圆曲线点乘承诺解决算法中间数据正确性,和各个参与方为此中间数据提供的数据的正确性的问题。而现有技术中,关于中间数据正确性和中间数据相关分片正确性验证的工作是缺失或不足的。
在另一种具体的实现方式中,1、验证总公钥和第一私钥分片的正确性。具体总结如下:1.1:第一私钥分片是总私钥的t-n秘密分享分片。1.2:总公钥是总私钥对应的公钥。1.3:每个参与方计算自己第一私钥分片和和椭圆曲线基点的乘积得到第一承诺,并将此承诺广播给其他参与方。每个参与方收集到自己的第一承诺和其他参和方发送过来的第一承诺。1.4:随机选取t个第一承诺,并利用这t个第一承诺对应参与方的身份标识计算一组拉格朗日插值系数(含有t个数字),利用这t个第一承诺和这组拉格朗日插值系数对应相乘再相加得到一个验证公钥。重复上述过程,得到多个验证公钥。如果所有验证公钥都相等,则验证通过,即说明各方的第一私钥分片都是正确的,并且验证公钥即为正确的总公钥。否则,终止协议。
2、执行两次多方乘法协议生成第一乘法值和第二乘法值,通过第二乘法值除以第一乘法值得到签名的第二部分。具体如下:2.1:这t个参与方将第一私钥分片转变为总私钥的得到第二私钥分片,第二私钥分片为总私钥的加法分片。具体来说,各个参与方利用利用t个参与方的身份标识计算出属于其自己的拉格朗日插值系数,将属于自己的拉格朗日插值系数与自己的第一私钥分片相乘得到第二私钥分片。2.2:在执行第一次乘法协议时,各参与方计算t的逆元,计算t的逆元和第二私钥分片相加得到第一乘法输分片,选取第一随机数,各个参与方以第一随机数和第一乘法输入分片执行第一次多方乘法协议,得到第一乘法值分片。各个参与方将第一乘法值分片发送给签名聚合者(签名聚合者可以是一个参与方,也可以是多个参与方,并且签名聚合者可以是这t个参与方中的参与方,也可以是这t个参与方之外的参与方)。签名聚合者将收集到的t第一乘法值分片相加得到第一乘法值。2.3:在执行第二乘法协议时,各个参与方利用已经获得的签名第一部分、在生成签名第一部分选的第二随机数和第二私钥分片计算得到第二乘法输入分片。各个参与方以第一随机数和第二乘法输入分片执行第二次多方乘法协议,得到第二乘法值分片。各个参与方将第二乘法值分片发送给签名聚合者将收集到的t个第二乘法值分片相加得到第二乘法值。2.4:签名聚合者计算第二乘法值除以第一乘法值,得到签名第二部分。
3、通过离散对数零知识证明和DH Tuple零知识证明,证明两次多方乘法值正确性。具体来说,设t个参与方欲产生签名。不妨设这t个参与方是P1,P2,…,Pt,他们的身份标识是ID1,ID2,…,IDt。3.1:各个参与方在生成签名第一部分时,已经利用第二随机数和椭圆曲线点乘计算出承诺,并将这些承诺叠加得到第二承诺。3.2:各个参与方计算第一随机数和椭圆曲线基点相乘得到第三承诺,并计算第三承诺的离散对数零知识证明。各参与方计算第一随机数和总公钥的点乘得到第四承诺,并利用第一随机数计算第三承诺与第四承诺的DH tuple零知识证明。各参与方计算第一随机数和第二承诺的点乘得到第五承诺,并利用第一随机数计算第三承诺与第五承诺的DH tuple零知识证明。将第三承诺、第四承诺、第五承诺和所有零知识证明广播给其他参与方。不失一般性,设第六、第七、第八承诺分别为M,N,L,第一乘法值为Beta,第二乘法值为Tao,椭圆曲线基点为G,签名第一部分为r。如果下面等式成立,则说明两个乘法输出值都是正确的。Beta*G=M+N和Tao*G=L–r*N
4、在门限SM2公钥加密方案中的解密阶段,利用离散对数零知识证明和DH Tuple零知识证明验证解密分片正确性。不妨设参与解密的参与方是P1,P2,…,Pt,他们的身份标识为ID1,ID2,…,IDt,具体过程如下:4.1:在启动阶段,各个参与方利用ID1,ID2,…,IDt计算出t个拉格朗日插值系数,并利用这t个拉格朗日插值系数和收集到的来自P1,P2,…,Pt的t个第一承诺对影相乘,得到t个第九承诺。4.2:各个参与方计算第二私钥分片与密文第一部分的点乘得到第十承诺,并利用第二私钥分片、第九承诺和第十承诺计算DH tuple零知识证明。之后,将第九承诺、第十承诺和DH tuple零知识证明发送给解密者(解密者可以是t个参与方中的某个参与方,也可以是t各参与方以外的某个节点或设备)。4.3:解密者在得到所有t个第九承诺、t个第十承诺和t个DH tuple灵芝只证明,验证DH tuple零知识证明的有效性。如果验证通过,则说明所有第十承诺都是正确的,并继续协议。否则,终止协议。4.4:叠加通过验证的第十承诺得到解密承诺。利用解密承诺和公开参数计算出解密字符串,将解密字符串与密文第二部分进行逐比特疑惑运算,得到明文。如果明文和解密承诺计算的哈希值等于密文第三部分,则明文是正确的。否则,明文是错误的。
因此,在上述示例中,(1)总公钥和总私钥分片的正确性是整个方案正确性的基石,所以如果不能保证总公钥和总私钥分片的正确性,则方案的正确性无从谈起。如果总公钥错误,那么将无法验证签名的正确性;如果总私钥分片是错误的,那么将无法生成有效的签名。因此,保证总公钥和总私钥分片的正确性是重中之重。解决了总公钥和总私钥分片的正确性验证的问题。如果通过验证,则说明各参与方手中的总私钥分片是正确的,并且总公钥也是正确的。这样,为算法的正确执行提供了坚实基础。(2)由于门限密码需要多个参与方交互数据分片完成各个中间环节的计算,因此当聚合者利用各参与方提供的数据分片计算中间数据时,如果无法辨别中间数据的正确性以及数据分片的正确性,那么算法最终结果的正确性将受到严重影响。具体来说,如果无法判断中间数据的正确性,那么将无法保证算法执行的正确性;如果无法辨别参与方提供数据分片的正确性,那么恶意参与方将有恃无恐的提供错误数据,任何人将无法察觉到底是谁提供了错误数据。因此,中间数据以及数据分片的正确性验证将对算法正确执行和抵抗恶意参与方提供重要作用。(3)本申请通过设计使得两次多方乘法协议可以并行执行。原因是,在本申请中,任何一个多方乘法协议的输出都与另一个多方乘法协议的输入无关。由于多方乘法协议的通信量和通信轮数较多,所以如果能够并行执行多方乘法协议,那么将会显著提升算法效率。因此,本申请能够通过并行执行多方乘法协议来优化算法的性能。
此外,本申请可以应用于联合支付、协同认证、协同解密、区块链共识、数据备份与恢复等场景。本申请采用的多方乘法协议可以是任意多方乘法协议(例如,基于不经意传输的多方乘法协议、基于同态加密的多方乘法协议等),可以通过算法转换分片的形式,例如从Shamir秘密分享的分片变为加法分片,从加法分片变为Shamir秘密分享的分片等。本申请的核心创新点可以应用于其他门限签名和门限加解密算法中。

Claims (23)

1.一种数据处理方法,其特征在于,应用于数据处理系统,所述数据处理系统包括:第一电子设备和n个参与方设备,n为大于1的整数,所述方法包括:
所述n个参与方设备中的目标参与方设备接收其他n-1个参与方设备发送的公钥计算参数;其中,所述公钥计算参数用于计算所述第一电子设备的公钥;
所述目标参与方设备根据所接收到的n-1个公钥计算参数以及自身的1个公钥计算参数,计算得到所述第一电子设备的公钥,并对所述第一电子设备的公钥进行验证;
若验证通过,所述目标参与方设备输出所述第一电子设备的公钥。
2.根据权利要求1所述的方法,其特征在于,所述公钥计算参数包括:第一承诺信息;
所述根据所接收到的n-1个公钥计算参数以及自身的1个公钥计算参数,计算得到所述第一电子设备的公钥,并对所述第一电子设备的公钥进行验证,包括:
所述目标参与方设备从所接收到的n-1个第一承诺信息以及自身的1个第一承诺信息中的随机选择t个第一承诺信息,计算得到所述第一电子设备的待验证公钥,并重复多次得到多个待验证公钥;
所述目标参与方设备验证所述多个待验证公钥是否相同;
当所述多个待验证公钥都相同时,验证通过,并确定所述第一电子设备的公钥为所述多个待验证公钥中的任一个。
3.根据权利要求2所述的方法,其特征在于,所述n个参与方设备中的目标参与方设备接收其他n-1个参与方设备发送的公钥计算参数之前,还包括:
所述目标参与方设备确定私钥分片,并将所确定的私钥分片发送至所述其他n-1个参与方设备;
所述目标参与方设备接收所述其他n-1个参与方设备发送的私钥分片;
所述目标参与方设备将所接收到的n-1个私钥分片以及自身所确定的1个私钥分片相加得到联合分片;
所述目标参与方设备根据联合分片和椭圆曲线的基点,确定第一承诺信息,并将所确定的第一承诺信息发送至所述其他n-1个参与方设备;
所述目标参与方设备接收所述其他n-1个参与方设备发送的第一承诺信息,所述其他n-1个参与方设备计算第一承诺信息的方式与所述目标参与方设备相同。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
所述目标参与方设备确定至少两个签名参数;其中,所述至少两个签名参数用于得到所述第一电子设备的签名信息;
所述目标参与方设备对所述至少两个签名参数进行验证;
若验证通过,所述目标参与方设备根据所述至少两个签名参数,计算得到所述第一电子设备的签名信息。
5.根据权利要求4所述的方法,其特征在于,所述目标参与方设备确定至少两个签名参数,包括:
所述目标参与方设备计算参数M、参数N、参数L、参数R和参数sign_ski;其中,t≤n,参数M为t个参与方设备提供的参数Mi之和,Mi由t个参与方设备中的第i个参与方设备通过公式Mi=roi*G计算得到,G为椭圆曲线的基点,roi为随机数;参数R为t个参与方设备提供的参数Ri之和,Ri由t个参与方设备中的第i个参与方设备通过公式Ri=ki*G计算得到;参数N为t个参与方设备提供的参数Ni之和,Ni由t个参与方设备中的第i个参与方设备通过公式Ni=roi*PK计算得到,PK为所述第一电子设备的公钥;参数L为t个参与方设备提供的参数Li之和,Li=roi*R;参数sign_ski通过公式sign_ski=lambdai*p(IDi)计算得到,其中,lambdai由t个参与方设备的ID得到;
所述目标参与方设备以参数roi和参数1/t+sign_ski(mod q)作为第一次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数wi后,将计算得到的wi发送给t个参与方设备中的其他t-1个参与方设备;
所述目标参与方设备以参数roi和ki–r*sign_ski(mod q)作为第二次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数vi后,将计算得到的vi发送给t个参与方设备中的其他t-1个参与方设备;所述r为所述第一电子设备的签名sigma=[r,s]的第一部分;
所述目标参与方设备接收所述t个参与方设备中其他t-1个参与方设备发送的参数wi,并将所接收到的t-1个参数wi以及自身所确定的1个参数wi计算得到签名参数Beta;
所述目标参与方设备接收所述t个参与方设备中其他t-1个参与方设备发送的参数vi,并将所接收到的t-1个参数vi以及自身所确定的1个参数vi计算得到签名参数Tao。
6.根据权利要求5所述的方法,其特征在于,所述目标参与方设备对所述至少两个签名参数进行验证,包括:
所述目标参与方设备验证公式Beta*G=M+N和公式Tao*G=L–r*N是否成立;其中,若公式均成立,则验证通过。
7.根据权利要求6所述的方法,其特征在于,若验证通过,所述目标参与方设备根据所述至少两个签名参数,计算得到所述第一电子设备的签名信息,包括:
所述目标参与方设备通过公式r=e+x1(mod q)计算所述第一电子设备的签名sigma=[r,s]的第一部分r,其中,e=Hash(message||Z),message为消息,Z为公开字符串;
所述目标参与方设备通过公式s=Tao/Beta计算所述第一电子设备的签名sigma=[r,s]的第二部分s;
所述目标参与方设备根据所述第一部分r和所述第二部分s得到所述第一电子设备的签名sigma=[r,s]。
8.根据权利要求1-7任一项所述的方法,其特征在于,还包括:
所述目标参与方设备确定多个解密参数;其中,所述解密参数用于对所述第一电子设备接收到的数据进行解密;
所述目标参与方设备对所述多个解密参数进行验证;
若验证通过,所述目标参与方设备根据所述多个解密参数,对所述第一电子设备接收到的数据进行解密。
9.根据权利要求8所述的方法,其特征在于,所述目标参与方设备确定多个解密参数,包括:
所述目标参与方设备计算参数Ri、参数Qi和参数proofi;其中,参数Ri=decrypt_ski*C1,decrypt_ski=lambdai*p(IDi),IDi用于表示t个参与方设备中的第i个参与方设备的ID,拉格朗日系数lambdai由t个参与方设备的ID得到;参数Qi=decrypt_sk_i*G,G为椭圆曲线的基点;参数proof_i为参与方设备Pi计算G,Qi,C1,Ri的DH Tuple零知识证明;C1为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第一部分;
所述目标参与方设备将参数Ri、参数Qi和参数proofi发送给其他t-1个参与方设备;
所述目标参与方设备接收其他t-1个参与方设备发送的参数Ri、参数Qi和参数proofi,结合所述目标参与方的参数Ri、参数Qi和参数proofi,得到t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt作为所述多个解密参数。
10.根据权利要求9所述的方法,其特征在于,所述目标参与方设备对多个解密参数进行验证,包括:
所述目标参与方设备对所有t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt的正确性进行验证,对所有t个参与方设备的解密参数proof1,proof2,…,prooft的DHTuple零知识证明有效性进行验证,以及验证公式PK=Q1+Q2+…+Qt是否成立;其中,当正确性、有效性以及公式均成立时,则验证通过。
11.根据权利要求10所述的方法,其特征在于,若验证通过,所述目标参与方设备根据所述多个解密参数,对所述第一电子设备接收到的数据进行解密,包括:
所述目标参与方设备通过公式R=R1+R2+…+Rt=(x1,y1)计算参数x1和y1,并通过公式e=KDF(x1||y1||parameters)计算参数e,其中parameters为公开参数,KDF是密钥生成函数;
所述目标参与方设备通过公式M’=C2 XORe计算待验证明文数据M’;其中,C2为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第二部分;
所述目标参与方设备根据公式C3’=Hash(x1||M||y1)计算参数C3’,并判断C3’是否与C3相等,其中,C3为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第三部分;
所述目标参与方设备在C3’=C3时,确定输出明文数据M’。
12.一种数据处理装置,其特征在于,应用于数据处理系统,所述数据处理系统包括:第一电子设备和n个参与方设备,n为大于1的整数,所述数据处理装置为所述n个参与方设备中的目标参与方设备,所述数据处理装置包括:
确定模块,用于接收其他n-1个参与方设备发送的公钥计算参数;其中,所述公钥计算参数用于计算所述第一电子设备的公钥,根据所接收到的n-1个公钥计算参数以及自身的1个公钥计算参数,计算得到所述第一电子设备的公钥;
验证模块,用于对所述第一电子设备的公钥进行验证;
处理模块,用于若所述验证模块验证通过,输出所述第一电子设备的公钥。
13.根据权利要求12所述的装置,其特征在于,所述公钥计算参数包括:第一承诺信息;
所述确定模块具体用于,从所接收到的n-1个第一承诺信息以及自身的1个第一承诺信息中的随机选择t个第一承诺信息,计算得到所述第一电子设备的待验证公钥,并重复多次得到多个待验证公钥;
所述验证模块具体用于,验证所述多个待验证公钥是否相同;其中,当所述多个待验证公钥都相同时,验证通过,并由所述确定模块确定所述第一电子设备的公钥为所述多个待验证公钥中的任一个。
14.根据权利要求13所述的装置,其特征在于,所述确定模块具体用于,
确定私钥分片,并将所确定的私钥分片发送至所述其他n-1个参与方设备;
接收所述其他n-1个参与方设备发送的私钥分片;
将所接收到的n-1个私钥分片以及自身所确定的1个私钥分片相加得到联合分片;
根据联合分片和椭圆曲线的基点,确定第一承诺信息,并将所确定的第一承诺信息发送至所述其他n-1个参与方设备;
接收所述其他n-1个参与方设备发送的第一承诺信息,所述其他n-1个参与方设备计算第一承诺信息的方式与所述目标参与方设备相同。
15.根据权利要求12-14任一项所述的装置,其特征在于,
所述确定模块还用于,确定至少两个签名参数;其中,所述至少两个签名参数用于得到所述第一电子设备的签名信息;
所述验证模块还用于,对所述至少两个签名参数进行验证;
所述处理模块还用于,若所述验证模块验证通过,根据所述至少两个签名参数,计算得到所述第一电子设备的签名信息。
16.根据权利要求15所述的装置,其特征在于,所述确定模块具体用于,
计算参数M、参数N、参数L、参数R和参数sign_ski;其中,t≤n,参数M为t个参与方设备提供的参数Mi之和,Mi由t个参与方设备中的第i个参与方设备通过公式Mi=roi*G计算得到,G为椭圆曲线的基点,roi为随机数;参数R为t个参与方设备提供的参数Ri之和,Ri由t个参与方设备中的第i个参与方设备通过公式Ri=ki*G计算得到;参数N为t个参与方设备提供的参数Ni之和,Ni由t个参与方设备中的第i个参与方设备通过公式Ni=roi*PK计算得到,PK为所述第一电子设备的公钥;参数L为t个参与方设备提供的参数Li之和,Li=roi*R;参数sign_ski通过公式sign_ski=lambdai*p(IDi)计算得到,其中,lambdai由t个参与方设备的ID得到;
以参数roi和参数1/t+sign_ski(mod q)作为第一次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数wi后,将计算得到的wi发送给t个参与方设备中的其他t-1个参与方设备;
以参数roi和ki–r*sign_ski(mod q)作为第二次多方乘法协议的输入,与其他t-1个参与方设备共同进行多方乘法协议计算,并得到输出参数vi后,将计算得到的vi发送给t个参与方设备中的其他t-1个参与方设备;所述r为所述第一电子设备的签名sigma=[r,s]的第一部分;
接收所述t个参与方设备中其他t-1个参与方设备发送的参数wi,并将所接收到的t-1个参数wi以及自身所确定的1个参数wi计算得到签名参数Beta;
接收所述t个参与方设备中其他t-1个参与方设备发送的参数vi,并将所接收到的t-1个参数vi以及自身所确定的1个参数vi计算得到签名参数Tao。
17.根据权利要求16所述的装置,其特征在于,所述验证模块具体用于,
验证公式Beta*G=M+N和公式Tao*G=L–r*N是否成立;其中,若公式均成立,则验证通过。
18.根据权利要求17所述的装置,其特征在于,所述处理模块具体用于,
通过公式r=e+x1(mod q)计算所述第一电子设备的签名sigma=[r,s]的第一部分r,其中,e=Hash(message||Z),message为消息,Z为公开字符串;
通过公式s=Tao/Beta计算所述第一电子设备的签名sigma=[r,s]的第二部分s;
根据所述第一部分r和所述第二部分s得到所述第一电子设备的签名sigma=[r,s]。
19.根据权利要求12-18任一项所述的装置,其特征在于,
所述确定模块还用于,确定多个解密参数;其中,所述解密参数用于对所述第一电子设备接收到的数据进行解密;
所述验证模块还用于,对所述多个解密参数进行验证;
所述处理模块还用于,根据所述多个解密参数,对所述第一电子设备接收到的数据进行解密。
20.根据权利要求19所述的装置,其特征在于,所述确定模块具体用于,
计算参数Ri、参数Qi和参数proofi;其中,参数Ri=decrypt_ski*C1,decrypt_ski=lambdai*p(IDi),IDi用于表示t个参与方设备中的第i个参与方设备的ID,拉格朗日系数lambdai由t个参与方设备的ID得到;参数Qi=decrypt_sk_i*G,G为椭圆曲线的基点;参数proof_i为参与方设备Pi计算G,Qi,C1,Ri的DH Tuple零知识证明;C1为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第一部分;
将参数Ri、参数Qi和参数proofi发送给其他t-1个参与方设备;
接收其他t-1个参与方设备发送的参数Ri、参数Qi和参数proofi,结合所述目标参与方的参数Ri、参数Qi和参数proofi,得到t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt作为所述多个解密参数。
21.根据权利要求20所述的装置,其特征在于,所述验证模块具体用于,
对所有t个参与方设备的解密参数R1,R2,…,Rt和t个参与方设备的解密参数Q1,Q2,…,Qt的正确性进行验证,对所有t个参与方设备的解密参数proof1,proof2,…,prooft的DHTuple零知识证明有效性进行验证,以及验证公式PK=Q1+Q2+…+Qt是否成立;其中,当正确性、有效性以及公式均成立时,则验证通过。
22.根据权利要求21所述的装置,其特征在于,所述处理模块具体用于,
通过公式R=R1+R2+…+Rt=(x1,y1)计算参数x1和y1,并通过公式e=KDF(x1||y1||parameters)计算参数e,其中parameters为公开参数,KDF是密钥生成函数;
通过公式M’=C2 XORe计算待验证明文数据M’;其中,C2为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第二部分;
根据公式C3’=Hash(x1||M||y1)计算参数C3’,并判断C3’是否与C3相等,其中,C3为所述第一电子设备接收到的数据设置密文C={C1||C2||C3}中的第三部分;
确定C3’=C3时,确定输出明文数据M’。
23.一种数据处理系统,其特征在于,包括:第一电子设备和n个参与方设备,n为大于1的整数,所述n个参与方设备中包括目标参与方设备,所述目标参与方设备为如权利要求12-22中任一项所述的数据传输设备。
CN202011063484.6A 2020-09-30 2020-09-30 数据处理方法、装置及系统 Active CN114337994B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011063484.6A CN114337994B (zh) 2020-09-30 2020-09-30 数据处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011063484.6A CN114337994B (zh) 2020-09-30 2020-09-30 数据处理方法、装置及系统

Publications (2)

Publication Number Publication Date
CN114337994A true CN114337994A (zh) 2022-04-12
CN114337994B CN114337994B (zh) 2024-09-24

Family

ID=81031841

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011063484.6A Active CN114337994B (zh) 2020-09-30 2020-09-30 数据处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN114337994B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114944935A (zh) * 2022-04-24 2022-08-26 华控清交信息科技(北京)有限公司 一种多方融合计算系统、多方融合计算方法和可读存储介质
CN115174048A (zh) * 2022-06-17 2022-10-11 蚂蚁区块链科技(上海)有限公司 一种共识方法、系统和共识节点
CN116132049A (zh) * 2023-01-04 2023-05-16 声龙(新加坡)私人有限公司 数据加密的方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105743641A (zh) * 2016-04-01 2016-07-06 西安电子科技大学 一种可显式验证公钥的多接收者签密方法
CN107659395A (zh) * 2017-10-30 2018-02-02 武汉大学 一种多服务器环境下基于身份的分布式认证方法及系统
WO2020136319A1 (fr) * 2018-12-24 2020-07-02 Orange Procédé et système de vote électronique

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105743641A (zh) * 2016-04-01 2016-07-06 西安电子科技大学 一种可显式验证公钥的多接收者签密方法
CN107659395A (zh) * 2017-10-30 2018-02-02 武汉大学 一种多服务器环境下基于身份的分布式认证方法及系统
WO2020136319A1 (fr) * 2018-12-24 2020-07-02 Orange Procédé et système de vote électronique

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114944935A (zh) * 2022-04-24 2022-08-26 华控清交信息科技(北京)有限公司 一种多方融合计算系统、多方融合计算方法和可读存储介质
CN115174048A (zh) * 2022-06-17 2022-10-11 蚂蚁区块链科技(上海)有限公司 一种共识方法、系统和共识节点
CN116132049A (zh) * 2023-01-04 2023-05-16 声龙(新加坡)私人有限公司 数据加密的方法、装置、设备及存储介质
CN116132049B (zh) * 2023-01-04 2023-09-08 声龙(新加坡)私人有限公司 数据加密的方法、装置、设备及存储介质
WO2024146347A1 (zh) * 2023-01-04 2024-07-11 声龙(新加坡)私人有限公司 数据加密的方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114337994B (zh) 2024-09-24

Similar Documents

Publication Publication Date Title
Bonawitz et al. Practical secure aggregation for privacy-preserving machine learning
US11088851B2 (en) Systems and methods for signing of a message
CN107707358B (zh) 一种ec-kcdsa数字签名生成方法及系统
CN112906030B (zh) 基于多方全同态加密的数据共享方法和系统
Zhou et al. ExpSOS: Secure and verifiable outsourcing of exponentiation operations for mobile cloud computing
CN111130804B (zh) 一种基于sm2算法的协同签名方法及装置、系统、介质
CN114337994B (zh) 数据处理方法、装置及系统
Ma et al. Privacy-preserving Byzantine-robust federated learning
CN113591146B (zh) 基于合作的高效安全两方计算系统及计算方法
JP2007510947A (ja) 多数当事者の効率的な乗算のための方法及び装置
CN116204912B (zh) 基于全同态加密的数据处理方法和装置
Vu et al. An efficient approach for secure multi-party computation without authenticated channel
JP4835831B2 (ja) 多数の入力から関数を計算する方法および装置
CN110945831A (zh) 抗Sybil攻击身份的生成
CN106789087B (zh) 确定消息的数据摘要、基于多方的数字签名的方法及系统
CN114338028A (zh) 门限签名方法、装置、电子设备和可读存储介质
CN111342955A (zh) 一种通信方法及其设备、计算机存储介质
US20240048360A1 (en) Method for processing multi-source data
Sun et al. Efficient Multiparty Quantum Key Agreement With a Single $ d $-Level Quantum System Secure Against Collusive Attack
CN113132104A (zh) 一种主动安全的ecdsa数字签名两方生成方法
Tsai et al. An ECC‐based blind signcryption scheme for multiple digital documents
CN118160275A (zh) 阈值签名方案
CN115001651A (zh) 适用于半诚实模型下基于全同态加密的多方计算方法
CN108964906B (zh) 协同ecc的数字签名方法
CN111565108B (zh) 签名处理方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant