- End-to-end Encryption in ActivityPub
- Evan Prodromou, Tom Coates
- Inviting collaborators, especially those experienced in E2EE in other fields.
- Define a protocol for end-to-end encryption of ActivityPub direct messages
What is the existing target protocol you are hoping to improve or enhance? Eg: hand-washing, traffic system, connector standards, carbon trading.
The target protocol is ActivityPub, the federated social networking standards supported by Mastodon, Meta Threads, and dozens of other platforms.
What is the core idea or insight about potential improvement you want to pursue?
ActivityPub is a federated social networking protocol. It lets people on different social networks connect to each other – follow their text and image posts, like and share and comment, and establish social relationships.
ActivityPub packets – activities – are delivered via REST calls over HTTPS, so they are encrypted on the wire. However, as with Internet email, they are typically not encrypted at rest, when stored in a database on either the sending or receiving side. If I don’t know or trust the administrator of my or my correspondent’s server, I might want our private conversations to be encrypted so the admin can’t view them – only my correspondent.
This will be implemented as an extension to ActivityPub. ActivityPub activities are JSON objects with a prescribed vocabulary. This extension will add an additional vocabulary, but try to re-use as much as possible the standard terms.
What is your discovery methodology for investigating the current state of the target protocol? Eg: field observation, expert interviews, historical data analysis, failure event analysis
I am one of the credited authors of ActivityPub. I’ve written a book for O’Reilly Media on the protocol. I have a good idea of how this process can be done in ActivityPub – by using encrypted text media types in the content
properties of an ActivityPub object.
What’s more important for me, in this discovery, is finding out more about how other protocols achieve E2EE without overburdening the end user. I’ll need to explore chat, messaging, and other E2EE protocols, and try to identify patterns to apply to ActivityPub. This will require reading documentation, reviewing code, and testing running software.
In what form will you prototype your improvement idea? Eg: Code, reference design implementation, draft proposal shared with experts for feedback, A/B test of ideas with a test audience, prototype hardware, etc.
I will prototype the idea with a messaging-only Web app built on top of the ActivityPub API. This will ignore most social networking interactions, like broadcast messages, and concentrate only on the one-to-one messaging that ActivityPub enables.
I will also document the ActivityPub extension for E2EE as a Report of the W3C’s SocialCG community group.
How will you field-test your improvement idea? Eg: run a restricted pilot at an event, simulation, workshop, etc.
I’ll run a restricted pilot on the Web, to test the interactions.
Who will be able to judge the quality of your output? Ideally name a few suitable judges.
Ideally, people experienced with E2EE will be able to judge the quality of the output – especially identifying theoretical or practical weaknesses in the security of the interactions.
How will you publish and evangelize your improvement idea? Eg: Submit proposal to a standards body, publish open-source code, produce and release a software development kit etc.
I will also document the ActivityPub extension for E2EE as a Report of the W3C’s SocialCG community group. Also, the test code will be Open Source.
What is the success vision for your idea?
The Report is published by the SocialCG. The leading ActivityPub implementers, like Mastodon and Threads, implement the new standard. People on the Fediverse, the network of ActivityPub implementations, can feel safe sharing private information in their direct messages, without worrying about who else can see them.