回顾一下,最近几次的科普我们介绍了三方复制秘密共享的秘密分享方式,其主要应用为作为隐私保护机器学习的隐私保护框架,将数据作为秘密,按机器学习对数据的操作进行安全多方计算。
机器学习需要对数据进行定点数的加法、乘法、矩阵运算等,需要三方复制秘密共享也有对应的这些操作。因此之后我们介绍了在和下三方复制秘密共享的乘法。在进行定点数运算时会带来定点数精度扩大问题,于是我们接着介绍了两个定点数截断算法Truncate I和Truncate II。秘密在三方复制秘密共享中有( Z_2 )和( Z_{2^k} )两种表示方式,需要有互相转换的方式,我们接着介绍了将在( Z_{2^k} )下的子秘密( [x]^A )转换为在( Z_2 )下的子秘密( [x]^B )的 Bit Decomposition算法。
有两种子秘密的表示形式,那么当需要两个不同表示形式的秘密进行计算,如需要子秘密( [x]^A )和子秘密( [y]^B )进行计算( [x]^A[y]^B=[xy]^A )时又该怎么办呢?将( [x]^A )转换为( [x]^B ),或者将( [y]^B )转换为( [y]^A )进行计算,是一种办法。本次科普将介绍更高效的跨秘密表示形式的计算方法。在介绍实现夸秘密表示形式的计算方法之前,先介绍一种半诚实的三方OT和计算( a[b]^B=[ab]^A )的方法。
三方OT
与双方 OT 相比,这个三方 OT 协议较为简单,是双方 OT 的一个变形,实际依旧只有两方进行OT,而让第三方作为 OT 协议的帮助者。假设参与者为Alice、Bob、Candy,Alice是秘密的发送方,Bob是秘密的接收方,而Candy则是帮助者,则整个三方 OT 协议可以被表示成( ((m_0,m_1),𝑐,𝑐)→ (⊥,m_c,⊥) ),符号「⊥」表示空,即未接收到信息。
OT 协议的具体流程为:首先Alice和Candy共同产生两个𝑘比特的随机数( w_0,w_1 ),Alice和Candy都知道( w_0,w_1 )的具体值,接着Alice计算( m_0oplus w_0,m_1oplus w_1 ),并且将( m_0oplus w_0,m_1oplus w_1 )发送给Bob。Bob将自己的选择比特𝑐发送给Candy,Candy根据选择比特的值发送( w_c )给Bob,Bob利用( w_c )即可成功解密出( m_c )。
完整执行完成后,Bob只获得了( m_c ),Candy只知道( c,w_0,w_1 )而不知道( m_0,m_1 ),Alice只知道( w_o,w_1,m_0,m_1 ),而不知道Bob的选择,三者都只掌握了部分信息。
跨表示形式的子秘密计算
接着介绍计算( a[b]^B=[ab]^A )的方式:最简单的例子是𝑎为( Z_{2^k} )上的明文,而𝑏为单比特。秘密𝑏以( (b_1,b_2,b_3) )的形式被三方分享,Alice掌握( (b_1,b_2) ),Bob掌握 ( (b_2,b_3) ),Candy 掌握( (b_3,b_1) )。首先Alice(发送者)在环( Z_{2^k} )上产生一个随机数 𝑟,接着产生两个消息( m_0=(0oplus b_1oplus b_2)a-r )和( m_1=(1oplus b_1oplus b_2)a-r )。Bob(接收者)掌握有( b_3 ),而Candy(帮助者)也掌握有( b_3 ),因此三者可以进行上述的三方OT。Alice作为 OT 的发送方,在这次 OT 中的输入为( m_i=(ioplus b_1oplus b_2)a-r,iin ) { 0,1 } ;Bob作为接收方,在这次OT的输入为( b_3 );Candy则作为帮助者。注意( b_1,b_2,b_3 )都是单比特值,因此Bob通过OT可以获得( m_{b_3}=(b_3oplus b_1oplus b_2)a-r=ba-r )。注意我们目标是让参与的三方获得( [ab]^A )。
接着,Alice、Bob和Candy可以利用之前预先产生的( (s_1,s_2,s_3) )来计算( [c]^A=[ab]^A=(s_1+r,ab-r+s_3,s_3) )。注意Bob已经获得了𝑏𝑎−𝑟,也掌握了( s_2,s_3 ),因此Bob可以本地计算( c_2=ab-r+s_3 ),同样 Alice 也可本地直接计算( c_1=s_1+r ),Candy本身就掌握有( c_3=s_3 )。
图:三方OT计算( a[b]^B )
回忆一下三方复制秘密共享的规则,要求Alice掌握( c_1 ),Bob掌握( c_2,c_3 ),Candy掌握( c_3,c_1 )。因此为了符合复制秘密共享的规则,Bob计算( c_2=ab-r+s_3 )之后,需要再将( c_2 )发送给Alice,同样Alice在计算完( s_1+r )后需要将它发送给Candy。或者也可以再进行一次三方OT,这次由 Bob来扮演发送方,Bob在OT协议的输入为( m_i=(ioplus b_2oplus b_3)a-r+s_3 ), 𝑖∈{0,1},接收方由Alice扮演,Alice输入选择比特( b_1 )来获得消息( c_2=ab-r+s_3 )。这样就成功的完成了( [c]^A=[ab]^A=(s_1+r,ab-r+s_3,s_3) )的计算。
有了( a[b]^B=[ab]^A )的计算方式,我们就可以进一步计算( [a]^A[b]^B=[ab]^A )了。( a[b]^B )和( [a]^A[b]^B )的区别只是前者𝑎以明文的形式,而后者是以密文的形式,思考一下复制秘钥共享的性质,实际上( [a]^A=a_1+a_2+a_3 ),因此( [a]^A[b]^B=a_1[b]^B+(a_2+a_3)[b]^B )。只需进行两次( a[b]^B )形式的乘法,再进行加法,即可成功计算出( [a]^A[b]^B )。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 从IDC数据库安全报告,看OceanBase安全能力
欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 作为数据的承载工具,数据库自身安全能力对于数据安全至关重要。数据库软件诞生至今,经过了几十年的发展和演进,已经成为 IT 系统中不可或缺的关键技术。但是随着数…