r/crypto • u/Accurate-Screen8774 • 1d ago
The Signal Protocol in Rust
There are a few nuances to my approach, but the key detail is that I wanted it to also work in a browser so I needed the ability to build to a wasm to be used in js.
Signal libraries don't offer browser based capabilities and so I created this to target web aswell as native.
I wanted to implement the Signal protocol for a series of secure messaging apps I’m working on, so I built this project to test and use in my own work. It’s still far from finished, but I think it’s at a stage where it’s worth sharing with the community.
IMPORTANT DISCLAIMER: This project is not professionally audited and is not production-ready. I do not recommend anyone use this in their own code yet. It is provided strictly for testing, experimentation, and demo purposes. I used AI as an assistant to help build this, so double-check everything before taking it seriously.
Project Links:
- GitHub: https://github.com/positive-intentions/signal-protocol
- Live Demo: https://signal.positive-intentions.com/
- Formal Verification Docs: https://glitr.io/docs/technical/formal-verification/signal-protocol
- Security Feedback (ROS): https://www.reddit.com/r/CyberSecurityAdvice/comments/1su8lir/security_audit_feedback_from_radically_open
Current Status & Development:
- Spec Alignment: The goal is to fully align with the official Signal protocol spec.
- Testing: It includes unit tests, but due to WASM testing limitations, I also added a Storybook-like UI to run and test it directly within a browser environment.
The impementation here is being used in a few experimental messaging apps (similarly unaudited and unreviewed):
- https://enkrypted.chat - javascript based approach
- https://glitr.io - rust based approach
I am also working towards adding it to an open source project soon as seen at: https://github.com/positive-intentions/chat for e2e open-source transparency in the implementation.