{"id":15149821,"url":"https://github.com/rohankalbag/cryptography-signal-protocol","last_synced_at":"2026-01-31T08:02:45.275Z","repository":{"id":238269088,"uuid":"796039378","full_name":"rohankalbag/cryptography-signal-protocol","owner":"rohankalbag","description":"Cryptography and Network Security - Spring Semester 2024 - Indian Institute of Technology Bombay","archived":false,"fork":false,"pushed_at":"2024-07-27T08:37:20.000Z","size":448,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-22T00:03:54.230Z","etag":null,"topics":["cryptography","end-to-end-encryption","signal-protocol"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rohankalbag.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-04T18:48:16.000Z","updated_at":"2025-05-02T17:31:14.000Z","dependencies_parsed_at":"2025-02-10T05:15:30.184Z","dependency_job_id":null,"html_url":"https://github.com/rohankalbag/cryptography-signal-protocol","commit_stats":null,"previous_names":["rohankalbag/cryptography-signal-protocol"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rohankalbag/cryptography-signal-protocol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rohankalbag%2Fcryptography-signal-protocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rohankalbag%2Fcryptography-signal-protocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rohankalbag%2Fcryptography-signal-protocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rohankalbag%2Fcryptography-signal-protocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rohankalbag","download_url":"https://codeload.github.com/rohankalbag/cryptography-signal-protocol/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rohankalbag%2Fcryptography-signal-protocol/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28934624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T07:49:44.436Z","status":"ssl_error","status_checked_at":"2026-01-31T07:49:34.274Z","response_time":128,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptography","end-to-end-encryption","signal-protocol"],"created_at":"2024-09-26T14:01:09.864Z","updated_at":"2026-01-31T08:02:45.242Z","avatar_url":"https://github.com/rohankalbag.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pythonic Implementation of Secure End-End Encrypted Messaging using Signal Protocol\n\nThis 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. The cryptographic infrastructure developed can be found in `client/utils.py`\n\nFor 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.\n\nThe 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.\n\n[Link to Video Demonstration of the Implementation](https://youtu.be/DEt4LJ9cVp0?si=kW0laSq2_8GrXgHo)\n[Link to Documentation and Implementation Report](https://github.com/rohankalbag/cryptography-signal-protocol/blob/main/docs.pdf)\n\n### Dependencies\n```python\npip install -r requirements.txt\n```\n\n### Run Server\n\n```python\npython3 server/server.py\n```\n\n### Run Chat Interface for Client\n\n```python\npython3 main.py\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frohankalbag%2Fcryptography-signal-protocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frohankalbag%2Fcryptography-signal-protocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frohankalbag%2Fcryptography-signal-protocol/lists"}