<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wing-settle-public-key-hash-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="Public Key Hash for Local Domains">Public Key Hash for Local Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-wing-settle-public-key-hash-01"/>
    <author initials="D." surname="Wing" fullname="Dan Wing">
      <organization abbrev="Citrix">Citrix</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>danwing@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="24"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 46?>
<t>This specification eliminates security warnings when connecting to local domains
using TLS.  Servers use a unique, long hostname which encodes their public key that
the client validates against the public key presented in the TLS handshake.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://danwing.github.io/public-key-hash/draft-wing-settle-public-key-hash.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wing-settle-public-key-hash/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SETTLE  mailing list (<eref target="mailto:settle@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/settle/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/settle/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/danwing/public-key-hash"/>.</t>
    </note>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Browsers are progressively requiring secure origins for new
capabilities and features (<xref target="secure-context"/>). As secure origins are
only obtainable, today, with a certificate signed by a Certification
Authority trusted by the client, this leaves out devices and networks
which cannot easily obtain such certificates.  Such inability is due
to network topology (e.g., firewall), lack of domain ownership, or
complicated procedures.</t>
      <t>This draft discusses how a client can authenticate to HTTPS servers
belonging to the local domain where the server name is a hash of the
server's public key.  By doing so, a secure origin can be established.
This avoids the need for a certificate signed by a Certification
Authority (CA) trusted by the client.  This is a relaxed way of "doing
HTTPS" for servers on the local domain.</t>
    </section>
    <section anchor="unique">
      <name>Unique Host Names</name>
      <t>Web browsers and other application clients store per-host state using
the host name, including cached form data such as passwords,
integrated and 3rd party password managers, cookies, and other data.
When a name collision occurs (e.g., the same printer.local name on
two different networks) the client cannot recognize a different host
is being encountered.  By creating a unique name, existing client
software (browsers, password managers, client libraries) can continue
storing origin-specific data for each of unique name.</t>
      <t>A unique name is created by embedding the hash of the public key into
the name itself.  This achieves uniqueness and the encoding is also
identifiable by the client to assist its validation of the server's
public key (<xref target="client"/>).  Details on encoding the domain name are in
<xref target="encoding"/>.</t>
    </section>
    <section anchor="short">
      <name>Short Host Names</name>
      <t>Unique host names containing encoded public keys are awkward for users. This
section describes how short names can also be advertised by servers and
securely validated by clients, so that the short name is presented to
users while the unique name is used for the TLS connection.</t>
      <t>A server already advertising its long name using <xref target="DNS-SD"/>
can also advertise its short name.  The client needs to validate they
are the same server, prior to allowing the user to interact with the
short name.  The client can do this validation by making two
connections:  one connection to the long name and another to the
short name and verify they both return the same public key and that
both TLS handshakes finish successfully (proving the server has
possession of the associated private key).  Advertising both names
enables incremental deployment within a local domain at the expense
of user confusion (two names per device, like a human named both
"Bob" and "Richard") and on-the-wire inefficiency.</t>
      <ul empty="true">
        <li>
          <t>NOTE: Also to be considered is including both the unique and short
host name in the SubjectAltName field of the server's
certificate. This avoids an additional advertisement but has worse
incremental deployment characteristics -- legacy software won't notice
the other name in the SubjectAltName.</t>
        </li>
      </ul>
      <t>The client need only look for matching short name and unique name
within the same TLD domain name (that is, if a unique name is advertised
with a ".local" domain, the client does not need to look for its
accompanying short name within ".internal").</t>
      <t>To avoid the problems described in <xref target="unique"/>, the TLS data connection
always uses the long name.  Thus, after the client has validated the
short name as described above and a user attempts to connect to the
short name (by typing or by some other user interaction), the client
instead makes a connection to the unique name.  This reduces the
integration changes within the client, as clients already separate
server-specific data based on the server's hostname (e.g., Cookie
Store API, Credential Management API, Web Bluetooth, Storage API, Push
API, Notifications API, WebTransport API).</t>
    </section>
    <section anchor="operation">
      <name>Operation</name>
      <section anchor="client">
        <name>Client Operation</name>
        <t>When clients connect to such a local domain name or IP address
(<xref target="local"/>) using TLS they examine if the domain name starts with a
registered hash identifier in the second label and if the rest of that
label consists of an appropriate-length encoded hash.  If those
conditions apply, the client performs certificate validation as
described below.</t>
        <t>Upon receipt of the server's certificate, the client validates
validates the certificate (<xref target="RFC9525"/>, <xref target="RFC5280"/>, and <xref section="4.3.4" sectionFormat="of" target="RFC9110"/> if using HTTPS).  When performing such a
connection to a local domain, the client might avoid warning about a
self-signed certificate because the Certification Authority (CA)
signature will certainly not be signed by a trusted CA.  Rather, a
more subtle indication might be warranted for TLS connections to a
local domain, perhaps only the first time or perhaps each time.  The
client parses the returned certificate and extracts the public key and
compares its hash with the hash contained in the hostname. If they
match, the TLS session continues. If they do not match, the client
might warn the user about the certificate (as is common today) or
simply abort the TLS connection.</t>
        <t>Authorizing which servers are allowed on the local network is discussed
in <xref target="authorizing-servers"/>.</t>
      </section>
      <section anchor="server-operation">
        <name>Server Operation</name>
        <t>A server running on a local network (see <xref target="unique"/>) uses a unique
host name that includes a hash of its public key.  This unique name is
encoded as described in <xref target="encoding"/>.  Existing servers might be
configurable with such a hostname, without software changes.</t>
        <t>Oftentimes, servers operating on a local network already advertise
their presence using <xref target="DNS-SD"/> and should continue doing so,
advertising their unique name that includes their public key hash
and optionally also a shorter nickname (<xref target="short"/>).</t>
      </section>
    </section>
    <section anchor="encoding">
      <name>Unique Host Name Encoding Details</name>
      <t>The general format is hostname, a period, a digit indicating the hash
algorithm, and then the hash of the server's public key as shown in
<xref target="abnf-encoding"/>.  The binary hash output is base32 encoded (<xref section="6" sectionFormat="of" target="RFC4648"/>) without trailing "=" padding.  Currently only SHA256
hash is defined with the value "0" (<xref target="iana"/>).  While base32 encoding
is specified as uppercase, implementations should treat uppercase,
lowercase, and mixed case the same.  (Base32 encoding was chosen
instead of base64 or base64url encoding to avoid their illegal
hostname characters and their case preservation requirement.)</t>
      <figure anchor="abnf-encoding">
        <name>ABNF of hostname encoding</name>
        <artwork type="abnf" align="left"><![CDATA[
  friendly-name = 1*63(ALPHA / DIGIT / "-")

  hash-algorithm = DIGIT   ; 0=SHA256

  base32-digits = "2" / "3" / "4" / "5" / "6" / "7"

  hash = 1*62(/ ALPHA / base32-digits )
       ; 62+1 octet limit from RFC1035

  encoded-hostname = friendly-name "."
                     hash-algorithm
                     hash
]]></artwork>
      </figure>
      <t>An example encoding is shown in <xref target="example-encoding"/>.</t>
    </section>
    <section anchor="local">
      <name>Identifying Servers as Local</name>
      <t>This section defines the domain names and IP addresses considered
"local".</t>
      <section anchor="local-domain-names">
        <name>Local Domain Names</name>
        <t>The following domain name suffixes are considered "local":</t>
        <ul spacing="normal">
          <li>
            <t>".local" (from <xref target="mDNS"/>)</t>
          </li>
          <li>
            <t>".home-arpa" (from <xref target="Homenet"/>)</t>
          </li>
          <li>
            <t>".internal" (from <xref target="I-D.davies-internal-tld"/>)</t>
          </li>
          <li>
            <t>both ".localhost" and "localhost" (Section 6.3 of <xref target="RFC6761"/>)</t>
          </li>
        </ul>
      </section>
      <section anchor="local-ip-addresses">
        <name>Local IP Addresses</name>
        <t>Additionally, if any host resolves to a local IP address and
connection is made to that address, those are also considered
"local":</t>
        <ul spacing="normal">
          <li>
            <t>10/8, 172.16/12, and 192.168/16 (from <xref target="RFC1918"/>)</t>
          </li>
          <li>
            <t>169.254/16 and fe80::/10 (from <xref target="RFC3927"/> and <xref target="RFC4291"/>)</t>
          </li>
          <li>
            <t>fc00::/7 (from <xref target="RFC4193"/>)</t>
          </li>
          <li>
            <t>127/8 and ::1/128 (from <xref section="3.2.1.3" sectionFormat="of" target="RFC1122"/> and <xref target="RFC4291"/>)</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="validating-hostname-authenticity">
        <name>Validating Hostname Authenticity</name>
        <t>By associating a server’s public key with its origin (defined as the
scheme, hostname, and port per <xref target="RFC6454"/>), a client can perform a
TLS handshake with the server to ensure the server possesses the
private key associated with that key hash. This allows the client to
validate the authenticity of a hostname advertised on the local
network (such as advertised via mDNS).</t>
      </section>
      <section anchor="authorizing-servers">
        <name>Authorizing Servers on Local Domain</name>
        <t>A client may also want to defend against rogue servers installed on
the local domain.  This requires legitimate servers be enrolled with a
trust anchor system such as a local domain Certification Authority
(e.g., <xref target="I-D.sweet-iot-acme"/>) or other system (e.g.,
<xref target="EST"/>) and that enrollment verified by the client.</t>
      </section>
      <section anchor="public-key-hash">
        <name>Public Key Hash</name>
        <t>Because the server's public key is encoded into its hostname,
changing the public key would also change its hostname -- thus, its
identity as known by the client changes, disrupting configuration of
that server on the client (e.g., printer configuration, SMB share
configuration, password manager).  As such, an identity change is
extremely disruptive, it needs to be avoided.  This means the
public/private key pair on a server needs to stay static.  The
tradeoff is a stolen private key allows an attacker to intercept
traffic to that server for a long time, without requiring the attacker
to retain access to the server (to steal its changed private key).
This is not ideal but superior to plain text communication or
conditioning users to accept self-signed certificate warnings for
servers on the local domain.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>New registry for hash type, 0=SHA256.  Extensions via IETF Action.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="secure-context" target="https://w3ctag.github.io/design-principles/#secure-context">
          <front>
            <title>Web Platform Design Principles</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date year="2024" month="June"/>
          </front>
        </reference>
        <reference anchor="DNS-SD">
          <front>
            <title>DNS-Based Service Discovery</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document specifies how DNS resource records are named and structured to facilitate service discovery. Given a type of service that a client is looking for, and a domain in which the client is looking for that service, this mechanism allows clients to discover a list of named instances of that desired service, using standard DNS queries. This mechanism is referred to as DNS-based Service Discovery, or DNS-SD.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6763"/>
          <seriesInfo name="DOI" value="10.17487/RFC6763"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="mDNS">
          <front>
            <title>Multicast DNS</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t>Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t>The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
        <reference anchor="Homenet">
          <front>
            <title>Special-Use Domain 'home.arpa.'</title>
            <author fullname="P. Pfister" initials="P." surname="Pfister"/>
            <author fullname="T. Lemon" initials="T." surname="Lemon"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document specifies the behavior that is expected from the Domain Name System with regard to DNS queries for names ending with '.home.arpa.' and designates this domain as a special-use domain name. 'home.arpa.' is designated for non-unique use in residential home networks. The Home Networking Control Protocol (HNCP) is updated to use the 'home.arpa.' domain instead of '.home'.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8375"/>
          <seriesInfo name="DOI" value="10.17487/RFC8375"/>
        </reference>
        <reference anchor="I-D.davies-internal-tld">
          <front>
            <title>A Top-level Domain for Private Use</title>
            <author fullname="Kim Davies" initials="K." surname="Davies">
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <author fullname="Andrew McConachie" initials="A." surname="McConachie">
              <organization>Internet Corporation for Assigned Names and Numbers</organization>
            </author>
            <author fullname="Warren Kumari" initials="W." surname="Kumari">
              <organization>Google</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   This document describes the "internal" top-level domain for use in
   private applications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-davies-internal-tld-03"/>
        </reference>
        <reference anchor="RFC6761">
          <front>
            <title>Special-Use Domain Names</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>This document describes what it means to say that a Domain Name (DNS name) is reserved for special use, when reserving such a name is appropriate, and the procedure for doing so. It establishes an IANA registry for such domain names, and seeds it with entries for some of the already established special domain names.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6761"/>
          <seriesInfo name="DOI" value="10.17487/RFC6761"/>
        </reference>
        <reference anchor="RFC1918">
          <front>
            <title>Address Allocation for Private Internets</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="B. Moskowitz" initials="B." surname="Moskowitz"/>
            <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
            <author fullname="G. J. de Groot" initials="G. J." surname="de Groot"/>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <date month="February" year="1996"/>
            <abstract>
              <t>This document describes address allocation for private internets. 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="5"/>
          <seriesInfo name="RFC" value="1918"/>
          <seriesInfo name="DOI" value="10.17487/RFC1918"/>
        </reference>
        <reference anchor="RFC3927">
          <front>
            <title>Dynamic Configuration of IPv4 Link-Local Addresses</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="E. Guttman" initials="E." surname="Guttman"/>
            <date month="May" year="2005"/>
            <abstract>
              <t>To participate in wide-area IP networking, a host needs to be configured with IP addresses for its interfaces, either manually by the user or automatically from a source on the network such as a Dynamic Host Configuration Protocol (DHCP) server. Unfortunately, such address configuration information may not always be available. It is therefore beneficial for a host to be able to depend on a useful subset of IP networking functions even when no address configuration is available. This document describes how a host may automatically configure an interface with an IPv4 address within the 169.254/16 prefix that is valid for communication with other devices connected to the same physical (or logical) link.</t>
              <t>IPv4 Link-Local addresses are not suitable for communication with devices not directly connected to the same physical (or logical) link, and are only used where stable, routable addresses are not available (such as on ad hoc or isolated networks). This document does not recommend that IPv4 Link-Local addresses and routable addresses be configured simultaneously on the same interface. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3927"/>
          <seriesInfo name="DOI" value="10.17487/RFC3927"/>
        </reference>
        <reference anchor="RFC4291">
          <front>
            <title>IP Version 6 Addressing Architecture</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <date month="February" year="2006"/>
            <abstract>
              <t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
              <t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4291"/>
          <seriesInfo name="DOI" value="10.17487/RFC4291"/>
        </reference>
        <reference anchor="RFC4193">
          <front>
            <title>Unique Local IPv6 Unicast Addresses</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4193"/>
          <seriesInfo name="DOI" value="10.17487/RFC4193"/>
        </reference>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <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="I-D.sweet-iot-acme">
          <front>
            <title>ACME-Based Provisioning of IoT Devices</title>
            <author fullname="Michael Sweet" initials="M." surname="Sweet">
              <organization>Lakeside Robotics Corporation</organization>
            </author>
            <date day="7" month="February" year="2025"/>
            <abstract>
              <t>   This document extends the Automatic Certificate Management
   Environment (ACME) to provision X.509 certificates for local Internet
   of Things (IoT) devices that are accepted by existing web browsers
   and other software running on End User client devices.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sweet-iot-acme-07"/>
        </reference>
        <reference anchor="EST">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
      </references>
    </references>
    <?line 273?>

<section anchor="example-encoding">
      <name>Example Encoding</name>
      <t>Server with private key in PEM format is:</t>
      <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCOkTU8TOKW/IZ6
whhyhg+1I4u0jm019z4SVUKAwKyOtFPtoEvRGPdKYUoLaPZmVyN/VTYlubVn7dE8
IYpibwkDhs38DKmyo0vdWjUaopQOaygtLB+PZ12l/XaSCE1cWsl45ShUvktcVR/D
DKwv7DWEIZrRTLKy6M+8Ne4x++kKXmwbSj8WsNQ4kU4uFhS+JXHXToZvhvoQLkTs
486XXPn4SJPLyTN62b6KHTLM1vb7RY4i4U7N6hS1UWe7bIxZNZ0vnf4vZ7A6SR7W
nM31DoaW5XCBH7CL56MSdn7dmuksRimfNmnsEmvBXZmuQMHnUZghBLMHPC9xmHhT
8q3pSY5jAgMBAAECggEANiAY1vDVob7zi01/HJObCQkatAzSl4drUGiAHAOKP49k
wbV2s0bIM7vl8ZkC2u3AM0p1iTMNFQzrv+l38VD4WhdmwodIMeLfHYVu3dLVZPf3
w9aZkMcMfcVRq7VtMV/iV3ygqDOqxr4mldWM1ZDW7HgZn9Z/jX7nxyuuZ9mcquuH
Brl8pcUba7666jcz+F9NNjXTPCwfm7ihCPkTeYr1NflQGTR5PJ+D5dywb53iulm1
ZTk2zBXJMujbIyTL0p+MqdEKXci7oQJqf7bQsxsO2ZUD24CmzYldsE6vmYUFxJpw
ZbYzO/a/Mv0mXQhcUTWKkJkU78QT2Us7SuSL+IPGSQKBgQDC5iRKtlYulUgxV9gu
TmX30R0W7R0nnsEjolNAqUwcIoUMHk8ODXEsp7jVOSFMJhHRMXL+VKYiBsiIV7vk
GlTbLRP34HgK54auRF6PTxBfNAkF+FQxl2mzWxj7wi5mg0g+tCJTLereUXULz8+r
h5Vqp4BCjcoumlyY0xlLtbr9/wKBgQC7Qx2Lb70XCL5eivdokMh2lRint9cfxC2W
fJ6QOnJgsN9XIQGTUAk3cLvmrKg3UOmJXXq+Q6djVB/3Op3+TFzsGS2ORMel9r6o
kAHYG/qdairlW9uTDsnwUP8UtE0lidhSXLGIAy71eMDbDg/c/yyrWTvysXf5kAiJ
CzTnyvY3nQKBgBt+Va5IbH3jxyxWxQM7Qf0kfaMHTe6R4ZMCShY8C6WIZRZhjCti
UA3JlzRU+9J/KFJHVH52OH1iUZWSMsopwMCuaju0aZq4MHKS6Hf04k1bzM4Pyui4
AEwx1KNnMB579IwL4y+ysYgtG4LQDO6YkMZb3KcG03ehhOB2HwJkH33HAoGATOw3
8bQ3v4OG970r/lcjEZsTYqnhA5qJg3yzgdmQbGmbhOX5CLNi5dQ4S3x3KSnilNvC
dO/DjcjbzKnWhsSFkzKQhRV50ZH3JbTqHQT5QLqA3nCKVPFJQJ90+ONLoXTrWIHd
J1rvakRtLE6tc4GartRcDMib2PcymmDxHZpA4/0CgYEAs0XF1G0gmnef8oEYuwZT
c+vr4wnD7YCP1h8nsNSgRHLk1e7k727iHGvruX3qrKsY26RHKi2+i1P6A39I4F5s
3Dme4HGXTyoc/qKp+/GAx5XYVG4c3Z3sdBejkpkhPTSlsSsDOHbjaiFV1zCyEdg5
fOPfIBX8uLc3UtOm0+Gn1IQ=
-----END PRIVATE KEY-----
]]></artwork>
      <t>and public key in PEM format is:</t>
      <artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjpE1PEzilvyGesIYcoYP
tSOLtI5tNfc+ElVCgMCsjrRT7aBL0Rj3SmFKC2j2Zlcjf1U2Jbm1Z+3RPCGKYm8J
A4bN/AypsqNL3Vo1GqKUDmsoLSwfj2ddpf12kghNXFrJeOUoVL5LXFUfwwysL+w1
hCGa0UyysujPvDXuMfvpCl5sG0o/FrDUOJFOLhYUviVx106Gb4b6EC5E7OPOl1z5
+EiTy8kzetm+ih0yzNb2+0WOIuFOzeoUtVFnu2yMWTWdL53+L2ewOkke1pzN9Q6G
luVwgR+wi+ejEnZ+3ZrpLEYpnzZp7BJrwV2ZrkDB51GYIQSzBzwvcZh4U/Kt6UmO
YwIDAQAB
-----END PUBLIC KEY-----
]]></artwork>
      <t>Using the binary format (DER) and hashed using SHA256 gives this
hex value:</t>
      <artwork><![CDATA[
21ebc0d00e98e3cb289738e2c091e532c4ad8240e0365b22067a1449693e5a18
]]></artwork>
      <t>Converting that hex value to binary and base32 encoded (without
trailing "=") gives:</t>
      <artwork><![CDATA[
EHV4BUAOTDR4WKEXHDRMBEPFGLCK3ASA4A3FWIQGPIKES2J6LIMA
]]></artwork>
      <t>After the hash algorithm identification digit (0 for SHA512/256) is
prefixed to that base64url, resulting in:</t>
      <artwork><![CDATA[
0EHV4BUAOTDR4WKEXHDRMBEPFGLCK3ASA4A3FWIQGPIKES2J6LIMA
]]></artwork>
      <t>Finally, if this is a printer named "printer" advertised using
".local", the full FQDN for its unique name would be:</t>
      <artwork><![CDATA[
printer.0EHV4BUAOTDR4WKEXHDRMBEPFGLCK3ASA4A3FWIQGPIKES2J6LIMA.local
]]></artwork>
      <t>and the full FQDN for its short name would be "printer.local".</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This draft was inspired by a document published by Martin
Thomson in 2007; however, this draft takes a different approach
by using unique names over the wire.</t>
      <t>Other systems have also utilized public key hashes in an identifier
including Tor and Freenet's Content Hash Key.</t>
      <t>Thanks to Sridharan Rajagopalan for reviews and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
6BBcd9/OeUh4awH7CqArGIsHD67PiiIm9dnABfCCDesa4I27wBOce6MOReOH
jZh5Vdyk8Ffdpuja0w77Dv/1VQhgY9JQ+pZ+ALdYXULIkF4F3rOEAgq1x5gv
3ul7iVg0K8ehbHbZp4iS7HKjFPY12N0lBRSKqzUDyhjVlFBLfqeJhAQdCgZR
cbODnsbNwb3MfCUBr03hf7VmuzsUxtPuUpo3hV5zw56SQbfbvEy6NakhDWv7
0/vhpLer12xNmjRbkjSr13rqdb+fHaV9U5JsGDepj07zRWU+6q0y3W2JXA+H
22GfzHULfvZoZnPVz8JsuehJ195t5LXGnt28TNtjrbdZ2H15vDWXt2FmOd8Y
vrK0ylqzQrqbs65cT42DK1YaPfNmZy/a6riQ7fNkJN/2Xr+WHG9zeSOzlmf1
Zk5duUahODssLidPXU4zDdLoXS/lxqrZ3TrTeb93Kw2SlSEtfCSTp97avCqz
Y2XlDieF06Lgtw6z5Nu6s57b28vhYk/6p7lLCpXSej22CrO3cf82H5bySqnX
mfcHuYtSnm4KemFRHpYOs9xiRctK92M73GYv1q5w2Zal0mxaXhFrIOYatrwq
ruu1TrneL5YGMw12Z/ond6qbu6FpuU3zUltvTX8y6FiL7f5Q6w8643r1w+wc
5qTyLp5nmyJoeVCTpGZ9D9oe6tImd2ksbaX8qWdzmc7bSKlPTrInfc6MguYs
2rrUkUa9caF6IldlmXezSndQvhiV7ame90VpkD3n9Plg2Jp8OpekIVaWjcLq
oJlXW+sOaH/X2Sx9Uesvt+OdSK5VeXsaqIMd6PS9vPQGy4y+FG/798bo/cMp
mIa2GuS2jVW5s99a1W3muC5bHzff31ZN9d33O6TmGJWzulDkcqlUOqqfyVZ1
ODyu5+P6dWeW9UN9fJrTjZMb7oxJez4tjt+SjaJ2uypFUfcNM0e281P+s7Z+
G/hHpXub97Pn5OBda/bWql62J2/vu7IycT/cUX67aOQLdfNzY2hus3QxN4vW
x9v5SrbK5nOUkTODS9ZcTw7qYr7qnd5Oi3JlMs8v3PLMn/WT3XF7NunV9pNG
vahPe56x8Y3F/mNZ3ftkbq7F7DS7Kk+zFhjsaBtD6X1xVbv2YtA5VUaNddM9
l4/L0aw1eDt0poN1P7nsbfSaq3eX5cuJtI250p+OxUJn3ysWZH/aKo3nH7Xd
UDq1kq3Jh5E3P1cfx/JVL5r77D7p1d/mfWD2i/Wi/1lJOuRQXL6fC7X6UbV9
07htsh9G31OcauaKItfLk498Xyln1+BiVL9o9mlwyBtTQPaquvuo51dk91aa
jKy3vTusrrug54V0EtX+xXR6e3ExMt/W6/fkpKQdl7WMODqLyXnr023P8qPp
gBpVp2STk9TZtDPvGuQjY1X15w3Xui7GlYXXzAJ5PMzW/XZXupVzdNBQGvuM
mrndnNX8cnPXu+JJ0t9I/XNu3S4b0UIt17zkUi52lY54/Lh9rD4mg/Jklz3t
5EFnTkvTwnZQnx02lXpp1d1Ot4dj3dPJQhLfjM/pIll9y/Rab51lp5gfdXL6
YruaDVz7fB3UffnoZ+Xte2HQ6c1KnV22cMopn4PC+ObrBSI1rx+53tAa1Irl
avfaL9ySN3ez99qF/qQxKm1Og60i9tR2VqSHw6iW71zfTh1R7Eh2W5qPriKp
KBPxUhi1q+WskzHUY3Przjfv1kEqvr/txdvnXjMnSttUDqN1sd4f6kVtUpiJ
H2JvZunG8FIn2ijTOKpH5bNnrQ7urHX67E0O02Uxu+2Ib8r8vTOZFyf9d0m0
6r3luPU2eatmk6Nh317PnVW3o5G3nHORT1Ov3yx5aqEtO95UbQx0JT9Wb6bZ
+Ohsz1Ihk63vN03Jza5buXZ2b1p0V7GbG/+6nRM1eXEKV6tR3tTHuUPFcoez
/bTTP+Vo+VTOl/VO++L4a/Hd6bmbfGna6en5pJ4blySx2i20ii4RGyYtdNrr
+c1WM++9czLTlj6K682yXVDFrehqNXo8nU+H8XxmuDO3MeooR1lvLXOf9VtT
2xfJbjTedWvrit9XxYU3MrPJtpXrTn7ybNQcNn7PRTxbsdbsw/2w/0FaW9T6
3fpDVqt1j3/KaKO6NKlI+L6+78Hfm9Lx3MyNm5+6cbm1qdvdqPZmTLzZqO91
i95wpyabxrK+H9TdI6SXslzrZ6dHcWa2evX8Mb8F99jlFvk3xcxtk+J0XG/3
NmbljUgFZZiRbmf3fdgXl3au/d5bNEzX7s+uu2Ne0867XP60PwzXLeeNjhb2
sl/sr1uL3fV6c/vJa44c6m05u7jdXP84vjTW/mB3OdeNotvO2pmW01iM3lqj
/mGzuOjLj1y21FYKSqlZLzbLo/HIyH0WSbKpz2+V0yf1zKR+yN4+h0o+mV2N
un5r9EnthbdsWX7+NljNV1q/KCb7eXodnU40d/4cVielNjH85XU/TV71JD02
Ldjd1jn3m5uz9bk9l2tvznWZ3zqnRq2Ya2+6k9ln7fN6UbeHwiLT80oLc0Q2
125Dmki1mMm/2Smw+CJs5Ifd6MDYT43mlBc+yKyAyPHzAs6shL3Oei147+1A
P3jnOHKOfI4qalbLZmm1QkVVyVeqZbFC82q2mqNFMa8WZK2SL2RpViwVlXw+
WyrLuUKhWqqKtCjnKqFowP1YjcvkA5GilRjJ59KigN8b5gF3JvGu+DMXOZKx
2VkWagtpNG9MC6tec91pTAe15rjV7td7ojSTCpLYWgGKj7u95iz/Vup3B1Io
lxTd4GCk897KDQ/NA5rMDxWesoyfguKKuXwGlPeMVczZoTvW7w4Lgaht/YK9
LN9g29atSODs/0filn5vmXnRbeWwWOP3qxLBz0S8tcAvDIf9RH7yiDfNhNak
MQxv2jwcAPGaVLl7Q3h99/+0Ab5wHJ3+LEH8ek8gQLShdNRsBZovqVj84r8N
wiLeJV+v/F8tUe1nYgeVNE38ergIj6cNuuWedSc83dZs1WcNAIaTLDTg+UBG
R4UvbQAa1mbOZ7Plf8I7oJTdWfTuc3rBbZr7ZWR2Q0JWDwRm4nEWUymUSJfA
3/B6Gx4GxpoWePZ8CdqVvgf+/vlwZ5VHL+7hXk7jrQ5yv/Q2x9oTNNtyKPZ+
/+Zi0YWnjfwfnPXojV0Mk60Tq/FmDnAR2YHZpvJR3ttn2YC/oyEcetHpNfzH
GlTD0ipN/hMB+Ws/+TYAAA==

-->

</rfc>
