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: