Multi-client encrypted communication service.
-
Clients asks certificate authority (CA_server.py) to generate
RSA
keys for them. -
CA generates
RSA
keys and signs them usingSECP256K1
's elliptic curve. -
CA sends
RSA
keys and signature to the clients after symmetrically encrypting them, -
Fernet
used as the symmetric encryption method of choice (AES
inCBC
mode with 128-bit key) after agreeing on a shared key usingDiffie-Hellman
's key exchange. -
Upon receiving keys, client verify the key's signature.
-
Public keys generated are kept in a registry maintained by CA for transparency.
-
Clients communicate directly with each other.
$ pip install -r requirements.txt
- CA :
FLASK_APP=CA_server.py flask run -p 5000
- Client:
FLASK_APP=app.py flask run -p 5001