<?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.6.36 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-barnes-mls-addl-creds-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Additional MLS Credentials">Additional MLS Credentials</title>
    <seriesInfo name="Internet-Draft" value="draft-barnes-mls-addl-creds-00"/>
    <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="2023" month="July" day="10"/>
    <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>Credentials based on OpenID Connect UserInfo Verifiable Credentials</li>
        <li>Multi-credentials that present several credentials at once</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>Identity attributes for the user of a client</li>
        <li>A public key whose private key is held by a client</li>
        <li>A signature over the above by a trusted identity provider</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>Client 1 generates a signature key pair using an algorithm that is supported
by both MLS and UserInfo VC.</li>
          <li>Client 1 performs an OpenID Connect login interaction with the scope
"userinfo_credential"  to obtain UserInfo VCs.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>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.</li>
          <li>Client 2 verifies the signed UserInfo VC using the the appropriate key from the
OpenID Provider's JWK set.</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>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].</li>
          <li>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.</li>
          <li>
            <t>Verify the JWT signature:
            </t>
            <ul spacing="normal">
              <li>Fetch the issuer metadata using OIDC Discovery [@!OpenID.Discovery].</li>
              <li>Use the <tt>jwks_uri</tt> field in the metadata to fetch the JWK set.</li>
              <li>Verify that the JWT signature verifies under one of the keys in the JWK
set.</li>
            </ul>
          </li>
          <li>
            <t>Verify the key binding:
            </t>
            <ul spacing="normal">
              <li>Verify that a <tt>vc</tt> claim is present in the UserInfo VC payload.</li>
              <li>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.</li>
              <li>Verify <tt>id</tt> field exists and it MUST be a a Decentralized Identifier with
DID method jwk (W3c.did-core).</li>
              <li>Verify that the <tt>jwk</tt> field parses as a JWK.</li>
              <li>Verify that the <tt>signature_key</tt> in the LeafNode matches the key in the <tt>id</tt> field.</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>The <tt>credential</tt> is valid according to the MLS Authentication Service.</li>
          <li>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.</li>
          <li>The <tt>signature</tt> field is valid with respect to the <tt>signature_key</tt> value in
the leaf node.</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>All members of the group support credential type <tt>multi</tt>.</li>
          <li>
            <t>For each credential binding in the multi-credential:  </t>
            <ul spacing="normal">
              <li>Every member of the group supports the cipher suite and credential type
values for the binding.</li>
              <li>The binding is valid in the context of the LeafNode.</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>All members of the group support credential type <tt>multi</tt>.</li>
          <li>Each member of the group supports at least one binding in the
multi-credential.  (Different members may support different subsets.)</li>
          <li>Every binding that this client supports is valid in the context of the
LeafNode.</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>
      <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 and post-compromise security 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">
            <organization>Google</organization>
          </author>
          <author fullname="Srinivas Inguva" initials="S." surname="Inguva">
            <organization>Twitter</organization>
          </author>
          <author fullname="Alan Duric" initials="A." surname="Duric">
            <organization>Wire</organization>
          </author>
          <date day="16" month="December" year="2022"/>
          <abstract>
            <t>   The Messaging Layer Security (MLS) protocol (I-D.ietf-mls-protocol)
   specification has the role of defining a Group Key Agreement
   protocol, including all the cryptographic operations and
   serialization/deserialization functions necessary for scalable and
   secure group messaging.  The MLS protocol is meant to protect against
   eavesdropping, tampering, message forgery, and provide further
   properties such as Forward Secrecy (FS) and Post-Compromise Security
   (PCS) in the case of past or future device compromises.

   This document describes a general secure group messaging
   infrastructure and its security goals.  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 the MLS Protocol document and left to
   the application or the infrastructure architects to design.

   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 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-10"/>
      </reference>
    </references>
    <?line 388?>



  </back>
  <!-- ##markdown-source:
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
d+dKjzoD2sj6ESvxz/bmMI0o+m9q/ay7lj0AAA==

-->

</rfc>
