@@ -260,7 +260,7 @@ While the recommendations of this document are not mandatory to follow in order
260260to interoperate at the protocol level, they affect the overall security
261261guarantees that are achieved by a messaging application. This is especially true
262262in the case of active adversaries that are able to compromise clients, the
263- delivery service , or the authentication service .
263+ Delivery Service (DS) , or the Authentication Service (AS) .
264264
265265--- middle
266266
@@ -307,7 +307,7 @@ A _Proposal_ message proposes
307307a change to be made in the next epoch, such as adding or removing a member.
308308A _Commit_ message initiates a new epoch by instructing members of the group to
309309implement a collection of proposals. Proposals and Commits are collectively
310- called _Handshake messages_.
310+ called _handshake messages_.
311311A _KeyPackage_ provides keys that can be used to add the client to a group,
312312including its LeafNode, and _Signature Key_.
313313A _Welcome_ message provides a new member to the group with the information to
@@ -316,7 +316,7 @@ initialize their state for the epoch in which they were added.
316316Of course most (but not all) applications use MLS to send encrypted group messages.
317317An _application message_ is an MLS message with an arbitrary application payload.
318318
319- Finally, a _PublicMessage_ contains an integrity-protected MLS Handshake message,
319+ Finally, a _PublicMessage_ contains an integrity-protected MLS handshake message,
320320while a _PrivateMessage_ contains a confidential, integrity-protected Handshake
321321or application message.
322322
@@ -362,7 +362,7 @@ may even involve some action by users. For example:
362362 existing PKI roles (e.g., Certification Authorities).
363363
364364It is important to note that the AS can be
365- completely abstract in the case of a Service Provider which allows MLS
365+ completely abstract in the case of a service provider which allows MLS
366366clients to generate, distribute, and validate credentials themselves.
367367As with the AS, the DS can be completely abstract if
368368users are able to distribute credentials and messages without relying
@@ -416,18 +416,18 @@ Initial Keying Material -----------------------------------> |
416416
417417Get Bob Initial Keying Material ---------------------------> |
418418<------------------------------- Bob Initial Keying Material |
419- Add Bob to Group ------------------------------------------> | Step 3
420- Welcome (Bob) ---------------------------------------------> |
421- <-------------------------------- Add Bob to Group |
422- <----------------------------------- Welcome (Bob) |
419+ Add Bob to group ------------------------------------------> | Step 3
420+ Welcome(Bob) - ---------------------------------------------> |
421+ <-------------------------------- Add Bob to group |
422+ <------------------------------------ Welcome(Bob) |
423423
424424Get Charlie Initial Keying Material -----------------------> |
425425<--------------------------- Charlie Initial Keying Material |
426- Add Charlie to Group --------------------------------------> |
427- Welcome (Charlie) -----------------------------------------> | Step 4
428- <---------------------------- Add Charlie to Group |
429- <----------------- Add Charlie to Group |
430- <-------------------- Welcome (Charlie) |
426+ Add Charlie to group --------------------------------------> |
427+ Welcome(Charlie) - -----------------------------------------> | Step 4
428+ <---------------------------- Add Charlie to group |
429+ <----------------- Add Charlie to group |
430+ <--------------------- Welcome(Charlie) |
431431~~~
432432{: # fig-group-formation-example title="Group Formation Example"}
433433
@@ -456,7 +456,7 @@ up his initial keying material. She then generates two messages:
456456* A message to the entire group (which at this point is just her and Bob)
457457 that adds Bob to the group.
458458
459- * A _Welcome_ message just to Bob encrypted with his initial keying material that
459+ * A Welcome message just to Bob encrypted with his initial keying material that
460460 includes the secret keying information necessary to join the group.
461461
462462She sends both of these messages to the DS, which is responsible
@@ -474,7 +474,7 @@ up his initial keying material and then generates two messages:
474474* A message to the entire group (consisting of her, Bob, and Charlie) adding
475475 Charlie to the group.
476476
477- * A _Welcome_ message just to Charlie encrypted with his initial keying material that
477+ * A Welcome message just to Charlie encrypted with his initial keying material that
478478 includes the secret keying information necessary to join the group.
479479
480480At the completion of this process, we have a group with Alice, Bob, and Charlie,
@@ -552,7 +552,7 @@ determine how to present this situation to users. For instance, it may render
552552messages to and from a given user identically regardless of which client they
553553are associated with, or it may choose to distinguish them.
554554
555- When a client is part of a Group , it is called a Member . A group in MLS is
555+ When a client is part of a group , it is called a member . A group in MLS is
556556defined as the set of clients that have knowledge of the shared group secret
557557established in the group key establishment phase. Note that until a client has
558558been added to the group and contributed to the group secret in a manner
@@ -745,7 +745,7 @@ DS might fall into:
745745
746746Strategies for sequencing messages in strongly and eventually consistent systems
747747are described in the next two subsections. Most DSs will use the
748- Strongly Consistent paradigm, but this remains a choice that can be handled in
748+ strongly consistent paradigm, but this remains a choice that can be handled in
749749coordination with the client and advertised in the KeyPackages.
750750
751751However, note that a malicious DS could also reorder messages or
@@ -1002,7 +1002,7 @@ application could decide that a group administrator will be the only member to
10021002perform Add and Remove operations. On the other hand, in many settings such as
10031003open discussion forums, joining can be allowed for anyone.
10041004
1005- While MLS Application messages are always encrypted,
1005+ While MLS application messages are always encrypted,
10061006MLS handshake messages can be sent either encrypted (in an MLS
10071007PrivateMessage) or unencrypted (in an MLS PublicMessage). Applications
10081008may be designed such that intermediaries need to see handshake
@@ -1369,7 +1369,7 @@ cryptographically binding it to the message.
13691369> **Recommendation:** Use the "Additional Authenticated Data" field of the
13701370> PrivateMessage instead of using other unauthenticated means of sending
13711371> metadata throughout the infrastructure. If the data should be kept private, the
1372- > infrastructure should use encrypted Application messages instead.
1372+ > infrastructure should use encrypted application messages instead.
13731373
13741374# ## Metadata Protection for Unencrypted Group Operations
13751375
@@ -1579,16 +1579,16 @@ the following compromise scenarios:
15791579
15801580# ## Compromise of Symmetric Keying Material {#symmetric-key-compromise}
15811581
1582- As described above, each MLS epoch creates a new Group Secret .
1582+ As described above, each MLS epoch creates a new group secret .
15831583
1584- These group secrets are then used to create a per-sender Ratchet Secret , which
1584+ These group secrets are then used to create a per-sender ratchet secret , which
15851585in turn is used to create a per-sender
15861586Authenticated Encryption with Associated Data (AEAD) {{!RFC5116}}
1587- key that is then used to encrypt MLS Plaintext messages. Each time a message is
1588- sent, the Ratchet Secret is used to create a new Ratchet Secret and a new
1587+ key that is then used to encrypt MLS plaintext messages. Each time a message is
1588+ sent, the ratchet secret is used to create a new ratchet secret and a new
15891589corresponding AEAD key. Because of the properties of the key derivation
1590- function, it is not possible to compute a Ratchet Secret from its corresponding
1591- AEAD key or compute Ratchet Secret n-1 from Ratchet Secret n.
1590+ function, it is not possible to compute a ratchet secret from its corresponding
1591+ AEAD key or compute ratchet secret n-1 from ratchet secret n.
15921592
15931593Below, we consider the compromise of each of these pieces of keying material in
15941594turn, in ascending order of severity. While this is a limited kind of
@@ -1598,22 +1598,22 @@ only part of the memory leaks to the adversary.
15981598# ### Compromise of AEAD Keys
15991599
16001600In some circumstances, adversaries may have access to specific AEAD keys and
1601- nonces which protect an Application message or a Group Operation message. Compromise of
1601+ nonces which protect an application message or a group operation message. Compromise of
16021602these keys allows the attacker to decrypt the specific message encrypted with
1603- that key but no other; because the AEAD keys are derived from the Ratchet
1604- Secret , it cannot generate the next Ratchet Secret and hence not the next AEAD
1603+ that key but no other; because the AEAD keys are derived from the ratchet
1604+ secret , it cannot generate the next ratchet secret and hence not the next AEAD
16051605key.
16061606
1607- In the case of an Application message, an AEAD key compromise means that the
1607+ In the case of an application message, an AEAD key compromise means that the
16081608encrypted application message will be leaked as well as the signature over that
16091609message. This means that the compromise has both confidentiality and privacy
16101610implications on the future AEAD encryptions of that chain. In the case of a
1611- Group Operation message, only the privacy is affected, as the signature is
1611+ group operation message, only the privacy is affected, as the signature is
16121612revealed, because the secrets themselves are protected by Hybrid Public Key Encryption
16131613(HPKE). Note
16141614that under that compromise scenario, authentication is not affected in either of
16151615these cases. As every member of the group can compute the AEAD keys for all the
1616- chains (they have access to the Group Secrets ) in order to send and receive
1616+ chains (they have access to the group secrets ) in order to send and receive
16171617messages, the authentication provided by the AEAD encryption layer of the common
16181618framing mechanism is weak. Successful decryption of an AEAD encrypted message
16191619only guarantees that some member of the group sent the message.
@@ -1625,10 +1625,10 @@ forms of symmetric key compromise described in {{symmetric-key-compromise}}.
16251625
16261626# ### Compromise of Ratchet Secret Material
16271627
1628- When a Ratchet Secret is compromised, the adversary can compute both the current
1628+ When a ratchet secret is compromised, the adversary can compute both the current
16291629AEAD keys for a given sender and any future keys for that sender in this
16301630epoch. Thus, it can decrypt current and future messages by the corresponding
1631- sender. However, because it does not have previous Ratchet Secrets , it cannot
1631+ sender. However, because it does not have previous ratchet secrets , it cannot
16321632decrypt past messages as long as those secrets and keys have been deleted.
16331633
16341634Because of its forward secrecy guarantees, MLS will also retain secrecy of all
@@ -1641,14 +1641,14 @@ access any protected messages from future epochs.
16411641
16421642# ### Compromise of the Group Secrets of a Single Group for One or More Group Epochs
16431643
1644- An adversary who gains access to a set of Group secrets -- as when a member of the
1644+ An adversary who gains access to a set of group secrets -- as when a member of the
16451645group is compromised -- is significantly more powerful. In this section, we
16461646consider the case where the signature keys are not compromised. This can occur
16471647if the attacker has access to part of the memory containing the group secrets
16481648but not to the signature keys which might be stored in a secure enclave.
16491649
16501650In this scenario, the adversary gains the ability to compute any number of
1651- Ratchet Secrets for the epoch and their corresponding AEAD encryption keys and
1651+ ratchet secrets for the epoch and their corresponding AEAD encryption keys and
16521652thus can encrypt and decrypt all messages for the compromised epochs.
16531653
16541654If the adversary is passive, it is expected from the PCS properties of the MLS
@@ -1813,7 +1813,7 @@ not be enough to provide strong privacy or anonymity properties.
18131813In the case where private data or metadata has to be persisted on the servers
18141814for functionality (mappings between identities and push tokens, group
18151815metadata, etc.), it should be stored encrypted at rest and only decrypted upon need
1816- during the execution. Honest Service Providers can rely on such "encryption at
1816+ during the execution. Honest service providers can rely on such "encryption at
18171817rest" mechanisms to be able to prevent access to the data when not using it.
18181818
18191819> **Recommendation:** Store cryptographic material used for server-side
@@ -1846,20 +1846,20 @@ clients, it can provide stale keys. This does not inherently lead to compromise
18461846of the message stream, but does allow the DS to attack post-compromise security to
18471847a limited extent. This threat can be mitigated by having initial keys expire.
18481848
1849- Initial keying material (KeyPackages) using the `basic` Credential type is more
1849+ Initial keying material (KeyPackages) using the `basic` credential type is more
18501850vulnerable to replacement by a malicious or compromised DS, as there is no
18511851built-in cryptographic binding between the identity and the public key of the
18521852client.
18531853
1854- > **Recommendation:** Prefer a Credential type in KeyPackages which includes a
1854+ > **Recommendation:** Prefer a credential type in KeyPackages which includes a
18551855> strong cryptographic binding between the identity and its key (for example, the
1856- > `x509` Credential type). When using the `basic` Credential type, take extra
1856+ > `x509` credential type). When using the `basic` credential type, take extra
18571857> care to verify the identity (typically out of band).
18581858
18591859
18601860# ### Privacy of Delivery and Push Notifications
18611861
1862- Push- tokens provide an important mechanism that is often ignored from
1862+ push tokens provide an important mechanism that is often ignored from
18631863the standpoint of privacy considerations. In many modern messaging
18641864architectures, applications are using push notification mechanisms
18651865typically provided by OS vendors. This is to make sure that when
@@ -1871,7 +1871,7 @@ round trip with the DS.
18711871
18721872To "push" this information to the device, the service provider and the OS
18731873infrastructures use unique per-device, per-application identifiers called
1874- push- tokens. This means that the push notification provider and the service
1874+ push tokens. This means that the push notification provider and the service
18751875provider have information on which devices receive information and at which
18761876point in time. Alternatively, non-mobile applications could use a WebSocket or
18771877persistent connection for notifications directly from the DS.
@@ -1888,9 +1888,9 @@ is not acceptable to create artificial delays for message retrieval.
18881888> delay notifications randomly across recipient devices using a mixnet or other
18891889> techniques.
18901890
1891- Note that with a legal request to ask the service provider for the push- token
1891+ Note that with a legal request to ask the service provider for the push token
18921892associated with an identifier, it is easy to correlate the token with a second
1893- request to the company operating the push- notification system to get information
1893+ request to the company operating the push notification system to get information
18941894about the device, which is often linked with a real identity via a cloud
18951895account, a credit card, or other information.
18961896
@@ -1932,33 +1932,33 @@ attacker who has compromised the AS to silently impersonate the client.
19321932
19331933# ### Authentication Compromise: Ghost Users and Impersonation
19341934
1935- One important property of MLS is that all Members know which other members are
1936- in the group at all times. If all Members of the group and the Authentication
1935+ One important property of MLS is that all members know which other members are
1936+ in the group at all times. If all members of the group and the Authentication
19371937Service are honest, no parties other than the members of the current group can
1938- read and write messages protected by the protocol for that Group .
1938+ read and write messages protected by the protocol for that group .
19391939
19401940This guarantee applies to the cryptographic identities of the members.
19411941Details about how to verify the identity of a client depend on the MLS
1942- Credential type used. For example, cryptographic verification of credentials can
1942+ credential type used. For example, cryptographic verification of credentials can
19431943be largely performed autonomously (e.g., without user interaction) by the
1944- clients themselves for the `x509` Credential type.
1944+ clients themselves for the `x509` credential type.
19451945
1946- In contrast, when MLS clients use the `basic` Credential type, some other
1946+ In contrast, when MLS clients use the `basic` credential type, some other
19471947mechanism must be used to verify identities. For instance, the Authentication
19481948Service could operate some sort of directory server to provide keys, or users
19491949could verify keys via an out-of-band mechanism.
19501950
1951- > **Recommendation:** Select the MLS Credential type with the strongest security
1951+ > **Recommendation:** Select the MLS credential type with the strongest security
19521952> which is supported by all target members of an MLS group.
19531953
1954- > **Recommendation:** Do not use the same signature keypair across
1954+ > **Recommendation:** Do not use the same signature key pair across
19551955> groups. Update all keys for all groups on a regular basis. Do not preserve
19561956> keys in different groups when suspecting a compromise.
19571957
19581958If the AS is compromised, it could validate a signature
1959- keypair (or generate a new one) for an attacker. The attacker could then use this keypair to join a
1959+ key pair (or generate a new one) for an attacker. The attacker could then use this key pair to join a
19601960group as if it were another of the user's clients. Because a user can have many
1961- MLS clients running the MLS protocol, it possibly has many signature keypairs
1961+ MLS clients running the MLS protocol, it possibly has many signature key pairs
19621962for multiple devices. These attacks could be very difficult to detect,
19631963especially in large groups where the UI might not reflect all the changes back
19641964to the users. If the application participates in a key transparency mechanism in
@@ -2052,7 +2052,7 @@ whom replay is an important risk should apply mitigations at the application lay
20522052discussed below.
20532053
20542054In addition to the risks discussed in {{symmetric-key-compromise}}, an attacker
2055- with access to the Ratchet Secrets for an endpoint can replay PrivateMessage
2055+ with access to the ratchet secrets for an endpoint can replay PrivateMessage
20562056objects sent by other members of the group by taking the signed content of the
20572057message and re-encrypting it with a new generation of the original sender's
20582058ratchet. If the other members of the group interpret a message with a new
0 commit comments