【隐私计算笔谈】MPC系列专题(八):OT协议(一)

通用的半诚实公钥OT协议
 
之前已经介绍过Naor-Pinkas不经意传输协议,Naor-Pinkas不经意传输协议基于离散对数困难问题,这次介绍一个通用的基于公钥的半诚实安全的不经意传输协议和Beaver的非黑盒构造。
 
有一个发送方Alice和一个接收方Bob,这个协议的前提条件是能够在公钥空间里随机采样获得一个公钥。而不是先获得私钥,再通过私钥产生公钥。
 
简单的说就是能够随机生成一个和公钥格式相同的随机数。Alice在协议中的输入为秘密值\( _0,_1 \),Bob在协议的输入为选择比特∈{0,1} 。
 
协议开始时,Bob首先生成一个公私钥对(\( _{Bob},_{Bob} \)),并在公钥空间里进行随机采样,再生成一个随机公钥\( ′_{Bob} \),Bob根据自己输入的选择比特b,如果选择比特=0,那么Bob将(\( _{Bob}, ′_{Bob} \))发送给Alice;如果选择比特=1,那么Bob将(\( ′_{Bob}, _{Bob} \))发送给Alice。
 
将Alice从Bob那收到的公钥记为(\( _0,_1 \)),Alice收到Bob发来的公钥对后,向Bob发送两个密文(\( _0,_1 \)),其中
 

$$ _0=_{0}(_0),_1=_{1}(_1) $$

 
\( _y() \)指用加密算法Enc和加密秘钥y加密x。
 
Bob 接收到(\( _0,_1 \))后,使用自己的私钥\( _{Bob} \)解密密文\( _ \)。
 

 
该不经意传输协议基于半诚实的,即Bob和Alice都不会违反协议,遵守协议的规定,Bob产生的公钥\( ′_{Bob} \)是随机产生的,Bob无法得知公钥\( ′_{Bob} \)所对应的私钥。
 
如果Bob是恶意的用户,不遵守协议规定,先产生一个私钥\( ′_{Bob} \)后再根据\( ′_{Bob} \)产生对应的公钥\( ′_{Bob} \),则Alice发送过来的(\( _0,_1 \))Bob均可解密,所以协议前提是半诚实的。
 
Bob不知道\( ′_{Bob} \)所对应的私钥,也就只能解密(\( _0,_1 \))其中之一,无法解密Alice使用\( ′_{Bob} \)加密的\( _{1-b} \)。 
 

 

Beaver的非黑盒构造

之前介绍过的多个混淆电路估值协议都需要使用到不经意传输协议,Beaver提出了一种自举姚氏混淆电路协议(bootstrapping Yao’s GC protocol),可以用少量的公钥密码学操作生成多项式数量级的不经意传输协议。 
 
假设Alice是发送方,Bob是接收方。有一个布尔电路C,该电路能够实现不经意传输函数F,函数F的输入是加密过的Bob的选择比特串以及Alice的秘密值对,输出是OT协议的执行结果。有一个伪随机函数(),可以将比特的输入扩展到比特。
 
Bob产生比特长的选择比特串,和比特长的随机比特串,利用伪随机函数()来将扩展到比特长,之后Bob向Alice发送()⨁。
 
Alice收到()⨁后,将收到的()⨁和自己持有的秘密值对 
 

$$ {(_{10},_{11}),(_{20},_{21}),…,(_{m0},_{m1})} $$

 
作为函数F的输入。之后Bob再向函数F输入,函数F会通过由Bob输入的计算出()后对()⨁进行解密得到,再利用选择比特串从Alice的秘密值对中进行选择,并输出选择结果。
 

 
即对于函数F而言,它只需要Bob的比特的输入。函数F的实现可以通过混淆电路,在Alice由于不知道,因此无法解密出。Alice计算函数F对应的布尔电路后,对其进行混淆。
 
之后Alice将混淆电路以及()⨁和\( {(_{10},_{11}),(_{20},_{21}),…,(_{m0},_{m1})} \)对应的导线加密值发送给 Bob,Bob则通过次OT协议获取对应的输入导线的加密值,进行电路估值。 
 
若()⨁已经在协议开始之前发送给了Alice,那么 Bob在协议中需要输入的只有比特随机比特串,由于混淆电路的输入比特数量和需要执行的OT次数相关联,Alice预先生成混淆电路后发送给Bob,Bob通过次OT获取输入的各个比特对应的混淆秘钥,进行电路估值。
 
若不使用这种结构直接进行OT协议,由于选择比特串是比特长,因此需要个OT协议。通过这种构造成功将个OT协议降为了个OT协议。

你可能感兴趣的:(【隐私计算笔谈】MPC系列专题(八):OT协议(一))