<?xml version="1.0"encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>encoding="utf-8"?> <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.9 --> <!-- converted to v3 (xml2rfc v2v3 conversion 2.31.0) --> <!DOCTYPE rfc SYSTEM"rfc2629.dtd" [ ]> <?rfc rfcedstyle="yes"?> <?rfc toc="yes"?> <?rfc tocindent="yes"?> <?rfc sortrefs="yes"?> <?rfc symrefs="yes"?> <?rfc strict="yes"?> <?rfc comments="yes"?> <?rfc inline="yes"?> <?rfc text-list-symbols="-o*+"?>"rfc2629-xhtml.ent"> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="independent" category="exp" ipr="trust200902" number="8672" docName="draft-sheffer-tls-pinning-ticket-12"category="exp">obsoletes="" updates="" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3"> <front> <title abbrev="Pinning with Tickets">TLS Server Identity Pinning with Tickets</title> <seriesInfo name="RFC" value="8672"/> <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer"> <organization>Intuit</organization> <address> <email>yaronf.ietf@gmail.com</email> </address> </author> <author initials="D." surname="Migault" fullname="Daniel Migault"> <organization>Ericsson</organization> <address> <email>daniel.migault@ericsson.com</email> </address> </author> <dateyear="2019" month="June" day="26"/>month="October" year="2019"/> <area>General</area><keyword>Internet-Draft</keyword><keyword>public-key certificates, trust-on-first-use, TOFU</keyword> <abstract> <t>Misissued public-key certificates can prevent TLS clients from appropriately authenticating the TLS server. Several alternatives have been proposed to detect this situation and prevent a client from establishing a TLS session with a TLS end point authenticated with an illegitimate public-key certificate. These mechanisms are either not widely deployed or limited to public web browsing.</t> <t>This document proposes experimental extensions to TLS with opaque pinning tickets as a way to pin theserver’sserver's identity. During an initial TLS session, the server provides an original encrypted pinning ticket. In subsequent TLS session establishment, upon receipt of the pinning ticket, the server proves its ability to decrypt the pinning ticket and thus the ownership of the pinning protection key. The client can now safely conclude that the TLS session is established with the same TLS server as the original TLS session. One of the important properties of this proposal is that no manual management actions are required.</t> </abstract> </front> <middle> <section anchor="introduction"title="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t>Misissued public-key certificates can prevent TLS <xreftarget="RFC8446"/>target="RFC8446" format="default"/> clients from appropriately authenticating the TLS server. This is a significant risk in the context of the global public key infrastructure (PKI), and similarly forlarge scalelarge-scale deployments of certificates within enterprises.</t> <t>This document proposes experimental extensions to TLS with opaque pinning tickets as a way to pin theserver’sserver's identity. The approach is intended to be easy to implement and deploy, and reuses some of the ideas behind TLS session resumption <xreftarget="RFC5077"/>.</t>target="RFC5077" format="default"/>.</t> <t>Ticket pinning is asecond factorsecond-factor server authentication method and is not proposed as a substitute for the authentication method provided in the TLS key exchange. More specifically, the client only uses the pinning identity method after the TLS key exchange is successfully completed. In other words, the pinning identity method is only performed over an authenticated TLS session. Note thatTicket Pinningticket pinning does not pin certificate information and therefore is truly an independentsecond factorsecond-factor authentication.</t> <t>Ticket pinning is aTrust On First Usetrust-on-first-use (TOFU) mechanism, in that the first server authentication is only based on PKI certificate validation, but for any follow-on sessions, the client is further ensuring theserver’sserver's identity based on theserver’sserver's ability to decrypt the ticket, in addition to normal PKI certificate authentication.</t> <t>During initial TLS session establishment, the client requests a pinning ticket from the server. Upon receiving the request the server generates a pinning secretwhichthat is expected to be unpredictable for peers other than the client or the server. In our case, the pinning secret is generated from parameters exchanged during the TLS key exchange, so client and server can generate it locally and independently. The server constructs the pinning ticket with the necessary information to retrieve the pinning secret. The server then encrypts the ticket and returns the pinning ticket to the client with an associated pinning lifetime.</t> <t>The pinning lifetime value indicates for how long the server promises to retain the server-side ticket-encryption key, which allows it to complete the protocol exchange correctly and prove its identity. The server commitment (and ticket lifetime) is typically on the order of weeks.</t> <t>Once the key exchange iscompletedcompleted, and the server is deemed authenticated, the client generates locally the pinning secret and caches theserver’sserver's identifiers to index the pinning secret as well as the pinning ticket and its associated lifetime.</t> <t>When the clientre-establishesreestablishes a new TLS session with the server, it sends the pinning ticket to the server. Upon receiving it, the server returns a proof of knowledge of the pinning secret. Once the key exchange iscompletedcompleted, and the server has been authenticated, the client checks the pinning proof returned by the server using theclient’sclient's stored pinning secret. If the proof matches, the client can conclude that the server to which it is currently connectingto isis, infactfact, the correct server.</t> <t>This document only applies to TLS 1.3. We believe that the idea can also beback-fittedretrofitted into earlier versions of the protocol, but this would require significant changes. One example is that TLS 1.2 <xreftarget="RFC5246"/>target="RFC5246" format="default"/> and earlier versions do not provide a generic facility of encrypted handshake extensions, such as is used here to transport the ticket.</t> <t>The main advantages of this protocol over earlier pinning solutionsare:</t> <t><list style="symbols"> <t>Theare the following:</t> <ul spacing="normal"> <li>The protocol is at the TLS level, and as a result is not restricted to HTTP at the applicationlevel.</t> <t>Thelevel.</li> <li>The protocol is robust to changes in serverIP, Certificate AuthorityIP address, certification authority (CA), and publickey changes.key. The server is characterized by the ownership of the pinning protection key, which is never provided to the client. Server configuration parameters such as the CA and the public key may change without affecting the pinning ticketprotocol.</t> <t>Onceprotocol.</li> <li>Once a single parameter is configured (theticket’sticket's lifetime), operation is fully automated. The server administrator need not bother with the management of backup certificates or explicitpins.</t> <t>Forpins.</li> <li>For server clusters, we reuse the existing<xref target="RFC5077"/>infrastructure <xref target="RFC5077" format="default"/> where itexists.</t> <t>Pinningexists.</li> <li>Pinning errors, presumably resulting from man-in-the-middle (MITM) attacks, can be detected both by the client and the server. This allows for server-side detection of MITM attacks using large-scale analytics, and with no need to rely on clients to explicitly report theerror.</t> </list></t>error.</li> </ul> <t>A note on terminology: unlike other solutions in this space, we do not do“certificate pinning”"certificate pinning" (or“public"public keypinning”),pinning"), since the protocol is oblivious to theserver’sserver's certificate. We prefer the term“server"server identitypinning”pinning" for this new solution. In our solution, the server proves its identity by generating a proof that it can read and decrypt an encrypted ticket. As a result, the identity proof relies on proof of ownership of the pinning protection key. However, this key is never exchanged with the client or known by it, and so cannot itself be pinned.</t> <section anchor="conventions-used-in-this-document"title="Conventions usednumbered="true" toc="default"> <name>Conventions Used inthis document"> <t>TheThis Document</name> <t> The key words“MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”,"<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“OPTIONAL”"<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> </section> <section anchor="scope-of-experimentation"title="Scopenumbered="true" toc="default"> <name>Scope ofExperimentation">Experimentation</name> <t>This document describes an experimental extension to the TLS protocol. This section defines constraints on this experiment and how it can yield useful information, potentially resulting in a standard.</t> <t>The protocol is designed so that if the server does not support it, the client and server fall back to a normal TLS exchange, with the exception of a single PinningTicket extension being initially sent by the client. In addition, the protocol is designedtoonly to strengthen the validation of theserver’sserver's identity(“second factor”).("second factor"). As a result, implementation or even protocol errors should not result in weakened security compared to the normal TLS exchange. Given these two points, experimentation can be run on the open Internet between consenting client and server implementations.</t> <t>The goal of the experiment is to prove that:</t><t><list style="symbols"> <t>Non-supporting<ul spacing="normal"> <li>Non-supporting clients and servers areunaffected.</t> <t>Connectivityunaffected.</li> <li>Connectivity between supporting clients and servers is retained under normal circumstances, whether the client connects to the server frequently (relative to theticket’sticket's lifetime) or veryrarely.</t> <t>Enterpriserarely.</li> <li>Enterprise middleboxes do not interrupt suchconnectivity.</t> <t>Misissuedconnectivity.</li> <li>Misissued certificates and rogue TLS-aware middleboxes do result in broken connectivity, and these cases are detected on the client and/or server side. Clients and servers can be recovered even after such events and the normal connectivityrestored.</t> </list></t>restored.</li> </ul> <t>Following two years of successful deployment, the authors will publish a document that summarizes theexperiment’sexperiment's findings and will resubmit the protocol for consideration as a Proposed Standard.</t> </section> </section> <section anchor="protocol-overview"title="Protocol Overview">numbered="true" toc="default"> <name>Protocol Overview</name> <t>The protocol consists of two phases: the first time a particular client connects to a server, and subsequent connections.</t> <t>This protocol supports full TLS handshakes, as well as 0-RTT handshakes. Below we present it in the context of a full handshake, but behavior in 0-RTT handshakes should be identical.</t> <t>The document presents some similarities with the ticket resumption mechanism described in <xreftarget="RFC5077"/>.target="RFC5077" format="default"/>. However the scope of this document differs from session resumption mechanisms implemented with <xreftarget="RFC5077"/>target="RFC5077" format="default"/> or with other mechanisms. Specifically, the pinning ticket does not carry any state associated with a TLS session and thus cannot be used for sessionresumption,resumption orto authenticate the client.client authentication. Instead, the pinning ticket only contains the encrypted pinning secret. The pinning ticket is used by the server to prove its ability to decrypt it, which implies ownership of the pinning protection key.</t> <t><xreftarget="RFC5077"/>target="RFC5077" format="default"/> has been obsoleted by <xreftarget="RFC8446"/>target="RFC8446" format="default"/>, and ticket resumption is now defined bySec. 2.2 of<xreftarget="RFC8446"/>.target="RFC8446" sectionFormat="of" section="2.2" format="default"/>. This document references <xreftarget="RFC5077"/>target="RFC5077" format="default"/> as an informational document since it contains a more thorough discussion of stateless ticketresumptionresumption, and because ticket resumption benefits from significant operational experience with TLS 1.2 that is still widely deployed at the time ofwriting this document.writing. Thisexperienceexperience, as well as deployment experience, can easily be re-used for identity pinning.</t> <t>With TLS 1.3, session resumption is based on apreshared keyPre-Shared Key (PSK). This is orthogonal to this protocol. With TLS 1.3, a TLS session can be established using PKI and a pinning ticket, and later resumed with PSK.</t> <t>However, the protocol described in this document addresses the problem of misissued certificates. Thus, it is not expected to be used outside a certificate-based TLS key exchange, such as in PSK. As a result, PSK handshakesMUST NOT<bcp14>MUST NOT</bcp14> include the extension defined here.</t> <section anchor="initial-connection"title="Initial Connection">numbered="true" toc="default"> <name>Initial Connection</name> <t>When a client first connects to a server, it requests a pinning ticket by sending an empty PinningTicket extension, and receives it as part of theserver’sserver's first response, in the returned PinningTicket extension.</t><figure><artwork><![CDATA[<artwork name="" type="ascii-art" align="left" alt=""><![CDATA[ Client Server ClientHello + key_share + signature_algorithms + PinningTicket --------> ServerHello + key_share {EncryptedExtensions + PinningTicket} {CertificateRequest*} {Certificate*} {CertificateVerify*} <-------- {Finished} {Certificate*} {CertificateVerify*} {Finished} --------> [Application Data] <-------> [Application Data] * Indicates optional or situation-dependent messages that are not always sent. {} Indicates messages protected using keys derived from the ephemeral secret. [] Indicates messages protected using keys derived from the master secret.]]></artwork></figure>]]></artwork> <t>If a client supports the PinningTicket extension and does not have any pinning ticket associated with the server, the exchange is considered as an initial connection. Other reasons the client may not have a pinning ticket include the client having flushed its pinning ticket store, or the committed lifetime of the pinning ticket having expired.</t> <t>Upon receipt of the PinningTicket extension, the server computes a pinning secret (<xreftarget="pinning-secret"/>),target="pinning-secret" format="default"/>) and sends the pinning ticket (<xreftarget="pinning-ticket"/>)target="pinning-ticket" format="default"/>) encrypted with the pinning protection key (<xreftarget="pinning-ticket-key"/>).target="pinning-ticket-key" format="default"/>). The pinning ticket is associated with a lifetime value by which the server assumes the responsibility of retaining the pinning protection key and being able to decrypt incoming pinning tickets during the period indicated by the committed lifetime.</t> <t>Once the pinning ticket has been generated, the server returns the pinning ticket and the committed lifetime in a PinningTicket extension embedded in the EncryptedExtensions message. We note that a PinningTicket extensionMUST NOT<bcp14>MUST NOT</bcp14> be sent as part of a HelloRetryRequest.</t> <t>Upon receiving the pinning ticket, the clientMUST NOT<bcp14>MUST NOT</bcp14> accept it until the key exchange is completed and the server authenticated. If the key exchange is not completed successfully, the clientMUST<bcp14>MUST</bcp14> ignore the received pinning ticket. Otherwise, the client computes the pinning secret andSHOULD<bcp14>SHOULD</bcp14> cache the pinning secret and the pinning ticket for the duration indicated by the pinning ticket lifetime. The clientSHOULD<bcp14>SHOULD</bcp14> clean up the cached values at the end of the indicated lifetime.</t> </section> <section anchor="subsequent-connections"title="Subsequent Connections">numbered="true" toc="default"> <name>Subsequent Connections</name> <t>When the client initiates a connection to a server it has previously seen (see <xreftarget="indexing"/>target="indexing" format="default"/> on identifying servers), itSHOULD<bcp14>SHOULD</bcp14> send the pinning ticket for that server. The pinning ticket, pinningsecretsecret, and pinning ticket lifetime computed during the establishment of the previous TLS session are designated in this document as the“original”"original" ones, to distinguish them from a new ticket that may be generated during the current session.</t> <t>The serverMUST<bcp14>MUST</bcp14> extract the original pinning_secret value from the ticket andMUST<bcp14>MUST</bcp14> respond with a PinningTicket extension, which includes:</t><t><list style="symbols"> <t>A<ul spacing="normal"> <li>A proof that the server can understand the ticket that was sent by the client; this proof also binds the pinning ticket to theserver’sserver's (current) public key, as well as the ongoing TLS session. The proof is mandatory andMUST<bcp14>MUST</bcp14> be included if a pinning ticket was sent by theclient.</t> <t>Aclient.</li> <li>A fresh pinning ticket. The main reason for refreshing the ticket on each connection is privacy: to avoid the ticket serving as a fixed client identifier. While a fresh pinning ticket might be of zero length, it isRECOMMENDED<bcp14>RECOMMENDED</bcp14> to include a fresh ticket with anon zerononzero length with eachresponse.</t> </list></t>response.</li> </ul> <t>If the server cannot validate the received ticket, that might indicate an earlier MITM attack on this client. The serverMUST<bcp14>MUST</bcp14> then abort the connection with a handshake_failurealert,alert andSHOULD<bcp14>SHOULD</bcp14> log this failure.</t> <t>The clientMUST<bcp14>MUST</bcp14> verify the proof, and if it fails to do so,MUSTthe client <bcp14>MUST</bcp14> issue a handshake_failure alert and abort the connection (see also <xreftarget="client_error"/>).target="client_error" format="default"/>). It is important that the client does not attempt to“fall back”"fall back" by omitting the PinningTicket extension.</t> <t>When the connection is successfully set up,i.e.i.e., after the Finished message is verified, the clientSHOULD<bcp14>SHOULD</bcp14> store the new ticket along with the corresponding pinning_secret, replacing the original ticket.</t> <t>Although this is an extension, if the client already has a ticket for a server, the clientMUST<bcp14>MUST</bcp14> interpret a missing PinningTicket extension in theserver’sserver's response as an attack, because of theserver’sserver's prior commitment to respect the ticket. The clientMUST<bcp14>MUST</bcp14> abort the connection in this case. See also <xreftarget="ramp_down"/>target="ramp_down" format="default"/> on ramping down support for this extension.</t> </section> <section anchor="indexing"title="Indexingnumbered="true" toc="default"> <name>Indexing thePins">Pins</name> <t>Each pin is associated with a set of identifierswhich includethat include, amongothers host name,others, hostname, protocol (TLS orDTLS)DTLS), and port number. In other words, the pin for port TCP/443 may be different from that forDTLSDTLS, or from the pin for port TCP/8443. These identifiers are expected to be relevant to characterize the identity of the server as well as the establishing TLS session. When ahost namehostname is used, itMUST<bcp14>MUST</bcp14> be the value sent inside the Server Name Indication (SNI) extension. This definition is similar to the concept of a Web Origin <xreftarget="RFC6454"/>,target="RFC6454" format="default"/>, but does not assume the existence of a URL.</t> <t>The purpose of ticket pinning is to pin the server identity. As a result, any information orthogonal to theserver’sserver's identityMUST NOT<bcp14>MUST NOT</bcp14> be considered in indexing. More particularly, IP addresses are ephemeral and forbidden inSNISNI, and therefore pinsMUST NOT<bcp14>MUST NOT</bcp14> be associated with IP addresses. Similarly, CA names or public keys associated with serverMUST NOT<bcp14>MUST NOT</bcp14> be used for indexing as they may change over time.</t> </section> </section> <section anchor="message-definitions"title="Message Definitions">numbered="true" toc="default"> <name>Message Definitions</name> <t>This section defines the format of the PinningTicket extension. We follow the message notation of <xreftarget="RFC8446"/>.</t> <figure><artwork><![CDATA[target="RFC8446" format="default"/>.</t> <sourcecode name="" type="c"><![CDATA[ opaque pinning_ticket<0..2^16-1>; opaque pinning_proof<0..2^8-1>; struct { select (Role) { case client: pinning_ticket ticket<0..2^16-1>; //omitted on 1st connection case server: pinning_proof proof<0..2^8-1>; //no proof on 1st connection pinning_ticket ticket<0..2^16-1>; //omitted on ramp down uint32 lifetime; } } PinningTicketExtension;]]></artwork></figure> <t><list style="hanging"> <t hangText='ticket'>]]></sourcecode> <dl newline="false" spacing="normal" indent="10"> <dt>ticket</dt> <dd> a pinning ticket sent by the client or returned by the server. The ticket is opaque to the client. The extensionMUST<bcp14>MUST</bcp14> contain exactly 0 or 1tickets.</t> <t hangText='proof'>tickets.</dd> <dt>proof</dt> <dd> a demonstration by the server that it understands the received ticket and therefore that it is in possession of the secret that was used to generate it originally. The extensionMUST<bcp14>MUST</bcp14> contain exactly 0 or 1proofs.</t> <t hangText='lifetime'>proofs.</dd> <dt>lifetime</dt> <dd> the duration (in seconds) that the server commits to accept offered tickets in thefuture.</t> </list></t>future.</dd> </dl> </section> <section anchor="crypto"title="Cryptographic Operations">numbered="true" toc="default"> <name>Cryptographic Operations</name> <t>This section provides details on the cryptographic operations performed by the protocol peers.</t> <section anchor="pinning-secret"title="Pinning Secret">numbered="true" toc="default"> <name>Pinning Secret</name> <t>The pinning secret is generated locally by the client and theserverserver, which means they must use the same inputs to generate it. This value must be generated before the ServerHello message is sent, as the server includes the corresponding pinning ticket in the same flight as the ServerHello message. In addition, the pinning secret must be unpredictable to any party other than the client and the server.</t> <t>The pinning secret is derived using the Derive-Secret function provided by TLS 1.3, described inSection “Key Schedule” of<xreftarget="RFC8446"/>.</t> <figure><artwork><![CDATA[target="RFC8446" sectionFormat="of" section="7.1" format="default"/>.</t> <sourcecode name="" type="c"><![CDATA[ pinning secret = Derive-Secret(Handshake Secret, "pinning secret", ClientHello...ServerHello)]]></artwork></figure>]]></sourcecode> </section> <section anchor="pinning-ticket"title="Pinning Ticket">numbered="true" toc="default"> <name>Pinning Ticket</name> <t>The pinning ticket contains the pinning secret. The pinning ticket is provided by the client to theserverserver, which decrypts it in order to extract the pinning secret and responds with a pinning proof. As a result, the characteristics of the pinning ticket are:</t><t><list style="symbols"> <t>Pinning<ul spacing="normal"> <li>Pinning ticketsMUST<bcp14>MUST</bcp14> be encrypted and integrity-protected using strong cryptographicalgorithms.</t> <t>Pinningalgorithms.</li> <li>Pinning ticketsMUST<bcp14>MUST</bcp14> be protected with a long-term pinning protectionkey.</t> <t>Pinningkey.</li> <li>Pinning ticketsMUST<bcp14>MUST</bcp14> include a pinning protection key ID or serial number as to enable the pinning protection key to berefreshed.</t> <t>Therefreshed.</li> <li>The pinning ticketMAY<bcp14>MAY</bcp14> include other information, in addition to the pinning secret. When additional information is included, a careful review needs to be performed to evaluate its impact onprivacy.</t> </list></t>privacy.</li> </ul> <t>The pinningticket’sticket's format is not specified by this document, butwe RECOMMENDa format similar to the one proposed by <xreftarget="RFC5077"/>.</t>target="RFC5077" format="default"/> is <bcp14>RECOMMENDED</bcp14>.</t> </section> <section anchor="pinning-ticket-key"title="Pinningnumbered="true" toc="default"> <name>Pinning ProtectionKey">Key</name> <t>The pinning protection key isonlyused only by the server and so remains server implementation specific. <xreftarget="RFC5077"/>target="RFC5077" format="default"/> recommends the use of two keys, but when usingAEAD algorithmsAuthenticated Encryption with Associated Data (AEAD) algorithms, only a single key is required.</t> <t>When a single server terminates TLS for multiple virtual servers using theServer Name Indication (SNI)SNI mechanism,weit is stronglyRECOMMEND to<bcp14>RECOMMENDED</bcp14> that the server use a separate protection key for each one of them, in order to allow migrating virtual servers between different servers while keeping pinning active.</t> <t>As noted in <xreftarget="cluster"/>,target="cluster" format="default"/>, if the server is actually a cluster of machines, the protection keyMUST<bcp14>MUST</bcp14> be synchronized between all the nodes that accept TLS connections to the same server name. When <xreftarget="RFC5077"/>target="RFC5077" format="default"/> is deployed, an easy way to do it is to derive the protection key from the session-ticket protection key, which is already synchronized. For example:</t><figure><artwork><![CDATA[<sourcecode name="" type="c"><![CDATA[ pinning_protection_key = HKDF-Expand(resumption_protection_key, "pinning protection", L)]]></artwork></figure>]]></sourcecode> <t>Where resumption_protection_key is the ticket protection key defined in <xreftarget="RFC5077"/>.target="RFC5077" format="default"/>. Both resumption_protection_key and pinning_protection_key are only used by the server.</t> <t>The above solution attempts to minimize code changes related to management of the resumption_protection_key. The drawback is that this key would be used both to directly encrypt session tickets and to derive the pinning_protection_key, and such mixed usage of a single key is not in line with cryptographic best practices. Where possible,we RECOMMEND to haveit is <bcp14>RECOMMENDED</bcp14> that the resumption_protection_keyand pinning_protection_key as two,be unrelatedkeysto the pinning_protection_key and that they are separately shared among the relevant servers.</t> </section> <section anchor="pinning-proof"title="Pinning Proof">numbered="true" toc="default"> <name>Pinning Proof</name> <t>The pinning proof is sent by the server to demonstrate that it has been able to decrypt the pinning ticket and to retrieve the pinning secret. The proof must be unpredictable and must not be replayed. Similarly to the pinning ticket, the pinning proof is sent by the server in the ServerHello message. In addition, it must not be possible for a MITM server with a fake certificate to obtain a pinning proof from the original server.</t> <t>In order to address these requirements, the pinning proof is bound to the TLS session as well as the public key of the server:</t><figure><artwork><![CDATA[<sourcecode name="" type="c"><![CDATA[ pinning_proof_secret=Derive-Secret(Handshake Secret, "pinning proof 1", ClientHello...ServerHello) proof = HMAC(original_pinning_secret, "pinning proof 2" + pinning_proof_secret + Hash(server_public_key))]]></artwork></figure>]]></sourcecode> <t>where HMAC <xreftarget="RFC2104"/>target="RFC2104" format="default"/> uses the Hash algorithm that was negotiated in the handshake, and the same hash is also used over theserver’sserver's public key. The original_pinning_secret value refers to the secret value extracted from the ticket sent by the client, to distinguish it from a new pinning secret value that is possibly computed in the current exchange. The server_public_key value is the DER representation of the public key, specifically the SubjectPublicKeyInfo structure as-is.</t> </section> </section> <section anchor="operational-considerations"title="Operational Considerations">numbered="true" toc="default"> <name>Operational Considerations</name> <t>The main motivation behind the current protocol is to enable identity pinning without the need for manual operations. Manual operations are susceptible to humanerrorerror, and in the case of public key pinning, can easily result in“server bricking”:"server bricking": the server becoming inaccessible to some or all of its users. To achieve thisgoalgoal, operations described in identity pinning are only performed within the current TLS session, and there is no dependence on any TLS configuration parameters such as CA identity or public keys. As a result, configuration changes are unlikely to lead to desynchronized state between the client and the server.</t> <section anchor="cluster"title="Protectionnumbered="true" toc="default"> <name>Protection KeySynchronization">Synchronization</name> <t>The only operational requirement when deploying this protocol isthatthat, if the server is part of a cluster, protection keys (the keys used to encrypt tickets)MUST<bcp14>MUST</bcp14> be synchronized between all cluster members. The protocol is designed so that if resumption ticket protection keys <xreftarget="RFC5077"/>target="RFC5077" format="default"/> are already synchronized between cluster members, nothing more needs to be done.</t> <t>Moreover, synchronization does not need to be instantaneous,e.g.e.g., protection keys can be distributed a few minutes or hours in advance of their rollover. In such scenarios, each cluster memberMUST<bcp14>MUST</bcp14> be able to accept tickets protected with a new version of the protection key, even while it is still using an old version to generate keys. This ensuresthatthat, when a clientthatreceives a“new” ticket"new" ticket, it does not next hit a cluster member that still rejects this ticket.</t> <t>Misconfiguration can lead to theserver’sserver's clock being off by a large amount of time. Consider a case where aserver’sserver's clock is misconfigured, for example, to be 1 year in the future, and the system is allowed to delete expired keys automatically. The server will then delete many outstanding keys because they are now long expired and will end up rejecting valid tickets that are stored by clients. Such a scenario could make the server inaccessible to a large number of clients.</t> <t>The decision to delete a key should at least consider the largest value of the ticket lifetime as well as the expected timedesynchronisationdesynchronization between the servers of the cluster and the time difference for distributing the new key among the different servers in the cluster.</t> </section> <section anchor="ticket-lifetime"title="Ticket Lifetime">numbered="true" toc="default"> <name>Ticket Lifetime</name> <t>The lifetime of the ticket is a commitment by the server to retain theticket’sticket's corresponding protection key for this duration, so that the server can prove to the client that it knows the secret embedded in the ticket. For production systems, the lifetimeSHOULD<bcp14>SHOULD</bcp14> be between 7 and 31 days.</t> </section> <section anchor="certificate-renewal"title="Certificate Renewal">numbered="true" toc="default"> <name>Certificate Renewal</name> <t>The protocol ensures that the client will continue speaking to the correct server even when theserver’sserver's certificate is renewed. In this sense, pinning is not associated withcertificatescertificates, which is the reason we designate the protocol described in this document as“server"server identitypinning”.</t>pinning".</t> <t>Note that this property is not impacted by the use of theserver’sserver's public key in the pinningproof,proof because the scope of the public key used is only the current TLS session.</t> </section> <section anchor="certificate-revocation"title="Certificate Revocation">numbered="true" toc="default"> <name>Certificate Revocation</name> <t>The protocol is orthogonal to certificate validation in the sense that, if theserver’sserver's certificate has been revoked or is invalid for some other reason, the clientMUST<bcp14>MUST</bcp14> refuse to connect to it regardless of any ticket-related behavior.</t> </section> <section anchor="ramp_down"title="Disabling Pinning">numbered="true" toc="default"> <name>Disabling Pinning</name> <t>A server implementing this protocolMUST<bcp14>MUST</bcp14> have a“ramp down”"ramp down" mode of operation where:</t><t><list style="symbols"> <t>The<ul spacing="normal"> <li>The server continues to accept valid pinning tickets and responds correctly with aproof.</t> <t>Theproof.</li> <li>The server does not send back a new pinningticket.</t> </list></t>ticket.</li> </ul> <t>After awhilewhile, no clients will hold validtickets any moretickets, and the feature may be disabled. Note that clients that do not receive a new pinning ticket do not necessarily need to remove the original ticket. Instead, the client may keeponusing the ticket until its lifetime expires. However, as detailed insection<xreftarget="privacy"/>,target="privacy" format="default"/>, re-use of a ticket by the client may result in privacy concerns as the ticket value may be used to correlate TLS sessions.</t> <t>Issuing a new pinning ticket with a shorter lifetime would only delay the ramp down process, as the shorter lifetime can only affect clients that actually initiated a new connection. Other clients would still see the original lifetime for their pinning tickets.</t> </section> <section anchor="server-compromise"title="Server Compromise">numbered="true" toc="default"> <name>Server Compromise</name> <t>If a server compromise is detected, the pinning protection keyMUST<bcp14>MUST</bcp14> be rotated immediately, but the serverMUST<bcp14>MUST</bcp14> still accept valid tickets that use the old, compromised key. Clients that still hold old pinning tickets will remain vulnerable to MITM attacks, but those that connect to the correct server will immediately receive new tickets protected with the newly generated pinning protection key.</t> <t>The same procedure applies if the pinning protection key is compromised directly,e.g.e.g., if a backup copy is inadvertently made public.</t> </section> <section anchor="disaster-recovery"title="Disaster Recovery">numbered="true" toc="default"> <name>Disaster Recovery</name> <t>All web servers in production need to be backed up, so that they can be recovered if a disaster (including a malicious activity) ever wipes them out. Backup often includes the certificate and its private key, which must be backed up securely. The pinning secret, including earlier versions that are still being accepted, must be backed up regularly. However since it is only used as an authentication second factor, it does not require the same level of confidentiality as theserver’sserver's private key.</t> <t>Readers should note that <xreftarget="RFC5077"/>target="RFC5077" format="default"/> session resumption keys are more securitysensitive,sensitive and should normally not be backedupup, but rather treated as ephemeral keys. Even when servers derive pinning secrets from resumption keys (<xreftarget="pinning-secret"/>),target="pinning-secret" format="default"/>), theyMUST NOT<bcp14>MUST NOT</bcp14> back up resumption keys.</t> </section> </section> <sectionanchor="implementation-status" title="Implementation Status"> <t>Note to RFC Editor: please remove this section before publication, including the reference to <xref target="RFC7942"/>.</t>anchor="security-considerations" numbered="true" toc="default"> <name>Security Considerations</name> <t>This sectionrecords the status of known implementations of the protocol defined by this specification atreviews several security aspects related to thetime of posting of this Internet-Draft,proposed extension.</t> <section anchor="trust-on-first-use-tofu-and-mitm-attacks" numbered="true" toc="default"> <name>Trust-on-First-Use (TOFU) and MITM Attacks</name> <t>This protocol isbased onaproposal described in <xref target="RFC7942"></xref>. The description of implementations in this section is intendedtrust-on-first-use protocol. If a client initially connects toassisttheIETF in its decision processes in progressing drafts to RFCs. Please note that"right" server, it will be protected against MITM attackers for thelisting of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.</t> <t>According to RFC 7942, “this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit”.</t> <section anchor="mint-fork" title="Mint Fork"> <section anchor="overview" title="Overview"> <t>A fork of the Mint TLS 1.3 implementation, developed by Yaron Sheffer and available at https://github.com/yaronf/mint.</t> </section> <section anchor="description" title="Description"> <t>This is a fork of the TLS 1.3 implementation, and includes client and server code. In addition to the actual protocol, several utilities are provided allowing to manage pinning protection keys on the server side, and pinning tickets on the client side.</t> </section> <section anchor="level-of-maturity" title="Level of Maturity"> <t>This is a prototype.</t> </section> <section anchor="coverage" title="Coverage"> <t>The entire protocol is implemented.</t> </section> <section anchor="version-compatibility" title="Version Compatibility"> <t>The implementation is compatible with draft-sheffer-tls-pinning-ticket-02.</t> </section> <section anchor="licensing" title="Licensing"> <t>Mint itself and this fork are available under an MIT license.</t> </section> <section anchor="contact-information" title="Contact Information"> <t>See author details below.</t> </section> </section> </section> <section anchor="security-considerations" title="Security Considerations"> <t>This section reviews several security aspects related to the proposed extension.</t> <section anchor="trust-on-first-use-tofu-and-mitm-attacks" title="Trust on First Use (TOFU) and MITM Attacks"> <t>This protocol is a “trust on first use” protocol. If a client initially connects to the “right” server, it will be protected against MITM attackers for the lifetimelifetime of each received ticket. If it connects regularly(depending(depending, ofcoursecourse, on the server-selected lifetime), it will stay constantly protected against fake certificates.</t> <t>However if it initially connects to an attacker, subsequent connections to the“right”"right" server will fail. Server operators might want to advise clients on how to remove corrupted pins, once suchlarge scalelarge-scale attacks are detected and remediated.</t> <t>The protocol is designed so that it is not vulnerable to an active MITM attacker who has real-time access to the original server. The pinning proof includes a hash of theserver’sserver's publickey,key to ensure the client that the proof was in fact generated by the server with which it is initiating the connection.</t> </section> <section anchor="pervasive-monitoring"title="Pervasive Monitoring">numbered="true" toc="default"> <name>Pervasive Monitoring</name> <t>Some organizations, and even somecountriescountries, perform pervasive monitoring on their constituents <xreftarget="RFC7258"/>.target="RFC7258" format="default"/>. This often takes the form of always-active SSL proxies. Because of the TOFU property, this protocol does not provide any security in such cases.</t> <t>Pervasive monitoring may also result in privacy concerns detailed insection<xreftarget="privacy"/>.</t>target="privacy" format="default"/>.</t> </section> <section anchor="server_error"title="Server-Sidenumbered="true" toc="default"> <name>Server-Side ErrorDetection">Detection</name> <t>Uniquely, this protocol allows the server to detect clients that present incorrect tickets and therefore can be assumed to be victims of a MITM attack. Server operators can use such cases as indications of ongoing attacks, similarly to fake certificate attacks that took place in a few countries in the past.</t> </section> <section anchor="client_policy"title="Clientnumbered="true" toc="default"> <name>Client Policy and SSLProxies">Proxies</name> <t>Like it or not, some clients are normally deployed behind an SSL proxy.SimilarlySimilar to <xreftarget="RFC7469"/>,target="RFC7469" format="default"/>, it is acceptable to allow pinning to be disabled for some hosts according to local policy. For example, a User Agent (UA)MAY<bcp14>MAY</bcp14> disable pinning for hosts whose validated certificate chain terminates at a user-defined trust anchor, rather than a trust anchorbuilt-in tobuilt into the UA (or underlying platform). Moreover, a clientMAY<bcp14>MAY</bcp14> accept an empty PinningTicket extension from such hosts as a valid response.</t> </section> <section anchor="client_error"title="Client-Sidenumbered="true" toc="default"> <name>Client-Side ErrorBehavior">Behavior</name> <t>When a client receives a malformed or empty PinningTicket extension from a pinned server, itMUST<bcp14>MUST</bcp14> abort thehandshake and MUST NOT retry with nohandshake. If the client retries the request, it <bcp14>MUST NOT</bcp14> omit the PinningTicket in therequest.retry message. Doing otherwise would expose the client to trivial fallback attacks, similar to those described in <xreftarget="RFC7507"/>.</t> <t>Thistarget="RFC7507" format="default"/>.</t> <t>However, this rule canhowever have negative affects onnegatively impact clients that move from behind SSL proxies into the openInternetInternet, and vice versa, if the advice in <xreftarget="client_policy"/>target="client_policy" format="default"/> is not followed. Therefore,we RECOMMENDit is <bcp14>RECOMMENDED</bcp14> that browser and library vendors provide a documented way to remove stored pins.</t> </section> <section anchor="stolen-and-forged-tickets"title="Stolennumbered="true" toc="default"> <name>Stolen and ForgedTickets"> <t>StealingTickets</name> <t>An attacker gains no benefit from stealing pinningticketstickets, even in conjunction with other pinningparameters,parameters such as the associated pinning secret,provides no benefit to the attackersince pinning tickets are used to secure the client rather than the server. Similarly, it is useless to forge a ticket for a particular server.</t> </section> <section anchor="privacy"title="Client Privacy">numbered="true" toc="default"> <name>Client Privacy</name> <t>This protocol is designed so that an external attacker cannotcorrelate betweenlink different requestsofto a single client, provided the client requests and receives a fresh ticket upon each connection. This may be of concern particularly duringramp-down,ramp down, if the server does not provideanya newticketticket, and the clientre-usesreuses the same ticket. To reduce or avoid such privacy concerns, it isRECOMMENDED<bcp14>RECOMMENDED</bcp14> for the server to issue a fresh ticket with a reducedlife time.lifetime. This would at least reduce the time periodunderin which the TLSsessionsessions of the clientare correlated.can be linked. The serverMAY<bcp14>MAY</bcp14> also issue tickets with azero secondzero-second lifetime until it is confident all tickets are expired.</t> <t>On the other hand, the server to which the client is connecting can easily track the client. This may be an issue when the client expects to connect to the server (e.g., a mail server) with multiple identities. ImplementationsSHOULD<bcp14>SHOULD</bcp14> allow the user to opt out of pinning, either in general or for particular servers.</t> <t>This document does not define the exact content of tickets. Including client-specific information in tickets would raise privacy concerns and isNOT RECOMMENDED.</t><bcp14>NOT RECOMMENDED</bcp14>.</t> </section> <section anchor="ticket-protection-key-management"title="Ticketnumbered="true" toc="default"> <name>Ticket Protection KeyManagement">Management</name> <t>While the ticket format is not mandated by this document,we RECOMMENDprotecting the ticket using authenticated encryptionto protect it.is <bcp14>RECOMMENDED</bcp14>. Some of the algorithms commonly used for authenticated encryption,e.g. GCM,e.g., Galois/Counter Mode (GCM), are highly vulnerable to nonce reuse, and this problem is magnified in a cluster setting.ThereforeTherefore, implementations that choose AES-GCM or any AEAD equivalentMUST<bcp14>MUST</bcp14> adopt one of these three alternatives:</t><t><list style="symbols"> <t>Partition<ul spacing="normal"> <li>Partition the nonce namespace between cluster members and use monotonic counters on each member,e.g.e.g., by setting the nonce to the concatenation of the cluster member ID and an incrementalcounter.</t> <t>Generatecounter.</li> <li>Generate random nonces but avoid the so-called birthday bound,i.e.i.e., never generate more than the maximum allowed number of encrypted tickets (2**64 for AES-128-GCM) for the same ticket pinning protectionKey.</t> <t>Ankey.</li> <li>An alternative designwhichthat has been attributed to Karthik Bhargavan is as follows. Start with a 128-bit master key“K_master”K_master and then for each encryption, generate a 256-bit random nonce and compute: K = HKDF(K_master, Nonce ||“key”),"key"), then N = HKDF(K_master, Nonce ||“nonce”)."nonce"). Use these values to encrypt the ticket, AES-GCM(K, N, data). This nonce should thenbe stored and transmitted with the ticket.</t> </list></t> </section> </section> <section anchor="iana-considerations" title="IANA Considerations"> <t>IANA is requested to allocate a TicketPinning extension value in the TLS ExtensionType Registry.</t> <t><xref target="RFC8447"/> defines the procedure and requirements and the necessary information for the IANA to update the “TLS ExtensionType Values” registry <xref target="TLS-EXT"/>.</t> <t>According to <xref target="RFC8447"/> the update of the “TLS ExtensionType Values” registry is “Specification Required” <xref target="RFC8126"/> which is fulfilled by the current document, when it is published as an RFC.</t> <t>The TicketPinning Extension is not limited to Private use and as such the TicketPinning Extension Value is expected to have its first byte in the range 0-254.</t> <t>The TicketPinning Extension Name is expected to be ticket_pinning.</t> <t>The TicketPinning Extension Recommended value should be set to “No” with the publication of the current document as “Experimental”.</t> <t>The TicketPinning Extension TLS.13 column should be set to CH, EE to indicate that the TicketPinning Extension is present in ClientHello and EncryptedExtensions messages.</t> </section> <section anchor="acknowledgements" title="Acknowledgements"> <t>The original idea behind this proposal was published in <xref target="Oreo"/> by Moti Yung, Benny Pinkas and Omer Berkman. The current protocol is but a distant relative of the original Oreo protocol, and any errors are the responsibility of the authors of this document alone.</t> <t>We would like to thank Adrian Farrel, Dave Garrett, Daniel Kahn Gillmor, Alexey Melnikov, Yoav Nir, Eric Rescorla, Benjamin Kaduk and Rich Salz for their comments on this document. Special thanks to Craig Francis for contributing the HPKP deployment script, and to Ralph Holz for several fruitful discussions.</t> </section> </middle> <back> <references title='Normative References'> <reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'> <front> <title>Key words for use in RFCs to Indicate Requirement Levels</title> <author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author> <date year='1997' month='March' /> <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="RFC8126" target='https://www.rfc-editor.org/info/rfc8126'> <front> <title>Guidelines for Writing an IANA Considerations Section in RFCs</title> <author initials='M.' surname='Cotton' fullname='M. Cotton'><organization /></author> <author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author> <author initials='T.' surname='Narten' fullname='T. Narten'><organization /></author> <date year='2017' month='June' /> <abstract><t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t><t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t><t>This is the third edition of this document; it obsoletes RFC 5226.</t></abstract> </front> <seriesInfo name='BCP' value='26'/> <seriesInfo name='RFC' value='8126'/> <seriesInfo name='DOI' value='10.17487/RFC8126'/> </reference> <reference anchor="RFC8446" target='https://www.rfc-editor.org/info/rfc8446'> <front> <title>The Transport Layer Security (TLS) Protocol Version 1.3</title> <author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author> <date year='2018' month='August' /> <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="RFC8447" target='https://www.rfc-editor.org/info/rfc8447'> <front> <title>IANA Registry Updates for TLS and DTLS</title> <author initials='J.' surname='Salowey' fullname='J. Salowey'><organization /></author> <author initials='S.' surname='Turner' fullname='S. Turner'><organization /></author> <date year='2018' month='August' /> <abstract><t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t><t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t></abstract> </front> <seriesInfo name='RFC' value='8447'/> <seriesInfo name='DOI' value='10.17487/RFC8447'/> </reference> <reference anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'> <front> <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> <author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author> <date year='2017' month='May' /> <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 title='Informative References'> <reference anchor="RFC2104" target='https://www.rfc-editor.org/info/rfc2104'> <front> <title>HMAC: Keyed-Hashing for Message Authentication</title> <author initials='H.' surname='Krawczyk' fullname='H. Krawczyk'><organization /></author> <author initials='M.' surname='Bellare' fullname='M. Bellare'><organization /></author> <author initials='R.' surname='Canetti' fullname='R. Canetti'><organization /></author> <date year='1997' month='February' /> <abstract><t>This document describes HMAC, a mechanism for message authentication using cryptographic hash functions. HMAC can be used with any iterative cryptographic hash function, e.g., MD5, SHA-1, in combination with a secret shared key. The cryptographic strength of HMAC depends on the properties of the underlying hash function. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind</t></abstract> </front> <seriesInfo name='RFC' value='2104'/> <seriesInfo name='DOI' value='10.17487/RFC2104'/> </reference> <reference anchor="RFC5077" target='https://www.rfc-editor.org/info/rfc5077'> <front> <title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title> <author initials='J.' surname='Salowey' fullname='J. Salowey'><organization /></author> <author initials='H.' surname='Zhou' fullname='H. Zhou'><organization /></author> <author initials='P.' surname='Eronen' fullname='P. Eronen'><organization /></author> <author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author> <date year='2008' month='January' /> <abstract><t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state. The TLS server encapsulates the session state into a ticket and forwards it to the client. The client can subsequently resume a session using the obtained ticket. This document obsoletes RFC 4507. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name='RFC' value='5077'/> <seriesInfo name='DOI' value='10.17487/RFC5077'/> </reference> <reference anchor="RFC5246" target='https://www.rfc-editor.org/info/rfc5246'> <front> <title>The Transport Layer Security (TLS) Protocol Version 1.2</title> <author initials='T.' surname='Dierks' fullname='T. Dierks'><organization /></author> <author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author> <date year='2008' month='August' /> <abstract><t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name='RFC' value='5246'/> <seriesInfo name='DOI' value='10.17487/RFC5246'/> </reference> <reference anchor="RFC6454" target='https://www.rfc-editor.org/info/rfc6454'> <front> <title>The Web Origin Concept</title> <author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author> <date year='2011' month='December' /> <abstract><t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t></abstract> </front> <seriesInfo name='RFC' value='6454'/> <seriesInfo name='DOI' value='10.17487/RFC6454'/> </reference> <reference anchor="RFC6962" target='https://www.rfc-editor.org/info/rfc6962'> <front> <title>Certificate Transparency</title> <author initials='B.' surname='Laurie' fullname='B. Laurie'><organization /></author> <author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author> <author initials='E.' surname='Kasper' fullname='E. Kasper'><organization /></author> <date year='2013' month='June' /> <abstract><t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t><t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t></abstract> </front> <seriesInfo name='RFC' value='6962'/> <seriesInfo name='DOI' value='10.17487/RFC6962'/> </reference> <reference anchor="RFC7258" target='https://www.rfc-editor.org/info/rfc7258'> <front> <title>Pervasive Monitoring Is an Attack</title> <author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author> <author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author> <date year='2014' month='May' /> <abstract><t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t></abstract> </front> <seriesInfo name='BCP' value='188'/> <seriesInfo name='RFC' value='7258'/> <seriesInfo name='DOI' value='10.17487/RFC7258'/> </reference> <reference anchor="RFC7469" target='https://www.rfc-editor.org/info/rfc7469'> <front> <title>Public Key Pinning Extension for HTTP</title> <author initials='C.' surname='Evans' fullname='C. Evans'><organization /></author> <author initials='C.' surname='Palmer' fullname='C. Palmer'><organization /></author> <author initials='R.' surname='Sleevi' fullname='R. Sleevi'><organization /></author> <date year='2015' month='April' /> <abstract><t>This document defines a new HTTP header that allows web host operators to instruct user agents to remember ("pin") the hosts' cryptographic identities over a period of time. During that time, user agents (UAs) will require that the host presents a certificate chain including at least one Subject Public Key Info structure whose fingerprint matches one of the pinned fingerprints for that host. By effectively reducing the number of trusted authorities who can authenticate the domain during the lifetime ofbe stored and transmitted with thepin, pinning may reduceticket.</li> </ul> </section> </section> <section anchor="iana-considerations" numbered="true" toc="default"> <name>IANA Considerations</name> <t>The IANA has allocated a TicketPinning extension value in theincidence of man-in-the-middle attacks due to compromised Certification Authorities.</t></abstract> </front> <seriesInfo name='RFC' value='7469'/> <seriesInfo name='DOI' value='10.17487/RFC7469'/> </reference> <reference anchor="RFC7507" target='https://www.rfc-editor.org/info/rfc7507'> <front> <title>TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks</title> <author initials='B.' surname='Moeller' fullname='B. Moeller'><organization /></author> <author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author> <date year='2015' month='April' /> <abstract><t>This document"TLS ExtensionType Values" registry.</t> <t><xref target="RFC8447" format="default"/> definesa Signaling Cipher Suite Value (SCSV) that prevents protocol downgrade attacks ontheTransport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols. It updates RFCs 2246, 4346, 4347, 5246,procedure, requirements, and6347. Server update considerations are included.</t></abstract> </front> <seriesInfo name='RFC' value='7507'/> <seriesInfo name='DOI' value='10.17487/RFC7507'/> </reference> <reference anchor="RFC7942" target='https://www.rfc-editor.org/info/rfc7942'> <front> <title>Improving Awareness of Running Code: The Implementation Status Section</title> <author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></author> <author initials='A.' surname='Farrel' fullname='A. Farrel'><organization /></author> <date year='2016' month='July' /> <abstract><t>This document describes a simple process that allows authors of Internet-Drafts to recordthestatus of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due considerationnecessary information for the IANA todocuments that haveupdate thebenefit of running code, which may serve"TLS ExtensionType Values" registry <xref target="TLS-EXT" format="default"/>. The registration procedure is "Specification Required" <xref target="RFC8126"/>.</t> <t>The TicketPinning extension is registered asevidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t><t>This processfollows. (The extension is notmandatory. Authors of Internet-Drafts are encouragedlimited toconsider using the process for their documents,Private Use, andworking groups are invited to think about applyingas such has its first byte in theprocess to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t></abstract> </front> <seriesInfo name='BCP' value='205'/> <seriesInfo name='RFC' value='7942'/> <seriesInfo name='DOI' value='10.17487/RFC7942'/> </reference> <reference anchor="I-D.perrin-tls-tack"> <front> <title>Trust Assertions for Certificate Keys</title> <author initials='M' surname='Marlinspike' fullname='Moxie Marlinspike'> <organization /> </author> <date month='January' day='7' year='2013' /> <abstract><t>This document defines a TLS Extensionrange 0-254.)</t> <dl> <dt>Value:</dt><dd>32</dd> <dt>Name:</dt><dd>ticket_pinning</dd> <dt>Recommended:</dt><dd>No</dd> <dt>TLS 1.3:</dt><dd>CH, EE (to indicate thatenables a TLS server to support "pinning" to a self-chosen signing key. A client contacting a pinned host will requiretheserver toextension is presenta signature from the signing key over the TLS server's public key.</t></abstract> </front> <seriesInfo name='Internet-Draft' value='draft-perrin-tls-tack-02' /> <format type='TXT' target='http://www.ietf.org/internet-drafts/draft-perrin-tls-tack-02.txt' /> </reference>in ClientHello and EncryptedExtensions messages)</dd> </dl> </section> </middle> <back> <displayreference target="I-D.perrin-tls-tack" to="TLS-TACK"/> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8447.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2104.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5077.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5246.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6454.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6962.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7258.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7469.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7507.xml"/> <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8555.xml"/> <!-- draft-ietf-draft-perrin-tls-tack-02 expired --> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-perrin-tls-tack-02.xml"/> <referenceanchor="Oreo" >anchor="Oreo"> <front> <title>Firm Grip Handshakes: A Tool for Bidirectional Vouching</title> <author initials="O." surname="Berkman"><organization></organization><organization/> </author> <author initials="B." surname="Pinkas"><organization></organization><organization/> </author> <author initials="M." surname="Yung"><organization></organization><organization/> </author> <date year="2012"/> </front> <seriesInfo name="Cryptology and NetworkSecurity, pp. 142-157" value=""/>Security" value="pp. 142-157"/> </reference> <reference anchor="Netcraft"target="http://news.netcraft.com/archives/2016/03/30/http-public-key-pinning-youre-doing-it-wrong.html">target="https://news.netcraft.com/archives/2016/03/30/http-public-key-pinning-youre-doing-it-wrong.html"> <front> <title>HTTP Public Key Pinning: You're doing it wrong!</title> <author initials="P." surname="Mutton" fullname="Paul Mutton"><organization></organization><organization/> </author> <date year="2016" month="March"/> </front> </reference> <reference anchor="TLS-EXT"target="https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-1">target="https://www.iana.org/assignments/tls-extensiontype-values/"> <front> <title>TLS Extension Type Value</title><author initials="." surname="IANA"> <organization></organization><author> <organization>IANA</organization> </author><date year="2018"/></front> </reference> </references> </references> <section anchor="previous-work"title="Previous Work">numbered="true" toc="default"> <name>Previous Work</name> <t>The global PKI system relies on the trust of a CA issuing certificates. As a result, a corrupted trusted CA may issue a certificate for any organization without theorganization’sorganization's approval (a misissued or“fake”"fake" certificate), and use the certificate to impersonate the organization. There are many attempts to resolve these weaknesses, including the Certificate Transparency (CT) protocol <xreftarget="RFC6962"/>,target="RFC6962" format="default"/>, HTTP Public Key Pinning (HPKP) <xreftarget="RFC7469"/>,target="RFC7469" format="default"/>, andTACKTrust Assertions for Certificate Keys (TACK) <xreftarget="I-D.perrin-tls-tack"/>.</t>target="I-D.perrin-tls-tack" format="default"/>.</t> <t>CT requires cooperation of a large portion of the hundreds of extant certificate authorities (CAs) before it can be used“for real”,"for real", in enforcing mode. It is noted that the relevant industry forum (CA/Browser Forum) is indeed pushing for such extensive adoption. However the public nature of CT often makes it inappropriate for enterpriseuse,use because many organizations are not willing to expose their internal infrastructure publicly.</t> <t>TACK has some similarities to the current proposal, but work on it seems to have stalled. <xreftarget="tack"/>target="tack" format="default"/> compares our proposal to TACK.</t> <t>HPKP is an IETF standard, but so far has proven hard to deploy. HPKP pins (fixes) a public key, one of the public keys listed in the certificate chain. As a result, HPKP needs to be coordinated with the certificate management process. Certificate management impacts HPKP and thus increases the probability of HPKP failures. This risk is made even higher given the fact that, even though work has been doneatin theACME WGAutomated Certificate Management Environment (ACME) working group to automate certificate management, in many or even most cases, certificates are still managed manually. As a result, HPKP cannot be completelyautomatedautomated, resulting in error-prone manual configuration. Such errors could prevent the web server from being accessed by some clients. In addition, HPKP usesaan HTTPheaderheader, which makes this solution HTTPS specific and not generic to TLS. On the other hand, the current document provides a solution that is independent of theserver’sserver's certificatemanagementmanagement, and that can be entirely and easily automated. <xreftarget="hpkp"/>target="hpkp" format="default"/> compares HPKP to the current document in more detail.</t> <t>The ticket pinning proposal augments these mechanisms with a much easier to implement and deploy solution for server identity pinning, by reusing some of the ideas behind TLS session resumption.</t> <t>This section compares ticket pinning to two earlier proposals, HPKP and TACK.</t> <section anchor="hpkp"title="Comparison: HPKP">numbered="true" toc="default"> <name>Comparison: HPKP</name> <t>The current IETF standard for pinning the identity of web servers isthe Public Key Pinning Extension for HTTP, orHPKP <xreftarget="RFC7469"/>.</t>target="RFC7469" format="default"/>.</t> <t>The main differences between HPKP and the current document are the following:</t><t><list style="symbols"> <t>HPKP<ul spacing="normal"> <li>HPKP limits its scope to HTTPS, while the current document considers all application aboveTLS.</t> <t>HPKPTLS.</li> <li>HPKP pins the public key of the server (or another public key along the certificatechain)chain), and assuchsuch, is highly dependent on the management of certificates. Such dependency increases the potential error surface, especially as certificate management is not yet largely automated. The current proposal, on the other hand, is independent of certificatemanagement.</t> <t>HPKPmanagement.</li> <li>HPKP pins public keyswhichthat are public and used for the standard TLS authentication. Identity pinning relies on the ownership of the pinningkeykey, which is not disclosed to the public and not involved in the standard TLS authentication. As a result, identity pinning is a completelyindependent second factorindependent, second-factor authenticationmechanism.</t> <t>HPKPmechanism.</li> <li>HPKP relies on a backup key to recover the misissuance of a key. We believe such backup mechanisms add excessive complexity and cost. Reliability of the current mechanism is primarily based on its being highlyautomated.</t> <t>HPKPautomated.</li> <li>HPKP relies on the client to report errors to the report-uri. The current document does not need anyout-of bandout-of-band mechanism, and the server is informed automatically. This provides an easier and more reliable healthmonitoring.</t> </list></t>monitoring.</li> </ul> <t>On the other hand, HPKP shares the following aspects with identity pinning:</t><t><list style="symbols"> <t>Both<ul spacing="normal"> <li>Both mechanisms provide hard failure. WithHPKPHPKP, only the client is aware of the failure, while with the current proposal both client and server are informed of the failure. This provides room for further mechanisms to automatically recover from suchfailures.</t> <t>Bothfailures.</li> <li>Both mechanisms are subject to a server compromise in which users are provided with an invalid ticket(e.g.(e.g., a random one) or HTTPHeader,header with a very long lifetime. For identity pinning, this lifetimeSHOULD NOT<bcp14>SHOULD NOT</bcp14> be longer than 31 days. In both cases, clients will not be able to reconnect the server during this lifetime. With the current proposal, an attacker needs to compromise the TLS layer, while with HPKP, the attacker needs to compromise the HTTP server. Arguably, the TLS-level compromise is typically more difficult for theattacker.</t> </list></t>attacker.</li> </ul> <t>Unfortunately HPKP has not seen wide deployment yet. As of March 2016, the number of servers using HPKP was less than 3000 <xreftarget="Netcraft"/>.target="Netcraft" format="default"/>. This may simply be due to inertia, but we believe the main reason is the interactions between HPKP and manual certificate managementwhichthat is needed to implement HPKP for enterprise servers. The penalty for making mistakes(e.g.(e.g., being too early or too late to deploy new pins) ishavingthat the serverbecomebecomes unusable for some of the clients.</t> <t>To demonstrate this point, we present a list of the steps involved in deploying HPKP on a security-sensitiveWebweb server.</t><t><list style="numbers"><ol spacing="normal" type="1"> <li> <t>Generate two public/privatekey-pairskey pairs on a computer that is not theLivelive server. The second one is the“backup1” key-pair. <vspace blankLines='1'/> <spanx style="verb">openssl"backup1" key pair. </t> <sourcecode type="bash"> openssl genrsa -out "example.com.key"2048;</spanx> <vspace blankLines='1'/> <spanx style="verb">openssl2048; openssl genrsa -out "example.com.backup1.key"2048;</spanx></t>2048; </sourcecode> </li> <li> <t>Generate hashes for both of the public keys. These will be used in the HPKP header:<vspace blankLines='1'/> <spanx style="verb">openssl</t> <sourcecode type="bash"> openssl rsa -in "example.com.key" -outform der -pubout | \ openssl dgst -sha256 -binary | openssl enc-base64</spanx> <vspace blankLines='1'/> <spanx style="verb">openssl-base64 openssl rsa -in "example.com.backup1.key" -outform der \ -pubout | openssl dgst -sha256 -binary | openssl enc-base64</spanx></t>-base64 </sourcecode> </li> <li> <t>Generate a single CSR (Certificate Signing Request) for the firstkey-pair,key pair, where you include the domain name in the CN (Common Name) field:<vspace blankLines='1'/> <spanx style="verb">openssl</t> <sourcecode type="bash"> openssl req -new -subj"/C=GB/ST=Area/L=Town/O=Company/CN=example.com""/C=GB/ST=Area/L=Town/O=Org/ \ CN=example.com" -key "example.com.key" -out"example.com.csr";</spanx></t> <t>Send"example.com.csr"; </sourcecode> </li> <li>Send this CSR to the CA(Certificate Authority),and go though the dance to prove you own the domain. The CA will give youbacka single certificate that will typically expire within a year ortwo.</t>two.</li> <li> <t>On theLivelive server, upload andsetupset up the firstkey-pair (andkey pair and itscertificate).certificate. At thispointpoint, you can add the“Public-Key-Pins”"Public-Key-Pins" header, using the two hashes you created in step 2.<vspace blankLines='1'/></t> <t> Note that only the firstkey-pairkey pair has been uploaded to the server so far.</t><t>Store</li> <li>Store the second (backup1)key-pairkey pair somewhere safe, probably somewhere encrypted like a password manager. Itwon’twon't expire, asit’sit's just akey-pair,key pair; it just needs to be ready for when you need to get your nextcertificate.</t> <t>Time passes…certificate.</li> <li>Time passes -- probably just under a year (if waiting for a certificate to expire), or maybe sooner if you find that your server has beencompromisedcompromised, and you need to replace thekey-pairkey pair andcertificate.</t> <t>Createcertificate.</li> <li>Create a new CSR(Certificate Signing Request)using the“backup1” key-pair,"backup1" key pair, and get a new certificate from yourCA.</t> <t>GenerateCA.</li> <li>Generate a new backupkey-pairkey pair (backup2), get its hash, and store it in a safe place (again, not on theLive server).</t> <t>Replacelive server).</li> <li>Replace your old certificate and oldkey-pair, andkey pair, update the“Public-Key-Pins”"Public-Key-Pins" header to remove the old hash, and add the new“backup2” key-pair.</t> </list></t>"backup2" key pair.</li> </ol> <t>Note that in the above steps, both the certificate issuance as well as the storage of the backup key pair involve manual steps. Even with an automated CA that runs the ACMEprotocol,protocol <xref target="RFC8555"/>, key backup would be a challenge to automate.</t> </section> <section anchor="tack"title="Comparison: TACK">numbered="true" toc="default"> <name>Comparison: TACK</name> <t>Compared with HPKP, TACK <xreftarget="I-D.perrin-tls-tack"/>target="I-D.perrin-tls-tack" format="default"/> isa lotmore similar to the current document. It can even be argued that this document is a symmetric-cryptography variant of TACK. That said, there are still a few significant differences:</t><t><list style="symbols"> <t>Probably<ul spacing="normal"> <li>Probably the most important difference is that with TACK, validation of the server certificate is no longer required, and in fact TACK specifies it as a“MAY”"<bcp14>MAY</bcp14>" requirement(Sec. 5.3).(<xref target="I-D.perrin-tls-tack" sectionFormat="comma" section="5.3" format="default"/>). With ticket pinning, certificate validation by the client remains aMUST<bcp14>MUST</bcp14> requirement, and the ticket acts only as a second factor. If the pinning secret is compromised, theserver’sserver's security is not immediately atrisk.</t> <t>Bothrisk.</li> <li>Both TACK and the current document are mostly orthogonal to the server certificate as far as their life cycle, and so both can be deployed with no manualsteps.</t> <t>TACKsteps.</li> <li>TACK usesECDSAElliptic Curve Digital Signature Algorithm (ECDSA) to sign theserver’sserver's public key. This allows cooperating clients to share server assertions between themselves. This is an optional TACK feature, and one that cannot be done with pinningtickets.</t> <t>TACKtickets.</li> <li>TACK allows multiple servers to share its public keys. Such sharing is disallowed by the currentdocument.</t> <t>TACKdocument.</li> <li>TACK does not allow the server to track a particular client, and so has better privacy properties than the currentdocument.</t> <t>TACKdocument.</li> <li>TACK has an interesting way to determine thepin’spin's lifetime, setting it to the time period since the pin was first observed, with a hard upper bound of 30 days. The current document makes the lifetime explicit, which may be more flexible to deploy. For example,Webweb siteswhichthat are only visited rarely by users may opt for a longer period than other sites that expect users to visit on a dailybasis.</t> </list></t> </section> </section> <section anchor="document-history" title="Document History"> <section anchor="draft-sheffer-tls-pinning-ticket-12" title="draft-sheffer-tls-pinning-ticket-12"> <t><list style="symbols"> <t>IETF-Conflict Review comments.</t> <t>IANA: removed request for a specific extension value.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-11" title="draft-sheffer-tls-pinning-ticket-11"> <t><list style="symbols"> <t>Comments by Ben Kaduk. Specifically, changed the derivation of the pinning proof to make it more in line with the TLS 1.3 key schedule.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-10" title="draft-sheffer-tls-pinning-ticket-10"> <t><list style="symbols"> <t>ISE comments by Adrian Farrel, the ISE.</t> </list></t>basis.</li> </ul> </section><section anchor="draft-sheffer-tls-pinning-ticket-09" title="draft-sheffer-tls-pinning-ticket-09"> <t><list style="symbols"> <t>ISE comments by Yoav Nir.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-08" title="draft-sheffer-tls-pinning-ticket-08"> <t><list style="symbols"> <t>ISE comments by Rich Salz.</t> </list></t></section> <sectionanchor="draft-sheffer-tls-pinning-ticket-07" title="draft-sheffer-tls-pinning-ticket-07"> <t><list style="symbols"> <t>Refer toanchor="acknowledgments" numbered="false" toc="default"> <name>Acknowledgments</name> <t>The original idea behind this proposal was publishedRFCs.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-06" title="draft-sheffer-tls-pinning-ticket-06"> <t><list style="symbols"> <t>IANA Considerations in preparation for Experimental publication.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-05" title="draft-sheffer-tls-pinning-ticket-05"> <t><list style="symbols"> <t>Multiple comments from Eric Rescorla.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-04" title="draft-sheffer-tls-pinning-ticket-04"> <t><list style="symbols"> <t>Editorial changes.</t> <t>Two-phase rotation of protection key.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-03" title="draft-sheffer-tls-pinning-ticket-03"> <t><list style="symbols"> <t>Deleted redundant length fieldsinthe extension’s formal definition.</t> <t>Modified cryptographic operations to align with the<xref target="Oreo" format="default"/> by Moti Yung, Benny Pinkas, and Omer Berkman. The currentstateprotocol is but a distant relative ofTLS 1.3.</t> <t>Numerous textual improvements.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-02" title="draft-sheffer-tls-pinning-ticket-02"> <t><list style="symbols"> <t>Added an Implementation Status section.</t> <t>Added lengths intotheextension structure.</t> <t>Changedoriginal Oreo protocol, and any errors are thecomputationresponsibility of thepinning proof to be more robust.</t> <t>Clarified requirements on the lengthauthors ofthe pinning_secret.</t> <t>Revamped the HPKP sectionthis document alone.</t> <t>We would like tobe more in line with current practices,thank Adrian Farrel, Dave Garrett, Daniel Kahn Gillmor, Alexey Melnikov, Yoav Nir, Eric Rescorla, Benjamin Kaduk, andadded recent statistics on HPKP deployment.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-01" title="draft-sheffer-tls-pinning-ticket-01"> <t><list style="symbols"> <t>Corrected the notationRich Salz forvariable-sized vectors.</t> <t>Added a section on disaster recovery and backup.</t> <t>Added a sectiontheir comments onprivacy.</t> <t>Clarified the assumptions behindthis document. Special thanks to Craig Francis for contributing the HPKPprocedure in the comparison section.</t> <t>Added a definition of pin indexing (origin).</t> <t>Adjusteddeployment script, and tothe latest TLS 1.3 notation.</t> </list></t> </section> <section anchor="draft-sheffer-tls-pinning-ticket-00" title="draft-sheffer-tls-pinning-ticket-00"> <t>Initial version.</t> </section>Ralph Holz for several fruitful discussions.</t> </section> </back><!-- ##markdown-source: H4sIAMyOE10AA8V963IbV3bu//0UHeiHSQ8ASZQs25o4FYqSLJWtyxHpcVxx jtIAGkQPG91Id4MURuN3Oc9ynuysb132pQFKmlSqjmoSE0D3vq69rt9aezKZ uL7sq+JxdvHzeXZetNdFm71cFDV9u8velnVd1pfZTdmvsotyflX0nctns7a4 fux/tO8XzbzO19TSos2X/aRbFctl0U76qpts5NFJz49O7p+4ed4Xl027e5wV HzZuu1nQ5+6xa2ZdUxX8pys37eOsb7ddf3Lv3vf3TlzeFvnj7MeiLtq8cjdN e3XZNtvNY3dV7OjT4nH2su6LtqYenmIIznV9Xi/e51VT07B2Rec25WOXZe1y Xiy6flfpt1nWN/Poz7LGAtgXXdP2bbHs/OfdOvnYt+XcPzxv1mt61/9a1lVZ h26KD/2kKjtand161lT02KT5+k/O5dt+1bQY24T+D6/RT79Ns3NZRP5OFve3 vG3q5Pumvczr8m95XzY1L8G27PmHYp2X1eNstMMry2lZ9Mt/vcR3UxrlKO3r 6TR7VV7m26qP+npK7RZV8kPa2TOaetc1ddLdgt+aruWtfy30GenU1U27prev C0z23fOzk/v3v9c/v7t/8sj+fPgw+vNbUEO93Hvz3kP985t7335rf574Nx89 /MYeePT9oxP989uTb76zPx8+sr6/pSbsz+8f8rMvJ0+nm6Jty5ppuM/nV/j6 TVs0j3nCenBGz8t2nf3YlpvsBZFbt8qviH6z0+yiaaqMRp09KRdlW8yxZnmV /aXZzld0GkbcCAj/cXZyj84EPgZCwL+JbM6bafakaK/WeZ1+/2SKQ3iVd+nX r6bZb9v6kr/saPmLDov3ODtrd5u+qZrLXUbjzF4XPc4QHfr5tqXTPs42m2l2 /+HJ5P4339LL9Pscx+jx3sAm2p9QyVva5uzVtu+VDmxZXlxcvM3ebmdVOc9+ KjwzIRJutl+1RbZowD3KPrsh8rz8p3g5XuXtfJU9uDfGwjySVvP2sqBjtur7 zeO7d+vippvWOkKQ1l28QsTR3cUrd+89uPvg3l08PNnwECbEJDwf2jXbtpjw ACZlP+EBTFf9uqKuiA9Onv3bRbrFYI7PPvRF3dEeZhe7TZH9Ja+2xWAPv7t9 D1+evj7dm0hHM7m5uZmWeZ1P6WjdzbuuvKyZg9wF0RXWZ09dTq7R5e0/TD9g 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 --></rfc>