2选1不经意传输:Alice 给 Bob发送两条消息
(
m
1
,
m
2
)
(m_1, m_2)
(m1,m2),Bob能够在不知道另外一条消息的内容的情况下得知其中一条消息的内容,且Alice不知道Bob选择的哪条消息。
n选1不经意传输: 是2选1不经意传输的一般推广。效果可以类比2选1不经意传输协议进行联想。
n选m不经意传输:更加一般化的一种情形, Bob 从 Alice的n个输入中得到m个。
基于RSA的1-out-of-2 OT
协议流程:
发送者 Alice 生成两对 RSA 公私钥(
k
p
u
b
0
、
k
p
r
0
k_{pub0}、k_{pr0}
kpub0、kpr0 和
k
p
u
b
1
、
k
p
r
1
k_{pub1}、k_{pr1}
kpub1、kpr1), 并将两个公钥
k
p
u
b
0
,
k
p
u
b
1
k_{pub0}, k_{pub1}
kpub0,kpub1 发送给接收者Bob。
Bob 生成一个随机数
b
b
b, 并用收到的两个公钥之一加密随机数(用哪个秘钥取决于 Bob 想要获取哪条数据,如果 Bob 想要得到消息
M
0
M_0
M0 就用
k
p
u
b
0
k_{pub0}
kpub0加密随机数,如果想要得到
M
1
M_1
M1就用
k
p
u
b
1
k_{pub1}
kpub1加密随机数)得到密文
k
k
k, 并将密文结果发送给Alice。
Alice 用自己的两个私钥
k
p
r
0
、
k
p
r
1
k_{pr0}、k_{pr1}
kpr0、kpr1分别解密收到随机数密文
k
k
k,并得到两个解密结果
k
0
,
k
1
k_0,k_1
k0,k1。并将两个结果分别与要发送的两条信息进行异或(
k
0
⊕
M
0
=
e
0
k_0 \oplus M_0 = e_0
k0⊕M0=e0,
k
1
⊕
M
1
=
e
1
k_1 \oplus M_1 = e_1
k1⊕M1=e1),并将两个结果
e
0
,
e
1
e_0,e_1
e0,e1发给 Bob。
Bob用自己的真实随机数
b
b
b与收到的
e
0
、
e
1
e_0、e_1
e0、e1分别做异或操作,得到的两个结果中只有一条为真实数据,另外一条为随机数。