Optimal Protocol Assignment (OPA)
This repo contains companinion code for the ACM CCS'19 paper Efficient MPC via Program Analysis: A Framework for Efficient Optimal Mixing
- eclipse-project contains the analysis project. Import it into Eclipse and then run
Tests.javaas JUnit Test to invoke analysis for the specified program (in
Tests.java), Analysis output is written to
- solver contains OPA solver MATLAB code. edit
solver.mto point to the
analysis.jsonand run into to get protocol assignment.
How to Add More Test Programs
Follow the examples in
src/programs directory in eclipse project directory. Briefly the programs should:
- only contain very simple
ifstatements (current support for analyzing
ifis a simple heuristic.)
- loops should have statically known bounds (this is a standard limitation of MPC).
- only contain
- input and output variables should be marked using function calls to
MPCAnnotation. This ensures that such variables do not get eliminated as dead code during analysis.
MIT License. see
LICENSE for details.
- If running analysis (whether through eclipse or commandline) gives you
unable to load java.lang.CharSequence(or similar) error. Try running the analysis on a compiled
.classfile instead of java souce. Soot's java frontend is outdated and running it against compiled program fixes many issues.