本文整理了美国俄勒冈州立大学电子工程和计算机科学学院副教授Mike Rosulek关于安全多方计算与混淆电路的演讲主题的主要内容, 文中图片均来源于Mike Rosulek的演讲报告幻灯片. 整理如有错误之处, 恳请批评指正, 谢谢!
不经意传输(Oblivious Transfer, OT)是MPC的一种特殊情况, 有两个参与者Sender(S, Alice)和Receiver(R, Bob), S有两个秘密信息m0,m1, R有一个秘密的选择比特c, 不经意传输协议将使得R根据c的取值获得信息mc, 但对m1−c一无所知, 同时S由于不知c的具体取值, 因而对R具体获得的是m0还是m1一无所知. 不经意传输协议的一个重要应用是在混淆电路中用于传输Evaluator的输入所对应的标签值, 此外不经意传输在其他MPC协议中也有很重要的应用. 在混淆电路中使用的是对称加密运算, 因而是非常快速且廉价的(cheap), 但不经意传输中需要使用大量的公钥加密运算, 因此计算是非常昂贵(Inherently expensive)的. Impagliazzo和Rudich指出仅使用对称加密原语来构造不经意传输协议是不可能的1. 下面将主要介绍不经意传输协议的一些优化方案.
一个标准的OT协议是一个确定性的功能函数, 输入信息都是由参与方给定的. 一个随机OT(Random OT, ROT)协议是一个随机化的功能函数, m0,m1,c都是协议均匀随机生成而非参与方给定的. Beaver去随机化定理2告诉我们, ROT可以很容易地转化为标准OT. 如果我们需要大量的标准OT, 可以通过离线/在线阶段来生成. 首先在离线预计算阶段中生成大量的ROT, 然后在在线阶段中使用Beaver去随机化技巧将ROT转化为确定性的标准OT. 下面我们将介绍Beaver在线阶段的转换方法.
如下图所示, 设预计算阶段的ROT协议使发送方Alice获得两个随机信息mr0,mr1, 接收方Bob获得cr,mrcr, 这里的上标r与图中的美元符号含义相同, 设在线阶段Alice的需要发送的信息为m0,m1, Bob的选择比特为c. Beaver去随机化的主要思想是Alice使用ROT的两个随机信息mr0,mr1作为一次一密(OTP)来加密需要他发送的信息m0,m1, 并将盲化结果(x0,x1)发给Bob. 如果c=cr, Alice发送的两个信息是x0=mr0⊕m0,x1=mr1⊕m1, Bob本地计算xc⊕mrcr=xc⊕mrc=mc即可得到选择比特c对应的秘密mc, 但无法获得m1−c. 但如果c≠cr, 按照上述步骤我们会发现Bob将无法获得正确的信息, 除非Alice交换mr0,mr1来加密m0,m1.
于是很自然地解决办法是, 我们可以让Bob告诉Alice是否有c=cr, 为此, Bob向Alice发送d=c⊕cr, 然后Alice计算x0=mrd⊕m0,x1=mr1⊕d⊕m1, 并发送x0,x1给Bob, Bob计算xc⊕mrcr=xc⊕mrc⊕d=mc. 正确性容易验证, 若d=0, 说明c=cr, Alice使用mr0来加密m0, mr1来加密m1; 若d=1, 说明c≠cr, Alice使用mr0来加密m1, mr1来加密m0. 容易看出, Bob这样做是安全的, 因为Alice从d中无法获知cr的具体信息.
离线阶段的ROT的开销仍然是昂贵的, 但在线阶段由于只有简单的XOR运算, 因此非常快速. 需要特别注意的一点是, 一个ROT实例只能生成一个标准OT实例, 这是因为在线阶段中我们将ROT的输出作为一次一密的密钥来加密参与方所发送的消息, 因此一个ROT只能使用一次.
我们先从公钥加密(PKE)说起, 由于公钥加密的开销比对称加密(SKE)的开销大, 因此我们通常通过同时使用PKE和SKE的混合加密来最小化PKE的开销: 首先使用昂贵的PKE加密短密钥s, 然后使用使用s通过廉价的SKE来加密长信息M. 于是, 通过λ比特的PKE和廉价的SKE, 我们实现了N比特的PKE, 其中λ代表计算安全参数. 那么, 有没有类似于混合加密的方法, 仅通过λ次OT实例和廉价的SKE来得到大量的OT实例呢? 这就是OT扩展的出发点.
Beaver在1996年提出了OT扩展(OT extension)3. Beaver注意到Yao协议需要的OT数量正比于函数的输入的长度, 我们可以使用混淆电路来构造这样一个OT扩展协议: Alice和Bob分别输入长度为λ比特的sA和sB, 使用sA⊕sB作为伪随机种子: (1) 生成2n个随机串, 组成n对随机消息(m1,0,m1,1),⋯,(mn,0,mn,1); (2) 选取一个n比特串r; 最终Alice得到所有随机消息对{mi,b}i,b, Bob得到r以及r的第i比特ri所对应的消息{mi,ri}i, 其中i∈{1,⋯,n}, 这里的n≫λ.
通过这种方式生成的ROT实例数为n, 而实际使用的ROT实例数仅为λ, 通常将这部分实际使用的OT实例称为Base OT. 虽然Beaver的OT扩展协议并不实用, 因为需要使用Yao协议对包含大量PRG的布尔电路求值, 但它告诉我们OT扩展的想法是切实可行的.
2003年的美密会Yuval Ishai, Joe Kilian, Kobbi Nissim, Erez Petrank共同发表了“Extending Oblivious Transfers Efficiently”, 即著名的IKNP协议4, 其原理主要是基于矩阵变换, IKNP协议标志着OT扩展逐渐走向实用.
假设Alice和Bob想生成n个OT, Bob拥有一个长为m的选择比特串r, 这里r的每个比特都是每次OT的一个选择比特. Bob将r的比特分解排成一列向量, 然后将向量的每个元素重复并按行扩充成一个n×λ维0-1矩阵R, 该矩阵每行的元素要么全为0, 要么全为1. Bob对该矩阵进行秘密共享, 生成两个秘密份额矩阵(T,T′), 若原始矩阵的行向量全为0, 则T,T′在该行的元素相同, 反之则不相同(如图中橙色部分表示原始矩阵行向量全为1的秘密份额). Alice随机生成一个长为λ的比特串s. 然后双方交换身份执行λ次Base OT(次数取决于矩阵的列数), 对于第i次Base OT, Bob将秘密份额矩阵的第i列元素(Ti,T′i)作为Base OT发送方的输入信息, Alice将s的第i个比特si作为Base OT接收方输入的选择比特, 若si=0, 则Alice获得Ti(即右侧后面那个矩阵的第i列), 反之则Alice获得T′i(即右侧前面那个矩阵的第i列). 运行λ次之后, Alice获得矩阵Q. 易见, 当r的某一位置上的选择比特为0时, Alice所得矩阵Q的行向量qi与Bob秘密份额矩阵在该位置的所对应的行向量ti相等, 而当r的某一位置上的选择比特为1时, Alice所得矩阵Q在该位置所对应行的行向量qi等于Bob秘密份额矩阵在该位置的所对应行的行向量ti异或上s. 即
qi={ti,若ri=0ti⊕s,若ri=1其中ri是R的第i行. 上式也可以统一写成如下形式:
qi=ti⊕ri∧s,我们可以将上述过程抽象成下图的形式: 对于每个i, Bob得到ti, Alice可以计算qi和qi⊕s. 根据(1)式的关系, 我们可以将Alice所计算的的qi和qi⊕s, 根据ri的不同, 表示成下图中ti与s关系的形式, 这可以看成是OT扩展中Alice作为发送者所拥有的秘密信息, 而从Bob的视角来看, 他所拥有的ti刚好是Alice秘密信息中的其中一个!
但是, 对于Alice表格的每一行来说, 由于重用s, 导致了关联性. 为此, Alice和Bob可以采用一个随机预言机H来破坏这种关联性即可. IKNP协议的文章中指出, 实际上不需要更强的RO模型假设, 只需要假设H是一个关联健壮哈希函数(Correlation Robust Hash Function, CRHF)即可. 给定t1,⋯,tn和秘密s, H(t1⊕s),⋯,H(tn⊕s)是独立(伪)随机的, 通常称该性质为关联健壮性(Correlation Robustness), 而满足这种性质的哈希函数称为关联健壮哈希函数. 以上便是完整的IKNP协议的全过程.
如果从更高的视角来看IKNP协议, 可以想象一下我们有一个n×λ维的高瘦矩阵, 其中n≫λ. 我们通过对矩阵的每列进行λ次Base OT实例, 每次传输一个n比特长的串,通过逐行计算H来扩展随机OT实例. 很容易通过Beaver Derandomization Theorem将该随机OT扩展转换为标准OT扩展, 这里不做过多说明.
安全性方面, IKNP协议是半诚实安全的. 具体而言, Alice可以是恶意的, 但Bob只能是半诚实的, 下面将介绍如果Bob是恶意的, IKNP协议会存在的问题.
如上图所示, 假设Bob在生成选择比特矩阵时, 在第二行的图示位置篡改了其中一比特. Alice和Bob在第二行有一比特不一致, 当且仅当Alice在Base OT中输入的s的第二个比特s2=1. 若Alice对该行进行Hash运算并在其他大型协议中使用这些结果而被Bob检测到, 则Bob将能得到s的一比特信息! Bob通过使用类似地方法, 在每列的不同位置篡改一个比特, 便可以获得Alice在该OT扩展协议中唯一的秘密信息s, 进而攻破整个OT扩展协议. 因此, IKNP协议仅是半诚实安全的.
回顾IKNP协议的等式qi=ti⊕Ri∧s和恶意敌手Bob的整个攻击过程, 这是由于R的第i行Ri所有元素不一致造成的. 若Ri的汉明重量(Hamming Weight)很低, 那么Bob可以通过观察H(qi)来猜测(或检查)s的某些比特. 那么, 如何保证Bob在协议中使用的Ri∈{0n,1n}呢? Keller, Orsini, Scholl发表于2015年美密会的一致性检查(Consistency check)技术5可以做到这一点.
如下图所示, 由于IKNP等式qi=ti⊕Ri∧s对矩阵的所有行i都成立且所有行的s都相同, 因此这些行数集合组成的子集C所对应的式子求异或之和后该等式仍然是成立的, 即有以下等式
(⨁i∈Cqi)=(⨁i∈Cti)⊕(⨁i∈CRi)∧s,为此, Alice可以发起挑战, 选取随机行数组成的集合C发给Bob. Bob计算t∗=⨁i∈Cti,R∗=⨁i∈CRi, 并发送t∗,R∗给Alice作为应答. 由于Alice有s和qi, 因此她可以计算q∗=⨁i∈Cqi, 并验证等式(2)是否成立. KOS协议的一致性检查的主要思想在于如果Ri∈{0n,1n}, 那么对于行的任意组合来说其异或和的结果必然也属于{0n,1n}这个集合; 如果存在某个Ri不属于这个集合, 那么Bob将有1/2的概率通过一致性检查从而作弊成功, 此外, Bob也可以通过猜测s使其发送的信息t∗,R∗通过一致性检查, 为此只需将一致性检查重复λ=128次, 如果Bob能通过所有的一致性检查, 则Alice可以认为Bob输入的Ri确实是属于{0n,1n}这个集合的. 但是, 该一致性检查技术的每次检查会泄露矩阵R的一比特信息, 为此Bob只需添加λ=128个额外的随机行到R中来盲化应答.
KOS协议针对半诚实安全的IKNP协议进行了改进, 通过引入一致性检查, 实现了恶意安全的IKNP协议. KOS协议也是目前已知最快的恶意安全的IKNP型OT扩展协议, 其通信开销几乎和半诚实安全的通信开销相同.
以上所介绍的OT协议都是随机2选1的OT扩展协议, 即1-out-of-2 OT extension. 下面我们考虑通过Kolesnikov和Kumaresan发表在2013年美密会的方案6, 从编码的角度可以将IKNP协议推广到随机1-out-of-N OT扩展协议.
在IKNP协议中, Bob有一个选择比特串r, 将其扩充为一个矩阵并进行秘密共享. KK13中指出, IKNP协议将Bob选择比特扩充为矩阵的步骤, 将0映射为0λ, 1映射为1λ, 这是一种简单的重复码(repetition code), 如果将其视为一种纠错码, 或许我们可以采用不同的纠错码进行推广.
首先, 我们从编码的角度来看IKNP协议, Bob拥有选择比特串r, 设C:{0,1}1→{0,1}λ是用于编码Bob的选择比特ri的重复码, 然后对该码字矩阵进行秘密分享. 设Bob的秘密分享矩阵为T,T′, 则矩阵的元素可分别表示为ti,ti⊕C(ri). 这样, IKNP等式(1)可以推广为如下形式
ti=qi⊕C(ri)∧s.在双方执行完Base OT后, 对于矩阵的第i行, Bob已知ti, Alice已知qi⊕C(0)∧s和 qi⊕C(1)∧s.
从Bob的视角, 利用等式(3), 可重写Alice的两个值为
ti⊕C(ri)∧s⊕C(0)∧s,ti⊕C(ri)∧s⊕C(1)∧s.当C是一个线性码时, 有[C(a)∧s]⊕[C(b)∧s]=C(a⊕b)∧s成立, 则Alice的两个值可以进一步写成
ti⊕C(ri⊕0)∧s,ti⊕C(ri⊕1)∧s.再令C(0)∧s=0λ, 则Alice的两个值进一步变为
ti,ti⊕C(1)∧s,两者的先后次序取决于ri的具体取值.
最后, 再使用随机预言机RO来破坏重用s导致的关联性, 即Alice的两个值进一步变为
H(ti),H(ti⊕C(1)∧s).而Bob的值则变为H(ti).
下面我们考虑选取其他编码方案, 为了方便说明, 我们考虑一个简单编码方案: C:{0,1}3→{0,1}k, 即此时ri∈{0,1}3, 总共8种取值. 对于矩阵的第i行, Alice可以计算8个值:
qi⊕C(000)∧s,qi⊕C(001)∧s,⋯,qi⊕C(111)∧s.从Bob的视角来看, 这8个值在RO模型下的形式分别为
H(ti⊕C(ri⊕000)∧s),H(ti⊕C(ri⊕001)∧s),⋯,H(ti⊕C(ri⊕111)∧s).Bob根据ri的值通过Base OT可以得到H(qi⊕C(ri)∧s). 对于已知的t和码字c, Bob只知道其他值形式为t⊕c∧s. 在RO模型中, 若所有非零码字ci的汉明重量都满足大于或等于λ, 则H(t1⊕c1∧s),⋯,H(tn⊕cn∧s)是伪随机的, 这样其他值在Bob的视角看来都是随机的, 因此可以保证方案的安全性.
KK13的文章中的一个重要结论是: 一个最小码距为λ的编码C:{0,1}ℓ→{0,1}k, 通过k次Base OT, 可以给出一个(随机)1-out-of-2ℓ的OT扩展协议, 这里的最小码距与安全性相关, 通常取为计算安全参数λ. 他们指出, 通过使用最小码距为128的Walsh-Hadamard码C:{0,1}8→{0,1}256, 可以给出一个随机1-out-of-256 OT扩展协议, 这是一个半诚实安全的协议.
此外, Orru, Orsini和Scholl于2016年的工作中7指出, 通过使用最小码距为171的BCH码C:{0,1}76→{0,1}512, 可以给出一个随机1-out-of-276 OT扩展协议, 他们同时给出了半诚实安全和恶意安全下的版本.
同年的CCS会议上, Kolesnikov, Kumaresan, Rosulek和Trieu的工作8中指出, 在半诚实模型下, 我们不需要编码C的线性性质, 由于协议过程不需要译码, 因此也不需要C的纠错性质, 而只要C能以压倒性概率保证汉明重量大于等于计算安全参数即可, 因此可以使用任意输入长度的伪随机函数C:{0,1}∗→{0,1}∼480来取代编码C, 这样, 我们可以构造一个半诚实安全的随机∞-out-of-1 OT扩展协议, 这里的伪随机函数C也被称为伪随机编码(Pseudo-Random Code, PRC).
以下是1-out-of-2和1-out-of-N OT扩展协议在不同安全模型下的对比. 结论: OT是廉价的!
相关代码参见Github: osu-crypto/libOTe: A fast, portable, and easy to use Oblivious Transfer Library (github.com).
Russell Impagliazzo, Steven Rudich. Limits on the Provable Consequences of One-Way Permutations. STOC'89. ↩
Donald Beaver. Efficient Multiparty Protocols Using Circuit Randomization. CRYPTO 1991. ↩
Donald Beaver. Correlated pseudorandomness and the complexity of private computations. STOC'96. ↩
Yuval Ishai, Joe Kilian, Kobbi Nissim, Erez Petrank. Extending Oblivious Transfers Efficiently. CRYPTO 2003. ↩
Marcel Keller, Emmanuela Orsini, Peter Scholl. Actively Secure OT Extension with Optimal Overhead. CRYPTO 2015. ↩
Vladimir Kolesnikov, Ranjit Kumaresan. Improved OT Extension for Transferring Short Secrets. CRYPTO 2013. ↩
Michele Orrù, Emmanuela Orsini, Peter Scholl. Actively Secure 1-out-of-N OT Extension with Application to Private Set Intersection. CT-RSA 2017. ↩
Vladimir Kolesnikov, Ranjit Kumaresan, Mike Rosulek, Ni Trieu. Efficient Batched Oblivious PRF with Applications to Private Set Intersection. CCS'16. ↩
本文标题: 不经意传输及其优化方案
本文作者: 云中雨雾
本文链接: https://weiviming.github.io/16237676401097.html
本站文章采用 知识共享署名4.0 国际许可协议进行许可
除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间: 2021-06-15T22:34:00+08:00