Papers
Topics
Authors
Recent
Search
2000 character limit reached

Graph Oriented ORAM (GORAM)

Updated 15 February 2026
  • 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 (PiP_i): Each maintains a private directed subgraph Gi=(Vi,Ei)G_i = (V_i, E_i), where the global vertex ID set VpubV_{\rm pub} is public but edge sets EiE_i remain secret.
  • Computation Servers (S1,S2,S3S_1, S_2, S_3): 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:

  1. Chunking and Local Partitioning: Each PiP_i partitions Vpub=[1,,V]V_{\rm pub} = [1, \dots, |V|] into b=V/kb = \lceil |V|/k \rceil vertex chunks of size kk and allocates edges to 2D blocks Bi[p,q]B_i[p, q], where all edges have source in chunk pp and target in chunk qq.
  2. Block Padding and Sharing: Blocks are padded to common length lil_i with dummy edges and secret-shared among the servers.
  3. Global Merge: An MPC-variant odd–even merge sort combines all provider-contributed blocks into global secret-shared 2D blocks B~[p,q]\widetilde{B}[p, q] with common length l=ilil = \sum_i l_i.
  4. ORAM Index Construction: Two distributed ORAM instances are built:
    • VORAM\mathsf{VORAM} (vertex-centric): size bb, stores row-blocks for rapid ego-centric queries.
    • EORAM\mathsf{EORAM} (edge-centric): size b2b^2, 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 G=(V,E)G = (V, E), where V=n|V| = n and E|E| is secret, the key constructions are:

  • Vertex Chunks: V(p)={iV:(p1)k<ipk}V^{(p)} = \{i \in V: (p-1)k < i \leq pk\}, p=1bp = 1 \ldots b.
  • 2D Blocks: B[p,q]={(u,v)E:uV(p),vV(q)}B[p, q] = \{(u, v) \in E : u \in V^{(p)}, v \in V^{(q)}\}, each padded to fixed length ll.
  • Row and Block Partitions: For row rr, Pr=j=1bB[r,j]P_r = \bigcup_{j=1}^b B[r, j] (vertex-centric); for block (p,q)(p, q), Pp,q=B[p,q]P_{p,q} = B[p, q] (edge-centric).

An ego-centric query for vertex vv returns Q(v)={v}{w:(v,w)E}Q(v) = \{v\} \cup \{w: (v, w) \in E\}. The system employs 3-party secret-sharing, with all sensitive data and queries encoded as shares x\llbracket x \rrbracket.

ORAM abstractions are defined over arrays of secret-shared blocks, supporting oblivious access: ORAM.init(Arr),ORAM.access(i)\llbracket \mathsf{ORAM}.\mathsf{init}(\mathsf{Arr}) \rrbracket, \quad \llbracket \mathsf{ORAM}.\mathsf{access}(i) \rrbracket where the access transcript is secret under a random permutation π\pi, using recursive position maps and stash for repeated retrievals. GORAM utilizes Square-Root ORAM with stash-size T=nT = \sqrt{n}.

3. Query Protocols and MPC Implementation

A typical end-to-end query proceeds as follows for, e.g., a 1-hop neighbors count query Qcount(v)Q_{\mathrm{count}}(v):

  1. Client secret-shares the vertex ID vv among S1S_1, S2S_2, S3S_3.
  2. Compute the chunk index r=v/kr = \lceil v/k \rceil obliviously.
  3. Access VORAM.access(r)\mathsf{VORAM}.\mathsf{access}(r) to fetch the partition for vv.
  4. Within this partition, use MPC primitives (EQ, AND) to identify edges with u=vu = v, and sum indicators to count neighbors.
  5. Return the secret-shared count to the client.

Edge-existence queries compute the block index (p,q)(p, q) for (u,v)(u, v), fetch the relevant block via EORAM\mathsf{EORAM}, and apply MPC reduction to determine existence. The ShuffleMem protocol is used for random permutation in ORAM construction, running in O(nB)O(nB) MPC cost and O(1)O(1) rounds for total bit-length nBnB.

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 (V|V|, 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 b=V/kb = \lceil |V|/k \rceil and block-size lE/bl \approx |E|/b, the initialization costs are:

  • O(Ei)O(|E_i|) local work per provider for block preparation and padding,
  • O(N(b2l)logl)O(N(b^2l)\log l) MPC work for global merging and sorting,
  • O(b2l)O(b^2l) work for DORAM index construction using ShuffleMem.

For each query, the dominant costs are:

  • ORAM-indexed partition access (O(PTlog(n/T))O(P T \log(n/T)) MPC gates, O(log(n/T))O(\log(n/T)) rounds, n=bn = b or b2b^2),
  • Partition processing (O(l)O(l) vectorized gates, O(logl)O(\log l) rounds for aggregation).

Empirical results include:

  • On synthetic graphs (up to V=215|V| = 2^{15}, E107|E| \approx 10^7), 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 kk, 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).

Definition Search Book Streamline Icon: https://streamlinehq.com
References (1)

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to Graph Oriented ORAM (GORAM).