【隐私计算笔谈】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 模式核心思想 如下的请求 ...
随机推荐
- NASA的食物计划
NASA的食物计划 题目传送门 题目告诉我们要在体积和重量都不超过的情况下输出最大卡路里,稍微思考一下就可以发现这题是一道01背包的变形题(01背包不会的点这里). 并且01背包需要空间优化. 那我们 ...
- 数据抽取平台pydatax使用案例---11个库项目使用
数据抽取平台pydatax,前期项目做过介绍: 1,数据抽取平台pydatax介绍--实现和项目使用 项目2: 客户有9个分公司,用的ERP有9套,有9个库,不同版本,抽取的同一个表字段长度有不一样, ...
- golang WEB框架Hertz --- 获取参数
安装Hertz命令行工具 请确保您的Go版本在1.15及以上版本,笔者用的版本是1.18 配置好GO的环境后,按照Hertz的命名行工具 go install github.com/cloudwego ...
- spring IOC 实现原理模拟实现
原文系装载: http://blog.sina.com.cn/s/blog_6a7f00ed01011dyv.html 最近对spring IOC AOP 机制实现原理了解了下,在此做下整理,希望能给 ...
- SAX,DOM,JAXP,JDOM,DOM4J比较分析
第一:首先介绍一下SAX,DOM,JAXP,JDOM,DOM4J的基本知识:(注意:至于 JAXP JAXB JAXM JAXR JAX-RPC 分别指什么,查看http://gceclub.sun. ...
- Yii2 中配置方法汇总
1.默认框架接收的是x-www-format-unencode格式的数据,如果想要接收text/json格式的数据,会为空,这个时候需要在配置文件中添加对应的配置项 config > main. ...
- H5扫码
1.前言 H5可以获取视频流,并通过video元素进行播放 可以canvas对视频进行定时截图,然后使用插件对图片进行二维码解析 也可以直接对视频进行二维码解析(推荐) 解析二维码的插件为qr-sca ...
- Redis应用—1.在用户数据里的应用
大纲 1.社区电商的业务闭环 2.Redis缓存架构的典型生产问题 3.用户数据在读多写少场景下的缓存设计 4.热门用户数据的缓存自动延期机制 5.缓存惊群与穿透问题的解决方案 6.缓存和数据库双写不 ...
- R数据分析,codewar的年终总结,和一周年总结,寒假快乐呀
前阵子单位各个部门都在要求弄总结,想想自己这个公众号也写了快一年了,专门回去翻了翻,这个公众号发布的第一篇文章是在2021年的1月17日,我想2022年的1月17日我就把现在敲的文字推出来吧,也算是一 ...
- 中电金信:基于AI的智能化国内信用证结算系统
2023年<商业银行资本管理办法>正式稿中,明确规定了国内信用证的信用转换系数:与贸易直接相关的短期或有项目,其信用转换系数为20%:而基于服务贸易的国内信用证,其系数为50%. 这一 ...