Rapport is an end-to-end encrypted messaging app written in TypeScript. It uses a combination of AES-256 and ECDH to ensure perfect secrecy, as long as the key is secret.
- Simple interface
- Password-protected account
- Recovery phrase to recover account
- Password is NEVER stored on the database, not even hashed
- Several layers of encryption for each message
- Basic markdown supported (headings, bold, italics, lists and blockquotes)
It is hard to explain how it works, in a simple manner, so here's all the layers of decryption to get to a message:
$$ shared\secret\ \xrightarrow[]{sha256}\ K{-2} $$
$$ msg\_id\ +\ chat\_secret\ \xrightarrow[\times230903,\ MSG\SALT]{pbkdf2-sha256}\ K{-1} $$