KKRT16 PSI算法

概念介绍

KKRT16 算法是一种基于OT的轻量级隐私求交协议,用于在半诚实敌手存在的情况下对伪随机函数(OPRF)进行不经意的评估。 在 OPRF 协议中,接收器有一个输入 r r r; 发送方获得输出 s s s,接收方获得输出 F ( s , r ) F(s, r) F(s,r),其中 F F F 是伪随机函数, s s s 是随机种子。该协议核心是构建了一个高效的OPRF协议,通过修改《Extending oblivious transfers efficiently》(IKNP03协议)《Improved OT extension for transferring short secrets》(KK13协议)的核心来进行构建,使其更接近OT,即使用1-out-of-2 OT 扩展协议计算 m m m个OPRF,使计算1-out-of-n的随机值的消耗相当于 3.5 m 3.5m 3.5m的1-out-of-2 OTs。由于其实现了大量OPRF示例且与密钥相关,所以KKRT定义了一个主要协议原语:批量相关密钥 OPRF (BaRK-OPRF)。通过BaRK-OPRF协议,可以实现隐私关键词搜索功能。

OT-based PSI

基于OT的PSI协议最早由《When private set intersection meets big data: An efficient and calable protocol》(DCW13)提出,在《Faster private set intersection based on OT extension》(PSZ14)中对其进行了优化,参考《Phasing: Private Set Intersection using Permutation-based Hashing》 §3.5 中对PSZ14的描述如下:

假设求交双方 P 1 P_1 P1 P 2 P_2 P2,对应的集合分别为 X = { x 1 , . . . x n 1 } X=\{x_1,...x_{n_1}\} X={ x1,...xn1} Y = { y 1 , . . . , y n 2 } Y=\{y_1,...,y_{n_2}\} Y={ y1,...,yn2} P 1 P_1 P1 输出为 ⊥ \perp P 2 P_2 P2 输出为 X ∩ Y X\cap Y XY ,则其流程如下:

  1. 双方 P 1 P_1 P1 P 2 P_2 P2 分别使用哈希将各自的元素映射到哈希表 T 1 T_1 T1 T 2 T_2 T2。其中哈希表中bins的个数为 β = h ( 1 + ϵ ) n 2 \beta = h(1+\epsilon )n_2 β=h(1+ϵ)n2 h h h h = 2 h=2 h=2 ) 表示布谷鸟哈希中使用的哈希函数个数。具体的:
    (1) P 1 P_1 P1 使用简单的哈希对其元素进行 h h h 次散列得到哈希表 T 1 T_1 T1 ,表中第一维寻址bins,第二维寻址bin中元素。
    (2) P 2 P_2 P2 使用 h h h 个哈希函数进行布谷鸟哈希。
    (3) P 1 P_1 P1 使用虚拟机元素 d 1 d_1 d1 填充哈希表 T 1 T_1 T1 中的所有bins到最大大小 m a x β = F ( n 1 , β ) max_\beta=F(n_1,\beta) maxβ=F(n1,β)
    (4) P 2 P_2 P2 使用虚拟元素 d 2 d_2 d2 填充哈希表 T 2 T_2 T2 中的每个空bin。执行填充是为了隐藏映射到特定容器的元素数量,因为这会泄露相关的输入信息。

  2. 完成哈希映射后,双方使用2选1 OT为每个元素生成 ℓ − b i t \ell {\tiny -}bit bit 随机掩码,其中 ℓ = λ + l o g 2 ( n 1 ) + l o g 2 ( n 2 ) \ell = \lambda + log_2(n_1)+log_2(n_2) =λ+log2(n1)+log2(n2)。具体过程如下:
    (1) P 2 P_2 P2 作为接收方,它在 OT中的输入是它映射到bin的单个元素中对应位的值,设该值为 w = T 2 [ i ] w=T_2[i] w=T2[i],将其切分 t t t 个长度为 μ \mu μ 的字符串,则有 w = w [ 1 ] ∣ ∣ . . . ∣ ∣ w [ t ] w=w[1]||...||w[t] w=w[1]∣∣...∣∣w[t],其中 2 μ = N 2^\mu =N 2μ=N
    (2) P 1 P_1 P1 在OT中的输入是两个随机 ℓ − b i t \ell{\tiny -}bit bit 字符串( T 1 T_1 T1)对应位的值,设每个输入为 v j = T 1 [ i ] [ j ] v_j=T_1[i][j] vj=T1[i][j],同样将其切分 t t t 个长度为 μ \mu μ 的字符串,则有 v j = v j [ 1 ] ∣ ∣ . . . ∣ ∣ v j [ t ] v_j=v_j[1]||...||v_j[t] vj=vj[1]∣∣...∣∣vj[t]
    (3)对每个bin中的 m a x β max_\beta maxβ 个元素进行 k k k ( N 1 ) − O T m a x β ℓ 1 \binom{N}{1} {\tiny -} OT_{max_\beta \ell }^{1} (1N)OTmaxβ1 交互, P 1 P_1 P1 得到输出矩阵 M 1 [ i ] [ j ] = ⊕ k = 1 t m v j [ k ] [ k ] [ j ] M_1[i][j]=\oplus _{k=1}^{t} {m_{v_j[k]}[k][j]} M1[i][j]=k=1tmvj[k][k][j] P 2 P_2 P2 得到的输出矩阵为 M 2 [ i ] [ j ] = ⊕ k = 1 t m w [ k ] [ k ] [ j ] M_2[i][j]=\oplus _{k=1}^{t} {m_{w[k]}[k][j]} M2[i][j]=k=1tmw[k][k][j],其中 j ∈ [ m a x β ] j\in [max_\beta] j[maxβ]

  3. P 1 P_1 P1 生成一个集合 V = { M 1 [ i ] [ j ] ∣ ∀ i , j : T 1 [ i ] [ j ] ≠ d 1 } V=\{M_1[i][j] | \forall i,j : T_1[i][j]\ne d_1\} V={ M1[i][j]∣∀i,j:T1[i][j]=d1},并发送给 P 2 P_2 P2 P 2 P_2 P2 计算交集: { T 2 [ i ]   ∣   ∃ j   s . t . M 2 [ i ] [ j ] ∈ V } \{ T_2[i]\space | \space \exists j \space s.t. M_2[i][j]\in V \} { T2[i]  j s.t.M2[i][j]V}

上述过程如下图所示:

在这里插入图片描述

IKNP03 OT扩展协议

实现半诚实模型下m个随机字符串的2选1 OT。

Oblivious Transfer (OT)允许一个发送者在多个接收者中选择并发送一个秘密消息给特定的接收者,而其他接收者无法获取到该消息的内容。1-out-of-poly OT 是对传统 OT 的扩展,允许发送者选择多个秘密消息,并将其发送给多个接收者。这意味着在 1-out-of-poly OT 中,每个接收者可以获得多个消息中的一个,而不仅仅是一个消息,其步骤如下:

  1. 接收方拥有选择比特序列 r ∈ { 0 , 1 } m {\large r}∈\{0,1\}^m r{ 0,1}m,并选择两个 m × k m×k m×k (其中 m ≫ k m \gg k mk)的矩阵 T T T U U U,且假设矩阵的第 j j j 行元素分别满足 t j , u j ∈ { 0 , 1 } k t_j,u_j∈\{0,1\}^k tj,uj{ 0,1}k的随机选择,则有:
    t j ⊕ u j = r j ⋅ 1 k = d e f { 1 k i f    r j = 1 0 k i f    r j = 0 {\large t_j\oplus u_j = r_j\cdot 1^k \stackrel{def}{=}} \left\{\begin{matrix} 1^k & if\space\space r_j=1\\ 0^k & if\space\space r_j=0 \end{matrix}\right. tjuj=rj1k=def{ 1k0kif  rj=1if  rj=0
  2. 发送方随机选择字符串 s ∈ { 0 , 1 } k s∈\{0,1\}^k s{ 0,1}k
  3. 双方按照约定执行 k k k 次2选1字符串OT。具体的,在第 i i i 次OT时,发送方使用选择比特 s i {\large s_i} si 获得矩阵的第 i i i q i ∈ { t i , u i } q^i \in \{t^i, u^i\} qi{ ti,ui} ,以此类推,发送方获得矩阵 T T T U U U
  4. 假设发送方获得的矩阵为 Q Q Q,其 i i i 列用 q i q^i qi 表示, j j j 行用 q j q_j qj 表示,则有:
    q j = t j ⊕ [ r j ⋅ s ] = { t j i f    r j = 0 t j ⊕ s i f    r j = 1 (1) {\large q_j=t_j \oplus \left [ r_j\cdot s \right ] = \left\{\begin{matrix} t_j & if \space \space r_j=0 \\ t_j\oplus s & if \space \space r_j=1 \end{matrix}\right. \tag{1}} qj=tj[rjs]={ tjtjsif  rj=0if  rj=1(1)
  5. 假设 H H H 为随机预言机,则发送方可以计算得到 H ( q j ) H(q_j) H(qj) H ( q j ⊕ s ) {\large H(q_j\oplus s)} H(qjs),接收方只能计算得到 H ( t j ) H(t_j) H(tj) 。根据接收方选择比特 r j {\large r_j} rj ,使得 t j {\large t_j} tj 要么等于 q j {\large q_j} qj 要么等于 q j ⊕ s {\large q_j\oplus s} qjs。又因为接收方不知道 s {\large s} s ,所以接收方只能知道 H ( q j ) H(q_j) H(qj) H ( q j ⊕ s ) H(q_j\oplus s) H(qjs) 中的一个。因此,矩阵 Q Q Q 的每行可以用来产生一个单独的2选1 OT。

该过程可以扩展到任意长度消息的传输,比如加密长字符串,然后在短字符串上使用OT发送解密密钥

假设要加密的消息为 m m m,密钥为 k k k,加密算法为 E ( ⋅ ) E(\cdot) E(),解密算法为 D ( ⋅ ) D(\cdot) D()。则可以将消息 m m m 分成若干个固定长度的块 m 1 , m 2 , . . . , m n m_1, m_2, ..., m_n m1,m2,...,mn,每个块的长度为 k k k。然后使用密钥 k k k 对每个块进行加密,得到密文 c 1 , c 2 , . . . , c n c_1, c_2, ..., c_n c1,c2,...,cn

接着,将每个密文视为一个短字符串,使用 IKNP03 协议进行传输。具体地,将每个密文 c i c_i ci 视为一个短字符串,使用 IKNP03 协议将其发送给接收方。在发送方和接收方之间进行的是短字符串传输,因此可以使用 IKNP03 协议。

接收方接收到所有密文后,使用密钥 k k k 对每个密文进行解密,得到原始消息 m m m。这样就完成了长消息的传输。

需要注意的是,在使用 IKNP03 协议进行短字符串传输时,需要保证 OT 的数量与块的数量相同。具体地,在第 i i i 次 OT 时,发送方需要将第 i i i 个块的两个比特作为输入,接收方需要选择其中一个比特,并获得相应的短字符串。这样就可以保证每个块都能够正确地传输。

2 ℓ 2^\ell 2 选1 OT扩展协议

通过IKNP03 OT扩展协议实现该扩展协议。

在上述IKNP03 OT扩展协议中,存在 T ⊕ U T\oplus U TU 的某行 t j ⊕ u j {\large t_j\oplus u_j} tjuj 要么全为0,要么全为1,在KK13中将该情况解释为重复代码,并使用其他代码替代。改进的 2 ℓ 2^\ell 2 选1 OT扩展协议过程如下。

  1. 与上述IKNP03 OT扩展协议不一样的是, r i {\large r_i} ri 表示接收者的选择位不再是 r i ∈ { 0 , 1 } {\large r_i} \in \{0,1\} ri{ 0,1},而是长度为 ℓ − b i t \ell-bit bit 的字符串,则此时发送者矩阵公式(对应IKNP03 OT扩展协议矩阵公式(1))修改为:
    KaTeX parse error: No such environment: eqnarray at position 16: {\large \begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ q_j=t_j\oplus …
    其中:
    (1) ⋅ \cdot 表示按位与,公式中即对两个长度为 k k k 的字符串进行按位与计算。
    (2) C C C 是线性纠错码,维度是 ℓ \ell ,码字长度是 k k k。当 C C C 是重复码时,该公式与公式(1)相等。

  2. 对每个 r ′ ∈ { 0 , 1 } ℓ {\large r^\prime} \in \{0,1\}^\ell r{ 0,1} ,发送者关联秘密值为 H ( q j ⊕ [ C ( r ′ ) ⋅ s ] ) {\large H(q_j\oplus \left [ C(r\prime )\cdot s \right ] }) H(qj[C(r)s])

  3. 与此同时,接收者可以计算出其中的一个秘密值 r j {\large r_j} rj,记为 H ( t j ) H(t_j) H(tj),根据公式(2),则有:
    H ( t j ) = H ( q j ⊕ [ C ( r j ) ⋅ s ] ) {\large H(t_j)=H(q_j\oplus \left [ C(r_j)\cdot s \right ] )} H(tj)=H(qj[C(rj)s])
    至此,随机字符串OT扩展协议流程完成。发送方将 H ( q j ⊕ [ C ( r ) ⋅ s ] ) H(q_j\oplus \left [ C(r )\cdot s \right ] ) H(qj[C(r)s]) 作为密钥加密第 r , {\large r^,} r, 个OT秘密,而接收者只能获得其选择的第 r j {\large r_j} rj 个秘密值。

安全性证明

假设接收者除 r j {\large r_j} rj 外的其他选择为 r ∼ {\large \stackrel{\thicksim}{r}} r ,则 r ∼ {\large \stackrel{\thicksim}{r}} r 对应的其他秘密值为 H ( q j ⊕ [ C ( r ∼ ) ⋅ s ] ) {\large H(q_j\oplus \left [ C({\large \stackrel{\thicksim}{r}} )\cdot s \right ] }) H(qj[C(r)s])。则根据公式(2)有:
q j ⊕ [ C ( r ∼ ) ⋅ s ] = t j ⊕ [ C ( r j ) ⋅ s ] ⊕ [ C ( r ∼ ) ⋅ s ] = t j ⊕ [ ( C ( r j ) ⊕ C ( r ∼ ) ) ⋅ s ] \begin{equation} \begin{split} {\large q_j}\oplus \left [ C(\stackrel{\thicksim}{r})\cdot s \right ] &= t_j\oplus \left [ C(r_j)\cdot s\right ] \oplus \left [ C(\stackrel{\thicksim}{r})\cdot s\right ] \\ &= t_j\oplus \left [ (C(r_j)\oplus C(\stackrel{\thicksim}{r}) \right)\cdot s ] \end{split} \tag{3} \end{equation} qj[C(r)s]=tj[C(rj)s][C(r)s]=tj[(C(rj)C(r))s](3)

上述公式中的信息除了 s {\large s} s 外其他接收者都已或者。假设线性纠错码 C C C 的最小距离(任意两个不同码字之间的最小汉明距离)为 κ {\large \kappa} κ(安全参数),则 C ( r j ) ⊕ C ( r ∼ ) C(r_j)\oplus C(\stackrel{\thicksim}{r}) C(rj)C(r) 的汉明重量(指码字中非零元素的个数)为 κ {\large \kappa} κ 。直观地,接收者必须猜测 s {\large s} s κ {\large \kappa} κ 位才能违反安全性。所以上述 2 ℓ 2^\ell 2 选1 OT扩展协议是随机预言机安全和相关稳定性的(可以参考IKNP03和KK13中的证明)。通过计算,当 k = 4 κ k=4\kappa k=4κ C C C 满足该特性。在实际应用中 k k k 取值满足 3 κ < k < 4 κ 3\kappa < k < 4\kappa 3κ<k<4κ 即可。

复杂度:扩展矩阵的宽度 k {\large k} k 等于 C C C 中码字的长度。参数 k {\large k} k 决定了基础OT的数量和协议的总体成本。

BaRK-OPRF 协议

BaRK-OPRF协议的全称是Batched, related-key oblivious PRF(批量、相关密钥 不经意PRF),执行m次PRF计算。对于 2 ℓ 2^\ell 2 选1 OT扩展协议,公式(2)中的先行纠错码不需要有效解码,并且能够通过消耗 OT 矩阵的单行来实现 1-out-of-poly OT,这对于相同的 安全保证仅比原始 IKNP 协议长约 3.5 倍,所以基于 2 ℓ 2^\ell 2 选1 OT扩展协议,KKRT16 OT扩展协议中将线性纠错码 C C C 放宽到伪随机函数(PRF),将伪随机输出 R ( x ) R(x) R(x) 与每个可能的输入 r {\large r} r进行关联,发送者可以对任意 r {\large r} r 进行计算,但是接收者只能获取某个 r {\large r} r R ( x ) R(x) R(x),在KKRT16中,使用AES作为PRF,AES加速器可以使AES计算成本降到最低。

下面介绍BaRK-OPRF协议具体流程:
0. R \mathcal{R} R 生成 m m m 个字符串的选择序列 r = ( r 1 , . . . , r m ) r=(r_1,...,r_m) r=(r1,...,rm),其中 r i ∈ { 0 , 1 } ∗ r_i\in \{0,1\}^* ri{ 0,1} S \mathcal{S} S 随机选择 C ← C C \leftarrow \mathcal{C} CC,并发送给接收者,其中 C \mathcal{C} C ( κ , ϵ ) − P R C (\kappa,\epsilon ){\small -}PRC (κ,ϵ)PRC 族,输出长度 k = k ( κ ) k=k(\kappa) k=k(κ)

  1. S \mathcal{S} S 随机选择 s ← { 0 , 1 } k {\large s}\leftarrow \{0,1\}^k s{ 0,1}k,其中 s i {\large s_i} si 表示第 i i i 个比特。
  2. R \mathcal{R} R 生成 m × k m×k m×k 的矩阵 T 0 T_0 T0 T 1 T_1 T1,生成方法为:对 j ∈ [ m ] j\in [m] j[m] ,选择 t 0 , j ← { 0 , 1 } k {\large t_{0,j}\leftarrow \{0,1\}^k} t0,j{ 0,1}k ,并设置 t 1 , j = C ( r j ) ⊕ t 0 , j {\large t_{1,j}=C(r_j)\oplus t_{0,j}} t1,j=C(rj)t0,j。具体解释如下:
    (1)初始化空矩阵 T 0 T_0 T0 T 1 T_1 T1,它们都具有大小为 m × k m \times k m×k的维度, t 0 i t_0^i t0i t 1 i t_1^i t1i 分别表示 T 0 T_0 T0 T 1 T_1 T1 的第 i i i 列数据。
    (2)对于每个 j j j,其中 j ∈ [ m ] j \in [m] j[m](表示从1 到 m m m 的范围),执行以下操作:
    (a) t 0 , j ← { 0 , 1 } k {\large t_{0,j}\leftarrow \{0,1\}^k} t0,j{ 0,1}k: 从集合 { 0 , 1 } k \{0,1\}^k { 0,1}k中随机选择一个向量 t 0 , j {\large t_{0,j}} t0,j 作为 T 0 T_0 T0 的第 j j j 列数据。
    (b) t 1 , j = C ( r j ) ⊕ t 0 , j {\large t_{1,j}=C(r_j)\oplus t_{0,j}} t1,j=C(rj)t0,j:使用函数 C ( ⋅ ) C(\cdot) C()对输入向量 r j r_j rj进行计算,并将结果与 t 0 , j t_{0,j} t0,j进行异或运算,得到向量 t 1 , j t_{1,j} t1,j,将 t 1 , j t_{1,j} t1,j作为 T 1 T_1 T1的第 j j j列数据。
  3. S \mathcal{S} S R \mathcal{R} R 进行 O T m k OT_m^k OTmk 交互,具体流程如下:
    (1) S \mathcal{S} S 扮演接收者,输入为 { s i } i ∈ [ k ] {\large \{s_i\}_{i\in [k]}} { si}i[k]
    (2) R \mathcal{R} R 扮演发送者,输入为 { t 0 i , t 1 i } i ∈ [ k ] {\large \{t_0^i,t_1^i\}_{i\in [k]}} { t0i,t1i}i[k]
    (1) S \mathcal{S} S 接收到输出 { q i } i ∈ [ k ] {\large \{q^i\}_{i\in [k]}} { qi}i[k]
    S \mathcal{S} S 生成 m × k m×k m×k 矩阵 Q \mathcal{Q} Q ,其中第 i {\large i} i q i = t s i i {\large q^i=t_{s_i}^i} qi=tsii;第 j {\large j} j q j = ( ( t 0 , j ⊕ t 1 , j ) ⋅ s ) ⊕ t 0 , j {\large q_j=((t_{0,j}\oplus t_{1,j})\cdot s)\oplus t_{0,j}} qj=((t0,jt1,j)s)t0,j,简化为 q j = t 0 , j ⊕ ( C ( r j ) ⋅ s ) {\large q_j=t_{0,j}\oplus (C(r_j)\cdot \mathcal{s})} qj=t0,j(C(rj)s)
  4. j ∈ [ m ] j\in [m] j[m] S \mathcal{S} S 输出 PRF 种子 ( ( C , s ) , ( j , q j ) ) ((C,s),(j,q_j)) ((C,s),(j,qj))

PRF种子 ( ( C , s ) , ( j , q j ) ) ((C,s),(j,q_j)) ((C,s),(j,qj)) 是一个用于伪随机函数(PRF)的输入参数,其中包含两个部分:

  1. ( C , s ) (C,s) (C,s):一个由伪随机函数族 C \mathcal{C} C 生成的密钥和一个随机数,用于生成伪随机函数。
  2. ( j , q j ) (j,q_j) (j,qj):用于确定 PRF 的输入。其中 j j j 表示输入的索引, q j q_j qj 表示输入的值。
    在使用 PRF 进行计算时,使用 PRF 种子作为输入,PRF 会根据输入的 ( j , q j ) (j,q_j) (j,qj) 返回一个伪随机输出。PRF 种子中的 ( C , s ) (C,s) (C,s) 保证了 PRF 的安全性,而 ( j , q j ) (j,q_j) (j,qj) 用于确定 PRF 的输入,从而保证了 PRF 的正确性。
  1. j ∈ [ m ] j\in [m] j[m] R \mathcal{R} R 输出 PRF 种子 ( C , j , t 0 , j ) (C,j,t_{0,j}) (C,j,t0,j)

KKRT16 求交过程

首次将OPRF算法用于PSI计算的是在《Private set intersection using permutation-based hashing》中,简称PSSZ15。PSSZ15协议在上述【OT-based PSI】过程中,使用了一种基于基于排列的哈希来设计 PSI 协议的新方法,该方法能够减少映射到 bin 的项目的长度,同时确保不会发生冲突。 PSSZ15将这种方法表示为Phasing,即基于排列的哈希集(Permutation-based Hashing)交集,最终比上述 【OT-based PSI】过程提高了20倍。

在 PSSZ15 中, P 2 P_2 P2 必须检索其所有的 OPRF 输出才能获取交集,KKRT16 改进了PSSZ15协议的求交过程,达到了10%的优化,其流程如下。

  1. 假设 Alice 有隐私集合 X X X,Bob 有隐私集合 Y Y Y,且 ∣ X ∣ = ∣ Y ∣ = n |X|=|Y|=n X=Y=n s s s 是布谷鸟哈希的存储上限。
  2. Bob 指定随机哈希函数 h 1 , h 2 , h 3 : { 0 , 1 } ∗ → [ 1.2 n ] h_1,h_2,h_3:\{0,1\}^*\rightarrow [1.2n] h1,h2,h3:{ 0,1}[1.2n] 并发送给Alice。
  3. Bob 使用布谷鸟哈希将 Y Y Y 中元素映射到 1.2 n 1.2n 1.2n 个bins中,并跟踪每个 z ( y ) z(y) z(y),如果 z ( y ) = ⊥ z(y) = \perp z(y)=⊥ ,则 y y y 在存储区中;反之 y y y 在bin h z ( y ) ( y ) h_{z(y)}(y) hz(y)(y) 中,并以任意序列排序存储区中的位置。Bob选择 OPRF 输入的步骤如下:
    (1)处理bins:对每个 i ∈ [ 1.2 n ] i\in [1.2n] i[1.2n],如果 bin # i i i 为空,则设置 r i {\large r_i} ri 为虚拟值;如果 y y y 在 bin # i i i 中,则设置 r i = y ∣ ∣ z ( y ) r_i=y||z(y) ri=y∣∣z(y)
    (2)处理存储区:对每个 i ∈ [ s ] i\in[s] i[s],如果存储区为 y y y,则设置 r i = y {\large r_i=y} ri=y;反之 r i {\large r_i} ri为虚拟值。
  4. Alice 和 Bob 进行 1.2 n + s 1.2n+s 1.2n+s 次 BaRK-OPRF 实例,Bob作为接收者其输入为 ( r 1 , ⋯   , r 1. n + s ) {\large (r_1, \cdots ,r_{1.n+s})} (r1,,r1.n+s)。最终,Alice 获得 ( k 1 , ⋯   , k 1.2 n + s ) {\large (k_1, \cdots ,k_{1.2n+s})} (k1,,k1.2n+s) ;对所有 i ∈ [ 1.2 n ] i\in [1.2n] i[1.2n],Bob 获得 F ( k i , r i ) F(k_i,r_i) F(ki,ri)
  5. Alice 计算:
    H i = { F ( k h i ( x ) ∣ ∣ i )   ∣   x ∈ X } ,   f o r    i ∈ { 1 , 2 , 3 } S j = { F ( k 1.2 n + j , x )   ∣   x ∈ X } ,   f o r    j ∈ { 1 , . . . , s } \begin{split} &{\large H_i=\{F(k_{h_i(x)}||i) \space | \space x\in X\}, \space for \space \space i\in \{1,2,3\}} \\ &{\large S_j=\{F(k_{1.2n+j}, x) \space | \space x\in X\}, \space for \space \space j\in \{1,...,s\}} \end{split} Hi={ F(khi(x)∣∣i)  xX}, for  i{ 1,2,3}Sj={ F(k1.2n+j,x)  xX}, for  j{ 1,...,s}
    并将每个集合的排列发给Bob。
  6. Bob 初始化空集 O \mathcal{O} O, 对 y ∈ Y y \in Y yY,如果 z ( y ) = ⊥ z(y) = \perp z(y)=⊥ 并且 y y y 在存储区 j j j 上,同时 F ( k 1.2 n + j , y ) ∈ S j F(k_{1.2n+j},y)\in S_{j} F(k1.2n+j,y)Sj,则将 y y y 添加到 O \mathcal{O} O 中;如果 z ( y ) ≠ ⊥ z(y) \ne \perp z(y)= 并且 F ( k h z ( y ) ( y ) , y ∣ ∣ z ( y ) ) ∈ H z ( y ) F(k_{h_{z(y)}(y)}, y||z(y)) \in H_{z(y)} F(khz(y)(y),y∣∣z(y))Hz(y),则将 y y y 添加进 O \mathcal{O} O中。
  7. Bob 将 O \mathcal{O} O 发送给 Alice,双方输出交集 O \mathcal{O} O

算法性能测试

KKRT16论文中的测试环境: Intel® Xeon® CPU E5-2699 v3 2.30GHz CPU 和 256 GB RAM 的服务器上实现。在同一台计算机上运行两个客户端,但使用 Linux tc 命令模拟 LAN 和 WAN 连接。 在 WAN 设置中,平均网络带宽和平均(往返)延迟分别设置为 50 MB/s 和 96 ms。 在LAN设置中,网络有0.2ms的延迟。所有的实验都为每一方使用单个线程。

  1. 每方有 n 个元素的 PSI 协议的运行时间(以毫秒为单位)
    在这里插入图片描述

  2. BaRK-OPRF 协议在离线和在线阶段的运行时间(以毫秒为单位)
    ![[KKRT16-离线在线时间.jpg]]
    在这里插入图片描述

  3. PSI 协议的通信消耗( MB ),每方有 n 个元素
    在这里插入图片描述

其中 n n n 表示双方集合大小; s s s 表示布谷鸟哈希的最大存储空间; k k k 表示伪随机码字长度; v v v 表示OPRF输出大小。PSSZ协议的 v ′ = σ + l o g ( 3 n 2 ) v^{\prime}=\sigma +log(3n^2) v=σ+log(3n2)。上述通信忽略了用于扩展OT的基础OT固定成本。

KKRT16 PSI算法优缺点

优点

  1. 使用OPRF算法提高了运算效率。
  2. 这个算法应该是截止2016年,基于OT最快的算法。

缺点

  1. 由于需要执行 1.2 n + s 1.2n+s 1.2n+s 次 BaRK-OPRF 实例,所以KKRT16的通信复杂度仍然较高。
  2. 相较于其他OT协议,因为其将纠错码放宽到了PRF,所以存在一定的安全问题。

综合来看,KKRT PSI算法在隐私保护和可扩展性方面具有较大优势,在实际应用中需要根据具体情况进行权衡和优化。

参考文献

由于本人能力有限,所述有错误和不足之处,请更正。

猜你喜欢

转载自blog.csdn.net/shuizhongmose/article/details/131632955
psi