Garbled Circuits介绍 - 2 基础知识

本文接上一章节,在这一章节,我们将介绍安全多方计算的基本概念和一些基础知识,文章可能会有一些小错误。前一篇文章链接如下:

Garbled Circuits介绍 - 1 引言

2 基础知识

在这一章节,我们将介绍安全多方计算的基本概念。首先,我们将说明进行安全多方计算的基本特性,接下来将介绍一般敌手模型;然后,我们将说明用在MPC之中的电路的概念,并介绍一些密码学原语;我们最后将会介绍一下不经意传输协议(OT协议)、同态加密技术(HE)和GMW协议的内容。

2.1 安全多方计算的基本特性

为了正式声明和证明MPC协议的安全性,需要一些通用的安全性特性[5]。Lindell等人在[5]中对这些性质的最核心描述如下:

1. 正确性(correctness)。在协议的执行过程中,任何愿意共享信息或者偏离指令的敌手共谋的适当的子集都不能强迫诚实参与方输出一个不正确的结果。正确性的目标由两个方面:一个方面是诚实方保证计算输出的结果是正确的(“健壮”的协议),或者他们如果发现错误那么就终止协议的执行(带有“终止”功能的MPC协议)。

2. 保密性(privacy)。在协议执行期间,不能从发送的消息中推断出有关各方持有的私有数据的信息。关于私有数据惟一可以推断的信息是,仅从函数的输出中就可以推断出的任何信息。即除了可以从输出本身知道的东西之外,任何参与者都不能从其他参与者的输入知道更多的东西。

3. 输入的独立性(independence of inputs)。腐败参与方的输入与诚实参与方的输入,在概率分布上是独立的。这就剔除了腐败参与方针对诚实参与方某个特定输入,成功实施攻击的可能性。即,协议可能不允许任何一方根据其他方的输入选择自己的输入。此属性与隐私不同,因为根据另一方的未知输入选择自己的输入是可能的。

4. 确保获得结果(guaranteed output delivery)。在协议结束时,无论怎么腐败参与方阻止交付结果,诚实的参与方都应该能收到他们的输出。即腐败参与方无法干扰最后结果的分发。

5. 公平性(fairness)。如果各方都能收到自己的输出,那么无论参与方是否被腐败都能得到自己的输出。

然而非常遗憾的是,对于大多数函数,无法为之设计一个同时满足这五个安全特性的实际协议。为使定义获得最大的通用性, [22,23]给出的安全定义只要求协议满足保密性、正确性、输入分布的独立性。

2.2 敌手模型

针对不同能力的敌手,[17]对密码协议的安全性进行了形式化证明。

2.2.1 半城实敌手模型

半诚实敌手(Semi-honest Adversaries)模型(也被称为被动敌手模型,或者诚实且好奇敌手模型)是MPC标准的对抗模型。在这种情况下,各方通常按照协议行事,但可能试图从协议文本[18]中推断另一方的输入信息。如果一个协议对半诚实的敌手是安全的,那么它不允许参与方从协议中学习任何额外的信息。

2.2.2 隐蔽敌手模型

隐蔽敌手(Covert Adversaries)模型构成了这样一种类型的敌手:他们被允许偏离协议,但必须在干坏事的时候避免被抓住[17]。该模型是2007年[19]提出的安全性介于传统半城实和恶意模型之间的新模型(详细可以参考[20])。该模型的基本思想是,允许敌手通过攻击获得额外信息,同时要求敌手的这种攻击行为被高概率的检测出来。[19]中给出了三个版本的隐蔽敌手安全多方计算模型,在安全性最高的版本中,敌手的攻击一旦被检测到,则得不到任何信息[21]。如果一个协议对隐蔽敌手模型是安全的,则它允许捕获那些有一定概率偏离协议的敌手。

2.2.3 恶意敌手模型

恶意敌手(Malicious Adversaries)模型(也称为主动敌手模型)是最强的敌手类型,它们可以任意地偏离协议,以便提取其他参与方的私有输入或更改计算结果[17]。如果一个协议对恶意的敌手是安全的,那么当一个腐败的一方偏离协议时,他立刻就会被抓住。

在整个论文中,我们主要针对半诚实敌手模型进行安全防范,原因如下[18]:

1. 在现实世界中,有许多情况下,将各个参与方建模为半诚实的敌手是合适的:

a) 在合法信任的情况下,但有法律需要防止他们泄露信息,或防止未来被入侵。

b) MPC使用的软件很难在不被发现的情况下被参与者篡改,这可能是由于软件认证的使用或内部控制的存在(例如,当参与方是政府机构或大型公司时)。

2. 针对半诚实敌手模型的安全协议是构建针对更强大敌手的安全协议的重要一步。有一些通用的方法来改变它们,以达到针对隐蔽敌手模型或恶意敌手模型的安全[24,25]。

2.3 腐败模型

除了上述对抗模型外,还存在静态腐败模型(Static corruption model)和自适应腐败模型(Adaptive corruption model)。

静态腐败模型:这个模型意味着如果一个参与方在一开始是诚实的,他总是保持诚实;然而,如果一个参与方一开始就腐败了,那么他始终是腐败的。

自适应腐败模型:自适应腐败模型不包含固定数量的腐败方,而是在计算过程中腐败方的数量可能会增加。然而,如果一方腐败,它就保持不变[5]。因此,腐败参与方的数量可能永远不会减少。

2.4 电路的基本概念

为了实现通用的MPC协议,首先必须将函数编写为通用构建块的组合,即,它们必须用电路(circuits)来表示。通常构建块的类型数量是有限的。因此,通过揭露怎样计算每个构建块,可以允许一个通用的MPC方案计算一个不受限的函数。MPC协议中通常使用的标准电路表示是布尔电路(Boolean Circuits)和算术电路(Arithmetic Circuits)[17]。

2.4.1 布尔电路(Boolean Circuits)

在工程和计算机科学中,函数被经典地表示为布尔电路[17],布尔电路基本上由逻辑门(logic gates)和连接它们的导线(wires)组成[26]。图1是一个布尔电路的例子,导线为 a,b,c,d,e,f,g,h,k,o ,逻辑门为 g1,g2,g3,g4,g5,g6 。

图1:布尔电路例子[14] 

一根导线正好是1个比特位,它可能有两个真值(0和1, TRUE 和 FALSE等)中的一个。逻辑门或布尔门通常采用1或2根导线作为输入,输出1根导线。在图1中,左边是输入,右边是输出。一根导线只能为一个门的输出,但它可以是多个输入。对于 d(d>0) 个输入的门 G_d ,它表示一个从 d比特的输入到1比特的输出的布尔函数映射。即 G_d:(input_1,input_2,...,input_n)\rightarrow (output) \in \{0,1\}

在图1中, g1 表示一个门,表示一个 OR 门 d\rightarrow (a\vee b) , g_4 表示一个 XOR 门 h\leftarrow (d \oplus e) 。如果在导线上有空心圈,则表示在空心全之后的真值取反。例如, g2 是一个输出导线含有空心圈的门,这就意味着它输出取反,因此我们称它为 NAND 门 (e\leftarrow (a\wedge b)') 。 g3 是一个缓冲门,缓冲门的输出和输入一样,但是因为其输出导线有一个空心圈,因此称它为 NOT 门 (f=c') 。 g6 是另一种形式的 NAND 门 o\leftarrow h'\vee k' ,因为 h'\vee k'=(h\wedge k)' 。并且除了 NAND 门,还存在 NOR 门,它是 OR 门在输出导线上含有一个空心圈。

门的真值表显示了其可能的输入和可能的输出之间的关系。一个门的真值表有 2^k行,其中 k 是其输入导线的数量。实际上,2输入导线总共有 2^4 个不同的门,即每种不同的真值取值都可以叫做一种不同的门,如表1所示。但是,这16个真值表对应的门有一些是平凡的,如输出只依赖于一个输入的和输出不依赖于任何一个输入的门,这些门可以被更高效的方式代替,如导线、 NOT 门等。而那些非平凡的门则可以被分为偶数门和奇数门两类[27]。其中偶数门是真值表有2个 FALSE 输出和2个 TRUE 输出的2输入门;奇数门是真值表有3个 FALSE 输出和1个 TRUE 输出或者1个 FALSE 输出和3个 TRUE 输出的2输入门。因此,只有2个非平凡的偶数门,即 XOR 门(异或门)和 XNOR 门(同或门),8个非平凡的奇数门,包括 OR , AND , NOR (或非门), NAND (与非门)等。

 表1:2输入导线门的真值表

布尔电路的大小为电路中所含的门的数量;深度为从任何输入到任何输出的最长路径上的门数;拓扑结构意味着其门之间的连接,布尔电路可以由其拓扑结构和门来唯一地定义[28]。

布尔电路的拓扑有序是表示电路中的门按照 (G_1,G_2,...,G_n) 的顺序排列,对于第 i 个门, G_i 不会从 G_j 中成功获得输出,其中 j>i [17]。直观的来讲,为了计算一个门,我们需要知道它的所有输入线,我们可以通过拓扑有序来保证它们是可计算的。通过计算拓扑有序中一个接一个的门,我们可以保证整个布尔电路是可计算的。一个给定的布尔电路的拓扑有序序列是不唯一的。

一组门 (G_1,G_2,...,G_n) 是图灵完备的,当且仅当任何时间复杂度为概率多项式的算法可以由这些门的组合表示[29]。例如 (AND,XOR) 和 (NAND) ,从这组门构建 NAND 门是查看这组门是否图灵完成的简单方法。

电路中门数的减少也意味着MPC协议在计算复杂性和通信复杂性方面的总成本的降低。因此产生了各种各样的电路优化技术,一些电路优化技术旨在以增加偶数门为代价来减少奇门数。

2.4.2 算术电路(Arithmetic Circuits)

函数的更紧凑表示是算术电路[17],不像布尔电路的导线选择空间是 Z_2 ,算术电路导线的值从中选择 Z_{m\geqslant 2} 。门操作为模加法或模乘法,如图2表示了一个简单的算术电路。

可以将任何布尔电路表示为 Z_2 上的算术电路,但是,如果 Z_m 的模 m 足够大,那么得到的函数的算术电路表示可能比其布尔电路表示的大小要小得多,因为对于每个整数的加法或乘法来说,一次操作就足够了[17]。

图2:一个算术电路的例子[17]

算术电路可以模拟正整数和负整数的计算,因为可以将它们映射到的元素中, Z_m: Z\rightarrow Z_m ,x\rightarrow x\ mod\ m [17]。

2.5 密码学基础

在这一小节,我们将介绍对称加密、公钥加密、密码学哈希函数、伪随机数函数和消息认证码等密码学基础概念。在这一章节,我们只介绍一下这些函数的简要总结,若需了解他们的细节,可自行阅读相关书籍或者文献。

2.5.1 对称加密(Symmetric Encryption)

对称加密方案是使用相同的密钥k对明文加密和对密文解密[30]。一个较为著名的方案就是AES对称加密方案[30]。我们使用 c\leftarrow E_k(m) 表示明文消息 m 使用密钥 k 加密后得到密文消息 c ,解密过程用 m\leftarrow D_k(c) 或者E 的逆表示,即 m\leftarrow E_{k}^{-1}(c) 。

2.5.2 公钥加密(Public Key Encryption)

公钥加密方案是使用不同的密钥加解密的。公钥加密方案中的公钥是所有人都可以获得的,并且可用用它来加密,而私钥是只能自己知道的用来解密的[31]。任何用户都可以使用接收方的公钥加密消息,但是只能使用接收方的私钥解密产生的密文。使用 c \leftarrow E_{pk_i}(m) 表示一个明文消息 m被第 i 个人的公钥 pk_i 加密并且产生密文 c 。解密使用第 i 个人的私钥 sk_i ,用 m\leftarrow D_{sk_i}(c) 或者 m\leftarrow E_{sk_i}^{-1}(c) 表示。比较出名的公钥加密系统是RSA[31] 和ElGamal[32] 。

2.5.3 密码学哈希函数(Cryptographic Hash Function)

密码学哈希函数 H(m) 表示将任意长度大小的消息 m 映射到一个固定大小 l 为比特长度的字符串 c 上,用 c\leftarrow H(m) [33]。一般我们在信息安全的论文中提到的哈希函数都是指密码学哈希函数。

哈希函数最好是在随机预言模型(RandomOracle Model)中建模[34]。一个随机预言是一个理论上的黑盒,它表示从输出域中选择一个真正的随机数来响应每个唯一的查询。它记录它对唯一查询的响应,以便它可以在每次重复查询时以相同的方式响应查询。较为著名的密码学哈希函数方案是SHA256[35]。

2.5.4 伪随机数函数(Pseudo-Random Function)

一个伪随机数函数(PRF)是一个能够用来产生伪随机数的函数,例如,它能够建模为随机预言。它使用 PRF(x) 来表示,输入为 x 。它可以被扩展为包含私钥 k 的 PRF_k(x) [17]。 PRF 的实例化可以用分组密码实现,如AES或者一个哈希函数,如SHA256。如果重复使用相同密钥 k 的 PRF ,则AES实例化将更有效,因为它的密钥调度只需要运行一次[17]。

2.5.5 消息认证码(Message Authentication Code)

一个消息认证码(MAC)是一个固定大小的用来认证一个消息的数据。它可以用 MAC_k(m) 来表示,它的含义是一个输入消息 m 需要被认证,并且它的私钥为 k [17]。消息认证码的值为消息的数据完整性和真实性提供了保护,因为它允许拥有密钥 k 的人验证消息的任何改变。

2.6 秘密共享(Secret Sharing)

秘密共享是将秘密共享值分发给一个组内各方,每方拥有秘密共享值的一部分的方法[36]。只有满足一定数量的含有秘密的各方共同构建才能够恢复秘密共享值,因为各方拥有的单个共享是无意义的。到目前为止,已经提出了各种秘密共享方案。在本文中,我们将只介绍其中的一些。

2.6.1 布尔共享

布尔共享(也叫做 XOR 共享)是秘密共享的一种,它表示一个 l 比特的值 x 被 m 方共享, 第 i 方的共享值是 l 比特长度的 x_i , m 方按位异或后的值就是 x ,即 x = x_1 \oplus x_2 \oplus ... \oplus x_n [37]。在布尔共享中,各方的数量没有限制,但是如果某方保持他的共享值参与恢复的过程,则其余的各方无法正确恢复原来的值。

2.6.2 算术共享

算术共享与布尔共享类似,各方的数量没有限制,但是如果某方保持他的共享值参与恢复的过程,则其余的各方无法正确恢复原来的值[37]。它也是一个 l 比特的值 x 被 m 方共享,第i方的共享值是 l 比特长度的 x_i ,并且将所有 m 方的共享值在模数为n(2\leqslant n\leqslant 2^l)的情况下相加时,最后的结果为 x ,即 x =x_1 + x_2 + ... + x_m\ mod \ n 。

2.6.3 Yao共享

Yao共享是一种秘密共享类型,其中1比特由2方共享[37]。为了共享 a 比特的 b ,第一方 P_1 选择2个 l 比特的随机字符串 B_0 和 B_1 ,第二方 P_2 在不知道 b 的情况下持有 B_b 。 P_1 不知道2个字符串里的哪个被 P_2 持有, P_2 也不知道 P_1 选择的另一个字符串是什么。只有一起合作,他们才能计算出 b 。尽管对于共享1比特的字符串,Yao共享看起来不是很高效,但是Yao共享对于2PC有着一定的优势。

2.6.4 Shamir秘密共享

Shamir的秘密共享是Adi Shamir提出的一种有效的秘密共享方案[36,38]。他是由 n 个用户共享一个秘密值 D 。方案允许任意预先定义的 (k+1 )\leqslant n 或者更多的用户去重构秘密。但是, k 个或更少的用户无法恢复关于 D 的信息。这个方案也可以称为 (k+1,n) 门限秘密共享方案,其中 k+1 是门限, n 是秘密共享的用户的数量。

所有用户在二维平面上都有一个不同的点 ((x_1,y_1),...,(x_n,y_n)) 。所有的点都必须选在 k 次多项式上。因此,秘密共享中的值可以通过任意 k+1 个共享值使用拉格朗日插值法来恢复,秘密值是多项式在 x=0 时 y的取值。

2.7 不经意传输

一个 1-out-of-m 的不经意传输(Oblivious Transfer,OT)协议时一个两方的非对称协议(各方在协议中扮演不同的角色),其中一方为发送方,另一方为接收方[39]。发送方由一个值的集合 \{x_1,x_2,...,x_n\} ,接收方拥有一个索引 i 。在协议结束的时候,接收方只知道发送方发送的值中的一个,就是 x_i ,而发送方不知道任何关于索引 i 的信息。一个高效的 1-out-of-m OT协议可以在[40]中找到。

OT的高计算复杂度是效率低下的主要原因。为了降低花销,一些优化被提出,如Extended OT[42]。也存在用于多方的OT协议,称为多方不经意传输。多方不经意传输是某方拥有 \{x_1,x_2,...,x_n\} ,然后多方秘密共享的选择索引 i 。在协议结束的时候,各方知道值 x_i 而不是整个集合。持有初始值的一方称为发送方,而其他方称为接收方。

2.8 同态加密

同态加密(Homomorphic Encryption,HE)方案被用来算术电路的安全计算,因为HE允许在密文上进行加法和乘法的计算[17]。一个加法同态加密方案值只被允许在已加密的数据上做无限次加法操作,而乘法同态加密则只被允许做乘法操作。含有加法和乘法的同态加密方案称为全同态加密(Fully Homomorphic Encryption, FHE)。不幸的是,无论付出多少努力来改善其性能,因为当前的FHE方案巨大的规模和计算成本,其在实际应用中效率低下。主要的问题是,FHE方案必须允许代数运算,同时提供强大的安全假设,这使得成本大幅增加。

2.9 GMW协议

一个常用的MPC方案是GMW(Goldreich-Micali-Wigderson)协议,它使用布尔共享,并且在[3]中被提出。针对半诚实的敌手,提出了带有 AND 门和 XOR 门的布尔电路的MPC。 XOR 门能够在本地计算并且通信是免费的[39],如为了计算 c = a \oplus b ,各方i只需要使用他的共享 c_i = a_i \oplus b_i 来获得他的输出共享值 c_i 。然而,计算 AND 门,双方需要使用 1-out-of-4 OT,这就需要通信。在两方的场景下,为了计算 a\wedge b 的输出共享, P_1 构造 P_1 和 P_2 输入的计算表,双方参与 1-out-of-4 OT,其中 P_2 的输入作为选择索引。为了将协议扩展到 m 方,需要运行 OT_m^2 。也可以将它看作一个多方参与的 1-out-of-4 OT协议,选择索引是 a 和 b [39]。

参考文献(接上一篇)

[17] T. Schneider. Engineering Secure Two-Party Computation Protocols – Advances in Design, Optimization, and Applications of Efficient Secure Function Evaluation. PhD thesis, Ruhr-University Bochum, Germany, Information Sciences, 2012.

[18] Y. Huang, D. Evans, J. Katz, and L. Malka. Faster secure two-party computation using garbled circuits. In Proceedings of the 20th USENIX Conference on Security, SEC’11, pages 35–35, 2011.

[19] Aumann Y, Lindell Y. Security Against Covert Adversaries: Efficient Protocols for Realistic Adversaries, volume 4392 of Lecture Notes in Computer Science. Springer Berlin / Heidelberg, 137–156, 2007

[20] Y. Aumann, Y. Lindell. Security Against Covert Adversaries: Efficient Protocols for Realistic Adversaries. Journal of Cryptology, 23(2): 281-343, 2010.

[21] 曾兵.一个抗隐蔽敌手的n选t不经意传输框架[D].湖北:华中科技大学,2012.

[22] O. Goldreich. Foundations of Cryptography, Volume II: Basic Applications. Cambridge University Press, 2004.

[23] Canetti R. Security and Composition of Multiparty Cryptographic Protocols. Journal of Cryptology, 13(1):143 – 202, 2000.

[24] M. Kiraz. Secure and Fair Two-Party Computation. PhD thesis, Technische Universiteit Eindhoven, 2008.

[25] M. Kiraz and B. Schoenmakers. A protocol issue for the malicious case of yao’s garbled circuit construction. In In Proceedings of 27th Symposium on Information Theory in the Benelux, 2006.

[26] A. Kumar. Fundamentals of Digital Circuits. Prentice-Hall Of India Pvt. Limited, ISBN 9788120317451, 2003.

[27] B. Pinkas, T. Schneider, N. Smart, and S. Williams. Secure two-party computation is practical. In Advances in Cryptology – ASIACRYPT 2009: 15th International Conference on the Theory and Application of Cryptology and Information Security, Tokyo, Japan, December 6-10, 2009. Proceedings, pages 250–267, 2009.

[28] H. Vollmer. Introduction to Circuit Complexity: A Uniform Approach. ISBN 3540643109,1999.

[29] M. Sipser. Introduction to the Theory of Computation. International Thomson Publishing, 1st edition, ISBN 053494728X, 1996.

[30] J. Daemen and V. Rijmen. The Design of Rijndael: AES - The Advanced Encryption Standard. DBLP, 2002.

[31] R. Rivest, A. Shamir, and L. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Commun. ACM, 21(2):120–126, February 1978.

[32] T. ElGamal. A public key cryptosystem and a signature scheme based on discrete logarithms. In Proceedings of CRYPTO 84 on Advances in Cryptology, pages 10–18, 1985.

[33] P. Rogaway and T. Shrimpton. Cryptographic hash-function basics: Definitions, implications, and separations for preimage resistance, second-preimage resistance, and collision resistance. In Fast Software Encryption: 11th International Workshop, FSE 2004, Delhi, India, February 5-7, 2004. Revised Papers, pages 371–388, 2004.

[34] N. Koblitz and A. Menezes. The random oracle model: a twenty-year retrospective. Designs, Codes and Cryptography, 77(2):587–610, 2015.

[35] H. Handschuh. Sha-0, sha-1, sha-2 (secure hash algorithm). In Encyclopedia ofCryptography and Security, pages 1190–1193, 2011.

[36] A. Shamir. How to share a secret. Commun. ACM, 22(11):612–613, November 1979.

[37] D Demmler, T Schneider, and M Zohner. ABY – a framework for efficient mixedprotocol secure two-party computation. In 22. Annual Network and Distributed System Security Symposium (NDSS’15). The Internet Society, February 8-11, 2015.

[38] R. Naskar and I. Sengupta. Secret sharing and proactive renewal of shares in hierarchical groups. CoRR, abs/1006.1192, 2010.

[39] P. Pullonen. Private function evaluation for mpc. 2015.


如果有任何问题可以与我联系。

个人主页:https://www.mrccc.club/

微信公众号搜索:CHEN CONGCONG

微信小程序搜索:CHEN CONGCONG

CHEN CONGCONG微信公众号

CHEN CONGCONG微信小程序

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值