CONTENTS OF THIS FILE --------------------- * Introduction * Setting up the docker * Running the code INTRODUCTION ------------ `/preprocessing` holds code for the 3-Party preprocessing phase `/2p-preprocessing` holds the OT-based code 2-Party preprocessing phase `/duoram-online` holds the code for online phase of the 3-Party Duoram and 2-Party reads `/cpir-read` includes the code CPIR-based reads Setting up the docker ------------ - `sh build-docker.sh` builds the docker image - `sh run-docker.sh` launches three docker containers for parties P2, P0, and P1 - `sh set-networking.sh` sets up the latencies and bandwidth constraints among the three docker containers launched; pass arguments of latency and bandwidth - For example `sh set-networking.sh 1ms 40mbit`. - `sh unset-networking.sh` removes the latency and bandwidth settings. - `sh experiments.sh` runs the pre-processing phase of the 3-party computation. - `sh experiments-online.sh` runs the online phase of the 3-party computation. - `sh experiments-OT.sh` runs the OTs to generate blinds of 2-party preprocesing phase. - `sh experiments-2p-preproc.sh` runs the pre-processing phase of the 2-party computation. - `sh experiments-cpir.sh` runs the CPIR-based reads. - `sh cleanup.sh` stops the three dockers. Running the code ------------- 1. Prepreprocessing: Let ip0, ip1, and ip2 be the IP addresses of the three docker containers. Consider a database of size `2^N`. Suppose the goal is to generate `r` DPFs. The pre-processing generates DPFs with leaves of 128 bits. We use the first 64-bits for the writes. The remaining 64-bits are used for share conversion (XOR shared-flag vectors to additive shares) 1.1 `cd duoram/preprocessing` 1.2 `./p2preprocessing ip1 ip0 N r` 1.3 `./preprocessing1 ip2 ip0 N r` 1.4 `./preprocessing0 ip2 ip1 N r` This writes the evaluations of DPFs into a file which we use in the online phase. 2. Online Phase: Let ip0, ip1, and ip2 be the IP addresses of the three docker containers. Consider a database of size `2^N`. 2.1 `cd duoram/duoram-online` 2.2 `./p2 ip1 ip0 N W D I A` 2.3 `./duoram1 ip0 ip2 N W D I A` 2.4 `./duoram0 ip1 ip2 N W D I A` Important Warning -------------------- This software is for performance testing ONLY! The purpose of this software is to evaluate the performance of the system, NOT to be used in a deployment scenario.