/EnigMap

An oblivious AVL treemap

Primary LanguageC++

Private Contact Discovery

Prerequisites:

Install cmake, ninja and intel sgx sdk, or use the cppbuilder docker image.

How to build the builder docker image:

cd ./tools/docker/cppbuilder
docker build -t cppbuilder:latest .

How to enter the docker environment to build under the builder:

docker run -it --rm -v $PWD:/builder -u $(id -u) cppbuilder

How to run the unit tests

rm -rf build
cmake -B build -G Ninja
ninja -C build
ninja -C build test
ninja -C build cppcheck

How to do a release compilation:

rm -rf build # Needed after the CC/CXX export or after changing the CMAKE_BUILD_TYPE
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
ninja -C build

Build the signal example enclave

source /startsgxenv.sh
cd applications/signal
make

Performance graph on latest build

The datapoints are collected from some file in tests/ and the scripts to generate the graphs are in tools/scripts.

They are generated by the last step of the gitlab-ci pipeline, using some artifacts from previous steps in the pipeline.

ODS execution graph:

ods operation otree (otree/otree.hpp - otree algorithm implementation) oram_interface (otree/oram_interface.hpp manages allocating and freeing blocks, and talking to the oram implementation) oram implementation client (oramtype/oram.hpp oram algorithm implementation) oram client interface (oram_client_interface.hpp manages encrypting / decrypting blocks/buckets) oram_server (server/fileServer.hpp - the part of the algorithm that is public as everything is encrypted and looks random, equivalent to public ram where oram is built on top of).

Links to view flamegraph files:

https://www.speedscope.app/

chrome://tracing/

It's also possible to view in qt creator as described here: https://doc.qt.io/qtcreator/creator-ctf-visualizer.html

https://ui.perfetto.dev/ seems ok also