Pythonic Chat Application Implementing Secure End-to-End Encrypted Messaging using Signal Protocol
Click for more details about the project
This project presents a native implementation of the Signal Protocol for secure end-to-end messaging, using the cryptography library in Python. The project includes the development of a secure messaging application with a simple client-side GUI created using PySide6
and a web-socket based messaging system utilizing socketio
. The server adheres to the Signal Protocol Specification, storing only credentials and public keys, receiving only ciphertext, and enabling multiple concurrent two-way communications. The client application allows users to select chat partners and locally persist chat messages, enabling local chat history. For the Signal Protocol implementation, the Extended Triple Diffie-Hellman (X3DH) key agreement protocol and the Double Ratchet Algorithm were employed. The X3DH protocol facilitates the establishment of a shared secret key between two parties using their respective public keys, ensuring forward secrecy and cryptographic deniability. The Double Ratchet Algorithm was implemented to provide secure and synchronized key exchanges for continued communication. The server uses tinyDB to store client information and acts as a communication conduit between clients without retaining any messages. The client-side application features a user-friendly interface for authentication, logging in, selecting chat partners, and viewing chat history. This project demonstrates the practical application of secure messaging protocols and provides a robust foundation for further development in secure communication systems