Goldreich and Ostrovsky proposed this term on software protection.
The memory access of oblivious RAM is probabilistic and the probabilistic distribution is independent of the input. In the paper composed by Goldreich and Ostrovsky have theorem to oblivious RAM: Let RAM(m) denote a RAM with m memory locations and access to a random oracle machine. Then t steps of an arbitrary RAM(m) program can be simulated by less than O ( t ( log 2 t ) 3 ) {\displaystyle O(t(\log _{2}t)^{3})} steps of an oblivious R A M ( m ( log 2 m ) 2 ) {\displaystyle \mathrm {RAM} (m(\log _{2}m)^{2})} . Every oblivious simulation of RAM(m) must make at least max { m , ( t − 1 ) log 2 m } {\displaystyle \max\{m,(t-1)\log _{2}m\}} accesses in order to simulate t steps.
Now we have the square-root algorithm to simulate the oblivious ram working.
To access original RAM in t steps we need to simulate it with t + m {\displaystyle t+{\sqrt {m}}} steps for the oblivious RAM. For each access, the cost would be O( m ⋅ log m {\displaystyle {\sqrt {m}}\cdot \log m} ).
Another way to simulate is hierarchical algorithm. The basic idea is to consider the shelter memory as a buffer, and extend it to the multiple levels of buffers. For level I, there are 4 i {\displaystyle 4^{i}} buckets and for each bucket has log t items. For each level there is a random selected hash function.
The operation is like the following: At first load program to the last level, which can be say has 4 t {\displaystyle 4^{t}} buckets. For reading, check the bucket h i ( V ) {\displaystyle h_{i}(V)} from each level, If (V,X) is already found, pick a bucket randomly to access, and if it is not found, check the bucket h i ( V ) {\displaystyle h_{i}(V)} , there is only one real match and remaining are dummy entries . For writing, put (V,X) to the first level, and if the first I levels are full, move all I levels to I + 1 {\displaystyle I+1} levels and empty the first I levels.
The time cost for each level cost O(log t); cost for every access is O ( ( log t ) 2 ) {\displaystyle O((\log t)^{2})} ; The cost of Hashing is O ( t ( log t ) 3 ) {\displaystyle O(t(\log t)^{3})} .
An Oblivious Tree is a rooted tree with the following property:
The oblivious tree is a data structure similar to 2–3 tree, but with the additional property of being oblivious. The rightmost path may have degree one and this can help to describe the update algorithms. Oblivious tree requires randomization to achieve a O ( log ( n ) ) {\displaystyle O(\log(n))} running time for the update operations. And for two sequences of operations M and N acting to the tree, the output of the tree has the same output probability distributions. For the tree, there are three operations:
Step of Create: The list of nodes at the ithlevel is obtained traversing the list of nodes at level i+1 from left to right and repeatedly doing the following:
For example, if the coin tosses of d {2, 3} has an outcome of: 2, 3, 2, 2, 2, 2, 3 stores the string “OBLIVION” as follow oblivious tree.
Both the INSERT (b, I, T) and DELETE(I, T) have the O(log n) expected running time. And for INSERT and DELETE we have:
For example, if the CREATE (ABCDEFG) or INSERT (C, 2, CREATE (ABDEFG)) is run, it yields the same probabilities of out come between these two operations.
Wang, Xiao; Nayak, Kartik; Liu, Chang; Chan, Hubert; Shi, Elaine; Stefanov, Emil; Huang, Yan (November 2014). "Oblivious Data Structures". CCS '14: Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security. Scottsdale, Arizona. pp. 215–226. doi:10.1145/2660267.2660314. /wiki/Elaine_Shi ↩