Skip to content

Conversation

kaylendog
Copy link

@kaylendog kaylendog commented Sep 25, 2025

Rendered

Implementations:

@kaylendog kaylendog self-assigned this Sep 25, 2025
@kaylendog kaylendog added e2e feature Suggestion for a significant extension which needs considerable consideration proposal A matrix spec change proposal client-server Client-Server API kind:core MSC which is critical to the protocol's success implementation-needs-checking The MSC has an implementation, but the SCT has not yet checked it. labels Sep 25, 2025
@turt2live turt2live added needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. and removed implementation-needs-checking The MSC has an implementation, but the SCT has not yet checked it. labels Sep 25, 2025
@kaylendog kaylendog changed the title Initial draft of simplified encrypted state events. 4362: Simplified Encrypted State Events Sep 25, 2025
@kaylendog kaylendog changed the title 4362: Simplified Encrypted State Events MSC4362: Simplified Encrypted State Events Sep 25, 2025
Comment on lines +46 to +47
An encrypted state event looks very similar to a regular encrypted room message: the `type` becomes
`m.room.encrypted` and the `content` is the same shape as a regular `m.room.encrypted` event. The

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't seem to address the core problem with encrypted state events, where state events have a different lifecycle from timeline events. But I also don't see the problem mentioned on the MSC at all.

Say you have this timeline in a room with history visibility invite:

m.room.name <- A
m.room.message <-B
invite to X
X joins

To make the room name sent at A visible to X, you need to share the megolm key for it, which might include the key for decrypting message B as well.

To prevent that, you basically need a different megolm session for every (event_type, state_key) tuple. Otherwise you might leak an arbitrary set of past messages or states.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes! I do not intend to address the issue of key-sharing in this MSC, except for what I've said about history sharing. I briefly covered my thoughts on how this would be done for the HMAC key distribution below, and I imagine we could re-use this infrastructure to resolve this..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client-server Client-Server API e2e feature Suggestion for a significant extension which needs considerable consideration kind:core MSC which is critical to the protocol's success needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. proposal A matrix spec change proposal

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants