这篇文章提出了概率OT(p - OT)和二选一OT(1-out-of-2 OT)之间可通过其他协议进行转化,从而在计算上这两种协议是相等的。
首先作者定义了两种OT协议:
-
OT
发送方Alice拥有一个比特b。接收方Bob执行协议后收到这个比特的概率是1/2。Bob收到后知道自己是否收到了正确的比特。而Alice不知道Bob是否收到了正确的比特。
-
one-out-of-two OT
发送方Alice拥有两个比特b0,b1。接受方Bob执行协议后,收到任意一个比特的概率各是1/2。Bob知道自己收到的是哪个比特,而Alice不知道。
这两个协议的定义很拗口,尤其是第一个OT协议的定义。这是因为当时的OT协议不像现在一样易用,一开始的OT协议就是第一个协议描述的样子(可参见Rabin的“How to exchange secrets by oblivious transfer”):协议双方各自拥有一个待发送的信息,协议要保证的是双方能同时收到对方的消息。由于一开始的OT协议设计刚刚起步,因此是会出现双方既可能同时收到消息,也可能同时收不到消息。所以会出现在第一个定义中“Bob收到后知道自己是否收到了正确比特”的描述,因为在初始的OT协议中,如果Bob不能确定自己收到的是不是正确的消息,他也是不会向对方发送正确消息的(初始论文提出:收到消息的一方不能尝试使用自己不确定的消息)。而第二个协议的定义才更类似我们现在对于OT的认知,尽管这里作者并没有明说Bob接受到的比特是他指定的那个,所以第二个协议的定义可以说是随机OT(R-OT)的定义。
提出两个定义后,作者就对第一个OT协议的定义做了推广,提出了p - OT:
-
p - OT
发送方Alice拥有一个比特b。接收方Bob执行协议后收到这个比特的概率是p。Bob收到后知道自己是否收到了正确的比特。而Alice不知道Bob是否收到了正确的比特。
这里仅仅将概率从1/2改成了一个变量p。
这篇论文的目的是指出1-out-of-2 OT和OT协议是计算上等价的,由于从1-out-of-2 OT构造OT的方法非常多(比如让Alice拥有的两个比特的其中一个是对于Bob没有意义的随机值),因此作者没有在文中对这个方向的转化做说明,在论文中仅提出了如何从OT构造1-out-of-2 OT。
OT协议的核心思想是在接收方做一次混淆,数据发送方将自己的数据合并到这个混淆集上再返回给数据接收方。因此对于OT协议我们应该重点关注两点:
- 接收方如何进行混淆
- 发送方如何保证返回全部数据时接收方只能恢复其中一条数据
下面来描述这个转化协议:
- Alice拥有两个比特b0,b1,接受方Bob希望获取其中的一个比特。为了先简化叙述如何通过p - OT协议实现1-out-of-2 OT协议,我们先假设p <= 3/4。
- Alice和Bob先协商选择一个安全参数s以及一个根据概率p设置的常量K,这两个值会在后面讲到,现在暂时不用关注。
- Alice生成K*s各比特:r1, r2, ... , rKs。然后Alice作为发送方,Bob作为接收方,依次执行K*s次p - OT协议,为接收的比特按顺序从1~K*s编号。依据上面的定义,每次执行协议后Bob有p的概率收到明确正确的比特,也有1-p的概率收到不确定正误的比特。这里Bob知道自己收到的是不是明确正确的比特。
- Bob从收到的K*s个比特中分类选出正确的比特和不确定的比特,并各选出αs个比特,将对应的编号索引纳入集合U和集合V中。其中集合U为明确正确比特的编号集合,集合V为不明确比特的编号集合。αs为2Kps/3向上取整的值,这个值是为了安全证明用的,现在暂时可以不关注。
- Bob根据自己的意愿,选定集合U,V的发送顺序:(X, Y) = (U, V) / (X, Y) = (V, U)。
- Alice接受到集合X、Y,从集合中取出索引,并从自己生成的比特集合中取出对应的比特,各自异或所有比特,生成:m0=⊕rx,m1=⊕ry
- Alice生成一个随机比特k,并将真正要返回的两个比特与m0,m1异或:bk⊕m0,b1-k⊕m1。返回k以及两个异或的结果。
- Bob从自己明确的比特集U中取出所有比特并异或生成⊕ru∈{m0, m1},并与bk所异或的比特再次异或,从而恢复bk。
分析:
我们先从关注的两点着手分析这个协议。首先,Alice和Bob执行多次p - OT后生成的结果只有Bob明确知道,这部分结果对于Alice而言是未知的。虽然Alice不知道Bob收到的是什么,但Alice仍然知道Bob应该收到的是什么值,这就给Bob混淆,同时Alice能对混淆结果进行处理提供了操作空间。执行完多次p - OT后,Bob在第5步对结果分类并依据自己的意愿发送,这步就是在接收方执行混淆。
在第6步中,虽然Alice不知道收到的两个集合(这里使用X、Y分别指代收到的第一个集合和第二个集合)具体都是什么集合,但此时她与Bob的共同点是他们都知道其中一个集合的正确比特,这就满足了OT的“一条对,其他错”的特性,也就为接收方只能恢复其中一条数据提供了条件。
第7步Alice生成的随机比特k用于在Alice端再做依次混淆,使得Bob最终恢复出来的比特是b0还是b1不确定,从而做到“收到任意一个比特的概率各是1/2”,这里可以将k赋值为0和1然后分别带入进去试一下。而在论文的结尾,作者也提到如果k由Bob生成并在第5步将k随两个索引集合一同发送给Alice,则Bob就能明确指定想要接收的比特,这样该协议就变成了我们熟悉的OT协议。
最后,我们需要注意的是,如果Bob正确猜测到集合V中所有p - OT执行结果得到的值,那么他是可以在第7步收到Alice返回的结果时同时得到b0和b1的。这个概率虽然可以通过安全参数s调低,但是永远会大于0.论文的第四部分理论分析就分析了这个概率,说明了如何设置K的值使得Bob同时获得两个正确结果的概率低于2-s。这部分的理论分析用到了伯努利大数定律,但这部分似乎有一个错误:2e-Kspp/16 <= 2-s 是不成立的。但对于s取一个很大的值的时候这两个值很接近。因此对于结果影响不大。
浙公网安备 33010602011771号