不经意传输(Oblivious Transfer,OT)是一个密码学协议,目前被广泛的应用于安全多方计算(SMPC,Secure Multi-Party Computation)。它由 Rabin在 1981 年提出,之后被广泛应用于多方安全计算等领域。
1-out-of-N OT设A方有一个列表,B方选
,B通过 i 从A列表中选择一个元素,但A不能得到关于 i 的信息,B也只能得到
。
如果 n=2,就是典型的 1-out-of-2 不经意传输协议。
不经意传输OT一个简单的实施流程如下:
首先,发送者生成两对不同的公私钥,并公开两个公钥,称这两个公钥分别为公钥1和公钥2。假设接收人希望知道m1,但不希望发送人知道他想要的是m1。接收人生成一个随机数k,再用公钥1对k进行加密,传给发送者。发送者用他的两个私钥对这个加密后的k进行解密,用私钥1解密得到k1,用私钥2解密得到k2。显然,只有k1是和k相等的,k2则是一串毫无意义的数。但发送者不知道接收人加密时用的哪个公钥,因此他不知道他算出来的哪个k才是真的k。发送人把m1和k1进行异或,把m2和k2进行异或,把两个异或值传给接收人。显然,接收人只能算出m1而无法推测出m2(因为他不知道私钥2,从而推不出k2的值),同时发送人也不知道他能算出哪一个。