Giter Club home page Giter Club logo

web-mpc's Introduction

web-mpc

DOI Build Status

Implementation of a web-based data collection and aggregation infrastructure that utilizes secure multi-party computation techniques to allow individual contributors to submit their data without revealing it to the other participants.

Environment

It is expected that this application will operate on an Amazon Web Services EC2 instance running Amazon Linux under a security group that permits connections on port 80. The environment in which it runs is set up as follows.

  • First, install Node.js, MongoDB, and necessary modules:
yum -y update
yum -y install nodejs npm --enablerepo=epel
echo "[MongoDB]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1" | sudo tee -a /etc/yum.repos.d/mongodb.repo
yum install -y gcc-c++ mongodb-org-server mongodb-org-shell mongodb-org-tools`
  • Navigate to the server/ directory, install the NPM dependencies, and install the global dependency:
npm install
npm install -g forever
  • Next, set up the database file and start the MongoDB server:
mkdir -p /data/db
mongod
  • Finally, retrieve the application files and in the directory "server/" run:
export NODE_ENV=production
authbind --deep forever -o log.txt -e error.txt start index.js

Local machine installation

Instructions for setting up the environment on a Mac OS X or Linux local machine.

  • Make sure to have Node.js and MongoDB installed.
  • Navigate to the server/ directory and install the NPM dependencies:
npm install
  • Now install the global dependency:
npm install -g forever
  • Create the database file:
mkdir -p /data/db
  • Start the MongoDB server:
mongod
  • Open a new terminal tab or window and navigate back to the server/ directory if you are not already there.

Non-production testing

  • For testing, start the Node.js server with no environment variables:
node index.js

Production release

  • For production, start the Node.js server with a production environment variable:
export NODE_ENV=production
node index.js
  • Open up the browser and navigate to "localhost:8080"

Application usage

Instructions on how to operate the web-mpc application. All steps below are performed in the browser.

Generate session key

  • Navigate to localhost:8080/create.
  • Click on Generate Session and copy and share the session key with all participants.

Fill out data

  • All participants will navigate to localhost:8080, paste the session key into its designated field and proceed to fill out the information. Once completed, click Submit.

Manage session

  • Navigate to localhost:8080/manage.
  • Input your session key and password.
  • Generate participation links.
  • Start the session.

Retrieve the result

  • Stop the session
  • Navigate to localhost:8080/unmask.
  • Paste the session key and password in its designated fields.
  • Click Browse and upload the private key file that was downloaded when generating the session key.
  • Click Unmask Data and view the result.

License

Web-mpc is freely distributable under the terms of the MIT license. This release supports Handsontable's "Nested headers", a Pro feature. A valid license must be obtained when using this feature.

web-mpc's People

Contributors

frederickjansen avatar kinanbab avatar n1v0lg avatar lucyq avatar lapets avatar jgyou-bu avatar edunton avatar ishaikh1 avatar avegancafe avatar ra1issa avatar p-flock avatar vidyaap avatar

Stargazers

Keviv avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.