(阅读笔记)Faster Private Set Intersection based on OT Extension

文章探讨了隐私集合交集(PSI)协议的不同方法,包括公钥基础、电路基础、基于OT和第三方基础的协议,并重点介绍了使用OT扩展和BloomFilter优化的PSI协议。作者提出了一种新的OT-basedPSI协议,通过实验对比展示了其效率优势。此外,文章还讨论了如何使用GMW协议优化电路基础的PSI,并介绍了使用BloomFilter和随机OT扩展的优化策略。
摘要由CSDN通过智能技术生成

这篇文章是Benny Pinkas,Thomas Schneider和Michael Zohner三人发表在14年USENIX上的文章,链接为:Faster Private Set Intersection Based on OT Extension


摘要

PSI(Private set intersection,隐私数据集求交)允许两方 P 1 , P 2 P_1, P_2 P1,P2计算他们各自拥有的数据集 X , Y X,Y X,Y的交集 X ⋂ Y X\bigcap Y XY,但是不揭露交集外的数据集的任何信息。
本文的主要工作是介绍通用的PSI协议(基于安全计算和Bloom filters) 并利用 OT 扩展技术进行优化的方法,提出一个新的以 OT 为基础的PSI协议,并与其他 PSI协议的实验结果进行比较。


一、现有PSI协议

对于PSI问题,一个不成熟的解决方案是:对双方各自的输入用hash函数加密,然后比较hash结果是否一致。虽然这个方法很高效,但是不安全,如果输入域不大或者加密不高,很容易被暴力破解。常用的PSI协议方案多基于公钥加密、电路、OT、三方等。

Public-Key-Based PSI

基于公钥加密方法的PSI协议多基于 Diffie-Hellmann (DH)密钥协商方法,其他协议引入了插值多项式、blind-RSA、加法同态加密等技术。DH-based protocol在通信方面是最高效的,因此适用于距离远但计算能力强的参与方。

Circuit-Based PSI

算术电路、布尔电路、姚氏电路均可用于PSI,通用的 circuit-based protocol 要比 public-key-based protocol 低效,但是在计算交集的变量时更灵活更简单。

OT-Based PSI

主要使用了Bloom filters 和 OT 扩展技术。
( 2 1 ) − O T l m \left ( \begin{array}{c} 2\\1 \end{array} \right )-OT_l^m (21)OTlm中,发送方 S S S持有 m m m个消息对 ( x 0 i , x 1 i ) , x 0 i , x 1 i ∈ { 0 , 1 } l (x_0^i,x_1^i), x_0^i,x_1^i \in\{0,1\}^l (x0i,x1i),x0i,x1i{0,1}l, 接收方持有 m m m比特的选择向量 b b b,协议结束后 R R R获得 x b [ i ] i x^i_{b[i]} xb[i]i且不知道 x b [ 1 − i ] i x^i_{b[1-i]} xb[1i]i的任何信息。OT扩展技术将 O T l m OT^m_l OTlm昂贵的公钥操作降低为 O T κ κ OT^{\kappa}_{\kappa} OTκκ.

Third Party-Based PSI

引入额外的参与方。

PSI协议效率对比

在这里插入图片描述


二、PSI协议优化

Notation

假设参与的双方是 P 1 , P 2 P_1, P_2 P1,P2, 各自拥有的数据集分别是 X , Y X,Y X,Y,其中 ∣ X ∣ = n 1 , ∣ Y ∣ = n 2 |X|=n_1, |Y|=n_2 X=n1,Y=n2, X , Y X, Y X,Y中的元素分别记为 x , y x,y x,y, 每一个元素的长度均为 σ b i t \sigma bit σbit
a , b a,b a,b均为 b i t bit bit串, a ∧ b a\wedge b ab表示其按位与操作, a ⊕ b a\oplus b ab表示其按位异或操作。
( N 1 ) − O T l m \left ( \begin{array}{c} N\\1 \end{array} \right )-OT_l^m (N1)OTlm表示 m m m个并行的 1-out-of-N OT传输长为 l l l的比特串。
κ \kappa κ为对称安全参数, ρ \rho ρ为非对称安全参数, λ \lambda λ为统计安全参数。

威胁模型:半诚实敌手、恶意敌手

Circuit-Based PSI

GMW 协议

假设 P 1 , P 2 P_1,P_2 P1,P2分别拥有输入比特 u , v u,v u,v,他们分别对其作分享 u = u 1 ⊕ u 2 , v = v 1 ⊕ v 2 u=u_1\oplus u_2, v=v_1\oplus v_2 u=u1u2,v=v1v2, 在输入线为 u , v u,v u,v,输出线为 w w w X O R XOR XOR门中, P i , i ∈ { 1 , 2 } P_i, i\in\{1,2\} Pi,i{1,2}本地计算 w i = u i ⊕ v i w_i=u_i\oplus v_i wi=uivi.
A N D AND AND门需要用到乘法三元组 ( α 1 , α 2 , β 1 , β 2 , γ 1 , γ 2 ∈ { 0 , 1 } ) (\alpha_1, \alpha_2, \beta_1, \beta_2, \gamma_1, \gamma_2 \in \{0,1\}) (α1,α2,β1,β2,γ1,γ2{0,1}), 满足 ( α 1 ⊕ α 2 ) ∧ ( β 1 ⊕ β 2 ) = γ 1 ⊕ γ 2 (\alpha_1\oplus \alpha_2) \wedge ( \beta_1\oplus\beta_2)= \gamma_1\oplus \gamma_2 (α1α2)(β1β2)=γ1γ2。给定三元组,双方计算 d i = α i ⊕ u i , e i = β i ⊕ v i d_i=\alpha_i \oplus u_i, e_i=\beta_i \oplus v_i di=αiui,ei=βivi, 交换 d i , e i d_i, e_i di,ei并重构 d = d 1 ⊕ d 2 , e = e 1 ⊕ e 2 d=d_1\oplus d_2, e=e_1\oplus e_2 d=d1d2,e=e1e2, 在输出线分别计算 w 1 = ( d ∧ e ) ⊕ ( d ∧ β 1 ) ⊕ ( e ∧ α 1 ) ⊕ γ 1 , w 2 = ( d ∧ β 2 ) ⊕ ( e ∧ α 2 ) ⊕ γ 2 w_1=(d\wedge e)\oplus(d\wedge\beta_1)\oplus(e\wedge\alpha_1)\oplus\gamma_1, w_2=(d\wedge\beta_2)\oplus(e\wedge\alpha_2)\oplus\gamma_2 w1=(de)(dβ1)(eα1)γ1,w2=(dβ2)(eα2)γ2
乘法三元组可以用两轮的 1 bit 长的OT实现。在第一轮 OT中, P 1 P_1 P1作为发送方, P 2 P_2 P2作为接受方,选择比特为 α 2 \alpha_2 α2;在第二轮 OT中, P 2 P_2 P2作为发送方, P 1 P_1 P1作为接受方,选择比特为 α 1 \alpha_1 α1。 每一轮OT中,发送方持有 ( x 0 i , x 1 i ) (x_0^i, x_1^i) (x0i,x1i), 并设置 β i = x 0 i ⊕ x 1 i \beta_i=x_0^i\oplus x_1^i βi=x0ix1i, 接收方持有 x α i i x_{\alpha_i}^i xαii。注意到: ( α 1 ⊕ α 2 ) ∧ ( β 1 ⊕ β 2 ) = ( α 1 ∧ β 1 ) ⊕ ( α 1 ∧ β 2 ) ⊕ ( α 2 ∧ β 1 ) ⊕ ( α 2 ∧ β 2 ) = γ 1 ⊕ γ 2 (\alpha_1\oplus \alpha_2) \wedge ( \beta_1\oplus\beta_2)= (\alpha_1\wedge\beta_1)\oplus(\alpha_1\wedge\beta_2)\oplus(\alpha_2\wedge\beta_1)\oplus(\alpha_2\wedge\beta_2)=\gamma_1\oplus \gamma_2 (α1α2)(β1β2)=(α1β1)(α1β2)(α2β1)(α2β2)=γ1γ2。其中 α i ∧ β i \alpha_i\wedge\beta_i αiβi可以本地计算,而注意到 α 1 ∧ β 2 = x α 1 2 ⊕ x 0 2 , α 2 ∧ β 1 = x α 2 1 ⊕ x 0 1 \alpha_1\wedge\beta_2=x_{\alpha_1}^2\oplus x_0^2, \alpha_2\wedge\beta_1=x_{\alpha_2}^1\oplus x_0^1 α1β2=xα12x02,α2β1=xα21x01(可以通过真值表验证,具体怎么推导的我也不清楚)因此, P 1 P_1 P1设置 γ 1 = ( α 1 ∧ β 1 ) ⊕ x 0 1 ⊕ x α 1 2 \gamma_1=(\alpha_1\wedge\beta_1)\oplus x_0^1\oplus x_{\alpha_1}^2 γ1=(α1β1)x01xα12, P 2 P_2 P2设置 γ 2 = ( α 2 ∧ β 2 ) ⊕ x 0 2 ⊕ x α 2 1 \gamma_2=(\alpha_2\wedge\beta_2)\oplus x_0^2\oplus x_{\alpha_2}^1 γ2=(α2β2)x02xα21

优化

由于2/3的 A N D AND AND门都来源于选择器,在每一个选择器中,都有长为 σ b i t \sigma bit σbit的输入 x , y x, y x,y和一个选择比特 s s s,因此我们需要 σ \sigma σ A N D 门 AND门 AND来计算 z [ j ] = s ∧ ( x [ j ] ⊕ y [ j ] ) ⊕ x [ j ] , 1 ≤ j ≤ σ z[j]=s\wedge(x[j]\oplus y[j])\oplus x[j], 1\leq j\leq \sigma z[j]=s(x[j]y[j])x[j],1jσ, 因此我们计算的时候可以使用向量三元组的形式: ( α 1 , α 2 ∈ { 0 , 1 } ; β 1 , β 2 , γ 1 , γ 2 ∈ { 0 , 1 } σ ) (\alpha_1, \alpha_2\in \{0,1\}; \beta_1, \beta_2, \gamma_1, \gamma_2 \in \{0,1\}^{\sigma}) (α1,α2{0,1}β1,β2,γ1,γ2{0,1}σ), 满足 ( α 1 ⊕ α 2 ) ∧ ( β 1 [ j ] ⊕ β 2 [ j ] ) = γ 1 [ j ] ⊕ γ 2 [ j ] (\alpha_1\oplus \alpha_2) \wedge (\beta_1[j]\oplus\beta_2[j])= \gamma_1[j]\oplus \gamma_2[j] (α1α2)(β1[j]β2[j])=γ1[j]γ2[j]。为了评估 A N D AND AND门,双方计算 d i = α i ⊕ u i , e i [ j ] = β i [ j ] ⊕ v i [ j ] d_i=\alpha_i \oplus u_i, e_i[j]=\beta_i[j] \oplus v_i[j] di=αiui,ei[j]=βi[j]vi[j], 交换 d i , e i [ j ] d_i, e_i[j] di,ei[j]并重构 d = d 1 ⊕ d 2 , e [ j ] = e 1 [ j ] ⊕ e 2 [ j ] d=d_1\oplus d_2, e[j]=e_1[j]\oplus e_2[j] d=d1d2,e[j]=e1[j]e2[j], 在输出线计算 w i [ j ] = ( d ∧ e [ j ] ) ⊕ ( d ∧ β i [ j ] ) ⊕ ( e [ j ] ∧ α i ) ⊕ γ i [ j ] w_i[j]=(d\wedge e[j])\oplus(d\wedge\beta_i[j])\oplus(e[j]\wedge\alpha_i)\oplus\gamma_i[j] wi[j]=(de[j])(dβi[j])(e[j]αi)γi[j]。向量三元组用随机的 O T σ 2 OT_{\sigma}^2 OTσ2实现。

Garbled Bloom Filter-Based PSI

Bloom Filter

一个 BF 包括 n 个 elelments, 一个 m 比特长的 F, 和 k 个独立的哈希函数 h 1 , . . . , h k , h i : { 0 , 1 } ∗ ↦ [ 1 , m ] h_1, ..., h_k, h_i: \{0,1\}^*\mapsto[1,m] h1,...,hk,hi:{0,1}[1,m]。 初始化阶段, F 的所有比特都设为0。当一个 x x x 要被插入 BF 中,那么对所有的 i 设置 F [ h i ( x ) ] = 1 F[h_i(x)]=1 F[hi(x)]=1。 如果要查询 BF 中是否含有 y y y, 需要检查所有的 F [ h i ( y ) ] F[h_i(y)] F[hi(y)], 只有当所有 B F [ h i ( y ) ] BF[h_i(y)] BF[hi(y)]全不为0时, y y y 才在 BF 中。

Garbled Bloom Filter

一个GBF包含 κ \kappa κ个哈希函数,在每一个位置 G [ i ] , 1 ≤ i ≤ m G[i],1\leq i \leq m G[i]1im 都有长为 l l l 的shares, x x x 在 G 中需要满足 ⨁ j = 1 κ G [ h j ( x ) ] = x \bigoplus_{j=1}^{\kappa}G[h_j(x)]=x j=1κG[hj(x)]=x
为了用一个 GBF G 来表示一个数据集 X, G 的所有位置都被初始化为未占用,在插入每一个 x ∈ X x\in X xX时,都先找一个未占用的哈希 G [ h t ( x ) ] G[h_t(x)] G[ht(x)],其他所有的未占用的位置 G [ h j [ x ] ] G[h_j[x]] G[hj[x]] 都设置为随机的 l l l 比特串, 只有 G [ h t ( x ) ] G[h_t(x)] G[ht(x)] 被设置为 G [ h t ( x ) ] = x ⊕ ( ⨁ j = 1 , j ≠ t κ G [ h j ( x ) ] ) G[h_t(x)]=x\oplus (\bigoplus_{j=1, j\neq t}^{\kappa}G[h_j(x)]) G[ht(x)]=x(j=1,j=tκG[hj(x)])
在半诚实的PSI协议中, P 1 P_1 P1 产生一个 m 比特长的 GBF G X G_X GX P 2 P_2 P2产生一个 m 比特长的 BF F Y F_Y FY, P 1 , P 2 P_1, P_2 P1,P2执行 O T l m OT_l^m OTlm, 在第 i 轮 OT 中, P 1 P_1 P1 作为发送者输入 ( 0 , G X [ i ] ) (0, G_X[i]) (0,GX[i]), P 2 P_2 P2作为接收者输入选择比特 F Y [ i ] F_Y[i] FY[i], 并且获得交集 GBF G ( X ∧ Y ) G_{(X\wedge Y)} G(XY), 若 F Y [ i ] = 0 F_Y[i]=0 FY[i]=0 G ( X ∧ Y ) [ i ] = 0 G_{(X\wedge Y)[i]=0} G(XY)[i]=0, 反之 G ( X ∧ Y ) [ i ] = G X [ i ] G_{(X\wedge Y)[i]=G_X[i]} G(XY)[i]=GX[i] P 2 P_2 P2要检查 y y y 是否在交集中, 只需要检查 ⨁ i = 1 k G ( X ∧ Y ) [ h i ( y ) ] \bigoplus_{i=1}^kG_{(X\wedge Y)}[h_i(y)] i=1kG(XY)[hi(y)]是否等于 y y y

Random GBF-Based PSI

使用了随机OT扩展技术,在第 i 轮 OT 中, S S S 无输入, 输出 ( x 0 i , x 1 i x_0^i, x_1^i x0i,x1i), R R R输入选择比特 b b b并获得输出 x b [ i ] i x_{b[i]}^i xb[i]i, 双方分别利用不经意伪随机函数生成器 (OPRG) 获得了 b 1 , b 2 b_1, b_2 b1,b2, 如果 b 1 = 0 b_1=0 b1=0 S S S 忽略它的输出 ( x 0 i , x 1 i x_0^i, x_1^i x0i,x1i);如果 b 2 = 0 b_2=0 b2=0 R R R 忽略它的输出 x b [ i ] i x_{b[i]}^i xb[i]i

Bloom filter-based protocol

P 1 , P 2 P_1, P_2 P1,P2分别产生一个 BF 得到 F X , F Y F_X, F_Y FX,FY, 并将其作为 OPRG 的输入, 产生随机 GBFs G X , G Y G_X, G_Y GX,GY, 对于 X X X 中的每一个 x j x_j xj, P 1 P_1 P1计算 m P 1 [ j ] = ⨁ i = 1 κ G X [ h i ( x j ) ] m_{P_1}[j]=\bigoplus_{i=1}^{\kappa}G_X[h_i(x_j)] mP1[j]=i=1κGX[hi(xj)], 最后 P 1 P_1 P1 将所有的 m P 1 m_{P_1} mP1 按照随机顺序发送给 P 2 P_2 P2, P 2 P_2 P2 通过判断是否存在 j 使得 m P 1 [ j ] = ⨁ i = 1 κ G Y [ h i ( y ) ] m_{P_1}[j]=\bigoplus_{i=1}^{\kappa}G_Y[h_i(y)] mP1[j]=i=1κGY[hi(y)]成立,来判断 y y y 是否在交集中。


PEQT Protocol

Basic PEQT Protocol

在大部分判断隐私数据集是否相等(PEQT)的协议中, P 1 , P 2 P_1, P_2 P1,P2 都是通过一个 ( 2 1 ) − O T l σ \left ( \begin{array}{c} 2\\1 \end{array} \right )-OT_l^{\sigma} (21)OTlσ, P 1 P_1 P1 拥有 ( s 0 i , s 1 i s_0^i, s_1^i s0i,s1i), P 2 P_2 P2 y y y 作为选择向量并获得 s y [ i ] i s^i_{y[i]} sy[i]i, P 1 P_1 P1计算 m P 1 = ⨁ i = 1 σ s x [ i ] i m_{P_1}=\bigoplus_{i=1}^{\sigma}s_{x[i]}^i mP1=i=1σsx[i]i 并发送给 P 2 P_2 P2, P 2 P_2 P2 计算 m P 2 = ⨁ i = 1 σ s y [ i ] i m_{P_2}=\bigoplus_{i=1}^{\sigma}s_{y[i]}^i mP2=i=1σsy[i]i并比较,当且仅当 m P 1 = m P 2 m_{P_1}=m_{P_2} mP1=mP2时, x = y x=y x=y

y =? x

优化时, P 2 P_2 P2 σ b i t \sigma bit σbit y y y 切分成 t t t 块: y = y [ 1 ] ∣ ∣ . . . ∣ ∣ y [ t ] y=y[1] || ... || y[t] y=y[1]∣∣...∣∣y[t], 同样, P 1 P_1 P1 x x x 也切分成 t t t 块: x = x [ 1 ] ∣ ∣ . . . ∣ ∣ x [ t ] x=x[1] || ... || x[t] x=x[1]∣∣...∣∣x[t], 使用 ( N 1 ) − O T l σ \left ( \begin{array}{c} N\\1 \end{array} \right )-OT_l^{\sigma} (N1)OTlσ P 1 P_1 P1 拥有 ( s 0 i , . . . , s N − 1 i s_0^i,..., s_{N-1}^i s0i,...,sN1i), P 2 P_2 P2 拥有 s y [ i ] i s^i_{y[i]} sy[i]i, P 1 P_1 P1计算 m P 1 = ⨁ i = 1 t s x [ i ] i m_{P_1}=\bigoplus_{i=1}^ts_{x[i]}^i mP1=i=1tsx[i]i并发送, P 2 P_2 P2 计算 m P 2 = ⨁ i = 1 t s y [ i ] i m_{P_2}=\bigoplus_{i=1}^ts_{y[i]}^i mP2=i=1tsy[i]i并比较,当且仅当 m P 1 = m P 2 m_{P_1}=m_{P_2} mP1=mP2时, x = y x=y x=y

y in? X

双方均运行 ( N 1 ) − O T n 1 l t \left ( \begin{array}{c} N\\1 \end{array} \right )-OT_{n_1l}^t (N1)OTn1lt, 在第 i 轮 OT 中, P 1 P_1 P1 拥有 N 个随机串 ( s 0 i , . . . , s N − 1 i s_0^i, ..., s_{N-1}^i s0i,...,sN1i) ∈ { 0 , 1 } n 1 l \in \{0,1\}^{n_1l} {0,1}n1l, P 2 P_2 P2 拥有 一个随机串 s y [ i ] i s_{y[i]}^i sy[i]i。执行 PEQT 协议时, P 1 P_1 P1 计算 m P 1 [ j ] = ⨁ i = 1 t s x j [ i ] i [ j ] m_{P_1}[j] = \bigoplus_{i=1}^t s_{x_j[i]}^i[j] mP1[j]=i=1tsxj[i]i[j] 并发送这 n 1 l n_1l n1l bit长的 m P 1 m_{P_1} mP1 P 2 P_2 P2, P 2 P_2 P2计算 m P 2 = ⨁ i = 1 t s y [ i ] i m_{P_2}=\bigoplus_{i=1}^ts_{y[i]}^i mP2=i=1tsy[i]i, 并检查是否存在 j 使得 m P 1 [ j ] = m P 2 m_{P_1}[j]=m_{P_2} mP1[j]=mP2, 若存在则证明 X 中存在与 y 相等的元素。

Y   c a p \ cap  cap X

对所有的 y ∈ Y y\in Y yY执行上述算法。

Hashing Schemes and PSI

当数据集大小为 n n n 时, 协议运行时比较的次数是 n 2 n^2 n2, 因此我们引入 hash 函数来减少比较的次数,具体实现是双方均将自己的输入打包成一系列的 bins, 如果一个输入元素在交集中,双方就把它打包到同一个 bin 中,在检验时双方只需要在相同的 bin 中执行。(这一块儿不是很懂)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值