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

Remove essentially all uses of "tree". #201

Merged
merged 3 commits into from
Nov 7, 2023

Conversation

ekr
Copy link
Collaborator

@ekr ekr commented Aug 15, 2023

In Eric Vyncke's DISCUSS he correctly notes that LeafNode is used without being defined. I fixed that by just removing the term but more generally the problem is the use of "tree" without it being defined. Obviously the tree is an important concept but that's really a matter for mls-protocol not mls-architecture which is just concerned with group state as an abstract structure.

This change removes essentially all uses of the term tree except for:

  • In the final security considerations section where I think it's OK in context.

  • In this sentence

    "A maximum number of steps that clients will move a secret tree ratchet forward in response to a single message before rejecting it."

I'm pretty sure that this can be reworded but I wasn't quite sure the best way.

In Eric Vyncke's DISCUSS he correctly notes that LeafNode is used
without being defined. I fixed that by just removing the term
but more generally the problem is the use of "tree" without
it being defined. Obviously the tree is an important concept
but that's really a matter for mls-protocol not mls-architecture
which is just concerned with group state as an abstract structure.

This change removes essentially all uses of the term tree except
for:

- In the final security considerations section where I think it's
  OK in context.

- In this sentence

  "A maximum number of steps that clients will move a secret tree ratchet
  forward in response to a single message before rejecting it."

I'm pretty sure that this can be reworded but I wasn't quite sure
the best way.
Comment on lines 1022 to 1028
- If assisted joining is desired (meaning that the ratchet tree is not
- If assisted joining is desired (meaning that the group state is not
provided in Welcome messages), there must be a method to download the
ratchet tree corresponding to a group.
group state corresponding to a group.
- If assisted joining is desired and the Delivery Service is not able to
compute the ratchet tree itself (because some proposals or commits are sent
compute the group state itself (because some proposals or commits are sent
encrypted), there must be a method for group members to publish the updated
ratchet tree after each commit.
group state after each commit.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think these cases all refer to the ratchet_tree extension, as opposed to the ratchet tree generally. I suggest leaving these as is.

@@ -1019,13 +1019,13 @@ interoperate.

- Additional services may or may not be required depending on the application
design:
- If assisted joining is desired (meaning that the ratchet tree is not
- If assisted joining is desired (meaning that the group state is not
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
- If assisted joining is desired (meaning that the group state is not
- If assisted joining is desired (meaning that the `ratchet_tree` extension is not

provided in Welcome messages), there must be a method to download the
ratchet tree corresponding to a group.
group state corresponding to a group.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
group state corresponding to a group.
ratchet tree corresponding to a group.

- If assisted joining is desired and the Delivery Service is not able to
compute the ratchet tree itself (because some proposals or commits are sent
compute the group state itself (because some proposals or commits are sent
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
compute the group state itself (because some proposals or commits are sent
compute the group state itself, including the corresponding `ratchet_tree`
object, (for example, because some proposals or commits are sent

@ekr ekr mentioned this pull request Aug 16, 2023
Copy link
Collaborator

@bifurcation bifurcation left a comment

Choose a reason for hiding this comment

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

I'm less offended by "ratchet tree" here and more by "assisted joining", which is not defined elsewhere. So instead of the point edit @ekr has proposed here, I would suggest rewriting the two "assisted join" bullets entirely, something like:

Instead of distributing group information to a new members entirely within a Welcome messages, an application may rely on servers to store public information about the group, such as group members' credentials and related public keys, and provide this information to new members. (In such a system, Welcome messages are still necessary to convey confidential information about the group.) Such an application will require mechanisms for new members to download the current information for a group, and for members to update the information as the group evolves.

@ekr
Copy link
Collaborator Author

ekr commented Oct 21, 2023

I adopted Richard's suggestion here. @rohan-wire @bifurcation PTAL.

@rohan-wire
Copy link
Contributor

I'm less offended by "ratchet tree" here and more by "assisted joining", which is not defined elsewhere. So instead of the point edit @ekr has proposed here, I would suggest rewriting the two "assisted join" bullets entirely, something like:

Instead of distributing group information to a new members entirely within a Welcome messages, an application may rely on servers to store public information about the group, such as group members' credentials and related public keys, and provide this information to new members. (In such a system, Welcome messages are still necessary to convey confidential information about the group.) Such an application will require mechanisms for new members to download the current information for a group, and for members to update the information as the group evolves.

Fair enough, but this is the section on Operational Considerations, which is essentially a checklist of policy knobs for people who implement and deploy MLS. By this point in the document, these people better know what an assisted join is or we are doing them a disservice.

@beurdouche beurdouche merged commit 09a72d2 into mlswg:main Nov 7, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

5 participants