上一篇文章我们分析了谷歌开源库 (Private Join and Compute ) 的应用场景 ( 谷 歌隐私 交 集和技术解析 1 - 应用场景分析 ) , 本篇文章对 其技术进行分析.
谷歌这个开源库是利用已有的密码技术成果, 对已有技术组合从而达到解决问题的目的. 有点像比特币( 比特币白皮书解析链接 ), 都是站在巨人肩膀上.
谷歌是如何从学术界摘果子来解决工业界实际问题的呢?
谷歌这个开源库的主要工作就是设计一个切实可行的密码学安全计算协议, 其目的是为了工业界的使用.
01
问题模型
该协议解决的主要问题就是计算隐私交集和( Private Intersection-Sum , 简称 P IS ) .
问题模型可以抽象为:
有两方各自拥有包含用户身份的数据集, 其中一方还拥有与用户身份相关的一个整数, 例如该整数可以是该用户的交易金额. 双方想知道如下内容:
(1) 双方拥有的共同用户数量;
(2) 在不泄露用户输入的任何隐私信息下, 这些共同用户所对应的整数之和.
这就是一个 隐私交集和( P IS ) 问题.
该问题不是一个空想出来的问题, 而是来自于企业的具体需求.
例如在广告战中, 计算具体广告转化率, 也就是打广告的效果. 有多少人因为广告而购买了商品. 在该需求中, 可能涉及到多个企业. 这是在企业合作中经常会出现的情况.
这个问题具有重要的实际价值, 而且在很多场景下都需要, 具有共性 .
02
技术框架
上述问题咋看起来, 很像 隐私集合交集问题( Private Set Intersection , 简称 P SI ) . 注意 P IS 和 P SI 是两个问题.
P IS 是一个密码学上的传统问题, 即在不泄露交集的情况下, 计算集合的交集.
而谷歌这里定义的 P IS 是除了 P IS 所完成的功能外, 还能够对交集做聚合计算. 显然这会带来额外的计算开销.
注意, 聚合就是对同一属性的元素求和.
谷歌开源库做的事就是以 P SI 方案为基石, 对其进行扩展. 将其扩展为在不泄露交集的情况下, 能够在相应的属性上做聚合计算.
所以该开源库的架构是:
P SI + 对交集元素求和(在不泄露交集元素的前提下)
03
技术路线
该库的技术路线就是首先根据已有的 P SI 方案, 选择出最有效的方案作为备选. 然后通过加法同态加密实现聚合功能.
这些年, 密码学界已经有许多 P SI 的解决方案. 谷歌技术路线上选择了两种解决 P SI 问题的方法.
一种方法 是基于随机不经意传输 ( Random Oblivious Transfer ), 该方法利用了不经意 P RF (O PRF ) 技巧, 获得了隐藏交集元素身份的功能. 然后利用 加法同态加密 , 实现了在不泄露交集元素的情况下提供聚合功能.
第二种方法 是在加法同态加密下, 利用加密的 Bloom 过滤器构造了一个 oblivious 协议. 聚合功能依然通过加法同态加密实现.
除了以上两个协议外, 还构造了 第三个协议 , 称为 D DH 类型协议. 该协议基于传统的集合交集协议, 使用 Pohlig Hellman 密文(基于判断类 D DH 问题的困难性). 这种类型协议可以看做是使用共享密钥的不经意 P RF . 同样, 聚合功能也是通过加法同态加密实现.
04
性能
以上三个协议都需要加法同态加密. 目前有三种加法同态加密方案:
1. Paillier 加密方案
2. 指数型 ElGamal 加密方案
3. 环 L WE 加密方案
从通信效率和计算效率两个角度, 谷歌对基于这三个加法同态加密的三个协议进行了详细分析.
数据显示, 第三个协议 --D DH 类型协议获得了最好的通信效率. 在输入集合元素是 1 0 万个元素情况下, 只需要 9 .28M 的通信量.
此外, 在计算效率方面, 基于环 L WE 加密方案的 D DH 类型协议也依然获得了最佳性能. 在输入集合含有 1 0 万个元素, 以及相关整数是 3 2 位的情况下, 计算 P IS 问题仅需 3 95.78 秒.
对于其它两个协议, 尽管做了计算上的优化, 但是其计算瓶颈主要花在了同态操作上.
----- 未完
来源: http://www.tuicool.com/articles/NnUFJjQ