Draft: draft-ietf-mls-protocol

Commentary: The very first commit from PR ( ) was removed and a separate Issue is filled for unifying the use of " ` " and " _ " . 
 We inconsistently use the backtick , the underscore or nothing for messages fields or specific operations in the draft . This needs a fix , currently the opinion is to use the TLS style ( aka remove everything )
Paragraph (version A):
All trees used in this protocol are left-balanced binary trees.  A
binary tree is _full_ (and _balanced_) if it its size is a power of
two and for any parent node in the tree, its left and right subtrees
have the same size.  If a subtree is full and it is not a subset of
any other full subtree, then it is _maximal_.
Paragraph (version B):
All trees used in this protocol are left-balanced binary trees.  A
binary tree is _full_ (and _balanced_) if its size is a power of two
and for any parent node in the tree, its left and right subtrees have
the same size.  If a subtree is full and it is not a subset of any
other full subtree, then it is _maximal_.
Paragraph (version A):
In order to update the state of the group such as adding and removing
participants, MLS messages are used to make changes to the group's
ratchet tree.  The participant proposing an update to the tree
transmits a representation of a set of tree nodes along the direct
path from a leaf to the root.  Other participants in the group can
use these nodes to update their view of the tree, aligning their copy
of the tree to the sender's.
Paragraph (version A):
The secret value is encrypted for the subtree corresponding to the
node's non-updated child, i.e., the child not on the direct path.
There is one encrypted secret for each public key in the resolution
of the non-updated child.  In particular, for the leaf node, there
are no encrypted secrets, since a leaf node has no children.
Paragraph (version B):
In order to update the state of the group such as adding and removing
participants, MLS messages are used to make changes to the group's
ratchet tree.  The participant proposing an update to the tree
transmits a set of values for intermediate nodes in the direct path
of a leaf.  Other participants in the group can use these nodes to
update their view of the tree, aligning their copy of the tree to the
sender's.
Paragraph (version B):
The secret value is encrypted for the subtree corresponding to the
parent's non-updated child, i.e., the child on the copath of the leaf
node.  There is one encrypted secret for each public key in the
resolution of the non-updated child.  In particular, for the leaf
node, there are no encrypted secrets, since a leaf node has no
children.
Paragraph (version A):
As described in ratchet-tree-updates, each MLS message needs to
transmit node values along the direct path from a leaf to the root.
The path contains a public key for the leaf node, and a public key
and encrypted secret value for intermediate nodes in the path.  In
both cases, the path is ordered from the leaf to the root; each node
MUST be the parent of its predecessor.
Paragraph (version B):
As described in ratchet-tree-updates, each MLS message needs to
transmit node values along the direct path of a leaf.  The path
contains a public key for the leaf node, and a public key and
encrypted secret value for intermediate nodes in the path.  In both
cases, the path is ordered from the leaf to the root; each node MUST
be the parent of its predecessor.