Encrypted chat client based on Signal's Double-Ratchet Algorithm. See Signal Spec: https://signal.org/docs/specifications/doubleratchet
Security Guarantees:
- Foward Secrecy: compromise of long term keys or current session key must not compromise past communications.
- Break-in Recovery: If an adversary manages to compromise either Alice or Bob's keys, they can still recovery from the attack at some later point in time, and the attacker will no-longer be able to decrypt messages between them.
When no keys are stolen, semantic security is guaranteed via the underlying encryption algorithm, AES-GCM.
Concepts used: Diffie-Hellman key exchange, key generation, AES encryption, Double-Ratchet algorithm.
This is a project based on an assignment from CS255: Cryptography at Stanford University, taught by Dan Boneh. The teaching staff provided the test suite as a sanity check, as well as lib.js.