一种基于可信第三方的隐私数据两方安全比较方法

文档序号:7993 发布日期:2021-09-17 浏览:57次 英文

一种基于可信第三方的隐私数据两方安全比较方法

技术领域

本发明涉及计算机

技术领域

,尤其是涉及一种基于可信第三方的隐私数据两方安全比较方法。

背景技术

在大数据网络化时代,敏感数据的隐私保护问题成为了一个突出的亟需解决的问题,尤其是在近年来国内外多种隐私保护相关法律出台的情况下,涉及敏感数据的重大的项目由于缺乏对关键数据的隐私保护而搁浅。为了数据能够在不暴露的情况下实现流动(可用不可见),隐私计算作为一种主要的工具和手段在区块链、联邦学习等一系列需要隐私保护的环境中扮演了重要的角色。

在常见的隐私计算中,基于可信第三方的两方隐私保护计算的算子如两方安全四则运算、比较运算等成为了构建隐私计算的基础。然而,由于现有实现方案的计算开销和网络开销等原因,导致了现有方案在应对大规模数据运算的时候无法很好地提高计算效率。

现有技术中能够实现隐私保护的比较运算技术的方案之一是利用秘密分享的方法通过比特位分解以及比特位减法判断是否产生借位运算来实现的。为了更好的理解整个方案的过程,假设整个方案中,两个无符号整数为x和y。那么,这两个无符号整数的小于比较算法可以简要分为下面几个步骤:

1)对于输入的两个数进行比特分解,即x=x1x2…xl和y=y1y2…yl,其中假设两个无符号整数的长度是l比特;

2)将上述两个比特表示的无符号整数进行减法。相减以后的借位标志z就是最终的结果。

上述小于运算的隐私保护方法是从秘密分享出发来构造整个过程,秘密分享的实质是对于每一个输入x,将其分解为两个随机数分发给两方,即x=[x]0+[x]1,其中,[x]0和[x]1分别代表P0和P1所得到的关于x的秘密分片,P0和P1分别代表参与隐私计算的两方。那么,上述减法就是在秘密分享的基础上进行的减法计算,简单来讲,就是双方将各自相应的x和y的秘密分片进行相减。秘密分享的乘法则需要借助可信第三方来生成随机的乘法对并且需要双方通过一次交互来完成。

此处,小于比较的效率瓶颈体现在两个方面。其一,对两个输入的比特分解涉及到的比特位与运算每进行一次就需要一次双方进行一次通信(比特与运算和乘法运算实际上是等价的,只不过比特与运算的运算数域为二进制);其二,两个比特分解以后的数字相减的操作也涉及到双方多轮的运算(因为两个l比特的减法运算也可以分解为l个与运算)。也就是说,P0和P1至少需要进行l轮交互才能完成连续或操作。即比特分解的复杂性和比特位相减运算导致P0和P1的通信轮数。假设l=64,也就是一个通用的64位整数,那么进行一次相等测试需要进行至少64轮通信。然而,随着互联网服务需求的增长,目前的隐私保护正应对着处理和分析隐私数据的挑战,特别是在需要近乎实时处理这些数据的情况下。按照上述比较方法,其计算量较大、耗时较长,需要占用大量的网络空间,无法帮助处理庞大的数据集并实时提供响应,这是现在互联网时代无法接受的;更何况大数据时代这种通用算子的应用比例较高,此方法带来的网络开销也无法被接受。

现有技术方案之二是利用混淆电路的方式来实现对逻辑电路的编码来得到一个加密的混淆电路。对于混淆电路,其主要步骤和秘密分享基本类似,但由于不是对原来的明文电路进行的操作,因此,对于每一个比特位,编码方需要用128比特的随机数来编码以达到加密的目的。同时,由于在计算混淆电路结果之间需要混淆电路计算方得到自己相应输入对应的随机编码,因此,这里涉及到不经意传输部分的开销,假设通过可信第三方,不经意传输部分的开销可以得到减小。

总体上讲,混淆电路方案中,计算双方可以通过一轮通信计算出最终结果。网络开销可以分为不经意传输的开销和混淆电路的开销。其中,不经意传输的开销至少为128l比特,混淆电路的开销至少为256l比特。然而对于64位的整数,混淆电路方案需要至少传输3KB的数据来完成一次比较。对于大规模的比较运算,其网络开销成本过大。因此,对大数据运算,网络传输量将成为重要的性能瓶颈。

发明内容

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于可信第三方的隐私数据两方安全比较方法,该方法从通信轮数和通信量上对比现有的方案实现了大幅度提升,从而达到最小化网络通信轮数的同时能够进一步减小网络通信量。

本发明的目的可以通过以下技术方案来实现:

一种基于可信第三方的隐私数据两方安全比较方法,该方法包括如下步骤:

利用可信第三方,随机选择两个随机数作为计算双方的输入的掩码,并将随机生成的两个随机数分别发送至计算双方;

在可信第三方随机选择两个随机数的同时,分别为计算双方生成用以进行比较运算的运算密钥;

计算双方根据自身输入,生成加有掩码的输入,并发送给对方;

计算双方根据加有掩码的输入以及自身的运算密钥,进行比较运算,获取自身相应的比较结果。

进一步地,所述可信第三方根据算法KeyGen计算双方生成用以进行比较运算的运算密钥。

进一步地,,在所述可信第三方选择两个随机数的过程中,采用AES的CTR/ECB加密模式加速随机数性能。

进一步地,所述可信第三方通过Diffie-Hellman的密钥交换协议传输AES加密密钥。

本发明提供的基于可信第三方的隐私数据两方安全比较方法,相较于现有技术至少包括如下有益效果:

1)该方法从通信轮数和通信量上对现有的方案进行提升,从而达到最小化网络通信轮数的同时能够进一步减小网络通信量;相较于混淆电路的至少128l+256l来讲,通信量减少了近50%;与秘密分享方式比较,通信轮数减少了90%以上。

2)本发明构造了一个特殊的数据结构和方法,此数据结构是基于树形数据结构来构造,并且内部的运算只涉及简单的加减和异或操作;另外,随机数的生成采用了特殊指令集的方式来加快速度。可进一步提高计算效率,降低通信量。

附图说明

图1为实施例中基于可信第三方的隐私数据两方安全比较方法的流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

实施例

为便于本领域技术人员更好地理解本申请,下面先对本实施例涉及的技术参数用语进行简单介绍。

P0和P1:代表参与隐私计算的两方。

随机数发生器,输入是长度为in比特的种子s,输出是out比特的随机数。

将长度是in比特的输入x转换为长度是out比特的输出。

λ:表示系统的安全参数。

:表示两个比特串或者两个整数的异或运算。

本发明涉及一种基于可信第三方的隐私数据两方安全比较方法,该方法的完整技术方案的流程如图1所示,为了统一描述,本实施例将采用小于运算作为例子(即:x<y),其他的运算等价关系如下表所示:

表1运算等价关系

原始关系 等价关系
x>y y<x
x≤y 1-(y<x)
x≥y 1-(x<y)

小于运算LT(x,y)的具体步骤如下,其中本实施例用b∈{0,1}表示双方的其中一方(相应的,1-b就表示另一方):

步骤一、通过数据采集设备获取目标用户的初始数据,并将初始数据拆分为随机共享的第一分组数据和第二分组数据,两个分组数据分别代表计算双方P0和P1

可信第三方随机选择两个长度是λ比特的随机数r0和r1作为P0和P1输入的掩码,然后,将这两个数分别发送给双方(注意:Pb不能获得随机数r1-b)。

步骤二、与上一步骤同时,可信第三方需要根据算法KeyGen为两方生成计算小于运算LT的密钥k0和k1,这个密钥将被两方用来计算小于运算LT(小于运算,Less Than)(算法KeyGen将随后介绍)。

步骤三、双方根据自己的输入生成加了掩码的输入并发送给对方。

步骤四、双方根据加掩码的输入和自己的运算密钥运行小于运算LT计算自己相应的结果z0和z1,其中,z=z0+z1=(x<y)(算法LT将随后介绍)。

算法KeyGen的主要内容为:可信第三方计算k0,k1=KeyGen(α,1),其中α=r0-r1表示两个掩码之差。算法的具体步骤为:

1:令α=α0α1…αl-1为α的比特表示,其中α0代表α的最高比特位;

2:令s,t和cw为三个空的列表;

3:生成两个长为λ比特的随机数并加入列表s;

4:将0和1两个数分别加入列表t;

5:令vα=0是一个长度为l比特整数,表示每一层的纠正值;

6:令i从0开始到l-1结束重复7-15步;

7:令其中分别表示长度是λ比特的随机数,也分别表示长度是λ比特的随机数,分别表示随机比特;

8:计算其中,scw是长度为λ比特的比特串;

9:令vcw表示长度为l比特的整数;

10:令vα表示长度为l比特的整数;

11:计算其中,表示两个比特;

12:将加入列表cw;

13:令t0=t[-2]和t1=t[-1],即t0,t1分别代表到目前为止,列表t的倒数第二个和倒数第一个比特的值;

14:将加入列表s;

15:将加入列表t;

16:将加入列表cw,其中,s[-2],s[-1]分别代表到目前为止,列表s的倒数第二个和倒数第一个比特串的值;

17:return k0=(s[0],cw)和k1=(s[1],cw),其中,s[0],s[1]分别表示列表s的第一个和第二个比特串的值,k0,k1分别表示将要发送给P0和P1的密钥。

算法KeyGen的大体思想为:α的每一个比特位对应的是for循环的每一层。对于第i层,scw对应的是由上层种子1-αi-1生成的两个子节点对应的随机数;对应的是对于控制比特列表t的补充项。在第i层,会生成两个加入s的项和两个加入t的项:

a.加入s的两项是两个随机数,他们是形如这样的两项,这两项的异或结果是本层所生成的4个随机数的异或;

b.加入t的两项是两个随机比特,他们是形如这样的两项,这两项的异或结果是1。

后面结合小于算法LT,将会清晰地了解上述几个内容的意义:

小于算法LT:计算双方的每一方Pb(b∈{0,1})分别计算zb=LT(kb,w),其中w=x+r0-y-r1。算法的具体步骤为:

1:令w=w0w1…wl-1为w的比特表示,其中w0代表w的最高位;

2:令s和t为两个空的列表;

3:解析kb=s[b],cw,并将kb的第一项s[b]加入列表s;

4:将b加入列表t;

5:令i从0开始到l-1结束重复6-10步;

6:令scw=cw[4i],其中,分别表示列表cw的第4i到4i+3项的值;

7:令其中,s[-1]代表到目前为止,列表s的倒数第一个比特串的值,s0,s1,v0,v1分别表示长度为λ比特的随机比特串,t0,t1分别表示一个随机比特;

8:令其中,t[-1]代表到目前为止,列表t的倒数第一个比特的值,如果这个值是0,则否则,这里的异或运算表示对输入的两个括号里面的对应位置的值分别进行异或;

9:计算其中,t[-1]代表到目前为止,列表t的倒数第一个比特的值;

10:将加入列表s,将加入列表t;

11:return其中,s[-1]代表到目前为止,列表s的倒数第一个比特串的值,t[-1]代表到目前为止,列表t的倒数第一个比特的值,cw[-1]代表到目前为止,列表cw的倒数第一项的值。

算法LT的大体思想为:对于每一层,如果当前的输入wi=αi,那么,计算双方在LT的第7行产生的两个随机数种子s0,s1就分别等于KeyGen中加入当前层s列表的两个值,两个控制比特t0,t1同样也分别等于KeyGen中加入当前层t列表的两个值。否则,计算双方在产生的两个随机数种子s0=s1,两个控制比特t0=t1,之后,由于后续计算均基于相同的种子和控制比特,因此,前面计算的差值会被保留下来。也就是说,如果前面已经出现了不相等的情况,那么大小就由首个不相等的比特的差异来决定。综上所述,当x-y>r0-r1时,整个计算结果会在两边抵消成为0,否则,两方的y0+y1=1。

本实施例在具体实施过程中考虑到以下各种因素:

1)安全参数设置为λ=128来满足中等的安全性能需求。不同于传统的随机数发生器的生成方法,这里的的产生过程是利用AES的CTR/ECB加密模式对种子s加密来生成随机数以提高性能的(AES是对称块加密的通用实现方式之一,CTR和ECB则是其中实现效率较快的两种加密模式)。其中,AES的实现还可以进一步利用硬件的AES-NI指令集来实现以进一步提升实现效率。AES的CTR/ECB加密模式为现有技术常用手段,在此不过多赘述。

2)计算双方在协议开始之前需要商定AES的加密密钥,这一步可以通过Diffie-Hellman的安全密钥交换协议来传输AES加密密钥,具体实施中,双方需要先选定一个计算数域Fp,然后共同商议这个数域上的一个生成元g,随后根据这个生成元由双方各自选择的秘密随机数a和b进行运算分别得到ga和gb并发送给对方,最后双方计算gab并以此作为密钥加密随机生成的AES密钥来完成密钥交换。

3)对于一个完整的LT的实例,由于随机数r0,r1是在KeyGen阶段嵌入到算法里面的,所以整个KeyGen+LT是不能复用的,这里主要是处于安全性的考虑。

本发明技术方案的整体通信轮数从流程图图1中可以看出,计算双方需要接收第可信三方发送过来的随机数和密钥,此处的通信量为128+(128+2+l)l+l比特。而后计算双方的通信量仅为l比特。

相较于混淆电路的至少128l+256l来讲,通信量减少了近50%,但是通信轮数保持和混淆电路一样。和秘密分享的方式来比较,通信轮数减少了90%以上。综上所述,本发明方法的技术方案的效果确实非常明显而且相较于现有方案来说也能起到很好的实际效果。另外,考虑到在传输过程中利用排序数组的差值压缩,可以进一步降低通信量。

本发明的技术关键点在于构造一个特殊的数据结构和方法,此数据结构是基于树形数据结构来构造,并且内部的运算只涉及简单的加减和异或操作。另外,随机数的生成采用了特殊指令集的方式来加快速度。因此,这种LT的生成技术是目前来讲效果最好的方法。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:一种基于可信第三方的隐私数据两方安全相等测试方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类