Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSC4256: RFC 9420 MLS mode Matrix #4256

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

dklimpel
Copy link
Contributor

@dklimpel dklimpel commented Jan 24, 2025

@ara4n ara4n added the proposal A matrix spec change proposal label Jan 24, 2025
@ara4n ara4n changed the title MSC: RFC 9420 MLS mode Matrix MSC4256: RFC 9420 MLS mode Matrix Jan 24, 2025
@tulir tulir added e2e client-server Client-Server API kind:core MSC which is critical to the protocol's success labels Jan 24, 2025
@turt2live turt2live added the implementation-needs-checking The MSC has an implementation, but the SCT has not yet checked it. label Jan 25, 2025

![Invite flow][invite-flow]

## Potential issues
Copy link
Contributor

Choose a reason for hiding this comment

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

What about display name and avatar url of members? Are they stored in the MLS group context too? And if so, how to prevent malicious users from changing them.

less strict validation, those rules tend to favour stricter validation. Some of those rules could be
made more lenient to allow more extensibility if such a need is expected.

1. if state_key is not empty, reject
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe splitting hairs but empty and missing are considered equivalent here, right?

9. If the `can_propose` has entries not in `servers`, reject
10. Otherwise, allow
10. If the event type is `m.mls.pending_commit`:
1. If the epoch of this event is not exactly the epoch of the previous `m.mls.commit` event + 1, reject
Copy link
Contributor

Choose a reason for hiding this comment

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

"the current m.mls.commit event" might be clearer here since m.mls.pending_commit doesn't directly replace that event. This could maybe also be applied to 9.2.

7. If the `powers` has entries not in `servers`, reject
8. If the `powers` start not with exactly the same entries in the same order as the subset of
entries in the previous `powers` above the `origin` , reject
9. If the `can_propose` has entries not in `servers`, reject
Copy link
Contributor

Choose a reason for hiding this comment

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

Would we need to enforce that entries from powers also appear in can_propose to enable the process described in "Commit handling with multiple servers" below?

{
"type": "m.room.encrypted",
"content": {
"algorithm": "m.megolm.v1.aes-sha2",
Copy link
Contributor

Choose a reason for hiding this comment

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

Should this not be something starting with m.mls.v1?

Currently redactions are not supported in the outer protocol layer. This has the benefit of making
redactions invisible to the server, but also prevents any server side aggregation. This also means
content can’t be deleted. As we require all events to be encrypted, this might not be a major
problem, but policy makers might disagree. Redactions could be supported in various ways and we
Copy link
Contributor

Choose a reason for hiding this comment

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

Redactions are not only relevant in the context of data privacy but also for moderation. Not being able to delete malicious or illegal content seems like a significant problem. 😕

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 implementation-needs-checking The MSC has an implementation, but the SCT has not yet checked it. kind:core MSC which is critical to the protocol's success proposal A matrix spec change proposal
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants