<?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-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <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-01"/>
    <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="16"/>
    <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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/Cybersecurity-LINKS/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. <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(TBD),
   (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.</t>
      <artwork><![CDATA[
enum {
   server_name(0),
   max_fragment_length(1),
   ..,
   did_methods(TBD),
   (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>
