implementation of server and client communicating via socket under:
- End to end encryption.
- ORAM protocol - to prevent statistical inference.
- Hash authentication - to validate the reliability of data
oram protocol based on the article Path ORAM.
- Run
server.py
on the server. callServer.run()
to run the server. - With
Client
inclient.py
, You can write and read in the__name__ == "__main__"
section, or write your own code and call toClient.read()
andClient.write()
- In
benchmarks.py
you can find the code used to calculate the benchmarks appended. - In
clientAgent.py
you can find the classClientAgent
, which responsible for all of the communication with the server, hashing, data authentication, and of course the ORAM module. As a user, you don't have any interaction with this file, unless you want to understand the code. block.py
andbucket.py
stands for the main data structures of the ORAM algorithm, for a bigger size of data in each block, you may need to changesettings.RECEIVE_BYTES
.settings.py
contains all of the constants and data we supply to the program. change all from here.
Just write $python3 server.py
on the server, and $python3 client.py
on the client.