这是 Alice 获得 Bob 的秘密 的过程,可以得出 Alice 得到 的概率为。Bob获得 的过程依然是上述步骤,只不过是将 Alice 和 Bob 角色互换。
Rabin 提出的方案两方都无法获得对方的秘密的概率是,可以成功交换的概率是 。可见该方案还不是很完善,不能保证两方每次都能在满足要求的情况下获得秘密,还不具有应用意义。所以有了 1985 年 Even 等人在此[1]基础上提出的新的 1-out-2 OT 协议[2]。
1985 1-out-of-2 OT
Even 等人的提出新的使用公钥密码体制的 1-out-of-2 OT 协议,给出了 OT 公理化的定义和实现。相比于 Rabin 等人提出的一方只有的概率获得秘密,Even等人将其进行了改进,即:Alice 拥有两个秘密 ,而 Bob 想要知道其中一个。在 OT 协议执行完成之后,Bob 获得了其中一个秘密,但是不知道另外一条秘密 ,并且 Alice 也不知道 Bob 选择的是还是。如下图:
可以清楚的看到,1-out-of-2 OT 执行结束之后,Bob获得了一个秘密且不知到另外一条秘密,而 Alice 则不知到 Bob 拿到了哪一条秘密。1-out-of-2 OT 是一个具有实际应用意义的不经意传输协议,也是目前较为常用的一种。
1986 1-out-of-n OT
之后在1986年,Brassard[3] 等人继续将OT协议改进到了 1-out-of-n OT 版本。与上述1-out-of-2 OT中的问题基本相同,唯一变化的就是从 2 条秘密传递 1 条给 Bob 变成了 从 n 条秘密传递给 Bob .
初始协议为:n条秘密为:,且每个消息长为 bits,设 表示第 i 个秘密的第 j 位,可见。
(1)首先 Alice 随机选择大素数 ,计算,并计算模 m 的二次非剩余 y,然后对于每一个比特位 选择一个整数 并计算 (显然,当且仅当 时 时二次剩余)然后将 发送给 Bob。 (2)Bob选择随机数 r 以及 随机的比特位 ,计算 ,其中当且仅当 时 ,q 是 m 的二次剩余。 如此一来,只需要验证 (2) 中得到的 q 是否为 m 的二次剩余即可,若是则 反之则不等。 每一轮上述过程 Bob 可以得某个消息的一个比特位,重复 次,即可得到秘密 。
虽然上述方法可以完成目标,但是仍存在三个缺点:
Bob 可能询问的是不同秘密的比特位。
Bob 可能得到两个消息之间的异或。
Alice 可能欺骗 Bob,发送的 y 可能是一个 二次剩余,也就有可能指出 Bob 的选择。
为克服以上缺点,改进上述算法如下:
(1) Bob 随机选择扰动函数 ,随机整数和随机比特位 ,使得 ,其中 i 表示 Bob 想要获得第 i 条秘密。并计算 将 t 个 传送给 Alice,同时需要向 Alice 证明所有的 可用性(我的理解是以此来保证请求的是同一条消息的不同比特位,也就是解决缺点 1和2)。 (2) Bob 传送 k 给 Alice (). (3) Alice 对于每一个都给出模 m 下的二次特征值,发送给Bob。 (4) Bob根据二次特征值来推测出相应比特的数据(特征值为零则与 α 不同,不为零则相同)。
这便是最开始的 1-out-of-n OT 协议。至此最基本的OT协议包括 2 取 1,n 取 1 都已经有了。接下来就是关于OT扩展的内容了。
下图是一个基本的1-out-of-2 OT, 设预计算阶段的 R-OT 协议使发送方 Alice 获得两个随机信息, 接收方Bob获得, 设在线阶段Alice的需要发送的信息为, Bob 的选择比特为 . Beaver 去随机化的主要思想是 Alice 使用R-OT的两个随机信息 作为一次一密(OTP)来加密需要他发送的信息 并将盲化结果 发给 Bob. 如果 , Alice发送的两个信息是 , , Bob本地计算即可得到选择比特 c 对应的比特秘密 ,但是无法获得 。但是如果 ,按照上述步骤我们会发现 Bob 将无法获得正确的信息,除非 Alice 交换 来加密 。如下图所示:
为解决上述 的情况,容易想到的解决方法是让 Bob 告知 Alice 是否有 ,具体如下图所示,其中是否等于0,表示为
上述过程就是一个在基本的 1-out-of-2 OT上使用随机数来实现的过程,即 R-OT 。但是其每执行以此 OT 都需要进行里现阶段的随机数生成,这个开销非常昂贵。反之其在线阶段只需要异或运算,反而比较高效。并且以此离线阶段的R-OT以此只能产生一个OT实例,这也给其应用带来困难。而Beaver等人在1996年,使用了混合加密的方式对R-OT进行了改进,使得其离线阶段效率得到了提高,并且例证了OT扩展方案的可行性。
要讲清Beaver等人的 OT 扩展,首先了解一下混合加密。公钥密钥的出现有助于解决现有的OT协议执行次数过高的问题,不过因为公钥密钥需要低效率的幂指数运算,不利于直接加密大数据,因此将公钥的私钥两种方法结合,使用昂贵的公钥加密短密钥,然后使用相对便宜的私钥来加密长信息。以此实现对现有OT进行扩展,提高OT协议的效率。应用如下:
如上图所示,使用姚氏混淆电路来完成整个过程,其中左侧为 Alice 输入 并得到所有的消息对,即就是 n 个R-OT离线阶段的 ,右侧为 Bob 输入 并得到比特串 r 以及对应的消息,即就是R-OT离线阶段的。其中输入的长度为,输出的结果个数为 n ,且 。也就是说在此扩展中只需要 个R-OT,可以得到 n 个 OT 实例,即就是使用 实现 ,同样有 。
然而由于姚氏混淆电路的原因导致其不够实用,但是他例证的说明了 OT-extension 是可行的。也为后面 OT 的发展做出重要贡献。
IKNP[03]
在Beaver等人之后,IKNP[03] 协议则逐步让 OT 协议走上实用的道路。IKNP[03]协议和Beaver等人解决的问题实际上是相同的,都是为了让 Alice 获得消息对 和让 Bob 后的对应的 以便在线阶段 OT 的使用。与不太实用的Beaver96使用 Yao's GC 不同的是,IKNP[03] 使用 OT 来实现,具体如下:
接着 Alice 也随机选取长度为 的比特串 ,然后双方共同执行base-OT 其中 Bob 为发送方,将两个秘密份额矩阵 的第 列作为输入的两个消息,Alice 作为接收方,以 为输入来选择两个秘密份额矩阵第 列的某一个来构成自己的矩阵 的第 列,结果如下:
当 时, 两个秘密份额矩阵 对应位置的行向量相等,所以Alice所得矩阵 的行向量 与 Bob 的任意一个份额矩阵该位置对应的行向量 相同;当 时, Alice所得矩阵 的行向量 等于 Bob 的份额矩阵 该位置对应的行向量 与 的异或,即:
其中 是份额矩阵 的行向量,上述过程可以进一步抽象为:
上述过程后 Alice 获得了矩阵 ,加上自己拥有的选择串 ,则 Alice 就有了消息对 。Bob 则拥有了相应的 (选择比特), (某个消息),如下图所示:
运用上述公式进一步改写为:
由此就已经可以明显的看出 Alice 拥有了随机的消息对,并且 Bob 拥有选择比特位和 Alice 消息对中的其中一个消息。这已是解决一开始问题(两方获得用于在线阶段的消息队等)。效率方面,扩展矩阵是 的矩阵,其中,而base-OT阶段是按照列来进行,所以会进行 次 base-OT,然而传输了 n-bits 的内容,并且不需要 Yao's GC。
此外上述图示中 Beaver96 和 IKNP03 部分图例是根据 Mike Rosulek 报告 中的图示重新绘制得来,特此声明!
参考文献
[1] Rabin M O . How to Exchange Secrets by Oblivious Transfer[J]. Technical Memo TR-81, 1981.
[2] Even S . A randomized protocol for signing contracts[J]. ACM SIGACT News, 1983.
[3] Brassard G , C Crépeau, Robert J M . All-or Nothing Disclosure of Secrets. Advances in Cryptology — CRYPTO’ 86, 1986.
[4] Impagliazzo R , Rudich S . Limits on the provable consequences of one-way permutations (invited talk). Springer New York, 1990.
[5] Beaver D . Correlated Pseudorandomness and the Complexity of Private Computations[C]// Twenty-eighth Acm Symposium on the Theory of Computing. ACM, 1996.
[6] Ishai Y , Kilian J , Nissim K , et al. Extending Oblivious Transfers Efficiently[C]// 23rd Annual International Cryptology Conference. CiteSeer, 2003.
[7] Kolesnikov V , Kumaresan R . Improved OT Extension for Transferring Short Secrets[M]. Springer Berlin Heidelberg, 2013.
[8] Asharov G , Lindell Y , Schneider T , et al. More efficient oblivious transfer and extensions for faster secure computation[C]// Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security. ACM, 2013.
[9] Yao, Andrew. (1986). How to generate and exchange secrets. Annual Symposium on Foundations of Computer Science (Proceedings). 10. 162 - 167. 10.1109/SFCS.1986.25.
[10] Goldreich, Oded & Micali, S. & Wigderson, Avi. (1987). How to play ANY mental game. 218-229. 10.1145/28395.28420.
[11] V. Kolesnikov and T. Schneider. Improved garbled circuit: Free XOR gates and applications. In International Colloquium on Automata, Languages and Programming (ICALP’08), volume 5126 of LNCS, pages 486–498. Springer, 2008.