-
Notifications
You must be signed in to change notification settings - Fork 278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Better ORAM results with -R 128 than -R 64 #1515
Comments
This is probably due to the recursive structure of the ORAM (see https://eprint.iacr.org/2011/407). In short, larger ring elements allow to store more information, which allows for a leaner recursion. This comes out in the output during compilation. For example,
outputs the following when compiled with
but the following with
This indicates that the larger elements allow denser storage of the paths when recursing and thus smaller ORAMs. You should be able to use |
Hi Marcel, sorry for the late reply. Just wanted to thank you for the explanation, that was it. I also tried using |
Yes, |
Thanks! If I got that code correctly, |
Hi Marcel,
Sorry for asking yet another question, but I was wondering whether you could help me understand the this behavior.
I wrote some code that initializes
OptimalORAM
withn
elements and writes to 1% of the ORAM's locations, chosen at random. I ran it withcompile-run.py
passing-v -E ring -R 64 -Z 3
. Then, I also ran it with-R 128
and-R 256
. I noticed that the performance with 64 bits is significantly worse than with 128 bits, despite the higher number of MBs sent in general (except in the run with 100k elements, where fewer MBs are sent with 128 bits). I also ran it with 256 bits, getting results similar to 128 bits.So I think that these results depend on specific implementation choices in the VMs, but I haven't found the point in the code that confirm this. Could you please let me know what in particular is causing this behaviour?
On a different note, I see that I can initialize the ORAMs as, e.g.,
OptimalORAM(n)
, but it looks like I can't also pass to the same function then
elements that I want to store into the ORAM. To do so, I wrote a subsequent for-loop that writesn
elements from an array to the ORAM. Is there a reason why I can't do this at initialization? (Unless I just didn't see the API that does it).Thank you!
The text was updated successfully, but these errors were encountered: