Skip to content
This repository has been archived by the owner on Jul 8, 2021. It is now read-only.

Goblin80/asym-group-comm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Asymmetric Group Communication

Multi-client encrypted communication service.

Description

  1. Clients asks certificate authority (CA_server.py) to generate RSA keys for them.

  2. CA generates RSA keys and signs them using SECP256K1's elliptic curve.

  3. CA sends RSA keys and signature to the clients after symmetrically encrypting them,

  4. Fernet used as the symmetric encryption method of choice (AES in CBC mode with 128-bit key) after agreeing on a shared key using Diffie-Hellman's key exchange.

  5. Upon receiving keys, client verify the key's signature.

  6. Public keys generated are kept in a registry maintained by CA for transparency.

  7. Clients communicate directly with each other.

Install dependencies

$ pip install -r requirements.txt

Usage

  • CA : FLASK_APP=CA_server.py flask run -p 5000
  • Client: FLASK_APP=app.py flask run -p 5001