Context: Secure Multiparty Computation (MPC) refers to a family of cryptographic techniques where mutually untrusting parties may compute functions of their private inputs while revealing only the function output. Inquiry: It can be hard to program MPCs correctly and efficiently using existing languages and frameworks, especially when they require coordinating disparate computational roles. How can we make this easier? Approach: We present Symphony, a new functional programming language for MPCs among two or more parties. Symphony starts from the single-instruction, multiple-data (SIMD) semantics of prior MPC languages, in which each party carries out symmetric responsibilities, and generalizes it using constructs that can coordinate many parties. Symphony introduces **first-class shares** and **first-class party sets** to provide unmatched language-level expressive power with high efficiency. Knowledge: Developing a core formal language called $\lambda$-Symphony, we prove that the intuitive, generalized SIMD view of a program coincides with its actual distributed semantics. Thus the programmer can reason about her programs by reading them from top to bottom, even though in reality the program runs in a coordinated fashion, distributed across many machines. We implemented a prototype interpreter for Symphony leveraging multiple cryptographic backends. With it we wrote a variety of MPC programs, finding that Symphony can express optimized protocols that other languages cannot, and that in general Symphony programs operate efficiently. [ full abstract at https://doi.org/10.22152/programming-journal.org/2023/7/14 ]
翻译:上下文:安全多方计算(MPC)是指一类密码技术,允许互不信任的多方在仅输出函数结果的前提下,共同计算其私有输入的函数。问题:使用现有语言和框架正确且高效地编写MPC程序较为困难,尤其当需要协调不同计算角色时。如何简化这一过程?方法:我们提出Symphony,一种用于多方MPC的新型函数式编程语言。Symphony基于先前MPC语言的单指令多数据(SIMD)语义(其中各方承担对称职责),通过可协调多方的构造进行泛化。该语言引入**一流的秘密份额**和**一流的参与方集合**,以高效率和空前的语言级表达能力。知识:通过开发核心形式语言$\lambda$-Symphony,我们证明程序的直观泛化SIMD视图与其实际分布式语义一致。因此,程序员可以自上而下地阅读程序进行推理,而实际上程序以协调方式跨多台机器分布式运行。我们利用多个密码学后端实现了Symphony的原型解释器,并编写了多种MPC程序。实验表明,Symphony能表达其他语言无法实现的优化协议,且一般情况下Symphony程序运行高效。[完整摘要见 https://doi.org/10.22152/programming-journal.org/2023/7/14 ]