深入浅出隐私计算:技术解析与应用实践
上QQ阅读APP看书,第一时间看更新

2.2 不经意传输

不经意传输(Oblivious Transfer,OT)协议是一个密码学协议。在这个协议中,消息发送者将一批消息发送给接收者,接收者只能从中选取一条。但发送者对接收者选取了哪一条消息无法察觉,接收者也无法知道未选取的其他消息的内容。不经意传输协议可以保护接收者的隐私(选取的消息的内容)不被发送者知道,是密码学的一个基本协议,也叫茫然传输协议。

不经意传输最初是在1981年由Michael O. Rabin提出的。在茫然传输协议中,发送者Alice发送一条消息给接收者Bob,Bob会以1/2的概率接收到信息。在发送结束后,Alice并不知道Bob是否接收到了信息,Bob则能确信自己知道是否收到了信息。

另一种更实用的不经意传输协议,被称为二选一不经意传输(1 out 2 Oblivious Transfer),是由Shimon Even、Oded Goldreich和Abraham Lempel在1985年提出的。在二选一不经意传输协议中,Alice每次发两条信息(m1m2)给Bob,Bob提供一个输入,并根据输入获得输出信息。在协议结束后,Bob得到了自己想要的那条信息(m1或者m2),而Alice并不知道Bob最终得到的是哪条。

后续研究者们又进一步拓展出N选一不经意传输协议。下面来看一种基于RSA加密算法的不经意传输协议的实现方式。

假设发送者Alice有N个电话号码m0, m1, …, mN,接收者Bob只能从中选取一个,但又不想让Alice知道他拿到了哪一个号码。

1)发送者Alice生成一对RSA公私钥,并将公钥(n, e)发送给接收者Bob。

2)Alice方生成N个随机数X0, …, XN,将它们发送给接收者Bob。

3)Bob方生成一个随机数k以及一个编号标识b(也就是Bob选择了第b个电话号码)。

4)Bob方用接收到的公钥加密k,同时用自己选中的Xb(从Alice方发送的N个随机数中选择的第b个随机数)盲化后发送给Alice,盲化计算公式为(Xb+ke) mod n

5)Alice方并不知道Bob方究竟选择了哪个,她将X0, …, XN中的每个数据都拿去解密,获得k0, …, kN个解密结果。

6)Alice方对N个解密结果分别加上真实要发送的信息后发送给Bob。

7)Bob方根据自己选中的消息编号,只需对第b个消息解密就可以获得自己选中的电话号码。对于其他消息,Bob即使去解密也只能获得一个没有意义的随机值。而Alice方始终无法获知Bob究竟拿到了哪一个号码。

为了方便读者理解,我们将上述步骤整理成表2-1。

表2-1 不经意传输协议实现步骤

032-01
033-01

除了基于RSA加密算法的不经意传输协议的实现方案之外,研究者们还提出了基于椭圆曲线、基于匿名验证隐藏证书等的实现方案,有兴趣的读者可进一步研究学习。