Oddbean new post about | logout
 Ok – so Signal is great. Good encryption, etc. Obviously, the main thing that we want to improve there is the centralized coordinator in the middle. 

My original proposal was an adaptation of the Signal protocol for Nostr. https://github.com/nostr-protocol/nips/blob/2169fab971591d0b4a450ef08aeb6301c5d2a0da/104.md

But I got lots of feedback on that one that 1) group messaging needs to be first class and 2) multiple device support needs to be first class. Both of these are actually the same thing - supporting groups. 

With the signal protocol, the way that the symmetric encryption works, when you're in a group, you're effectively creating a DM to every member of the group, encrypting it separately, and sending it out. Signal makes this feel like less of a big deal because they do some tricks on the server side to make it less heavy for the client. 

In the nostr version of the signal protocol, you have no server to do work for you, so your device has to do all that work itself. 

With MLS, because it's using a different data structure (binary trees) for managing encryption keys and users in a group, you go from a situation where group scaling is a linear problem (each new user in a group adds the same amount of work for all clients) to a log problem (where each new user in a group adds wayyyy less work for all clients).

There are also other benefits of MLS. 

1) it's about to be an internet standard (like TLS, etc) so we conceivably get interoperability with other networks/clients 
2) it's built to allow for the use of multiple ciphersuites and the graceful change/upgrade of the ciphersuites over time.

The only drawback is that it's very complex and very new. My work so far on getting MLS to Nostr has been focused on updating dependency libraries to allow for support of schnorr signatures over the secp256k1 curve (what nostr - and bitcoin - uses). I'm very convinced this is the right long-term solution for private messaging on Nostr but it's going to take a bit longer to get it probably ready for implementation. 

If you haven't see it already, you can follow along with what I'm doing in my weekly posts. Also, if you're interested in working with me on all this, that'd be awesome. 

nostr:naddr1qvzqqqr4gupzq9eemymaerqvwdc25f6ctyuvzx0zt3qld3zp5hf5cmfc2qlrzdh0qqxnzdejxy6rzwf5xvmnwveh25uk9n
 
 Wow what a nice PR 
 Incredibly bullish. Thanks for these details.

Where can I find more about MLS becoming an internet standard? 
 why isn't nostr an internet standard? 
 > Also, if you're interested in working with me on all this, that'd be awesome.  

👀
nostr:nevent1qqszq7rfspvlyjsfh67ndd6ku4g0w8e57mhgspsq4vm2zuk24g5yxdqpremhxue69uhkummnw3ez6ur4vgh8wetvd3hhyer9wghxuet59upzq9eemymaerqvwdc25f6ctyuvzx0zt3qld3zp5hf5cmfc2qlrzdh0qvzqqqqqqynfgap7 
 🙏 
 There's a new app named Keychat that combines Nostr and Signal E2E encryption. https://keychat.io 
 Yup. I saw it. I've been trying to talk with them about the details for months. The app still isn't released and isn't open source yet. 🤷‍♂️ 
 It was released and open sourced last week https://github.com/keychat-io/keychat-app 
 SimpleX is better then signal imo 
 Yes, but it doesn't work consistently. Way too complex for most users.  
 How can you say that when you’re noting this on nostr? 
 LOL, good point.  
 This is really exciting.  Thanks for your work on it. 
 Must we assume the server does no work on behalf of the user? Is it it possible to have a server do more and explicitly advertise NIP-X support or is that not Nostrly? 
 @The Bitcoin Painter, check this thread out. we got some studying and work to do. :) 
 Sounds like the future is bright and purple. 
 Let me know if you want to chat. Happy to catch you up on things in more detail if you want.