Viaduct: an extensible, optimizing compiler for secure distributed programs

Modern distributed systems involve interactions between principals with limited trust, so cryptographic mechanisms are needed to protect confidentiality and integrity. At the same time, most developers lack the training to securely employ cryptography. We present Viaduct, a compiler that transforms high-level programs into secure, efficient distributed realizations. Viaduct's source language allows developers to declaratively specify security policies by annotating their programs with information flow labels. The compiler uses these labels to synthesize distributed programs that use cryptography efficiently while still defending the source-level security policy. The Viaduct approach is general, and can be easily extended with new security mechanisms. Our implementation of the Viaduct compiler comes with an extensible runtime system that includes plug-in support for multiparty computation, commitments, and zero-knowledge proofs. We have evaluated the system on a set of benchmarks, and the results indicate that our approach is feasible and can use cryptography in efficient, nontrivial ways.

[1]  Michael Hicks,et al.  Wysteria: A Programming Language for Generic, Mixed-Mode Multiparty Computations , 2014, 2014 IEEE Symposium on Security and Privacy.

[2]  S. Zukowski,et al.  Introduction to Lattice Theory , 1990 .

[3]  Benny Pinkas,et al.  Fairplay - Secure Two-Party Computation System , 2004, USENIX Security Symposium.

[4]  Elaine Shi,et al.  xJsnark: A Framework for Efficient Verifiable Computation , 2018, 2018 IEEE Symposium on Security and Privacy (SP).

[5]  Silvio Micali,et al.  How to play ANY mental game , 1987, STOC.

[6]  Ran Canetti,et al.  Universally composable security: a new paradigm for cryptographic protocols , 2001, Proceedings 2001 IEEE International Conference on Cluster Computing.

[7]  Cédric Fournet,et al.  Cryptographically sound implementations for typed information-flow security , 2008, POPL '08.

[8]  David Sands,et al.  Paragon for Practical Programming with Information-Flow Control , 2013, APLAS.

[9]  Kartik Nayak,et al.  ObliVM: A Programming Framework for Secure Computation , 2015, 2015 IEEE Symposium on Security and Privacy.

[10]  Andrew C. Myers,et al.  Language-based information-flow security , 2003, IEEE J. Sel. Areas Commun..

[11]  Elaine Shi,et al.  Automating Efficient RAM-Model Secure Computation , 2014, 2014 IEEE Symposium on Security and Privacy.

[12]  E. Shi,et al.  An Extensible, Optimizing Compiler for Secure Distributed Programs (Technical Report) , 2021 .

[13]  François Pottier,et al.  Information flow inference for ML , 2003, TOPL.

[14]  Andrew C. Myers,et al.  Nonmalleable Information Flow Control , 2017, CCS.

[15]  Andrew C. Myers,et al.  Replication Package for Viaduct: An Extensible, Optimizing Compiler for Secure Distributed Programs , 2021, Artifact Digital Object Group.

[16]  Andrew Chi-Chih Yao,et al.  Protocols for secure computations , 1982, FOCS 1982.

[17]  Yehuda Lindell,et al.  Universally composable two-party and multi-party secure computation , 2002, STOC '02.

[18]  Vitaly Shmatikov,et al.  The most dangerous code in the world: validating SSL certificates in non-browser software , 2012, CCS.

[19]  Stefan Katzenbeisser,et al.  HyCC: Compilation of Hybrid Protocols for Practical Secure Computation , 2018, CCS.

[20]  Ana Milanova,et al.  Efficient MPC via Program Analysis: A Framework for Efficient Optimal Mixing , 2019, IACR Cryptol. ePrint Arch..

[21]  Benny Pinkas,et al.  SpOT-Light: Lightweight Private Set Intersection from Sparse OT Extension , 2019, IACR Cryptol. ePrint Arch..

[22]  Craig Gentry,et al.  Pinocchio: Nearly Practical Verifiable Computation , 2013, 2013 IEEE Symposium on Security and Privacy.

[23]  Agustí Verde Parera,et al.  General data protection regulation , 2018 .

[24]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[25]  Ran Canetti,et al.  Security and Composition of Multiparty Cryptographic Protocols , 2000, Journal of Cryptology.

[26]  Carlos V. Rozas,et al.  Innovative instructions and software model for isolated execution , 2013, HASP '13.

[27]  Andrew C. Myers,et al.  JFlow: practical mostly-static information flow control , 1999, POPL '99.

[28]  Andrew C. Myers,et al.  A Language-Based Approach to Secure Quorum Replication , 2014, PLAS@ECOOP.

[29]  Josef Kittler,et al.  Financial Cryptography and Data Security , 2012, Lecture Notes in Computer Science.

[30]  Andrew C. Myers,et al.  Secure program partitioning , 2002, TOCS.

[31]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[32]  Stephen Chong,et al.  Information Flow Control for Distributed Trusted Execution Environments , 2019, 2019 IEEE 32nd Computer Security Foundations Symposium (CSF).

[33]  Elaine Shi,et al.  Path ORAM: an extremely simple oblivious RAM protocol , 2012, CCS.

[34]  Cédric Fournet,et al.  A security-preserving compiler for distributed programs: from information-flow policies to cryptographic mechanisms , 2009, CCS.

[35]  Torben Æ. Mogensen,et al.  Tractable Constraints in Finite Semilattices , 1996, Sci. Comput. Program..

[36]  Andrew C. Myers,et al.  Robust declassification , 2001, Proceedings. 14th IEEE Computer Security Foundations Workshop, 2001..

[37]  Michael Zohner,et al.  ABY - A Framework for Efficient Mixed-Protocol Secure Two-Party Computation , 2015, NDSS.

[38]  Andrew C. Myers,et al.  End-to-end availability policies and noninterference , 2005, 18th IEEE Computer Security Foundations Workshop (CSFW'05).

[39]  J. Meseguer,et al.  Security Policies and Security Models , 1982, 1982 IEEE Symposium on Security and Privacy.

[40]  Andrew C. Myers,et al.  Flow-Limited Authorization , 2015, 2015 IEEE 28th Computer Security Foundations Symposium.

[41]  Jon Howell,et al.  Geppetto: Versatile Verifiable Computation , 2015, 2015 IEEE Symposium on Security and Privacy.

[42]  Elaine Shi,et al.  Constant-Round MPC with Fairness and Guarantee of Output Delivery , 2015, CRYPTO.

[43]  G. Edward Suh,et al.  Using Information Flow to Design an ISA that Controls Timing Channels , 2019, 2019 IEEE 32nd Computer Security Foundations Symposium (CSF).

[44]  Azer Bestavros,et al.  Conclave: secure multi-party computation on big data , 2019, EuroSys.

[45]  Hao Chen,et al.  Fast Private Set Intersection from Homomorphic Encryption , 2017, CCS.

[46]  Brett Hemenway,et al.  SoK: General Purpose Compilers for Secure Multi-Party Computation , 2019, 2019 IEEE Symposium on Security and Privacy (SP).

[47]  Christian Decker,et al.  Bitcoin Transaction Malleability and MtGox , 2014, ESORICS.

[48]  David Evans,et al.  Obliv-C: A Language for Extensible Data-Oblivious Computation , 2015, IACR Cryptol. ePrint Arch..

[49]  Florian Kerschbaum,et al.  Automatically optimizing secure computation , 2011, CCS '11.

[50]  Andrew C. Myers,et al.  Using replication and partitioning to build secure distributed systems , 2003, 2003 Symposium on Security and Privacy, 2003..

[51]  Zuocheng Ren,et al.  Efficient RAM and control flow in verifiable outsourced computation , 2015, NDSS.