Skip to content

Commit df16fc5

Browse files
authored
Merge pull request #328 from ekr/issue312_consistency
Various minor consistency issues. Fixes #312
2 parents 21be99f + c559cff commit df16fc5

2 files changed

Lines changed: 162 additions & 184 deletions

File tree

draft-ietf-mls-architecture.md

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ While the recommendations of this document are not mandatory to follow in order
260260
to interoperate at the protocol level, they affect the overall security
261261
guarantees that are achieved by a messaging application. This is especially true
262262
in 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
307307
a change to be made in the next epoch, such as adding or removing a member.
308308
A _Commit_ message initiates a new epoch by instructing members of the group to
309309
implement a collection of proposals. Proposals and Commits are collectively
310-
called _Handshake messages_.
310+
called _handshake messages_.
311311
A _KeyPackage_ provides keys that can be used to add the client to a group,
312312
including its LeafNode, and _Signature Key_.
313313
A _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.
316316
Of course most (but not all) applications use MLS to send encrypted group messages.
317317
An _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,
320320
while a _PrivateMessage_ contains a confidential, integrity-protected Handshake
321321
or 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

364364
It 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
366366
clients to generate, distribute, and validate credentials themselves.
367367
As with the AS, the DS can be completely abstract if
368368
users are able to distribute credentials and messages without relying
@@ -416,18 +416,18 @@ Initial Keying Material -----------------------------------> |
416416

417417
Get 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

424424
Get 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

462462
She 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

480480
At 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
552552
messages to and from a given user identically regardless of which client they
553553
are 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
556556
defined as the set of clients that have knowledge of the shared group secret
557557
established in the group key establishment phase. Note that until a client has
558558
been added to the group and contributed to the group secret in a manner
@@ -745,7 +745,7 @@ DS might fall into:
745745

746746
Strategies for sequencing messages in strongly and eventually consistent systems
747747
are 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
749749
coordination with the client and advertised in the KeyPackages.
750750

751751
However, 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
10021002
perform Add and Remove operations. On the other hand, in many settings such as
10031003
open 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,
10061006
MLS handshake messages can be sent either encrypted (in an MLS
10071007
PrivateMessage) or unencrypted (in an MLS PublicMessage). Applications
10081008
may 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
15851585
in turn is used to create a per-sender
15861586
Authenticated 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
15891589
corresponding 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

15931593
Below, we consider the compromise of each of these pieces of keying material in
15941594
turn, 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

16001600
In 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
16021602
these 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
16051605
key.
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
16081608
encrypted application message will be leaked as well as the signature over that
16091609
message. This means that the compromise has both confidentiality and privacy
16101610
implications 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
16121612
revealed, because the secrets themselves are protected by Hybrid Public Key Encryption
16131613
(HPKE). Note
16141614
that under that compromise scenario, authentication is not affected in either of
16151615
these 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
16171617
messages, the authentication provided by the AEAD encryption layer of the common
16181618
framing mechanism is weak. Successful decryption of an AEAD encrypted message
16191619
only 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
16291629
AEAD keys for a given sender and any future keys for that sender in this
16301630
epoch. 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
16321632
decrypt past messages as long as those secrets and keys have been deleted.
16331633

16341634
Because 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
16451645
group is compromised -- is significantly more powerful. In this section, we
16461646
consider the case where the signature keys are not compromised. This can occur
16471647
if the attacker has access to part of the memory containing the group secrets
16481648
but not to the signature keys which might be stored in a secure enclave.
16491649

16501650
In 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
16521652
thus can encrypt and decrypt all messages for the compromised epochs.
16531653

16541654
If 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.
18131813
In the case where private data or metadata has to be persisted on the servers
18141814
for functionality (mappings between identities and push tokens, group
18151815
metadata, 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
18171817
rest" 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
18461846
of the message stream, but does allow the DS to attack post-compromise security to
18471847
a 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
18501850
vulnerable to replacement by a malicious or compromised DS, as there is no
18511851
built-in cryptographic binding between the identity and the public key of the
18521852
client.
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
18631863
the standpoint of privacy considerations. In many modern messaging
18641864
architectures, applications are using push notification mechanisms
18651865
typically provided by OS vendors. This is to make sure that when
@@ -1871,7 +1871,7 @@ round trip with the DS.
18711871

18721872
To "push" this information to the device, the service provider and the OS
18731873
infrastructures 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
18751875
provider have information on which devices receive information and at which
18761876
point in time. Alternatively, non-mobile applications could use a WebSocket or
18771877
persistent 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
18921892
associated 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
18941894
about the device, which is often linked with a real identity via a cloud
18951895
account, 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
19371937
Service 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

19401940
This guarantee applies to the cryptographic identities of the members.
19411941
Details 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
19431943
be 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
19471947
mechanism must be used to verify identities. For instance, the Authentication
19481948
Service could operate some sort of directory server to provide keys, or users
19491949
could 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

19581958
If 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
19601960
group 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
19621962
for multiple devices. These attacks could be very difficult to detect,
19631963
especially in large groups where the UI might not reflect all the changes back
19641964
to 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
20522052
discussed below.
20532053

20542054
In 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
20562056
objects sent by other members of the group by taking the signed content of the
20572057
message and re-encrypting it with a new generation of the original sender's
20582058
ratchet. If the other members of the group interpret a message with a new

0 commit comments

Comments
 (0)