No Description

avadapal b0164f7bf3 minor changes 1 year ago
2p-preprocessing 0f540ecdd6 fixing argvs 1 year ago
Docker 8f0a9c822c docker 1 year ago
boost cae0635fc6 artificat 1 year ago
cpir-read ba184717e3 moving cpirread 1 year ago
duoram-online b0164f7bf3 minor changes 1 year ago
preprocessing ba83344a40 compute cw function merged with compute cw bits 1 year ago
.gitignore cae0635fc6 artificat 1 year ago
README.md ff909107f1 updated README 1 year ago

README.md

CONTENTS OF THIS FILE

  • Introduction
  • Setting up the docker and running the experimental scripts
  • Running the code
  • Important Warning

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 writes. For 2-Party writes, switch off the -ThreeParty flag in the Makefile /cpir-read includes the code CPIR-based reads

Setting up the docker and running the experimental scripts

  • 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.  3-Party 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 & make`
    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.  3-Party 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 & make`
     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`

3. 2-Party Preprocessing:
    Let ip0 and ip1 be the IP addresses of the two docker containers. To generate `W` blinding factors:
    3.1 `cd duoram/2p-preprocessing & make`
    3.2 `./OT ip0 ip1 1 128*W
    3.3 `./OT ip0 ip1 1 128*W
    3.4 `./preprocessing1  ip0 N r`
    3.5 `./preprocessing0  ip1 N r`

4. 2-Party Read:
    4.1 `cd duoram/cpir-read/cxx & make`
    4.2 ./spir_test1 ip0 N threads npreproc queries 
    4.3 ./spir_test0 ip1 N threads npreproc queries 

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.