###WeShare: A Coercion-Resistant and Scalable Storage Cloud
NOTE: This particular implementation is meant for local, small-scaled deployment of the application for demo purposes. I will be updating the repository once we are ready to roll out a full scaled implementation.
MyCrest is a prototype developed for WeShare: A Coercion-Resistant and Scalable Storage Cloud over Dropbox. The poster for WeShare can be accessed at WeShare. This application is intended to demonstrate the concept of coercion resistant and scalable storage wherein a user can upload and share files over the cloud without having to rely on the service provider for the security of stored data along with the added advantage of low computational costs for sharing the encrypted files with users in comparison to the existing similar solutions.
####Application Description MyCrest has been implemented as a browser extension for Google Chrome browser. The application runs on top of dropbox, which is used as the underlying cloud storage for encrypted files of the user and the files shared with other users. The cloud computational logic has been separately implemented in python over the Django framework which runs as a separate server to support the file sharing and re-encryption for user revoking, as described in the paper. To use this developmental version of MyCrest please follow the following steps:
#####MySQL Database Setup Before getting started with the application, it is important to setup the corresponding MySQL Database that you intend to use with your application. Please follow the given steps to setup the database for MyCrest:
- Type
mysql -u root -p
to connect to your local MySQL server or any other MySQL server that you might be using. create database crest
within your MySQL server. Do not use any other name as the Django framework will particularly look for this file while creating the database tables.- Provide database access to cloud application. Open the file
MyCrest/cloud/cloud/settings.py
and update theUSER
,PASSWORD
,HOST
andPORT
fields for theDATABASES
. - Navigate to
MyCrest/cloud
directory in the terminal. python manage.py makemigrations
to generate updated database rules based on the ones described inMyCrest/cloud/crest/models.py
. This is a django framework utility and needs to be done only once.python manage.py migrate
to create/update the MySQL database tables.
#####Running the Python Django Server It is important that the server is running properly and the first time setup of public parameters has been done before the users start using the extension.
- Navigate to
MyCrest/cloud
directory in the terminal. python manage.py runserver 0.0.0.0:8000
to launch the cloud server protoype running with python based django framework.- To check the correct running of the server, open
http://localhost:8000/crest/
in the browser. - Set up public parameters. Please note that this step needs to be done only once, repeating it over and over will overwrite the public parameters in the database and render the existing data of cloud users useless. Enter the url
http://server_address:port_number/crest/server_setup
in the browser's navigation bar, this will trigger thesetup
function at django based computational unit and report success status upon completion.
#####Loading the extension in Google Chrome The MyCrest Chrome extension is based on the Native Client Module which enables running of apps/extensions backed by C/C++ languages within the browser. Follow the steps below to load the application into the browser:
- Open a new tab in Google Chrome and navigate to
chrome://extensions
url. - Click on
Load Unpacked Extension
and select the location ofMyCrest
folder. - Alternatively user can also pack the application and drag and drop the generated
.crx
file into the tab to load the extension in the browser. - Click on the
box icon
on top right to launch the application. - Provide your
Dropbox Credentials
to authenticate the extension to be used in conjunction withDropbox
.