This project aims to implement several searchable encryption schemes. Internally, it uses Charm as the main prototype library.
The code for Function-Hiding Inner Product Encryption component is originally from fhipe of Kevin Lewi.
Authors:
- Kien Nguyen, University of Southern California
Contact Kien Nguyen for questions about the code: kien.nguyen@usc.edu
This library ships with the following modules:
- Hidden Vector Encryption: In hve.py, hidden vector encryption using composite groups. Based on Appendix A of Ghinita '14
- Hidden Vector Encryption with Groups of Prime Order: in hveprime.py, based on Iovino '08
- Inner Product Encryption: In ipe.py, implements function-hiding inner product encryption. See Kim '16
- Two-input Functional Encryption. In tife.py, implements secret-key small-domain two-input functional encryption for arbitrary functions See Kim '16.
There are also other testing and benchmarking scripts.
Make sure you have the following installed:
You can also see the installation for Ubuntu 18.04 in Dockerfile.
If you need to use fhipe component, please compile the source code first.
git clone --recursive https://github.com/USC-InfoLab/searchable-encryption
cd searchable-encryption
# change the CFLAGS in [Makefile](/Makefile) to the corresponding OS
sudo make
Otherwise, the hve component is simply a Python component
pip3 install pytest
pytest
Use the taskexecutor.py script to run program. The script takes the following arguments:
--task
: the task to execute. Tasks are:test
: for testing specific functionalitybenchmark
: for benchmarking
--scheme
: the scheme to execute. Schemes are:hve
: Hidden Vector Encryptionhvehe
: Hidden Vector Encryption with Hierarchical Encodinghvege
: Hidden Vector Encryption with Gray Encodinghveprime
: Hidden Vector Encryption with Groups of Prime Orderipe
: Inner Product Encryptiontife
: Two-input Functional Encryption
benchmark
is currently only tested with hve
scheme.
The project also contains a Dockerfile for Docker installation.