之道"/>
揭秘Rabin提出的不经意传输(Oblivious Transfer)技术:秘密交换的奇妙之道
不经意传输(Oblivious Transfer Protocol ,OT)
1 Rabin 1981,The EOS(Exchange of Secrets) Protocol
1.1 假设
假设Alice拥有公钥 K A K_A KA、私钥 S K A SK_A SKA和Bob拥有公钥 K B K_B KB、私钥 S K B SK_B SKB,这将用于加密和数字签名。Alice和Bob之间传送的消息都使用私钥签名。另外,Alice拥有秘密值 S A S_A SA,Bob拥有秘密值 S B S_B SB,不失一般性,假设秘密值都为单个bit。 S B S_B SB 是Alice想要访问某个文件的密码 (称为:Alice的文件),而 S A S_A SA 则是Bob的文件。
1.2 步骤
(1)Alice选择两个大质数 p p p, q q q并创建一个一次性密钥 n A = p ⋅ q n_A = p\cdot q nA=p⋅q,并发送 n A n_A nA给Bob。
(2)Bob随机选择一个 x ≤ n A x \le n_A x≤nA,并计算 c = x 2 m o d n A c=x^2\ mod\ n_A c=x2 mod nA。然后,给Alice发送 E K B ( x ) E_{K_B}(x) EKB(x)和 c c c。 E K B ( x ) E_{K_B}(x) EKB(x)即使用公钥 K B K_B KB对 x x x进行加密的密文, c c c是 x x x在 m o d n A mod \ n_A mod nA下的平方根。
(3)Alice利用 p p p, q q q, n A n_A nA计算 x 1 2 = c m o d n A x_1^2=c\ mod\ n_A x12=c mod nA得到 x 1 x_1 x1。然后,发送 x 1 x_1 x1给Bob。
(4)Bob计算 ( x − x 1 , n A ) (x-x_1, n_A) (x−x1,nA)的最大公因数 d d d, d d d有 1 2 \frac{1}{2} 21的概率是 p p p或者 q q q。也就是说,Bob有 1 2 \frac{1}{2} 21的概率可以知道因数分解 n a = p ⋅ q n_a=p \cdot q na=p⋅q。但是,Alice并不知道Bob的 x x x的真实值,所以也不知道Bob是否知道 n A n_A nA的分解。(为什么 d d d 有 1 2 \frac{1}{2} 21的概率是 p p p或者 q q q见1.6.1节)
以上这种传输信息的模式,即发送者不知道接受者是否接收到信息的模式,称为不经意传输(oblivious transfer, OT)。
(5)定义:
v B = { 0 i f ( x − x 1 , n A ) = p o r q , 1 o t h e r w i s e v_B = \left\{ \begin{array}{lr} 0 & if (x-x_1,n_A)=p\ or\ q, \\ 1& otherwise \end{array} \right. vB={01if(x−x1,nA)=p or q,otherwise
因此,当 v B = 0 v_B=0 vB=0时当且仅当在上述不经意传输后,Bob知道了 n A n_A nA的因数分解。
Bob计算 ϵ B = S B ⊕ v B \epsilon_B=S_B\oplus v_B ϵB=SB⊕vB并发送给Alice。
(6)Alice将她的秘密值 S A S_A SA作为中心比特放在一条随机消息 m A m_A mA中。然后,使用任何需要因数 p p p和 q q q的公钥系统将 m A m_A mA加密,即 d A = E n A ( m A ) d_A=E_{n_A} (m_A) dA=EnA(mA),并发送给Bob。
同理,Alice作为接受者,Bob作为发送者,Bob收到 ϵ A \epsilon_A ϵA,Alice收到 d B d_B dB。
1.3 定理
以上协议执行,双方无法交换秘密值的概率为 1 4 \frac{1}{4} 41。具体解释如下:
Alice有 1 2 \frac{1}{2} 21的概率可以获得 n B n_B nB的因数,Bob也有 1 2 \frac{1}{2} 21的概率获得 n A n_A nA的因数。
有以下四种情况:
第一,双方都不能获得相应一次性密钥的因数,故无法解密获得随机消息,也因此无法获得秘密值。
第二,Alice知道 n B n_B nB的因数,而Bob不知道 n A n_A nA的因数。因此,Alice可以解密获得随机消息 m B m_B mB并因此获得秘密值 S B S_B SB。随后,Alice将使用该秘密访问文件。Bob得知文件被访问,清楚Alice获得了 n B n_B nB的因数,故 ϵ A = S A ⊕ v A = S A ⊕ 0 = S A \epsilon_A=S_A \oplus v_A=S_A \oplus 0 = S_A ϵA=SA⊕vA=SA⊕0=SA。则Bob也获得了秘密值。
第三,Bob知道 n A n_A nA的因数,Alice不知道 n B n_B nB的因数,与二同理,最终双方可以交换秘密值。
第四,双方都获得了相应一次性密钥的因数,获得了秘密值。
1.4 安全性
(1)这一协议适用于半诚实模型,若在Alice或者Bob其中一方是恶意的,则协议无法运行。
在这里,半诚实是指协议参与方会遵守协议的执行,但是对其他方的数据好奇,想推断知道更多的信息;而恶意是指协议参与方可能不遵循协议的执行。比如说:Alice是恶意的,发送 ϵ A \epsilon_A ϵA和 m A m_A mA并不包含秘密值,则Bob永远无法读取自己的文件。
(2)如果协议未实现秘密交换,多轮执行该程序是不可能的。
假设协议多轮执行,一个参与者,比如Alice,可能在第一轮之后就获得了秘密值 S B S_B SB,但故意在第二轮之后才访问她的文件。Bob在这两轮中都没有获得 n A n_A nA,也就没有获得秘密值 S A S_A SA。Alice在第二轮结束后访问文件,Bob无法得知是第一轮 v A = 0 v_A=0 vA=0还是第二轮,因此可能无法访问文件。
1.5 改进
对协议进行修改,在Bob从Alice处收到 n A n_A nA后,Bob将选择 x , y ≤ n A x,y \le n_A x,y≤nA,并发送 x 2 m o d n A x^2\ mod\ n_A x2 mod nA和 y 2 m o d n A y^2\ mod\ n_A y2 mod nA给Alice,而Alice发送 x 1 m o d n A x_1\ mod\ n_A x1 mod nA和 y 1 m o d n A y_1\ mod\ n_A y1 mod nA给Bob。协议其余部分不变。
修改后,Bob将有 3 4 \frac{3}{4} 43的概率获得 n A = p ⋅ q n_A=p \cdot q nA=p⋅q。( 3 4 \frac{3}{4} 43如何求得见1.6.2节)
Alice从Bob处收到 n B n_B nB同理。
综上,该协议不能实现秘密交换而终止协议的概率为 1 16 \frac{1}{16} 161。
注意:这里的改善存在一个限制,超过该限制协议的增强将会失效。解释如下:
当经过协议的改进得到 P r [ v B = 1 ] ∼ 1 32 , 000 Pr[v_B=1]\sim\frac{1}{32,000} Pr[vB=1]∼32,0001时,有:
P r [ ϵ B = S B ] = P r [ ϵ B = S B ∣ v B = 0 ] ⋅ P r [ v B = 0 ] + P r [ ϵ B = S B ∣ v B = 1 ] ⋅ P r [ v B = 1 ] P r [ ϵ B = S B ] = 1 ⋅ ( 1 − 1 32 , 000 ) + 0 = 1 − 1 32 , 000 Pr[\epsilon _B=S_B]= Pr[\epsilon _B=S_B | v_B=0]\cdot Pr[v_B=0] +Pr[\epsilon _B=S_B | v_B=1]\cdot Pr[v_B=1] \\ Pr[\epsilon _B=S_B]= 1\cdot (1-\frac{1}{32,000})+0=1-\frac{1}{32,000} Pr[ϵB=SB]=Pr[ϵB=SB∣vB=0]⋅Pr[vB=0]+Pr[ϵB=SB∣vB=1]⋅Pr[vB=1]Pr[ϵB=SB]=1⋅(1−32,0001)+0=1−32,0001
备注:原论文中是 P r [ v B = 0 ] ∼ 1 32 , 000 Pr[v_B=0]\sim\frac{1}{32,000} Pr[vB=0]∼32,0001,个人认为是笔误。
因此,改进到一定程度, ϵ B \epsilon _B ϵB有很大概率是 S B S_B SB,Alice可以使用 ϵ B \epsilon _B ϵB直接访问自己的文件,而不继续执行协议。
1.6 附录
1.6.1 为什么 d d d 有 1 2 \frac{1}{2} 21的概率是 p p p或者 q q q?
(1)对于Alice:
Alice已知 n A = p ⋅ q n_A=p \cdot q nA=p⋅q和Bob发送来的 c c c,求该同余式 c = x 1 2 m o d n A c=x_1^2\ mod\ n_A c=x12 mod nA可转化为求:
x 1 2 = c m o d p x 1 2 = c m o d q x_1^2 = c\ mod\ p \\ x_1^2 = c\ mod\ q\\ x12=c mod px12=c mod q
即 c c c是 p p p和 q q q的二次剩余。
构造等式获得一次同余方程组:
r 2 = x 1 2 = c m o d p ⇒ r = x 1 = c m o d p s 2 = x 1 2 = c m o d q ⇒ s = x 1 = c m o d q r^2 = x_1^2 = c\ mod\ p \Rightarrow r = x_1 = \sqrt{c}\ mod\ p\\ s^2 = x_1^2 = c\ mod\ q \Rightarrow s = x_1 = \sqrt{c}\ mod\ q\\ r2=x12=c mod p⇒r=x1=c mod ps2=x12=c mod q⇒s=x1=c mod q
由欧拉准则可知:对于奇质数 p p p,
a a a是模 p p p的二次剩余的充要条件为: a p − 1 2 ≡ 1 m o d p a^{\frac{p-1}{2}} \equiv 1\ mod \ p a2p−1≡1 mod p
a a a是模 p p p的非二次剩余的充要条件为: a p − 1 2 ≡ − 1 m o d p a^{\frac{p-1}{2}} \equiv -1\ mod \ p a2p−1≡−1 mod p
本文选取很大的质数 p p p和 q q q,故一定是奇质数。因此,有:
c p − 1 2 ≡ 1 m o d p c^{\frac{p-1}{2}}\equiv 1\ mod\ p c2p−1≡1 mod p
代入同余方程可得:
r 2 = c = c ⋅ c p − 1 2 = c p + 1 2 = ( c p + 1 4 ) 2 m o d p r^2=c=c \cdot c^{\frac{p-1}{2}}=c^{\frac{p+1}{2}}=(c^{\frac{p+1}{4}})^2\ mod\ p r2=c=c⋅c2p−1=c2p+1=(c4p+1)2 mod p
因此:
r = ± c p + 1 4 m o d p r=\pm c^{\frac{p+1}{4}}\ mod\ p r=±c4p+1 mod p
同理,可得:
s = ± c p + 1 4 m o d q s=\pm c^{\frac{p+1}{4}}\ mod\ q s=±c4p+1 mod q
不妨设 k = c p + 1 4 k=c^{\frac{p+1}{4}} k=c4p+1,
则 r = ± k m o d p r = \pm k \ mod\ p r=±k mod p和 s = ± k m o d q s=\pm k\ mod\ q s=±k mod q
将其 r r r和 s s s代入同余方程组
x 1 = r m o d p x 1 = s m o d q x_1 = r\ mod\ p\\ x_1 = s\ mod\ q\\ x1=r mod px1=s mod q
得到四种情况:
第一, x 1 = + k m o d p x_1=+k\ mod\ p x1=+k mod p或 x 1 = + k m o d q x_1=+k\ mod\ q x1=+k mod q;
第二, x 1 = − k m o d p x_1=-k\ mod\ p x1=−k mod p或 x 1 = − k m o d q x_1=-k\ mod\ q x1=−k mod q;
第三, x 1 = + k m o d p x_1=+k\ mod\ p x1=+k mod p或 x 1 = − k m o d q x_1=-k\ mod\ q x1=−k mod q;
第四, x 1 = − k m o d p x_1=-k\ mod\ p x1=−k mod p或 x 1 = + k m o d q x_1=+k\ mod\ q x1=+k mod q。
使用中国剩余定理求解同余方程组,得 x 1 m o d n A x_1\ mod\ n_A x1 mod nA并发送给Bob。
(2)对于Bob:
记 d = g c d ( x − x 1 , n A ) d = gcd(x-x_1, n_A) d=gcd(x−x1,nA)(gcd为求最大公因数),则有:
d = g c d ( x − x 1 , n A ) = g c d ( x − x 1 , p ⋅ q ) d = gcd(x-x_1, n_A)=gcd(x-x_1, p \cdot q) d=gcd(x−x1,nA)=gcd(x−x1,p⋅q)
引入一个定义:对于 0 ≤ y 1 , y 2 < n = p ⋅ q 0 \le y_1,y_2<n=p \cdot q 0≤y1,y2<n=p⋅q, y 1 ∼ y 2 y_1\sim y_2 y1∼y2表示为 y 1 2 = y 2 2 m o d n y_1^2=y_2^2\mod n y12=y22modn。
若 y 2 = r m o d p y_2=r\ mod\ p y2=r mod p和 y 2 = s m o d q y_2 = s \ mod\ q y2=s mod q,那么有 y 1 = ± r m o d p y_1=\pm r\ mod\ p y1=±r mod p和 y 1 = ± s m o d q y_1=\pm s\ mod\ q y1=±s mod q,即 y 1 = ± y 2 m o d p y_1=\pm y_2\ mod\ p y1=±y2 mod p和 y 1 = ± y 2 m o d q y_1=\pm y_2\ mod\ q y1=±y2 mod q。
显然,在 m o d n A mod\ n_A mod nA下, x ∼ x 1 x\sim x_1 x∼x1,所以有以下四种情况:
第一, x = x 1 m o d p x=x_1\ mod\ p x=x1 mod p和 x = x 1 m o d q x=x_1\ mod\ q x=x1 mod q;
第二, x = − x 1 m o d p x=-x_1\ mod\ p x=−x1 mod p和 x = − x 1 m o d q x=-x_1\ mod\ q x=−x1 mod q;
第三, x = x 1 m o d p x=x_1\ mod\ p x=x1 mod p和 x = − x 1 m o d q x=-x_1\ mod\ q x=−x1 mod q;
第四, x = − x 1 m o d p x=-x_1\ mod\ p x=−x1 mod p和 x = x 1 m o d q x=x_1\ mod\ q x=x1 mod q。
对于第一种情况,知道: x − x 1 = 0 m o d p x-x_1=0\ mod\ p x−x1=0 mod p和 x − x 1 = 0 m o d q x-x_1=0\ mod\ q x−x1=0 mod q。也就是说 x − x 1 x-x_1 x−x1是由若干个 p p p和 q q q的乘积组成,因此 d = p ⋅ q d=p\cdot q d=p⋅q;
对于第二种情况,知道: x − x 1 m o d p = − 2 x 1 m o d p x-x_1\ mod\ p=-2x_1\ mod\ p x−x1 mod p=−2x1 mod p 和 x − x 1 m o d q = − 2 x 1 m o d q x-x_1\ mod\ q=-2x_1\ mod\ q x−x1 mod q=−2x1 mod q。因为 x 1 x_1 x1是 ± k m o d p o r q \pm k \ mod\ p\ or\ q ±k mod p or q下的值,则 x 1 ≥ 0 x_1 \ge 0 x1≥0,因此 − 2 x 1 -2x_1 −2x1在 m o d p mod\ p mod p和 m o d q mod\ q mod q下一定小于 p p p和 q q q,不含有 p p p或者 q q q的倍数。
对于第三种情况,知道: x − x 1 = 0 m o d p x-x_1=0\ mod\ p x−x1=0 mod p。也就是说, x − x 1 x-x_1 x−x1是若干个 p p p的乘积组成,因此 d = p d=p d=p。
对于第四种情况,知道: x − x 1 = 0 m o d q x-x_1=0\ mod\ q x−x1=0 mod q。也就是说, x − x 1 x-x_1 x−x1是若干个 q q q的乘积组成,因此 d = q d=q d=q。
综上所述, d d d 有 1 2 \frac{1}{2} 21的概率是 p p p或者 q q q。
1.6.2 3 4 \frac{3}{4} 43如何求得?
对于Bob来说,引入 x x x和 y y y后,得知 n A = p ⋅ q n_A=p \cdot q nA=p⋅q的选择增多,利用排列组合的思想,有:
4 + 4 + 2 + 2 4 × 4 = 3 4 \frac{4+4+2+2}{4\times 4}=\frac{3}{4} 4×44+4+2+2=43
进一步解释, d 1 = g c d ( x − x 1 , n A ) d_1 = gcd(x-x_1, n_A) d1=gcd(x−x1,nA)或者 d 2 = g c d ( y − y 1 , n A ) d_2=gcd(y-y_1,n_A) d2=gcd(y−y1,nA)有一个最大公因数是 p p p或者 q q q的都可以使Bob知道 n A n_A nA的分解。因此, x 1 x_1 x1有四种解的情况, y 1 y_1 y1也有四种解的情况,两两组合 4 × 4 4 \times 4 4×4种所有的可能性,其中 x 1 x_1 x1有两种可能使Bob得知 n A n_A nA的分解,同理 y 1 y_1 y1也是,两两组合中有其中一个能使Bob得知 n A n_A nA的分解即或的关系就可以使Bob得知 n A n_A nA的分解,那么便有分子的12种组合。
用概率的计算,可以有:
P r [ B o b k n o w s n A = p ⋅ q ] = 1 − P r [ n o t B o b k n o w s n A = p ⋅ q ] = 1 − 1 2 × 1 2 = 3 4 Pr[Bob\ knows\ n_A=p \cdot q] = 1-Pr[not\ Bob\ knows\ n_A=p \cdot q]=1-\frac{1}{2}\times \frac{1}{2}=\frac{3}{4} Pr[Bob knows nA=p⋅q]=1−Pr[not Bob knows nA=p⋅q]=1−21×21=43
1.7 参考文献
[1] Rabin, M.O. (2005). How To Exchange Secrets with Oblivious Transfer. IACR Cryptol. ePrint Arch., 2005, 187.
[2] 王,巴德.(2022)Rabin加密原理.
[3] Rabin, M.O. (1979). DIGITALIZED SIGNATURES AND PUBLIC-KEY FUNCTIONS AS INTRACTABLE AS FACTORIZATION. Technical Report. Massachusetts Institute of Technology, USA.
更多推荐
揭秘Rabin提出的不经意传输(Oblivious Transfer)技术:秘密交换的奇妙之道
发布评论