本文主要是介绍不经意传输--Efficient k-out-of-n Oblivious Transfer Schemes with Adaptive and Non-Adaptive Queries,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Efficient k-out-of-n Oblivious Transfer Schemes with Adaptive and Non-Adaptive Queries
https://www.iacr.org/archive/pkc2005/33860173/33860173.pdf
Oblivious Transfer(OT)
一个 oblivious transfer(不经意传输)协议包括两个实体,发送者 S S S 和接收者 R R R。 S S S 拥有一些消息并且 R R R 想要通过与 S S S 的交互得到一些消息。安全需求是: S S S 想要 R R R 从他发送的消息中获取消息, R R R 并不想 S S S 知道它选择的是哪个消息。常见的的协议,1-out-of OT( O T 1 2 \mathrm{OT}_1^2 OT12),在这个方案中, S S S 拥有两个消息 m 1 m_1 m1 和 m 2 m_2 m2,并希望 R R R 能得到其中的一个。此外, S S S 仍然 oblivious R R R 的选择。后续,研究人员扩展了 n n n 个消息的情况 O T 2 1 \mathrm{OT}_2^1 OT21 到 1-out-of-n OT( O T 1 n OT_1^n OT1n) 。
Security model. 假设 S S S 拥有 n n n 个消息 m 1 , m 2 , . . . , m n m_1,m_2,...,m_n m1,m2,...,mn, R R R 的 k k k 个选择为 σ 1 , σ 2 , . . . , σ k \sigma_1,\sigma_2,...,\sigma_k σ1,σ2,...,σk。对于半诚实的发送者的情况。我们说如果 x x x 在 C C C 中,不在 C ′ C' C′ 中,那么 C C C 和 C ′ C' C′ 是不同的。一个 O T n k OT_n^k OTnk 方案针对半诚实的接收者应满足一下要求:
- 接收者的隐私-不可区分性:对于任意两个不同的选择集合 C = { σ 1 , σ 2 , . . . , σ k } C=\{\sigma_1,\sigma_2,...,\sigma_k\} C={σ1,σ2,...,σk} 和 C ′ = { σ 1 ′ , σ 2 ′ , . . . , σ k ′ } C'=\{\sigma_1',\sigma_2',...,\sigma_k'\} C′={σ1′,σ2′,...,σk′},对于发送方来说是无法区分这两个集合那个是接受者的选择。
- 发送者的安全-不可区分性:对于任何选择的集合 C = { σ 1 , σ 2 , . . . , σ k } C=\{\sigma_1,\sigma_2,...,\sigma_k\} C={σ1,σ2,...,σk},未被选择的消息应该和随机的消息不可区分。
具有抗恶意接收者的 O T n k OT_n^k OTnk 的安全要求为:
- 接收者的隐私:与半诚实的发送者的情况一样
- 发送者的隐私:与理想模型相比:在理想模型中,发送方发送所有消息,接收方将它的选择都发送给 TTP,TTP 会将选择的消息给接收者。这是实现 O T n k OT_n^k OTnk 方案最安全的方法。在理想世界中,接收者 R R R 不能从发送者 S S S 获得额外的信息。如果在实际的 O T k n OT_k^n OTkn 方案中的任意接收方 R R R,在理想模型中有另一个 PPTM R ′ R' R′(称为 simulator),使得 R R R 和 R ′ R' R′ 的输出结果无法区分,则实现了发送方的安全性。
Elagmal Encryption
Setup
- 选择一个大素数 p p p,选择一个模数 q q q。
- 满足 q q q 是 p − 1 p-1 p−1 的一个因子,且 q q q 也是一个足够大的素数
- 选择一个整数 g g g ( 1 < g < p ) (1<g<p) (1<g<p),作为群 G \mathbb{G} G 生成元
- 随机选择一个私钥 x x x ( 1 ≤ x ≤ q − 1 ) (1\le x \le q-1) (1≤x≤q−1)
- 计算公钥 y = g x y = g^x y=gx mod p
Encrypt
- 随机选择一个整数 k k k
- 计算 c 1 = g k c_1=g^k c1=gk mod p, c 2 = m y k c_2=my^k c2=myk mod p
- 发送密文 c = ( c 1 , c 2 ) c=(c_1,c_2) c=(c1,c2)
Decrypt
- m = c 2 ⋅ c 1 − x m=c_2 \cdot c_1^{-x} m=c2⋅c1−x mod p
O T n k OT_n^k OTnk: k-out-of-n OT against semi-honest receiver
系统参数: ( g , h , G q ) (g,h,G_q) (g,h,Gq)
S S S 有消息: m 1 , m 2 , . . . , m n m_1,m_2,...,m_n m1,m2,...,mn
R R R 的选择: σ 1 , σ 2 , . . . , σ k \sigma_1,\sigma_2,...,\sigma_k σ1,σ2,...,σk
- R R R 选择两个多项式 f ( x ) = a 0 + a 1 x + . . . + a k − 1 x k − 1 + x k f(x)=a_0+a_1x+...+a_{k-1}x^{k-1}+x^k f(x)=a0+a1x+...+ak−1xk−1+xk 和 f ′ ( x ) = b 0 + b 1 x + . . . + b k − 1 x k − 1 + x k f'(x)=b_0+b_1x+...+b_{k-1}x^{k-1}+x^k f′(x)=b0+b1x+...+bk−1xk−1+xk 其中 a 0 , a 1 , . . . , a k − 1 ∈ Z q a_0,a_1,...,a_{k-1} \in Z_q a0,a1,...,ak−1∈Zq 和 b 0 + b 1 x + . . . + b k − 1 x k − 1 = ( x − σ 1 ) ( x − σ 2 ) . . . ( x − σ k ) b_0+b_1x+...+b_{k-1}x^{k-1}=(x-\sigma_1)(x-\sigma_2)...(x-\sigma_k) b0+b1x+...+bk−1xk−1=(x−σ1)(x−σ2)...(x−σk) mod q
- R → S R\rightarrow S R→S: A 0 = g a 0 h b 0 , A 1 = g a 1 h b 1 , . . . , A k − 1 = g a k − 1 h b k − 1 A_0=g^{a_0}h^{b_0},A_1=g^{a_1}h^{b_1},...,A_{k-1}=g^{a_{k-1}}h^{b_{k-1}} A0=ga0hb0,A1=ga1hb1,...,Ak−1=gak−1hbk−1
- S S S 计算 c i = ( g k i , m i B i k i ) c_i=(g^{k_i},m_iB_i^{k_i}) ci=(gki,miBiki) 其中 k i ∈ Z p ∗ k_i\in Z_p^* ki∈Zp∗ 和 B i = g f ( i ) h f ′ ( i ) = A 0 A 1 i . . . A k − 1 i k − 1 B_i=g^{f(i)}h^{f'(i)}=A_0A_1^i...A_{k-1}^{i^{k-1}} Bi=gf(i)hf′(i)=A0A1i...Ak−1ik−1 mod p, i = 1 , 2 , . . . , n i=1,2,...,n i=1,2,...,n
- S → R S\rightarrow R S→R: c 1 , c 2 , . . . , c n c_1,c_2,...,c_n c1,c2,...,cn
- 令 c i = ( U i , V i ) c_i=(U_i,V_i) ci=(Ui,Vi), R R R 为每一个 σ i \sigma_i σi 计算 m σ i = V σ i / U σ i f ( σ i ) m_{\sigma_i}=V_{\sigma_i}/U_{\sigma_i}^{f(\sigma_i)} mσi=Vσi/Uσif(σi)
k-out-of-n OT against semi-honest receiver
发送方 S S S 有 n n n 个秘密信息 m 1 , m 2 , . . . , m n m_1,m_2,...,m_n m1,m2,...,mn。我们假设消息空间为 G q G_q Gq,半诚实的接受者 R R R 想要获取 m σ 1 , m σ 2 , . . . , m σ k m_{\sigma_1},m_{\sigma_2},...,m_{\sigma_k} mσ1,mσ2,...,mσk
系统参数为 g , h g,h g,h 是 G q G_q Gq 的两个生成元, ( g , h , G q ) (g,h,G_q) (g,h,Gq) 是公共参数。
接收者 R R R 首先构造 k k k 阶多项式 f ′ ( x ) = b 0 + b 1 x + . . . + b k − 1 x k − 1 + x k f'(x)=b_0+b_1x+...+b_{k-1}x^{k-1}+x^k f′(x)=b0+b1x+...+bk−1xk−1+xk, f ′ ( x ) f'(x) f′(x) 满足 f ′ ( i ) = 0 , i ∈ { σ 1 , . . . , σ k } f'(i)=0,i\in\{\sigma_1,...,\sigma_k\} f′(i)=0,i∈{σ1,...,σk},即 b 0 + b 1 x + . . . + b k − 1 x k − 1 = ( x − σ 1 ) ( x − σ 2 ) . . . ( x − σ k ) b_0+b_1x+...+b_{k-1}x^{k-1}=(x-\sigma_1)(x-\sigma_2)...(x-\sigma_k) b0+b1x+...+bk−1xk−1=(x−σ1)(x−σ2)...(x−σk)。 R R R 选择另外随机数构造 k k k 阶多项式 f ( x ) = a 0 + a 1 x + . . . + a k − 1 x k − 1 + x k f(x)=a_0+a_1x+...+a_{k-1}x^{k-1}+x^k f(x)=a0+a1x+...+ak−1xk−1+xk 来隐藏接受者选择的多项式 f ′ ( x ) f'(x) f′(x)。将被隐藏的选择 A 0 = g a 0 h b 0 , A 1 = g a 1 h b 1 , . . . , A k − 1 = g a k − 1 h b k − 1 A_0=g^{a_0}h^{b_0},A_1=g^{a_1}h^{b_1},...,A_{k-1}=g^{a_{k-1}}h^{b_{k-1}} A0=ga0hb0,A1=ga1hb1,...,Ak−1=gak−1hbk−1 发送给发送者 S S S。
当 S S S 接收到这些查询后,他首先计算 B i B_i Bi: B i = g f ( i ) h f ′ ( i ) = A 0 A 1 i . . . A k − 1 i k − 1 ( g h ) i k = g a 0 h b 0 g a 1 i h b 1 i g a 2 i 2 h b 2 i 2 , . . . , g a k − 1 i k − 1 h b k − 1 i k − 1 ( g h ) i k = g a 0 + a 1 i + a 2 i 2 + . . . + a k − 1 i k − 1 + i k h b 0 + b 1 i + b 2 i 2 + . . . + b k − 1 i k − 1 + i k B_i=g^{f(i)}h^{f'(i)}=A_0A_1^i...A_{k-1}^{i^{k-1}}(gh)^{i^k}=g^{a_0}h^{b_0}g^{a_1i}h^{b_1i}g^{a_2i^2}h^{b_2i^2},...,g^{a_{k-1}i^{k-1}}h^{b_{k-1}i^{k-1}}(gh)^{i^k}=g^{a_0+a_1i+a_2i^2+...+a_{k-1}i^{k-1}+i^k}h^{b_0+b_1i+b_2i^2+...+b_{k-1}i^{k-1}+i^k} Bi=gf(i)hf′(i)=A0A1i...Ak−1ik−1(gh)ik=ga0hb0ga1ihb1iga2i2hb2i2,...,gak−1ik−1hbk−1ik−1(gh)ik=ga0+a1i+a2i2+...+ak−1ik−1+ikhb0+b1i+b2i2+...+bk−1ik−1+ik即通过计算 A 0 A 1 i . . . A k − 1 i k − 1 ( g h ) i k A_0A_1^i...A_{k-1}^{i^{k-1}}(gh)^{i^k} A0A1i...Ak−1ik−1(gh)ik mod p 得到 B i B_i Bi。因为 f ( x ) f(x) f(x) 是一个随机多项式, S S S 并不知道 i 在取何值时 f ′ ( i ) = 0 , i = 1 , 2 , . . . , n f'(i)=0, i=1,2,...,n f′(i)=0,i=1,2,...,n。那么 S S S 将 B i B_i Bi 视为公钥并且通过 Elgamal 加密每个 m i m_i mi 给 R R R。加密后的消息 c 1 , c 2 , . . . , c n c_1,c_2,...,c_n c1,c2,...,cn 给 R R R。
c i = ( U i , V i ) = ( g k i , m i ( g f ( i ) h f ′ ( i ) ) k i ) c_i=(U_i,V_i)=(g^{k_{i}},m_i(g^{f(i)}h^{f'(i)})^{k_i}) ci=(Ui,Vi)=(gki,mi(gf(i)hf′(i))ki)
对于每一个 c i , i ∈ { σ 1 , σ 2 , . . . , σ k } c_i,i\in\{\sigma_1,\sigma_2,...,\sigma_k\} ci,i∈{σ1,σ2,...,σk},因为 B i = g f ( i ) h f ′ ( i ) = g f ( i ) h 0 = g f ( i ) B_i=g^{f(i)}h^{f'(i)}=g^{f(i)}h^0=g^{f(i)} Bi=gf(i)hf′(i)=gf(i)h0=gf(i), R R R 可以得到这些消息通过私钥 f ( i ) f(i) f(i) 来解密。如果 i ∉ { σ 1 , σ 2 , . . . , σ k } i\notin \{\sigma_1,\sigma_2,...,\sigma_k\} i∈/{σ1,σ2,...,σk},因为 R R R 在拥有 g k i , f ( i ) , f ′ ( i ) g^{k_i},f(i),f'(i) gki,f(i),f′(i) 的知识情况下,不能计算出 ( g f ( i ) h f ′ ( i ) ) k i (g^{f(i)}h^{f'(i)})^{k_i} (gf(i)hf′(i))ki,消息 m i m_i mi 对 R R R 是未知的。
正确性:令 c i = ( U i , V i ) c_i=(U_i,V_i) ci=(Ui,Vi),我们可以检验所选的消息 m σ i , i = 1 , 2 , . . . , k m_{\sigma_i},i=1,2,...,k mσi,i=1,2,...,k :
V σ i / U σ i f ( σ i ) = m σ i ⋅ ( g f ( σ i ) h f ′ ( σ i ) ) k σ i / g k σ i f ( σ i ) = m σ i ⋅ ( g f ( σ i ) ⋅ 1 ) k σ i / g k σ i f ( σ i ) = m σ i V_{\sigma_i}/U_{\sigma_i}^{f(\sigma_i)}=m_{\sigma_i}\cdot (g^{f(\sigma_i)}h^{f'(\sigma_i)})^{k_{\sigma_i}}/g^{k_{\sigma_i}f(\sigma_i)}=m_{\sigma_i}\cdot (g^{f(\sigma_i)\cdot1})^{k_{\sigma_i}}/g^{k_{\sigma_i}f(\sigma_i)}=m_{\sigma_i} Vσi/Uσif(σi)=mσi⋅(gf(σi)hf′(σi))kσi/gkσif(σi)=mσi⋅(gf(σi)⋅1)kσi/gkσif(σi)=mσi
k-out-of-n OT against malicious receiver
一个恶意的接受者可能不会诚实地遵守协议。例如,在上个方案中,一个恶意的接收者可能发送一些不规矩的 A_i ,这样他就能够获得额外的信息,比如两个消息的线性组合(即使我们不知道如何进行这种攻击)。所以,我们提出了第二种方案,可以对抗恶意的接收者情况。
系统参数: ( g , H 1 , H 2 , G q ) , H 1 : { 0 , 1 } ∗ → G q , H 2 : G q → { 0 , 1 } l (g,H_1,H_2,G_q), H_1:\{0,1\}^* \rightarrow G_q,H_2:G_q\rightarrow \{0,1\}^l (g,H1,H2,Gq),H1:{0,1}∗→Gq,H2:Gq→{0,1}l ; S S S 拥有消息: m 1 , m 2 , . . . , m n m_1,m_2,...,m_n m1,m2,...,mn; R R R 的选择为 σ 1 , σ 2 , . . . , σ k \sigma_1,\sigma_2,...,\sigma_k σ1,σ2,...,σk。
- R R R 计算 w σ j = H 1 ( σ j ) , A j = w σ j g a j w_{\sigma_j}=H_1(\sigma_j), A_j=w_{\sigma_j}g^{a_j} wσj=H1(σj),Aj=wσjgaj,其中 a j ∈ Z q ∗ , j = 1 , 2 , . . . , k a_j\in Z_q^*, j=1,2,...,k aj∈Zq∗,j=1,2,...,k
- R → S : A 1 , A 2 , . . . , A k R \rightarrow S: A_1,A_2,...,A_k R→S:A1,A2,...,Ak
- S S S 计算 y = g x , x ∈ Z q ∗ , D j = ( A j ) x , w i = H 1 ( i ) , c i = m i ⊕ H 2 ( w i x ) , i = 1 , 2 , . . . , n ; j = 1 , 2 , . . . , k y=g^x,x\in Z_q^*,D_j=(A_j)^x,w_i=H_1(i),c_i=m_i\oplus H_2(w_i^x),i=1,2,...,n;j=1,2,...,k y=gx,x∈Zq∗,Dj=(Aj)x,wi=H1(i),ci=mi⊕H2(wix),i=1,2,...,n;j=1,2,...,k
- S → R : y , D 1 , D 2 , . . . , D k , c 1 , c 2 , . . . , c n S \rightarrow R:y,D_1,D_2,...,D_k,c_1,c_2,...,c_n S→R:y,D1,D2,...,Dk,c1,c2,...,cn
- R R R 计算 K j = D j / y a j K_j=D_j/y^{a_j} Kj=Dj/yaj,那么 m σ j = c σ j H 2 ( K j ) , j = 1 , 2 , . . . , k m_{\sigma_j}=c_{\sigma_j}H_2(K_j),j=1,2,...,k mσj=cσjH2(Kj),j=1,2,...,k
正确性:
c σ j ⊕ H 2 ( K j ) = m σ j ⊕ H 2 ( w σ j x ) ⊕ H 2 ( w σ j x ) = m σ j c_{\sigma_j}\oplus H_2(K_j)=m_{\sigma_j}\oplus H_2(w_{\sigma_j}^x)\oplus H_2(w_{\sigma_j}^x)=m_{\sigma_j} cσj⊕H2(Kj)=mσj⊕H2(wσjx)⊕H2(wσjx)=mσj
这篇关于不经意传输--Efficient k-out-of-n Oblivious Transfer Schemes with Adaptive and Non-Adaptive Queries的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!