Crypto tool written in python which stores files on a cloud storage and disguises the access of the files using Path ORAM (Oblivious RAM protocol).
- Clone the repo:
git clone https://github.com/marcjulian/pyoram.git
. - Install Python 3.4 (developed and tested with Python 3.4.4).
- Install dependencies for Python (using pip or visit the website for instructions).
- crypthography 1.3.1
pip install cryptography==1.3.1
. - kivy 1.9.1
- dropbox 6.1
pip install dropbox==6.1
.
- Register a Dropbox API app and generate a access token using Dropbox App Console (an active Dropbox account is necessary).
- Run
src/pyoram/main.py
and enter your password. - For the first time an error will occur, replace "My token" in the cloud map with your token
"token": "My token"
, the map can be found indata/cloud.map
. - Restart the program and re-enter password -> now it should start to initialize the cloud (check your folder).
- Configurations to the program can be made in
src/pyoram/core/config.py
including:
- Block size
- Height of the Path ORAM tree
- Resetting the program:
- Delete the
data/stash
folder,data/position.map
,data/file.map
and set"init": true
to false indata/cloud.map
(you can keep thedata/key.map
) - Delete the
data/key.map
, if you like to select a new password (perform the previous step to avoid decryption errors)
- file encryption with AES(256-bit key length)
- CBC-mode with IV(128-bit)
- padding the data with PKCS7
- HMAC(256-bit key length) using SHA256
Starting PyORAM the first time the sign up page requires the user to enter a password:
After confirmation the key map is generated on the client and switches to the login page. The login page verifies the entered password every time the application is started:
The main page is shown, if the password which was entered is correct. It enables the user to upload, download and delete files from the cloud storage. Futhermore, the free and used cloud storage is displayed:
The user can select any file from the client to upload to the cloud, it is only limited by the available cloud storage:
After uploading couple of files, a single file can be selected for downloading or deleting:
The user can select a file to download to the client:
PyORAM is currently under construction and further features will be added shortly. For more information visit the kanban board at Taiga.io.
The project is the main task of my internship at SIIT in the study program Business Information Systems (Bachelor of Science). Prof. Dr. Steve Gordon is the advisor, who helps defining the requirements for the project and assists me with any further questions.
The final presentation of my internship is available on prezi.
Code and documentation copyright 2016 marcjulian. Code released under the MIT license. Docs released under Creative Commons.