frameworks icon indicating copy to clipboard operation
frameworks copied to clipboard

add fresco framework

Open marsella opened this issue 5 years ago • 1 comments

See branch add-fresco.

Current status: Sample programs all completed.

To do: figure out how to run sample programs, document runtime details, document tables in wiki.

marsella avatar May 25 '20 14:05 marsella

Contribution from @sisyphuscafe via private correspondence

14 November 2019

The JUnit tests that accompany FRESCO are extensive, and the testing code coverage is impressive. I had some difficulty getting the core tests to run as I was running out of memory. I rectified the issue by modifying one of the core tests to reduce it's footprint. After that, things built and tested cleanly.

15 November 2015

So, the FRESCO documentation provided online is pretty light. It provides a fairly high-level overview of the framework, with some high-level code examples.

The demos provided with the distribution look reasonable. I've run the AES example mainly because it's structured similarly to the inner product example you wanted to produce. In essence, each of two parties contribute a single vector of a given length to the MPC engine, which produces the inner product and returns the product to both parties. In the AES example, one party contributes a value, the other a key and the engine produces and returns an encrypted value.

I slurped the code into Eclipse and had a poke around. It seems to have some javadoc written, so I created a small makefile to generate javadoc for the core, tools/mascot, tools/ot, suite/spdz, suite/spdz2k and suite/tinytables source code trees. Examining the javadoc in a browser is a bit easier than manually poring through code.

The core package is where the core infrastructure lies, and the suite package is where the protocol suites lie. The tools/ot package is the oblivious transfer implementation, and tools/mascot provides the implementation for the spdz protocol suite preprocessing phase.

You'll learn a great deal quickly if you have the FRESCO source available in an IDE like Eclipse, alongside the javadoc. Then, starting with the example code for inner product, peruse the basic structure of the application. It's not too bad. I'm not entirely sure where the encryption bits happen, but I suspect it's in the protocol suites.

The basic structure is that multiple processes are started representing the separate and independent parties to the computation. They use a simple socket based architecture for inter-process communication.

Finally, there's a fair amount of supporting material which is not included w/FRESCO directly. These are specified in the maven package manifests, and include such things as logging, command line parsing, and other stuff. The resulting executable jar file for the AES demo was quite voluminous as a result.

I noticed that the sample code just pushed into your repository doesn't include all the niceties to actually get them running. It doesn't look like it'd be a big effort since the structure of the samples appears to be similar to the structure of the FRESCO demos.

marsella avatar May 25 '20 14:05 marsella