<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Limiting Group Membership Metadata Exposure]]></title><description><![CDATA[<p dir="auto">This is a discussion thread for an open issue on GitHub:</p>
<p dir="auto"><div class="card col-md-9 col-lg-6 position-relative link-preview p-0">



<a href="https://github.com/swicg/activitypub-e2ee/issues/83" title="Limiting group membership metadata exposure · Issue #83 · swicg/activitypub-e2ee">
<img src="https://opengraph.githubassets.com/7d2527e6315978b004b387bdcf4d1919951687119ae0f4f083d4de8774e80af3/swicg/activitypub-e2ee/issues/83" class="card-img-top not-responsive" style="max-height: 15rem;" alt="Link Preview Image" onerror="this.parentElement.remove()" />
</a>



<div class="card-body">
<h5 class="card-title">
<a class="text-decoration-none" href="https://github.com/swicg/activitypub-e2ee/issues/83">
Limiting group membership metadata exposure · Issue #83 · swicg/activitypub-e2ee
</a>
</h5>
<p class="card-text line-clamp-3">(Discussion thread: https://activitypub.space/topic/421/limiting-group-membership-metadata-exposure) This issue is intended as a brainstorming discussions based on several comments by people such as @ThisIsMissEm from the Trust and Safet...</p>
</div>
<a href="https://github.com/swicg/activitypub-e2ee/issues/83" class="card-footer text-body-secondary small d-flex gap-2 align-items-center lh-2">



<img src="https://github.githubassets.com/favicons/favicon.svg" alt="favicon" class="not-responsive overflow-hiddden" style="max-width: 21px; max-height: 21px;" onerror="this.remove()"/>



<p class="d-inline-block text-truncate mb-0">GitHub <span class="text-secondary">(github.com)</span></p>
</a>
</div></p>
]]></description><link>https://citiverse.it/topic/5e36c4cc-b2eb-447b-a9c6-d7970aa6474d/limiting-group-membership-metadata-exposure</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 13:31:19 GMT</lastBuildDate><atom:link href="https://citiverse.it/topic/5e36c4cc-b2eb-447b-a9c6-d7970aa6474d.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jul 2026 21:12:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Limiting Group Membership Metadata Exposure on Wed, 29 Jul 2026 01:44:48 GMT]]></title><description><![CDATA[<p dir="auto"><a href="https://activitypub.space/user/0xllx0" target="_blank" rel="noopener noreferrer nofollow ugc">@0xllx0</a> apologies for the delay! The queued posts are approved and you should be good to post freely now.</p>
]]></description><link>https://citiverse.it/post/https://activitypub.space/post/2137</link><guid isPermaLink="true">https://citiverse.it/post/https://activitypub.space/post/2137</guid><dc:creator><![CDATA[julian@activitypub.space]]></dc:creator><pubDate>Wed, 29 Jul 2026 01:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to Limiting Group Membership Metadata Exposure on Tue, 28 Jul 2026 22:23:17 GMT]]></title><description><![CDATA[<p dir="auto"><a href="https://activitypub.space/user/evan%40cosocial.ca" target="_blank" rel="noopener noreferrer nofollow ugc">@evan@cosocial.ca</a> I have a queued reply currently awaiting approval.</p>
<p dir="auto">Thanks for starting this thread, and adding the E2EE Task Force! &lt;img class="not-responsive emoji" src="<a href="https://activitypub.space/assets/plugins/nodebb-plugin-emoji/emoji/android/1f49c.png?v=b232808582d" target="_blank" rel="noopener noreferrer nofollow ugc">https://activitypub.space/assets/plugins/nodebb-plugin-emoji/emoji/android/1f49c.png?v=b232808582d</a>" title="<img src="https://citiverse.it/assets/plugins/nodebb-plugin-emoji/emoji/android/1f49c.png?v=b09b169718a" class="not-responsive emoji emoji-android emoji--purple_heart" style="height:23px;width:auto;vertical-align:middle" title=":purple_heart:" alt="💜" />" /&gt;</p>
]]></description><link>https://citiverse.it/post/https://activitypub.space/post/2134</link><guid isPermaLink="true">https://citiverse.it/post/https://activitypub.space/post/2134</guid><dc:creator><![CDATA[0xllx0@activitypub.space]]></dc:creator><pubDate>Tue, 28 Jul 2026 22:23:17 GMT</pubDate></item><item><title><![CDATA[Reply to Limiting Group Membership Metadata Exposure on Tue, 28 Jul 2026 21:50:27 GMT]]></title><description><![CDATA[<p><span><a href="/user/evan%40activitypub.space">@<span>evan</span></a></span> </p><p>UPSI is fairly new technology, just a few years old.  I haven't used it myself, but it could be part of the solution for the blocking problem you refer to.</p><p>This was all true as of around 2022, when I was looking into this issue of blocking and private posts, while trying to keep blocklists private.</p><p>If I understand it correctly, I like your MLSGroup solution.</p><p>I guess I should have posted this to the GitHub thread....  <img src="https://citiverse.it/assets/plugins/nodebb-plugin-emoji/emoji/android/1f615.png?v=b09b169718a" class="not-responsive emoji emoji-android emoji--confused" style="height:23px;width:auto;vertical-align:middle" title=":/" alt="😕" /></p><p>2/2</p>]]></description><link>https://citiverse.it/post/https://sfba.social/users/jamesmarshall/statuses/116999810418722238</link><guid isPermaLink="true">https://citiverse.it/post/https://sfba.social/users/jamesmarshall/statuses/116999810418722238</guid><dc:creator><![CDATA[jamesmarshall@sfba.social]]></dc:creator><pubDate>Tue, 28 Jul 2026 21:50:27 GMT</pubDate></item><item><title><![CDATA[Reply to Limiting Group Membership Metadata Exposure on Tue, 28 Jul 2026 21:49:10 GMT]]></title><description><![CDATA[<p dir="auto">Expanding on the end of our discussion today:</p>
<p dir="auto">I think a good mitigation for metadata exposure is to more-or-less follow option C from: <a href="https://github.com/swicg/activitypub-e2ee/issues/83" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/swicg/activitypub-e2ee/issues/83</a>, with the addition that all MLS protocol messages + user messages should be encrypted blobs wrapped in an activity, possibly a <code>Note</code> or the <code>Create</code> wrapping a <code>PrivateMessage</code>/<code>Note</code>. I'm in favor of using a core, and/or a widely implemented vocabulary type to minimize code changes needed server-side.</p>
<p dir="auto">The encrypted blob would go in the activity's <code>content</code> field (like in Option B), and the activity would be signed using one of the <code>Group</code> actor's keys so it could be posted to the <code>Outbox</code>. This protects leaking membership information, since the server would just see a signed activity using one of the <code>Group</code> actor's keys. To further obfuscate member identity, the MLS epoch key could be used for this purpose, and added to the list of the <code>Group</code> actor's keys. Details about trade-offs of using the epoch key probably need to be discussed, as it would leak key rotation information, so a separate long-term key shared by all participants may be better.</p>
<p dir="auto">For message delivery, all participants would used authorized fetch (using the long-term key) to retrieve all <code>Outbox</code> messages. Each client will attempt to decrypt every message, and only be able to successfully decrypt messages intended for them. This would obfuscate the identity of receiver participant(s).</p>
<p dir="auto">Network-level metadata is still a concern, but would be better handled by the respective layer in the OSI stack.</p>
<p dir="auto">At the application level, using the above scheme would sufficiently obscure metadata from the host server, and outside observers. It essentially is a combination of Options B and C, except that the hosting server has no information about the participant list (that is all contained in MLS ciphertext messages). It has the side-benefit of requiring essentially no server-side changes at all, since all messages would just appear as normal activities.</p>
<p dir="auto">To avoid total centralization of the server, "fallback" servers could be listed in the <code>bto</code> field like in Option B. Though, this could also be optional, as it leaks at least some participant information, e.g. at least one participant has an account in that server list. Fallback servers could also be coordinated in-band using MLS messages, and a new <code>Group</code> actor created in case of a down server, malicious host, etc. However, fallback servers are tangential to the metadata discussion.</p>
]]></description><link>https://citiverse.it/post/https://activitypub.space/post/2135</link><guid isPermaLink="true">https://citiverse.it/post/https://activitypub.space/post/2135</guid><dc:creator><![CDATA[0xllx0@activitypub.space]]></dc:creator><pubDate>Tue, 28 Jul 2026 21:49:10 GMT</pubDate></item><item><title><![CDATA[Reply to Limiting Group Membership Metadata Exposure on Tue, 28 Jul 2026 21:42:24 GMT]]></title><description><![CDATA[<p><span><a href="/user/evan%40activitypub.space">@<span>evan</span></a></span> yay, kudos for addressing this!  It's true that not all participants would want to identify themselves, e.g. to all friends of friends when replying to a friend's private post.  I think it's OK for such repliers to still be identifiable to (only) their friend the OP.  Otherwise, harassment would be more possible if the reply were completely anonymous, whereas if the OP knows their identity they can use social pressure to mitigate harassment.</p><p>One challenge is if Alice posts and Bob replies, and Bob is blocking Charlie, then how does Alice (or Alice's server, e.g. an MLSGroup) know not to forward Bob's reply to Charlie, unless Alice knows that Bob is blocking Charlie?  Blocklists are private information.  One possible solution is to use Private Set Intersection (PSI) to determine the intersection of Alice's recipients and Bob's blocklist.  PSI is slow and typically requires recalculating every time one of the sets changes, but Updateable Private Set Intersection (UPSI) can handle set changes quickly.</p><p>1/</p>]]></description><link>https://citiverse.it/post/https://sfba.social/users/jamesmarshall/statuses/116999778774966683</link><guid isPermaLink="true">https://citiverse.it/post/https://sfba.social/users/jamesmarshall/statuses/116999778774966683</guid><dc:creator><![CDATA[jamesmarshall@sfba.social]]></dc:creator><pubDate>Tue, 28 Jul 2026 21:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Limiting Group Membership Metadata Exposure on Tue, 28 Jul 2026 21:29:11 GMT]]></title><description><![CDATA[<p><span><a href="/user/evan%40activitypub.space">@<span>evan@activitypub.space</span></a></span> <span><a href="https://weathered-steel.social/@elle">@<span>elle</span></a></span> ^^^^^^</p>]]></description><link>https://citiverse.it/post/https://cosocial.ca/users/evan/statuses/116999726802116261</link><guid isPermaLink="true">https://citiverse.it/post/https://cosocial.ca/users/evan/statuses/116999726802116261</guid><dc:creator><![CDATA[evan@cosocial.ca]]></dc:creator><pubDate>Tue, 28 Jul 2026 21:29:11 GMT</pubDate></item></channel></rss>