<?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.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wing-settle-referee-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="Local Domain Referee">A Referee to Authenticate Servers in Local Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-wing-settle-referee-00"/>
    <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="January" day="08"/>
    <keyword>local domain</keyword>
    <keyword>tls</keyword>
    <keyword>certificate</keyword>
    <keyword>allow-list</keyword>
    <keyword>allow list</keyword>
    <keyword>whitelist</keyword>
    <abstract>
      <?line 46?>

<t>Obtaining and maintaining PKI certificates for devices in a local
domain network is difficult for both technical and human factors
reasons. This document describes an alternative approach to securely
identify and authenticate servers in the local domain using a
HTTPS-based trust anchor system, called a Referee.  The Referee allows
bootstrapping a network of devices by trusting only the Referee trust
anchor in the local domain.</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/referee/draft-wing-settle-referee.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wing-settle-referee/"/>.
      </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/referee"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Most existing TLS communications require the server obtaining a
certificate signed by a Certification Authority trusted by the client.
Within a local domain network this is fraught with complications of both
human factors and technical natures (e.g., local domain firewall,
lack of domain name).</t>
      <t>This document describes a trust anchor system to authorize the
legitimate servers on the local domain.  The trust anchor host, called a
Referee, helps clients identify and authenticate previously-enrolled
servers within the local domain.  The Referee system purposefully
avoids Public Key Infrastructure using X.509 <xref target="PKIX"/>,
instead using an "allow list" of public keys.</t>
      <t>When clients TLS connect to a server on the local domain and encounter a
self-signed certificate that might otherwise cause an authentication
failure (typically, a warning to the user), the client can send an
HTTP query the local domain's pre-authorized Referee system to learn
if that server has been enrolled with the Referee.  If so, it
indicates the server was enrolled in the Referee trust anchor and the
TLS connection can continue.</t>
    </section>
    <section anchor="unique-characteristics">
      <name>Unique Characteristics</name>
      <t>The system described in this draft has several characteristics that
differ from other trust anchor systems:</t>
      <ul spacing="normal">
        <li>
          <t>requires an always-on Referee server to authenticate servers on
the local domain,</t>
        </li>
        <li>
          <t>the client validates a server is authorized on the local domain via
an HTTPS query to the (Referee) server on the local domain, rather than
a signed certificate,</t>
        </li>
        <li>
          <t>can use raw public keys, as the dates and certificate signatures of
servers on the local domain are ignored by this system, in favor of
consulting the Referee,</t>
        </li>
        <li>
          <t>handles name collisions for servers on different networks, so two
different networks can both have servers with the same name (e.g.,
router.local),</t>
        </li>
        <li>
          <t>handles unique names for servers (e.g., router-abcdef123456.local),</t>
        </li>
        <li>
          <t>servers that participate in the Referee system can change their
public keys periodically and inform the Referee, which allows
clients to automatically handle those public key changes, and</t>
        </li>
        <li>
          <t>can operate without changes to non-Referee servers on the local
domain, provided such servers do not change their public
keys.</t>
        </li>
      </ul>
    </section>
    <section anchor="requirements-evaluation">
      <name>Requirements Evaluation</name>
      <t>Using requirements from <xref target="I-D.rbw-home-servers"/>, the proposal in this
document has the following summarized characteristics:</t>
      <table anchor="table1">
        <name>Summary of Referee Against Requirements</name>
        <thead>
          <tr>
            <th align="right">Solution</th>
            <th align="center">Reduce CA</th>
            <th align="center">Eliminate CA</th>
            <th align="center">Existing CA Support</th>
            <th align="center">Existing Client Support</th>
            <th align="center">Revoke Auth</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">Referee</td>
            <td align="center">Yes</td>
            <td align="center">Yes</td>
            <td align="center">N/A</td>
            <td align="center">No</td>
            <td align="center">Yes</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="operation">
      <name>Operation</name>
      <t>The following message diagram depicts messages after the client has
previously authorized this Referee and attempts its first connection to a server
on the local domain.</t>
      <figure anchor="figure1">
        <name>Message Sequence Diagram with Previously-Authorized Referee</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="528" width="504" viewBox="0 0 504 528" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 40,80 L 40,144" fill="none" stroke="black"/>
              <path d="M 40,224 L 40,240" fill="none" stroke="black"/>
              <path d="M 40,320 L 40,336" fill="none" stroke="black"/>
              <path d="M 64,32 L 64,80" fill="none" stroke="black"/>
              <path d="M 112,48 L 112,80" fill="none" stroke="black"/>
              <path d="M 144,80 L 144,96" fill="none" stroke="black"/>
              <path d="M 144,128 L 144,208" fill="none" stroke="black"/>
              <path d="M 144,256 L 144,304" fill="none" stroke="black"/>
              <path d="M 144,352 L 144,448" fill="none" stroke="black"/>
              <path d="M 144,480 L 144,512" fill="none" stroke="black"/>
              <path d="M 184,48 L 184,80" fill="none" stroke="black"/>
              <path d="M 232,224 L 232,240" fill="none" stroke="black"/>
              <path d="M 232,320 L 232,336" fill="none" stroke="black"/>
              <path d="M 248,48 L 248,80" fill="none" stroke="black"/>
              <path d="M 288,80 L 288,144" fill="none" stroke="black"/>
              <path d="M 288,208 L 288,264" fill="none" stroke="black"/>
              <path d="M 288,304 L 288,368" fill="none" stroke="black"/>
              <path d="M 288,400 L 288,448" fill="none" stroke="black"/>
              <path d="M 328,48 L 328,80" fill="none" stroke="black"/>
              <path d="M 344,32 L 344,80" fill="none" stroke="black"/>
              <path d="M 408,80 L 408,368" fill="none" stroke="black"/>
              <path d="M 408,400 L 408,512" fill="none" stroke="black"/>
              <path d="M 464,32 L 464,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 64,32" fill="none" stroke="black"/>
              <path d="M 344,32 L 464,32" fill="none" stroke="black"/>
              <path d="M 112,48 L 184,48" fill="none" stroke="black"/>
              <path d="M 248,48 L 328,48" fill="none" stroke="black"/>
              <path d="M 8,80 L 64,80" fill="none" stroke="black"/>
              <path d="M 112,80 L 184,80" fill="none" stroke="black"/>
              <path d="M 248,80 L 328,80" fill="none" stroke="black"/>
              <path d="M 344,80 L 464,80" fill="none" stroke="black"/>
              <path d="M 48,96 L 136,96" fill="none" stroke="black"/>
              <path d="M 32,144 L 48,144" fill="none" stroke="black"/>
              <path d="M 144,144 L 280,144" fill="none" stroke="black"/>
              <path d="M 56,208 L 216,208" fill="none" stroke="black"/>
              <path d="M 56,256 L 216,256" fill="none" stroke="black"/>
              <path d="M 144,272 L 400,272" fill="none" stroke="black"/>
              <path d="M 56,304 L 216,304" fill="none" stroke="black"/>
              <path d="M 56,352 L 216,352" fill="none" stroke="black"/>
              <path d="M 144,368 L 280,368" fill="none" stroke="black"/>
              <path d="M 152,416 L 288,416" fill="none" stroke="black"/>
              <path d="M 56,448 L 216,448" fill="none" stroke="black"/>
              <path d="M 280,448 L 296,448" fill="none" stroke="black"/>
              <path d="M 56,480 L 216,480" fill="none" stroke="black"/>
              <path d="M 152,494 L 224,494" fill="none" stroke="black"/>
              <path d="M 152,498 L 224,498" fill="none" stroke="black"/>
              <path d="M 336,494 L 400,494" fill="none" stroke="black"/>
              <path d="M 336,498 L 400,498" fill="none" stroke="black"/>
              <path d="M 56,208 C 47.16936,208 40,215.16936 40,224" fill="none" stroke="black"/>
              <path d="M 216,208 C 224.83064,208 232,215.16936 232,224" fill="none" stroke="black"/>
              <path d="M 56,256 C 47.16936,256 40,248.83064 40,240" fill="none" stroke="black"/>
              <path d="M 216,256 C 224.83064,256 232,248.83064 232,240" fill="none" stroke="black"/>
              <path d="M 56,304 C 47.16936,304 40,311.16936 40,320" fill="none" stroke="black"/>
              <path d="M 216,304 C 224.83064,304 232,311.16936 232,320" fill="none" stroke="black"/>
              <path d="M 56,352 C 47.16936,352 40,344.83064 40,336" fill="none" stroke="black"/>
              <path d="M 216,352 C 224.83064,352 232,344.83064 232,336" fill="none" stroke="black"/>
              <path d="M 56,448 C 47.16936,448 40,455.16936 40,464" fill="none" stroke="black"/>
              <path d="M 216,448 C 224.83064,448 232,455.16936 232,464" fill="none" stroke="black"/>
              <path d="M 56,480 C 47.16936,480 40,472.83064 40,464" fill="none" stroke="black"/>
              <path d="M 216,480 C 224.83064,480 232,472.83064 232,464" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="408,496 396,490.4 396,501.6" fill="black" transform="rotate(0,400,496)"/>
              <polygon class="arrowhead" points="408,272 396,266.4 396,277.6" fill="black" transform="rotate(0,400,272)"/>
              <polygon class="arrowhead" points="288,368 276,362.4 276,373.6" fill="black" transform="rotate(0,280,368)"/>
              <polygon class="arrowhead" points="288,144 276,138.4 276,149.6" fill="black" transform="rotate(0,280,144)"/>
              <polygon class="arrowhead" points="160,496 148,490.4 148,501.6" fill="black" transform="rotate(180,152,496)"/>
              <polygon class="arrowhead" points="160,416 148,410.4 148,421.6" fill="black" transform="rotate(180,152,416)"/>
              <polygon class="arrowhead" points="144,96 132,90.4 132,101.6" fill="black" transform="rotate(0,136,96)"/>
              <polygon class="arrowhead" points="56,96 44,90.4 44,101.6" fill="black" transform="rotate(180,48,96)"/>
              <g class="text">
                <text x="36" y="52">DHCP</text>
                <text x="376" y="52">Local</text>
                <text x="428" y="52">Domain</text>
                <text x="36" y="68">Srvr</text>
                <text x="148" y="68">Client</text>
                <text x="288" y="68">Referee</text>
                <text x="404" y="68">Server</text>
                <text x="52" y="116">1.</text>
                <text x="84" y="116">DHCP</text>
                <text x="172" y="116">request/response</text>
                <text x="156" y="164">2.</text>
                <text x="196" y="164">HTTPS:</text>
                <text x="252" y="164">obtain</text>
                <text x="312" y="164">Referee</text>
                <text x="216" y="180">certificate</text>
                <text x="280" y="180">and</text>
                <text x="332" y="180">complete</text>
                <text x="184" y="196">TLS</text>
                <text x="240" y="196">handshake</text>
                <text x="52" y="228">3.</text>
                <text x="96" y="228">Referee</text>
                <text x="172" y="228">previously</text>
                <text x="108" y="244">authorized</text>
                <text x="156" y="292">4.</text>
                <text x="204" y="292">complete</text>
                <text x="256" y="292">TLS</text>
                <text x="312" y="292">handshake</text>
                <text x="52" y="324">5.</text>
                <text x="96" y="324">unknown</text>
                <text x="156" y="324">public</text>
                <text x="200" y="324">key</text>
                <text x="76" y="340">so</text>
                <text x="112" y="340">query</text>
                <text x="168" y="340">Referee</text>
                <text x="156" y="388">6.</text>
                <text x="192" y="388">HTTPS</text>
                <text x="232" y="388">GET</text>
                <text x="284" y="388">server's</text>
                <text x="348" y="388">public</text>
                <text x="392" y="388">key</text>
                <text x="456" y="388">fingerprint</text>
                <text x="156" y="436">7.</text>
                <text x="192" y="436">HTTPS</text>
                <text x="252" y="436">response</text>
                <text x="52" y="468">8.</text>
                <text x="84" y="468">keys</text>
                <text x="132" y="468">match;</text>
                <text x="196" y="468">continue</text>
                <text x="244" y="500">9.</text>
                <text x="272" y="500">TLS</text>
                <text x="308" y="500">data</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+------+                                  +--------------+
| DHCP |     +--------+       +---------+ | Local Domain |
| Srvr |     | Client |       | Referee | |    Server    |
+---+--+     +---+----+       +----+----+ +-------+------+
    |<---------->|                 |              |
    |1. DHCP request/response      |              |
    |            |                 |              |
   -+-           +---------------->|              |
                 |2. HTTPS: obtain Referee        |
                 |   certificate and complete     |
                 |   TLS handshake                |
     .-----------+---------.       |              |
    |3. Referee previously  |      |              |
    |   authorized          |      |              |
     '-----------+---------'       |              |
                 +------------------------------->|
                 |4. complete TLS handshake       |
     .-----------+---------.       |              |
    |5. unknown public key  |      |              |
    |   so query Referee    |      |              |
     '-----------+---------'       |              |
                 +---------------->|              |
                 |6. HTTPS GET server's public key fingerprint
                 |                 |              |
                 |<----------------+              |
                 |7. HTTPS response|              |
     .-----------+---------.      -+-             |
    |8. keys match; continue|                     |
     '-----------+---------'                      |
                 |<========= 9. TLS data ========>|
                 |                                |
]]></artwork>
        </artset>
      </figure>
      <section anchor="referee">
        <name>Referee</name>
        <t>The Referee trust anchor function is implemented within any always-on
device within the local domain (e.g., router, smart home hub, NAS, or
a virtualized CPE).  The Referee runs HTTPS and serves files
containing public key fingerprints indexed by each server's local
domain name.  These files are populated by servers on the local domain
that support Referee or manually as described in <xref target="server-bootstrapping"/>.</t>
        <t>Clients authenticate the Referee and use HTTP GET to fetch the
named public key fingerprint from the Referee server using a
well-known URI.  The Referee returns the SHA-256 fingerprint of the server's public
key as an octet-stream.</t>
        <t>For example if the server's name is "smarttv-abcdef123.internal" the
following HTTP GET would be issued by the client to retrieve that
server's public key fingerprint:</t>
        <artwork><![CDATA[
  GET /.well-known/referee/sha256/smarttv-abcdef123.internal
]]></artwork>
      </section>
      <section anchor="servers">
        <name>Servers</name>
        <t>A server supporting this specification is expected to be a printer
(using IPPS or HTTPS), file server (e.g., NAS or laptop), IoT device,
router (especially its HTTPS-based management console), scanner,
Smart TV, or similar.</t>
        <t>Each local domain device supporting Referee has a public key.  During
installation of the device to a Referee network, the device's hostname
and public key fingerprint are stored into the Referee Server.
Several options exist for this step, detailed in <xref target="bootstrapping"/>.</t>
        <t>If a server's public key changes (e.g., factory reset, key rotation,
public key algorithm change) the new key needs to be enrolled with the
Referee and the old key removed (see <xref target="key-lifetime"/>). Clients will
notice the mismatch and will query the Referee, which provides the
new key's fingerprint, authenticating the server (with its new
key) to the client.</t>
      </section>
      <section anchor="clients">
        <name>Clients</name>
        <t>A client supporting this specification is first configured with the
DNS name of its Referee server, which MAY occur via service discovery
(see <xref target="discovery"/>).  The client authenticates and authorizes the
Referee server using one of the bootstrapping mechanisms (see
<xref target="bootstrapping"/>). This step occurs only once for each home network
the client joins, as each home network is responsible for being a
Referee for its own local domain.</t>
        <t>On a connection to a server on the local domain (see <xref target="local"/>) the
client includes the server's local domain name in the TLS Server Name
Indication (SNI) extension of its ClientHello.  A client MAY cache
authorized servers on that same local domain, after the client has
completed a TLS handshake to the Referee to verify the client is
connected to that Referee's network.  Upon disconnection from that
network, the client invalidates its cache until connected to a new
network and validating that network's Referee.</t>
        <t>On receiving the server's certificate in the TLS exchange, the
client will have previously cached that server+Referee combination,
or not, as discussed below:</t>
        <ul spacing="normal">
          <li>
            <t>If not previously cached, the client queries that network's Referee
with the DNS name of the server (e.g., printer.internal).  The Referee
responds with the public key fingerprint of that server.  The client
checks if the public key fingerprint (from the Referee) matches the
public key of the server (from the TLS handshake). If they match,
communication with the server continues and the server name and its
public key MAY be cached by the client.  If they do not match, the
client aborts this communication session; further actions by the
client are an implementation detail.</t>
          </li>
          <li>
            <t>If previously cached, the client determines if the cached public key
matches the public key obtained from the TLS handshake with the
server.  If they match, communication continues.  If they do not
match, the queries the Referee to learn if a new key fingerprint is
available for that server.  If a different fingerprint is returned by
the Referee, the client verifies it matches the public key from the
TLS handshake.  If they match, the client replaces the information in
its cache.</t>
          </li>
        </ul>
        <t>Internally, a client might form a unique identity for a local domain
server as hostname (e.g., printer.local) combined with the identity of
the Referee, such as the Referee's public key fingerprint (if not
signed by a global Certification Authority) or the Referee's name (if
signed by a global Certification Authority).  In this way, when the
client is on a different network (which will have a different
Referee), a server name collision (e.g., router.local) will result in
a unique internal identity for that server -- keeping all the
server-specific data separate for those two servers on different
networks (e.g., web forms, passwords, local storage, etc.)</t>
      </section>
      <section anchor="revoking-authorization">
        <name>Revoking Authorization</name>
        <t>When the administrator revokes authorization for a server (e.g., replacement
of a server), the administrator removes the old public key from the Referee
and installs the new key in the Referee.</t>
        <t>When this replacement occurs, the clients that have not already cached
the server's public key will simply query the Referee, which has the server's
new public key.  The clients that have cached the server's previous public
key will notice the mismatch, pause their communication with the server, and
validate with the Referee that the new key is legitimate, and continue their
communication with the server.</t>
        <t>Thus, revoking authentication has immediate effect because the clients
immediately validate a mismatch with the Referee.</t>
      </section>
    </section>
    <section anchor="bootstrapping">
      <name>Bootstrapping the Referee</name>
      <section anchor="clients-to-referee">
        <name>Clients to Referee</name>
        <t>The clients have to be configured to trust their Referee. This is
a one time activity, for each home network the client joins.  This
can be somewhat automated using service discovery (<xref target="discovery"/>).</t>
        <t>The client is configured to trust the Referee server's public key.  If
this key changes, session resumption might be useful to avoid having
the client re-configured to trust that new public key, see
<xref target="referee-public-key-change"/>.</t>
      </section>
      <section anchor="server-bootstrapping">
        <name>Servers to Referee</name>
        <t>Server names and their associated public key fingerprints have to
be enrolled with the Referee.  This can be automated by servers
that support Referee, or can be done manually for servers that do not
(yet) support Referee -- providing immediate value to Referee clients
without waiting for server Referee support.</t>
        <section anchor="short-code-or-scan-code">
          <name>Short Code or Scan Code</name>
          <t>Short code printed on the Referee-capable server which can be scanned
by a smartphone application by the home administrator which is
authorized to push new associations to the Referee.</t>
        </section>
        <section anchor="incremental-deployment-and-manual-referee-configuration">
          <name>Incremental Deployment and Manual Referee Configuration</name>
          <t>It is useful for a Referee server to provide immediate value on its
installation, even when servers do not (yet) support Referee.  The
Referee system requires support of both the client (to ask the Referee
for mediation) and installation of a Referee -- which could be in the
home router, NAS, or other always-on device.  This section explores
how to bootstrap Referee system when servers on the local domain
do not (yet) support Referee.</t>
          <t>The Referee has a user interface for manual addition of a
server.  For example the user might cause the Referee to connect to a
server on the local domain using TLS, extract its public key, and
create the hostname and public key fingerprint association on the
Referee.  Additionally, the Referee might also scan the local domain
network looking for TLS servers on common ports (e.g., HTTPS, IMAPS,
IPPS, NNTPS, IMAPS, POP3S) to enumerate a list of servers for the
user to approve the same association on the Referee.</t>
          <t>To accommodate servers that change their public key but do not (yet)
register that change with the Referee, the Referee can refresh its
server fingerprints at user request.  The user request might be
initiated by the administrator or an HTTP message from the client
to the Referee of a key mismatch.</t>
        </section>
      </section>
    </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="discovery">
      <name>Service Discovery</name>
      <t>To ease initial bootstrapping the client, the local domain can
advertise its Referee server using a new DHCP option (see <xref target="iana"/>).
The client connects to that server using HTTPS and extracts the public
key.  Each local domain has its own Referee which only has purview
over servers in its same local domain.  The Referee's public key has
either not been seen before or has been seen before:</t>
      <ul spacing="normal">
        <li>
          <t>If the public key has not been seen before, the user needs to
approve use of that Referee trust anchor for this local domain; the
exact method is out of scope of this document.</t>
        </li>
        <li>
          <t>If the public key has been seen before, and was previously approved
(or previously rejected) by the user, that same user decision is
applied again.</t>
        </li>
      </ul>
    </section>
    <section anchor="operational">
      <name>Operational Considerations</name>
      <t>The Referee has to always be available.  The client cache helps reduce
load on the Referee but new clients (e.g., new devices, guest users, restored
devices) and client cache invalidation will always cause some traffic to
the Referee.</t>
      <t>When the Referee is unavailable, clients behavior devolves to what
we have today:  servers will need to obtain a real PKI certificate
signed by a Certification Authority already trusted by the clients, or
else clients will need to manually trust individual certificates.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO: expand security considerations.</t>
      <t>See <xref target="operational"/> describing client behavior when the Referee
is unavailable.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>Register new .well_known URI for Referee server.</t>
      <t>Register new DHCP option for Referee server.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-informative-references">
      <name>Informative References</name>
      <reference anchor="PKIX">
        <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="I-D.rbw-home-servers">
        <front>
          <title>Identifying and Authenticating Home Servers: Requirements and Solution Analysis</title>
          <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
            <organization>Nokia</organization>
          </author>
          <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
            <organization>Orange</organization>
          </author>
          <author fullname="Dan Wing" initials="D." surname="Wing">
            <organization>Cloud Software Group Holdings, Inc.</organization>
          </author>
          <date day="19" month="September" year="2024"/>
          <abstract>
            <t>   Obtaining CA-signed certificates for servers within a home network is
   difficult and causes problems at scale.  This document explores
   requirements to improve this situation and analyzes existing
   solutions.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-rbw-home-servers-00"/>
      </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>
          <date day="18" month="October" year="2024"/>
          <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-01"/>
      </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="RFC8446">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </reference>
    </references>
    <?line 398?>

<section anchor="issues-for-further-discussion">
      <name>Issues for Further Discussion</name>
      <section anchor="pki-fallback">
        <name>PKI Fallback</name>
        <t>Currently the text suggests clients should fallback to PKI if Referee
validation fails.  This means certificate warnings for self-signed
certificates.  Is such fallback harmful or is it worthwhile?</t>
      </section>
      <section anchor="distinct-local-domain-with-its-own-referee">
        <name>Distinct Local Domain with its Own Referee</name>
        <t>Each local domain is anticipated to have its own Referee.  Thus, when
a client visits another network, that network will have its own
Referee which is learned via service discovery.  That Referee is
bootstrapped same as the 'home' network's Referee (see <xref target="bootstrapping"/>).</t>
      </section>
      <section anchor="redundant-referees-on-one-local-domain">
        <name>Redundant Referees on One Local Domain</name>
        <t>This draft only discusses a single Referee on each Local Domain.
Multiple Referees may well be desirable for redundancy but are out of
scope of this draft.</t>
      </section>
      <section anchor="unique-names">
        <name>Unique Names</name>
        <t>Printer.internal or printer.local are handy names and can be used
with a Referee system.</t>
        <t>Unfortunately existing browsers have state that is tied to names --
web forms, cookies, and passwords.  Thus, those existing systems need names that contain a
unique identifier like a UUID, e.g.,
printer.2180be87-3e00-4c7f-a366-5b57fce4cbf7.internal.  Or perhaps
embedding part/all of the public key into the name itself, for
example:</t>
        <artwork><![CDATA[
  printer.2180be87-3e00-4c7f-a366-5b57fce4cbf7.internal
  nas.103a40ee-c76f-46da-84a1-054b8f18ae33.internal
  router.fb5f73ed-275a-431e-aecf-436f0c54d69d.local
]]></artwork>
        <t>The Referee system is ambivalent about the host name -- the Referee's
name and each server's name need only be unique on the current local
domain. Name collisions that occur between local domains are handled
by the client querying the other network's trusted Referee to check
legitimacy.</t>
        <t>The Referee system allows keeping the unique name the same for the
lifetime of the device while allowing changing its public key, as
discussed in the following section.</t>
      </section>
      <section anchor="key-lifetime">
        <name>Key Lifetime (Rotating Public Key)</name>
        <t>For security hygiene, the public keys in a server and the Referee may
be occasionally changed. This section discusses how such changes are
handled by a Referee system.</t>
        <section anchor="server">
          <name>Server</name>
          <t>If a server's public key changes the new key has to be installed
into the network's Referee.  To automate such changes, the server could connect to the
Referee and prove possession of its (old) private key (using TLS
client authentication or using application-layer mechanism such as
JSON Web Signature) and publish its new public key using an HTTP PUT.</t>
          <ul empty="true">
            <li>
              <t>Note: such a PUT mechanism also means an attacker in possession of
the server's private key can change the legitimate server's public key
fingerprint in the Referee to now point at an attacker-controlled
system, denying access to the legitimate server. It is still better than
unencrypted connections, which is the case today.</t>
            </li>
          </ul>
        </section>
        <section anchor="referee-public-key-change">
          <name>Referee</name>
          <t>If the Referee's public key changes all the clients have to
re-authenticate the Referee's new public key.  This is uncool.</t>
          <t>To allow changing the Referee's public key without needing the client
to re-authenticate the Referee, the client and Referee could do
session resumption for its subsequent connections to the Referee
(Section 2.2 of <xref target="RFC8446"/>).  If session resumption succeeds, the
client can query a the Referee's own well-known URI to determine if
the Referee's public key has changed, and update itself accordingly.</t>
          <t>With the above technique, the client will only have to (manually)
re-authenticate the Referee when the Referee cannot perform session
resumption.  As session resumption is usually implemented using the
server's private key, the Referee would need to remember its previous
private key (or two or three).</t>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Sridharan Rajagopalan for reviews and feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
m3jVKcZwsMt/A5moipgQTgAA

-->

</rfc>
