<?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.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-swaminathan-dka-framework-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="DKA Framework">Domain Key Authorities (DKA): DNS-Designated Public Key Distribution for Email-Address Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-swaminathan-dka-framework-02"/>
    <author initials="K." surname="Swaminathan" fullname="Kishore Swaminathan">
      <organization>Independent</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>k.s.swaminathan@live.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="29"/>
    <area>Applications and Real-Time</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>dka</keyword>
    <keyword>public key distribution</keyword>
    <keyword>email identifiers</keyword>
    <abstract>
      <?line 56?>

<t>This document specifies the Domain Key Authority (DKA) framework, a
DNS-anchored public-key distribution mechanism for the email-address
namespace. The framework enables an Internet domain to designate an
authoritative key service that verifies, stores, and distributes
selector-scoped public keys for email-address identifiers under that
domain. The result is a decentralized, deterministic, and 
application-agnostic framework for verified public-key discovery 
that supports incremental deployment and cryptographic agility.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-swaminathan-dka-framework/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 67?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Email addresses are widely used as identifiers for individuals and
automated agents on the Internet. Beyond email communication, they serve
as login identifiers for banking, government services, e-commerce,
social media, healthcare portals, and enterprise applications. An
email-address identifier is therefore already a practical Internet-wide
identifier, but it is not, by itself, a cryptographic identifier:
knowing an email address does not provide a means to encrypt to its
holder, verify a signature from its holder, or authenticate possession
of a corresponding secret.</t>
      <t>A framework that associates public keys with email-address identifiers
and makes those bindings discoverable in a consistent, interoperable
manner could enable end-to-end encrypted email without proprietary
infrastructure, digitally signed messages with stronger origin
assurance, passwordless authentication in which a relying party
verifies possession of a private key rather than a shared secret, and
secure key distribution for messaging systems and related protocols.</t>
      <t>Over the past three decades, several systems have addressed parts of
this problem. Each contributed important ideas, but each also revealed
limitations that inform the design requirements for a more deployable
framework.</t>
      <section anchor="prior-approaches-and-lessons-learned">
        <name>Prior Approaches and Lessons Learned</name>
        <section anchor="openpgp-and-the-web-of-trust">
          <name>OpenPGP and the Web of Trust</name>
          <t>OpenPGP <xref target="RFC9580"/> introduced a decentralized model in which users
generate their own key pairs and other users may certify bindings
between identities and keys through a web of trust. Public keys can be
uploaded to key servers for distribution.</t>
          <t>This model demonstrated the value of decentralized key generation and
distribution, but it has seen limited deployment outside technically
sophisticated communities. In particular, user-to-user certification
does not scale well for the general Internet population, key servers do
not by themselves establish verified bindings between an email address
and a submitted key, and key discovery is not deterministic: a relying
party may need to consult multiple servers, and the absence of a key at
one location does not establish that no key exists.</t>
          <t>These observations suggest that a more deployable framework should
provide built-in verification of the binding between an email address
and its public key, should support deterministic lookup, and should not
depend on user-to-user coordination for routine operation.</t>
        </section>
        <section anchor="smime-and-certificate-authorities">
          <name>S/MIME and Certificate Authorities</name>
          <t>S/MIME <xref target="RFC8551"/> addressed the verification problem by using
Certificate Authorities (CAs) to certify bindings between identities and
public keys. In enterprise and managed environments, this approach can
provide a workable solution for encrypted and signed email.</t>
          <t>However, S/MIME deployment has generally depended on access to CA
infrastructure and related operational arrangements, which has limited
participation outside managed environments. This suggests that a broadly
deployable framework should not depend on managed CA infrastructure for 
baseline participation.</t>
        </section>
        <section anchor="dane-and-dns-based-key-distribution">
          <name>DANE and DNS-Based Key Distribution</name>
          <t>DANE <xref target="RFC7671"/> and OPENPGPKEY <xref target="RFC7929"/> contributed an important
architectural insight: the domain namespace is a natural place to begin
when looking for keying information associated with addresses under that
namespace, and DNS is a natural mechanism for discovering where such
information can be obtained.</t>
          <t>However, storing per-user key material directly in DNS can create
operational challenges at large scale. DNS is well suited to publishing
domain-level and service-level information, but per-user key
distribution may require storage, update, and retrieval mechanisms that
scale more naturally through database-backed services and
application-layer APIs.</t>
          <t>The lesson is that DNS is well suited to discovery: it can tell a
client where to look for key information, while the key material itself
may be better served through infrastructure that scales independently
of DNS.</t>
        </section>
        <section anchor="web-key-directory">
          <name>Web Key Directory</name>
          <t>Web Key Directory (WKD) <xref target="I-D.koch-openpgp-webkey-service"/> partially
addressed this issue by separating publication from DNS storage and
delivering keys over HTTPS. This demonstrated the practical value of
using existing web infrastructure to distribute per-address key
material.</t>
          <t>WKD defines a conventional domain-hosted location at which an OpenPGP
key may be published for an email address. Because OpenPGP keys may also
be distributed through other mechanisms, failure to find a key via WKD
does not imply that no OpenPGP key exists for that address elsewhere.
In addition, WKD is specific to OpenPGP and email encryption, whereas 
DKA is intended as an application-agnostic framework for distributing 
selector-scoped public keys for email-address identifiers.</t>
        </section>
      </section>
      <section anchor="why-now-drivers">
        <name>Why Now: Drivers</name>
        <t>Several developments make this a practical time to standardize a
framework for verified public-key distribution for email-address
identifiers:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Passwordless authentication adoption</strong>: FIDO2/WebAuthn
and related public-key login models are increasing demand for
cryptographic bindings between user identifiers and public keys
without reliance on shared secrets.</t>
          </li>
          <li>
            <t><strong>End-to-end encryption at scale</strong>: Messaging and collaboration
systems increasingly need scalable, interoperable authentication of
public keys that does not depend on proprietary directories.</t>
          </li>
          <li>
            <t><strong>Infrastructure readiness</strong>: DNSSEC deployment, DNS-over-HTTPS
<xref target="RFC8484"/>, and ubiquitous HTTPS provide the discovery integrity and
transport security needed for DNS-designated key services.</t>
          </li>
          <li>
            <t><strong>Cryptographic transition</strong>: Migration to post-quantum algorithms
(e.g., ML-KEM, ML-DSA) benefits from a distribution
framework that is algorithm-agnostic and can evolve without requiring
protocol redesign.</t>
          </li>
        </ul>
        <t>These factors do not create the need for verified public-key
distribution for email-address identifiers; that need has long existed.
Rather, they create conditions under which a framework like DKA can
achieve practical, incremental deployment.</t>
      </section>
      <section anchor="design-principles">
        <name>Design Principles</name>
        <t>The preceding discussion motivates the following design principles for
the DKA framework:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Domain-designated authority.</strong> A domain designates, using DNS, an
authoritative key service for identifiers under its namespace.
Authority over key records for a given identifier derives from that
domain's DNS designation.</t>
          </li>
          <li>
            <t><strong>Scalable key distribution.</strong> Per-identifier key material is stored
and served through infrastructure that scales independently of DNS.</t>
          </li>
          <li>
            <t><strong>Verified binding.</strong> The framework provides mechanisms for
verifying the association between an email-address identifier and
its public key, and communicates which verification methods were
performed so that relying applications can apply local trust policy.</t>
          </li>
          <li>
            <t><strong>Deterministic lookup.</strong> Given an email-address identifier and a
selector, a conforming client obtains a single definitive result by
following a fixed lookup order: a matching key record, an indication
that no record exists, or an error.</t>
          </li>
          <li>
            <t><strong>Application agnosticism.</strong> The framework distributes keys without
prescribing or constraining what applications do with them.</t>
          </li>
          <li>
            <t><strong>Cryptographic agility.</strong> The framework does not prescribe a single
key type or algorithm and supports future cryptographic schemes.</t>
          </li>
          <li>
            <t><strong>Incremental deployment.</strong> The framework operates over existing
DNS, email, and HTTPS infrastructure and does not require
coordinated ecosystem-wide upgrades.</t>
          </li>
        </ul>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document specifies the DKA framework: DNS-based designation of
Domain Key Authorities, the key lookup protocol, the key registration
mechanism and selector-scoped key management.</t>
        <t>The framework is application-agnostic. Applications that consume
DKA-distributed keys (such as encrypted email, passwordless
authentication, or cryptocurrency wallet addressing) are outside the
scope of this document.</t>
      </section>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <ul spacing="normal">
        <li>
          <t><strong>Email-Address Identifier:</strong> An identifier having the syntactic
form of an email address (<tt>local-part@domain</tt>), used as the name to
which one or more public keys can be bound. The syntax of
email-address identifiers follows <xref target="RFC5321"/>.</t>
        </li>
        <li>
          <t><strong>Domain Portion:</strong> The portion of an email-address identifier
following the "@" character.</t>
        </li>
        <li>
          <t><strong>Domain Key Authority (DKA):</strong> A network-accessible service
designated by an Internet domain to collect, verify, store, and
distribute public keys associated with email-address identifiers
under that domain.</t>
        </li>
        <li>
          <t><strong>Designating Domain:</strong> An Internet domain that publishes one or
more DKA Discovery Records in order to designate a DKA as 
authoritative for public keys associated with email-address 
identifiers under that domain.</t>
        </li>
        <li>
          <t><strong>DKA Discovery Record:</strong> A DNS record by which a designating domain
designates its DKA. In this specification, a DKA Discovery Record is
published at the DNS name formed by prepending "_dka." to the
designating domain. A DKA Discovery Record MAY be expressed as an
HTTPS record or as a TXT record using the dka= tag-value form.</t>
        </li>
        <li>
          <t><strong>Selector:</strong> A string value that distinguishes one public key from
another for the same email-address identifier, enabling different
keys for different application contexts.</t>
        </li>
        <li>
          <t><strong>Default Selector:</strong> The selector value <tt>default</tt>, used when no
selector is explicitly specified.</t>
        </li>
        <li>
          <t><strong>Public Key Record:</strong> A data object maintained by a DKA that
associates a public key with an email-address identifier and
selector, together with verification metadata and optional
application metadata.</t>
        </li>
        <li>
          <t><strong>Verification Methods:</strong> Named methods performed by a DKA to verify
the association between an email-address identifier and a submitted
public key.</t>
        </li>
        <li>
          <t><strong>Key Lookup Request:</strong> A request sent by a client to a DKA to
obtain the Public Key Record associated with a specified
email-address identifier and optional selector.</t>
        </li>
        <li>
          <t><strong>Key Lookup Response:</strong> A response returned by a DKA containing the
requested Public Key Record, an indication that no matching record
exists, or an error.</t>
        </li>
        <li>
          <t><strong>Requesting Client:</strong> A software component that performs DKA
discovery and sends Key Lookup Requests.</t>
        </li>
        <li>
          <t><strong>Registrant:</strong> An entity that submits a public key for association
with an email-address identifier.</t>
        </li>
      </ul>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <t>The DKA framework is a distributed framework in which Internet domains
designate Domain Key Authorities to act as key services for
email-address identifiers under those domains. The framework separates
four functions that have been conflated, underspecified, or
application-bound in earlier approaches:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Designation of authority.</strong> DNS provides the designation function
at domain granularity, identifying which service is authoritative
for key records under a given domain.</t>
        </li>
        <li>
          <t><strong>Storage of key material.</strong> The DKA service stores per-identifier
key records at identifier-level granularity using infrastructure
that scales independently of DNS.</t>
        </li>
        <li>
          <t><strong>Retrieval of key records.</strong> The DKA service is discovered by
applications via DNS and accessed via HTTPS to retrieve structured
key records with metadata.</t>
        </li>
        <li>
          <t><strong>Identifier-to-key binding.</strong> The framework treats an email-address
identifier as an Internet identifier to which one or more public
keys may be bound, without limiting use of those keys to email
transport. This separates the identifier's role as a routable email
address from its broader role as a name for a person, agent,
service, or account in applications that consume DKA-distributed
keys.</t>
        </li>
      </ul>
      <t>This separation preserves domain-level authority while permitting key
storage and lookup to be implemented using databases, caches, or other
application-layer infrastructure.</t>
      <figure anchor="fig-architecture">
        <name>DKA Framework Architecture</name>
        <artwork><![CDATA[
                    DKA Framework Architecture

  +-----------------------------------------------------------------+
  |                         DNS Layer                               |
  |                                                                 |
  |  _dka.alpha.com      _dka.beta.org      _dka.gamma.net          |
  |       |                   |               |                     |
  +-------|-------------------|---------------|---------------------+
          |  Designates       |  Designates   |  Designates
          v                   v               v
  +-----------------------------------------------------------------+
  |                   Key Service Layer (HTTPS)                     |
  |                                                                 |
  |  +----------------+  +---------------+  +--------------------+  |
  |  | DKA for        |  | DKA for       |  |  DKA for           |  |
  |  | alpha.com      |  | beta.org      |  | gamma.net          |  |
  |  +-------^--------+  +-------^-------+  +---------^----------+  |
  +-----------------------------------------------------------------+
             |                   |                    |
       alice@alpha.com      bob@beta.org       carol@gamma.net
]]></artwork>
      </figure>
      <section anchor="selector-scoped-keys">
        <name>Selector-Scoped Keys</name>
        <t>An email-address identifier may be associated with multiple public keys,
each distinguished by a selector. Selectors allow different applications
to use different keys without the DKA interpreting what the selectors
mean or what applications consume them.</t>
        <t>For example, an identifier might have one key under selector <tt>default</tt>
for general use, another under <tt>auth</tt> for authentication, and another
under <tt>signing</tt> for digital signatures. The DKA stores and serves keys
by identifier and selector without assigning semantic meaning to
selector values. Applications define their own selector conventions
independently.</t>
      </section>
      <section anchor="cryptographic-agility">
        <name>Cryptographic Agility</name>
        <t>The DKA framework does not prescribe a key type or algorithm.
Selector-scoped Public Key Records MAY maintain metadata associated
with each public key to indicate its cryptographic properties. This
cryptographic agnosticism enables the DKA framework to support future
cryptographic schemes, including post-quantum schemes.</t>
      </section>
      <section anchor="deterministic-lookup">
        <name>Deterministic Lookup</name>
        <t>For any given (email-address identifier, selector) pair, a conforming
client queries the DKA designated by the identifier's domain. If that
DKA returns a matching Public Key Record, that record is the lookup
result. If the domain DKA returns a definitive not-found result, or if
no domain DKA is designated, the lookup result is not found, meaning
that the framework defines no public key for that
(email-address identifier, selector) pair. Because all conforming
clients follow this same lookup procedure, they obtain the same result
for the same (email-address identifier, selector) pair, assuming the
underlying DKA state is unchanged.</t>
      </section>
      <section anchor="incremental-deployment">
        <name>Incremental Deployment</name>
        <t>The framework can be deployed by a single domain or multiple 
domains, serving the email-identifiers of those domains. It is
not dependent on universal adoption.</t>
        <t>The framework operates over existing DNS, email, and HTTPS
infrastructure and does not depend on yet-to-be invented technology 
or protocols.</t>
      </section>
      <section anchor="discovery-and-retrieval-flow">
        <name>Discovery and Retrieval Flow</name>
        <t>A Requesting Client begins with an email-address identifier for which it
seeks a public key. The flow proceeds as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The client performs DKA discovery for the identifier's domain by
querying DNS for DKA Discovery Records at <tt>_dka.&lt;domain&gt;</tt>.</t>
          </li>
          <li>
            <t>If discovery succeeds, the client obtains a single DKA hostname and
queries that DKA over HTTPS.</t>
          </li>
          <li>
            <t>If the DKA returns a matching Public Key Record, the lookup is
complete.</t>
          </li>
          <li>
            <t>If no DKA Discovery Record exists for the domain, or if the DKA
returns a definitive not-found result for the queried
<tt>(email-address identifier, selector)</tt> pair, the lookup result is
not found.</t>
          </li>
          <li>
            <t>If DKA discovery fails because of inconsistent DKA Discovery Records,
or if DKA lookup fails with a non-404 error, the lookup fails with an
error.</t>
          </li>
        </ul>
        <t>The normative client discovery procedure is specified in <xref target="client-discovery"/> 
and the normative lookup procedure is specified in <xref target="lookup-order"/>.</t>
      </section>
    </section>
    <section anchor="dns-designation">
      <name>DNS Designation</name>
      <section anchor="dka-discovery-record">
        <name>DKA Discovery Record</name>
        <t>A domain designates its DKA by publishing one or more DKA Discovery
Records in DNS at the name formed by prepending <tt>"_dka."</tt> to the
domain.</t>
        <t>A DKA Discovery Record MAY be expressed as:</t>
        <ul spacing="normal">
          <li>
            <t>an HTTPS record <xref target="RFC9460"/>, and/or</t>
          </li>
          <li>
            <t>a TXT record using the DKA tag-value syntax defined by this
specification.</t>
          </li>
        </ul>
        <t>The TXT form of the DKA Discovery Record identifies the designated DKA
hostname using the <tt>dka</tt> tag:</t>
        <artwork><![CDATA[
_dka.example.com.  IN  TXT  "dka=dka.example.com"
]]></artwork>
        <t>The HTTPS form of the DKA Discovery Record identifies the same DKA
hostname and MAY provide standard HTTPS RR parameters for connection
establishment:</t>
        <artwork><![CDATA[
_dka.example.com.  IN  HTTPS  1  dka.example.com.  alpn=h2,h3
]]></artwork>
        <t>The HTTPS form is used to convey standard HTTPS RR information such as
protocol negotiation and other connection metadata defined by
<xref target="RFC9460"/>. This specification defines no DKA-specific HTTPS RR
parameters.</t>
        <t>For interoperability and backward compatibility, a domain that
publishes an HTTPS DKA Discovery Record MUST also publish a TXT DKA
Discovery Record at the same owner name.</t>
        <t>Determinism is a design goal of the DKA framework and applies both to
DKA discovery and to key lookup. For a given designating domain, all
valid DKA Discovery Records present at <tt>_dka.&lt;domain&gt;</tt> MUST designate
the same DKA hostname. A client that encounters HTTPS and TXT DKA
Discovery Records designating different hostnames MUST treat the
condition as a configuration error and abort discovery.</t>
        <t>In this version of the specification, the TXT form contains the
DKA hostname and the HTTPS records MAY provide connection metadata
for reaching that hostname, but MUST NOT change the identity of the
designated DKA. In this version of the specification, HTTPS 
AliasMode is not used. A client that encounters an HTTPS DKA Discovery 
Record in AliasMode MUST treat the condition as a configuration error 
and abort discovery.</t>
        <t>The <tt>dka</tt> tag and DKA hostname are defined by the following ABNF
<xref target="RFC5234"/>:</t>
        <figure anchor="fig-abnf-dka">
          <name>ABNF for DKA Discovery Record TXT Form and DKA Hostname</name>
          <sourcecode type="abnf"><![CDATA[
dka-discovery-txt = dka-tag *(*WSP ";" *WSP future-tag)
dka-tag           = %s"dka=" dka-hostname
future-tag        = tag-name "=" tag-value
tag-name          = ALPHA *(ALPHA / DIGIT / "-")
tag-value         = *(%x21-3A / %x3C-7E)
                    ; printable ASCII excluding ";"
dka-hostname      = sub-domain *("." sub-domain)
sub-domain        = Let-dig [Ldh-str]
Let-dig           = ALPHA / DIGIT
Ldh-str           = *(ALPHA / DIGIT / "-") Let-dig
]]></sourcecode>
        </figure>
        <t>The underscore-prefixed subdomain follows the conventions established
in <xref target="RFC8552"/> for DNS names used with underscore-scoped service
designations.</t>
        <t>Future versions of this specification are expected to use distinct underscored
DNS labels (e.g., _dka2, _dka3) rather than in-band versioning in the
TXT payload.</t>
      </section>
      <section anchor="dka-service-endpoint">
        <name>DKA Service Endpoint</name>
        <t>The DKA hostname obtained through the client discovery procedure
(<xref target="client-discovery"/>) identifies the DKA service endpoint.</t>
        <t>The DKA service MUST expose its service root at the well-known URI path
<tt>/.well-known/dka/</tt>. The lookup operation MUST be performed at
<tt>/.well-known/dka/lookup</tt>. Clients MUST construct the full lookup URI
by combining the discovered DKA hostname with the lookup path.</t>
        <t>The DKA service MUST be served over HTTPS <xref target="RFC9110"/>. Clients MUST NOT
send Key Lookup Requests over unencrypted HTTP.</t>
      </section>
      <section anchor="subdomain-scoping">
        <name>Subdomain Scoping</name>
        <t>Each domain portion in an email-address identifier is treated as a
distinct designating domain. A DKA Discovery Record at <tt>_dka.example.com</tt>
designates a DKA for email-address identifiers whose domain portion is
<tt>example.com</tt>. It does not apply to <tt>sub.example.com</tt> or any other
subdomain. A DKA Discovery Record at <tt>_dka.sub.example.com</tt> would be
required to designate a DKA for <tt>sub.example.com</tt>. Nothing in this 
specification requires distinct DKAs for distinct domains or subdomains; 
<tt>example.com</tt> and <tt>sub.example.com</tt> MAY designate the same DKA service.</t>
      </section>
      <section anchor="client-discovery">
        <name>Client Discovery</name>
        <t>Given an email-address identifier <tt>user@&lt;domain&gt;</tt>, a Requesting
Client discovers the corresponding DKA as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client extracts the domain portion of the email-address
identifier.</t>
          </li>
          <li>
            <t>The client queries DNS for HTTPS and TXT records at
<tt>_dka.&lt;domain&gt;</tt>.</t>
          </li>
          <li>
            <t>For each HTTPS record, the client extracts the TargetName as the DKA
hostname candidate.</t>
          </li>
          <li>
            <t>For each TXT record, the client parses the record as a DKA TXT
Discovery Record and extracts the hostname from the <tt>dka=</tt> tag. TXT
records that do not conform to the DKA TXT syntax defined in this
specification MUST be ignored.</t>
          </li>
          <li>
            <t>If the client finds no valid HTTPS or TXT DKA Discovery Record at 
 <tt>_dka.&lt;domain&gt;</tt>, discovery return not found.</t>
          </li>
          <li>
            <t>All valid DKA Discovery Records present at <tt>_dka.&lt;domain&gt;</tt> MUST
designate the same DKA hostname. If they do not, the client MUST
treat the condition as a configuration error and abort discovery.</t>
          </li>
          <li>
            <t>If one or more HTTPS records are present and all valid discovery
records agree on the same hostname, the client selects the HTTPS
record with the lowest priority value. If multiple HTTPS records
share the same lowest priority, the client MAY choose any of them.
The client uses the common designated hostname as the DKA hostname
and MAY use the selected HTTPS record's SvcParams for connection
establishment as specified in <xref target="RFC9460"/>.</t>
          </li>
          <li>
            <t>If no HTTPS record is present but one or more valid TXT records are
present, the client uses the common hostname extracted from the TXT
records as the DKA hostname.</t>
          </li>
          <li>
            <t>The client constructs the DKA Service Endpoint as
<tt>https://&lt;dka-hostname&gt;/.well-known/dka/</tt>.</t>
          </li>
        </ol>
        <t>Determinism is a design goal of the DKA framework and applies to DKA
discovery as well as key lookup. The above procedure ensures that all
conforming clients derive the same DKA hostname for a given domain,
regardless of whether discovery uses HTTPS records, TXT records, or
both.</t>
      </section>
    </section>
    <section anchor="key-registration">
      <name>Key Registration</name>
      <section anchor="registration-protocol">
        <name>Registration Protocol</name>
        <t>A registrant submits a public key to a DKA by email. A DKA MUST
accept registration messages at the mailbox <tt>register@&lt;dka-hostname&gt;</tt>,
where <tt>&lt;dka-hostname&gt;</tt> is the hostname specified in the DKA
Discovery Record. The operator MAY implement this mailbox using 
aliases, forwarding, or other local mail handling arrangements. A domain 
MAY additionally provide a convenience address such as
<tt>register-dka@&lt;domain&gt;</tt> that forwards to the DKA registration mailbox,
but support for such forwarding is outside the scope of this
specification.</t>
        <t>Public key registration follows a two-step protocol.</t>
        <t><strong>Step 1 -- Initiation.</strong><br/>
The registrant sends an email from the email address to be associated
with the key to the DKA registration mailbox.</t>
        <t><strong>Step 2 -- Token exchange and key submission.</strong><br/>
The DKA responds to the submission email address with a verification
email containing a unique, time-limited verification token and
instructions for completing registration. The registrant replies with
the verification token and a JSON payload containing the public key and
optional registration parameters:</t>
        <sourcecode type="json"><![CDATA[
{
  "token": "<verification-token>",
  "public_key": "<base64-encoded-key>",
  "selector": "<optional; defaults to 'default'>",
  "metadata": {}
}
]]></sourcecode>
        <t>In this version of the specification, the JSON payload MUST be 
included either:</t>
        <ol spacing="normal" type="1"><li>
            <t>in a MIME part with <tt>Content-Type: application/json</tt>, or</t>
          </li>
          <li>
            <t>as the entire content of a <tt>text/plain</tt> MIME part whose body parses
  as a complete, syntactically valid JSON value.</t>
          </li>
        </ol>
        <t>If neither condition is met, the DKA MUST reject the submission.</t>
        <t>Future versions of this specification may define additional submission
mechanisms. It is expected that key submission and verification
workflows will typically be performed with the aid of automated
assistants.</t>
        <t>The reply email MUST originate from the same email address to which the
verification token was sent. The DKA MUST verify that the <tt>From</tt> header
on the reply matches the address to which the token was delivered.</t>
      </section>
      <section anchor="domain-verification">
        <name>Domain Verification</name>
        <t>A DKA MUST verify that the domain portion of the submission email 
address matches the domain the DKA serves. If the domain portion 
does not match, the DKA MUST reject the submission.</t>
      </section>
      <section anchor="email-address-verification">
        <name>Email-Address Verification</name>
        <t>The registration protocol described above establishes the registrant's
control of the submission email address through two mechanisms:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Mailbox control.</strong><br/>
The verification token is delivered to the submission email address
and must be returned by the registrant. Successful return of the
token confirms that the registrant has access to the mailbox
associated with the submission email address.</t>
          </li>
          <li>
            <t><strong>DKIM validation.</strong><br/>
The DKA validates the DKIM signature <xref target="RFC6376"/> on the registration
reply and verifies that the domain in the <tt>From</tt> address is the same
as the DKIM signing domain identified by the <tt>d=</tt> tag. If these
checks succeed, the DKA records the verification method
<tt>dkim-validation</tt>.</t>
          </li>
        </ul>
        <t>The DKA records which verification methods were successfully performed.
These are reported in the <tt>verification_methods</tt> field of the Key Lookup
Response.</t>
        <t>The framework MAY accommodate additional verification methods
in future specifications. The initial verification method identifiers
are:</t>
        <ul spacing="normal">
          <li>
            <t><tt>mailbox-control</tt>: The registrant demonstrated control of the mailbox.</t>
          </li>
          <li>
            <t><tt>dkim-validation</tt>: A DKA-defined verification outcome indicating that
the registration reply passed DKIM signature validation and that the
domain in the <tt>From</tt> address matched the DKIM signing domain. This
identifier documents what checks were performed by the DKA; it does
not by itself imply any broader security or policy meaning beyond
those checks.</t>
          </li>
        </ul>
      </section>
      <section anchor="verification-tokens">
        <name>Verification Tokens</name>
        <t>Verification tokens MUST be generated with sufficient entropy to resist 
brute-force guessing. Tokens SHOULD contain at least 128 bits of 
entropy generated using a cryptographically secure random source.</t>
        <t>Verification tokens MUST have a finite expiration period. The DKA MUST
communicate the expiration period to the registrant in the verification
email. The DKA MUST reject registration replies containing expired
tokens.</t>
      </section>
      <section anchor="key-representation-and-storage">
        <name>Key Representation and Storage</name>
        <t>The <tt>public_key</tt> field MUST be a base64-encoded value and the DKA MUST
verify that the <tt>public_key</tt> field is syntactically valid base64 before
storing the Public Key Record.</t>
        <t>The use of base64 is a representation requirement, not a cryptographic
one. It provides a uniform way to carry arbitrary public-key material 
in JSON, email, and HTTP without requiring the DKA to understand the 
underlying key format. The framework remains cryptographically agnostic 
because it does not prescribe the algorithm, structure, or semantic 
interpretation of the decoded key material.</t>
        <t>Upon successful verification, the DKA stores the public key as a Public
Key Record associated with the submission email address and selector. If
a Public Key Record already exists for the same email-address identifier
and selector, the new record replaces it, and the record's version
number is incremented.</t>
        <section anchor="identifier-normalization">
          <name>Identifier Normalization</name>
          <t>For storage and matching, the DKA MUST normalize the domain portion of
the email-address identifier to lowercase. The local part MUST be
preserved exactly as submitted and MUST NOT be case-normalized or
otherwise rewritten.</t>
          <ul empty="true">
            <li>
              <t><strong>Design Note:</strong> Email-address identifiers are used beyond email
transport (e.g., as login identifiers, cryptographic identities,
or wallet addresses). Provider-specific email canonicalization rules
(such as dot removal or plus-tag stripping) are not appropriate for
these broader use cases and would break deterministic lookup.</t>
            </li>
          </ul>
          <t>The DKA MUST NOT apply provider-specific transformations such as dot
removal, plus-tag stripping, or other canonicalization rules not
defined by this specification.</t>
        </section>
      </section>
      <section anchor="registration-confirmation-and-rejection-messages">
        <name>Registration Confirmation and Rejection Messages</name>
        <t>Upon successful registration, update, or deletion of a Public Key
Record, the DKA SHOULD send a confirmation email to the submission
email address indicating the outcome and the selector affected.</t>
        <t>If a registration or deletion request fails (due to an expired or 
invalid token, invalid base64 in the public_key field, a domain 
mismatch, a payload containing both public_key and "delete": true, 
or any other reason) the DKA SHOULD send a rejection email to the 
submission email address indicating the reason for rejection. The 
DKA MUST NOT store or modify any Public Key Record as a result of 
a failed request.</t>
      </section>
      <section anchor="key-deletion">
        <name>Key Deletion</name>
        <t>A registrant may request deletion of a Public Key Record by initiating
the registration protocol and replying to the verification token with a
JSON payload that identifies the selector to be deleted:</t>
        <sourcecode type="json"><![CDATA[
{
  "token": "<verification-token>",
  "selector": "<optional; defaults to 'default'>",
  "delete": true
}
]]></sourcecode>
        <t>A deletion payload MUST NOT contain a <tt>public_key</tt> field. If a payload
contains both a <tt>public_key</tt> field and <tt>"delete": true</tt>, the DKA MUST
reject the request.</t>
        <t>A registration payload containing a valid <tt>public_key</tt> field and no
<tt>"delete": true</tt> is a create-or-replace operation for the Public Key
Record associated with the submission email address and selector.
This operation is authorized by mailbox-control verification rather 
than by signature from a previously registered key; 
see <xref target="mailbox-compromise"/>.</t>
        <t>The DKA performs the same verification as for registration before
deleting the record identified by the submission email address and
selector. If no <tt>selector</tt> field is present, the DKA deletes the Public
Key Record associated with the default selector. If no matching Public
Key Record exists, the DKA SHOULD treat the request as successfully
completed.</t>
        <figure anchor="fig-registration">
          <name>Key Registration Flow</name>
          <artwork><![CDATA[
                     Key Registration Flow

 Registrant                              DKA Mailbox
     |                                       |
     |  Step 1: Email to DKA                 |
     |-------------------------------------->|
     |                                       |
     |  Step 2: Verification token           |
     |<--------------------------------------|
     |                                       |
     |  Step 3: Reply with token +           |
     |          public key (JSON)            |
     |-------------------------------------->|
     |                                       |
     |                              +------------------+
     |                              | Verify:          |
     |                              |  - Mailbox ctrl  |
     |                              |  - DKIM valid    |
     |                              |  - Domain match  |
     |                              +------------------+
     |                                       |
     |  Step 4: Confirmation (SHOULD)        |
     |<--------------------------------------|
     |                              [Key stored]
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="key-lookup">
      <name>Key Lookup</name>
      <section anchor="lookup-request">
        <name>Lookup Request</name>
        <t>A Requesting Client obtains a Public Key Record by sending an HTTPS GET
request to the DKA's lookup path:</t>
        <sourcecode type="http"><![CDATA[
GET https://dka.example.com/.well-known/dka/lookup
    ?email_address=bob%40example.com&selector=default
]]></sourcecode>
        <t>The <tt>email_address</tt> parameter is REQUIRED and specifies the
email-address identifier to be looked up. The parameter value MUST be
percent-encoded as needed for use in a URI query component, as
specified in <xref target="RFC3986"/>. For example, the <tt>@</tt> character MUST be
encoded as %40. For matching purposes, the DKA MUST apply the same
identifier normalization rules used during registration and storage.</t>
        <t>The <tt>selector</tt> parameter is OPTIONAL. If omitted, the DKA returns the
Public Key Record associated with the default selector.</t>
      </section>
      <section anchor="lookup-response">
        <name>Lookup Response</name>
        <t>The DKA MUST return all responses with <tt>Content-Type: application/json</tt>.</t>
        <t>A successful lookup returns a JSON object with the following fields:</t>
        <sourcecode type="json"><![CDATA[
{
  "email_address": "bob@example.com",
  "selector": "default",
  "public_key": "LS0tLS1CRUdJTi...",
  "verification_methods": ["mailbox-control", "dkim-validation"],
  "metadata": {
    "algorithm": "RSA",
    "format": "base64-PEM",
    "expires": "2027-01-31T00:00:00Z"
  },
  "version": 1,
  "updated_at": "2026-03-31T22:31:20+00:00"
}
]]></sourcecode>
        <t>Field definitions:</t>
        <ul spacing="normal">
          <li>
            <t><strong><tt>email_address</tt></strong> (REQUIRED): The email-address identifier
associated with the Public Key Record.</t>
          </li>
          <li>
            <t><strong><tt>selector</tt></strong> (REQUIRED): The selector value.</t>
          </li>
          <li>
            <t><strong><tt>public_key</tt></strong> (REQUIRED): The base64-encoded public key.</t>
          </li>
          <li>
            <t><strong><tt>verification_methods</tt></strong> (REQUIRED): An array of verification method
identifiers indicating which methods the DKA successfully performed
when the key was registered. This field provides provenance
information for the key-to-identifier binding. It does not assert a
trust level; relying applications apply their own trust policies
based on the reported methods.</t>
          </li>
          <li>
            <t><strong><tt>metadata</tt></strong> (REQUIRED): A JSON object containing key-value pairs
provided by the registrant during registration. MAY be an empty
object. The DKA stores and returns metadata without interpreting its
contents.</t>
          </li>
          <li>
            <t><strong><tt>version</tt></strong> (REQUIRED): An integer incremented each time the Public
Key Record for this email-address identifier and selector is
updated. Clients MAY use the version to detect key changes.</t>
          </li>
          <li>
            <t><strong><tt>updated_at</tt></strong> (REQUIRED): An ISO 8601 timestamp indicating the time
at which the Public Key Record was created, or if later modified, most
recently updated.</t>
          </li>
        </ul>
        <t>If no Public Key Record exists for the specified email-address
identifier and selector, the DKA MUST return an HTTP 404 response. The
response MUST NOT distinguish between "no keys exist for this
identifier" and "keys exist for this identifier but not under the
specified selector."</t>
      </section>
      <section anchor="error-responses">
        <name>Error Responses</name>
        <t>When a request cannot be fulfilled, the DKA MUST return an appropriate
HTTP status code with a JSON body containing at minimum the following
fields:</t>
        <sourcecode type="json"><![CDATA[
{
  "error": "<error-code>",
  "message": "<human-readable description>"
}
]]></sourcecode>
        <t>The following error codes are defined:</t>
        <ul spacing="normal">
          <li>
            <t><tt>not_found</tt>: No matching Public Key Record exists (HTTP 404).</t>
          </li>
          <li>
            <t><tt>invalid_request</tt>: The request is malformed or missing required
parameters (HTTP 400).</t>
          </li>
          <li>
            <t><tt>rate_limited</tt>: The client has exceeded the DKA's rate limit
(HTTP 429).</t>
          </li>
          <li>
            <t><tt>server_error</tt>: An internal error prevented the DKA from
fulfilling the request (HTTP 500).</t>
          </li>
        </ul>
        <t>DKAs MAY define additional error codes. Clients MUST treat unrecognized
error codes as equivalent to <tt>server_error</tt>.</t>
      </section>
      <section anchor="caching">
        <name>Caching</name>
        <t>DKAs SHOULD include appropriate <tt>Cache-Control</tt> headers in lookup
responses.</t>
        <t>Positive lookup responses MAY be cached, but DKAs SHOULD use cache
lifetimes that reflect the possibility of key replacement or deletion.</t>
        <t>Negative lookup responses (HTTP 404) MAY also be cached for a short
duration in order to reduce repeated query load. Short negative-cache
lifetimes are RECOMMENDED.</t>
        <t>The specific caching policy is an operational decision for each DKA.</t>
      </section>
      <section anchor="lookup-order">
        <name>Lookup Order</name>
        <t>A Requesting Client looking up a public key for a given
(email-address identifier, selector) pair MUST proceed as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client performs DKA discovery for the identifier's domain as
specified in <xref target="client-discovery"/>.</t>
          </li>
          <li>
            <t>If DKA discovery returns not found, the lookup result is not found.
Within the framework, no public key is defined for the queried
(email-address identifier, selector) pair.</t>
          </li>
          <li>
            <t>If DKA discovery fails because of a configuration error, the lookup
fails with an error.</t>
          </li>
          <li>
            <t>If DKA discovery succeeds, the client constructs the lookup URL and
sends a Key Lookup Request to the discovered DKA, specifying the
email-address identifier and optionally a selector.</t>
          </li>
          <li>
            <t>If the DKA returns a matching Public Key Record, the lookup is
complete with that record as the result of the lookup.</t>
          </li>
          <li>
            <t>If the DKA returns an HTTP 404 response for the requested
(identifier, selector) pair, the lookup result is not found. Within
the framework, no public key is defined for that pair.</t>
          </li>
          <li>
            <t>If the DKA returns a non-404 error (such as HTTP 500, HTTP 429, or a
network timeout), the client SHOULD treat the condition as a
transient failure and MAY retry. A non-404 error is not a not-found
result.</t>
          </li>
        </ol>
        <t>This order is deterministic: for any given <tt>(email-address identifier,
selector)</tt> pair, all conforming clients either obtain the same Public
Key Record, the same not-found result, or an error.</t>
        <figure anchor="fig-lookup">
          <name>Key Lookup Flow</name>
          <artwork><![CDATA[
                        Key Lookup Flow

 Requesting                              Domain
 Client                   DNS                  DKA            
     |                      |                    |
     | _dka.<domain>?       |                    |
     |--------------------> |                    |
     | None or DKA hostname |                    |
     |<-------------------- |                    |
     |                                           |
     |  GET /.well-known/dka/lookup              |
     |------------------------------------------>|
     |  Public Key Record or 404                 |
     |<------------------------------------------|
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="selectors">
      <name>Selectors</name>
      <section anchor="the-default-selector">
        <name>The Default Selector</name>
        <t>Every DKA MUST support a selector value of <tt>default</tt>. A registration
that does not specify a selector is stored under the default selector. A
lookup that does not specify a selector returns the Public Key Record
associated with the default selector.</t>
        <t>This ensures that the simplest interaction with the framework ---
registering a key without specifying a selector, looking up a key
without specifying a selector --- works without the registrant or
requesting client being aware of the selector mechanism.</t>
      </section>
      <section anchor="selector-naming">
        <name>Selector Naming</name>
        <t>Selector values are case-insensitive ASCII strings. The reserved selector 
value default MUST be supported by every conforming DKA and is used when 
no selector is explicitly specified. Other selector values MUST be one or 
more ASCII letters or digits, may include hyphens only in non-initial and 
non-final positions, and MUST NOT exceed 63 characters. Selector values 
are compared case-insensitively.</t>
        <t>The syntax of a selector value is defined by the following ABNF
<xref target="RFC5234"/>:</t>
        <figure anchor="fig-abnf-selector">
          <name>ABNF for Selector Values</name>
          <sourcecode type="abnf"><![CDATA[
selector              = default / non-default-selector
default               = %s"default"
non-default-selector  = selector-body
selector-body         = selector-start [selector-middle] selector-end
selector-start        = ALPHA / DIGIT
selector-middle       = 0*61(ALPHA / DIGIT / "-")
selector-end          = ALPHA / DIGIT
]]></sourcecode>
        </figure>
        <t>The DKA framework defines one reserved selector value, <tt>default</tt>,
which every conforming DKA MUST support. Apart from <tt>default</tt>, this
specification does not define a registry of selector values or assign
semantic meaning to selectors. Applications that consume
DKA-distributed keys define their own selector conventions
independently of this specification.</t>
      </section>
      <section anchor="multiple-keys">
        <name>Multiple Keys</name>
        <t>An email-address identifier MAY be associated with any number of Public
Key Records under different selectors at the same DKA. Each
(email-address identifier, selector) pair identifies at most one Public
Key Record. Registration, update, and deletion operations act on a
single (identifier, selector) pair.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="security-properties">
        <name>Security Properties</name>
        <t>The DKA framework provides two core security-relevant properties:</t>
        <ul spacing="normal">
          <li>
            <t>Verified provenance of key-to-identifier bindings. The framework
reports what verification methods were successfully performed when a
public key was registered for an email-address identifier.</t>
          </li>
          <li>
            <t>Deterministic discovery and lookup. For a given (email-address 
identifier, selector) pair, conforming clients follow a fixed 
discovery and lookup procedure that yields a single
framework-defined result: a matching Public Key Record, an
indication that no matching record exists, or an error.</t>
          </li>
        </ul>
        <t>After a successful lookup, a Requesting Client can determine that:</t>
        <ul spacing="normal">
          <li>
            <t>For the queried (email-address identifier, selector) pair, if the
conforming lookup procedure returns a Public Key Record, that 
record is the framework-defined result for that pair. If the 
conforming lookup procedure returns a definitive not-found result, 
then the framework defines no public key for that pair.</t>
          </li>
          <li>
            <t>The public key was submitted by a party who demonstrated control of
the mailbox associated with the email-address identifier at the time
of registration (if <tt>mailbox-control</tt> is reported).</t>
          </li>
          <li>
            <t>The submission satisfied the DKA-defined checks corresponding to
dkim validation (if <tt>dkim-validation</tt> is reported).</t>
          </li>
        </ul>
        <t>The framework does not provide end-to-end authentication of the
registrant's identity, does not attest to the registrant's possession
of the corresponding private key (see <xref target="mailbox-compromise"/>), and does
not by itself provide transparency or historical continuity of keys.</t>
      </section>
      <section anchor="verification-provides-provenance-not-trust">
        <name>Verification Provides Provenance, Not Trust</name>
        <t>The <tt>verification_methods</tt> field in a Key Lookup Response reports what
the DKA verified when the key was registered. It does not assert a trust
level or recommend a level of reliance.</t>
        <t>A consuming application that accepts keys verified only by
<tt>mailbox-control</tt> knows that someone with mailbox access registered the
key, but has no domain-level endorsement of that binding. An
application that additionally requires <tt>dkim-validation</tt> knows that the
registration satisfied the DKA-defined checks associated with that
verification method.</t>
        <t>Applications SHOULD select verification requirements based on their
threat model and the consequences of accepting a fraudulent key.</t>
      </section>
      <section anchor="live-key-distribution-vs-certificate-pki">
        <name>Live Key Distribution vs. Certificate PKI</name>
        <t>The DKA framework embodies a different security model from traditional
certificate PKI. Conventional PKIs are built around long-lived keys,
certificate expiration periods, revocation mechanisms, and continuity of
trust over time. By contrast, DKA is designed for live discovery of the
currently published key for an <tt>(email-address identifier, selector)</tt>
pair at the time of use.</t>
        <t>This difference affects lifecycle management. In the DKA framework,
registration, replacement, and deletion of key records are governed by
control of the mailbox associated with the email-address identifier,
rather than by signatures from previously registered keys. This model
favors rapid recovery and key agility over cryptographic continuity of
record control.</t>
        <section anchor="mailbox-compromise">
          <name>Mailbox Control as the Lifecycle Trust Anchor</name>
          <t>The primary threat to the key-to-identifier binding is compromise of the
registrant's email account, which would allow an attacker to register a
fraudulent key. This risk is inherent to any system that uses
email-based verification and is mitigated by strong email account
security practices, including multi-factor authentication.</t>
          <t>In the DKA framework, authorization for key registration, replacement,
and deletion is based on control of the mailbox associated with the
email-address identifier, not on proof of possession of a previously
registered private key. This is an intentional design choice. The DKA
trust model treats continued mailbox control as the basis for
maintaining the key-to-identifier binding over time. As a result, a
registrant who retains mailbox control can replace or delete a Public
Key Record even if the previously associated private key has been lost,
rotated away, or compromised.</t>
          <t>Applications that require cryptographic continuity of keys or signed 
update authorization, or stronger lifecycle assurances MUST layer such
mechanisms above the DKA framework.</t>
        </section>
        <section anchor="proof-of-possession-and-lifecycle-operations">
          <name>Proof-of-Possession and Lifecycle Operations</name>
          <t>Proof-of-possession (PoP) verification is explicitly out of scope for
this specification. The DKA framework is intentionally designed to
operate at the key distribution layer, not the cryptographic protocol
layer. Incorporating PoP would require the DKA to:</t>
          <ul spacing="normal">
            <li>
              <t>understand and validate algorithm-specific signature schemes,</t>
            </li>
            <li>
              <t>generate and manage cryptographic challenges appropriate to each
key type,</t>
            </li>
            <li>
              <t>implement replay protection and nonce validation logic, and</t>
            </li>
            <li>
              <t>potentially maintain session state for multi-step cryptographic
handshakes.</t>
            </li>
          </ul>
          <t>These requirements would bind the distribution infrastructure to
specific cryptographic protocols, undermining the framework's
cryptographic agility and application agnosticism design principles.</t>
          <t>The DKA framework therefore does not require signed updates, signed
deletions, or other proof-of-possession checks tied to a previously
registered private key. Mailbox control remains the lifecycle trust
anchor. Applications that require assurance of private key possession
SHOULD perform an application-layer proof-of-possession challenge
directly with the key holder, using the cryptographic protocol
appropriate to the key type and use case. The DKA provides the verified
public key; the application performs the cryptographic validation.</t>
          <t>Future specifications may define a standardized, algorithm-agnostic
PoP extension for the DKA framework that preserves this separation of
concerns. Until then, proof of private key possession remains an
application-layer responsibility.</t>
        </section>
      </section>
      <section anchor="metadata-authenticity">
        <name>Metadata Authenticity</name>
        <t>The <tt>metadata</tt> field in a Public Key Record is self-asserted by the
registrant (or an application acting on the registrant's behalf) and is
stored and returned by the DKA without interpretation, validation, or
semantic processing. The DKA treats metadata as opaque key-value pairs
communicated by the registrant to consuming applications regarding the
public key.</t>
        <t>This design is intentional: the DKA framework is application-agnostic,
and different applications may define their own metadata conventions
for different selectors. Further, different cryptographic algorithms may
require different metadata. The DKA does not define the keys that belong
in metadata, nor does it verify their values.</t>
      </section>
      <section anchor="key-lifecycle">
        <name>Key Lifecycle</name>
        <t>Key updates and deletions follow the same verification requirements as
initial registration. Detailed key lifecycle management, including
rotation policies, revocation mechanisms, and multi-device coordination,
is expected to be addressed in future specifications.</t>
        <t>Future specifications may also define transparency logs or other mechanisms
for tracking the public-key history of (email-address identifier,
selector) pairs.</t>
      </section>
      <section anchor="transport-security">
        <name>Transport Security</name>
        <t>DKA service endpoints MUST be served over HTTPS to protect the integrity
of lookup responses and prevent substitution of key material by on-path
attackers.</t>
        <t>A client discovering a DKA via an HTTPS DKA Discovery Record MAY use
standard HTTPS RR connection metadata, as defined by <xref target="RFC9460"/>, when
establishing its HTTPS connection to the DKA. This specification
defines no DKA-specific HTTPS RR parameters or transport modes.</t>
      </section>
      <section anchor="dns-security">
        <name>DNS Security</name>
        <t>The DKA framework relies on DNS for discovery of Domain Key Authorities
and therefore inherits the known vulnerabilities of the DNS protocol,
including cache poisoning, unauthorized zone modification, and
man-in-the-middle attacks on queries that are not protected by DNSSEC.
Without DNSSEC validation, an attacker capable of poisoning the cache
for a <tt>_dka.&lt;domain&gt;</tt> record could redirect clients to a malicious DKA
service that supplies attacker-controlled public keys, thereby
undermining the integrity of key-to-identifier bindings.</t>
        <t>Domains that publish DKA Discovery Records SHOULD deploy DNSSEC to provide
origin authentication and data integrity for those records.</t>
      </section>
      <section anchor="non-enumeration">
        <name>Non-Enumeration</name>
        <t>A DKA MUST NOT provide any interface that enumerates email-address
identifiers for which Public Key Records exist.</t>
        <t>A DKA MUST NOT provide any interface that enumerates selector values
associated with a given email-address identifier.</t>
        <t>Lookups are point queries only: given an email-address identifier and a
selector, the DKA returns the matching record or indicates that no
matching record exists. When no matching record exists, the DKA MUST NOT
distinguish between "this identifier has no keys" and "this identifier
has keys but not under the specified selector". Both cases produce the
same response.</t>
      </section>
      <section anchor="rate-limiting">
        <name>Rate Limiting</name>
        <t>DKAs SHOULD implement rate limiting on Key Lookup Requests to mitigate
enumeration attempts through brute-force querying of identifier-selector
combinations.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The DKA framework publishes public-key bindings for email-address
identifiers. As with any public lookup mechanism, this creates privacy
considerations related to the exposure of identifier participation,
metadata, and lookup behavior. The privacy properties of DKA lookups
are those of standard HTTPS requests. The lookup request, including 
the queried email-address identifier, is protected by TLS. The DKA 
hostname is disclosed in DNS during discovery and is not considered 
confidential.</t>
      <t>A successful lookup reveals that a given (email-address identifier,
selector) pair has a registered Public Key Record at a particular DKA.
This may disclose that the identifier participates in the framework and,
in some cases, that the registrant uses multiple selectors for different
application contexts. Although the DKA framework prohibits enumeration
interfaces and recommends rate limiting, a determined attacker may still
attempt to infer participation through repeated point queries.</t>
      <t>The framework mitigates some privacy risks by decentralizing storage and
lookup. Public Key Records are not maintained in a single global
repository. Domains MAY operate their own DKAs, thereby limiting
centralized aggregation of identifier-to-key bindings.</t>
      <t>The DKA framework does not require submission, escrow, or storage of
private keys. DKAs store only public-key material and associated
metadata. Compromise of a DKA therefore does not, by itself, reveal
private keys.</t>
      <t>The framework avoids dependence on a separate revocation authority. A
registrant who controls the mailbox associated with an email-address
identifier can replace or delete a Public Key Record using the same
verification process as registration. This allows users to revoke or
rotate keys without relying on an external certificate or revocation
service.</t>
      <t>DKA operators will generally be able to observe lookup requests
and registration traffic, including queried identifiers, source
addresses, and timing information. Operators SHOULD minimize retention
of logs containing personal data, SHOULD protect such logs
appropriately, and SHOULD publish clear retention policies where
feasible.</t>
      <t>Applications using DKA-distributed keys should consider whether a lookup
may itself disclose user intent. For example, querying for a recipient's
key may reveal an intention to communicate securely with that recipient.
The lookup selector may reveal the purpose or application context of
such communication. Applications with stronger privacy requirements MAY
use additional measures such as query minimization, proxying, or
privacy-preserving access mechanisms.</t>
      <t>The framework supports self-service key recovery, provided the user
retains control of the associated mailbox.</t>
    </section>
    <section anchor="manageability-considerations">
      <name>Manageability Considerations</name>
      <t>DKA operators are responsible for maintaining reliable, secure, and
scalable key services. This section outlines operational considerations
for deploying and managing DKAs.</t>
      <section anchor="service-availability">
        <name>Service Availability</name>
        <t>DKA services SHOULD be operated with high availability. Operators SHOULD
deploy redundant infrastructure, load balancing, and monitoring to
ensure consistent responsiveness to lookup and registration requests.</t>
      </section>
      <section anchor="logging-and-monitoring">
        <name>Logging and Monitoring</name>
        <t>Operators SHOULD implement logging sufficient to diagnose operational
issues, detect abuse, and support security investigations. Logs SHOULD
avoid storing unnecessary personal data and SHOULD be protected
appropriately. Retention periods SHOULD be minimized.</t>
      </section>
      <section anchor="abuse-mitigation">
        <name>Abuse Mitigation</name>
        <t>DKAs SHOULD implement rate limiting, anomaly detection, and other abuse
controls to prevent enumeration attempts, denial-of-service attacks,
and malicious registration behavior.</t>
      </section>
      <section anchor="key-storage-integrity">
        <name>Key Storage Integrity</name>
        <t>Operators MUST ensure that stored Public Key Records are protected
against unauthorized modification. Storage systems SHOULD support
integrity verification, access control, and regular backups.</t>
      </section>
      <section anchor="dns-operations">
        <name>DNS Operations</name>
        <t>Domains publishing DKA Discovery Records SHOULD maintain DNSSEC signing
and monitoring. Operators SHOULD ensure timely updates to DKA hostnames
and SHOULD avoid stale or conflicting records.</t>
      </section>
      <section anchor="email-deliverability">
        <name>Email Deliverability</name>
        <t>The DKA operator SHOULD configure the domain's mail infrastructure
so that verification messages sent from <tt>register@&lt;dka-hostname&gt;</tt> 
to recipients under that domain are reliably accepted and are not 
rejected or filtered as spam.</t>
      </section>
      <section anchor="operational-transparency">
        <name>Operational Transparency</name>
        <t>Operators SHOULD publish documentation describing service behavior,
retention policies, rate limits, and operational practices.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="well-known-uri-registration">
        <name>Well-Known URI Registration</name>
        <t>This document requests registration of the following well-known URI
<xref target="RFC8615"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">URI suffix</td>
              <td align="left">dka</td>
            </tr>
            <tr>
              <td align="left">Change controller</td>
              <td align="left">IETF</td>
            </tr>
            <tr>
              <td align="left">Specification document</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">Status</td>
              <td align="left">permanent</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="verification-methods-registry">
        <name>Verification Methods Registry</name>
        <t>This document requests establishment of an IANA registry for DKA
verification method identifiers. The initial contents of the registry
are:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Identifier</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>mailbox-control</tt></td>
              <td align="left">Registrant demonstrated control of the mailbox for the submission email address</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>dkim-validation</tt></td>
              <td align="left">DKA-defined verification outcome for a registration reply that passes DKIM validation and that the domain in the <tt>From</tt> address matched the DKIM signing domain</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>New entries may be added through the Specification Required
<xref target="RFC8126"/> policy.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5321" target="https://www.rfc-editor.org/info/rfc5321" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5321.xml">
          <front>
            <title>Simple Mail Transfer Protocol</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document is a specification of the basic protocol for Internet electronic mail transport. It consolidates, updates, and clarifies several previous documents, making all or parts of most of them obsolete. It covers the SMTP extension mechanisms and best practices for the contemporary Internet, but does not provide details about particular extensions. Although SMTP was designed as a mail transport and delivery protocol, this specification also contains information that is important to its use as a "mail submission" protocol for "split-UA" (User Agent) mail reading systems and mobile environments. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5321"/>
          <seriesInfo name="DOI" value="10.17487/RFC5321"/>
        </reference>
        <reference anchor="RFC6376" target="https://www.rfc-editor.org/info/rfc6376" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6376.xml">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
              <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8552" target="https://www.rfc-editor.org/info/rfc8552" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Formally, any DNS Resource Record (RR) may occur under any domain name. However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies. The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name"). The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch. This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
        <reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8615.xml">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
          <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="RFC9460" target="https://www.rfc-editor.org/info/rfc9460" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9460.xml">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7671" target="https://www.rfc-editor.org/info/rfc7671" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7671.xml">
          <front>
            <title>The DNS-Based Authentication of Named Entities (DANE) Protocol: Updates and Operational Guidance</title>
            <author fullname="V. Dukhovni" initials="V." surname="Dukhovni"/>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document clarifies and updates the DNS-Based Authentication of Named Entities (DANE) TLSA specification (RFC 6698), based on subsequent implementation experience. It also contains guidance for implementers, operators, and protocol developers who want to use DANE records.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7671"/>
          <seriesInfo name="DOI" value="10.17487/RFC7671"/>
        </reference>
        <reference anchor="RFC7929" target="https://www.rfc-editor.org/info/rfc7929" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7929.xml">
          <front>
            <title>DNS-Based Authentication of Named Entities (DANE) Bindings for OpenPGP</title>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>OpenPGP is a message format for email (and file) encryption that lacks a standardized lookup mechanism to securely obtain OpenPGP public keys. DNS-Based Authentication of Named Entities (DANE) is a method for publishing public keys in DNS. This document specifies a DANE method for publishing and locating OpenPGP public keys in DNS for a specific email address using a new OPENPGPKEY DNS resource record. Security is provided via Secure DNS, however the OPENPGPKEY record is not a replacement for verification of authenticity via the "web of trust" or manual verification. The OPENPGPKEY record can be used to encrypt an email that would otherwise have to be sent unencrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7929"/>
          <seriesInfo name="DOI" value="10.17487/RFC7929"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <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="RFC8551" target="https://www.rfc-editor.org/info/rfc8551" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml">
          <front>
            <title>Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Message Specification</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="B. Ramsdell" initials="B." surname="Ramsdell"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document defines Secure/Multipurpose Internet Mail Extensions (S/MIME) version 4.0. S/MIME provides a consistent way to send and receive secure MIME data. Digital signatures provide authentication, message integrity, and non-repudiation with proof of origin. Encryption provides data confidentiality. Compression can be used to reduce data size. This document obsoletes RFC 5751.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8551"/>
          <seriesInfo name="DOI" value="10.17487/RFC8551"/>
        </reference>
        <reference anchor="RFC9580" target="https://www.rfc-editor.org/info/rfc9580" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9580.xml">
          <front>
            <title>OpenPGP</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="D. Huigens" initials="D." surname="Huigens"/>
            <author fullname="J. Winter" initials="J." surname="Winter"/>
            <author fullname="Y. Niibe" initials="Y." surname="Niibe"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>This document specifies the message formats used in OpenPGP. OpenPGP provides encryption with public key or symmetric cryptographic algorithms, digital signatures, compression, and key management.</t>
              <t>This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format. It is not a step-by-step cookbook for writing an application. It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network. It does not deal with storage and implementation questions. It does, however, discuss implementation issues necessary to avoid security flaws.</t>
              <t>This document obsoletes RFCs 4880 ("OpenPGP Message Format"), 5581 ("The Camellia Cipher in OpenPGP"), and 6637 ("Elliptic Curve Cryptography (ECC) in OpenPGP").</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9580"/>
          <seriesInfo name="DOI" value="10.17487/RFC9580"/>
        </reference>
        <reference anchor="RFC8484" target="https://www.rfc-editor.org/info/rfc8484" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8484.xml">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8484"/>
          <seriesInfo name="DOI" value="10.17487/RFC8484"/>
        </reference>
        <reference anchor="I-D.koch-openpgp-webkey-service">
          <front>
            <title>OpenPGP Web Key Directory</title>
            <author initials="W." surname="Koch" fullname="Werner Koch">
              <organization/>
            </author>
            <date year="2024" month="March"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-koch-openpgp-webkey-service-21"/>
        </reference>
      </references>
    </references>
    <?line 1338?>

<section anchor="changes-from-previous-version">
      <name>Changes from Previous Version</name>
      <t>Difference from version 00 and 01: The major difference between version 
00 and 01 is that the latter drops the Fallback DKA aimed at helping 
the bootstrapping of the framework entirely. The selector syntax, ABNF, 
and other details have been tightened, and the text has been edited 
for clarity.</t>
      <t>Difference from version 01 and 02: The major difference between version
01 and 02 is that the latter renames DKA Locator Record as DKA Discovery
Record and defines an HTTPS DKA Discovery Record in addition to the TXT
form. The TXT form is now expressed as a tag-value record using the
<tt>dka=</tt> tag, and the client discovery procedure requires all valid DKA
Discovery Records present at <tt>_dka.&lt;domain&gt;</tt> to designate the same DKA
hostname. Mismatches between DKA Discovery Records are treated as a
configuration error.</t>
    </section>
    <section anchor="complete-example">
      <name>Complete Example</name>
      <t>This appendix illustrates the full DKA discovery, registration, and
lookup flow using a working deployment.</t>
      <section anchor="dns-discovery">
        <name>DNS Discovery</name>
        <t>A Requesting Client seeks the public key for <tt>alice@example.com</tt>. It
queries DNS for HTTPS and TXT records at <tt>_dka.example.com</tt> and obtains:</t>
        <artwork><![CDATA[
_dka.example.com.  IN  HTTPS  1  dka.example.com.  alpn=h2,h3
_dka.example.com.  IN  TXT  "dka=dka.example.com"
]]></artwork>
        <t>The client parses the TXT record, extracts the hostname from the <tt>dka=</tt>
tag, and confirms that the TXT and HTTPS records designate the same DKA
hostname. The client then uses the HTTPS record as the preferred DKA
Discovery Record for connection establishment.</t>
      </section>
      <section anchor="key-registration-1">
        <name>Key Registration</name>
        <t>Alice registers a public key with her domain's DKA:</t>
        <ol spacing="normal" type="1"><li>
            <t>Alice sends an email from <tt>alice@example.com</tt> to
<tt>register@dka.example.com</tt>.</t>
          </li>
          <li>
            <t>The DKA responds with a verification email:  </t>
            <artwork><![CDATA[
Subject: DKA: Your Verification Token

Your DKA verification token:

  XGsQ2qfjXyJy8y6IVsKAUZQgmlaIL0G6fTbhK8KN

This token expires in 600 seconds.

To register a public key, reply with:
  Subject: register
  Body (JSON): {"token": "<token>", "public_key": "<base64>",
                "selector": "<optional>", "metadata": {}}
]]></artwork>
          </li>
          <li>
            <t>Alice replies from <tt>alice@example.com</tt> with:  </t>
            <artwork><![CDATA[
Subject: register
Body:
{
  "token": "XGsQ2qfjXyJy8y6IVsKAUZQgmlaIL0G6fTbhK8KN",
  "public_key": "LS0tLS1CRUdJTi...",
  "selector": "default",
  "metadata": {
    "algorithm": "RSA",
    "format": "base64-PEM",
    "expires": "2027-01-31T00:00:00Z"
  }
}
]]></artwork>
          </li>
          <li>
            <t>The DKA verifies mailbox control and applies the checks associated
with <tt>dkim-validation</tt>, then stores the key.</t>
          </li>
        </ol>
      </section>
      <section anchor="key-lookup-domain-dka">
        <name>Key Lookup --- Domain DKA</name>
        <t>The Requesting Client sends a lookup request:</t>
        <sourcecode type="http"><![CDATA[
GET https://dka.example.com/.well-known/dka/lookup
    ?email_address=alice%40example.com&selector=default
]]></sourcecode>
        <t>The DKA returns:</t>
        <sourcecode type="json"><![CDATA[
{
  "email_address": "alice@example.com",
  "selector": "default",
  "public_key": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t...",
  "verification_methods": ["mailbox-control", "dkim-validation"],
  "metadata": {
    "algorithm": "RSA",
    "format": "base64-PEM",
    "expires": "2027-01-31T00:00:00Z"
  },
  "version": 1,
  "updated_at": "2026-03-31T22:31:20+00:00"
}
]]></sourcecode>
        <t>Because the domain DKA returned a matching record, the lookup is complete.</t>
      </section>
    </section>
    <section anchor="reference-implementation">
      <name>Reference Implementation</name>
      <t>An open-source reference implementation of the DKA framework is
available. The implementation serves as the DKA for any domain once a 
configuration variable is set to that domain and the domain's DNS record 
is configured as described in Section 5.</t>
    </section>
    <section anchor="working-demonstration">
      <name>Working Demonstration</name>
      <t>A working demonstration of the DKA framework, illustrating key
registration and key lookup is available at:</t>
      <ul spacing="normal">
        <li>
          <t><tt>https://keyzero.org</tt></t>
        </li>
      </ul>
      <section anchor="appendix-example-selector-conventions-for-early-deployment-informational">
        <name>Appendix: Example Selector Conventions for Early Deployment (Informational)</name>
        <t>This appendix provides non-normative examples that early adopters MAY
find useful. It does not create a registry, does not define
interoperability requirements, and does not constrain future
specifications or application-specific selector conventions.</t>
        <t>Applications MAY use selector values such as the following as local
conventions:</t>
        <ul spacing="normal">
          <li>
            <t><tt>default</tt> -- General-purpose key for the identifier</t>
          </li>
          <li>
            <t><tt>encrypt</tt> -- Key intended for confidential message encryption</t>
          </li>
          <li>
            <t><tt>auth</tt> -- Key intended for authentication or challenge-response</t>
          </li>
          <li>
            <t><tt>sign</tt> -- Key intended for document or message signing</t>
          </li>
        </ul>
        <t>These values are examples only. Applications are free to define
additional or alternative selectors.</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
XVbzYuHTkHBw4DErJCpC5eLTEu2c7vNmvmFvnoThwN0DsssJMCbIYtoLuAoh
ypxKbvOrp4dDQlGxJP2HpbtEfFSBShYmdVrq3A7AzdJxJxDKVC6mi0efiO4+
3ZTEWvKaucGiWp2NUYxjrp3+4kF6SdfEkuviovJAtzogQhCSq+0khIYr+YJO
T7LvxYeOrkmjtC+XiktYRiSQKL2jPdcizFuzhXlwgV1pMI763DiWmiO2gdE3
WtmB+yQLkFGvjLPMmgw+wdl2tgCLWuVS/0zL43dOa+TSJLrI49mVtJOezXwa
Z9istrYYrtTwUayR1hIV3Y4TT7QB8c68E+10J8jlTvML6Cl1vi7nvF4vI3Iu
25m6eHG6aVJoigQq51hhGEnWtbhy9VibX+eZBzhTeSI3s/NKPKUDXEhuDXGs
JdLJ9cYq09upCADlwhiDHFVzXaTR8kjjfCRlVBpbInCkbfPZG/M1CxBJHehQ
AQFnXTZvJGf5XG4xZyLSuWzpraVQRBQ81OBjoURpJo8Yv9Cw+sya8dFyK8R/
xIt1nj6s2UY5S1sLcrXR8WkuqZSJaGHdLLp47ROeQgBet0Jeiu0uwfYyIqzX
R+2dUdhSekDy/WgY+i/IM2IDC7jtItyOpBo9E3HblxzgZm57TqAmhEN9aIud
Uxom5FZblSt+I/gvrXpkaExbLjlOyy21KaXFl+xGy4hKHoTESoJ/hJssS6OO
AGL1u3ND1/FpcRpkUQzWA0AojHUYi2hBdBCxFAgZYYpQr0VFVNvVVSs10y/z
LWtn4TL1ma+6bpnNXkUkRN5Bmr6wAidGihT5pKoCYz3KVHpSgY6Fdc48mY1b
0kocXtKo5poWwuohuNKjV8CnMf33KuATEDkQpJfrYNnwT0fYd+NV9epmemtT
ozTs9DCVcRVK4MaAVSrriwFMNzyWLraBX5L+oe0KjavhuOaxqMGgkEvD8ku3
wakUReWnwNcIO0g0llhH2o7SPDs/g11bkRJ9K665wWWotJ5VKIgRUuRD5qP1
O6X3rcCMlmQAf+2iyDmKCay4smoU7ETUE1E1LvMNYzFcKHnKl4Az9VvNlpak
UnD2SFNDbYMZM2d6e10xiBnAdmczO1ppe3lqzSmlBmha/STjWqnNef6m0PJ6
TZHKl1pyoFRRMjmmTiNJ9Of10UaDR0ZUncG/DJTFY8yn/U61oaVVLLzHHWyV
+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
Rx5MLHbBbnvGupDU4P4vzv2oCG7qAAA=

-->

</rfc>
