EzPC: Programmable, Efficient, and Scalable Secure Two-Party Computation for Machine Learning

在这里插入图片描述

1.Source language

EzPC代码实现了一个简单的2PC计算,服务器和客户端可以共同计算一个函数,并确保输入的私密性和计算结果的安全传递。

2.EzPC compiler

1.EzPC编译器的输入输出:

  • EzPC编译器接受一个源程序作为输入,并生成一个C++程序作为输出。
  • 输出的C++程序包含特定于各方的代码(分别对应服务器和客户端的输入输出),以及通用的计算代码。

2.程序的拆分:

  • 编译器将输入程序拆分为公共组件和秘密组件。
  • 公共组件翻译为普通的C++代码,而秘密组件则翻译为调用2PC后端(ABY)的API。

代码示例解析

公共组件:

  • 公共组件是指不涉及敏感数据的部分,例如循环索引。
  • 例如,在图1的示例中,编译器发现内积循环中的数组索引i是公共的,因此不需要隐藏访问位置。于是,将这个for循环编译为C++的for循环,可以直接执行(代码中的第11行)。

秘密组件:

  • 秘密组件涉及敏感数据的操作,需要使用加密技术。
  • EzPC编译器根据加密计算的成本选择合适的表示形式:算术电路或布尔电路。

加密成本意识

算术电路:

  • 对于内积计算,算术表示更高效,因此编译器使用算术电路构建器(acirc)来生成相应的电路(代码中的第12和13行)。

布尔电路(Yao电路):

  • 对于与b的比较和条件表达式计算,布尔表示更高效,因此编译器使用Yao电路构建器(ycirc)来生成相应的电路(代码中的第19到24行)。

转换操作

  • 使用算术和布尔表示需要在它们之间进行转换。
  • EzPC编译器会适当地加入这些转换门。例如,在代码的第17行,编译器将a_acc转换为布尔表示,然后再将其输入到比较和多路复用器电路中。

3 Circuit generation and evaluation

电路生成和评估

编译和执行C++代码:

  • EzPC编译器的输出是一个C++代码。接下来的步骤是将这个C++代码编译并执行。
  • 编译和执行过程中,程序中所有的公共部分(例如数组访问等)会被直接计算和消除。

电路生成:

  • 在公共部分被计算掉之后,剩下的部分是涉及秘密数据的计算。
  • 这些计算会被转换成一个包含算术和布尔门(逻辑门)的电路。
    同时,还会生成合适的转换门,用于在算术表示和布尔表示之间进行转换。

2PC协议评估电路:

  • 生成的电路会通过一个2PC协议进行评估。
  • 2PC协议保证双方在计算过程中各自的输入保持私密,仅计算结果公开。

4 总结

EzPC的特点和优势

高级编程接口:

  • EzPC允许用户用高级语言编写程序,而不需要处理底层的加密细节。编写的程序接近于“理想”功能,易于理解和维护。
    混合电路生成:

  • 与之前的框架(如CBMC-GC、ObliVM、SMCL和Wysteria)不同,这些框架生成的协议仅使用算术电路或布尔电路中的一种。EzPC则首次结合了算术共享和混淆电路(garbled circuits),以提高性能。
    形式化的正确性和安全性:

  • EzPC提供了严格的正确性和安全性保证,确保生成的协议在理论上是正确且安全的。

高性能和可扩展性:

  • 生成的协议在性能上有显著优势。EzPC生成的协议在一些功能上(如安全预测和矩阵分解)可以与最近的手工协议相匹配,甚至在某些情况下性能可以提高到19倍。

工作流程

高级语言编写程序:

  • 用户用EzPC编写高层次的2PC程序。例如,服务器提供一个分类器的权重和阈值,客户端提供输入向量。

编译程序:

  • EzPC编译器将这些高层次程序编译为C++代码。

  • 编译器识别公共部分和秘密部分,公共部分直接转换为C++代码,秘密部分则转换为调用2PC后端API(如ABY)的代码。
    生成混合电路:

  • 编译后的代码在执行时,会生成包含算术和布尔门的混合电路。

  • 编译器会选择最优的表示方式(算术或布尔)来生成电路,并在必要时加入转换门进行表示转换。
    执行电路:

  • 生成的电路通过2PC协议执行,确保双方输入的隐私性,同时计算出预期结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值