Cryptographic Monitoring System
Proof-of-concept implementation of the multi-client predicate-only encryption scheme from “Multi-client Predicate-only Encryption for Conjunctive Equality Tests” in Go.
Please note that the implementation is not designed to be secure against side-channel attacks.
Short version on how to build & run:
- Install the dependencies for PBC:
sudo apt-get install libgmp-dev flex bison
- Install PBC:
./configure make sudo make install
- Install Go
- Create a directory for your Go code:
- Set some environment variables:
- Get the pbc binding for Go:
go get github.com/Nik-U/pbc
- Clone this repository into your
cd $GOPATH git clone <url of repository> src/crypmonsys
- Build a simple test program
cd src/crypmonsys/cmd/eval go build .
- Run the resulting executable. (You might need to run
sudo ldconfigfirst to find the freshly installed PBC library.)
You may want to check how fast the implementation runs on your machine.
To run the performance evaluation experiments, use the shell script
evaluations.sh with one of the curves in
Be sure to use only Type 3 pairings otherwise the construction is insecure!
Note that no preprocessing is used in the benchmark. Preprocessing would speedup the testing of multiple rules against a fixed set of ciphertexts.
Some simple test & benchmark code is included. To run these tests, first go to the
To run the tests:
go test .
To run the tests with additional output (more verbose):
go test . -v
To run benchmarks:
go test -bench .