Skip to content

sourabhvarshney111/Usable-PGP

Repository files navigation

Usable-PGP

Making PGP usable again! A simple and intuitive to use PGP application.

  • It is simple to use.
  • It is flexible. It works for all email providers.
  • Runs all cryptographic computation locally on the machine. Hence, it is end-to-end secure unlike In-Browser Cryptography. More on this here.

Tools used

  • Python3: PGPy as backend for pgp related functions, flask for web UI controller and Key server APIs.
  • html + css + js for front end

Usage

Make sure python version is >=3.6.
Install python requirements.

pip3 install -r requirements.txt

For Unix-like systems

Run the script to launch the application. To exit out of the loop type 'exit'. (To flexibly use mutiple python3 versions, python command is taken as argument)

<python cmd> UsablePGP.py <python cmd>
For example:
python3 UsablePGP.py python3

UsablePGP.py starts two process:

  1. Runs key-server/server.py at 5000 port of localhost.
  2. Runs app/app.py at 8000 port.

For windows

Double click start.bat file.

Application Architecture

  • A server which holds user credentials and their public key (localhost in testing).
  • Python (flask) backend to serve Frontend.
  • On executing our app, a server process will be created in python and UI will be served in browser. Web app acts as front end to the services provided by flask and pgpy.

Restrictions

  • A username/email can only have single key pair at any instance.
  • User can only created encrypted message for people who have registered on our server.

Future extensions

  • Encrypting for mutiple email addresses at once
  • Verifying users' email address to sign public key for web of trust
  • Provide secure backup option