不经意传输--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 方案针对半诚实的接收者应满足一下要求:

  1. 接收者的隐私-不可区分性:对于任意两个不同的选择集合 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},对于发送方来说是无法区分这两个集合那个是接受者的选择。
  2. 发送者的安全-不可区分性:对于任何选择的集合 C = { σ 1 , σ 2 , . . . , σ k } C=\{\sigma_1,\sigma_2,...,\sigma_k\} C={σ1,σ2,...,σk},未被选择的消息应该和随机的消息不可区分。

具有抗恶意接收者的 O T n k OT_n^k OTnk 的安全要求为:

  1. 接收者的隐私:与半诚实的发送者的情况一样
  2. 发送者的隐私:与理想模型相比:在理想模型中,发送方发送所有消息,接收方将它的选择都发送给 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
  1. 选择一个大素数 p p p,选择一个模数 q q q
  2. 满足 q q q p − 1 p-1 p1 的一个因子,且 q q q 也是一个足够大的素数
  3. 选择一个整数 g g g ( 1 < g < p ) (1<g<p) (1<g<p),作为群 G \mathbb{G} G 生成元
  4. 随机选择一个私钥 x x x ( 1 ≤ x ≤ q − 1 ) (1\le x \le q-1) (1xq1)
  5. 计算公钥 y = g x y = g^x y=gx mod p
Encrypt
  1. 随机选择一个整数 k k k
  2. 计算 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
  3. 发送密文 c = ( c 1 , c 2 ) c=(c_1,c_2) c=(c1,c2)
Decrypt
  1. m = c 2 ⋅ c 1 − x m=c_2 \cdot c_1^{-x} m=c2c1x 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

  1. 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+...+ak1xk1+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+...+bk1xk1+xk 其中 a 0 , a 1 , . . . , a k − 1 ∈ Z q a_0,a_1,...,a_{k-1} \in Z_q a0,a1,...,ak1Zq 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+...+bk1xk1=(xσ1)(xσ2)...(xσk) mod q
  2. R → S R\rightarrow S RS 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,...,Ak1=gak1hbk1
  3. 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^* kiZp 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...Ak1ik1 mod p, i = 1 , 2 , . . . , n i=1,2,...,n i=1,2,...,n
  4. S → R S\rightarrow R SR c 1 , c 2 , . . . , c n c_1,c_2,...,c_n c1,c2,...,cn
  5. 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+...+bk1xk1+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+...+bk1xk1=(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+...+ak1xk1+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,...,Ak1=gak1hbk1 发送给发送者 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...Ak1ik1(gh)ik=ga0hb0ga1ihb1iga2i2hb2i2,...,gak1ik1hbk1ik1(gh)ik=ga0+a1i+a2i2+...+ak1ik1+ikhb0+b1i+b2i2+...+bk1ik1+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...Ak1ik1(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

  1. 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 ajZq,j=1,2,...,k
  2. R → S : A 1 , A 2 , . . . , A k R \rightarrow S: A_1,A_2,...,A_k RS:A1,A2,...,Ak
  3. 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,xZq,Dj=(Aj)x,wi=H1(i),ci=miH2(wix),i=1,2,...,n;j=1,2,...,k
  4. 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 SR:y,D1,D2,...,Dk,c1,c2,...,cn
  5. 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σjH2(Kj)=mσjH2(wσjx)H2(wσjx)=mσj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值