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混合协议_学习笔记

Ⅰ Introduction

多方安全计算,顾名思义即在多方互相不信任情形下(隐瞒自身输入)共同“合作”计算函数输出。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框架,将其作为底层加密服务,为上层参数安全提供线性计算密态化。

A. Overview and Our Contributions

outline和强调的一些协议设计的novel点。

ABY框架

“从底层安全协议中抽象出来的虚拟机”——类比于JVM:abstracted from the underlying system architecture

ABY灵活的设计
有效的实例化和改进

如上图所示,对于Arithmetic sharings(§Ⅲ-A)通过Paillier with packing或DGK with full decryption生成乘法三元组;对于Boolean sharings(§Ⅲ-B)使用基于扩展OT的数据选择器(multiplexer);对于Yao sharings使用fixed-key AES进行混淆电路设计。

用novel的方式combine了若干种现存的sota方法,第Ⅲ节进行详细介绍。

协议设计高效表现的若干点feedback
应用(Application)

可用于实现几个保护隐私的应用程序以及提高相关性能。具体地说,可以做模幂运算(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倍。

B. 相关工作

涉及文献较多,与ABY自身关系不大;就粗略的看了下:)

分成三个部分分别阐述:混合协议(mixed protocols)、混合协议自动生成(automated mixed-protocol generation)、其他安全计算语言和编译器(other secure computation languages and compilers)

mixed protocols

一些工作的混合协议设计:结合两个安全计算协议的优点。文献罗列如下

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设计提供了更大的灵活性、更高效的乘法和更高效的不同协议之间的转换。

Automated Mixed-Protocol Generation

F. Kerschbaum,"Automatic protocol selection in secure two-party computations",ACNS’14类似的工作,研究者表达的计算序列的基本运算的函数,然后分配给不同的安全计算协议(同态加密或混淆电路)。提出了两种算法来最小化混合协议的运行时间:其一是基于整数规划(integer programming)以找到一个最优解;另一个则是基于启发式(heuristic)。

Other Secure Computation Languages and Compilers

第一个实现姚氏混淆电路的协议:Fairplay,允许开发人员使用高级语言称为安全函数定义语言(SFDL)来计算一个指定的函数;及其框架的扩展FairplayMP。相关文献的挖掘介绍。

image-20220502151904837

Ⅱ Preliminaries

以下给出安全定义以及setting;介绍论文种使用的符号;概要下oblivious transfer(OT)——the main block

A. Two-Party Setting

ABY设定为两方安全计算协议,这样的协议可以用于客户机-服务器应用程序,双方提供私人的输入(例如,互联网服务)。协议亦可以服务于多方安全计算发应用(任意数量的input players提供保密的输入然后任意数量的output players接受安全计算的输出)当中,例如拍卖(auctions)、问卷( surveys)。为此,两个玩家:各自在两个计算服务器(假定不勾结)输入secret-shares。然后,两个计算服务器在shares上运行安全计算协议(两个玩家都无法获得中间讯息)。最后,他们把shares的输出发送给那些可以重构输出的output players。

由于我们的ABY框架中的所有协议都在共享上运行,因此这也允许reactive computations,其中两个计算服务器在多个执行中保留安全状态信息(例如,对于安全的数据库系统)。

B. 对抗半诚实攻击的安全机制

我们使用被动的半诚实(semi-honest)对抗模型,我们假设一个计算有限的对抗(adversary),他试图从协议执行过程中看到的消息中学习其他信息。与更强的恶意(主动)对手相反,半诚实(semi-honest)对抗不允许偏离协议。尽管比恶意模型更具限制性,但半诚实模型具有许多应用程序,例如保护行政人员或政府机构的被动内部攻击,或者可以信任被动行为不良的当事方。半诚实模型可以开发高效的安全计算协议,因此被广泛用于实现隐私保护应用程序。我们的工作集中于在半诚实(semi-honest)对抗模型中的有效混合协议安全两方计算的设计和实施。

C. 符号说明

D. Oblivious Transfer

我们在工作中使用的主要构件就是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被用于提高计算效率。

以上随机获得的都是一个相关的鲁棒的单向函数(a correlation robust one-way function)的输出

通常被描述为哈希/杂凑函数

这篇文章用符号标记来表示在长度为的字符串上工作的个平行工作的;在OT扩展中,三者之间的通信视为主要的性能瓶颈(bottleneck),分别是以及比特。、三者的计算是每一方(两者之一)对称加密原语的 evaluations。

Ⅲ Share Types

分别介绍A、B、Y分享、运算方式以及各自sota等的语义;比较重要的内容。

A. Arithmetic Sharing

算术共享中, 比特长度的值 在环可以表示为环中某两元素之和。以下详细说明sharing以及operation的语义,最后说明如何通过同态加密和OT来生成算术乘法三元组。

1)Sharing Semantics

算术共享基于两方各自的私有共享。

2)如何运算?

每个算术电路都是一系列(sequence)加法门和乘法门的组合。

3)SOTA

give an overview over related work on secure computation based on Arithmetic sharing:)not necessary😊

4)通过同态加密生成算术乘法三元组

在设置阶段(setup phase)由Protocol 1描述的同态加密方案构造算术乘法三元组(Arithmetic multiplication triple),AMTs形如。涉及到同态加密算法包括Paillier、DGK

5)通过OT生成算术乘法三元组

根据OT扩展生成算术乘法三元。protocol(来自Two party RSA key generation)它允许使用OT有效计算两个秘密值(secret-shared values)的乘积。通过使用基于长度字符串,即可以生成比特的MT。方法描述如下:(为生成

对于两方可以轻而易举计算第一项和第四项,私有共享由各方随机生成;而对于第三项和第四项:

以计算为例,每一方都对该式子缺乏相当的信息,因为环中运算的封闭性,我们可以计算每一方的,两方分别得到 )让两方参与进,不妨让为sender而为receiver,是并行的,对于第个进行的

因为对称性,同理可计算.


B. Boolean Sharing

布尔分享使用基于XOR的秘密共享方案共享变量。我们使用Goldreich-Micaliwigderson(GMW)协议评估表示为布尔电路的函数的功能

1)Sharing Semantics

布尔分享使用基于XOR的秘密共享方案(XOR-based secret sharing scheme)。以 比特长的值为例,每个运算都并行的允许 次。

2)如何进行运算?

布尔电路(Boolean Circuits)由异或(XOR)门和与(AND)门共同组成。

3)SOTA

give an overview over related work:)not necessary for my current work😊


C. Yao Sharing

姚氏混淆电路中的两方,其中一方称之为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)。

1)Sharing Semantics
2)如何运算?

通过Yao Sharing的以下运算形式来评估用XOR门和AND门组成的布尔电路。

Ⅳ Sharing Conversions

介绍已经存在的共享转换(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)数量。

A. Yao to Boolean Sharing (Y2B)

Y2B是最简单的conversion:将Yao Sharing转换为Boolean Sharing。转换过程没有花销。的置换位(permutation bits)可以当作值的布尔共享。(置换位通常是第一个比特)

对于一方来说,

B. Boolean to Yao Sharing (B2Y)

B2Y转换:类似于运算。假设是一个单一比特,对于比特长度的值,每个运算都并行的执行次。让;一方从域采样出。当一方作为发送方发送,此时另一方作为接收方选择单比特,来通过OT获得转换后的私有共享

C. Arithmetic to Yao Sharing (A2Y)

通过安全评估一个加法电路(securely evaluating an addition circuit)完成从的转换。确切地说👇

在算术电路中令算术共享以及,最后计算最终的转换结果

D. Arithmetic to Boolean Sharing (A2B)

通过布尔加法电路(Boolean addition circuit,类似于C.A2Y)或者算术位萃取电路(Arithmetic bit-extraction circuit)实现的转换。

在ABY框架中,A2B转换没有开销,直接计算§验证了在Yao Sharing中加法比Boolean Sharing中更有效。

E. Boolean to Arithmetic Sharing (B2A)

基于布尔减法电路来实现比特长值的的转换。一方输入以及随机生成一个,然后令;另一方输入,然后获得。——这种可行方案通常具有的复杂度(空间和时间)或者具有空间复杂度和时间复杂度。

给出一种改进方案(参考上文中描述的乘法三元组生成算法):为每个比特执行一个(两值通过2的幂次相关联),接收方获得这堆值中的一个,通过将其相加得到一个valid的算术共享。详细描述如下👇

方案中:作为发送方,作为接收方。

在第 中,随机选择然后输入,其中以及

对于输入作为的响应(选择位),而输出

最后计算

计算

F. Yao to Arithmetic Sharing (Y2A)

一方随机生成,计算;两方都是评估一个布尔减法电路(Boolean subtraction circuit):,随之获得其相应的算术共享以及

鉴于Y2B是无开销的且B2A在计算和通信量上开销更小,建议实现Y2A通过Y2B-->B2A,即

Ⅴ 实现(Implementation)和benchmark

Ⅵ 应用

Ⅶ 结论以及展望(feature work)