ArticleslgStudy

computer science

Oblivious data structure

Oblivious data structure is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Oblivious data structure rather than just read about it. In short: In computer science, an oblivious data structure is a data structure that gives no information about the sequence or pattern of the operations that have been applied except for the final result of the operations. In most conditions, even if the data is encrypted, the access pattern can be achieved, and this pattern can leak some important information such as encryption keys.

Oblivious data structure — main illustration
Oblivious data structure — illustration

Key takeaways

  • Oblivious data structure belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Oblivious data structure to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Oblivious data structure from memory before moving on to harder problems.

Reference excerpt

In computer science, an oblivious data structure is a data structure that gives no information about the sequence or pattern of the operations that have been applied except for the final result of the operations. In most conditions, even if the data is encrypted, the access pattern can be achieved, and this pattern can leak some important information such as encryption keys. And in the outsourcing of cloud data, this leakage of access pattern is still very serious. An access pattern is a specification of an access mode for every attribute of a relation schema. For example, the sequences of user read or write the data in the cloud are access patterns. We say a machine is oblivious if the sequence in which it accesses is equivalent for any two inputs with the same running time. So the data access pattern is independent from the input. Applications:

Cloud data outsourcing: When writing or reading data from a cloud server, oblivious data structures are useful. And modern databases rely on data structures heavily, so oblivious data structures come in handy. Secure processor: Tamper-resilient secure processors are used for defense against physical attacks or the malicious intruders access the users’ computer platforms. The existing secure processors designed in academia and industry include AEGIS and Intel SGX. But the memory addresses are still transferred in the clear on the memory bus. So the research finds that this memory buses can give out the information about encryption keys. With the Oblivious data structure comes in practical, the secure processor can obfuscate memory access pattern in a provably secure manner. Secure computation: Traditionally people used circuit-model to do the secure computation, but the model is not enough for the security when the amount of data is getting big. RAM-model secure computation was proposed as an alternative to the traditional circuit model, and oblivious data structure is used to prevent information access behavioral being stolen.

Oblivious data structures

Oblivious RAM 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.

For each m {\displaystyle {\sqrt {m}}} accesses, randomly permute first m + m {\displaystyle m+{\sqrt {m}}} memory. Check the shelter words first if we want to access a word. If the word is there, access one of the dummy words. And if the word is not there, find the permuted location. 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})} ⁠.

Oblivious tree An Oblivious Tree is a rooted tree with the following property:

… excerpt ends here. Continue reading the full article.

Worked examples

Example 1 — a first encounter with Oblivious data structure

Start with the simplest possible case. Write down what Oblivious data structure claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Oblivious data structure before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Oblivious data structure ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Oblivious data structure

In research
Oblivious data structure appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Oblivious data structure in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Oblivious data structure is common in secondary-school and first-year university syllabi. It links to neighbouring topics Data structures, so understanding it makes those chapters shorter.
In everyday life
Look for Oblivious data structure outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Oblivious data structure in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Oblivious data structure means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Oblivious data structure out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Oblivious data structure in simple terms?

In computer science, an oblivious data structure is a data structure that gives no information about the sequence or pattern of the operations that have been applied except for the final result of the operations. In most conditions, even if the data is encrypted, the access pattern can be achieved…

Why does Oblivious data structure matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Oblivious data structure?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Oblivious data structure.

Tags

  • Data structures

Keep exploring