Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add fresco framework #33

Open
marsella opened this issue May 25, 2020 · 1 comment
Open

add fresco framework #33

marsella opened this issue May 25, 2020 · 1 comment
Labels
new framework Documents progress on existing MPC frameworks

Comments

@marsella
Copy link
Collaborator

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
Copy link
Collaborator Author

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 marsella added the new framework Documents progress on existing MPC frameworks label May 25, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new framework Documents progress on existing MPC frameworks
Projects
None yet
Development

No branches or pull requests

1 participant