ABY – A Framework for Efficient Mixed-Protocol Secure Two-Party Computation code here
Recorded by Yusheng Zhao(yszhao0717@gmail.com) 边翻译边理解😀;一些相关文献罗列的工作没有细看(related work等)
未完待续…
ABY混合协议_学习笔记Ⅰ Introduction A. Overview and Our ContributionsABY框架ABY灵活的设计有效的实例化和改进协议设计高效表现的若干点feedback应用(Application)B. 相关工作mixed protocolsAutomated Mixed-Protocol GenerationOther Secure Computation Languages and CompilersⅡ PreliminariesA. Two-Party SettingB. 对抗半诚实攻击的安全机制C. 符号说明D. Oblivious TransferⅢ Share TypesA. Arithmetic Sharing1)Sharing Semantics2)如何运算?3)SOTA4)通过同态加密生成算术乘法三元组5)通过OT生成算术乘法三元组B. Boolean Sharing1)Sharing Semantics2)如何进行运算?3)SOTAC. Yao Sharing1)Sharing Semantics2)如何运算?Ⅳ Sharing ConversionsA. Yao to Boolean Sharing (Y2B)B. Boolean to Yao Sharing (B2Y)C. Arithmetic to Yao Sharing (A2Y)D. Arithmetic to Boolean Sharing (A2B)E. Boolean to Arithmetic Sharing (B2A)F. Yao to Arithmetic Sharing (Y2A)Ⅴ 实现(Implementation)和benchmarkⅥ 应用Ⅶ 结论以及展望(feature work)
多方安全计算,顾名思义即在多方互相不信任情形下(隐瞒自身输入)共同“合作”计算函数输出。ABY混合协议则是基于Arithmetic Sharing(A)、Boolean Sharing(B)、Yao’s garbled circuits(Y)构建的两方安全计算(Two-Party Computation)框架。该协议设计使用了基于oblivious transfer(OT)的乘法运算来取代基于同态加密的乘法运算,从而获得更显著高效的性能。
自多方安全计算滥觞以来(八十年代),各种安全计算方案层出不穷,每种方案都有其特别的功能、适用场景。对于去选择、改造一种协议以满足自身任务需求和应用场景是一件非常冗繁的事情。To overcome the dependence on an efficient function representation and to improve efficiency:于是,一些混合协议被提出,通常都是基于同态加密和姚氏混淆电路,这类协议设计的思路主要就是基于同态加密来设计算术电路运算,基于姚氏混淆电路设计布尔电路运算。这些设计表明使用“混合协议”的performance显然要比单一协议要好。局限性:同态加密的性能随着安全参数(security parameter)增长变差,而且存在着同态转换成本(conversion costs),姚氏混淆电路也有昂贵的计算成本、存储消耗等。所以此类混合协议的最终性能仅仅比单一协议好一丢丢。
ABY(for Arithmetic, Boolean, and Yao sharing)混合协议,相比之下,拥有更高效的表现。通过以下三个隐私保护应用来展示ABY的高效及其设计灵活性:模幂运算(modular exponentiation)、私有集合交集(private set intersection)、生物特征匹配(biometric matching)
私有集合交集(private set intersection, PSI)允许持有集合的两方比较这些集合的加密版本以计算交集。在这种情况下,除了交叉点中的元素之外,双方都没有向对方透露任何信息。
本次学习目的就是深入了解ABY框架,将其作为底层加密服务,为上层参数安全提供线性计算密态化。
outline和强调的一些协议设计的novel点。
“从底层安全协议中抽象出来的虚拟机”——类比于JVM:abstracted from the underlying system architecture
如上图所示,对于Arithmetic sharings(§Ⅲ-A)通过Paillier with packing或DGK with full decryption生成乘法三元组;对于Boolean sharings(§Ⅲ-B)使用基于扩展OT的数据选择器(multiplexer);对于Yao sharings使用fixed-key AES进行混淆电路设计。
用novel的方式combine了若干种现存的sota方法,第Ⅲ节进行详细介绍。
可用于实现几个保护隐私的应用程序以及提高相关性能。具体地说,可以做模幂运算(combine all three sharings and show the corresponding functionality description (§Ⅵ-A))、做私有集合交集(combining for the first time Yao with Boolean sharing(§Ⅵ-B))、做生物特征匹配(combining Arithmetic with Boolean and Yao sharing, respectively(§Ⅵ-C)),这部分强调了做生物特征匹配任务时其总运行时间要比单一协议快13倍。
涉及文献较多,与ABY自身关系不大;就粗略的看了下:)
分成三个部分分别阐述:混合协议(mixed protocols)、混合协议自动生成(automated mixed-protocol generation)、其他安全计算语言和编译器(other secure computation languages and compilers)
一些工作的混合协议设计:结合两个安全计算协议的优点。文献罗列如下
To the best of our knowledge, the first work that combined Yao’s garbled circuits and homomorphic encryption was [14] who used this technique to evaluate branching programs with applications in remote diagnostics. The framework of [46], implemented in the TASTY compiler [35], combines additively homomorphic encryption with Yao’s garbled circuits protocol and was used for applications such as face-recognition. The L1 language [72] is an intermediate language for the specification of mixed-protocols that are compiled into Java programs. Sharemind [13] uses a high-level language called SecreC and was recently extended to mixed-protocols in [11], [12]. Mixed-protocols have been used for several privacy-preserving applications, such as medical diagnostics [3], fingerprint recognition [39], iris- and fingercode authentication [10], ridge-regression [60], computation on non-integers and Hidden Markov Models [31], and matrix factorization [59]. A system for interpolating between somewhat homomorphic encryption and fully homomorphic encryption was presented in [20]. A system for switching between somewhat homomorphic encryption and fully homomorphic encryption was presented and implemented in [51].
我们提供一种改进的框架,该框架允许混合多种(多余2种)协议,昂贵的部分转变成一个设置阶段(setup phase),甚至不需要使用同态加密操作(上文已经说明了代价昂贵)。与现有的混合协议框架相比,ABY设计提供了更大的灵活性、更高效的乘法和更高效的不同协议之间的转换。
在F. Kerschbaum,"Automatic protocol selection in secure two-party computations",ACNS’14类似的工作,研究者表达的计算序列的基本运算的函数,然后分配给不同的安全计算协议(同态加密或混淆电路)。提出了两种算法来最小化混合协议的运行时间:其一是基于整数规划(integer programming)以找到一个最优解;另一个则是基于启发式(heuristic)。
第一个实现姚氏混淆电路的协议:Fairplay,允许开发人员使用高级语言称为安全函数定义语言(SFDL)来计算一个指定的函数;及其框架的扩展FairplayMP。相关文献的挖掘介绍。
以下给出安全定义以及setting;介绍论文种使用的符号;概要下oblivious transfer(OT)——the main block
ABY设定为两方安全计算协议,这样的协议可以用于客户机-服务器应用程序,双方提供私人的输入(例如,互联网服务)。协议亦可以服务于多方安全计算发应用(任意数量的input players提供保密的输入然后任意数量的output players接受安全计算的输出)当中,例如拍卖(auctions)、问卷( surveys)。为此,两个玩家:各自在两个计算服务器(假定不勾结)输入secret-shares。然后,两个计算服务器在shares上运行安全计算协议(两个玩家都无法获得中间讯息)。最后,他们把shares的输出发送给那些可以重构输出的output players。
由于我们的ABY框架中的所有协议都在共享上运行,因此这也允许reactive computations,其中两个计算服务器在多个执行中保留安全状态信息(例如,对于安全的数据库系统)。
我们使用被动的半诚实(semi-honest)对抗模型,我们假设一个计算有限的对抗(adversary),他试图从协议执行过程中看到的消息中学习其他信息。与更强的恶意(主动)对手相反,半诚实(semi-honest)对抗不允许偏离协议。尽管比恶意模型更具限制性,但半诚实模型具有许多应用程序,例如保护行政人员或政府机构的被动内部攻击,或者可以信任被动行为不良的当事方。半诚实模型可以开发高效的安全计算协议,因此被广泛用于实现隐私保护应用程序。我们的工作集中于在半诚实(semi-honest)对抗模型中的有效混合协议安全两方计算的设计和实施。
安全计算协议的两方:,即
位或(bitwise XOR)运算:;位与(bitwise AND)运算:
操作列表中的第个操作:;如果是一个比特串,那指的是串中第个比特,是其中least-significant的一个比特(通常是置换比特)。
对称安全参数(symmetric security parameter): 通常
公钥安全参数(public-key security parameter): 通常
统计安全参数(statistical security parameter):
公钥加密算法中,每一方,其加解密过程为:
共享变量(shared variable)记作,上标 ,表明哪种share类型。具体ABY类型和运算的语义在第Ⅲ节中说明。
私有共享(individual share)对于每一方记作
定义共享运算符(sharing operator): ,向另一方共享其输入值
定义重建运算符(reconstruction operator): ,获得的值将其作为输出
当两方都获得了的值,我们就写入
和之间的转换,其中且,
我们在工作中使用的主要构件就是Oblivious Transfer(OT)。我们使用1-out-of-2 OT
,其中发送者输入两个l-bit
字符串,接收者输入1比特,由此获得,接受者得到不到的讯息,而发送者不知道接收者输入的的讯息。
Precomputing oblivious transfer,CRYPTO’95使用OT pre-computations来最大优化online phase的表现。OT协议需要昂贵的公钥加密的开支,OT扩展(OT extension)允许仅使用对称加密原语和恒量rounds(轮数)来扩展一些基础OT。以下简单介绍一些OT变形如相关OT(C-OT)以及随机OT(R-OT),这些变形OT被用于提高计算效率。
C-OT:sender输入相关函数,随机获得一个,计算相关,附加限制,是相关的
R-OT:sender没有输入,随机获得
以上随机获得的和都是一个相关的鲁棒的单向函数(a correlation robust one-way function)的输出
通常被描述为哈希/杂凑函数
这篇文章用符号标记来表示在长度为的字符串上工作的个平行工作的;在OT扩展中,、与三者之间的通信视为主要的性能瓶颈(bottleneck),分别是以及比特。、与三者的计算是每一方(两者之一)对称加密原语的 evaluations。
分别介绍A、B、Y分享、运算方式以及各自sota等的语义;比较重要的内容。
算术共享中, 比特长度的值 在环可以表示为环中某两元素之和。以下详细说明sharing以及operation的语义,最后说明如何通过同态加密和OT来生成算术乘法三元组。
算术共享基于两方各自的私有共享。
每个算术电路都是一系列(sequence)加法门和乘法门的组合。
ADD:,对于每一方,计算各自的
MUL:,算术电路上的乘法运算基于pre-compute,对于任一方
Arithmetic multiplication triple
)——(以下4)和5)中给出pre-compute算术乘法三元组的协议\生成算法【基于同态加密或OT】)
give an overview over related work on secure computation based on Arithmetic sharing:)not necessary😊
在设置阶段(setup phase)由Protocol 1描述的同态加密方案构造算术乘法三元组(Arithmetic multiplication triple
),AMTs形如。涉及到同态加密算法包括Paillier、DGK
Paillier加密方案
Damgard-Geisler-Krøigaard (DGK)加密方案
with full decryption using the Pohlig-Hellman algorithm
复杂度分析:为生成一个比特大小的MT,两方和交换3片密文(ciphertext),对于Paillier每片长度为比特,最后生成的总通信量;对于DGK每片长度为比特,最后生成的总通信量。
当使用Paillier加密方案时,使用一种打包(packing)技术进行优化,将多片消息打包成一片密文——以减少加密量并减少通信量至比特每MT。
根据OT扩展生成算术乘法三元。protocol(来自Two party RSA key generation)它允许使用OT有效计算两个秘密值(secret-shared values)的乘积。通过使用基于长度字符串的,即可以生成比特的MT。方法描述如下:(为生成)
对于两方可以轻而易举计算第一项和第四项,私有共享由各方随机生成且;而对于第三项和第四项:
以计算为例,每一方都对该式子缺乏相当的信息,因为环中运算的封闭性,我们可以计算每一方的,两方分别得到( )让两方参与进,不妨让为sender而为receiver,是并行的,对于第个进行的
因为对称性,同理可计算.
布尔分享使用基于XOR的秘密共享方案共享变量。我们使用Goldreich-Micaliwigderson(GMW)协议评估表示为布尔电路的函数的功能
布尔分享使用基于XOR的秘密共享方案(XOR-based secret sharing scheme)。以 比特长的值为例,每个运算都并行的允许 次。
布尔电路(Boolean Circuits)由异或(XOR
)门和与(AND
)门共同组成。
XOR:,对于每一方,计算各自的
AND:,与运算稍微复杂些,对于每一方:
pre-compute:(使用)计算Boolean multiplication triple
得到私有共享
MUX:对于数据选择器运算我们仅需使用;然而评估一个有 个与门的MUX
电路需要
give an overview over related work:)not necessary for my current work😊
姚氏混淆电路中的两方,其中一方称之为garbler(混淆者:),它的作用就是将一个布尔电路加密成一个混淆电路。这个混淆电路会由另一方来evaluate,因此这个另一方称之为evaluator。
具体地说,garbler表示要被当作布尔电路来计算的函数,并分配给每根导线 两把钥匙(以下简称线键),其中。使用加密函数(参见下面的AND运算),garbler对两个输入线键的所有可能组合上每个门的输出线键进行加密,然后发送混淆电路(由混淆门组成)以及电路的相应输入给另一方即evaluator(参见下面的Sharing Semantics)。evaluator迭代地使用门的输入线键解密每个乱码的门以获取输出线键(参见下面的AND运算),并最终重建(reconstruct)明文。
在工程和计算机科学中,函数经典地表示为布尔电路,布尔电路基本上由逻辑门(logic gates)和连接它们的导线(wires)组成。
对以下计算的演示基于这样的假设:扮演garbler,扮演evaluator。 混淆方案采用free-XOR和point-and-permute optimizations,在该方案下,garbler随机选择一个比特长度的字符串();对于每个,线键分别为、,其中,这两个“最不重要的”比特位称之为置换位(permutation bit)。
Shared Values:一个值的混淆电路共享记作,使得对于并且
Sharing:分享运算符(sharing operator)这样分别这样定义:
Reconstruction:重建运算符(reconstruction operator): 这样定义:发送自己的置换位给,后者计算,从而重建。
通过Yao Sharing的以下运算形式来评估用XOR门和AND门组成的布尔电路。
XOR:.基于的计算free-XOR,对于任一方计算得
AND:,计算流程如下:
基于混淆函数创建混淆表,该表被发送给,后者通过自身私有共享(线键)以及解密该混淆表,获得明文。
介绍已经存在的共享转换(conversions):Y2B、B2Y、A2Y、A2B; 改进的转换:B2A、Y2A
sharing, reconstruction以及conversion operations的复杂度如下:
Total Computation[#sym] | Communication[bits] | #Messages | |
---|---|---|---|
0 | |||
, | 1 | ||
1 | |||
, | 2 | ||
, | 2 | ||
, | 2 |
#sym:symmetric cryptographic operations。message字段表示在online phase阶段sharing, reconstruction以及conversion operations(比特的值上)的所需消息(message)数量。
Y2B是最简单的conversion:将Yao Sharing转换为Boolean Sharing。转换过程没有花销。和的置换位(permutation bits)可以当作值的布尔共享。(置换位通常是第一个比特)
对于一方来说,
B2Y转换:类似于运算。假设是一个单一比特,对于比特长度的值,每个运算都并行的执行次。让且;一方从域采样出。当一方作为发送方发送,此时另一方作为接收方选择单比特,来通过OT获得转换后的私有共享。
通过安全评估一个加法电路(securely evaluating an addition circuit)完成从到的转换。确切地说👇
在算术电路中令算术共享和。以及,最后计算最终的转换结果。
通过布尔加法电路(Boolean addition circuit,类似于C.A2Y)或者算术位萃取电路(Arithmetic bit-extraction circuit)实现到的转换。
在ABY框架中,A2B转换没有开销,直接计算。验证了在Yao Sharing中加法比Boolean Sharing中更有效。
基于布尔减法电路来实现比特长值的到的转换。一方输入以及随机生成一个,然后令;另一方输入,然后获得。——这种可行方案通常具有的复杂度(空间和时间)或者具有空间复杂度和时间复杂度。
给出一种改进方案(参考上文中描述的乘法三元组生成算法):为每个比特执行一个(两值通过2的幂次相关联),接收方获得这堆值中的一个,通过将其相加得到一个valid的算术共享。详细描述如下👇
方案中:作为发送方,作为接收方。
在第 个中,随机选择然后输入,其中以及。
对于输入作为的响应(选择位),而输出
最后计算
计算
一方随机生成,计算;两方都是评估一个布尔减法电路(Boolean subtraction circuit):,随之获得其相应的算术共享以及。
鉴于Y2B是无开销的且B2A在计算和通信量上开销更小,建议实现Y2A通过Y2B-->B2A,即。