Skip to content

Commit

Permalink
updated README
Browse files Browse the repository at this point in the history
  • Loading branch information
andreasbrueg committed Nov 21, 2023
1 parent 5060be3 commit e830391
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# MOTION-FD: MOTION with function-dependent preprocessing
# MOTION-FD: MOTION with Enhanced Support for Function-Dependent Preprocessing

Our implementations are based on the MPC framework MOTION ([ePrint](https://ia.cr/2020/1137), [GitHub](https://github.com/encryptogroup/MOTION)), this repository is a fork of MOTION.
Codebase that was used in our [paper](https://eprint.iacr.org/2023/1744) (IEEE S&P'24).

This is a fork of the MPC framework MOTION ([ePrint](https://ia.cr/2020/1137), [GitHub](https://github.com/encryptogroup/MOTION)) that adds enhanced support for function-dependent preprocessing. More precisely, it supports the following honest majority three-party protocols with function-dependent preprocessing:
* **ASTRA** for the semi-honest security model ([paper](https://eprint.iacr.org/2019/429), CCSW'19)
* **SWIFT** for the malicious security model ([paper](https://eprint.iacr.org/2020/592), USENIX Security'21) (our code only provides a protocol version without robustness and utilizes triple sacrificing instead of distributed ZK)
* **AUXILIATOR** for a malicious helper ([paper](https://eprint.iacr.org/2023/1744), IEEE S&P'24) (triple sacrifice version)
* **SOCIUM** for a known malicious evaluator ([paper](https://eprint.iacr.org/2023/1744), IEEE S&P'24) (triple sacrifice version)

This code is provided as an experimental implementation for testing purposes and should not be used in a productive environment. We cannot guarantee security and correctness.

Expand All @@ -15,7 +21,7 @@ This code is provided as an experimental implementation for testing purposes and
* [`boost`](https://www.boost.org/) (version >=1.75.0)
* `OpenMP`
* [`OpenSSL`](https://www.openssl.org/) (version >=1.1.0)
* **Don't Eject The Impostor** tested on:
* This code was tested on:
* `g++` 13.1.1
* `make` 4.4.1
* `cmake` 3.27.0
Expand All @@ -25,6 +31,8 @@ This code is provided as an experimental implementation for testing purposes and

## Building MOTION

For a detailed guide on building and more, we refer to [the MOTION repository](https://github.com/encryptogroup/MOTION)

1. Clone this repository and enter its directory

2. Create and enter the build directory: `mkdir build && cd build`
Expand All @@ -35,7 +43,6 @@ This code is provided as an experimental implementation for testing purposes and
```
This also initializes and updates the Git submodules of the dependencies
located in `extern/`. If one of the dependencies is already installed at a standard location, CMake will try to use the installed version.
**If building one of the automatically installed submodules leads to problems (which may happen for g++ versions deviating from what we tested on (13.1.1)), please manually install an up-to-date version on your system.**
4. Call `make` in the build directory.
Optionally, add `-j $number_of_parallel_jobs` to `make` for faster compilation.
Expand All @@ -45,7 +52,7 @@ This code is provided as an experimental implementation for testing purposes and
## Running the Protocols
Our protocol implementations can be found in `src/motioncore/protocols/`. ASTRA and AUXILIATOR are both bundled in the ASTRA files while SWIFT and SOCIUM are bundled in the SOCIUM files.
Benchmarks for ML inference on the MNIST and CIFAR-10 datasets can be started as follows (for each party):
Benchmarks for ML inference on the MiniONN architectures for the MNIST and CIFAR-10 datasets can be started as follows (for each party):
```
bin/[PROTOCOL]_benchmark --repetitions=[REPETITIONS] --cnn [CNN] --my-id [ID] --parties 0,[IP0],[PORT0] 1,[IP1],[PORT1] 2,[IP2],[PORT2]
```
Expand All @@ -57,6 +64,8 @@ with arguments:
* IP0, IP1, IP2: IPv4 address of the respective party
* PORT0, PORT1, PORT2: Communication port of the respective party
For the CIFAR-10 VGG16 benchmarks, use `-cnn vgg16`.
**Example for running AUXILIATOR on local machine for MNIST:**
```
bin/auxiliator_benchmark --repetitions=1 --cnn mnist --my-id 0 --parties 0,127.0.0.1,23000 1,127.0.0.1,23001 2,127.0.0.1,23002 &
Expand All @@ -69,7 +78,7 @@ For a simple aggregation of these outputs among all parties, run
```
python3 ../benchmarkparser.py [CNN] [PROTOCOL]
```
from the `build` directory for `CNN` `mnist` or `cifar10` and protocol `Astra`, `Auxiliator`, `Socium`, or `Swift`.
from the `build` directory for `CNN` `mnist`, `cifar10` or `vgg16` and protocol `Astra`, `Auxiliator`, `Socium`, or `Swift`.
For the previous example:
```
python3 ../benchmarkparser.py mnist Auxiliator
Expand Down

0 comments on commit e830391

Please sign in to comment.