Replying to Avatar Sirius

Double ratchet messaging is deployed on iris.to. Try sending me a message at https://iris.to/sirius ! Thanks to Human Rights Foundation for supporting the project!

"Add to home screen" on iOS to enable push notifications.

The point of double ratchet is 1) hiding message metadata (who you're messaging and when) and 2) keeping your past and future message history safe in case your main Nostr key is revealed.

I'll write a nip for it. Basically it's Signal's "double ratchet with header encryption", but using Nostr keys instead of symmetric header key rotation. The algorithm is not too complicated. https://signal.org/docs/specifications/doubleratchet/

Typescript library, only uses cryptography from nostr-tools. https://github.com/mmalmi/nostr-double-ratchet

"Public invite" on your "new chat" page is published on Nostr. It's used when you first send message at someone's iris.to profile. Initial message to public invite is from anonymous sender, but publicly visible. From thereon, keys are rotated and stay hidden. "Private invite" is not published, so it's more private when shared over QR code or other channel.

Sometimes the chat sessions stop working at iris.to, probably it's incorrectly saving an old version of the ratchet session state. Working on it.

This is seriously awesome, Martti. 💚🔥

I am building a Nostr client in Rust focused on Private Messaging (initially with just NIP-17 but optional Double-Ratchet is on the roadmap).

I would be willing to donate where necessary to have this implementation in Rust (ideally in Nostr-SDK, if this gets formalised as a NIP? cc nostr:npub1drvpzev3syqt0kjrls50050uzf25gehpz9vgdw08hvex7e0vgfeq0eseet).

I'll cross-reference and test using Iris, when I begin this. 🙏

Reply to this note

Please Login to reply.

Discussion

I'll check it soon!

I've started working on it here: https://github.com/rust-nostr/nostr/pull/797

For now I've only implemented the algorithm for NIP117. Soon I'll add also support for persistent session state and integration with the nostr-sdk library.

Seriously awesome, I’ll keep an eye out. 🙏🔥