extensions-draft and crate feature virtual-clients-draft and (32-bit or 64-bit) only.Expand description
Virtual Client Operation Secret Tree (mls-virtual-clients draft): a per-emulation-epoch secret tree whose leaves expand into one operation ratchet per operation type. Virtual Client Operation Secret Tree (mls-virtual-clients draft).
A tree of secrets with the same structure as the RFC 9420 secret tree
(Section 9): it has the same set of nodes and edges as the emulation
group’s ratchet tree at the corresponding epoch, parent-to-child node
derivation uses the same "tree" label with "left" / "right"
context, and each leaf is expanded once it is first used. It differs
from the RFC 9420 secret tree in two ways: the root is the
per-emulation-epoch epoch_base_secret rather than a secret derived
from encryption_secret, and each leaf expands into one operation
ratchet per VirtualClientOperationType instead of a handshake and an
application sender ratchet.
Each ratchet hands out one OperationSecret per generation, bound to
the spec’s OperationContext
(epoch_id, leaf_index, generation, operation_type, operation_context).
Forward secrecy mirrors the RFC 9420 secret tree: parent node secrets
are deleted once their children are derived, a leaf secret is deleted as
soon as the initial ratchet secrets for all operation types have been
derived, and ratchet heads plus generation secrets are deleted as soon
as the operation secret of a generation has been derived. Deriving for a
generation ahead of the ratchet head retains only the
context-independent operation_generation_secret of each skipped
generation, since the final operation secret also binds the (then still
unknown) operation context. The retained entry is deleted when the
operation for that generation arrives. Retention is bounded by
MAXIMUM_FORWARD_DISTANCE and OUT_OF_ORDER_TOLERANCE.
Structs§
- Operation
Secret Tree - Per-emulation-epoch Virtual Client Operation Secret Tree.