mc-oblivious-map

Crates.iomc-oblivious-map
lib.rsmc-oblivious-map
version2.3.0
sourcesrc
created_at2021-03-09 07:25:39.42055
updated_at2023-03-25 17:44:07.942131
descriptionImplementation of Oblivious Hash Map data structures on top of Oblivious RAM
homepage
repositoryhttps://github.com/mobilecoinofficial/mc-oblivious
max_upload_size
id366125
size96,154
MobileCoin Eng (github:mobilecoinofficial:mobilecoin-eng)

documentation

README

mc-oblivious-map

This crate provides an implementation of an oblivious hashmap on top of oblivious RAM, meeting the requirements in the trait described in mc-oblivious-traits.

In crate right now:

  • An implementation of Cuckoo hashing with buckets, using Oblivious RAM as the cuckoo hashing arena. See wikipedia for background. This is close to or the same as CUCKOO-DISJOINT algorithm described by this paper, except for the use of Oblivious RAM. The access-or-insert method is novel in this work, see code comments for discussion.

For more background, see also "power of two choices" hashing (ABKU99, Mitzenmacher). And wikipedia for additional background. This is conceptually an ancestor of cuckoo hashing. The main reason to use this, or cuckoo hashing, in our context, is that it guarantees that reads make exactly two accesses to the table, which makes the constant-time property easy to verify. Cuckoo hashing achieves good memory utilization, better than "power of two choices", which is what we tried first.

Commit count: 48

cargo fmt