Internet-Draft | E2E Identity | October 2022 |
Barnes & Mahy | Expires 27 April 2023 | [Page] |
End-to-end (E2E) security is a critical property for modern user communications systems. E2E security protects users' communications from tampering or inspection by intermediaries that are involved in delivering those communcations from one logical endpoint to another. In addition to the much-discussed E2E encryption systems, true E2E security requires an identity mechanism that prevents the communications provider from impersonating participants in a session, as a way to gain access to the session. This document describes a high-level architecture for E2E identity, identifying the critical mechanisms that need to be specified.¶
This note is to be removed before publishing as an RFC.¶
Status information for this document may be found at https://datatracker.ietf.org/doc/draft-barnes-mimi-identity-arch/.¶
Discussion of this document takes place on the More Instant Messaging Interoperability Working Group mailing list (mailto:mimi@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/mimi/. Subscribe at https://www.ietf.org/mailman/listinfo/mimi/.¶
Source for this draft and an issue tracker can be found at https://github.com/bifurcation/mimi-identity-arch.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 27 April 2023.¶
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
End-to-end (E2E) security protects users' communications from tampering or inspection by intermediaries that are involved in delivering those communcations from one logical endpoint to another. Almost all user-to-user communications systems today involve application-level intermediaries, such as message queues or media servers. In this context, "hop-by-hop" security refers to the security properties of the channel between the client and application-level intermediary, despite the fact that this channel may transit a number of network-level intermediaries. "End-to-end" security refers to security properties of the communications between one end client and another.¶
Given the ubiquity of application-level intermediation, E2E security is a critical property for modern user communications systems. E2E security is typically implemented with two separate mechanisms:¶
Broadly speaking, E2E encryption protects against passive attacks by intermediaries. E2E identity protects against active attacks such as impersonation attacks. Both layers are required to attain a complete notion of E2E security.¶
An overview of identity considerations for messaging systems is provided in [I-D.mahy-mimi-identity]. In this document, we describe a concrete framework for E2E identity, drawing on some initial deployment experience, and highlighting the mechanisms that need to be defined for an interoperable solution.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
We use the following terms below:¶
The hardware or software used by a user to interact with an E2E-secure communications system.¶
The system of intermediaries that connects communicating clients.¶
An entity that is trusted to make statements about the identity attributes associated to clients.¶
An E2E-secure interaction among clients, e.g., an MLS group [I-D.ietf-mls-protocol]¶
An object issued by an identity authority that associates identity attributes with a client's public key.¶
The context in which E2E identity is implement is shown in Figure 1. It involves the following actors:¶
A number of clients participating in an E2E-encrypted session¶
Note that in most settings, each client will act as both a presenting client and a verifying client, authenticating itself and verifying the other clients in the session or group. Each client could use a different identity authority for its identity attributes.¶
We assume that the E2E encryption for the session is provided by means of an E2E encryption protocol such as DoubleRatchet [signal] or MLS [I-D.ietf-mls-protocol], in which each participant is cryptographically authenticated by means of a digital signature key pair.¶
The phrase "identity attributes" above is deliberately broad, to encompass any attribute of the client that is not directly cryptographcally verifiable. This includes technical identifiers such as DNS names or URLs, but also user-meaningful identifers such as given or family names, or names of organizations or roles.¶
In this context, the goal of E2E identity is to protect the authenticity of the binding between the presenting client's public key (which represents them in the E2E encryption protocol) and their identity attributes, against attack by the communications provider. Only a client that legitimately represents the claimed attributes should be able to cause a verifying client to associate those attributes with the first client. More succinctly, E2E identity protects against impersonation attacks by the communications provider.¶
The architecture described here achieves this protection by means of role separation between communications provider and the identity authority. The communications provider is untrusted, in the same way that network attackers are untrusted in the traditional Internet Threat Model [RFC3552]. The identity authority is trusted to correctly assert bindings between identity attributes and public keys. This includes verifying that presenting clients control the corresponding public keys, to avoid Unknown Key Share attacks analogous to those in [RFC8844].¶
There are other techniques that can reduce the trust that is placed in the identity authority, for example CONIKS [coniks] or various self-sovereign identity approaches. These approaches have not been deployed at scale in the same way authority-based approaches have, and they can be layered on top of a authority-based scheme. (Certificate Transparency was deployed many years after the Web PKI [RFC9162]). Thus this document focuses on an authority-based system for E2E identity, as a baseline to which these other approaches might later be added.¶
A secondary goal is to minimize the amount of information about the clients and sessions that is exposed to the identity authority. The identity authority should not learn which communications providers or verifying clients a presenting client is interacting with.¶
Verifying clients use ultimately authenticated identity attributes to make
policy decisions as to the security state of the meeting. For example, a
verifying client may have attempted to reach the holder of the SIP URI
sip:bob@exmaple.com
, and would regard the session as compromised if they were
not actually connected to that entity. Or a verifying client might wish to
require that all participants in a session belong to a given organization. E2E
identity assures that these policies are evaluated on correct inputs.¶
Figure 2 shows the three critical steps in a system E2E identity:¶
If all three of these steps is successfully completed, with the security properties described below, then the verifying client can safely associate the identity attributes in the credential with the presenting client.¶
The issuance process is similar to existing widely-deployed processes for issuing public-key credentials, such as ACME [RFC8555]. This process results in the presenting client holding a credential that associates a public key to a set of identity attributes. So the issuance process must assure the identity authority of two things about the presenting client:¶
In addition, to prevent unknown key share attacks (UKS), the issuance process must verify these properties jointly -- that the entity that controls the private key is the same as the entity that holds the identity attributes.¶
These assurances are typically provided by having the presenting client create a signature with the private key over an object that reflects the identity attributes. In ACME, the client sends a Certificate Signing Request [RFC2986], which contains both the desired identity attributes and a signature by the client's private key.¶
The presentation process accomplishes two things:¶
The latter function ties the presentation process to the E2E encryption protocol being used. The credential used for E2E identity authenticates the key pair that represents a client in the E2E encryption protocol. The E2E encryption protocol will thus already include mechanisms for the presenting client to prove they hold the private key corresponding to the credential.¶
If the E2E encryption protocol can also deliver the credential (as opposed to passing it in some other way), then in addition to simplifying application architecture, the E2E encryption protocol can provide some additional security benefits. E2E encryption protocols where the presenting client signs the credential being presented are generally immune to unknown key share attacks, even if there is a UKS vulnerability in the underlying issuance process.¶
As a concrete example: In the MLS protocol mentioned above, each client presents its credential in a LeafNode structure that is signed with the client's private key. This structure is conveyed to the other participants in an MLS-based session when the presenting client joins the session. This provides the other participants with both the credential and a signature over the credential (and the other contents of the LeafNode) which acts as a proof of possession of the private key.¶
A credential will typically be an object signed by the identity authority, so
the verifying client will only need to know the identity authority's public key
in order to verify that the credential was authentically issued by the identity
authority. Credentials will typically also have some notion of expiration,
e.g., the notBefore
/notAfter
fields in X.509 or the nbf
/exp
fields
in JWT [RFC5280] [RFC7519]. Verification at this level is simple, fast,
and privacy-preserving.¶
In some cases, though, it is necessary to have a notion of revocation of credentials. Here revocation of a credential means that the credential will no longer be accepted by verifying clients, even though the credential itself is otherwise valid (e.g., its signature is valid and it has not expired). Since the credential itself cannot reflect revocation information, a verifying client needs to get revocation information from the identity authority independently.¶
Several design patterns for revocation have been explored in the PKI context:¶
The Web PKI has generally settled on central CRL fetching (5), by the following process of elimination:¶
These design patterns and arguments also apply, mutatis mutandis, in the context of E2E identity. Thus, revocation mechanisms developed for E2E identity should be oriented toward centralized CRL fetching, but accounting for an important difference -- that the client vendor is often the communications service provider, and thus an untrusted actor. This means that clients will need to verify the authenticity of revocation information, and mechanisms such as CRLite [crlite] will not work. Rather than having the vendor compress an uncompressed representation (as in CRLite), the revocation data provided by the identity authority will have to already be compact.¶
There are a few deployed and emerging models for E2E identity that can be viewed as instantiations of the above architecture. In this section, we examine a few example cases.¶
E2E-encrypted messaging apps used by billions of users today rely on users manually comparing each others' key fingerprints for their only E2E identity assurance. This can be viewed as a degenerate case of the above architecture:¶
This case is degenerate in the sense that it does not actually authenticate any identity attributes; the only non-cryptographic attributes attested are those claimed by the presenting client in the verification interaction. This system is thus vulnerable to UKS attacks when the user of the presenting client abuses their position as a trusted identity authority [signal-uks].¶
X.509 and related PKI technologies are a widely used instantiation of authority-based authentication, and map naturally in to this architecture:¶
X509Credential
mechanism in MLS.¶
This scheme works well for cases where a PKI is available with authorities that will attest to the required idenitty attributes, and where the operational context allows for certificates to be provisioned to clients. Multiple E2E-secure communications products today use this scheme.¶
Certificates and PKI protocols tend to be a bad fit for authenticating user identities. Systems like SAML [saml] and OpenID Connect [oidc] are more commonly used for user identity, but only produce bearer tokens, not the public key credentials required for E2E identity -- using bearer tokens for E2E identity would allow the verifying client to impersonate the presenting client! Likewise, because the verifier needs to check a bearer tokens validity directly with the issuer, the identity authority learns every verifier to whom a client authenticates.¶
More recently, there has been work to apply the W3C Verifiable Credentials (VC) framework to this problem [W3C.vc-data-model]. The VC model aligns well conceptually with the above architecture, and some of the required protocols are in development:¶
X509Credential
integration in MLS mentioned above.¶
A VC-based model for E2E identity is clearly still incomplete, but given the good conceptual alignment and potential for a better fit with user identity than PKI, it seems like a promising candidate for further development.¶
The MIMI working group is focused on establishing interoperability among messaging systems. In order to have E2E identity protections in an interoperable context, the interoperating parties will need to agree on the answers to a few questions:¶
How are credentials integrated with the E2E encryption protocol?¶
Most of these questions are addressed at the presentation and verification phases in the above architecture. The interoperability considerations around issuance are different: For issuance, there does not need to be a common solution across the population of clients, only between a client and the authority that issues its credential. Nonetheless, having a common, interoperable issuance interface is still valuable, since it simplifies integration between clients and authorities.¶
This document describes a scheme for authentication in E2E security contexts. Security requirements are described in Section 3, a general architecture in Section 4, and some candidate instantiations of the architecture in Section 5.¶
This document has no IANA actions.¶