Skip to content

vt-asaplab/MAPLE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MAPLE: Metadata-Hiding Policy-Controllable Encrypted Search Platform with Minimal Trust

x86 arm

This is our full implementation for our MAPLE paper (PETS 2023, Issue 4).

WARNING: This is an academic proof-of-concept prototype and has not received a careful code review. This implementation is NOT ready for production use.

Required Libraries

  1. ZeroMQ

  2. EMP-Toolkit

You can run the script file auto_setup.sh to automatically install the required libraries and build source code.

sudo ./auto_setup.sh 

Build & Compile

Go to the folder Server and folder Client then execute:

make clean make 

This is going to create executable files Server in Server folder and Client in Client folder.

Testing

  1. Create database and copy it into the Client folder.
$ cd BloomFilterKeywordSearch $ ./BloomFilterKeywordSearch $ cp omat.bin ../OMAT/Client/ 

The configuration of Bloom filter and database size can be modified in Preprocessing.h then rebuild.

  1. Launch server:
$ cd OMAT/Server $ ./Server <Server_ID> <Server_Port> 

For example, we launch server 1:

./Server 1 12345 

Then launch server 2:

./Server 2 12345 
  1. Launch client:
$ cd OMAT/Client $ ./Client [-b <Bloom_Filter_Size>] [-n <Number_of_Documents>] 

The default parameters: Bloom_Filter_Size is 16384, Number_of_Documents is 65536.

For example:

./Client -b 1120 -n 1024 

You can start server/client applications in any order.

To measure document update performance, comment the line #define RUN_SEARCH 1 in both Client.cpp and Server.cpp then rebuild and run.

Configuring Number of Servers:

Change the constant defined at line 23 const int nP = 2; in file OMAT.hpp, and at line 21 in file Client.hpp then recompile both Server and Client.

Configuring IP Addresses:

To run experiments with EC2 instances, we need to change the IP loopback 127.0.0.1 to the IP addresses of EC2 servers as follows.

  1. Server: add/modify servers' IP addresses from line 13 in file OMAT/EMP_Toolkit/emp_agmpc/cmpc_config.h and recompile Server.
const static char *IP[] = {"" , "127.0.0.1" , "127.0.0.1"}; 
  1. Client: add/modify servers' IP addresses at line 91 string ip_addresses[nP] = {"127.0.0.1", "127.0.0.1"}; in file Client/Client.hpp and recompile Client.

Citing

If the code is found useful, we would be appreciated if our paper can be cited with the following bibtex format

@inproceedings{le2023maple, title={{MAPLE: A Metadata-Hiding Policy-Controllable Encrypted Search Platform with Minimal Trust}}, author={Tung Le and Thang Hoang}, booktitle={Proceedings on Privacy Enhancing Technologies Symposium (PETS)}, issue={4}, pages={184-203}, year={2023} } 

Further Information

For any inquiries, bugs, and assistance on building and running the code, please contact me at tungle@vt.edu.