前置文章:https://blog.csdn.net/weixin_44885334/article/details/126557573

文献:

  1. Beaver D, Micali S, Rogaway P. The round complexity of secure protocols[C]//Proceedings of the twenty-second annual ACM symposium on Theory of computing. 1990: 503-513.
  2. Kolesnikov V, Schneider T. Improved garbled circuit: Free XOR gates and applications[C]//International Colloquium on Automata, Languages, and Programming. Springer, Berlin, Heidelberg, 2008: 486-498.
  3. Pinkas B, Schneider T, Smart N P, et al. Secure two-party computation is practical[C]//International conference on the theory and application of cryptology and information security. Springer, Berlin, Heidelberg, 2009: 250-267.
  4. Yakoubov S. A gentle introduction to Yao’s Garbled circuits[J]. preprint on webpage at https://web.mit.edu/sonka89/www/papers/2017ygc.pdf, 2017.

文章目录

  • P&P
    • 原始论文的描述
    • 简化的描述
  • Free XOR
    • 混淆电路的构造
    • 混淆电路的计算
    • 安全性
  • Garbled Row Reduction
    • GRR3
    • GRR2
      • odd gate
      • even gate
      • 两类门的连接

P&P

P&P技术(point-and-permute technique)是由 Beaver 等人在1990年提出的。利用这个技术,可以不必对混淆真值表的444个条目都尝试解密,而是直接确定要解密哪一个条目。

原始论文的描述

Beaver 等人在文章中提出了将 2PC 的Yao’s GC扩展为 MPC 的 BMR 协议。使用了 PRF、PRG、掷硬币协议、可验证的秘密共享方案、零知识证明、一次一密。对于WWW根线和nnn个人,先掷硬币生成n×2Wn \times 2Wn×2W个私有种子(seeds)和随机比特,而人们的种子的nnn级联作为某根线上的超级种子(super-seeds),每根线上两个超级种子(位置0和位置1)。用 PRG 根据私有种子来生成线标签(wire-labels),根据随机比特利用秘密共享将选择222个超级种子中的一个作为混淆输入( garbled input),使用一次一密用输入线标签来加密输出线标签得到门标签( gate-labels)。根据线标签和种子的对应关系(利用PRG),从混淆输入(一个超级种子,包含一些种子)中得到超级种子的位置信息(0或1),然后只解密两根输入线的位置(p,q)∈{0,1}2(p,q) \in \{0,1\}^2(p,q)∈{0,1}2锁定的一个条目即可。这里的位置信息就是 P&P 技术的关键。

简化的描述

上述的描述特别繁琐。下面提取其中包含的关于 P&P 的思想,重新描述一遍。

对于每一根电线,除了分配两个标签ki0,ki1∈{0,1}nk_i^0,k_i^1 \in \{0,1\}^nki0​,ki1​∈{0,1}n,额外再分配两个选择比特(select bits)pi0,pi1p_i^0,p_i^1pi0​,pi1​:随机选择r∈{0,1}r \in \{0,1\}r∈{0,1},令piv=v⊕rp_i^v = v \oplus rpiv​=v⊕r。于是针对不同的v∈{0,1}v \in \{0,1\}v∈{0,1}选择比特pivp_i^vpiv​也不同,同时pivp_i^vpiv​也不会泄露vvv的任何信息。

当然,对于电路输出线,后续就没有其他的逻辑门了,因此不需要分配选择比特。为了保持描述的一致性,我们记做kov∥⊥k_o^v \| \perpkov​∥⊥。

不再需要特殊的 elusive range 的对称加密,P&P技术下只需要一个普通的对称加密方案Enc,DecEnc,DecEnc,Dec,以及密钥派生函数(key derivation function)HHH。

对于门ggg,假设它的输入线是i,ji,ji,j,输出线是lll,那么将逻辑输出 g(vi,vj)g(v_i,v_j)g(vi​,vj​) 对应的 klg(vi,vj)∥plg(vi,vj)k_l^{g(v_i,v_j)} \| p_l^{g(v_i,v_j)}klg(vi​,vj​)​∥plg(vi​,vj​)​ 的密文
Enc(H(kivi,kjvj),klg(vi,vj)∥plg(vi,vj))Enc(H(k_i^{v_i},k_j^{v_j}),\, k_l^{g(v_i,v_j)} \| p_l^{g(v_i,v_j)}) Enc(H(kivi​​,kjvj​​),klg(vi​,vj​)​∥plg(vi​,vj​)​)
放在混淆真值表的第{pivi,pjvj}\{p_i^{v_i},p_j^{v_j}\}{pivi​​,pjvj​​}(或者说2pivi+pjvj2p_i^{v_i}+p_j^{v_j}2pivi​​+pjvj​​)个位置。

Alice将上述混淆电路发给Bob后,Bob按照拓扑排序进行计算:

  1. 首先计算电路GCGCGC的电路输入线,他从Alice那里获取到那些逻辑值viv_ivi​对应的“标签-选择比特”对 kivi∥pivi∈{0,1}n+1k_i^{v_i} \| p_i^{v_i} \in \{0,1\}^{n+1}kivi​​∥pivi​​∈{0,1}n+1,然后通过解密门ggg的第2pivi+pjvj2p_i^{v_i}+p_j^{v_j}2pivi​​+pjvj​​个位置的条目,得到门输出线的 klvl∥plvl∈{0,1}n+1k_l^{v_l} \| p_l^{v_l} \in \{0,1\}^{n+1}klvl​​∥plvl​​∈{0,1}n+1
  2. 对于中间的门,我们就获得了其所有的门输入线上的标签和选择比特,继续计算。
  3. 计算完整个电路后,获得最终结果的标签kov∥⊥k_o^v \| \perpkov​∥⊥,然后Alice公布对应关系,结束。

Free XOR

姚的混淆电路在构建的时候,无论是什么 1-out-of-2 逻辑门(与、或、异或、与非、或非)都需要计算444个密文。Kolesnikov 等人针对异或门的特殊性质,给出了不必构造混淆真值表的异或门(Free XOR)的构造。同时,非门本身的计算就是“免费的”,交换 label 即可。

对于异或门的观察如下:假设三根线分别为a,b,ca,b,ca,b,c,随机选择wa0,wb0,R∈{0,1}nw_a^0,w_b^0,R \in \{0,1\}^nwa0​,wb0​,R∈{0,1}n,设置
wc0=wa0⊕wb0w_c^0 = w_a^0 \oplus w_b^0 wc0​=wa0​⊕wb0​
以及
∀i∈{a,b,c},wi1=wi0⊕R\forall i \in \{a,b,c\},\, w_i^1 = w_i^0 \oplus R ∀i∈{a,b,c},wi1​=wi0​⊕R
那么容易验证上述关系就是 XOR 的逻辑:
wc0=wa0⊕wb0=(wa0⊕R)⊕(wb0⊕R)=wa1⊕wb1w_c^0 = w_a^0 \oplus w_b^0 = (w_a^0 \oplus R) \oplus (w_b^0 \oplus R) = w_a^1 \oplus w_b^1 wc0​=wa0​⊕wb0​=(wa0​⊕R)⊕(wb0​⊕R)=wa1​⊕wb1​

wc1=wc0⊕R=wa0⊕wb0⊕R=wa0⊕(wb0⊕R)=wb0⊕(wa0⊕R)=wa0⊕wb1=wa1⊕wb0w_c^1 = w_c^0 \oplus R = w_a^0 \oplus w_b^0 \oplus R = w_a^0 \oplus (w_b^0 \oplus R) = w_b^0 \oplus (w_a^0 \oplus R) = w_a^0 \oplus w_b^1 = w_a^1 \oplus w_b^0 wc1​=wc0​⊕R=wa0​⊕wb0​⊕R=wa0​⊕(wb0​⊕R)=wb0​⊕(wa0​⊕R)=wa0​⊕wb1​=wa1​⊕wb0​

由于RRR是随机数,因此wivw_i^vwiv​都不会泄露vvv的信息。在本构造中,RRR是全局的(global)。

混淆电路的构造

令w={k,p}∈{0,1}n+1w = \{k,p\} \in \{0,1\}^{n+1}w={k,p}∈{0,1}n+1,其中kkk是线标签,ppp是选择比特。全局的随机数R∈{0,1}nR \in \{0,1\}^nR∈{0,1}n。随机生成wi0={ki0,pi0}w_i^0 = \{k_i^0,p_i^0\}wi0​={ki0​,pi0​},那么
wi1={ki1,pi1}={ki0⊕R,pi0⊕1}w_i^1 = \{k_i^1,\, p_i^1\} = \{k_i^0 \oplus R,\, p_i^0 \oplus 1\} wi1​={ki1​,pi1​}={ki0​⊕R,pi0​⊕1}
令H:{0,1}∗→{0,1}n+1H:\{0,1\}^* \to \{0,1\}^{n+1}H:{0,1}∗→{0,1}n+1是 ROM 下的Hash函数。


上图中的第3步中,Alice同时为电路输出线制作了混淆表,它包含两个条目(输出比特是000还是111)。这样,当Bob计算完电路后,不必再与Alice通信一轮来获得label和value的对应关系,而是直接自己计算出来。节省了一轮通信。

混淆电路的计算

Bob使用不经意传输获得自己的私有输入的标签和选择比特。

安全性

上述 Free XOR 协议是在半诚实敌手的场景下安全的(secure against semi-honest adversaries)。

使用 cut-and-choose method,可以提升为在恶意敌手(malicious adversaries)的场景下安全的。

Garbled Row Reduction

GRR3

1999年 Naor 等人提出了一种可以将混淆表的条目从444降低到333的方法,同时可以兼容 Free XOR,使得通信量降低了25%25\%25%。

使用 P&P 技术、Free XOR 技术,输入线a,ba,ba,b输出线ccc的逻辑门GiG_iGi​的混淆表的第(0,0)(0,0)(0,0)个条目为:
eva,vb=H(kava∥kbvb∥i)⊕(kc0⊕gi(va,vb)⋅R)e_{v_a,v_b} = H(k_a^{v_a} \| k_b^{v_b} \| i) \oplus \left( k_c^0 \oplus g_i(v_a,v_b) \cdot R \right) eva​,vb​​=H(kava​​∥kbvb​​∥i)⊕(kc0​⊕gi​(va​,vb​)⋅R)

其中 pava=0,pbvb=0p_a^{v_a}=0,p_b^{v_b}=0pava​​=0,pbvb​​=0

由于 Enc(key,⋅)Enc(key,\cdot)Enc(key,⋅) 本身可以视为PRFPRFPRF,因此 m:=Enc−1(key,0n)m := Enc^{-1}(key, 0^n)m:=Enc−1(key,0n) 可以视为随机数。我们设置:
kc0=H(kava∥kbvb∥i)⊕gi(va,vb)⋅Rk_c^0 = H(k_a^{v_a} \| k_b^{v_b} \| i) \oplus g_i(v_a,v_b) \cdot R kc0​=H(kava​​∥kbvb​​∥i)⊕gi​(va​,vb​)⋅R

那么明显 kc0k_c^0kc0​ 仍满足伪随机性,且它使得混淆表的第一个条目的密文为0n0^n0n,不必发送。于是四个条目的混淆表,我们只需发送其中的333个密文。

GRR2

2009年 Pinkas 等人提出了一种可以将混淆表的条目从444降低到222的方法,使得通信量降低了50%50\%50%。方案是使用拉格朗日插值公式,而非加密算法。

仅考虑 2-to-1 逻辑门(任意 m-to-1 逻辑门可以表示为一组 2-to-1 逻辑门,而 1-to-1 逻辑门可以简化为111根导线)。对于真值表包含奇数个“1”的逻辑门,叫它奇逻辑门(odd gate);否则,叫它偶逻辑门(even gate)。

对于逻辑门的444个条目,标记为{1,2,3,4}\{1,2,3,4\}{1,2,3,4}。逻辑门ggg的两根输入线是i,ji,ji,j,输出线是lll,线标记为kivi,kjvj,klvl∈{0,1}nk_i^{v_i},k_j^{v_j},k_l^{v_l} \in \{0,1\}^nkivi​​,kjvj​​,klvl​​∈{0,1}n,对应的选择比特为pivi,pjvj,plvl∈{0,1}p_i^{v_i},p_j^{v_j},p_l^{v_l} \in \{0,1\}pivi​​,pjvj​​,plvl​​∈{0,1}。

构造有限域GF(2t)=GF(2)[x]/(f(x))GF(2^t) = GF(2)[x]/(f(x))GF(2t)=GF(2)[x]/(f(x)),以及多项式环GF(2t)[X]GF(2^t)[X]GF(2t)[X]。

设置条目位置r=2pivi+pjvj+1r = 2p_i^{v_i}+p_j^{v_j}+1r=2pivi​​+pjvj​​+1,计算条目的掩码(the value used to mask this entry):
Kr∥Mr=KDFt+1(kivi,kjvj,s)K_r \| M_r = KDF^{t+1}(k_i^{v_i},k_j^{v_j},s) Kr​∥Mr​=KDFt+1(kivi​​,kjvj​​,s)
其中s=Gid∥pivi∥pjvjs = Gid \| p_i^{v_i} \| p_j^{v_j}s=Gid∥pivi​​∥pjvj​​,Kr∈{0,1}tK_r \in \{0,1\}^tKr​∈{0,1}t是有限域元素,Mr∈{0,1}M_r \in \{0,1\}Mr​∈{0,1}用来加密门输出线的选择比特plvlp_l^{v_l}plvl​​

odd gate

对于奇数门,在真值表上要么有333个“1”,要么有333个“0”。以 OR 门举例:它有333个“1”,分别位于条目的第2,3,42,3,42,3,4位置。

OR Gate viv_ivi​ vjv_jvj​ vlv_lvl​
1 0 0 0
2 0 1 1
3 1 0 1
4 1 1 1

Alice按照拓扑排序,生成逻辑门的线标签和选择比特,根据两根输入线的444个k∥pk\|pk∥p,用KDFKDFKDF计算出444个位置的掩码Kr∥MrK_r \| M_rKr​∥Mr​

我们定义二次多项式P(X)∈GF(2t)[X]P(X) \in GF(2^t)[X]P(X)∈GF(2t)[X],它经过三个点:(2,K2),(3,K3),(4,K4)(2,K_2),\, (3,K_3),\, (4,K_4)(2,K2​),(3,K3​),(4,K4​),可以用拉格朗日插值法计算出P(X)P(X)P(X)

然后计算额外的两点(5,K5),(6,K6)(5,K_5),\, (6,K_6)(5,K5​),(6,K6​),它们连同(1,K1)(1,K_1)(1,K1​)一同做拉格朗日插值,计算出另一个二次多项式Q(X)∈GF(2t)[X]Q(X) \in GF(2^t)[X]Q(X)∈GF(2t)[X]

定义输出线的标签为两个函数的y−y-y−截矩
kl0=P(0),kl1=Q(0)k_l^0 = P(0),\, k_l^1 = Q(0) kl0​=P(0),kl1​=Q(0)
注意,这里的0,1,2,3,4,5,6∈GF(2t)0,1,2,3,4,5,6 \in GF(2^t)0,1,2,3,4,5,6∈GF(2t)都是有限域元素,例如2:=x+12 := x+12:=x+1

另外,输出线的选择比特plvlp_l^{v_l}plvl​​也应当被保护起来。使用MrM_rMr​来加密:
er=plvl⊕Mr,r=1,2,3,4e_r = p_l^{v_l} \oplus M_r,\, r=1,2,3,4 er​=plvl​​⊕Mr​,r=1,2,3,4
Alice在发送混淆电路时,每一个奇逻辑门需要发送K5,K6K_5,K_6K5​,K6​以及er,r=1,2,3,4e_r,r=1,2,3,4er​,r=1,2,3,4,一共是2t+42t+42t+4比特

公共点1 公共点2 1 2 3 4
K5K_5K5​ K6K_6K6​ e1e_1e1​ e2e_2e2​ e3e_3e3​ e4e_4e4​

Bob接收到 odd gate 的混淆表:

  1. 根据已知的输入线的kivi∥pivi,kjvj∥pjvjk_i^{v_i}\|p_i^{v_i},k_j^{v_j}\|p_j^{v_j}kivi​​∥pivi​​,kjvj​​∥pjvj​​,用KDFKDFKDF计算出原始真值表的其中一个条目的掩码Kr∥MrK_r\|M_rKr​∥Mr​,条目的位置是r=2pivi+pjvj+1r=2p_i^{v_i}+p_j^{v_j}+1r=2pivi​​+pjvj​​+1。
  2. 然后根据(r,Kr),(5,K5),(6,K6)(r,K_r),(5,K_5),(6,K_6)(r,Kr​),(5,K5​),(6,K6​)插值得到多项式R(X)R(X)R(X),它可能是P(X)P(X)P(X)也可能是Q(X)Q(X)Q(X),这取决于vlv_lvl​的值。
  3. 计算klvl=R(0)k_l^{v_l} = R(0)klvl​​=R(0),解密plvl=er⊕Mrp_l^{v_l} = e_r \oplus M_rplvl​​=er​⊕Mr​,得到门输出线的klvl∥plvlk_l^{v_l}\|p_l^{v_l}klvl​​∥plvl​​,进行后续逻辑门的计算。

在 Yakoubov 的综述中,给出了一个描绘 odd gate 原理的图:

even gate

而非平凡的 2-to-1 偶数门只有异或门(XOR)和同或门(NXOR),其他的偶数门都可以化简成一根电线(全0,全1,传递其中1根线的值)。这两个门都有222个“0”和222个“1”。

以 XOR 门举例:它有222个“1”,分别位于条目的第2,32,32,3位置;第1,41,41,4位置都是000

XOR Gate viv_ivi​ vjv_jvj​ vlv_lvl​
1 0 0 0
2 0 1 1
3 1 0 1
4 1 1 0

Alice按照拓扑排序,生成逻辑门的线标签和选择比特,根据两根输入线的444个k∥pk\|pk∥p,用KDFKDFKDF计算出444个位置的掩码Kr∥MrK_r \| M_rKr​∥Mr​

我们定义线性多项式P(X)∈GF(2t)[X]P(X) \in GF(2^t)[X]P(X)∈GF(2t)[X],对应输出000,它经过两个点:(1,K1),(4,K4)(1,K_1),\,(4,K_4)(1,K1​),(4,K4​),使用拉格朗日插值法(两点式)得到。然后计算K5=P(5)K_5 = P(5)K5​=P(5),如果输出线的选择比特pl0=0p_l^0=0pl0​=0,那么存放在混淆表的第一个条目上,否则放在第二个条目上。

同时定义线性多项式Q(X)∈GF(2t)[X]Q(X) \in GF(2^t)[X]Q(X)∈GF(2t)[X],对应输出111,它经过两个点:(2,K2),(3,K3)(2,K_2),\,(3,K_3)(2,K2​),(3,K3​),使用拉格朗日插值法(两点式)得到。然后计算K5′=Q(5)K_5' = Q(5)K5′​=Q(5),如果输出线的选择比特pl1=1p_l^1=1pl1​=1,那么存放在混淆表的第二个条目上,否则放在第一个条目上。

注意,上述使用的选择比特是输出线的!并非输入线的选择比特。因为P(x)P(x)P(x)对应的是vl=0v_l=0vl​=0,Q(x)Q(x)Q(x)对应的是vl=1v_l=1vl​=1,那么P(0),Q(0)P(0),Q(0)P(0),Q(0)也分别对应两者。

定义输出线的标签为两个函数的y−y-y−截矩
kl0=P(0),kl1=Q(0)k_l^0 = P(0),\, k_l^1 = Q(0) kl0​=P(0),kl1​=Q(0)

另外,输出线的选择比特plvlp_l^{v_l}plvl​​分别使用MrM_rMr​来加密,密文是er,r=1,2,3,4e_r,r=1,2,3,4er​,r=1,2,3,4。计算电路时,为了确定使用混淆表的哪个条目,需要先解密!

Alice在发送混淆电路时,每一个偶逻辑门需要发送K5,K5′K_5,K_5'K5​,K5′​以及er,r=1,2,3,4e_r,r=1,2,3,4er​,r=1,2,3,4,一共是2t+42t+42t+4比特。对于pl0=0,pl1=1p_l^0=0,p_l^1=1pl0​=0,pl1​=1的情况,混淆表如下:

PPP的辅助点 QQQ的辅助点 1 2 3 4
K5K_5K5​ K5′K_5'K5′​ e1e_1e1​ e2e_2e2​ e3e_3e3​ e4e_4e4​

Bob接收到 even gate 的混淆表:

  1. 根据已知的输入线的kivi∥pivi,kjvj∥pjvjk_i^{v_i}\|p_i^{v_i},k_j^{v_j}\|p_j^{v_j}kivi​​∥pivi​​,kjvj​​∥pjvj​​,用KDFKDFKDF计算出原始真值表的其中一个条目的掩码Kr∥MrK_r\|M_rKr​∥Mr​,条目的位置是r=2pivi+pjvj+1r=2p_i^{v_i}+p_j^{v_j}+1r=2pivi​​+pjvj​​+1。
  2. 然后用MrM_rMr​解密出plvl=er⊕Mrp_l^{v_l} = e_r \oplus M_rplvl​​=er​⊕Mr​,
    1. 如果plvl=0p_l^{v_l}=0plvl​​=0,那么根据(r,Kr)(r,K_r)(r,Kr​)和第一个条目(5,K5)(5,K_5)(5,K5​)插值得到多项式P(X)P(X)P(X),计算出kl0=P(0)k_l^0 = P(0)kl0​=P(0),Bob得到了门输出线的kl0∥pl0k_l^0\|p_l^0kl0​∥pl0​
    2. 如果plvl=1p_l^{v_l}=1plvl​​=1,那么根据(r,Kr)(r,K_r)(r,Kr​)和第二个条目(5,K5′)(5,K_5')(5,K5′​)插值得到多项式Q(X)Q(X)Q(X),计算出kl1=Q(0)k_l^1 = Q(0)kl1​=Q(0),Bob得到了门输出线的kl1∥pl1k_l^1\|p_l^1kl1​∥pl1​
  3. Bob继续进行后续逻辑门的计算。

对于pl0=1,pl1=0p_l^0=1,p_l^1=0pl0​=1,pl1​=0的情况,过程类似,

  1. 如果plvl=0p_l^{v_l}=0plvl​​=0,那么根据(r,Kr)(r,K_r)(r,Kr​)和第一个条目(5,K5′)(5,K_5')(5,K5′​)插值得到多项式Q(X)Q(X)Q(X),计算出kl1=Q(0)k_l^1 = Q(0)kl1​=Q(0),Bob得到了门输出线的kl1∥pl1k_l^1\|p_l^1kl1​∥pl1​
  2. 如果plvl=1p_l^{v_l}=1plvl​​=1,那么根据(r,Kr)(r,K_r)(r,Kr​)和第二个条目(5,K5)(5,K_5)(5,K5​)插值得到多项式P(X)P(X)P(X),计算出kl0=P(0)k_l^0 = P(0)kl0​=P(0),Bob得到了门输出线的kl0∥pl0k_l^0\|p_l^0kl0​∥pl0​

由于plvlp_l^{v_l}plvl​​并不透露vlv_lvl​的信息,因此Bob实际上无法区分上述两种情况。Bob只根据plvlp_l^{v_l}plvl​​来挑选使用第几个条目,然后计算出的 label klvlk_l^{v_l}klvl​​就是 XOR Gate 的正确输出vlv_lvl​所对应的。

自己画的示意图:

两类门的连接

Alice在生成混淆电路时,无论哪种逻辑门,她都是知道输出线的逻辑值和标签与选择比特的关系的。因此Alice可以根据电路CCC生成混淆电路GCGCGC。

另外,Bob也是知道CCC的构造,因此他知道哪些门是 odd gate,哪些门是 even gate,从而正确地计算电路。

混淆电路的优化:PP、Free XOR、GRR相关推荐

  1. 姚氏百万富翁 混淆电路_姚氏混淆电路原理简介

    安全多方计算(Secure Multi-Party Computation ,MPC)技术主要是指,多个通信的参与者在保障通信和计算过程的正确性.隐私性.公平性等安全特征的基础上,联合进行某些功能函数 ...

  2. 安全多方计算——Yao‘s 混淆电路

    Yao's混淆电路 姚期智院士提出的首个安全多方计算方案,该方案可以计算任意可以转换成电路的函数f(x),属于安全双方计算方案.安全思想:一个人加密整个电路的输入输出,另一个人盲算,这样就导致信息不对 ...

  3. 混淆电路——混淆电路原理

    混淆电路原理 在我们前两章讲过混淆电路的基础知识--不经意传输&转换逻辑电路以后,我们就可以将这两种技术合并在一起,用作我们的混淆电路的设置. 我们还是以百万富翁问题为例,在上一章我们已经将比 ...

  4. 混淆电路简介(GC)

    混淆电路简介 混淆电路的定义 混淆电路的过程 混淆电路的定义   混淆电路是一种密码学协议,由姚期智教授在80年代针对安全计算所提出的概念.其效果就是:当几个通信方需要一起输入某些数据,然后通过同一个 ...

  5. 【密码学基础】混淆电路(Garbled Circuit)

    1 概念 混淆电路是一种密码学协议,以实现安全多方计算(MPC).场景是当多个通信方需要共同输入数据,然后通过同一个函数计算出一个结果,但是,各个通信方都不允许其他人知道自己的输入是什么.混淆电路就能 ...

  6. 【笔记】使用OrCAD对电路进行优化

    一.用仿真软件对电路进行优化的意义? 在我们设计电路的过程中,若我们有一个既定的性能要求,如果要自己去一步一步设计每个电路元器件的参数,那么工作量将是很大的.使用电路优化器之后,就可以先设置一个大概的 ...

  7. 隐私计算:使用混淆电路开源框架Obliv-C解决百万富翁难题

    "假设有两个百万富翁,他们都想知道谁更富有,但他们都想保护好自己的隐私,谁都不愿意让对方或者任何第三方知道自己真正拥有多少财富.那么如何在保护好双方隐私的情况下,计算出谁更有钱呢?" ...

  8. MPC系列-混淆电路

    混淆电路:混淆电路是一种密码学协议,完成参与方能在互相不知晓对方数据的情况下计算某一能 被逻辑电路表示的函数.通过对电路进行加密来掩盖电路的输入和电路的结构,以此来实现对各个参与者的隐私信息的保密,再 ...

  9. 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆 Obfuscate | 预检 | 混淆文件编写 | 混淆前后对比 )

    文章目录 一.开启 ProGuard 混淆 二.混淆文件编写 三.混淆前后对比 四.build.gradle 完整配置文件 五.参考资料 一.开启 ProGuard 混淆 在 build.gradle ...

  10. android 万能混淆文件,Android ProGuard 代码压缩混淆与打包优化

    为什么要启动ProGuard(所有试验都在AS 环境) 代码压缩通过 ProGuard 提供,ProGuard 会检测和移除封装应用中未使用的类.字段.方法和属性, 包括自带代码库中的未使用项(这使其 ...

最新文章

  1. windows程序移植linux
  2. Mysql中的联合索引、前缀索引、覆盖索引
  3. Java虚拟机知识汇总,有这些还怕面试被问到?
  4. Java之Set接口
  5. JavaScript 基础(十六):Navigator对象
  6. [洛谷P2073] 送花
  7. python3--迭代器
  8. 各种内部排序算法,C#实现
  9. 使用mat工具分析对比dump文件
  10. cad卸载工具_一辈子都不会卸载的百款AutoCAD插件,款款精品打包带走!
  11. [游戏技术]暗黑破坏神2重制版 DIABLOⅡ RESURRECTED
  12. ccna考试之导入题库———pdf转vce格式转换
  13. Android类加载器
  14. 开发人员的十种必备工具
  15. 用VBA实现批量数据填充到word模板
  16. 考研 数学1 2 3 区别
  17. iOS 如何让APP 删除后不接受 APNS 推送消息
  18. 关于移动视频直播技术,关键干货都在这里了(三)编码和封装
  19. T20,寻寻觅觅冷冷清清凄凄惨惨切切。。。
  20. 神经风格迁移综述论文分享(neural style transfer review)

热门文章

  1. while在c语言中的作用,while的用法_C语言中while的用法
  2. c语言怎么输入若干整数,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
  3. Linux操作命令分类详解 - 压缩备份(四)
  4. 【lol版】2022年最新Java学习路线图(来自动力节点)
  5. 【数据分析】面经(搬运)
  6. 编译时的chenk api
  7. Android 自定义View实现拖动滑块完成验证
  8. 论文阅读笔记——野外和非侵入性遗传方法评估棕熊种群规模
  9. Butterworth低通滤波器 Matlab实现
  10. Datawhale打卡第2次