Efficient Private Matching and Set Intersection 笔记
- year: 2004;
- conferance: EUROCRYPT
- authors: Michael J. Freedman, Kobbi Nissim, and Benny Pinkas
- citation : 1534;
一、主要思想
提供了一种针对两方的(client和server)高效隐私比对和隐私求交算法。具体是在半诚实场景、malicious client场景和malicious server场景下三种方案。
二、前置知识
2.1 Private matching(PM)
-
PM正常形式
- client( C C C)和server( S S S)分别拥有大小为 k c k_c kc和 k s k_s ks的隐私输入数据 X X X和 Y Y Y, C C C输入 X = { x 1 , ⋅ ⋅ ⋅ , x k c } X=\{x_1, ···,x_{k_c}\} X={x1,⋅⋅⋅,xkc}, S S S输入 Y = { y 1 , ⋅ ⋅ ⋅ , y k s } Y=\{y_1, ···,y_{k_s}\} Y={y1,⋅⋅⋅,yks}, C C C仅可以获得 X ∩ Y : { x u ∣ ∃ v , x u = y v } ← P M ( X , Y ) X \cap Y: \{x_u|\exist v,x_u = y_v \}\leftarrow PM(X,Y) X∩Y:{xu∣∃v,xu=yv}←PM(X,Y).
-
PM变体:
-
Private cardinality matching( P M C PM_C PMC):仅允许 C C C获得输入相同的个数,即 ∣ X ∩ Y ∣ : ∣ P M ∣ ← P M C ( X , Y ) |X \cap Y|: |PM| \leftarrow PM_{C}(X,Y) ∣X∩Y∣:∣PM∣←PMC(X,Y)|$
-
Private threshold matching ( P M t ) (PM_t) (PMt):仅让 C C C获悉相同个数是否超过某个阈值 t t t,即 1 ← P M t ( X , Y ) i f P M C > t 1 \leftarrow PM_t(X,Y) \ if\ PM_C >t 1←PMt(X,Y) if PMC>t.
-
-
Private Matching and Oblivious Transfer(OT)
- 将PM协议转OT协议。例如 1-out-of-2 bit OT协议中,发送者的输入为两个比特 { b 0 , b 1 } \{b_0,b_1\} {b0,b1}, 选择者的输入为一个比特 σ \sigma σ,选择者只能获得选择的 b σ b_{\sigma} bσ。
- 发送者构造待选串 { 0 ∣ b 0 , 1 ∣ b 1 } \{0|b_0,1|b_1\} {0∣b0,1∣b1},选择者构造选择字串 { σ ∣ 0 , σ ∣ 1 } \{\sigma|0,\sigma|1\} {σ∣0,σ∣1},之后双方运行PM协议,选择者最后可以获得两个交集 σ ∣ b σ \sigma|b_{\sigma} σ∣bσ。
2.2 同态加密算法
本文提出的方案需要依赖具有加法同态以及常数乘法表操作的同态加密方案,同时这两个操作要求在无需密钥的情况下便可进行。现有Paillier 密码系统满足该需求。
- 加法操作:给定密文 E n c ( m 1 ) Enc(m_1) Enc(m1)和 E n c ( m 2 ) Enc(m_2) Enc(m2),需要计算 E n c ( m 1 + m 2 ) Enc(m_1+m_2) Enc(m1+m2),即 E n c ( m 1 ) + E n c ( m 2 ) = E n c ( m 1 + m 2 ) Enc(m_1)+Enc(m_2)=Enc(m_1+m_2) Enc(m1)+Enc(m2)=Enc(m1+m2)
- 常数乘操作:给定密文 E n c ( m 1 ) Enc(m_1) Enc(m1)和常数 c c c,需计算 E n c ( c m ) Enc(cm) Enc(cm)。
三、半诚实场景
C C C和 S S S会诚实的执行协议中约定操作,但是他们会对对方数据好奇,期望通过输出获得一些有用信息。
3.1 概述
- C C C定义多项式 P P P, 且 P P P的根为 C C C的隐私输入数据 X = { x 1 , ⋅ ⋅ ⋅ , x k c } X=\{x_1,···,x_{k_c}\} X={x1,⋅⋅⋅,xkc}
P ( y ) = ( x 1 − y ) ( x 2 − y ) ⋅ ⋅ ⋅ ( x k c − y ) = ∑ u = 0 k c α u y u P(y) = (x_1-y)(x_2-y)···(x_{k_c}-y)=\sum^{k_c}_{u=0}\alpha_{u}y^u P(y)=(x1−y)(x2−y)⋅⋅⋅(xkc−y)=∑u=0kcαuyu
- C C C将多项式中的系数 α u \alpha_u αu利用同态加密加密算法进行加密并发送 S S S。
-
S
S
S收到加密系数
E
n
c
(
α
u
)
Enc(\alpha_u)
Enc(αu)利用同态算法性质将自身隐私数据
Y
=
{
y
1
,
⋅
⋅
⋅
,
y
k
s
}
Y=\{y_1,···,y_{k_s}\}
Y={y1,⋅⋅⋅,yks}作为输入分别计算加密后的多项式
P
P
P的值,同时对结果乘上随机数
r
r
r以及加上自身值,即
E
n
c
(
r
⋅
P
(
y
)
+
y
)
Enc(r \cdot P(y)+y)
Enc(r⋅P(y)+y),最后
S
S
S将结果发送至
C
C
C。
- 如果存在 y i = x j y_i=x_j yi=xj,那么 P ( y j ) = 0 P(y_j)=0 P(yj)=0,得到 E n c ( r ⋅ P ( y j ) + y j ) = E n c ( y j ) Enc(r \cdot P(y_j)+y_j)=Enc(y_j) Enc(r⋅P(yj)+yj)=Enc(yj)
- C C C收到后对密文进行解密,如果发现对应明文在集合 X X X中则表示两者共同拥有该数据。
3.2 具体协议
3.3 协议变体:Private Matching for set cardinality( P M C PM_C PMC)
该协议变体仅要求让 C C C知道交集的个数,而不知道确切值。具体做法为:
- 2(b)中 S S S 使用新公示计算加密值: E n c ( r ⋅ P ( y ) + 0 + ) Enc(r\cdot P(y)+0^{+}) Enc(r⋅P(y)+0+), 0 + 0^{+} 0+可以认为是 C C C和 S S S约定好的特定字符串。
- 因此,当 C C C收到密文并进行解密后,看到约定字符串 0 + 0^{+} 0+时便可判断出当前值相同从而统计整个交集个数。
3.4 协议变体:Private Matching for cardinality threshold ( P M t PM_t PMt) and other functions
该协议变体要求 C C C仅知道交集大小是否高于某个门限值 t t t,即 c = ∣ X ∩ Y ∣ > t c=|X\cap Y| > t c=∣X∩Y∣>t,为实现该变体协议,改动如下:
- 步骤2(b)中, S S S对随机数进行编码而非 y y y,即 E n c ( r ⋅ P ( y ) + r y ) Enc(r\cdot P(y)+r_y) Enc(r⋅P(y)+ry)。
- 之后 S S S和 C C C继续按原来协议进行。
- 当 C C C收到密文并解密后, C C C和 S S S共同向某电路输入大小为 k S k_S kS的数据。其中, C C C的输入数据是解密后拿到的明文, S S S的输入数据为步骤2(b)中选择的随机数 r y r_y ry。
- 之后通过电路来比较明文和 r y r_y ry是否相等,以及整个相同个数是否超过门限值 t t t输出1/0.
四、恶意方场景
C C C和 S S S都可能为恶意方,但不会同时都是。他们可能出现以下行为
- 拒绝参加协议
- 任意值替换输入
- 提前结束协议
4.1 Malicious clients
client可能发送超过具有 k C k_C kC个根的多项式(例如所有系数都为0),因此为了防止该情况的发生,client被要求 L L L个种存在B个不同构造的多项式(故多项式个数为 L × M L\times M L×M)
该协议主要利用哈希函数,步骤如下
- C C C利用哈希函数将输入 X X X中元素映射到多个bin
- C C C为每个bin构造多项式,且该多项式的根是对应bin中元素值
- C C C将每个多项式系数加密并相应发送至 S S S。
- S S S用cut-and-choose方法判断这些根个数总和为 k C k_C kC
- 上述协议重复 L L L次,最后得到在 L L L中呈指数级小的错误概率。
4.2 Malicious Server
恶意 S S S可能出现计算 E n c ( r ⋅ ( P ( y ) + P ( y ′ ) ) + y ′ ′ ) Enc(r \cdot (P(y) + P(y')) + y'' ) Enc(r⋅(P(y)+P(y′))+y′′)的情况,导致 C C C认为 y ′ ′ y'' y′′为交集元素。为解决该方案,作者在原有 P r o t o c o l P M − S e m i − H o n e s t Protocol\ PM-Semi-Honest Protocol PM−Semi−Honest进行改进。
4.3 Handling both malicious client and server
针对解决 C C C和 S S S都为恶意方的情形。
- 与之前相同, C C C利用哈希函数将 X X X元素映射至 B B B bins,之后为每个bin B i B_i Bi构造度为 M M M的多项式 P i P_i Pi且 P i ( z ) = 0 P_i(z)=0 Pi(z)=0, z z z需满足条件(1) z = F s ( G ( x ) ) , x ∈ X z=F_s(G(x)),x \in X z=Fs(G(x)),x∈X 或(2) 构造度为 M M M而添加的必须元素。
- C C C利用不同随机函数密钥 s s s产生 L L L个不同多项式备份以及多项式, C C C将上述多项式的系数加密并将密文发送给 S S S。
- C C C 向 S S S发送 L / 2 L/2 L/2个原始明文让其进行验证。
- 如果所有的都验证成果, S S S使用另外 L / 2 L/2 L/2的数据进行运算。首先, S S S选择随机串 s s s并将其进行分割成 L / 2 L/2 L/2个切片作为 P M − M a l i c i o u s − S e r v e r PM-Malicious-Server PM−Malicious−Server中的随机数使用,之后双方验证如 P M − M a l i c i o u s − S e r v e r PM-Malicious-Server PM−Malicious−Server。