保护两方数据隐私的协同计算方法、系统及装置
技术领域
本说明书实施例涉及信息技术领域,特别涉及保护两方数据隐私的协同计算方法、系统及装置。
背景技术
在一些场景下,隐私数据被拆分成多份,多个参与方各执一份,以避免隐私泄露。在多方联合计算隐私数据的函数值的过程中,既要保证计算结果的准确度,也要有效保护隐私。
目前,希望提供一种能够实现两方安全计算隐私数据的指数函数值的方案。
发明内容
本说明书实施例之一提供一种保护两方数据隐私的协同计算方法,其中,两方协同计算的指数函数值的指数与隐私数据负相关,隐私数据包括输入商群中的第一分片和第二分片,隐私数据的第一分片存储于第一方的计算设备,隐私数据的第二分片存储于第二方的计算设备;所述方法由第一方的计算设备执行,其包括:根据安全比较协议与第二方的计算设备交互,以获得隐私数据相对目标阈值的第一比较结果的第一分片;将隐私数据的第一分片相对目标阈值取模,得到第一取模结果;根据安全计算协议与第二方的计算设备交互,以基于第一取模结果以及存储于第二方的计算设备的第二取模结果,获得第一输出分片;根据安全计算协议与第二方的计算设备交互,以基于第一比较结果的第一分片、第一输出分片,以及存储于第二方的计算设备的第一比较结果的第二分片、第二输出分片,获得所述指数函数值在输出商群中的等效值的第一分片;其中,隐私数据不小于目标阈值时,第一比较结果使得所述等效值为0。
本说明书实施例之一提供一种保护两方数据隐私的协同计算系统,其中,两方协同计算的指数函数值的指数与隐私数据负相关,隐私数据包括输入商群中的第一分片和第二分片,隐私数据的第一分片存储于第一方的计算设备,隐私数据的第二分片存储于第二方的计算设备;所述系统在第一方的计算设备上实现,其包括:第一安全比较模块,用于根据安全比较协议与第二方的计算设备交互,以获得隐私数据相对目标阈值的第一比较结果的第一分片;第一取模模块,用于将隐私数据的第一分片相对目标阈值取模,得到第一取模结果;第一输出分片计算模块,用于根据安全计算协议与第二方的计算设备交互,以基于第一取模结果以及存储于第二方的计算设备的第二取模结果,获得第一输出分片;第一等效计算模块,用于根据安全计算协议与第二方的计算设备交互,以基于第一比较结果的第一分片、第一输出分片,以及存储于第二方的计算设备的第一比较结果的第二分片、第二输出分片,获得所述指数函数值在输出商群中的等效值的第一分片;其中,隐私数据不小于目标阈值时,第一比较结果使得所述等效值为0。
本说明书实施例之一提供一种保护两方数据隐私的协同计算装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书中任一实施例所述的保护两方数据隐私的协同计算方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1为根据本说明书一些实施例所示的计算系统的应用场景示意图;
图2为根据本说明书一些实施例所示的保护两方数据隐私的协同计算方法的示例性流程图;
图3为根据本说明书一些实施例所示的计算第一输出分片z_L的示例性流程图;
图4为根据本说明书一些实施例所示的计算第一可能值y0的第一分片y0_L和第二可能值y1的第一分片y1_L的方法的示例性流程图;
图5为根据本说明书一些实施例所示的按位截断示意图;
图6为根据本说明书一些实施例所示的安全乘法协议的交互示意图;
图7为根据本说明书一些实施例所示的保护两方数据隐私的协同计算系统的示例性框图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
为了便于阐述本说明书中的实施例,首先对其中涉及的数学知识进行介绍。
在数学中,群(以下用G表示)规定有一种二元运算,通常可以使用乘法符号“*”(在无歧义时可省略)或加法符号“+”作为该二元运算的符号,但需要注意的是,该二元运算不一定等同于四则运算中的乘法或加法。若干元素通过一次或多次二元运算产生的结果可称为合值。
群的二元运算满足:1.封闭律,对于G中的任意元素a、b,a*b仍在G中;2.结合律,对于G中的任意元素a、b,有(a*b)*c=a*(b*c);3.有单位元,G中存在元素e,使得e*a=a*e=a;4.有逆元,对于G中的任一元素a,G中存在b,使得a*b=b*a=e,a、b互为逆元。值得说明的是,对于“+”表示的二元运算,e也可称为零元,逆元也可称为负元,对于G中的任意元素a、b,a-b可以表示a+(b的逆元)。阿贝尔群除了具有以上4个性质外,还具有交换律,即对于阿贝尔群中的任意元素a、b,a*b=b*a。
进一步地,本说明书涉及一种基于整数阿贝尔群的商群,其数学表示可以是G:=2- kZ/2N-kZ,其中,Z为整数集合,k为非负整数,N为正整数且N-k>0。商群G中的元素为非负的二进制定点数,其小数位有k位且整数位有N-k位,在计算设备中可使用1个N位(bit)的存储单元来保存商群G中任一定点数的值。商群G的二元运算包括群加法和群乘法:群加法的数学表示为(a+b)mod2N-k,在无歧义的时候可简化为a+b, mod表示左边的值相对右边的值取模,前者的“+”属于四则运算;群乘法的数学表示为(a*b)mod2N-k,在无歧义时可简化成a*b或ab,前者的“*”属于四则运算。
应当注意的是,除非本说明书中限定了所述的和值是基于群加法得到的/所述的乘积是基于群乘法得到的,否则应将所述的和值/乘积理解为四则运算中的概念。另外,由于四则运算中的和值在本说明书中直接用和值表述,基于群加法的合值以及基于群加法的分片在本说明书中可直接简化为合值及分片,不会引起歧义。
在一些分布式场景中,需要多方安全计算某函数的值,这里的安全可以指输出结果的正确性和输入信息、输出信息的保密性。例如,在一些机器学习场景中,一方持有私密的特征数据,另一方持有私密的标签数据。若直接计算关于私密数据(特征数据/标签数据)的函数值时,一旦该函数值被泄露可能导致私密数据被反推出。为此,每一方可以将自身持有的私密数据x拆分成两份,保留其中一份x_L并将另一份x_R发送给对方,x_L与x_R的合值即x。然后,两方运行安全计算协议,各自得到该函数值的一个分片。两方得到的分片的合值即该函数值,攻击者若想获知隐私数据需要得到两方的分片。
具体来说,在逻辑回归、神经网络等场景中,需要两方安全计算指数与输入呈负相关的指数函数(如,底数为自然对数e的e-x)的值。以e-x(也可用exp(-x)表示)为例,x表示作为输入的隐私数据,x_L为第一方的输入分片,x_R为第二方的输入分片,假设x_L、x_R和x均在商群2-kZ/2N-kZ中,即满足x=(x_L+x_R)mod2N-k。注意到,e-x可以基于e-x_L和e-x_R的乘积得到,即,第一方的输出分片可基于e-x_L得到,第二方的输出分片可基于e-x_R得到。由于e-x的递减性,当任一方的输入分片过大时,其输出分片取0,导致两方输出分片的合值为0,可能与e-x的实际值偏差过大。例如,当N=64,k=16,x=0,x_L=x_R=247时,由于e-x_L=e-x_R<2-64,若将e-x_L和e-x_R存储为N位(bit)定点数,则e-x_L和e-x_R都被存储为0,导致两方输出分片的合值为0,但实际上e-x=1。
本说明书中的实施例提供了保护两方数据隐私的协同计算方法、系统及装置,针对隐私数据及其分片的大小分情况计算指数函数值的分片,以在保护数据隐私的同时保证计算结果的精度。
图1为根据本说明书一些实施例所示的计算系统的应用场景示意图。如图1所示,计算系统100可以包括计算设备110、计算设备120以及网络140,计算设备110和计算设备120可以是参与两方安全计算的两方的设备。
计算设备可以包括各类具备计算能力的设备,如服务器。在一些实施例中,服务器可以是独立的服务器或者服务器组,该服务器组可以是集中式的或者分布式的。在一些实施例中,服务器可以是区域的或者远程的。在一些实施例中,服务器可在云平台上执行。例如,该云平台可包括私有云、公共云、混合云、社区云、分散式云、内部云等中的一种或其任意组合。
网络140连接系统的各组成部分,使得各部分之间可以进行通讯。在系统中各部分之间的网络可以包括有线网络和/或无线网络。例如,网络140可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigBee)、近场通信(NFC)、设备内总线、设备内线路、线缆连接等或其任意组合。每两个部分之间的网络连接可以是采用上述一种方式,也可以是采取多种方式。
在一些实施例中,计算系统100还可以包括随机数服务器130,随机数服务器130可协助两方计算设备运行安全计算协议,如安全乘法协议。关于安全乘法协议的细节,可以参考图6及其相关描述。
图2为根据本说明书一些实施例所示的保护两方数据隐私的协同计算方法的示例性流程图。隐私数据x包括第一分片x_L和第二分片x_R,x_L存储于第一方的计算设备110,x_R存储于第二方的计算设备120。两方协同计算的指数函数值的指数与输入呈负相关。作为输入的隐私数据及其分片所在的商群可称为输入商群,作为输出的指数函数值的等效值(记为h)及其分片(包括h_L和h_R)所在的商群可称为输出商群。由于计算过程中可能涉及数值近似等处理,计算出的结果不一定等于指数函数值本身,因此本说明书中将计算出的结果称为指数函数的等效值,该等效值有可能等于指数函数值在输出商群中的近似值,在实际应用中该等效值可以替代指数函数值本身参与后续的运算。在一些实施例中,输入商群可以是2-kZ/2N-kZ,其中,k为非负整数,N为计算设备中存储单元的二进制位数且N-k>0。在一些实施例中,该指数函数可以是e-x,输出商群可以是2-N+1Z/2Z,此输出商群包含e-x(x不小于0)的值域(0,1]。流程200可以由第一方的计算设备110执行,第二方的计算设备120的处理流程可以参考流程200。流程200可以包括:
步骤210,根据安全比较协议与第二方的计算设备120交互,以获得隐私数据相对目标阈值的第一比较结果s的第一分片s_L。在一些实施例中,步骤210可以由第一安全比较模块710实现。
标阈值可以取指数函数值在输出商群中的近似值为0时隐私数据的值。以指数函数e-x为例,根据引理:若m>log2N+log2(ln2), 则exp(-2m)<2-N,可以推出:当x≥2m时,e-x在输出商群2-N+1Z/2Z中的近似值为0,其中,2m即目标阈值。在一些实施例中,可以令m=floor(log2N+log2(ln2))+1,其中,floor表示向下取整。
应当理解,第二方的计算设备120交互后会获得第一比较结果s的第二分片s_R,s_L和s_R的合值即s。在后续的步骤S240中,可以通过设计第一比较结果s的取值等,使得:隐私数据不小于目标阈值时,指数函数值的等效值h的第一分片h_L和第二分片h_R的合值为0。从而,可以保证隐私数据不小于目标阈值时计算结果的准确度。
在一些实施例中,安全比较协议具体实现方式可以参考文献资料“GeoffroyCouteau. New Protocols for Secure Equality Test and Comparison. AppliedCryptography and Network Security. Lecture Notes in Computer Science Volume10892 II. Page 303-320. 2018.”(作者Geoffroy Couteau.安全等价测试和比较的新协议.应用于密码学和网络安全.计算机科学讲义卷10892II.第303页至第320页.2018年版)。
步骤220,将第一分片x_L相对目标阈值取模,得到第一取模结果x_L'。在一些实施例中,步骤220可以由第一取模模块720实现。
应当理解,第二方的计算设备120会将第二分片x_R相对目标阈值取模,得到第二取模结果x_R'。
取模后,得到的第一取模结果x_L'和第二取模结果x_R'小于目标阈值,使得x_L'和x_R'的指数函数值在输出商群中的近似值均不为0。以指数函数e-x为例,将x_L和x_R相对2m取模后,e- x_L'和e- x_R'在输出商群2-N+1Z/2Z中的近似值均不为0。
步骤230,根据安全计算协议与第二方的计算设备120交互,以基于第一取模结果x_L'以及存储于第二方的计算设备120的第二取模结果x_R',获得第一输出分片z_L。在一些实施例中,步骤230可以由第一输出分片计算模块730实现。
应当理解,第二方的计算设备120会获得第二输出分片z_R。
前面提到,在隐私数据不小于目标阈值的情况下,可以通过设计s的取值等保证计算结果的准确性。那么,步骤230中的安全计算仅需保证:在隐私数据小于目标阈值的情况下,获得的第一输出分片z_L和第二输出分片z_R的合值相较指数函数值的真实值的准确度。
关于步骤230的具体实现方式,可以参考图3及其相关描述。
步骤240,根据安全计算协议与第二方的计算设备120交互,以基于第一比较结果s的第一分片s_L、第一输出分片z_L,以及存储于第二方的计算设备120的第一比较结果s的第二分片s_R、第二输出分片z_R,获得指数函数值的等效值h的第一分片h_L。在一些实施例中,步骤240可以由第一等效计算模块740执行。
应当理解,第二方的计算设备120会获得指数函数值的等效值h的第一分片h_L。需要注意的是,h、h_L、h_R都属于输出商群。在一些实施例中,第一比较结果s及其分片可以占用1个N(bit)存储单元,具体地,可以是商群Z/2NZ中的元素。
在一些实施例中,当隐私数据不小于目标阈值时,s=0(即s_L和s_R的合值为0),而当隐私数据小于目标阈值时,s=1(即s_L和s_R的合值为1)。相应地,h_L+h_R=(s_L+s_R)*(z_L+z_R),结合群的性质可知h_L+h_R=s_L*z_L+s_L*z_R+s_R*z_L+s_R*z_R,这里“+”和“*”分别为群加法和群乘法的符号。该多项式中,s_L*z_L可在第一方的计算设备110本地计算,s_R*z_R可在第二方的计算设备120本地计算,对于s_L*z_R和s_R*z_L,可以由两方运行安全乘法协议,第一方的计算设备110获得s_L*z_R的第一分片和s_R*z_L的第一分片,第二方的计算设备120获得s_L*z_R的第二分片和s_R*z_L的第二分片。从而,第一方的计算设备110按群加法计算s_L*z_R的第一分片、s_R*z_L的第一分片以及s_L*z_L的合值,得到第一分片h_L,第二方的计算设备120按群加法计算s_R*z_R、s_L*z_R的第二分片和s_R*z_L的第二分片的合值,得到第一分片h_R。
值得注意的是,在一些实施例中,流程200隐含了m<N-k。实际上,当m=N-k时,无需执行步骤210、步骤220及步骤240,两方也可基于第一分片x_L和第二分片x_R安全计算,得到第一分片h_L和第二分片h_R作为结果,计算方式可参考步骤230的相关描述。具体地,第一方的计算设备110可将第一分片x_L作为第一取模结果x_L'(第二方的计算设备120相应将第二分片x_R作为第二取模结果x_R')执行步骤230,获得第一输出分片z_L作为第一分片h_L(第二方的计算设备120相应获得第二输出分片z_R作为第一分片h_R)。而当m>N-k时,两方可直接安全计算第一分片x_L的指数函数值和第二分片x_R的指数函数值的乘积,第一方的计算设备110获得该乘积在输出商群中的等效值的第一分片(即第一分片h_L),第二方的计算设备120获得该乘积在输出商群中的等效值第二分片(即第一分片h_R)。以指数函数e-x为例,第一方计算e- x_L',第二方计算e- x_R'。两方安全计算,第一方得到e- x_L'*e- x_R'在输出商群中的第一分片(即第一分片h_L),第二方得到e- x_L'*e- x_R'在输出商群中的第二分片(即第二分片h_R),计算方式可参考图6及其相关描述。当然,当m≥N-k时,按m<N-k时的计算方式也可以得到相同的计算结果,以及,当m>N-k时,按m=N-k时的计算方式也可以相同的计算结果。
另外,两方的计算设备可以使用1个N位(bit)存储单元保存第一比较结果的分片,以与同时参与计算的第一输出分片z_L和第二输出分片z_R的二进制位数保持一致。
图3为根据本说明书一些实施例所示的计算第一输出分片z_L的示例性流程图。流程300可以由第一方的计算设备执行,流程300可以包括:
步骤310,根据安全比较协议与第二方的计算设备120交互,以获得第二比较结果t的第一分片t_L,第二比较结果t为第一取模结果x_L'与第二取模结果x_R'的和值相对目标阈值的比较结果。
步骤320,根据安全计算协议与第二方的计算设备120交互,以基于第一取模结果x_L'以及存储在第二方的计算设备120中的第二取模结果x_R',获得输出商群中的第一可能值y0的第一分片y0_L和第二可能值y1的第一分片y1_L。
其中,当隐私数据x小于目标阈值时:第一可能值y0为第一取模结果与第二取模结果的和值小于目标阈值时所述指数函数值在输出商群中的等效值,第二可能值y1为第一取模结果与第二取模结果的和值不小于目标阈值时所述指数函数值在输出商群中的等效值。
应当理解,第二方的计算设备120会获得第二比较结果t的第二分片t_R、第一可能值y0的第二分片y0_R和第二可能值y1的第二分片y1_R。
前面提到,步骤230中的交互仅需在隐私数据小于目标阈值的情况下保证:获得的第一输出分片和第二输出分片的合值相较隐私数据的指数函数值的实际值的准确度。当隐私数据x小于目标阈值时,第一取模结果x_L'和第二取模结果x_R'与隐私数据x的关系可表示为x=(x_L'+ x_R') mod M,其中,M表示目标阈值。具体地,由于第一取模结果x_L'和第二取模结果x_R'均小于目标阈值M,可知:x_L'+ x_R'<M时,x=x_L'+ x_R';x_L'+ x_R'≥M时,x=x_L'+ x_R'-M。从而,当隐私数据x小于目标阈值M(x<M)时,需要进一步区分x_L'+ x_R'<M和x_L'+ x_R'≥M这两种情况。因此,步骤320中所述的第一可能值y0和第二可能值y1与这两种情况一一对应。以指数函数e-x为例,第一可能值y0和第二可能值y1可以与e-x_L'*e-x_R'和exp(2m)e-x_L'*e-x_R'一一对应。
关于计算第一可能值y0的第一分片y0_L和第二可能值y1的第一分片y1_L的具体方式,可以参考图4及其相关描述。
步骤330,根据安全计算协议与第二方的计算设备120交互,以基于第二比较结果t的第一分片t_L、第一可能值y0的第一分片y0_L、第二可能值y1的第一分片y1_L,以及存储于第二方的计算设备120的第二比较结果t的第二分片t_R、第一可能值y0的第二分片y0_R、第二可能值y1的第二分片y1_R,获得第一输出分片z_L。
应当理解,第二方的计算设备120会获得第二输出分片z_R。在一些实施例中,第二比较结果t及其分片可以占用1个N(bit)存储单元,具体地,可以是商群Z/2NZ中的元素。
在一些实施例中,两方可以安全计算t*y0+(1-t)*y1=(t_L +t_R)*(y0_L+ y0_R)+(1-(t_L +t_R))*(y1_L+ y1_R),以获得第一输出分片z_L和第二输出分片z_R,其中,t_L表示第二比较结果的第一分片、t_R表示第二比较结果的第二分片、y0_L表示第一可能值的第一分片、y0_R表示第一可能值的第二分片、y1_L表示第二可能值的第一分片、y1_R表示第二可能值的第二分片,“-”表示左边元素+(右边元素的负元),“+”为群加法的符号,“*”为群乘法的符号。前面提到,当隐私数据x小于目标阈值M时:第一可能值为第一取模结果与第二取模结果的和值小于目标阈值时所述指数函数值在输出商群中的等效值,该第二可能值为第一取模结果与第二取模结果的和值不小于目标阈值时所述指数函数值在输出商群中的等效值。,由此可以使得:x_L'+ x_R'<M时,t=1;x_L'+ x_R'≥M时,t=0。如此,当隐私数据x小于目标阈值M(x<M)时,无论满足x_L'+ x_R'<M还是x_L'+ x_R'≥M,两方安全计算获得的第一输出分片z_L和第二输出分片z_R的合值都等于指数函数值在输出商群中的等效值h。
与步骤240类似地,可以将(t_L +t_R)*(y0_L+ y0_R)+(1-(t_L +t_R))*(y1_L+y1_R)展开,并对涉及双方私密数值的乘积项,使用安全乘法协议计算出对应乘积的加性分片,由双方各执一片。双方各自将本地计算的乘积项与通过安全乘法协议计算出的分片按群加法求和,各自得到第一输出分片z_L和第二输出分片z_R。
图4为根据本说明书一些实施例所示的计算第一可能值y0的第一分片y0_L和第二可能值y1的第一分片y1_L的方法的示例性流程图。流程400可以由第一方的计算设备110执行,流程400可以包括:
步骤410,计算第一取模结果x_L'的指数函数值,得到第一数值u_L。
应当理解,第二方的计算设备120会计算第二取模结果x_R'的指数函数值,得到第二数值u_R。
在一些实施例中,第一数值u_L和第二数值u_R在计算设备中可以按浮点数存储。
步骤420,按预设比例放大第一数值u_L,得到目标商群中的第一放大结果v_L,该第一放大结果v_L满足预设精度。
应当理解,第二方的计算设备120会按该预设比例放大第二数值u_R,得到第二放大结果v_R,该第二放大结果v_R满足该预设精度。
在一些实施例中,该预设精度可以取决于保存计算结果使用的二进制位数。例如,指数函数为e-x,m=floor(log2N+log2(ln2))+1,floor表示向下取整,目标阈值2m=2Nln2,假设计算设备使用若干N位(bit)存储单元保存计算结果,可以将第一数值和第二数值分别输入函数floor(23N-1x),得到目标商群中的第一放大结果v_L和第二放大结果v_R。以放大第一数值u_L为例,由于u_L=e-x_L'>exp(-2m)≥2-2N,则23N-1e-x_L'>2N-1,即,若使用足够数量的N位(bit)存储单元保存23N-1e-x_L'的取整结果,保存的取整结果具有至少N位(bit)有效数字。
考虑到后续两方要在同一商群(即目标商群)中基于v_L、v_R安全计算v_L*v_R,可以基于放大和相乘对数值的影响确定目标商群的数值范围。以指数函数e-x为例,放大后得到的v_L、v_R最大值均为23N-1,v_L*v_R的最大值为26N-2,可以使用至少6个N位(bit)存储单元保存v_L、v_R。在一些实施例中,可以使用6个N位(bit)存储单元保存v_L、v_R,目标商群可以是Z/26NZ。
步骤430,根据安全计算协议与第二方的计算设备120交互,以获得目标商群中v_L*v_R的第一分片w0_L。
v_L*v_R表示第一放大结果v_L与第二放大结果v_R的乘积。应当理解,第二方的计算设备120会获得目标商群中v_L*v_R的第二分片w0_R。另外,v_L*v_R及其分片w0_L、w0_R对应x_L'+ x_R'<M。
关于计算目标商群中v_L*v_R的第一分片w0_L的具体方式,可以参考图6及其相关描述。
步骤440,基于目标阈值M与目标商群中v_L*v_R的第一分片w0_L,获得目标商群中的第一待处理值w1_L。
应当理解,第二方的计算设备120会基于目标阈值M与目标商群中v_L*v_R的第二分片w0_R,获得目标商群中的第二待处理值w1_R。另外,w1_L、w1_R对应x_L'+ x_R'≥M,若忽略取整对数值的影响,w1_L、w1_R与w0_L、w0_R相差目标阈值M的指数函数值倍。以指数函数e-x为例,第一方可计算floor(exp(2m)w0_L),得到目标商群Z/26NZ中的第一待处理值w1_L,第二方可计算floor(exp(2m)w0_R),得到目标商群Z/26NZ中的第一待处理值w1_R。
步骤450,将目标商群中v_L*v_R的第一分片w0_L按位截断,得到输出商群中第一可能值y0的第一分片y0_L。
应当理解,第二方的计算设备120会将目标商群中v_L*v_R的第二分片w0_R按位截断,得到输出商群中第一可能值y0的第二分片y0_R。
步骤460,将目标商群中的第一待处理值w1_L按位截断,得到输出商群中第二可能值y1的第一分片y1_L。
应当理解,第二方的计算设备120会将目标商群中的第二待处理值w1_R按位截断,得到输出商群中第二可能值y1的第二分片y1_R。
根据前述内容可知,由于目标商群中的第一分片w0_L、第一待处理值w1_L、第二分片w0_R和第二待处理值w1_R是经历过数值的放大和相乘得到的,会占用较多的存储单元(数值精度过高),因此希望通过截断处理将以上数值用少量的存储单元保存起来,截断时保证结果准确性和需要的数值精度即可。
以指数函数e-x为例,目标商群可以是Z/26NZ,其中的第一分片w0_L、第一待处理值w1_L、第二分片w0_R和第二待处理值w1_R占用6个N位(bit)存储单元,而对于第一输出分片和第二输出分片使用1个N位(bit)存储单元即可满足精度需求。基于此,按位(bit)截断后可保留N位(bit)。
在保留N位(bit)的基础上,按位(bit)截断还需要保证截断的二进制位不影响结果的准确性。考虑到要计算的e-x(隐私数据x为非负数)的取值范围为(0,1],待截断数值(第一分片w0_L、第一待处理值w1_L、第二分片w0_R和第二待处理值w1_R中的任一个)占用6个N位(bit)存储单元,可看作商群Z/26NZ中的元素,若忽略计算过程中取整对数值的影响,待截断数值相比要计算的e-x放大了26N-2倍,因此若想使得待截断数值经截断后合值可以恢复e-x的大小,需要将待截断数值再缩小26N-2倍,但是由于数值始终保存在6个N位(bit)存储单元中(每个bit保存的二进制数不变),只需将待截断数值看成商群2-(6N-2)Z/22Z中的元素。考虑到要计算的e-x的取值范围为(0,1],因此任一方保存的待截断数值的小数点前第二位(即最高位)无论如何取值,两方的待截断数值的合值的最高位都是0。因此,如图5所示,以小数点位于存储单元(如,6×N bit)第二位与第三位(最高位为第一位)之间的定点数存储方式为例,可以将待截断数值的最高位截去,又因截断后保留N位(bit),可以在低位做截断处理(具体地,截去从最低位开始的连续5N-1位),仅保留小数点后N-1位(bit)。截断得到的数值可看作输出商群2-(N-1)Z/2Z中的元素。需要说明的是,低位的截断可能使两方数值的合值产生2-(N-1)的数值偏差,但2-(N-1)这种量级的数值偏差对计算结果准确度的影响可以忽略。
图6为根据本说明书一些实施例所示的安全乘法协议的交互示意图。安全乘法协议可以将基于群乘法的两方私密数值的乘积转换成基于群加法的两个分片,两方各执一片,且确保计算过程中不会泄露任一方的私密数值。如图6所示,第一方的计算设备110存储有私密数值a,第二方的计算设备存储有私密数值b,两方想要安全计算a*b,第一方的计算设备110获得a*b的第一分片c0,第二方的计算设备120获得a*b的第一分片c1。由于安全乘法协议遵循群加法和群乘法,图6中涉及的数值(如,a、b、c、e、f、u、v、z)及其分片都属于同一商群。下面详细说明计算过程。
随机数服务器130生成待发送给第一方的计算设备110的第一随机数u,以及待发送给第二方的计算设备120的第二随机数v。随机数服务器130计算uv,并将uv拆分成待发送给第一方的计算设备110的第一分片z0,以及待发送给第二方的计算设备120的第二分片z1。u、v、z0、z1满足uv=z0+z1。随机数服务器130将第一随机数u和第一分片z0发送给第一方的计算设备110,将第二随机数v和第二分片z1发送给第二方的计算设备120。
第一方的计算设备110计算a-u(记为e),并将e发送给第二方的计算设备120。第二方的计算设备120计算b-v(记为f),并将f发送给第一方的计算设备110。
第一方的计算设备110计算uf+z0,作为a*b的第一分片c0。第二方的计算设备120计算eb+z1,作为a*b的第一分片c1。可以推算,c0+c1=uf+eb+z0+z1=uf+eb+uz=u(b-v)+(a-u)b+uz=ab,即c0+c1=ab。
应当注意的是,以上有关安全乘法协议的描述中,“-”表示左边元素+(右边元素的负元),“+”为群加法的符号,“*”为群乘法的符号且可省略。
为了更直观地理解本说明书中的实施例,下面提供一个两方安全计算指数函数值的具体例子。
假设:指数函数为e-x,计算设备的存储单元的比特数为N=4,目标阈值M=2m=4(m=floor(log2N+log2(ln2))+1 = 2),隐私数据x、第一分片x_L、第二分片x_R位于输入商群Z/24Z,x=210=00102,x_L =(24-1)10=11112,x_R =(22-1)10=00112,输出商群为2-3Z/2Z。
基于此,第一方的计算设备110计算出的数值包括:第一取模结果x_L'=(22-1)10=00112,第一数值u_L= e-x_L'=e-3(按浮点数保存),第一放大值v_L= floor(23N-1u_L)=floor(211e-3)=10110=0000 0000 0000 0000 0110 01012。第二方的计算设备120计算的数值包括:第二取模结果x_R'=(22-1)10=00112,第二数值u_R= e-x_R'=e-3(按浮点数保存),第二放大值v_R= floor(23N-1u_R)=floor(211e-3)=10110=0000 0000 0000 0000 0110 01012。
进一步地,两方计算设备在随机数服务器130的协助下安全计算v_L*v_R。其中,假设:随机数服务器生成待发送给第一随机数u=0000 0000 0000 0000 0000 00012,以及待发送给第二方的计算设备120的第二随机数v=0000 0000 0000 0000 0000 00012。随机数服务器130计算uv,并将uv拆分成待发送给第一方的计算设备110的第一分片z0=0000 00000000 0000 0000 00012,以及待发送给第二方的计算设备120的第二分片z1=0000 00000000 0000 0000 00002。
第一方的计算设备110计算e=u_L-u=0000 0000 0000 0000 0110 01002,并将e发送给第二方的计算设备120。第二方的计算设备120计算f=u_R-v=0000 0000 0000 00000110 01002,并将f发送给第一方的计算设备110。第一方的计算设备110计算v_L*v_R的第一分片w0_L=uf+z0=0000 0000 0000 0000 0110 01012,第二方的计算设备120计算v_L*v_R的第二分片w0_R=eb+z1=0000 0000 0010 0111 0111 01002。第一方的计算设备110计算第一待处理值w1_L=floor(e4w0_L)=0000 0000 0001 0101 100010102,第二方的计算设备120计算第二待处理值w1_R=floor(e4w0_R)= 0000 1000 0110 1010 0001 00012。第一方的计算设备110按位截断得到w1_L后得到第二可能值的第一分片y1_L=0.0002,第二方的计算设备120按位截断得到w1_R后得到第二可能值的第二分片y1_R=0.0012。
由于x<M且x_L'+ x_R'≥M,第一方的计算设备110计算出的指数函数值的等效值的第一分片h_L和第二方的计算设备120计算出的指数函数值的等效值的第二分片h_R的合值h=h_L+h_R=y1_L+y1_R=0.0012。
可以得到,0.0012相对指数函数值的真实值 e-2的误差约等于0.010310,误差小于2-4,满足输出商群2-3Z/2Z对应的精度。
应当注意的是,上述有关流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对一个或多个流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。
图7为根据本说明书一些实施例所示的保护两方数据隐私的协同计算系统的示例性框图。系统700可在第一方的计算设备110上实现。如图7所示,系统700可以包括第一安全比较模块710、第一取模模块720、第一输出分片计算模块730和第一等效计算模块740。
在一些实施例中,第一安全比较模块710可以用于根据安全比较协议与第二方的计算设备120交互,以获得隐私数据相对目标阈值的第一比较结果s的第一分片s_L。
在一些实施例中,第一取模模块720可以用于将第一分片x_L相对目标阈值取模,得到第一取模结果x_L'。
在一些实施例中,第一输出分片计算模块730可以用于根据安全计算协议与第二方的计算设备120交互,以基于第一取模结果x_L'、存储于第二方的计算设备120的第二取模结果x_R',获得第一输出分片z_L。
在一些实施例中,第一等效计算模块740可以用于根据安全计算协议与第二方的计算设备120交互,以基于第一比较结果s的第一分片s_L、第一输出分片z_L,以及存储于第二方的计算设备120的第一比较结果s的第二分片s_R、第二输出分片z_R,获得指数函数值的等效值h的第一分片h_L。
应当理解,在第二方的计算设备120上实现的保护两方数据隐私的协同计算系统及其模块与系统700及其模块具有相同或类似的功能。具体地,在第二方的计算设备120上实现的所述系统可以包括第二安全比较模块、第二取模模块、第二输出分片计算模块和第二等效计算模块。
在一些实施例中,第二安全比较模块可以用于根据安全比较协议与第一方的计算设备110交互,以获得隐私数据相对目标阈值的第一比较结果s的第二分片s_R。
在一些实施例中,第二取模模块可以用于将第二分片x_R相对目标阈值取模,得到第二取模结果x_R'。
在一些实施例中,第二输出分片计算模块可以用于根据安全计算协议与第一方的计算设备110交互,以基于第二取模结果x_R'、存储于第一方的计算设备110的第一取模结果x_L',获得第二输出分片z_R。
在一些实施例中,第二等效计算模块可以用于根据安全计算协议与第一方的计算设备110交互,以基于第一比较结果s的第二分片s_R、第二输出分片z_R,以及存储于第一方的计算设备110的第一比较结果s的第二分片s_R、第一输出分片z_R,获得指数函数值的等效值h的第二分片h_R。
关于在两方计算设备上实现的所述系统及其模块的更多细节,可以在图2及其相关描述中找到,这里不再赘述。
应当理解,本说明书中披露的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,安全比较模块和取模模块可以是两个模块,也可以合并为一个模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)计算过程中,最终计算结果以及部分中间计算结果均以分片形式存储于两方的计算设备,可以有效避免隐私泄露;(2)通过设计比较结果的取值、放大、截断等处理,可以保证在隐私数据及其分片的各种取值情况下计算结果均满足一定精度。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书实施例的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书实施例进行各种修改、改进和修正。该类修改、改进和修正在本说明书实施例中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书实施例的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书实施例的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书实施例的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书实施例各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书实施例所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书实施例流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书实施例披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书实施例对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本申请权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书实施例的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。