Elektrine
EN
Log in Register
Paige Chat Timeline Communities Gallery Videos Email DNS VPN Uptime Kairo
Back to Timeline
Remote

0xllx0

@0xllx0@activitypub.space
nodebb 4.15.0
  • Open on activitypub.space
0 Followers
0 Following
7 Posts
Joined July 28, 2026

Posts

Open post
0xllx0 @0xllx0@activitypub.space · Jul 30, 2026
0xllx0
@0xllx0@activitypub.space
activitypub.space

Repudiable E2EE Messages

<p>In a discussion [<a href="https://mastodon.social/@bengo/117010435874507144" rel="nofollow ugc">1</a>] started by <a href="https://mastodon.social/@bengo">@<bdi>bengo@mastodon.social</bdi></a>, the topic of direct message repudiation was brought up as a security/privacy concern.</p> <p>Currently, unencrypted Mastodon/ActivityPub DMs have repudiation (plausible deniability), because the activities are signed by the instance actor key, not tied to individual user actors.</p> [...] Hover or focus to reveal Sensitive
In a discussion [1] started by @bengo@mastodon.social, the topic of direct message repudiation was brought up as a security/privacy concern. Currently, unencrypted Mastodon/ActivityPub DMs have repudiation (plausible deniability), because the activities are signed by the instance actor key, not tied to individual user actors. If we would like to preserve this feature in E2EE DMs, we need to consider how activities are signed (tied to our work on limiting metadata exposure [2]), and how messages inside MLS encrypted envelopes are signed. For simplicity, let's assume maximal protection against metadata exposure, so we only need to worry about in-protocol messages (MLS encrypted messages). One possible path to achieve both: a) authenticated messages and b) message repudiation, we can use ephemeral signing keys that are created per-E2EE-chat (potentially rotated per MLS epoch). The following ideas were inspired by @soatok@furry.engineer's post [3] in the thread. These ephemeral signing keys would be used to sign the clear-text of MLS encrypted messages [4], in order to provide per-participant message authentication. The ephemeral signing keys would not be tied to an individual participant's identity key (MLS Signature key [5]), which provides a basic level of repudiability. In order to ensure ephemeral signing keys used by participants have been approved by all other participants, we could require that ephemeral signing keys are signed by every participant's MLS Signature key [5]. This is something like a naive group signature over the ephemeral signing keys, instead of doing a full-blown group signature algorithm over all messages. All participants in the group sign all ephemeral keys, which again provides repudiability ("that's not my key"), while ensuring authenticated keys are used to sign messages. If per-Epoch rotation is used for ephemeral signing keys, we could expose prior Epoch ephemeral signing key secrets to fulfill the OTR-style repudiation protocol. These ephemeral signing keys would take the place of the MLS signing key for message authentication [6]. This extra level of indirection provides some level of plausible deniability, while preserving per-participant authentication, and protecting against impersonation by anyone possessing shared encryption secrets.
0
0
1
0
Open post
0xllx0 @0xllx0@activitypub.space · Jul 30, 2026
0xllx0
@0xllx0@activitypub.space
activitypub.space
Replying to @smallcircles@social.coop

Reflecting on the existence of httpsig.org

@smallcircles@social.coop :smile: thanks for the kind words. activityforge is still very much WIP. currently working on the web UI to get minimal user/repository interaction working. all of the backend plumbing is in place for Factory creation of user repos, user Follow, and repository Like activities. I'll put out a blog post / update here when it is ready for other folks to try out
0
0
0
0
Open post
0xllx0 @0xllx0@activitypub.space · Jul 30, 2026
0xllx0
@0xllx0@activitypub.space
activitypub.space
Replying to @julian@activitypub.space

Reflecting on the existence of httpsig.org

I've written an ActivityStreams 2.0 vocabulary library in Rust: https://docs.rs/activitystreams-vocabulary/latest/activitystreams_vocabulary/ Don't know of any external users for it yet, though. I mainly built it for use in my other projects, would love feedback from anyone that is using it.
0
0
0
0
Open post
0xllx0 @0xllx0@activitypub.space · Jul 30, 2026
0xllx0
@0xllx0@activitypub.space
activitypub.space
Replying to @silverpill@mitra.social

Reflecting on the existence of httpsig.org

@silverpill@mitra.social this is very cool, I didn't know about it!
0
0
0
0
Open post
0xllx0 @0xllx0@activitypub.space · Jul 28, 2026
0xllx0
@0xllx0@activitypub.space
activitypub.space
Replying to @evan@cosocial.ca

Limiting Group Membership Metadata Exposure

@evan@cosocial.ca I have a queued reply currently awaiting approval. Thanks for starting this thread, and adding the E2EE Task Force! :purple_heart:
0
1
0
0
Open post
0xllx0 @0xllx0@activitypub.space · Jul 28, 2026
0xllx0
@0xllx0@activitypub.space
activitypub.space

Protocol for Updating KEM used for E2EE

<p>At today's meeting we briefly discussed how we would go about updating the KEM algorithm used to establish MLS keys.</p> <p>I mentioned the BeeKEM (<a href="https://eprint.iacr.org/2026/1434" rel="nofollow ugc">https://eprint.iacr.org/2026/1434</a>, <a href="https://github.com/swicg/activitypub-e2ee/issues/95" rel="nofollow ugc">https://github.com/swicg/activitypub-e2ee/issues/95</a>) protocol as an example, though I have concerns about this particular protocol. The lead authors are currently PhD students, and this is potentially part of their program (no issue there). [...]</p> Hover or focus to reveal Sensitive
At today's meeting we briefly discussed how we would go about updating the KEM algorithm used to establish MLS keys. I mentioned the BeeKEM (https://eprint.iacr.org/2026/1434 https://github.com/swicg/activitypub-e2ee/issues/95) protocol as an example, though I have concerns about this particular protocol. The lead authors are currently PhD students, and this is potentially part of their program (no issue there). My main problems are that there is a non-trivial amount of LLM use in their reference implementation, it is not clear to what extent LLMs were used to write the paper, and they weaken the Forward-Secrecy + Post-Compromise Security properties to support their newly introduced Consistency Under Concurrency property. The paper is still in pre-print, so I would be very interested to read any reviews from cryptographers in the field before incorporating/implementing the protocol in ActivityPub. Other algorithms like dMLS (https://www.ietf.org/archive/id/draft-kohbrok-mls-dmls-02.html) and de-MLS (https://research.logos.co/rlog/de-mls-with-waku) could be used as well. Something built on FediE2EE-PKD (https://github.com/fedi-e2ee/public-key-directory-specification/blob/main/Specification.md#message-attribute-shreddability) could also be a solution, TBD. To ensure we have a clear path to upgrade when more secure and/or private protocols are available, it would be good to specify some form of versioned cryptography similar to what is used in PASETO (https://github.com/paseto-standard/paseto-spec)
0
0
0
0
Open post
0xllx0 @0xllx0@activitypub.space · Jul 28, 2026
0xllx0
@0xllx0@activitypub.space
activitypub.space
Replying to @evan@activitypub.space

Limiting Group Membership Metadata Exposure

Expanding on the end of our discussion today: I think a good mitigation for metadata exposure is to more-or-less follow option C from: https://github.com/swicg/activitypub-e2ee/issues/83 with the addition that all MLS protocol messages + user messages should be encrypted blobs wrapped in an activity, possibly a Note or the Create wrapping a PrivateMessage/Note. I'm in favor of using a core, and/or a widely implemented vocabulary type to minimize code changes needed server-side. The encrypted blob would go in the activity's content field (like in Option B), and the activity would be signed using one of the Group actor's keys so it could be posted to the Outbox. This protects leaking membership information, since the server would just see a signed activity using one of the Group 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 Group 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. For message delivery, all participants would used authorized fetch (using the long-term key) to retrieve all Outbox 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). Network-level metadata is still a concern, but would be better handled by the respective layer in the OSI stack. 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. To avoid total centralization of the server, "fallback" servers could be listed in the bto 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 Group actor created in case of a down server, malicious host, etc. However, fallback servers are tangential to the metadata discussion.
0
0
0
0

Remote instance

activitypub.space
Open on original server
313k7r1n3
Elektrine

Tor hidden service

elekhj7afj4qnrr4yd3bkzslsyo5jgfxw3orgjkhlcxifueodybyiiad.onion

Platform

  • Email
  • Chat
  • Timeline
  • Communities
  • VPN
  • DNS

Company

  • About
  • Contact
  • FAQ

Legal

  • Terms of Service
  • Privacy Policy
  • Warrant Canary
  • Lite (no JS)
  • VPN Policy
  • Source code

Support

  • support@elektrine.com
  • Report Security Issue
Mail client setup IMAP mail.elektrine.com:993 POP3 mail.elektrine.com:995 SMTP mail.elektrine.com:465
© 2026 Elektrine. All rights reserved. Server: 22:04:32 UTC