原文来自:云辅助隐私集合求交(Server-Aided PSI)协议介绍,下面学习一波,并记录一些笔记。

背景



总结:

1、PSI-CA和PSI相比,前者在乎的是交集的大小,后者在乎的是交集本身。另外扩展一下,阈值PSI在乎的是交集大小与阈值的关系(不关心交集大小、交集本身,只想要知道答案:是/否)

2、云辅助,字面意思就是借助云进行PSI。

3、另外这里的Cardinality,这里理解为“基数”,我更愿意理解为“势”!

云辅助PSI的需求



总结:

1、当前工业级的PSI,肯定都是云辅助下的。

2、借助第三方云计算平台,性能(计算和通信)确实提升了,下面得重点考虑安全了!

云辅助PSI应用场景





总结:

1、第三方云计算平台是不可信的,数据需要盲化(加密、hash、加噪音、编码、PRF等)存储

2、在第三方云计算平台完成秘密求交,返回本地后去盲得到计算结果。

3、出现除参与者之外的第三方,还需要考虑合谋问题。

4、加入抗合谋后的协议主要用于两类场景:

(1)云平台和拥护交集完成PSI计算

(2)PSI计算完全放在云平台,用户只负责上传数据和处理计算结果

云辅助PSI具体协议

根据上面两类场景,下面介绍具体协议,其中场景(1)又可分为两种(Client-Server,Server-Server),场景(2)为(Client-Client

S-S





分析:

1、该协议只用了PRF实现PSI,效率(计算和通信)肯定是高,但高安全性就很难保证了

2、两方中,需要两个密钥,即两次PRF。

3、这里云平台用了“洗牌”技术,打乱了伪随机值的顺序,使得服务器2逐个计算判断是否有相同的,但不确定位置,只能确定相同的个数,即交集的势

C-S



分析:

1、通过多项式插值和otd-OPRF实现PSI

2、这里的Otd-OPRF使得,若\(x=y\),则\(F(k,x)=F(k,y)\)。在云平台和强S之间执行OPRF

3、在强S中将伪随机值和随机数\(r\)插值成多项式发给云平台

4、云平台带入弱S的伪随机值,得到key,返回给弱S

5、弱S比较对应的随机值是否一样,判断交集。

6、云平台通过“洗牌”打乱随机值顺序,只能比较有一个重复的,不能判断具体是哪一个,所以只能得到交集的势。

扩展

1、伪随机生成器/pseudorandom generator/PRG

主要参考:现代密码学3.3--伪随机生成器/PRG

功能:能用“短的、均匀的”字符串(seed) 生成 “长的,看起来均匀的”字符串

2、密钥为 (s, k) 的不经意伪随机函数:BaRK-OPRF



若\(x=y\),则可以消去\(C(.)\wedge s\),得到OPRF值;否则,就是一个随机数。

3、不经意两方分布式伪随机函数 (oblivious two-party distributed pseudorandom function, Otd-PRF)



其中,\(C()\)是具有XOR同态性的线性编码函数;\(\wedge\)表示按比特与(AND)。

这里若\(x_1=x_2\),则\(F_s(k,y)=t=F(k,x_1\bigoplus x_2)\)。

C-C

分析:

1、这里具体如何计算PSI,加密是对称/流加密,还需看原论文!

2、在云平台计算出密态交集结果,分发给个参与方,各自解密。

3、当需增填/删除参与者时,需要重新协商密钥。另外密钥是一个参与方生成的,安全能否保证?

可验证

存在第三方云平台,就会存在恶意行为,比如:云计算平台返回任意结果作为交集(例如仅返回部分交集元素、返回空交集、返回输入集(认为所有元素都是交集)),所以需要参与方可以验证结果(完整性)。

C-C

恶意(云平台)



分析:

1、这里使用了\(D_0,D_1,D_2,公共数据\)D_0\(防止云平台返回空交集;\)D_i\(防止云平台方返回全部输入集(怎么输入,怎么输出)
2、参与者将数据\)S_i\(复制\)r\(份,每份后串接\)r$,防止云平台仅返回部分交集元素。


这点不太理解,,


恶意(云平台、参与方)

上面说的恶意的云品台,若是存在恶意的参与者,即提供一个错误的输入,导致获得一个无效的输出,但恶意参与者还是能获得有效交集。



分析:

1、“提供一个错误的输入,导致获得一个无效的输出,但恶意参与者还是能获得有效交集”,这个怎么理解?

2、改造后的协议,增加了各参与方可以籽云平台上验证。具体验证方法还得看论文!

3、这里为什么用到\(K_1.K_2\),回看论文!


待补充


可验证,可重复,可决定

下面协议实现了云计算平台的全部理想功能:

(1)计算交集的任务完全委托给云计算平台

(2)一旦数据集加密外包后即可进行无数次的PSI计算,无需对数据集再次加密和上传

(3)同时弱客户端具有允许哪些弱客户端使用他们集合的决定





分析:

1、数据外包阶段,就是数据处理阶段,先将数据hash,填入到hash表中,同一行使用相同密钥计算PRF,然后对每个元素(第\(j\)行\(i\)列)的伪随机值(PRF值)进行盲化,将盲化值“串成”向量发送给云平台

2、这部分符号有些乱,需要去看原文【Improved secure efficient delegated private set intersection】


待补充


可更新

以上PSI协议中上传到云计算平台的数据均为静态数据不可更新,下面实现云计算平台全部理想功能外还实现了加密数据可更新的功能:



分析:

1、加入更新操作,使用BF(布隆过滤器)

2、看起来比较复杂,后面再看原论文【Feather: lightweight multi-party updatable delegated private set intersection】。


待补充


总结

1、给出云-PSI求交、求势的具体协议

2、给出云-PSI中恶意攻击的解决办法(三种情况)

3、给出可更新数据的云-PSI。

云辅助隐私集合求交(Server-Aided PSI)协议介绍:学习的更多相关文章

  1. 一个好用的多方隐私求交算法库JasonCeng/MultipartyPSI-Pro

    Github链接传送:JasonCeng/MultipartyPSI-Pro 大家好,我是阿创,这是我的第29篇原创文章. 今天是一篇纯技术性文章,希望对工程狮们有所帮助. 向大家推荐一个我最近改造的 ...

  2. [java] 求2个集合的交 差 并集

    要求2个集合的交 差 并集. set集合,如下 import java.util.HashSet; import java.util.Set; public class SetTest { publi ...

  3. ray与triangle/quad求交二三事

    引擎中,ray与quad求交,算法未细看,但有求解二次方程,不解.ray与triangle求交,使用的是97年经典算法,仔细看过论文,多谢小武同学指点,用到了克拉默法则求解线性方程组.想模仿该方法,做 ...

  4. javascript集合的交,并,补,子集,长度,新增,删除,清空等操作

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...

  5. python集合set{ }、集合函数及集合的交、差、并

    通过大括号括起来,用逗号分隔元素,特点 1.由不同元素组成,如果定义时存在相同元素,处理时会自动去重 2.无序 3.元素只能是不可变类型,即数字.字符串.布尔和元组,但集合本身可变 4.可直接定义集合 ...

  6. hdu 5111 树上求交

    hdu 5111 树上求交(树链剖分 + 主席树) 题意: 给出两棵树,大小分别为\(n1\),\(n2\), 树上的结点权值为\(weight_i\) 同一棵树上的结点权值各不相同,不同树上的结点权 ...

  7. 一步一步实现基于GPU的pathtracer(二):求交算法

    不管是哪种全局光照算法,最根本的都要落实到光线与物体的求交.主要分为光线与参数曲面和非参数曲面的求交,典型的参数曲面有球.盒.圆柱等基本体及基本体的组合体,以及一些更为复杂的参数曲面.非参数曲面就是所 ...

  8. 线性基求交(2019牛客国庆集训派对day4)

    题意:https://ac.nowcoder.com/acm/contest/1109/C 问你有几个x满足A,B集合都能XOR出x. 思路: 就是线性基求交后,有几个基就是2^几次方. #defin ...

  9. 阿里云重磅发布RDS for SQL Server AlwaysOn集群版

    2018年双十一刚过,阿里云数据库发布RDS for SQL Server AlwaysOn集群版,这是业界除微软云SQL Database外,首家云计算公司基于SQL Server最新AlwaysO ...

  10. 【Weiss】【第03章】练习3.4、3.5:有序链表求交、并

    [练习3.4] 给定两个已排序的表L1和L2,只使用基本的表操作编写计算L1∩L2的过程. [练习3.5] 给定两个已排序的表L1和L2,只使用基本的表操作编写计算L1∪L2的过程. 思路比较简单,测 ...

随机推荐

  1. 高性能的Reactor和Proactor模式学习

    0.引言 在上一篇的笔记中,我们学习了操作系统提供的高效I/O管理技术,主要用于解决服务器在高并发场景下的资源浪费和瓶颈问题.但是在实际的代码编写中,要是我们都全部调用底层的I/O多路复用接口来编写网 ...

  2. Ext.Net & ASP.NET

    实际上己有很完善的asp.net.控件实现ExtJS的功能,使用开发人员不用过多了解EXtJS即可实现其一样的功能. 使用Asp.net web form /MVC方式均可.可以很快的上手开发,如果用 ...

  3. typescript 接口和对象类型(四)

    在typescript中,我们定义对象的方式要用关键字interface(接口), 使用interface来定义一种约束,让数据的结构满足约束的格式.定义方式如下:   // 定义一个接口类型 int ...

  4. 浅析Flie类getAbsolutePath()方法

    开发中,常常需要上传文件,并将文件存于远程服务器(如minio)或者本地,当存于本地时对存储路径的指定是常见的问题. 当然,你可以在本地写死静态资源路径,如"D:\static\fileUp ...

  5. python之DataClass

    Python 在版本 3.7 (PEP 557) 中引入了dataclass.dataclass允许你用更少的代码和更多的开箱即用功能来定义类. 下面定义了一个具有两个实例属性 name 和 age ...

  6. 在vue中使用XLSX导出表格

    安装依赖 npm install file-saver xlsx -S 然后在需要的页面中引入依赖包 import FileSaver from 'file-saver'; import XLSX f ...

  7. python之模拟数据Faker

    Faker,它解决的问题是python模拟(随机)数据!不知道大家在工作中没有用到过假数据,特别前后端开发的人员,应该经常用到,前端人员页面展示,效果展示.后端人员数据库数据模拟.今天给大家介绍的这个 ...

  8. Echarts 图例组件

    1.图例组件的基本介绍 图例组件legend展现了不同系列的标记(symbol),颜色和名字.可以通过点击图例控制哪些系列不显示. 2.开启图例组件 开启图例组件默认时关闭状态,通过配置legend字 ...

  9. github访问不了解决方法

    github突然无法访问,解决办法如下-迷恋自留地 首先通过网址https://tool.chinaz.com/dns?type=a&host=github.com 修改hosts文件,win ...

  10. 《JavaScript 模式》读书笔记(6)— 代码复用模式1

    我们有开始进入新篇章了.这篇内容主要讲代码复用模式,实际上代码复用,就是继承啊,原型啊,构造函数啊等等这一类的内容.对于前端进阶来说,是很重要的基础知识.这一篇内容会对原型. 继承有很深入的讲解.我也 ...