广义上而言SMPC分为两种实现方式,一类是使用布尔电路表述待计算函数,然后使用通用混淆电路来实现安全多方计算。另一类是使用域上的算术电路表述待计算函数,然后使用密码学方法实现安全多方计算。
Yao氏混淆电路估值方案
该方案可以用于实现对任何类型的门电路的安全估值。Lindell和Pinkas对该方案进行了严格的安全论证,证明该方案在半诚实模型下是安全的。下面简介姚氏混淆电路估值方案。
令C(x,y)∈{0,1}σC(x,y) \in {\{ 0,1\} _\sigma }C(x,y)∈{0,1}σ代表一个布尔电路,其输入为x,y∈{0,1}σx,y \in {\{ 0,1\} _\sigma }x,y∈{0,1}σ。假设输入数据长度,输出数据长度和安全参数长度均为σ\sigmaσ。 下面介绍如何对电路C上的单个门g:{0,1}×{0,1}→{0,1}g:\{ 0,1\} \times \{ 0,1\} \to \{ 0,1\}g:{0,1}×{0,1}→{0,1}。
令w1,w2{w_1},{w_2}w1,w2代表g的输入信号,w3{w_3}w3代表输出信号。k10k_1^0k10,k11k_1^1k11,k20k_2^0k20,k21k_2^1k21,k30k_3^0k30,k31k_3^1k31是分别调用密钥生成算法G(1σ)G(1_{\sigma})G(1σ)产生的密钥。简便起见,假设这些密钥的长度也是σ{\sigma}σ。要解决的问题是如何在不泄露k3g(1−α,β)k_3^{g(1-\alpha,\beta)}k3g(1−α,β),k3g(α,1−β)k_3^{g(\alpha,1-\beta)}k3g(α,1−β),k3g(1−α,1−β)k_3^{g(1-\alpha,1-\beta)}k3g(1−α,1−β)的前提下,通过k1αk_1^{\alpha}k1α,k2βk_2^{\beta}k2β计算k3g(α,β)k_3^{g(\alpha,\beta)}k3g(α,β)。下面定义4个中间参数。
c0,0=Ek10(Ek20(k3g(0,0))c_{0,0}=E_{k_{1}^{0}}(E_{k_{2}^{0}}(k_{3}^{g(0,0)})c0,0=Ek10(Ek20(k3g(0,0))
c0,1=Ek10(Ek21(k3g(0,1))c_{0,1}=E_{k_{1}^{0}}(E_{k_{2}^{1}}(k_{3}^{g(0,1)})c0,1=Ek10(Ek21(k3g(0,1))
c1,0=Ek11(Ek20(k3g(1,0))c_{1,0}=E_{k_{1}^{1}}(E_{k_{2}^{0}}(k_{3}^{g(1,0)})c1,0=Ek11(Ek20(k3g(1,0))
c1,1=Ek11(Ek21(k3g(1,1))c_{1,1}=E_{k_{1}^{1}}(E_{k_{2}^{1}}(k_{3}^{g(1,1)})c1,1=Ek11(Ek21(k3g(1,1))
其中E为对称加密方案(G,E,D)中的加密算法,对于多个消息其密文具有不可区分性。对上述的4个中间参数执行随机置换,得到g的混淆真值表c0c_0c0,c1c_1c1和c3c_3c3。给定k3g(α),βk_{3}^{g(\alpha),\beta}k3g(α),β,c2c_2c2:对于i=0,1,2,3i=0,1,2,3i=0,1,2,3,计算DK2β(Dk1α(ci))D_{K_{2}^{\beta}}(D_{k_1^{\alpha}}(c_{i}))DK2β(Dk1α(ci))。正常情况下,只会得到一个有效解密值k3γ=k3g(α,β)k_3^{\gamma}=k_3^{g(\alpha,\beta)}k3γ=k3g(α,β);如果得到两个及以上的有效解密值,则终止协议。
本文探讨了安全多方计算(SMPC)的两种实现方式:使用布尔电路和算术电路。重点介绍了Yao氏混淆电路估值方案,这是一种在半诚实模型下安全的通用方法,用于对任何类型的门电路进行安全估值。
4400

被折叠的 条评论
为什么被折叠?



