Michael O. Rabin在1981年的这篇论文据说开创了OT领域的研究,尽管这篇论文在我看来由于有太多不合理的假设而相当模糊。但粗略看了一下其他OT相关的论文,确实都以这篇论文为模板。我的论文学习顺序是按论文时间顺序来的,虽然这样学得慢,但能逐渐掌握这个领域的发展脉络,因此还是比较有意思的。
这篇论文仅有区区三页,描述了这么一个场景下的需求:A和B需要相互交换一个秘密比特(文章中定义为文件的密钥),要求在没有第三方参与的情况下,两人能同时获取信息,即:当A获取到秘密比特的同时B也能获取到对方的秘密比特。
在陈述论文的方案之前,作者对传统的交换协议做了说明。传统的交换协议一定是有先后顺序的:如一方先给另一方钱,另一方再送上货物,或者反过来。那么这种情况下当出现恶意的交易者,拿到货后不给钱或者拿到钱后不给货就很麻烦。由此作者提出了一个叫做EOS(Exchange of Secrets)的符合不经意传输(OT)性质的协议。事实上阅读文章之后,我认为将OT翻译为不经意传输并不合理,作者一直在强调论文中的协议执行后,两方获得正确信息是不确定的,因此这里的Oblivious更多表达的是概率的意思,“不经意”这个词翻译得莫名其妙。
在作者提出EOS协议方案前,首先提出了几个减少方案设计难度的假设:

  1. 如果传输了错误的信息,对方使用后会导致自己的文件被损毁——防止通过随意猜测文件的密钥;
  2. 秘密比特存储在文件的开头,且通讯过程都使用签名认证——当对方故意发送了错误的密钥导致自己文件被毁后可诉诸评判机构;
  3. 当一方通过正确密钥读取文件后另一方会立刻知道——协议终止的其中一个条件。

第三个假设是最核心的,大大减少了协议的设计难度。如果一方已经拿到了密钥读取了文件后,他是可以不继续执行剩余的步骤的,导致另一方由于无法获取剩余的信息而不确定自己是否已经获取密钥。
协议内容如下:

  1. 双方生成并使用大素数p、q组成公钥n
  2. A生成x < n,计算 x2=c(mod n),使用自己的签名密钥(另一对公开的公钥)加密x,并发送明文的c和n(加密x是为了出现意外后当作证据)
  3. B生成x12=c(mod n),发送x1给A
  4. A计算(x-x1, n)=d,此时d有1/2的几率等于p或q(x2 - x12=0(mod n),(x+x1)(x-x1)=0(mod n)。当x-x1=k*n(k ∈Z)时,d=k'*n;当x+x1=k*n时,d=p或q)作者提到,这种A计算出d,但是不知道d是否等于p或q的情况就是OT(概率传输)
  5. A生成μ = (x-x1, n) ?= p || (x-x1, n) ?= q ? 0 : 1,μ与自己的秘密比特异或生成比特e,将e发送给B
  6. B将自己的秘密比特放到一条随机消息中,并使用自己的n加密生成消息msg,并发送给A
  7. A如果能使用d获得B的公钥n,则可以解开msg获得B的秘密比特,否则无法解密。当A解密成功并读取文件后,根据上面的第三条假设,B立刻就能知道A获取到了正确的密钥,则在第5步中他可从自己获取的e中获取到A的秘密比特,否则他无法解密。

上述协议的每一步两人都各自执行一次。由于一旦一方能获取到密钥则两方都能读取文件,所以当执行两次协议后,两方依然不能获取到密钥的几率是25%。
对于这个协议的改进,作者提到可以通过在第一步构造两个x<n和y<n,来使两方获取不到密钥的几率降至6.25%等等。然而当几率降到过低时,当一方收到e后,他很可能会赌一下,不继续执行协议而直接选择读取文件,导致协议失败。