实现隐私保护的数据同态加解密方法及装置与流程

文档序号:18901363发布日期:2019-10-18 21:59阅读:180来源:国知局
实现隐私保护的数据同态加解密方法及装置与流程

本说明书一个或多个实施例涉及加解密技术领域,尤其涉及一种实现隐私保护的数据同态加解密方法及装置。



背景技术:

在很多场景下,用户都存在对数据内容进行隐私保护的需求。例如,区块链技术(也被称之为,分布式账本技术)是一种去中性化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中,但是由于全量交易数据都可以公开查询,可能暴露区块链交易的交易额等数据。再例如,在多方计算的场景下,譬如用户a持有待处理数据、用户b持有数据处理模型,在通过该数据处理模型对待处理数据实施处理时,如果用户a将待处理数据发送至用户b,会导致待处理数据的取值被暴露,如果用户b将数据处理模型提供至用户a进行使用,会导致数据处理模型的模型参数被暴露。



技术实现要素:

有鉴于此,本说明书一个或多个实施例提供一种实现隐私保护的数据同态加解密方法及装置。

为实现上述目的,本说明书一个或多个实施例提供技术方案如下:

根据本说明书一个或多个实施例的第一方面,提出了一种实现隐私保护的数据同态加密方法,包括:

获取目标用户对应的公钥pk={n,h},其中h为随机数空间内大小为k的预设循环群的生成元,k的长度为i比特、n的长度为n比特,且i<<n;

选取随机数r,使得hr属于所述预设循环群;

通过所述公钥pk和所述随机数r对所述目标用户对应的待加密数据m进行处理,生成同态密文c=(1+n)m·(hrmodn)n=(1+n)m·(hnmodn2)rmodn2

将所述同态密文c提供至所述目标用户,所述同态密文c可由所述目标用户通过私钥sk解密得到数据m,所述私钥sk的取值为α=a·k,a为预设非零数值。

根据本说明书一个或多个实施例的第二方面,提出了一种实现隐私保护的数据同态解密方法,包括:

获取同态密文c=(1+n)m·(hrmodn)n=(1+n)m·(hnmodn2)rmodn2,所述同态密文c由目标用户对应的公钥pk={n,h}和随机数r对数据m进行处理后得到;其中,h为随机数空间内大小为k的预设循环群的生成元,hr属于所述预设循环群,k的长度为i比特、n的长度为n比特,且i<<n;

根据所述目标用户的私钥sk对所述同态密文c进行解密,得到加密前的数据其中所述私钥sk的取值为α=a·k,a为预设非零数值。

根据本说明书一个或多个实施例的第三方面,提出了一种实现隐私保护的数据同态加密装置,包括:

公钥获取单元,获取目标用户对应的公钥pk={n,h},其中h为随机数空间内大小为k的预设循环群的生成元,k的长度为i比特、n的长度为n比特,且i<<n;

随机数选取单元,选取随机数r,使得hr属于所述预设循环群;

数据处理单元,通过所述公钥pk和所述随机数r对所述目标用户对应的待加密数据m进行处理,生成同态密文c=(1+n)m·(hrmodn)n=(1+n)m·(hnmodn2)rmodn2

密文提供单元,将所述同态密文c提供至所述目标用户,所述同态密文c可由所述目标用户通过私钥sk解密得到数据m,所述私钥sk的取值为α=a·k,a为预设非零数值。

根据本说明书一个或多个实施例的第四方面,提出了一种实现隐私保护的数据同态解密装置,包括:

密文获取单元,获取同态密文c=(1+n)m·(hrmodn)n=(1+n)m·(hnmodn2)rmodn2,所述同态密文c由目标用户对应的公钥pk={n,h}和随机数r对数据m进行处理后得到;其中,h为随机数空间内大小为k的预设循环群的生成元,hr属于所述预设循环群,k的长度为i比特、n的长度为n比特,且i<<n;

密文解密单元,根据所述目标用户的私钥sk对所述同态密文c进行解密,得到加密前的数据其中所述私钥sk的取值为α=a·k,a为预设非零数值;

数据输出单元,将解密得到的数据m输出至所述目标用户。

根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。

根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。

根据本说明书一个或多个实施例的第七方面,提出了一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器通过运行所述可执行指令以实现如第二方面所述的方法。

根据本说明书一个或多个实施例的第八方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第二方面所述方法的步骤。

附图说明

图1是一示例性实施例提供的一种实现隐私保护的数据同态加密方法的流程图。

图2是一示例性实施例提供的一种实现隐私保护的数据同态解密方法的流程图。

图3是一示例性实施例提供的一种随机数空间的示意图。

图4是一示例性实施例提供的一种区块链网络中实现机密交易的示意图。

图5是一示例性实施例提供的一种多方计算场景的交互示意图。

图6是一示例性实施例提供的一种设备的结构示意图。

图7是一示例性实施例提供的一种实现隐私保护的数据同态加密装置的框图。

图8是一示例性实施例提供的另一种设备的结构示意图。

图9是一示例性实施例提供的一种实现隐私保护的数据同态解密装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

同态加密(homomorphicencryption)技术可以将原始数据加密为相应的同态密文,并且同态密文无需解密为原始数据即可直接参与计算。例如,所参与的计算为加减运算时,表明相应的同态加密技术满足加法同态;所参与的计算为乘除运算时,表明相应的同态加密技术满足乘法同态;所参与的计算既包括加减运算又包括乘除运算时,表明相应的同态加密技术满足全同态。本说明书所实现的数据同态加解密方案可以实现加法同态。

在实现同态加解密之前,用户需要获得唯一对应于自身的公私钥对;换言之,每一用户分别维护一组公私钥对,且不同用户对应于不同的公私钥对。譬如,当某一用户持有公钥pk_0、私钥sk_0时,可以通过该公钥pk_0对某一明文数据m_0进行加密、得到相应的同态密文c_0,那么只有私钥sk_0能够将该同态密文c_0解密为明文数据m_0,而诸如另一用户持有的私钥sk_1或者其他数据均无法对同态密文c_0进行正常解密。

同时,假定上述用户通过公钥pk_0对明文数据m_1进行加密、得到相应的同态密文c_1,对明文数据m_2进行加密、得到相应的同态密文c_2,那么同态密文c_0、c_1和c_2之间可以满足加法同态。例如,可以对同态密文c_0、c_1和c_2实施下述计算:c_3=c_0+c_1-c_2,那么用户可以通过私钥sk_0对c_3进行解密、得到相应的明文数据m_3,并且基于前述的加法同态特性可以确定m_3=m_0+m_1-m_2。当然,同态密文的运算规则与明文数据的运算规则并不一定相同;比如,当明文数据的加法可以对应于同态密文的乘法、明文数据的减法可以对应于同态密文的除法时,可以对同态密文c_0、c_1和c_2实施下述计算:c_3=c_0×c_1÷c_2,则相应的明文数据m_3=m_0+m_1-m_2。

下面结合实施例,介绍本说明书的实现隐私保护的数据同态加解密方案:

图1是一示例性实施例提供的一种实现隐私保护的数据同态加密方法的流程图。如图1所示,该方法应用于计算设备上,可以包括以下步骤:

步骤102,获取目标用户对应的公钥pk={n,h},其中h为随机数空间内大小为k的预设循环群的生成元,k的长度为i比特、n的长度为n比特,且i<<n。

上述的计算设备可以属于目标用户,即目标用户可以通过自身对应的公钥pk对数据m进行同态加密,以针对该数据m的取值进行隐私保护,或者进一步实施其他操作。或者,上述计算设备可以属于目标用户之外的其他用户,而目标用户的公钥pk可以公开给该用户,使得该用户可以基于该公钥pk对数据m进行同态加密,甚至可以进一步对加密得到的同态密文c实施符合加法同态的其他运算,而只有目标用户可以通过私钥sk对同态密文c或其运算结果进行解密。

n为预先确定的一数值。例如,n的长度为n可以为2048bit(比特)或者其他长度,本说明书并不对此进行限制。那么,基于该数值n,可以确定出上述的随机数空间在该随机数空间中,可以确定出一预设循环群,该预设循环群具有一生成元为上述的h,使得该生成元h可以生成该预设循环群中的所有元素,例如:该预设循环群中的元素可以表征为h0、h1、h2……;其中,当上述预设循环群的大小为k时,该预设循环群中的元素可以表征为h0、……hk-1,并且生成元h的其他次幂均可以循环表征为h0、……hk-1,比如hk=h0、hk+1=h1、……、h2k-1=hk-1等。

步骤104,选取随机数r,使得hr属于所述预设循环群。

虽然随机数r具有随机性,但是需要确保hr属于前述的预设循环群,因而并不能够完全随意地选取随机数r。实际上,当预设循环群的大小为k时,应当确保r∈[0,k-1]。

同时,当k的长度为i比特时,可以确保随机数r的长度同样为i比特。而与n的长度n相比,由于i<<n,使得随机数r是相对远小于n的数值,譬如r与n的取值之间相差预设数量级。例如,当n=2048时,可以选取i=320,此时随机数r的取值远小于n的取值。

步骤106,通过所述公钥pk和所述随机数r对所述目标用户对应的待加密数据m进行处理,生成同态密文c=(1+n)m·(hrmodn)n=(1+n)m·(hnmodn2)rmodn2

在同态密文c的上述计算公式中,包含两部分内容:(1+n)m用于承载明文数据m、(hrmodn)n或(hnmodn2)r用于增加密文随机性。对于(hnmodn2)r而言,如前所述:通过从随机数空间中选取一预设循环群,并且该预设循环群的大小k具有相对较小的长度i,使得随机数r同样具有相对较小的长度,因而相比于选取长度为n或同等数量级的随机数而言,较小长度的随机数r可以确保(hnmodn2)r的计算量相对更小,从而在针对相同的数据m进行加密时,可以显著地提升加密效率。尤其是,在针对大量数据实施加密操作的场景下,比如区块链网络内可以显著提升机密交易的处理效率,再比如在多方计算场景下可以显著加快计算速度等。

通过限制上述长度i的最小取值,可以避免选取过小的随机数r,防止造成同态密文c的随机性不足而影响其安全性。例如,当n=2048时,通过设定i≥224,即随机数r的长度不小于224bit,可以确保同态密文c具有足够的随机性和安全性,譬如可以至少提供112-bit或更高的安全性(在2112个步骤内无法被攻破)。

在针对上述公式中的(hnmodn2)r进行计算时,虽然可以每次按照公式直接进行模幂计算,但是可能由于较大的计算量而需要较长的计算时长。实际上,通过将公式由(hrmodn)n转换为(hnmodn2)r之后,可以发现:(hnmodn2)r为i比特指数的固定底模幂,即(hnmodn2)r的底固定为hnmodn2,因而可以根据公钥pk中的h预先计算出hnmodn2的取值,而无需临时计算。

进一步地,由于随机数r的长度固定为i比特,因而所有随机数r均可以表征为i位的二进制字符串,该i位的二进制字符串可以被基于j比特的单位长度进行划分为i/j个数值段r_0、r_1、……、r_[(i/j)-1],可以统一表示为r_u,其中u∈[0,(i/j)-1]。假定这些数值段按照从低位至高位的顺序可以依次排列为r_0、r_1、……、r_[(i/j)-1],那么所有随机数r均可以表征为∑r_u·2ju=r_0+r_1·2j+……+r_[(i/j)-1]·2j[(i/j)-1],并且任意数值段r_u的取值必然属于[0,2j-1]。因此,上述的(hnmodn2)r可以拆解为可以进一步转换为例如,可以选取j=8或其他数值。

那么,可以预先计算出的取值,然后通过对实际选取的随机数r进行拆解后,结合预先计算的取值做进一步计算。或者,由于随机数r拆解得到的上述数值段r_0、r_1、……、r_[(i/j)-1]中,每个数值段的取值必然为[0,2j-1],因而可以预先计算出的取值,那么对于实际选取的随机数r进行拆解后,譬如当拆解得到i/j个数值段ru且u∈[0,(i/j)-1]时,可以根据每个数值段的取值选取对应的预先计算出的取值,然后在完全不涉及到模幂运算的情况下,将这些取值相乘来计算得到(hnmodn2)r或进一步处理为[(hnmodn2)rmodn2],从而极大地提升计算效率。

例如,对于实际选取的随机数r,如果该随机数r拆解后得到的数值段分别为r0、r1……r(i/j)-1,即r=r0+r1·2j+……+r(i/j)-1·2j[(i/j)-1],那么根据上述预先计算的构成的取值列表,可以直接从该取值列表中确定出的取值(即的ru次幂的取值),然后将这些取值相乘即可得到(hnmodn2)r或进一步处理为[(hnmodn2)rmodn2]。

最后,结合计算得到的(1+n)m的取值和上述的[(hnmodn2)rmodn2]的取值,可以进一步生成同态密文c。

步骤108,将所述同态密文c提供至所述目标用户,所述同态密文c可由所述目标用户通过私钥sk解密得到数据m,所述私钥sk的取值为α=a·k,a为预设非零数值。

相应地,图2是一示例性实施例提供的一种实现隐私保护的数据同态解密方法的流程图。如图2所示,该方法应用于计算设备上,可以包括以下步骤:

步骤202,获取同态密文c=(1+n)m·(hrmodn)n=(1+n)m·(hnmodn2)rmodn2,所述同态密文c由目标用户对应的公钥pk={n,h}和随机数r对数据m进行处理后得到。

在上述公式中,h为随机数空间内大小为k的预设循环群的生成元,hr属于所述预设循环群,k的长度为i比特、n的长度为n比特,且i<<n。关于公钥pk的生成过程、随机数r的选取和针对数据m的加密过程,可以参考上述图1所示的实施例,此处不再赘述。

步骤204,根据所述目标用户的私钥sk对所述同态密文c进行解密,得到加密前的数据其中所述私钥sk的取值为α=a·k,a为预设非零数值。

当同态密文c的取值满足c=(1+n)m·(hnmodn2)rmodn2时,基于私钥sk的解密方式可以为:首先,根据密钥sk的取值α推算出前述预设循环群的大小k;然后,在上述同态密文c的计算公式两侧同时进行k次幂计算,得到ck=(1+n)km·(hnmodn2)rkmodn2=(1+n)km·[(hk)nmodn2]rmodn2。而如前所述,h为预设循环群的生成元且该预设循环群的大小为k,使得hk=h0=1,因而上述公式可以进一步转换为ck=(1+n)kmmodn2=1+km·nmodn2,所以可以计算得到

可见,由私钥sk的取值α与预设循环群的大小k相关,使得目标用户根据私钥sk对同态密文c的公式两侧同时取k次幂时,可以消去随机数部分(hnmodn2)r,仅剩下c与m之间的转换过程,从而能够顺利解密得到数据m。

步骤206,将解密得到的数据m输出至所述目标用户。

目标用户可以在所持的计算设备上执行上述同态解密操作,并向目标用户输出解密得到的数据m。或者,目标用户可以将同态密文c传输至非本地的某一计算设备上,譬如云端设备等,并且该计算设备受到目标用户信任、能够存储或临时获得目标用户的私钥sk,从而针对同态密文c进行解密,而后将解密得到的数据m输出并返回至该目标用户。

如前所述,通过选取满足一定条件的公私钥对,可以按照图1所述的实施例将数据m加密为相应的同态密文c、按照图2所述的实施例将同态密文c解密为相应的数据m。而下面将结合实施例,举例说明如何选取满足上述条件的公私钥对。

首先确定数字n。n的取值可以为两个大素数p、q的乘积,使得p、q的取值难以被猜测出。p、q的长度可以为1024bit(比特),则n=p·q的长度为2048bit,即上述的参数n=2048;当然,其他实施例中也可以采用其他长度,本说明书并不对此进行限制。当n的长度足够大时,p、q的取值被猜测出的概率极低,因而基于p、q的取值生成公私钥对时,可以确保公私钥的取值难以被猜测出,具有高安全性。其中,可以优先确定出n的长度n,然后选取长度为(n/2)的素数p、q,并且确保满足p≡q≡3mod4,gcd(p-1,q-1)=2(即p-1与q-1的最大公约数为2),然后计算得到n=p·q。

根据确定出的数字n,可以得到消息空间zn,该消息空间zn所含元素为{0,……,n-1}。根据消息空间zn,可以确定出随机数空间该随机数空间所含元素为消息空间zn中所有与n互素的元素。由于n=p·q,可以确定该随机数空间的大小(即所含元素的数量)为(p-1)(q-1)。

随机数空间存在下述子群:二次剩余群qrn和群<-1>。其中,二次剩余群qrn所含元素为随机数空间中元素的2次方,即并且该二次剩余群qrn的大小为(p-1)(q-1)/4。以及,群<-1>为由元素(-1modn)生成的二阶循环群,该群<-1>所含元素为{-1modn,1modn},即群<-1>的大小为2。

进一步的,二次剩余群qrn存在下述子群:群与群并且二次剩余群qrn为群与群的内直积其中,表示群的大小、表示群的大小、|qrn|表示二次剩余群qrn的大小。其中,由于已知|qrn|=(p-1)(q-1)/4,因而可以依此设定的取值,以使得能够满足上述的其中,群表示群qrn中所有元素的α次方构成的集合,而群表示群qrn中所有元素的β次方构成的集合,即

因此,可由群与群<-1>的内直积组成如前所述的预设循环群,比如该预设循环群可以表达为其中,通过设定结合群<-1>的大小为2,可以确定该预设循环群的大小为k=2α。因此,当满足前述的密钥sk=α=a·k时,可以确定a=α/k=1/2。

由于将α的取值作为密钥sk,因而必须确保α的取值无法或难以被猜测,以保证其安全性。而如前所述,公钥所含的数值n为素数p、q的乘积,该素数p、q的取值难以被猜测,因而可以根据素数p、q的取值,计算α。例如,可以借助于中间参数p、q,该中间参数p、q为素数,并且p|p-1、q|q-1(即p可被p-1整除、q可被q-1整除),那么可以设定α=pq。同时,可以设定β=(p-1)(q-1)/(4pq),并且满足gcd(α,β)=1,可以确定α·β=(p-1)(q-1)/4=|qrn|。结合前述的可知

如前所述,对于选取的预设循环群为该预设循环群的生成元h可以表征为由于预设循环群为的大小为2α,因而该预设循环群为所含元素为{h0,h1,h2,…,h2α-1}。而在后续的加密过程中,由于需要选取随机数r并使得hr属于预设循环群为因而该随机数r的取值属于[0,2α-1],即随机数r的长度与α的长度相关。

由于在根据公钥pk对数据m进行加密时,采用的计算公式为:c=(1+n)m·(hnmodn2)rmodn2,随机数r被作为模幂计算的指数,因而需要控制该随机数r的长度,以降低模幂计算的复杂度。例如,当n的长度n=2048bit时,可以设定随机数r的长度为i=320bit,那么α的长度同样为320bit;又由于α=pq,因而前述的中间参数p、q的长度可以分别为160bit,以确保计算得到的α长度为320bit。

根据如前所述的内容,本说明书的技术方案在确定公私钥时,实际上涉及到随机数空间以及作为其子群的二次剩余群qrn、群<-1>,以及作为二次剩余群qrn的子群的群与群而在这些群组中,本说明书中选择由群与群<-1>组合形成预设循环群该预设循环群的大小(2α)与随机数r的长度相关;换言之,通过选取恰当大小的预设循环群使得加密计算过程中能够选取恰当长度的随机数r,从而能够在加密效率与安全性之间找到恰当的平衡点(随机数r的长度越大时,加密效率越低、安全性越高;反之,加密效率越高、安全性越低)。

实际上,随机数空间实际上还存在其他子群。例如,图3是一示例性实施例提供的一种随机数空间的示意图。如图3所示,除了上述各个子群之外,随机数空间还可以包括群群<w>等其他子群,但基于这些子群形成预设循环群时,可能导致加密效率降低。其中,群表示随机数空间中所有jacobi(雅克比)符号为+1的元素构成的集合,即而群<w>表示随机数空间中由某个jacobi(雅克比)符号为-1且阶数为2的元素w生成的二阶循环群,<w>={wmodn,1modn}。

以群为例。由于群的大小为(p-1)(q-1)/2,即如果将群作为预设循环群,或者基于群生成预设循环群,则相应确定随机数r时,该随机数r的长度与该群的大小(p-1)(q-1)/2相关,譬如当p、q的长度分别为1024bit时,随机数r的长度为2048bit,远大于前述基于选定的长度为320bit的随机数r,将极大地提升加密计算的复杂度、降低加密效率。类似地,如前所述,由于群qrn的大小为(p-1)(q-1)/4,如果将群qrn作为预设循环群,或者基于群qrn生成预设循环群,则相应确定随机数r的长度与该群qrn的大小(p-1)(q-1)/4相关,譬如当p、q的长度分别为1024bit时,随机数r的长度为2048bit。因此,本说明书中采用对群qrn进一步拆分的方式,形成大小为α的群以据此构成前述的预设循环群

本说明书的同态加解密方案,可以适用于多种应用场景,下面进行举例说明。

上述同态加解密方案可以应用于区块链交易中,以实现区块链网络中的机密交易。例如,根据交易对象q_0~q_t分别对应的转账额m0~mt,目标用户可以创建所述目标用户与交易对象q_0~q_t之间的区块链交易,所述区块链交易中包含转账额m0~mt分别对应的同态密文c0~ct,t≥0;其中,所述目标用户、交易对象q_0~q_t的账户余额在区块链账本上被分别记录为相应的同态密文d、d_0~d_t。然后,目标用户可以向区块链网络提交所述区块链交易;其中,当所述区块链交易完成后,区块链账本上记录的同态密文d减小(c0+…+ct)且d_0增大c0、…、d_t增大ct。

图4是一示例性实施例提供的一种区块链网络中实现机密交易的示意图。如图4所示,假定目标用户为用户ua、交易对象为用户ub、uc等。用户ua存在唯一对应的公私钥对(pk_0,sk_0),即公钥为pk_0、私钥为sk_0;类似地,用户ub存在唯一对应的公私钥对(pk_1,sk_1)、用户uc存在唯一对应的公私钥对(pk_2,sk_2),以此类推。

在区块链账本上,分别记录有各个用户对应账户的账户余额,并且是以账户余额对应的同态密文形式进行记录。例如,用户ua的账户余额为m_a,实际以本说明书的同态加密方案对m_a进行加密生成相应的同态密文c_a,且区块链账本上记录该同态密文c_a;类似地,区块链账本上记录有用户ub的账户余额m_b对应的同态密文c_b、用户uc的账户余额m_c对应的同态密文c_c等。因此,虽然区块链账本上的数据可以公开查询,但是每个用户实际上仅能够通过密钥对自身对应的同态密文进行解密、无法对其他用户对应的同态密文进行解密,使得每个用户仅能够获知自身的账户余额、无法获知其他用户的账户余额。

假定由用户ua发起一笔区块链交易,该区块链交易需要由用户ua向用户ub转账的转账额1为m_1、向用户uc转账的转账额2为m_2等。那么,假定用户ua从账户内选取一笔价值为m的资产,通过该资产完成上述区块链交易,并且可以获知该资产在完成向用户ub、uc等的转账后,剩余的找零额为m_0。那么,可以确定该区块链交易的输入为上述价值为m的资产,输出为转账至用户ua的m_0、转账至用户ub的m_1、转账至用户uc的m_2等,此时由用户ua、ub、uc等共同构成了上述的交易对象q_0~q_t。

其中,上述价值为m的资产属于用户ua,该资产的价值在区块链账本上被记录为相应的同态密文c(pk_0,m),表示该同态密文c由用户ua的公钥pk_0对资产数额m进行同态加密后得到。同时,用户ua需要为区块链交易的各个输出进行同态加密,则加密时采用的公钥对应于输出的目标对象;例如,由于需要向用户ua输出找零额m_0,因而需要采用用户ua的公钥pk_0对数额m_0加密生成同态密文c_0(pk_0,m_0),由于需要向用户ub输出转账额1即m_1,因而需要采用用户ub的公钥pk_1对数额m_1加密生成同态密文c_1(pk_1,m_1),由于需要向用户uc输出转账额2即m_2,因而需要采用用户uc的公钥pk_2对数额m_2加密生成同态密文c_2(pk_2,m_2)。当然,区块链交易中还可以封装交易所需的其他内容或证明信息等,此处不再一一列举。

然后,用户ua将上述区块链交易提交至区块链网络后,区块链网络中的各个区块链节点完成对该区块链交易的共识后,可以将该区块链交易上链执行。相应地,区块链账本中记录的各个用户的账户余额将随之发生变化:用户ua在上述区块链交易中支出了上述价值m的资产、收入了找零额,因而在区块链账本上的资产由c_a更新为[c_a-c(pk_0,m)+c_0(pk_0,m_0)](若明文数据的加减法运算对应于同态密文的乘除法运算,则c_a更新为[c_a÷c(pk_0,m)×c_0(pk_0,m_0)]);其中,由于c_a、c(pk_0,m)、c_0(pk_0,m_0)均由用户ua的公钥pk_0加密生成,因而满足加法同态特性,使得用户ua通过相应的私钥sk_0对[c_a-c(pk_0,m)+c_0(pk_0,m_0)](或上述的[c_a÷c(pk_0,m)×c_0(pk_0,m_0)])进行解密后,得到的数值必然等于(m_a-m+m_0)。类似地,用户ub在上述区块链交易中收入了转账额1,因而在区块链账本上的资产由c_b更新为[c_b+c_1(pk_1,m_1)](若明文数据的加减法运算对应于同态密文的乘除法运算,则c_b更新为[c_b×c_1(pk_1,m_1)]),并且可以通过私钥sk_1解密,得到的数值必然等于(m_b+m_1);用户uc在上述区块链交易中收入了转账额2,因而在区块链账本上的资产由c_c更新为[c_c+c_2(pk_2,m_2)](若明文数据的加减法运算对应于同态密文的乘除法运算,则c_c更新为[c_c×c_2(pk_2,m_2)]),并且可以通过私钥sk_2解密,得到的数值必然等于(m_c+m_2)。

可见,基于本说明书的同态加解密方案,可以保证用户的账户余额、区块链交易的交易额等处于隐私状态,并且能够基于同态特性而保证各个数额之间能够正确计算与维护,从而实现了区块链网络场景下的机密交易。同时,尤其是当区块链交易涉及到多个交易对象、或者涉及大量区块链交易时,本说明书的同态加解密方案可以在保障安全性的同时,极大地加快每次加解密运算的执行速度,有助于提升区块链网络的交易效率。

上述同态加解密方案可以应用于多方计算场景中,以实现多方计算场景中的安全交互。例如,目标用户可以将数据m0~ms分别对应的同态密文c0~cs发送至指定用户,以由所述指定用户对同态密文c0~cs实施符合加法同态的预设运算f();并且,所述指定用户返回的运算结果f(c0~cs)可由所述私钥sk解密,且解密后取值为f(m0~ms)。

图5是一示例性实施例提供的一种多方计算场景的交互示意图。如图5所示,仍以用户ua与用户ub为例,用户ua对应于公私钥对(pk_0,sk_0)、用户ub对应于公私钥对(pk_1,sk_1),两者之间的交互过程可以包括以下步骤:

步骤502,用户ua将数据m0~ms加密为同态密文c0~cs。

用户ua采用自身对应的公钥pk_0,基于如图1所示的实施例,对数据m0~ms进行同态加密处理,生成相应的同态密文c0~cs。此处不再赘述具体的计算公式和加密过程。

步骤504,用户ua将同态密文c0~cs发送至用户ub。

由于用户ua仅将同态密文c0~cs发送至用户ub,而无需发送原始的明文数据m0~ms,而用户ub并不持有加密使用的公钥pk_0对应的私钥sk_0,因而数据m0~ms不会向用户ub暴露。

步骤506,用户ub利用模型参数d0~ds处理同态密文c0~cs。

步骤508,用户ub将密文处理结果c_f返回用户ua。

假定用户ub通过大数据分析或人工智能等方式,训练得到一组数据处理模型的模型参数d0~ds,但是用户ub并不希望向其他用户暴露这组模型参数d0~ds。因此,通过利用这组模型参数d0~ds对同态密文c0~cs进行处理后,仅将得到的密文处理结果c_f返回用户ua,这样既可以通过模型参数d0~ds处理同态密文c0~cs,又可以避免暴露模型参数d0~ds的具体取值等信息。

其中,在利用这组模型参数d0~ds对同态密文c0~cs进行处理时,处理过程应当符合加法同态特性,即每个同态密文可以与对应的参数进行乘除等运算,但是各个同态密文之间应当采用加减运算,而不应出现同态密文之间的乘除运算。例如,数据处理模型的处理方式可以为:c0×d0+c1×d1+…+cs×ds。当然,如果明文数据的加减法运算对应于同态密文的乘除法运算,则数据处理模型的处理方式可以为:c0d0×c1d1×…×csds

步骤510,用户ua对密文处理结果c_f解密得到明文处理结果m_f。

基于加法同态特性,使得用户ub通过上述模型参数d0~ds对同态密文c0~cs进行处理后,再通过私钥sk_0对密文处理结果c_f进行解密,得到的明文处理结果m_f相当于通过上述模型参数d0~ds对数据m0~ms进行处理得到的结果。

因此,基于本说明书的同态加解密方案,使得在用户ua与用户ub之间的多方计算场景下,既可以确保用户ua持有的数据m0~ms不向用户ub暴露、用户ub持有的模型参数d0~ds不向用户ua暴露,又可以使得用户ua最终能够得到模型参数d0~ds对数据m0~ms进行处理后的结果m_f。同时,尤其是涉及到对较多数据进行同态加密的情况下,基于本说明书的同态加解密方案,可以显著加快加解密速度,从而提升多方计算效率。

图6是一示例性实施例提供的一种设备的示意结构图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行,在逻辑层面上形成实现隐私保护的数据同态加密装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图7,在软件实施方式中,该实现隐私保护的数据同态加密装置可以包括:

公钥获取单元71,获取目标用户对应的公钥pk={n,h},其中h为随机数空间z*n内大小为k的预设循环群的生成元,k的长度为i比特、n的长度为n比特,且i<<n;

随机数选取单元72,选取随机数r,使得hr属于所述预设循环群;

数据处理单元73,通过所述公钥pk和所述随机数r对所述目标用户对应的待加密数据m进行处理,生成同态密文c=(1+n)m·(hrmodn)n=(1+n)m·(hnmodn2)rmodn2

密文提供单元74,将所述同态密文c提供至所述目标用户,所述同态密文c可由所述目标用户通过私钥sk解密得到数据m,所述私钥sk的取值为α=a·k,a为预设非零数值。

可选的,随机数空间的二次剩余群qrn为群与群的内直积,且其中,所述预设循环群为群与群<-1>的内直积,群<-1>为随机数空间内由元素(-1modn)生成的二阶循环群,a=1/2。

可选的,当n=p·q,p、q是长度为n/2比特的素数,且p≡q≡3mod4,gcd(p-1,q-1)=2时,满足:α=pq,β=(p-1)(q-1)/(4pq),gcd(α,β)=1,且p|(p-1)、q|(q-1),p、q是长度为i/2比特的素数。

可选的,h=-ymodn,其中y∈随机数空间

可选的,数据处理单元73具体用于:

以j比特为单位长度对随机数r进行分段,形成i/j个数值段ru,u∈[0,(i/j)-1];

查询预生成的取值列表,所述取值列表中包含(hnmodn2)的(2ju·v)次幂的取值,v∈[0,2j-1];

根据查询到的(hnmodn2)的ru次幂的取值,合并生成[(hnmodn2)rmodn2],以进一步生成同态密文c。

可选的,n=2048、224≤i<<n。

可选的,还包括:

密文发送单元75,将数据m0~ms分别对应的同态密文c0~cs发送至指定用户,以由所述指定用户对同态密文c0~cs实施符合加法同态的预设运算f();

其中,所述指定用户返回的运算结果f(c0~cs)可由所述私钥sk解密,且解密后取值为f(m0~ms)。

可选的,还包括:

交易创建单元76,根据交易对象q_0~q_t分别对应的转账额m0~mt,创建所述目标用户与交易对象q_0~q_t之间的区块链交易,所述区块链交易中包含转账额m0~mt分别对应的同态密文c0~ct,t≥0;其中,所述目标用户、交易对象q_0~q_t的账户余额在区块链账本上被分别记录为相应的同态密文d、d_0~d_t;

交易提交单元77,向区块链网络提交所述区块链交易;其中,当所述区块链交易完成后,区块链账本上记录的同态密文d与(c0+…+ct)运算、d_0与c0运算、…、d_t与ct运算,使所述目标用户的账户余额减小(m0+…+mt)、交易对象q_0~q_t的账户余额分别减小c0~ct。

图8是一示例性实施例提供的一种设备的示意结构图。请参考图8,在硬件层面,该设备包括处理器802、内部总线804、网络接口806、内存808以及非易失性存储器810,当然还可能包括其他业务所需要的硬件。处理器802从非易失性存储器810中读取对应的计算机程序到内存808中然后运行,在逻辑层面上形成实现隐私保护的数据同态解密装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图9,在软件实施方式中,该实现隐私保护的数据同态解密装置可以包括:

密文获取单元91,获取同态密文c=(1+n)m·(hrmodn)n=(1+n)m·(hnmodn2)rmodn2,所述同态密文c由目标用户对应的公钥pk={n,h}和随机数r对数据m进行处理后得到;其中,h为随机数空间内大小为k的预设循环群的生成元,hr属于所述预设循环群,k的长度为i比特、n的长度为n比特,且i<<n;

密文解密单元92,根据所述目标用户的私钥sk对所述同态密文c进行解密,得到加密前的数据其中所述私钥sk的取值为α=a·k,a为预设非零数值;

数据输出单元93,将解密得到的数据m输出至所述目标用户。

可选的,随机数空间的二次剩余群qrn为群与群的内直积,且其中,所述预设循环群为群与群<-1>的内直积,群<-1>为随机数空间内由元素(-1modn)生成的二阶循环群,a=1/2。

可选的,当n=p·q,p、q是长度为n/2比特的素数,且p≡q≡3mod4,gcd(p-1,q-1)=2时,满足:α=pq,β=(p-1)(q-1)/(4pq),gcd(α,β)=1,且p|(p-1)、q|(q-1),p、q是长度为i/2比特的素数。

可选的,h=-ymodn,其中y∈随机数空间

可选的,n=2048、224≤i<<n。

可选的,还包括:

密文发送单元94,将数据m0~ms分别对应的同态密文c0~cs发送至指定用户,以由所述指定用户对同态密文c0~cs实施符合加法同态的预设运算f();

所述密文解密单元92具体用于接收并解密所述指定用户返回的运算结果f(c0~cs),且解密后取值为f(m0~ms)。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

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