-
Notifications
You must be signed in to change notification settings - Fork 28
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
Can the Delivery Service actually filter Commit messages? #251
Comments
(issue opened following discussions with @msprotz and @MartinSarkany) |
Yes, this is an issue that we won't be able to fix without something like a ZKP. Even with a PublicMessage, the sender of the commit could encrypt garbage to subsets of its copath instead of the correct path secrets. There's already some work on this which you can find here: https://hal.science/hal-03558760/document If I read it correctly, it shows it's possible, even though the performance might not be what most deployments will be able to stomach. |
There are three cases when this could happen: What remedies do we have?
Note that cases a) and b) can occur even if the hub has no decision making in the group other than ordering. |
Thanks for the clarifications, when opening this issue I was thinking of the case a). I don't think we can do much about case b), and for case c) we would need some flavor of ZKP as mentioned by Konrad. To help with case a), I think the architecture document should not say that the DS can filter commits based on epoch numbers, the DS should only be in charge of transmitting all commits in a consistent order to group members. This doesn't change much for case b) and c), however for case a) it prevents the group to be denied of service by the DS (because every group member reject the first commit and that further commits (of the same epoch) would be filtered by the DS). |
Well, we still have a problem with a) whether the DS is involved or not. Say Alice, Bob, and Cathy are in a group. Their DS just forwards Commits to the group in the order received. Alice sends a Commit that she thinks is valid. Bob receives it but thinks it is invalid. Cathy is offline. From Bob's perspective if Alice had a bug, the best thing Bob could do would be to take some action to heal the group with Alice and any changes she tried to make in her broken Commit. If Alice was malicious the best thing Bob could do would be to remove Alice from the uncommitted version of the group. Meanwhile, if Alice had a bug, she is oblivious that Bob didn't like her Commit until she sees enough MLS messages from Bob in the "wrong" epoch(s) to realize they have diverged. If they have, Alice cannot distinguish if Bob is on the "wrong" epoch because one of them have a bug, or because Bob is malicious/compromised. Is this better or worse than if the DS was actively involved?
|
I agree that my proposed change do not solve every problem we might encounter in the case of buggy implementations, and that forks might happen "naturally" whatever the DS do. That being said, I do not have strong opinion on this issue, although I do prefer DS-without-epoch-filtering, I might be missing things in the bigger picture (e.g. what happens in MIMI, DS-with-epoch-filtering might help the DS to know what is the current group state?). What do others think? (@bifurcation @kkohbrok @raphaelrobert) |
I agree that refraining from filtering based on epoch on the DS side solves some of the problems one might run into when using MLS. However, I do think we should include the "can filter" language. After all it only informs the reader of the possibility to filter and doesn't recommend or even require it. In some applications, where clients within a group trust one-another not to break groups, epoch-based filtering (in case of two clients committing at the same time) is the way to go and forwarding all commits might be prohibitive e.g. because bandwidth is expensive. |
I agree that:
(Note that on the last point, you don't even have to rollback. You could have the DS wait until it hears from a quorum before updating its state.) It seems like it would be appropriate to discuss the risks of filtering in this doc, in basically the terms above. |
Can I get a volunteer to draft up a PR? See email. |
The document says (5.2.1)
I think this may be a problem if a malformed Commit for epoch
n
is sent by one of the group members, and this Commit is selected by the Delivery Service:n
n+1
and reject further Commits that may be sent by other group members (that are still in epochn
)The text was updated successfully, but these errors were encountered: