Hello Friends, I built an end to end encrypted messenger using Flask, SocketIO, and Vue.js.
The Chat is encrypted using RSA encryption that is a public key encryption or you can say asymmetric encryption. RSA gives two keys, public key and private key, public key is used to encrypt messages while private key is used to decrypt them.
I have used Diffie–Hellman key exchange to exchange the public keys of the users. These keys are used by user A to encrypt messages and send them to another user B and user B can decrypt them using his private key.
Socket.io is used to send and receive messages, these messages are encrypted and sent to the user having the private key to decrypt it.
I created some Flask API to store the information* of the users in a SQLite database and relogin as the user if page reloaded.
Finally Vue.js is used to perform client side encryption/decryption, send/receive message and login or connect to the user.
*Information contains id
, publicKey
, and last_activity
of a user.
Those who wants to develop or build the code then, just clone this repository using:
git clone https://github.com/PradyumnaKrishna/enigma-protocol.git
- Install Dependencies
pip3 install -r requirements.txt
- Run the Server
python main.py
Supported Python Versions
- Python 3.7/3.8
This is on hold because go-socket.io doesn't support newer versions of client-socket.io.
- Install Dependencies
npm ci
- Run the development client
npm run serve
NOTE: To run the vue.js app you need to confiure an env variables, open .env.sample
to see an sample environment file.
Supported Node.js Version
- Current LTS version (14) or newer
I will create Issues and try to fix them.