This library implements a series of classic oblivious algorithms, covering oblivious RAM (ORAM), oblivious map (OMAP), and algorithms for oblivious graph processing. It is built for client/server deployment scenarios in which the client is allowed to execute non-obliviously.
We list the maintainer’s related publications, which motivated the development of this library, and then provide a detailed overview of all included algorithms.
- Enabling Index-free Adjacency in Oblivious Graph Processing with Delayed Duplications (Full Version)
- Towards Practical Oblivious Map (VLDB 2025)
- GraphOS (VLDB 2024), implemented here.
- Grove with delayed duplications, implemented here.
- Path ORAM (CCS 2013), implemented here.
- Recursive Path ORAM (ASIACRYPT 2011), implemented here.
- Insecure Freecursive ORAM (ASPLOS 2015), implemented here. The
reset_methodshould be set to"hard". - Secure Freecursive ORAM with probabilistic resets (TCC 2017), implemented here. The
reset_methodshould be set to"prob". - DAORAM with fixed reset and de-amortized cost (VLDB 2025), implemented here.
- OMAP based on AVL (CCS 2014), implemented here. Set
distinguishable_searchtoFalse. - OMAP based on optimized AVL (VLDB 2024), implemented here. Set
distinguishable_searchtoTrue. - OMAP based on B+ tree (VLDB 2020), implemented here.
- OMAP framework over an underlying search tree (VLDB 2025), implemented here. It can be instantiated with any ORAM class in this repo and combined with any tree-based OMAP class in this repo.
- Cache-optimized AVL and B+ tree variants are implemented here and here, respectively.
- The demo folder contains demonstrations showing how to use sockets to set up a server and client.
- The dependency folder contains required dependencies, including socket and cryptography modules.
- The graph folder contains all oblivious graph constructions included in the library.
- The omap folder contains all OMAP constructions included in the library.
- The oram folder contains all ORAM constructions included in the library.
- The tests folder contains test cases for validating the correctness of the implementations.
-
Install the dependencies listed in
requirements.txt. -
Local server (for testing purposes):
- See sample usages in
tests/test_orams.pyandtests/test_omaps.py.
- See sample usages in
-
Remote server:
- Start the server on the remote machine, refer to:
demo/server.py. - Run a client on your device, refer to:
demo/oram_client.pyordemo/omap_client.py.
- Start the server on the remote machine, refer to: