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

Describe the risks of filtering at the DS #258

Merged
merged 2 commits into from
Jun 10, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions draft-ietf-mls-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -763,6 +763,28 @@ filter or reject redundant Commit messages proactively to prevent them from
being broadcast. Alternatively, the Delivery Service could simply apply an order
to all messages and rely on clients to ignore redundant Commits.

There is some risk associated with filtering. Situations can arise where a
malicious or buggy client sends a Commit that is not accepted by some members of
the group, and the DS is not able to detect this and reject the Commit. For
example, a buggy client might send a encrypted Commit with an invalid set of
proposals. Or a malicious client might send a malformed Commit of the form
described in {{Section 16.12 of RFC9420}}.

In such situations, the DS might update its internal state under the assumption
that the Commit has succeeded and thus end up in a state inconsistent with the
members of the group. For example, the DS might think that the current epoch is
now `n+1` and reject any commits from other epochs, while the members think the
epoch is `n`, and as a result, the group is stuck -- no member can send a Commit
that the DS will accept.

Given these risks, it is effectively impossible for a strongly consistent DS to
know with absolute certainty when it is safe to update its internal state.
Nonetheless, there are some simple mechanisms that can mitigate these risks.
For example, having the DS wait to update its state until it gets confirmation
of acceptance from a quorum of members provides some protection against buggy
clients. It is up to the designers and operators of a DS to ensure that
sufficient mechanisms are in place to address these risks.
Copy link
Contributor

Choose a reason for hiding this comment

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

I believe this PR is essentially the same as mine except that you've removed the proposal to defer to clients / allow forks, with a proposal to have a quorum. Is that a correct statement? Why do you think quorum is better than allowing forks, when quorum requires all group members to be online and forking can be offline?


### Eventually Consistent

With this approach, the Delivery Service is built in a way that may be
Expand Down
Loading