Default avatar
npub1g53m...drvk 10 months ago
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. Typescript library, only uses cryptography from nostr-tools. "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.

Replies (12)

Default avatar
npub1g53m...drvk 10 months ago
Sometimes you might need to refresh to see the first reply from someone 🤷‍♂️
Martti Malmi's avatar Martti Malmi
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. Typescript library, only uses cryptography from nostr-tools. "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.
View quoted note →
Very cool. Nice work Martti!
Martti Malmi's avatar Martti Malmi
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. Typescript library, only uses cryptography from nostr-tools. "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.
View quoted note →
Default avatar
npub1g53m...drvk 10 months ago
"Initial message to public invite is from anonymous sender, but publicly visible": to clarify, existence of the message is publicly visible but content is encrypted of course.
Martti Malmi's avatar Martti Malmi
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. Typescript library, only uses cryptography from nostr-tools. "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.
View quoted note →
Default avatar
npub1mjjr...j47y 10 months ago
Martti Malmi's avatar Martti Malmi
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. Typescript library, only uses cryptography from nostr-tools. "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.
View quoted note →
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 @npub1drvp...seet). I'll cross-reference and test using Iris, when I begin this. 🙏