1-out-of-n OT(离散对数)
场景介绍
前提:Alice 有两个数值V0 和 V1
需求:Bob 想知道其中的一个Vi ,i ϵ{ 0,1} , Bob 知道了,但不知道 V(1-i);同时,Alice 不知道 i
实现方式

扩展为1-n OT
前提:我们考虑 Alice 持有 x_1,…,x_n , x_n ϵ{ 0,1}”l “,Bob 持有i ϵ{ 0,1,…,n} 。
需求:Bob通过〖OT〗_1^n ,Bob 获得x_i 但 Alice 不知道i。
实现方式:
1-out-of-n OT(RSA)
wiki上这个协议解释的非常清晰:https://en.wikipedia.org/wiki/Oblivious_transfer

1.Alice有两条消息,m1和m2,想将其中一个发送给 Bob。 Bob 不希望 Alice 知道他收到的是哪一个;
2.Alice 生成一个 RSA 密钥对,包括模数 N、公共指数 e 和私人指数 d;
3.Alice 还生成两个随机值 x0,x1 并将它们连同她的公共模数和指数一起发送给 Bob。
4.Bob 选择 b 为 0 或 1,并选择第一个或第二个 xb;
5.Bob通过计算 v=(xb+k^e) mod N 生成一个随机值 k 并混淆 xb,并将其发送给 Alice;
6.Alice 不知道(并且希望无法确定)x0 和 x1Bob 选择了哪一个。 她用两个随机值带入计算:和
这里面会有一个值等于k,但是Alice并不知道哪个是正确的;
7.Alice把k1和k2分别带入计算,m0’=m0+k0和m1’=m1+k1,并且把结果发送给Bob;
8.Bob选择序列号为k的m,计算mb=mb‘-k。
k-out-of-n OT
参考论文:https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.6366&rep=rep1&type=pdf
半诚实的接收者
对抗恶意的接收者

完美安全发送者