<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.7 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-barnes-mls-addl-creds-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="Additional MLS Credentials">Additional MLS Credentials</title>
    <seriesInfo name="Internet-Draft" value="draft-barnes-mls-addl-creds-01"/>
    <author fullname="Richard Barnes">
      <organization>Cisco</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <author fullname="Suhas Nandakumar">
      <organization>Cisco</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <date year="2024" month="March" day="04"/>
    <area>Security</area>
    <workgroup>Messaging Layer Security</workgroup>
    <abstract>
      <?line 45?>

<t>This specification defines two new kinds of credentials for use within the
Message Layer Security (MLS) credential framework: UserInfo Verifiable
Credentials and multi-credentials.  UserInfo Verifiable Credentials allow
clients to present credentials that associate OpenID Connect attributes to a
signature key pair held by the client.  Multi-credentials allow clients to
present authenticated attributes from multiple sources, or to present
credentials in different formats to support groups with heterogeneous credential
support.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-barnes-mls-addl-creds/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Messaging Layer Security Working Group mailing list (<eref target="mailto:mls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/bifurcation/mls-userinfo-vc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>MLS provides end-to-end authenticated key exchange <xref target="I-D.ietf-mls-protocol"/>.
Each client participating in an MLS group is authenticated with a credential.
The MLS credential structure is extensible: New MLS credential formats can be
defined which support new mechanisms for authenticating clients.</t>
      <t>In this document, we define two new types of credential:</t>
      <ul spacing="normal">
        <li>
          <t>Credentials based on OpenID Connect UserInfo Verifiable Credentials</t>
        </li>
        <li>
          <t>Multi-credentials that present several credentials at once</t>
        </li>
      </ul>
      <t>UserInfo Verifiable Credentials (VCs) are a mechanism by which an OpenID
Provider can bind user attributes to a signature key pair. OpenID Connect is
already widely deployed as a mechanism for connecting authentication services to
applications, and the OpenID Foundation is in the process of standardizing the
extensions required for OpenID Providers to issue UserInfo VCs.</t>
      <t>Multi-credentials address use cases where there might not be a single credential
that captures all of a client's authenticated attributes.  For example, an
enterprise messaging client may wish to provide attributes both from its messaging
service, to prove that its user has a given handle in that service, and from its
corporate owner, to prove that its user is an employee of the corporation.
Multi-credentials can also be used in migration scenarios, where some clients in
a group might wish to rely on a newer type of credential, but other clients
haven't yet been upgraded.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>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 RFC 2119 [RFC2119].</t>
      <t>This specification uses terms from the MLS Protocol specification.  In
particular, we refer to the MLS Credential object, which represents an
association between a client's identity and the signature key pair that the
client will use to sign messages in the MLS key exchange protocol.</t>
    </section>
    <section anchor="userinfo-verifiable-credentials">
      <name>UserInfo Verifiable Credentials</name>
      <t>As described in the MLS architecture, MLS requires an Authentication Service
(AS) as well as a Delivery Service (DS) <xref target="I-D.ietf-mls-architecture"/>.  The full
security goals of MLS are only realized if the AS and DS are non-colluding.
In other words, applications can deploy MLS to get end-to-end encryption
(acting as MLS Delivery Service), but they need to partner with a non-colluding
Authentication Service in order to achieve full end-to-end security.</t>
      <t>OpenID Connect is widely used to integrate identity providers with applications,
but its current core protocol doesn't provide the binding to cryptographic keys
required for use in MLS.  When OpenID Connect is coupled with the
"Verifiable Credentials" framework, however, it can be used to provision clients
with signed "UserInfo VC" objects that contain the critical elements of a
credential to be used in MLS:</t>
      <ul spacing="normal">
        <li>
          <t>Identity attributes for the user of a client</t>
        </li>
        <li>
          <t>A public key whose private key is held by a client</t>
        </li>
        <li>
          <t>A signature over the above by a trusted identity provider</t>
        </li>
      </ul>
      <t>The required updates to OpenID Connect are specfied in <xref target="OpenIDUserInfoVC"/>.  That
document defines a profile of the OpenID for Verifiable Credential Issuance
protocol for issuing "UserInfo Verifiable Credentials".  These credentials bind
a signature key pair to the user attributes typically exposed through the OpenID
Connect UserInfo endpoint.</t>
      <t>A "UserInfoVC" credential encapsulates a UserInfo Verifiable Credential object,
so that it can be used for authenticating an MLS client. We also describe the
validation process that MLS clients use to verify UserInfoVC objects that they
receive via MLS.</t>
      <section anchor="userinfo-vc-life-cycle">
        <name>UserInfo VC Life-Cycle</name>
        <figure anchor="userinfo-vc-life">
          <name>The protocol interactions to issue and verify a UserInfo VC</name>
          <artwork type="ascii-art"><![CDATA[
   +----+
   |    | (1) Generate signature key pair
   |    V
+----------+                                   +----------+
|          |<~~~(2) OpenID Connect Login~~~~~~>|          |
|          |                                   |          |
|          |                                   |          |
|          |-------(3) Credential Request----->|  OpenID  |
| Client 1 |     (type=UserInfoCredential,     | Provider |
|          |      token & proof)               |   (OP)   |
|          |                                   |          |
|          |<------(4) Credential Response-----|          |
|          |         (credential)              |          |
+----------+                                   +----------+
      :                                             ^
      : (5) UserInfoVC in MLS KeyPackage            |
      :                                             |
      v                                             |
+----------+                                        |
|          |                                        |
|          | (6) Fetch JWK set, Verify JWT          |
|          |        Signature                       |
| Client 2 |<----------------------------------------
|          |----+
|          |    | (7) Validate vc claim using
|          |<---+     OP's JWK
+----------+

            OpenID Connect UserInfo VC MLS Credential Flow
]]></artwork>
        </figure>
        <t>The basic steps showing OIDC Verifiable Credential based MLS credential flow are
shown in <xref target="userinfo-vc-life"/>.</t>
        <t>Client 1 is an MLS client that acts as a Holder in the VC model.  Client 2 is
also an MLS client, but acts in the Verifier role in the VC model.  Both clients
implement certain OpenID Connect operations to obtain and verify UserInfo VC
objects.</t>
        <ol spacing="normal" type="1"><li>
            <t>Client 1 generates a signature key pair using an algorithm that is supported
by both MLS and UserInfo VC.</t>
          </li>
          <li>
            <t>Client 1 performs an OpenID Connect login interaction with the scope
"userinfo_credential"  to obtain UserInfo VCs.</t>
          </li>
          <li>
            <t>Client 1 sends a Credential Request specifying that it desires a UserInfo VC,
together with a proof that it controls the private key of a signature key pair
and the access token.</t>
          </li>
          <li>
            <t>The OpenID Provider verifies the proof and create a Credential Response
containing the UserInfo VC attesting the claims that
would have been provided by the UserInfo endpoint and public key
corresponding to the private key used to compute the proof in the Credential
Request.</t>
          </li>
          <li>
            <t>Client 1 generates a <tt>UserInfoVC</tt> MLS Credential object with the
signed UserInfo VC JWT. Client 1 embeds the <tt>UserInfoVC</tt> in an MLS
KeyPackage object and signs the KeyPackage object with the corresponding
private key.</t>
          </li>
          <li>
            <t>Client 1 sends the KeyPackage to Client 2, e.g., by posting it to a directory
from which Client 2 fetches it when it wants to add Client 1 to a group.</t>
          </li>
          <li>
            <t>Client 2 verifies the signature on the KeyPackage and extracts the
UserInfoVC credential. Client 2 uses OpenID Connect Discovery to fetch the OpenID
Provider's JWK set.</t>
          </li>
          <li>
            <t>Client 2 verifies the signed UserInfo VC using the the appropriate key from the
OpenID Provider's JWK set.</t>
          </li>
        </ol>
        <t>If all checks pass,  Client 2 has a high degree of assurance of the identity of
Client 1.  At this point Client 1's KeyPackage (including the VerifiableCredential)
will be included in the MLS group's ratchet tree and distributed to the other
members of the group.  The other members of the group can verify the
VerifiableCredential in the same way as Client 2.</t>
      </section>
      <section anchor="userinfovc">
        <name>UserInfoVC</name>
        <t>A new credential type <tt>UserInfoVC</tt> is defined as shown below. This credential
type is indicated with the CredentialType value <tt>userinfo_vc</tt> (see <xref target="iana"/>).</t>
        <sourcecode type="tls-presentation"><![CDATA[
struct {
    opaque jwt<0..2^32-1>;
} UserInfoVC;
]]></sourcecode>
        <t>The <tt>jwt</tt> field contains the signed JWT-formatted UserInfo VC object
(as defined in <xref target="OpenIDUserInfoVC"/>), encoded using UTF-8.
The payload of object MUST provide <tt>iss</tt> and <tt>vc</tt> claims.  The <tt>iss</tt> claim is
used to look up the OpenID Provider's metadata.  The <tt>vc</tt> claim contains
authenticated user attributes and a public key binding.  Specifically, the field
<tt>vc.credentialSubject.id</tt> contains a <tt>did:jwk</tt> URI describing the subject's
public key as a JWK.</t>
      </section>
      <section anchor="credential-validation">
        <name>Credential Validation</name>
        <t>An MLS client validates a UserInfoVC credential in the context of an MLS
LeafNode with the following steps:</t>
        <ul spacing="normal">
          <li>
            <t>Verify that the <tt>jwt</tt> field parses successfully into a JWT [!@RFC7519], whose
payload parses into UserInfo object as defined in Section 5.3.2 of [!@OpenID].</t>
          </li>
          <li>
            <t>Verify that an <tt>iss</tt> claim is present in the UserInfo VC payload and that "iss"
value represents and issuer that is trusted according to the client's local
policy.</t>
          </li>
          <li>
            <t>Verify the JWT signature:
            </t>
            <ul spacing="normal">
              <li>
                <t>Fetch the issuer metadata using OIDC Discovery [@!OpenID.Discovery].</t>
              </li>
              <li>
                <t>Use the <tt>jwks_uri</tt> field in the metadata to fetch the JWK set.</t>
              </li>
              <li>
                <t>Verify that the JWT signature verifies under one of the keys in the JWK
set.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Verify the key binding:
            </t>
            <ul spacing="normal">
              <li>
                <t>Verify that a <tt>vc</tt> claim is present in the UserInfo VC payload.</t>
              </li>
              <li>
                <t>Verify that the value of the claim is a JSON object that contains a
<tt>credentialSubject</tt> field, as defined in Section 4 of openid-userinfo-vc.</t>
              </li>
              <li>
                <t>Verify <tt>id</tt> field exists and it MUST be a a Decentralized Identifier with
DID method jwk (W3c.did-core).</t>
              </li>
              <li>
                <t>Verify that the <tt>jwk</tt> field parses as a JWK.</t>
              </li>
              <li>
                <t>Verify that the <tt>signature_key</tt> in the LeafNode matches the key in the <tt>id</tt> field.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>If all of the above checks pass, the client can use the signature key in the JWK
for verifying MLS signatures using the signature scheme corresponding to the
<tt>kty</tt> and <tt>crv</tt> parameters in the JWK.  The identity attributes in the JWT
should be associated with the MLS client that presented the credential.</t>
      </section>
      <section anchor="mapping-between-jwk-key-types-and-mls-ciphersuites">
        <name>Mapping between JWK Key Types and MLS Ciphersuites</name>
        <t>Below table maps JWK key types (<tt>kty</tt>) and elliptic curves (<tt>crv</tt>) to the
equivalent MLS signature scheme.</t>
        <table>
          <thead>
            <tr>
              <th align="center">kty</th>
              <th align="center">crv</th>
              <th align="left">TLS/MLS signature scheme</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">
                <tt>EC</tt></td>
              <td align="center">
                <tt>P-256</tt></td>
              <td align="left">ECDSA with P-256 and SHA-256</td>
            </tr>
            <tr>
              <td align="center">
                <tt>EC</tt></td>
              <td align="center">
                <tt>P-384</tt></td>
              <td align="left">ECDSA with P-384 and SHA-384</td>
            </tr>
            <tr>
              <td align="center">
                <tt>EC</tt></td>
              <td align="center">
                <tt>P-521</tt></td>
              <td align="left">ECDSA with P-521 and SHA-512</td>
            </tr>
            <tr>
              <td align="center">
                <tt>EC</tt></td>
              <td align="center">
                <tt>Ed25519</tt></td>
              <td align="left">Ed25519</td>
            </tr>
            <tr>
              <td align="center">
                <tt>EC</tt></td>
              <td align="center">
                <tt>Ed448</tt></td>
              <td align="left">Ed448</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="multi-credentials">
      <name>Multi-Credentials</name>
      <t>New credential types <tt>MultiCredential</tt> and <tt>WeakMultiCredential</tt> are defined as
shown below. These credential types are indicated with CredentialType values
<tt>multi</tt> and <tt>weak-multi</tt> (see <xref target="iana"/>).</t>
      <sourcecode type="tls-presentation"><![CDATA[
struct {
  CipherSuite cipher_suite;
  Credential credential;
  SignaturePublicKey credential_key;

  /* SignWithLabel(., "CredentialBindingTBS", CredentialBindingTBS) */
  opaque signature<V>;
} CredentialBinding

struct {
  CredentialBinding bindings<V>;
} MultiCredential;

struct {
  CredentialBinding bindings<V>;
} WeakMultiCredential;
]]></sourcecode>
      <t>The two types of credentials are processed in exactly the same way.  The only
difference is in how they are treated when evaluating support by other clients,
as discussed below.</t>
      <section anchor="credential-bindings">
        <name>Credential Bindings</name>
        <t>A multi-credential consists of a collection of "credential bindings".  Each
credential binding is a signed statement by the holder of the credential that
the signature key in the LeafNode belongs to the holder of that credential.
Specifically, the signature is computed using the MLS <tt>SignWithLabel</tt> function,
with label <tt>"CredentialBindingTBS"</tt> and with a content that covers the contents
of the CredentialBinding, plus the <tt>signature_key</tt> field from the LeafNode in
which this credential will be embedded.</t>
        <sourcecode type="tls-presentation"><![CDATA[
struct {
  CipherSuite cipher_suite;
  Credential credential;
  SignaturePublicKey credential_key;
  SignaturePublicKey signature_key;
} CredentialBindingTBS;
]]></sourcecode>
        <t>The <tt>cipher_suite</tt> for a credential is NOT REQUIRED to match the cipher suite
for the MLS group in which it is used, but MUST meet the support requirements
with regard to support by group members discussed below.</t>
      </section>
      <section anchor="verifying-a-multi-credential">
        <name>Verifying a Multi-Credential</name>
        <t>A credential binding is supported by a client if the client supports the
credential type and cipher suite of the binding.  A credential binding is valid
in the context of a given LeafNode if both of the following are true:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>credential</tt> is valid according to the MLS Authentication Service.</t>
          </li>
          <li>
            <t>The <tt>credential_key</tt> corresponds to the specified <tt>credential</tt>, in the same
way that the <tt>signature_key</tt> would have to correspond to the credential if
the credential were presented in a LeafNode.</t>
          </li>
          <li>
            <t>The <tt>signature</tt> field is valid with respect to the <tt>signature_key</tt> value in
the leaf node.</t>
          </li>
        </ul>
        <t>A client that receives a credential of type <tt>multi</tt> in a LeafNode MUST verify
that all of the following are true:</t>
        <ul spacing="normal">
          <li>
            <t>All members of the group support credential type <tt>multi</tt>.</t>
          </li>
          <li>
            <t>For each credential binding in the multi-credential:  </t>
            <ul spacing="normal">
              <li>
                <t>Every member of the group supports the cipher suite and credential type
values for the binding.</t>
              </li>
              <li>
                <t>The binding is valid in the context of the LeafNode.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>A client that receives a credential of type <tt>weak-multi</tt> in a LeafNode MUST verify
that all of the following are true:</t>
        <ul spacing="normal">
          <li>
            <t>All members of the group support credential type <tt>multi</tt>.</t>
          </li>
          <li>
            <t>Each member of the group supports at least one binding in the
multi-credential.  (Different members may support different subsets.)</t>
          </li>
          <li>
            <t>Every binding that this client supports is valid in the context of the
LeafNode.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The validation procedures for UserInfoVC credentials verify that a JWT came from
a given issuer.  It doesn't verify that the issuer is authorative for the
claimed attributes.  The client needs to verify that the issuer is trusted to
assert the claimed attributes.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>UserInfo can contain sensitive info such as human names, phone numbers, and
using these credentials in MLS will expose this information to other group
members, and potentially others if used in a prepublished KeyPackage.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="mls-credential-types">
        <name>MLS Credential Types</name>
        <t>IANA is requested to register add the following new entries to the MLS Credential
Type registry.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="left">Recommended</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0003</td>
              <td align="left">userinfo-vc</td>
              <td align="left">Y</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">0x0004</td>
              <td align="left">multi</td>
              <td align="left">Y</td>
              <td align="left">RFC XXXX</td>
            </tr>
            <tr>
              <td align="left">0x0005</td>
              <td align="left">weak-multi</td>
              <td align="left">Y</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="OpenIDUserInfoVC" target="https://openid.net/specs/openid-connect-userinfo-vc-1_0.html">
        <front>
          <title>OpenID Connect UserInfo Verifiable Credentials 1.0</title>
          <author initials="M." surname="Ansari" fullname="Morteza Ansari">
            <organization/>
          </author>
          <author initials="R." surname="Barnes" fullname="Richard Barnes">
            <organization/>
          </author>
          <author initials="P." surname="Kasselman" fullname="Pieter Kasselman">
            <organization/>
          </author>
          <author initials="K." surname="Yasuda" fullname="Kristina Yasuda">
            <organization/>
          </author>
          <date year="2022" month="December" day="15"/>
        </front>
      </reference>
      <reference anchor="I-D.ietf-mls-protocol">
        <front>
          <title>The Messaging Layer Security (MLS) Protocol</title>
          <author fullname="Richard Barnes" initials="R." surname="Barnes">
            <organization>Cisco</organization>
          </author>
          <author fullname="Benjamin Beurdouche" initials="B." surname="Beurdouche">
            <organization>Inria &amp; Mozilla</organization>
          </author>
          <author fullname="Raphael Robert" initials="R." surname="Robert">
            <organization>Phoenix R&amp;D</organization>
          </author>
          <author fullname="Jon Millican" initials="J." surname="Millican">
            <organization>Meta Platforms</organization>
          </author>
          <author fullname="Emad Omara" initials="E." surname="Omara">
            <organization>Google</organization>
          </author>
          <author fullname="Katriel Cohn-Gordon" initials="K." surname="Cohn-Gordon">
            <organization>University of Oxford</organization>
          </author>
          <date day="27" month="March" year="2023"/>
          <abstract>
            <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages.  Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time.  In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.
            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mls-protocol-20"/>
      </reference>
      <reference anchor="I-D.ietf-mls-architecture">
        <front>
          <title>The Messaging Layer Security (MLS) Architecture</title>
          <author fullname="Benjamin Beurdouche" initials="B." surname="Beurdouche">
            <organization>Inria &amp; Mozilla</organization>
          </author>
          <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
            <organization>Mozilla</organization>
          </author>
          <author fullname="Emad Omara" initials="E." surname="Omara">
         </author>
          <author fullname="Srinivas Inguva" initials="S." surname="Inguva">
         </author>
          <author fullname="Alan Duric" initials="A." surname="Duric">
            <organization>Wire</organization>
          </author>
          <date day="3" month="March" year="2024"/>
          <abstract>
            <t>   The Messaging Layer Security (MLS) protocol (I-D.ietf-mls-protocol)
   provides a Group Key Agreement protocol for messaging applications.
   MLS is meant to protect against eavesdropping, tampering, message
   forgery, and provide Forward Secrecy (FS) and Post-Compromise
   Security (PCS).

   This document describes the architecture for using MLS in a general
   secure group messaging infrastructure and defines the security goals
   for MLS.  It provides guidance on building a group messaging system
   and discusses security and privacy tradeoffs offered by multiple
   security mechanisms that are part of the MLS protocol (e.g.,
   frequency of public encryption key rotation).  The document also
   provides guidance for parts of the infrastructure that are not
   standardized by MLS and are instead left to the application.

   While the recommendations of this document are not mandatory to
   follow in order to interoperate at the protocol level, they affect
   the overall security guarantees that are achieved by a messaging
   application.  This is especially true in the case of active
   adversaries that are able to compromise clients, the delivery
   service, or the authentication service.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mls-architecture-12"/>
      </reference>
    </references>
    <?line 388?>



  </back>
  <!-- ##markdown-source:
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
u3OlR50BbWT9iJX4Z3tzmEYU/Tdjg+JNlj0AAA==

-->

</rfc>
