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.pyon the server. callServer.run()to run the server. - With
Clientinclient.py, You can write and read in the__name__ == "__main__"section, or write your own code and call toClient.read()andClient.write() - In
benchmarks.pyyou can find the code used to calculate the benchmarks appended. - In
clientAgent.pyyou 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.pyandbucket.pystands 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.pycontains 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.