I learned a ton from the talks, discussions, and conversations at ATMosphere. A group of us got together and identified goals for E2EE messaging on ATProto:
While existing messaging apps service some combination of these goals, meeting them all is a challenging task. I believe we can get there in incremental steps, starting with 1:1 messaging with ATProto identities this summer.
In our first discussion, folks proposed diverse approaches to solving multiple devices and heterogenous apps. That suggests that those are spaces for experimentation. I’ll submit that interoperability opens space for this experimentation and discovery.
For messaging apps to interoperate, they need agreement on
We came out of ATmosphere with, I think, consensus on MLS as the encryption protocol. That’s a fantastic starting point for making progress on the remaining layers.
I’ll suggest authentication as the next point for a common approach. If the PDS can delegate E2EE to a single user-controlled identity key, that key can bootstrap the elements we’ve yet to find a common approach - for example additional device keys. In that way, we can abstract out the space for experimentation behind this single delegate, without foreclosing incremental progress towards more commonality.
Embedding this delegation into the DID document, which has an immutable log, would help protect against a malicious or compromised PDS delegation. Proofs by the delegated key - that it also claims the DID, that it endorses a replacement by a newer key - could be stored off the document, but might also be suitable for inclusion in the DID document.
Functionally we need one more bit of information to make use of this delegated key, which is where another user should go to ask for additional information (such as keyPackages, transport addresses). This doesn’t seem to be suitable for inclusion in the DID document, but could be vended by the PDS. A domain name might be sufficient; a user can consult a .well-known resource for implementation-specific information about the delegated key. In the future, the PDS could also vend data on which we have standardized.
The rough sketch of the PDS API’s to accomplish this:
(Mark, @ Germ Network)