基于对称密码学技术的多方隐私保护集合求交

感谢刘巍然老师在B站分享的视频,最近在学多方隐私集合求交的知识,偶然发现了这个视频,觉得很不错,由于视频只有英文字幕,为了提高一下自己的英文水平,我就想着把它翻译成中文,如果有错误的地方,还请指出,互相学习。话不多说,直接开始。

 

在这里插入图片描述 

大家好,感谢主持人的介绍,我很高兴来到这里展示我们的工作。这是基于基于对称加密技术的多方隐私集合求交。它不同于目前现有的两方,我们的工作集中在多方如何求交集。我们的协议是第一个基于对称加密技术来实现PSI的。

因此它是非常高效的。这是与Vlad,Naor,Benny,Mike一起做出来的。好了,让我们开始这个简单的场景吧
 

在这里插入图片描述
 

这里,我们有三方,Alice,Bob,Charlie,各方都持有一个集合,现在他们想要计算他们集合的交集。而且在这个过程中,他们不能泄露除了交集之外的任何信息。

不同于两方PSI(隐私集合求交),多方PSI有更大的安全需要。

第一个问题是,各方只能学习交集,对于交集以外的元素则一无所知。

第二个问题是,如果有腐败方,比如Alice,和Bob腐败,他们可以交换信息。但是他们不允许学习Charlie数据库中除了交集以外的任何信息。

 

在这里插入图片描述 

因此,PSI目前有许多的应用。我最喜欢的应用是对通讯录的分散管理。在这个场景中,我们有一些脸书的使用者。他们各自有一些朋友列表。现在他们想要知道他们共有的朋友。因此他们运行多方PSI。

不像两方PSI,他们需要把很多工作集中在多方集合上。他们很多都是基于不经意的多项式计算上。主要使用同态加密。

 

在这里插入图片描述

 

如果这个集合非常大,那是非常低效的。因此,如果基于公钥密码学,工程量将会很重。并且对于每一个集合元素,都还需要同态加密。

我们的协议则是基于对称加密,对于大集合来说,它是可扩展的。

接下来,我将展示我们的PSI方法。
 

在这里插入图片描述
 

我首先介绍一个新工具,我们叫它不经意可编程的PRF(OPPRF)。PRF代表伪随机函数。接下来,我将展示零分享协议。然后我将展示如何构造我们的PSI。

这个协议是基于半诚实的,也就是说协议的各方都要遵守协议。因此在开始我们的OPPRF之前,我想先复习一下OPRF(不经意伪随机函数)的功能。
 

在这里插入图片描述 

在OPRF中,Alice输入x到函数中,收到一个F_k(x)。Bob收获一个密钥k。去年,我们提出了一个弱版本的PRF,在那个版本中密钥k是有相关性的。

这是非常高效的,它在分摊设置中仅仅需要5微秒。OPRF被用来构造两方PSI。

 

在这里插入图片描述
 

那么,OPPRF又是什么呢?在OPPRF中,Bob可以把PRF的输出进行编程。

比如说,这里Bob有一些特殊的点,Alice有一个询问x。因为如果x=x_i,Alice就可以得到y_i。否则,Alice会得到一个随机值。

出于安全的目的,我们的协议需要y_i的所有值是随机分布的。因此,我将会展现一个最简单的协议。叫做基于多项式的OPPRF。
 

在这里插入图片描述
 

我们可以认为Bob有一些点,它们被放在图中。如果Alice有x_1,就可以看到y_1。

如果Alice有x’,但是x’并不等于任何x_i,她将会得到一个随机值。这就是我们的OPPRF的功能。

因此我们基于多项式的OPPRF被构造如下。

我们首先运行不经意的伪随机函数(OPRF),Alice输入x,她可以看到F_k(x),和Bob收到一个密钥k。

现在,由于Bob有密钥,那么他就可以计算任何F_k(x_i)。 接下来他构造一个多项式P(x),基于点(x_i,y_i⊕F_k(x_i))。你可以看到一些绿色的点,这就是(x_1,y_1⊕F_k(x_1))。
 

在这里插入图片描述 

Bob发送多项式给Alice,Alice输出P(x)⊕F_k(x)。

对于正确性而言,如果x=x_i,例如,图中的x_1。Alice知道P(x),它等于F_k(x_1)⊕y_1。Alice可以利用绿色的点,得到y_i。

而看看另一个点x’,根据OPRF的功能,Alice无法得到其所有对应的y_i。因此她只能输出一个随机值。

从安全的角度来说,当F_k(x)不等于y_i时,伪随机特性隐藏了关于值F_k(x)的一切。

我想谈一下我们多项式OPPRF的开销。
 

在这里插入图片描述
 

从计算复杂度来说,我们需要O(n的平方)。
从交流复杂度来说,我们需要O(n)。

我们也把集合里的元素总数N分为很小的n。比如把n设置为3左右,就可以利用Hash技术。

我们也有两方的其他OPPRF协议,它们对于多个点,多个问询在交流复杂度和计算复杂度上面均有很好的表现。

我们有一个协议在计算和交流复杂度上是线性的。这些都可以在论文中看到。

接下来,我们看看OPPRF的构造。
 

在这里插入图片描述 

现在我们先来看看我们的零共享协议。

 

在这里插入图片描述 

零共享的目的是,如果各方持有相同的元素,比如说x,那么各方将持有正确的零共享。这也就意味着各个分享的异或(xor值)等于0。如下图:在这里插入图片描述 

现在,如果各方Pi持有不同的元素x’,如下图:

 

在这里插入图片描述
 

可以看到,P1有x’,因此P1将持有一个错误的零共享,那么这也就意味着各方的异或值不等于0。

下面,我将演示我们的零共享协议。它是没有交流的零共享。我们有这个交流版本,在论文中可以看到。

首先第一步是各方选择一个随机密钥,然后把它们发送给其它各方。

例如,P0选择三个密钥(k01,k02,k03),然后把它们发送给(P1,P2,P3)。现在P1选择了两个密钥,把他发送给P2,P3。因此最后,每方都有三个密钥。
 

在这里插入图片描述
 

如图,如果x在集合的交集中,各方会在密钥key下计算f(x),然后把它分享给零分享协议,P1也做相同的事情。看看这个秘密的异或值。可以看到f(x)在P0和P1中出现了密钥k_01,因此,它可以被抵消。

在另一个f(x)中,P0和P2含有密钥k_02,因此,它们也可以被抵消。等等。(主要利用的就是异或的性质)。

抵消到最后,也就意味着函数异或以后,它们的秘密分享为0。

再看,如果在下面的例子中,x不是交集元素会怎么样呢?
 

在这里插入图片描述
 

假如说P1有x’,此时P1会计算x’的共享值,它等于如上图所示,我们来看看这个秘密的异或值。

我们可以看到有密钥k_01的f(x’)。此时它并不等于任何f(x)。因此,异或值也就不会等于0。
 

在这里插入图片描述
 

零共享的重要意义在于没有任何交流。

我们可以一次性的使用密钥发送信息。

 

在这里插入图片描述 

因此我们正在做零共享协议。我们有我们的工具,不经意可编程的PRF(OPPRF)。

现在,我们将展示,如何把它们融合到一起呢?

 

在这里插入图片描述
 
我们可以考虑一个简单的例子,也就是一个元素的PSI。

这个想法就是:如果各方有相同的x,那么异或值(xor)将会等于0。否则,它将会是一个随机值。

这就是我们的零共享协议。

现在,问题是谁可以检查共享的异或值?

因此我们要选择一方作为一个领导者。

另一个问题是,如何发送一个共享?

我们可以直接发送它,但是这是很不安全的。因为腐败方的子集可以计算诚实方的正确的秘密。这个分享可以把诚实方的元素泄露给敌手。

因此,我们使用我们的新工具,也就是OPPRF。
 

在这里插入图片描述 

一个领导者如果它与发送者有相同的元素,它就可以接收到一个正确的分享。否则,他什么也学不到。

在接下来的场景中,我们有零共享,如果x是交集中的元素,那么各方都可以收到一个共享。这个共享的异或值为0。
 

在这里插入图片描述 

现在我们选择P_0为一个领导者。然后P_i方会创建一个点(x,sh_i),P_0和P_i运行OPPRF协议。我们的领导者继续使用x,得到一个P_1的正确分享,这是因为领导者有x,而P_1也有x。继续下去,领导者会收到P_2,P_3的正确分享。

由于x是交集中的元素,所以它们的异或值就是0。领导者可以检查它们的异或值是否等于0。如果是的话,那么就是交集的元素。

如果说x不是交集中的元素,假如P_1有x’如下图:
 在这里插入图片描述 

从我们的零共享协议中,它们的异或值并不等于0。如图,加入P_0和P_1运行OPPRF协议,由于领导者有x,但是P_1有x’,因此它们有不同的点。因此领导者接收到了一个随机值。因此它们的异或值不等于0。那么x’就不是这个集合中的元素。

 

在这里插入图片描述 

对于安全性,我们的协议是半诚实安全的。这是因为如果n-1方腐败的话,就可以计算出诚实方的共享。如图,如果P_0,P_1,P_3腐败的话,它们可以拥有所有的密钥。它们就可以直接计算出诚实方P_2的共享值。

在我们的协议中,我们在P_0和P_2之间运行OPPRF协议,由于领导者有x,P_2也有x,那么领导者就可以比较两个共享值,学习P2是否有x。重要的是这里P_1有x’,现在x是这个集合的交集,因此,它们不允许被学习到x’。但是,当所有的腐败方和领导者有相同的输入时,泄露就会发生。

因此这个安全是半诚实模型的安全。为了得到标准的半诚实安全模型,我们提出了一个交流版本的零共享协议。这个协议在论文中可以看到。

接下来我想介绍我们的实施和评估。
 
在这里插入图片描述

 
首先,执行我们的协议。我们的协议是第一个只需要常数轮对称加密操作的协议。图中的横轴为各方的数量,纵轴为总的运行时间。如果各方有2的20次方元素,在三方的情况下,我们的协议仅仅需要25秒就可以得到结果。我们的协议对于各方的数量和运行时间是服从线性分布的。
 

在这里插入图片描述 

因此对比早期的工作,对于计算复杂度,我们需要非常小的开销,为O(nk)。n是很小的相比于PSI的各方。这个花销是相对于基础OT的,因此它是线下完成的。

对于交流复杂度而言,我们的协议是基于对称加密操作的。因此相比于公钥加密操作,需要更多的交流复杂度。

问题以及解答:

1.我想问一下,各方彼此之间需要揭示它们集合的大小吗?
答:我认为我们现存的所有协议都需要揭示集合的大小。但是它可以通过设置集合的上界大小来固定。如果你想要隐藏集合的大小的话,可以采用这个方式。

2.我想问一下,这个协议也可以运行在两方的情况下吗?
答:是的,我们去年提出了一个协议,它可以运行在两方的情况下。今年我们扩展成了这个支持多方PSI的方案。

3.当谈到两方集合的时候,它的表现如何呢?
答:我可以展示给你看,这是可编程的PRF,当你设置(x_i,y_i)的时候,你可以得到相同的元素x。如果你设置了不同的值的时候,你会得到任意值。你并不知道Bob的其他元素。

4.你谈到在这个协议中各方交流的代价对于它们集合的元素的多少是线性的。它对于两方之间,无交流的零共享是否也是正确的呢?
答:在无交流的零共享中,你可以认为各个参与方只与领导者交流。因此交流的代价为O(m),m是集合的大小。但是在我们的有交流的协议中,各个参与方不得不与其他的参与者交流。因此我们需要O(nm)的复杂度。在这里,m是集合元素的大小,n是各方的数量。

5.如果我理解的没错的话,最后,只有领导者得到了交集结果。
答:是的,在我们的协议中,领导者可以得到交集信息。但是领导者可以把交集信息发送给其它各方。

6.假设多方想要知道这个交集的话,领导者将发送这个交集?
答:是的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺旺的碎冰冰~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值