【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算
学习&转载文章:【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算
集合运算
集合可以通俗地描述为确定的一堆东西。如有一个集合\(\),一个元素\(\)要么属于集合\(\),记做\(\in \);要么不属于集合\(\),记做\(∉\),元素\(\)不能既属于集合\(\)又不属于\(\)。
集合的并集是对两个集合中的所有元素进行合并,并集运算的符号为\(∪\);集合的交集是取这两个集合中的公共元素,交集运算的符号为\(∩\)。
假设有两个集合\(={1,2,3,4} , ={1,4,7,9}\)。集合\(\)和\(\)中的公共元素为\(1,4\)。若集合\(\)和集合\(\)进行并集运算,则结果为\(=∪ = {1,2,3,4,7,9}\);

若集合\(\)和集合\(\)进行交集运算,则结果为\(={1,4}\)。

PSI
安全多方计算的目标是在不泄露各个参与者隐私信息的前提下完成目标函数的计算。隐私保护集合交运算(Private Set Intersection,PSI)可以看成是以参与者各自的隐私信息为集合,目标函数所实现的功能为集合交的安全多方计算。
隐私保护集合交的应用有通讯录匹配,如现在很多手机应用可以通过手机通讯录查找同样使用这个软件的好友,如聊天软件、具有社交属性的游戏等,用户肯定不希望自己的通讯录中的所有联系人都被软件所得知,软件则掌握有所有注册用户的手机号。
因此可以通过隐私保护集合交,计算软件注册用户手机号集合和用户自己的通讯录的交集,来寻找到同样使用该软件的好友,又不会泄露各自所掌握的手机号信息。

本次要介绍的隐私保护集合交协议是Pinkas-Schneider-Segev-Zohner (PSSZ)【Phasing: Private Set Intersection using Permutation-based Hashing-2015】 ,其基于不经意伪随机数函数OPRF(Oblivious Pseudo-random Function)来构造PSI。
首先介绍一下布谷鸟哈希(Cuckoo Hashing):
布谷鸟哈希需要\(\)个普通箱子和\(1\)个贮存区,以及\(\)个元素,将这\(\)个空箱用\((1),…,()\)表示。还需要三个哈希函数,记为\(ℎ1(),ℎ2(),ℎ3()\),这三个哈希函数是将一个比特串映射到\(1,2,…,\)之间。

首先对这\(\)个空箱进行初始化,之后使用哈希函数\(ℎ1(),ℎ2(),ℎ3()\)计算元素\(\)的哈希值,检查\((ℎ1()),(ℎ2()),(ℎ3())\)这三个箱子是否是空箱子, 如果这三个箱子中至少有一个箱子是空箱子,就把\(\)放到这个空箱子中。
如果这三个箱子都已经有元素放入了,就随机选择\((ℎ1()),(ℎ2()),(ℎ3())\)这三个箱子中的一个\((ℎ()),∈{1,2,3}\),用\(\)替换箱子\((ℎ())\)里面原来装的元素\(′\)。

接着计算\(′\)的哈希值并检查箱子\((ℎ1(′)),(ℎ2(′)), (ℎ3(′))\)中是否都有空箱子,有一个空箱子则把\(\)放入其中,否则在\((ℎ1(′)),(ℎ2(′)), (ℎ3(′))\)中随机选择一个替换其中的元素,如此开始迭代。需要预先设定一个最大迭代次数\(\),如果迭代次数超过了\(\)就把最后被替换出来的元素放入到贮存区,贮存区最多可放入\(\)个元素,箱子最多可放入1个元素。
下面使用布谷鸟哈希进行PSI
两个参与者Alice的输入集合为\(\),Bob的输入集合为\(\),集合\(\)和集合\(\)中都只有\(\)个元素。两人首先为布谷鸟哈希选择三个哈希函数\(ℎ1(),ℎ2(),ℎ3()\)。设置的箱子数量为\(1.2\),贮存区的大小为\(\)。
Bob对其的集合\(\)中的每个元素执行布谷鸟哈希。执行完毕之后,Bob的每个箱子中最多只有一个元素,这是箱子的大小限制的,贮存区最多有\(\)个元素。由于箱子的数量为\(1.2\),集合中只有\(n\)个元素,因此此时必定有箱子是空的。
之后Bob产生随机元素,用随机元素填满所有的箱子和贮存区,使得每个箱子里都有一个元素,贮存区中有\(\)个元素。
OPRF的介绍
不经意伪随机数函数OPRF可以通过\(\)将输入映射成一个伪随机数,任意给一个随机数\(1\)和一个由输入映射成的伪随机数\(2\),攻击者无法区分出输入映射成的是\(1\)还是\(2\)。所需要使用的OPRF函数双方已经事先商议好了。
Bob在用随机元素填满所有的箱子和贮存区后,和Alice间进行\(1.2+\)次的OPRF。用\(\)表示Bob第\(\)个箱子中的元素,用\(1.2+\)表示贮存区中的第\(\)个元素。
因此在\(1.2+\)次的OPRF结束后,Bob会掌握\((,), ∈[1,1.2+]\)。
Alice则可以根据任意的\(\)计算:
\(={(ℎz(),)|∈,∈{1,2,3}},={(1.2+,1.2+)|1.2+∈,∈ {1,…,}}\)
并打乱和中的数据顺序。Alice将\(\)和\(\)发送给Bob,Bob将\(\)和\(\)中的值与他自己在箱子和贮存区中的\((,), ∈[1,1.2+]\)进行对比,如果Bob的\(\)对应的OPRF值\((,)\)在\(\)或者\(\)中,那么就说明元素\(\)属于Alice和Bob的集合交集。
Alice的集合\(\)中的每个元素\(\)都被\((ℎz(),)\)映射成了一个伪随机数,若Bob的集合\(\)中有和Alice集合相同的元素,假设\(*m*=\),那么有\((ℎz(),)= (ℎz(),)\),因此Bob能够通过Alice发来的\(\)和\(\),在其中找到二者集合的交集元素,而无法知道Alice掌握的集合本身。
总结一下:就是双方将各自数据藏在了OPRF中,对比OPRF值进而求出交集。
【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算的更多相关文章
- [.NET领域驱动设计实战系列]专题十:DDD扩展内容:全面剖析CQRS模式实现
一.引言 前面介绍的所有专题都是基于经典的领域驱动实现的,然而,领域驱动除了经典的实现外,还可以基于CQRS模式来进行实现.本专题将全面剖析如何基于CQRS模式(Command Query Respo ...
- [C# 基础知识系列]专题十六:Linq介绍
转自http://www.cnblogs.com/zhili/archive/2012/12/24/Linq.html 本专题概要: Linq是什么 使用Linq的好处在哪里 Linq的实际操作例子— ...
- [C# 网络编程系列]专题十:实现简单的邮件收发器
转自:http://www.cnblogs.com/zhili/archive/2012/09/24/2689892.html 引言: 在我们的平常工作中,邮件的发送和接收应该是我们经常要使用到的功能 ...
- [C#基础知识系列]专题十:全面解析可空类型[转]
原文链接 主要内容: 1:空合并操作符(?? 操作符) ??操作符也就是"空合并操作符",它代表的意思是两个操作数,如果左边的数不为null时,就返回左边的数,如果左边的数为nul ...
- TensorFlow系列专题(十四): 手把手带你搭建卷积神经网络实现冰山图像分类
目录: 冰山图片识别背景 数据介绍 数据预处理 模型搭建 结果分析 总结 一.冰山图片识别背景 这里我们要解决的任务是来自于Kaggle上的一道赛题(https://www.kaggle.com/c/ ...
- Selenium系列(十) - 针对Select下拉框的操作和源码解读
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- Scala入门系列(十):函数式编程之集合操作
1. Scala的集合体系结构 Scala中的集合体系主要包括(结构跟Java相似): Iterable(所有集合trait的根trait) Seq(Range.ArrayBuffer.List等) ...
- [.NET领域驱动设计实战系列]专题十一:.NET 领域驱动设计实战系列总结
一.引用 其实在去年本人已经看过很多关于领域驱动设计的书籍了,包括Microsoft .NET企业级应用框架设计.领域驱动设计C# 2008实现.领域驱动设计:软件核心复杂性应对之道.实现领域驱动设计 ...
- Unity3D脚本中文系列教程(十五)
http://dong2008hong.blog.163.com/blog/static/4696882720140322449780/ Unity3D脚本中文系列教程(十四) ◆ LightRend ...
- Java Thread系列(十)Future 模式
Java Thread系列(十)Future 模式 Future 模式适合在处理很耗时的业务逻辑时进行使用,可以有效的减少系统的响应时间,提高系统的吞吐量. 一.Future 模式核心思想 如下的请求 ...
随机推荐
- 微信小程序原生AI运动(动作)检测识别解决方案
前几年受疫情影响,人员流动受限,反而让"AI运动"概念风靡一时.空前火爆.目前已经在AI运动锻炼.体育教学.线上运动主题活动等场景中,成功得到了应用,并获得了广大互联网用户的认可. ...
- element-ui resetFields 无效的问题
1.问题 触发bug的条件是先打开,编辑进行赋值,后打开新增 先点开编辑 再打开新增 这个时候你会发现刚刚赋值过的数据还遗留在表单里面 即使在打开 dialog 的时候执行了重置也没有效果 res ...
- Impala学习--Impala概述,Impala系统架构
Imapla概述 Impala是Cloudera公司的一个实时海量查询产品.是对于已有Hive产品的补充.Impala采用了和Hive相同的类SQL接口,但并没有采用MapRed框架执行任务,而是采用 ...
- Linux C/C++编程中的多线程编程基本概念
8.2.1 操作系统和多线程 要在应用程序中实现多线程,必须有操作系统的支持.Linux 32位或64位操作系统对应用程序提供了多线程的支持,所以Windows NT/2000/XP/7/8/10是 ...
- JDK 18 及以上使用标准输出流中文输出乱码问题
著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 链接:https://stazxr.cn/2024/12/05/JDK-18-以上使用标准输出流中文输出乱码问题/ 来源:終わり ...
- 金仓数据库数据迁移实战:从MySQL到KES的顺利迁移
今天我们将开始实践金仓数据库的数据迁移功能.在此之前,我们一直使用的是简化版的 Docker 镜像,这个版本并没有集成可视化操作工具.因此,为了更方便地进行后续的操作,我们需要额外下载一个 Windo ...
- 《数据万象带你玩转视图场景》第一期:avif图片压缩详解
前言 随着硬件的发展,不管是手机还是专业摄像设备拍出的图片随便可能就有几M,甚至几十M,并且现在我们处于随处可及的信息海洋里,海量的图片带来了存储问题.带宽问题.加载时延问题等等.对图片信息进行有效的 ...
- Flutter 错误The argument type 'Color' can't be assigned to the parameter type 'MaterialStateProperty<Color?>?'.dart(argument_type_not_assignable)
MaterialStateProperty<Color?>?和Color 当为TextButton等button添加颜色时,使用ButtonStyle为其添加颜色 TextButton( ...
- 介绍 MSTest Runner - CLI, Visual Studio 等更多
介绍 MSTest Runner - CLI, Visual Studio 等更多 https://devblogs.microsoft.com/dotnet/introducing-ms-test- ...
- [Blazor] 一文理清 Blazor Identity 鉴权验证
一文理清 Blazor Identity 鉴权验证 摘要 在现代Web应用程序中,身份认证与授权是确保应用安全性和用户数据保护的关键环节.Blazor作为基于C#和.NET的前端框架,提供了丰富的身份 ...