Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

i want to implement a storage application that hides client access patterns from a remote server - otherwise known as an ORAM. The specific variant

i want to implement a storage application that hides client access patterns from a remote server - otherwise known as an ORAM. The specific variant of ORAM to implement is Path ORAM first mentioned in (Emil Stefanov, Marten Van Dijk, Elaine Shi, T.-H. Hubert Chan, Christopher Fletcher, Ling Ren,Xiangyao Yu, and Srinivas Devadas. Path oram: An extremely simple oblivious ram protocol. J. ACM, 65(4), apr 2018.) which mean to implement the non-recursive Path ORAM variant.
Programming (functionality)
i want to implement a client and server.
Definitions:
id - an integer
data - a string with 4 characters
Requirements:
-Server is initialized to support N datablocks
-The client can store data associated with an ID on the server by calling: self.store_data(server, id, data)
-Given a name, a client can retrieve associated data by calling by calling: self.retrieve_data(server, id, data), the client should return None if the data does not exist.
-Client can delete data associated with an ID from server by calling:
self.delete_data(server, id, data)
-The client has access to O(log) storage used mainly for the stash (data is stored on the server ).
Note that the server is the owner of the data storage, and should implement the methods described in (Emil Stefanov, Marten Van Dijk, Elaine Shi, T.-H. Hubert Chan, Christopher Fletcher, Ling Ren,
Xiangyao Yu, and Srinivas Devadas. Path oram: An extremely simple oblivious ram protocol. J. ACM, 65(4), apr 2018.)
to interact directly with said data storage in an oblivious manner.
The above API was written so that you wouldn't need to deal with network communication between the client and server and to emphasize what functionality is expected of you to implement. The server should store the tree structure, and there is no defined API for it
Programming (security)
The server should be oblivious to data content and the clients access patterns. This should be accomplished by use of end to end encryption and PATH ORAM.
The server should be unable to trick the client into accepting corrupt or outdated data (data integrity).
This should be accomplished by use of authentication.
You may use this library for encryption and verification.
The code in python and to explain the architecture built and how it satisfies the above requirements. Additionally, include the following
performance benchmarks:
Throughput (number of requests/sec) vs. N (DB size)
Latency (time to complete a request) vs. throughput

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access with AI-Powered Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions

Question

Provide a PESTLE analysis on Severstal (Russian Steel)

Answered: 1 week ago