<?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.18 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vesco-vcauthtls-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <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-02"/>
    <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="July" day="25"/>
    <area>AREA</area>
    <workgroup>WG</workgroup>
    <keyword>TLS</keyword>
    <keyword>VC</keyword>
    <keyword>DID</keyword>
    <keyword>DLT</keyword>
    <abstract>
      <?line 72?>

<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 77?>

<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 {
   name0(0),
   name1(1),
   name2(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="RFC4301"/> <xref target="RFC6071"/> in endpoint-to-endpoint transport mode for even better performance in term of latency of DID resolution. Mutual authentication in Internet Key Exchange Version 2 (IKEv2) <xref target="RFC7296"/> can be performed with raw public keys.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Privacy issues can arise when the client resolves the server's DID on a public DLT node. The DLT node can monitor all the servers a client connects to. This problem disappears when DLT nodes are deployed as an integral part of the IoT system itself.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>To be addressed</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7296">
          <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"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <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 obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="RFC4301">
          <front>
            <title>Security Architecture for the Internet Protocol</title>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <author fullname="K. Seo" initials="K." surname="Seo"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document describes an updated version of the "Security Architecture for IP", which is designed to provide security services for traffic at the IP layer. This document obsoletes RFC 2401 (November 1998). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4301"/>
          <seriesInfo name="DOI" value="10.17487/RFC4301"/>
        </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="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="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 445?>

<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>
