<?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.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vesco-vcauthtls-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="TLS Auth with VC">Transport Layer Security (TLS) Authentication with Verifiable Credential (VC)</title>
    <seriesInfo name="Internet-Draft" value="draft-vesco-vcauthtls-00"/>
    <author fullname="Andrea Vesco">
      <organization>LINKS Foundation</organization>
      <address>
        <email>andrea.vesco@linksfoundation.com</email>
      </address>
    </author>
    <author fullname="Leonardo Perugini">
      <organization>LINKS Foundation</organization>
      <address>
        <email>leonardo.perugini@linksfoundation.com</email>
      </address>
    </author>
    <date year="2024" month="February" day="01"/>
    <area>AREA</area>
    <workgroup>WG</workgroup>
    <keyword>TLS</keyword>
    <keyword>VC</keyword>
    <keyword>DID</keyword>
    <keyword>DLT</keyword>
    <abstract>
      <?line 71?>

<t>This document defines a new certificate type and extension for the exchange of Verifiable Credentials in the handshake of the Transport Layer Security (TLS) protocol. The new certificate type is intended to add the Verifiable Credentials as a new means of authentication. The resulting authentication process leverages a distributed ledger as the root of trust of the TLS endpoints' public keys. The endpoints can use different distributed ledger technologies to store their public keys and to perform the TLS handshake.</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-vesco-vcauthtls/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 76?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>The Self-Sovereign Identity (SSI) is a decentralised identity model that gives an entity control over the data it uses to generate and prove its identity. SSI model relies on three fundamental elements: a distributed ledger as the Root of Trust (RoT) for public keys, Decentralized IDentifier <xref target="DID"/>, and Verifiable Credential <xref target="VC"/>. An SSI aware entity builds his identity starting from generating its key pair (<em>sk</em>, <em>pk</em>). Then the entity stores <em>pk</em> in the distributed ledger of choice for other entities to authenticate it.
An entity's DID is a pointer to the distributed ledger where other entities can retrieve its <em>pk</em>. A DID is a Uniform Resource Identifier (URI) in the form <tt>did:did-method-name:method-specific-id</tt> where <tt>method-name</tt> is the name of the <xref target="DID"/> Method used to interact with the distributed ledger and <tt>method-specific-id</tt> is the pointer to the <xref target="DID"/> Document that contains <em>pk</em>, stored in the distributed ledger.
After that, the entity can request a VC from one of the Issuers available in the system. The VC contains the metadata to describe properties of the credential, the DID and the claims about the identity of the entity and the signature of the Issuer.
The combination of the key pair (<em>sk</em>, <em>pk</em>), the DID and at least one VC forms the identity compliant with the SSI model.
An entity requests access to services by presenting a Verifiable Presentation <xref target="VP"/>. The VP is an envelop of the VC signed by the entity holding the VC with its <em>sk</em>. The verifier authenticates the entity checking the validity and authenticity of the VP and the inner VC before granting or denying access to the requesting entity. <xref target="fig-ssi-steps"/> shows step by step the generation of the identity and the authentication with VP.</t>
      <figure anchor="fig-ssi-steps">
        <name>Generation of the identity compliant with the SSI model and authentication with VP</name>
        <artwork align="left"><![CDATA[
                              --------
                             | Entity |
                             |        |
                              --------
                            identity = [{pk,sk}]

                              --------
                             | Entity |                        pk                         -----
                             |        | -----------------------------------------------> | DLT |
                              --------                                                   |     |
                            identity = [{pk,sk},DID]                                      -----

 --------    request VC       --------
| Issuer | <---------------- | Entity |
|        | ----------------> |        |
 --------        VC           --------
                            identity = [{pk,sk},DID,VC]

                              --------         VP(VC)      ----------     DID resolve     -----
                             | Entity | ----------------> | Verifier | ----------------> | DLT |
                             |        | <---------------- |          | <---------------- |     |
                              --------        ok/ko        ----------          pk         -----
]]></artwork>
      </figure>
      <t>The current implementations of the authentication process run at the application layer. A client estabhlishes a TLS channel authenticating the server with the server's X.509 certificate. Then the server authenticates the client that sends its VP at application layer (i.e. over the TLS channel already established). The mutual authentication with VPs occurs when also the server exchanges its VP with the client again at application layer.</t>
      <t>SSI is emerging as an identity option for Internet of Thing and Edge devices in computing continuum environments. In these scenarios, (mutual) authentication with VP can take place directly at the TLS protocol layer, enabling the peer-to-peer interaction model envisaged by the SSI model.
This document describes the extensions to TLS handshake protocol to support the use of VCs for authentication while preserving the interoperability with TLS endpoints that use X.509 certificates.
The extensions enable server and mutual authentication using VC, X.509, Raw Public Key or a combination of two of them. The ability to perform hybrid authenticated handshakes supports the gradual deployment of SSI in existing systems. Moreover, the extension allows TLS endpoints to use different distributed ledger technologies to store their public keys and to authenticate the peers. The authentication process is successful if the TLS endpoints implement the DID Method to resolve the peer's DID.</t>
      <t>This document uses <em>italic formatting</em> in the following sections to mark some paragraphs discussing items still under design: <xref target="sec-server-hello-message"/> and <xref target="sec-certificate-message"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="extensions">
      <name>Extensions</name>
      <section anchor="clientcertificatetype-and-servercertificatetype-extensions">
        <name>client_certificate_type and server_certificate_type extensions</name>
        <t>The TLS extensions <tt>client_certificate_type</tt> and <tt>server_certificate_type</tt> defined in <xref target="RFC7250"/> are used to negotiate the type of <tt>Certificate</tt> messages used in TLS to authenticate the server and, optionally, the client. This section defines a new certificate type, called <tt>VC</tt>, for the TLS 1.3 handshake. The updated <tt>CertificateType</tt> enumeration, the corresponding addition to the <tt>CertificateEntry</tt> structure, and the <tt>Certificate</tt> message structure are shown below.
In the current version of the document <tt>VC</tt> certificate type is set to 224, one of the values indicated by IANA for private use. <tt>CertificateType</tt> values are sent in the <tt>server_certificate_type</tt> and <tt>client_certificate_type</tt> extensions, and the <tt>CertificateEntry</tt> structures are included in the certificate chain sent in the <tt>Certificate</tt> message.</t>
        <artwork><![CDATA[
/* Managed by IANA */
enum {
   X509(0),
   RawPublicKey(2),
   VC(224),
   (255)
} CertificateType;

struct {
   select(certificate_type){
      // The new certificate type defined in this document
      case VC:
         opaque cert_data<1..2^24-1>;

      // RawPublicKey certificate type defined in RFC 7250
      case RawPublicKey:
         opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;

      // X.509 certificate defined in RFC 5246
      case X509:
         opaque cert_data<1..2^24-1>;
   };
   Extension extensions<0..2^16-1>;
} CertificateEntry;

struct {
   opaque certificate_request_context<0..2^8-1>;
   CertificateEntry certificate_list<0..2^24-1>;
} Certificate;
]]></artwork>
        <t>As per <xref target="RFC7250"/>, the client will send a list of certificate types in <tt>[endpoint]_certificate_type</tt> extension(s), the server processes the received extension(s) and selects one of the offered certificate types, returning the negotiated value in the <tt>EncryptedExtensions</tt> message. Note that there is no requirement for the negotiated value to be the same in <tt>client_certificate_type</tt> and <tt>server_certificate_type</tt> extensions sent in the same message. Client and server can use different certificate types as long as the peer is able to verify that specific type of certificate.</t>
      </section>
    </section>
    <section anchor="didmethods-extension">
      <name>did_methods extension</name>
      <t>This section defines the <tt>did_methods</tt> extension, used as part of an extended TLS 1.3 handshake when <tt>VC</tt> certificate type is used. <tt>ExtensionType</tt> now contains the <tt>did_methods</tt> entry associated with the value 65282, indicated by IANA for private use.</t>
      <artwork><![CDATA[
enum {
   server_name(0),
   max_fragment_length(1),
   did_methods(65282),
   (65535)
} ExtensionType;
]]></artwork>
      <t>This extension contains a list of DID Methods an endpoint supports, i.e. a set of DLTs an endpoint can interact with to resolve the peer's DID. A client <bcp14>MUST</bcp14> send this extension in the extended <tt>ClientHello</tt> message only when it indicates Verifiable Credential support in the <tt>server_certificate_type</tt> extension. The server <bcp14>MUST</bcp14> send this extension in a <tt>CertificateRequest</tt> message only if it indicates Verifiable Credential in <tt>client_certificate_type</tt> extension. The extension format which uses the <tt>extension_data</tt> field, is used to carry the <tt>DIDMethodList</tt> structure. The structure of this new extension is shown below.</t>
      <artwork><![CDATA[
enum {
   btcr(0),
   ethr(1),
   iota(2),
   ..
   (65535)
} DIDMethod

struct {
   DIDMethod did_methods<2..2^16-2>
} DIDMethodList
]]></artwork>
      <t>The list of existing DID Methods is currently maintained by the W3C in <xref target="DID-Registries"/>. Each DID Method is expressed in the form of a string. This document proposes the <tt>DIDMethod</tt> enum to map these strings into integer values.</t>
    </section>
    <section anchor="tls-client-and-server-handshake">
      <name>TLS Client and Server Handshake</name>
      <t><xref target="fig-full-handshake"/> shows the message flow for full TLS handshake.</t>
      <figure anchor="fig-full-handshake">
        <name>Message Flow for full TLS Handshake</name>
        <artwork align="center"><![CDATA[
DLT          Client                               Server           DLT

      Key  ^ ClientHello
      Exch | + server_certificate_type*
           | + client_certificate_type*
           | + did_methods*
           | + signature_algorithms*
           v + key_share*  -------->
                                             ServerHello ^ Key
                                            + key_share* v Exch,
                                   {EncryptedExtensions} ^ Server
                            {+ server_certificate_type*} | Params
                            {+ client_certificate_type*} |
                                   {CertificateRequest*} |
                                        {+ did_methods*} v
                                          {Certificate*} ^
                                    {CertificateVerify*} | Auth
                                              {Finished} v
                           <-------- [Application Data*]
 DID Resolve
 <==========
           ^ {Certificate*}
      Auth | {CertificateVerify*}
           v {Finished}    -------->
                                                         DID Resolve
                                                         ==========>
             [Application Data] <---> [Application Data]

        +  Indicates noteworthy extensions sent in the
           previously noted message.
        *  Indicates optional or situation-dependent
           messages/extensions that are not always sent.
        {} Indicates messages protected using keys
           derived from a
           [sender]_handshake_traffic_secret.
        [] Indicates messages protected using keys
           derived from [sender]_application_traffic_secret_N.
]]></artwork>
      </figure>
      <section anchor="clienthello-message">
        <name>ClientHello message</name>
        <t>To express support for <tt>VC</tt> certificate type, a client <bcp14>MUST</bcp14> include the extension of type <tt>client_certificate_type</tt> or <tt>server_certificate_type</tt> in the extended <tt>ClientHello</tt> message as described in <xref section="4.1.2" sectionFormat="of" target="RFC8446"/>. If the client sends the <tt>server_certificate_type</tt> extension indicating <tt>VC</tt>, it <bcp14>MUST</bcp14> also send the <tt>did_methods</tt> extension.</t>
      </section>
      <section anchor="sec-server-hello-message">
        <name>ServerHello message</name>
        <t>When the server receives the <tt>ClientHello</tt> message containing the <tt>server_certificate_type</tt> extension and/or the <tt>client_certificate_type</tt> extension, the following scenarios are possible:</t>
        <ul spacing="normal">
          <li>
            <t>The server does not support the extensions, omits them in <tt>EncryptedExtensions</tt> and the handshake proceeds with X.509 certificate(s).</t>
          </li>
          <li>
            <t>The server does not support any of the proposed certificate types and terminates the session with a fatal alert of type <tt>unsupported_certificate</tt>.</t>
          </li>
          <li>
            <t>Both client and server indicate support for the <tt>VC</tt> certificate type. The server selects <tt>VC</tt> certificate type, but the client did not send the <tt>did_methods</tt> extension in addition to the <tt>server_certificate_type</tt> extension. The server <bcp14>MUST</bcp14> terminate the session with a fatal alert of type <tt>missing_extension</tt>.</t>
          </li>
          <li>
            <t>Both client and server indicate support for the <tt>VC</tt> certificate type. The server selects <tt>VC</tt> certificate type, but the server's DID is not compatible with any of the DID Methods supported by the client and listed in the <tt>did_methods</tt> extension sent with the <tt>ClientHello</tt> message. <em>This document defines two possible server behaviours (a) the server terminates the session with a fatal alert of type <tt>unsupported_did_methods</tt>, (b) the server sends a HelloRetryRequest (HRR) message with a new extension listing the DLTs in which it owns a DID</em>.
<em>These design considerations apply: solution (a) requires defining a new fatal alert message type, and the client has no clues to perform a new successful TLS handshake; solution (b) requires defining a new HRR extension which could have privacy implications as it discloses the DLTs where the server owns its DIDs; on the other hand, this extension provides the client with clues to retry a successful new TLS handshake</em>.</t>
          </li>
          <li>
            <t>Both client and server indicate support for the <tt>VC</tt> certificate type, the server <bcp14>MAY</bcp14> select the first (most preferred) certificate type from the client's list that is supported by both endpoints. It <bcp14>MAY</bcp14> include the <tt>client_certificate_type</tt> in the <tt>EncryptedExtensions</tt> message to request a certificate from the client. In case the server selects <tt>VC</tt> certificate type, it <bcp14>MUST</bcp14> also send the <tt>did_methods</tt> extension in the <tt>CertificateRequest</tt> message.</t>
          </li>
        </ul>
      </section>
      <section anchor="certificaterequest-message">
        <name>CertificateRequest message</name>
        <t>The server sends the <tt>CertificateRequest</tt> message to request client authentication. It <bcp14>MUST</bcp14> include the <tt>did_methods</tt> extension if it indicates <tt>VC</tt> in the <tt>client_certificate_type</tt> extension. If the <tt>ClientHello</tt> contains the <tt>did_methods</tt> extension, the server <bcp14>MUST</bcp14> send a list of DID Methods client and server have in common. If the client does not send the <tt>did_methods</tt> extension the server <bcp14>MUST</bcp14> select a list of DID Methods it supports. A client that processes the <tt>CertificateRequest</tt> message that does not own a DID compatible with the DID Methods selected by the server <bcp14>MUST</bcp14> send a <tt>Certificate</tt> message containing no certificates, i.e. with the <tt>certificate_list</tt> field having length 0.</t>
      </section>
      <section anchor="sec-certificate-message">
        <name>Certificate message</name>
        <t>When the selected certificate type is <tt>VC</tt>, the <tt>certificate_list</tt> in the <tt>Certificate</tt> message <bcp14>MUST</bcp14> contain no more than one <tt>CertificateEntry</tt> with the content of the endpoint's Verifiable Credential. <em>This document intends to mandate CBOR encoding for the Verifiable Credential</em>. After decoding, the endpoint <bcp14>MUST</bcp14> follows the procedure in <xref target="VC"/> to verify the Verifiable Credential.</t>
      </section>
      <section anchor="certificateverify-message">
        <name>CertificateVerify message</name>
        <t>As discussed in <xref target="sec-introduction"/>, an Holder wraps its own Verifiable Credential into a Verifiable Presentation and signs it before presenting it to a Verifier for authentication purposes. During the TLS handshake, when the selected certificate type is <tt>VC</tt>, the subsequent <tt>CertificateVerify</tt> message acts also as the Holder signature on the Verifiable Presentation. In fact, the signature is computed over the transcript hash that contains also the Verifiable Credential of the sender inside the <tt>Certificate</tt> message.</t>
      </section>
    </section>
    <section anchor="tls-handshake-examples">
      <name>TLS handshake Examples</name>
      <t>This section shows some examples of TLS handshakes using different combinations of certificate types.</t>
      <section anchor="server-authentication-with-verifiable-credential">
        <name>Server authentication with Verifiable Credential</name>
        <t>The example in <xref target="fig-server-vc"/> shows a TLS 1.3 handshake with server authentication. The client sends the <tt>server_certificate_type</tt> extension indicating both <tt>VC</tt> and <tt>X.509</tt> certificate types. In addition, the client sends the <tt>did_methods</tt> extension with the list of supported DID Methods. The client does not own an identity at the TLS level, therefore omits the <tt>client_certificate_type</tt> extension.
The server selects <tt>VC</tt> certificate type, sends the EncryptedExtensions message with
the <tt>server_certificate_type</tt> extension set to VC, and sends its Verifiable Credential into the Certificate message.
After receiving the <tt>CertificateVerify</tt> and <tt>Finished</tt> messages, the client resolves the server's DID to retrieve the server <em>pk</em> and authenticate it.</t>
        <figure anchor="fig-server-vc">
          <name>TLS Server Uses Verifiable Credential</name>
          <artwork align="center"><![CDATA[
DLT         Client                                              Server

            ClientHello
            server_certificate_type=(VC,X.509)
            did_methods=(btcr,iota) -------->
                                                            ServerHello
                                                  {EncryptedExtensions}
                                           {server_certificate_type=VC}
                                                          {Certificate}
                                                    {CertificateVerify}
                                                             {Finished}
                                    <--------        [Application Data]
 DID Resolve
 <==========
            {Finished}              -------->
            [Application Data]      <------->        [Application Data]
]]></artwork>
        </figure>
      </section>
      <section anchor="mutual-authentication-with-verifiable-credentials">
        <name>Mutual authentication with Verifiable Credentials</name>
        <t>The example in <xref target="fig-mutual-vc"/> shows a TLS 1.3 handshake with mutual authentication where both client and server authenticate the peer using Verifiable Credentials.
The client sends the <tt>server_certificate_type</tt> extension indicating both <tt>VC</tt> and <tt>X.509</tt> certificate types along with the <tt>did_methods</tt> extension containing the list of supported DID Methods. The client also sends the <tt>client_certificate_type</tt> extension indicating its capability to provide both a Verifiable Credential and an X.509 certificate.
The server sends the <tt>server_certificate_type</tt> set to <tt>VC</tt>, the <tt>client_certificate_type</tt> set to <tt>VC</tt> and the <tt>CertificateRequest</tt> message with the <tt>did_methods</tt> extension containig a set of DID Methods in common with the client. Client and server send their Verifiable Credential into their respective <tt>Certificate</tt> messages.
After receiving the <tt>CertificateVerify</tt> and <tt>Finished</tt> messages, the client and then the server resolve the peer's DID to retrieve the associated <em>pk</em> and authenticate each other.</t>
        <figure anchor="fig-mutual-vc">
          <name>TLS Client and TLS Server Use Verifiable Credentials</name>
          <artwork align="center"><![CDATA[
DLT        Client                                    Server         DLT

           ClientHello
           server_certificate_type=(VC,X.509)
           client_certificate_type=(VC,X.509)
           did_methods=(btcr,ethr)
                              -------->
                                                ServerHello
                                      {EncryptedExtensions}
                               {server_certificate_type=VC}
                               {client_certificate_type=VC}
                                       {CertificateRequest}
                                  {did_methods=(btcr,ethr)}
                                              {Certificate}
                                        {CertificateVerify}
                                                 {Finished}
                              <--------  [Application Data]
 DID Resolve
 <==========
           {Certificate}
           {CertificateVerify}
           {Finished}         -------->
                                                           DID Resolve
                                                           ==========>
           [Application Data] <------->  [Application Data]
]]></artwork>
        </figure>
      </section>
      <section anchor="mutual-authentication-with-client-using-verifiable-credential-and-server-using-x509-certificate">
        <name>Mutual authentication with Client using Verifiable Credential and Server using X.509 Certificate</name>
        <t>The example in <xref target="fig-mutual-vc-x509"/> shows a TLS 1.3 handshake with mutual authentication that combines the use of Verifiable Credential and X.509 certificate. The client uses a Verifiable Credential, and the server uses an X.509 certificate.
The client sends the <tt>server_certificate_type</tt> extension indicating <tt>X.509</tt> certificate types. The client also sends the <tt>client_certificate_type</tt> extension indicating its capability to provide both a Verifiable Credential and an X.509 certificate.
The server sends the <tt>server_certificate_type</tt> set to <tt>X.509</tt>, the <tt>client_certificate_type</tt> set to <tt>VC</tt> and the <tt>CertificateRequest</tt> message with the <tt>did_methods</tt> extension containig the set of suported DID Methods. The server sends its X.509 certificate and the client its Verifiable Credential into their respective <tt>Certificate</tt> messages.
After receiving the <tt>CertificateVerify</tt> and <tt>Finished</tt> messages, the server resolves the client DID to retrieve the client <em>pk</em> and authenticate it.</t>
        <figure anchor="fig-mutual-vc-x509">
          <name>TLS Client Uses a Verifiable Credential and TLS Server Uses an X.509 Certificate</name>
          <artwork align="center"><![CDATA[
Client                                               Server         DLT

ClientHello
server_certificate_type=(X.509)
client_certificate_type=(VC,X.509)
                        -------->
                                                ServerHello
                                      {EncryptedExtensions}
                            {server_certificate_type=X.509}
                               {client_certificate_type=VC}
                                       {CertificateRequest}
                             {did_methods=(btcr,ethr,iota)}
                                              {Certificate}
                                        {CertificateVerify}
                                                 {Finished}
                        <--------        [Application Data]
{Certificate}
{CertificateVerify}
{Finished}              -------->
                                                           DID Resolve
                                                           ==========>
[Application Data]      <------->        [Application Data]
]]></artwork>
        </figure>
      </section>
      <section anchor="mutual-authentication-with-client-using-x509-certificate-and-server-using-verifiable-credential">
        <name>Mutual authentication with Client using X.509 Certificate and Server using Verifiable Credential</name>
        <t>The example in <xref target="fig-mutual-x509-vc"/> complements the previous one showing a TLS 1.3 handshake with mutual authentication where the client uses X.509 certificate and the server a Verifiable Credential.
The client sends the <tt>server_certificate_type</tt> extension indicating both <tt>VC</tt> and <tt>X.509</tt> certificate types along with the <tt>did_methods</tt> extension containing the list of supported DID Methods. The client also sends the <tt>client_certificate_type</tt> extension indicating its capability to provide only an X.509 certificate.
The server sends the <tt>server_certificate_type</tt> set to <tt>VC</tt>, the <tt>client_certificate_type</tt> set to <tt>X.509</tt> and the <tt>CertificateRequest</tt> message. The server sends its Verifiable Credential, and the client its X.509 certificate into their respective <tt>Certificate</tt> messages.
After receiving the <tt>CertificateVerify</tt> and <tt>Finished</tt> messages, the client resolves the server's DID to retrieve the server <em>pk</em> and authenticate the client.</t>
        <figure anchor="fig-mutual-x509-vc">
          <name>TLS Client Uses an X.509 Certificate and TLS Server Uses a Verifiable Credential</name>
          <artwork align="center"><![CDATA[
DLT          Client                                              Server

             ClientHello
             server_certificate_type=(VC,X.509)
             client_certificate_type=(X.509)
             did_methods=(btcr,ethr,iota)
                                       -------->
                                                            ServerHello
                                                  {EncryptedExtensions}
                                           {server_certificate_type=VC}
                                        {client_certificate_type=X.509}
                                                   {CertificateRequest}
                                                          {Certificate}
                                                    {CertificateVerify}
                                                             {Finished}
                                       <--------     [Application Data]
 DID Resolve
 <==========
            {Certificate}
            {CertificateVerify}
            {Finished}                 -------->
            [Application Data]         <------->     [Application Data]
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>All the security considerations presented in <xref target="RFC8446"/> applies to this document as well.
Further considerations can be made on the DID resolution process. Assuming that a DID resolution is performed in clear, a man-in-the-middle could impersonate the DLT node, forge a DID Document containing the authenticating endpoint's DID, associate it with a key pair that he owns, and then return it to the DID resolver. Thus, the attacker is able to compute a valid CertificateVerify message by possessing the long term private key. In practice, the man-in-the-middle attacker breaks in transit the immutability feature provided by the DLT, i.e. the RoT for the public keys.
A possible solution to this attack is to esthablish a TLS channel towards the DLT node and authenticate only the latter to rely on the received data. The DLT node <bcp14>MUST</bcp14> be authenticated through an X.509 certificate. The session resumption and 0 round-trip time (0-RTT) features of TLS 1.3 can be used to reduce the overhead of establishing this TLS channel.
In addition, the communication with the DLT node can be protected with Internet Protocol Security
(IPsec) <xref target="RFC6071"/> and Internet Key Exchange (IKE) <xref target="RFC5996"/> in endpoint-to-endpoint transport mode for even better performance in term of latency of DID resolution.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>To be addressed</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5996">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="September" year="2010"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document replaces and updates RFC 4306, and includes all of the clarifications from RFC 4718. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5996"/>
          <seriesInfo name="DOI" value="10.17487/RFC5996"/>
        </reference>
        <reference anchor="RFC6071">
          <front>
            <title>IP Security (IPsec) and Internet Key Exchange (IKE) Document Roadmap</title>
            <author fullname="S. Frankel" initials="S." surname="Frankel"/>
            <author fullname="S. Krishnan" initials="S." surname="Krishnan"/>
            <date month="February" year="2011"/>
            <abstract>
              <t>Over the past few years, the number of RFCs that define and use IPsec and Internet Key Exchange (IKE) has greatly proliferated. This is complicated by the fact that these RFCs originate from numerous IETF working groups: the original IPsec WG, its various spin-offs, and other WGs that use IPsec and/or IKE to protect their protocols' traffic.</t>
              <t>This document is a snapshot of IPsec- and IKE-related RFCs. It includes a brief description of each RFC, along with background information explaining the motivation and context of IPsec's outgrowths and extensions. It obsoletes RFC 2411, the previous "IP Security Document Roadmap."</t>
              <t>The obsoleted IPsec roadmap (RFC 2411) briefly described the interrelationship of the various classes of base IPsec documents. The major focus of RFC 2411 was to specify the recommended contents of documents specifying additional encryption and authentication algorithms. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6071"/>
          <seriesInfo name="DOI" value="10.17487/RFC6071"/>
        </reference>
        <reference anchor="RFC7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="DID" target="https://www.w3.org/TR/did-core/">
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author initials="" surname="W3C">
              <organization/>
            </author>
            <date year="2022" month="July"/>
          </front>
        </reference>
        <reference anchor="DID-Registries" target="https://www.w3.org/TR/did-spec-registries/#did-methods">
          <front>
            <title>DID Specification Registries</title>
            <author initials="" surname="W3C">
              <organization/>
            </author>
            <date year="2023" month="September"/>
          </front>
        </reference>
        <reference anchor="VC" target="https://www.w3.org/TR/vc-data-model-2.0/">
          <front>
            <title>Verifiable Credentials Data Model v2.0</title>
            <author initials="" surname="W3C">
              <organization/>
            </author>
            <date year="2023" month="November"/>
          </front>
        </reference>
        <reference anchor="VP" target="https://www.w3.org/TR/vc-data-model-2.0/">
          <front>
            <title>Verifiable Credentials Data Model v2.0</title>
            <author initials="" surname="W3C">
              <organization/>
            </author>
            <date year="2023" month="November"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 442?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank Nicola Tuveri for his very helpful suggestions during the preparation of the first version of this technical specification.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
