Graph Oriented ORAM (GORAM)
- Graph Oriented Oblivious RAM (GORAM) is a protocol that enables efficient, privacy-preserving ego-centric queries on federated graphs composed of sensitive subgraph data.
- It integrates secure multi-party computation with distributed oblivious RAM to partition, pad, and secret-share graph data, ensuring sub-linear query times even at billion-edge scales.
- GORAM employs specialized square-root ORAM indexing and two-dimensional block partitioning to protect access patterns while reducing communication overhead by over 70% in practice.
Graph Oriented Oblivious RAM (GORAM) is a graph data structure and protocol stack designed for efficient, privacy-preserving ego-centric queries on federated graphs whose edges are distributed among mutually distrustful data providers. GORAM integrates secure multi-party computation (MPC) and distributed oblivious RAM (ORAM) techniques to enable query execution at billion-edge scale, while ensuring that neither the providers, computation servers, nor clients learn sensitive information about graph structure or query intent beyond public graph size parameters. This is accomplished by partitioning the federated graph into two-dimensional blocks, padding and secret-sharing edge lists, and indexing partitions with Square-Root ORAM constructions specifically tailored for batch retrieval of query-relevant partitions (Fan et al., 2024).
1. System Overview and Roles
GORAM’s architecture features three principal roles:
- Data Providers (): Each maintains a private directed subgraph , where the global vertex ID set is public but edge sets remain secret.
- Computation Servers (): Three non-colluding, semi-honest servers execute all MPC protocols including secret-sharing, distributed ORAM, and secure computation of queries.
- Clients: Issue secret-shared vertex or edge queries and receive secret-shared results.
The workflow proceeds as follows:
- Chunking and Local Partitioning: Each partitions into vertex chunks of size and allocates edges to 2D blocks , where all edges have source in chunk and target in chunk .
- Block Padding and Sharing: Blocks are padded to common length with dummy edges and secret-shared among the servers.
- Global Merge: An MPC-variant odd–even merge sort combines all provider-contributed blocks into global secret-shared 2D blocks with common length .
- ORAM Index Construction: Two distributed ORAM instances are built:
- (vertex-centric): size , stores row-blocks for rapid ego-centric queries.
- (edge-centric): size , stores individual blocks for edge existence queries. Both ORAMs use Square-Root ORAM with a custom constant-round ShuffleMem protocol.
Each ego-centric or edge-centric query only accesses a single partition via the corresponding ORAM, resulting in per-query work and communication that is sub-linear in the graph size. The protocol ensures that no party learns real access patterns or graph structure except for public block and ORAM sizes.
2. Formalization of Data Structures and Query Semantics
Given the global directed graph , where and is secret, the key constructions are:
- Vertex Chunks: , .
- 2D Blocks: , each padded to fixed length .
- Row and Block Partitions: For row , (vertex-centric); for block , (edge-centric).
An ego-centric query for vertex returns . The system employs 3-party secret-sharing, with all sensitive data and queries encoded as shares .
ORAM abstractions are defined over arrays of secret-shared blocks, supporting oblivious access: where the access transcript is secret under a random permutation , using recursive position maps and stash for repeated retrievals. GORAM utilizes Square-Root ORAM with stash-size .
3. Query Protocols and MPC Implementation
A typical end-to-end query proceeds as follows for, e.g., a 1-hop neighbors count query :
- Client secret-shares the vertex ID among , , .
- Compute the chunk index obliviously.
- Access to fetch the partition for .
- Within this partition, use MPC primitives (EQ, AND) to identify edges with , and sum indicators to count neighbors.
- Return the secret-shared count to the client.
Edge-existence queries compute the block index for , fetch the relevant block via , and apply MPC reduction to determine existence. The ShuffleMem protocol is used for random permutation in ORAM construction, running in MPC cost and rounds for total bit-length .
4. Privacy, Adversary Model, and Security Guarantees
The security regime is based on three semi-honest, non-colluding servers, tolerating up to one corrupted server. The system is designed with strict input privacy (edges and query keys secret-shared, so no server learns actual content or targets), query privacy (servers never learn which vertex or edge is queried), and ORAM-style access privacy (partition index access indistinguishable from random). Only public values (, block counts) and padded sizes are leaked, with all other graph statistics masked by dummy edges.
The composition theorem holds for the secure composition of MPC protocols and distributed ORAM under UC or simulation-based definitions. The design achieves partial composability: given correct implementations of 3-party secret-sharing, MPC primitives (such as EQ, ADD, AND), and DORAM with ShuffleMem, GORAM realizes an ideal functionality that leaks only the allowed public parameters.
5. Performance Characteristics
Letting and block-size , the initialization costs are:
- local work per provider for block preparation and padding,
- MPC work for global merging and sorting,
- work for DORAM index construction using ShuffleMem.
For each query, the dominant costs are:
- ORAM-indexed partition access ( MPC gates, rounds, or ),
- Partition processing ( vectorized gates, rounds for aggregation).
Empirical results include:
- On synthetic graphs (up to , ), ego-centric and edge-existence queries complete in 22–133 ms per query, outpacing naive approaches by factors of 50–700 for edge-list scan and 10–30 for adjacency ORAM scan.
- On the Twitter graph with 41.6 million vertices and 1.4 billion edges, single-core timings were: initialization (~3 min), edge-existence (58 ms), neighbors count (~0.5 s), neighbors get (35.7 s), with parallelism reducing neighbors get to ~2.5 s. Bandwidth savings reach 99.9% over full-scan protocols, with overall >70% average communication reduction (Fan et al., 2024).
6. Limitations, Strengths, and Domains of Application
Key strengths:
- Scale: Demonstrates the first practical billion-edge private graph query system compatible with MPC.
- Efficiency: Sub-linear per-query complexity via partitioned ORAM rather than edge-level obliviousness.
- Privacy: Input, query, and access pattern privacy except for block sizes and counts.
- Modularity: Flexible composition with different MPC and DORAM backends.
Principal limitations:
- Static Setting: No support for dynamic graph mutations without complete reinitialization or more advanced dynamic ORAMs.
- Query Expressiveness: Designs for ego-centric (1-hop) and edge-existence queries, requiring further indexing for complex paths or subgraph motifs.
- Block Size Effects: Large , high density graphs lead to sizable blocks and increased MPC workload, though asymptotically less than full-graph scans.
- Assumption of Three Servers: Security model requires honest-majority among computation servers; byzantine or two-party robustness would demand new protocol design.
Application domains include:
- Financial fraud detection across federated transaction graphs (private “who paid whom” and neighbor statistics),
- Secure social network analytics without centralizing social connections,
- Privacy-preserving contact tracing in federated healthcare graphs,
- Any federated setting in which graph structure is secret, providers distrust each other, and client queries must remain hidden.
GORAM establishes that partition-based, ORAM-indexed graph storage enables scalable, privacy-preserving ego-centric analytics feasible for previously intractable large-scale federated environments (Fan et al., 2024).