<?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-01" 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-01"/>
    <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="17"/>
    <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 a DKA
Locator Record designating a DKA as authoritative for public keys
associated with email-address identifiers under that domain.</t>
        </li>
        <li>
          <t><strong>DKA Locator Record:</strong> A DNS TXT record at a well-known subdomain
by which a designating domain designates its DKA.</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          |
  |  v=DKA1;dka=...      v=DKA1;dka=...     v=DKA1;dka=...          |
  |       |                   |               |                     |
  +-------|-------------------|---------------|---------------------+
          |  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 queries DNS for a DKA Locator Record for the identifier's 
domain.</t>
          </li>
          <li>
            <t>If a DKA Locator Record is found, the client queries the DKA. If the 
domain DKA returns a matching Public Key Record, the lookup
is complete.</t>
          </li>
          <li>
            <t>If no matching record is found at the domain DKA, or if no DKA
 Locator Record exists for the domain, the lookup result is not
 found.</t>
          </li>
        </ul>
        <t>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-locator-record">
        <name>DKA Locator Record</name>
        <t>A domain designates its DKA by publishing a TXT record at the DNS name
formed by prepending <tt>"_dka."</tt> to the domain. The record format follows
the tag-value syntax used by DMARC <xref target="RFC7489"/> and DKIM <xref target="RFC6376"/>:</t>
        <artwork><![CDATA[
_dka.example.com.  IN  TXT  "v=DKA1;dka=dka.example.com"
]]></artwork>
        <t>The record contains the following tags:</t>
        <ul spacing="normal">
          <li>
            <t><strong><tt>v=DKA1</tt></strong> (REQUIRED): Version tag identifying this as a DKA
designation record and indicating protocol version DKA1.</t>
          </li>
          <li>
            <t><strong><tt>dka=</tt></strong> (REQUIRED): Hostname of the DKA service.</t>
          </li>
        </ul>
        <t>The record format is defined by the following ABNF <xref target="RFC5234"/>:</t>
        <figure anchor="fig-abnf-dka">
          <name>ABNF for DKA Locator Record</name>
          <sourcecode type="abnf"><![CDATA[
  dka-record   = version-tag *WSP ";" *WSP dka-tag *(*WSP ";" *WSP 
                  future-tag) 
  version-tag  = %s"v=DKA1"
  dka-tag      = %s"dka=" dka-hostname
  dka-hostname = sub-domain *("." sub-domain)
  sub-domain   = Let-dig [Ldh-str]
  Let-dig      = ALPHA / DIGIT
  Ldh-str      = *(ALPHA / DIGIT / "-") Let-dig
  future-tag   = tag-name "=" tag-value
  tag-name     = ALPHA *(ALPHA / DIGIT / "-")
  tag-value    = *(%x21-3A / %x3C-7E)
                  ; printable ASCII excluding ";"
]]></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>A domain MUST NOT publish more than one valid DKA Locator Record at the
same <tt>_dka</tt> subdomain. If multiple TXT records exist at that name, a
client MUST ignore records that do not contain a syntactically valid
<tt>v=DKA1</tt> tag. If more than one valid DKA Locator Record remains, the
client MUST treat the condition as a configuration error.</t>
        <t>Clients MUST ignore unrecognized tags in the DKA Locator Record. This
permits future versions to introduce additional tags without breaking
existing clients.</t>
      </section>
      <section anchor="dka-service-endpoint">
        <name>DKA Service Endpoint</name>
        <t>The DKA service identified by the DKA Locator Record 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 
designated 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 Locator 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 Locator 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@example.com</tt>, a Requesting
Client:</t>
        <ol spacing="normal" type="1"><li>
            <t>Extracts the domain portion: <tt>example.com</tt>.</t>
          </li>
          <li>
            <t>Queries DNS for TXT records at <tt>_dka.example.com</tt>.</t>
          </li>
          <li>
            <t>Parses the response for a record containing <tt>v=DKA1</tt>.</t>
          </li>
          <li>
            <t>Extracts the DKA hostname from the <tt>dka=</tt> tag.</t>
          </li>
          <li>
            <t>Constructs the DKA lookup URI as
<tt>https://&lt;dka-hostname&gt;/.well-known/dka/lookup</tt>.</t>
          </li>
        </ol>
      </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 <tt>dka=</tt> tag of
the DKA Locator 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 version DKA1, 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 extracts the domain portion of the identifier.</t>
          </li>
          <li>
            <t>The client queries DNS for a DKA Locator Record at <tt>_dka.&lt;domain&gt;</tt>.</t>
          </li>
          <li>
            <t>If no DKA Locator Record is 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 a DKA Locator Record is found, the client obtains the DKA
hostname.</t>
          </li>
          <li>
            <t>The client constructs the lookup URL and sends a Key Lookup Request
to the DKA, specifying the email-address identifier and optionally a
selector.</t>
          </li>
          <li>
            <t>If the domain DKA returns a matching Public Key Record, the lookup
is complete with the matching Public Key Record as the result of
the lookup.</t>
          </li>
          <li>
            <t>If the domain DKA returns a 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 domain DKA returns a non-404 error (such as HTTP 500, 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 (identifier, selector) pair,
a conforming client always obtains the same result regardless of
implementation.</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>
      </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 Locator 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.</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 Locator 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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7489" target="https://www.rfc-editor.org/info/rfc7489" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7489.xml">
          <front>
            <title>Domain-based Message Authentication, Reporting, and Conformance (DMARC)</title>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <author fullname="E. Zwicky" initials="E." role="editor" surname="Zwicky"/>
            <date month="March" year="2015"/>
            <abstract>
              <t>Domain-based Message Authentication, Reporting, and Conformance (DMARC) is a scalable mechanism by which a mail-originating organization can express domain-level policies and preferences for message validation, disposition, and reporting, that a mail-receiving organization can use to improve mail handling.</t>
              <t>Originators of Internet Mail need to be able to associate reliable and authenticated domain identifiers with messages, communicate policies about messages that use those identifiers, and report about mail using those identifiers. These abilities have several benefits: Receivers can provide feedback to Domain Owners about the use of their domains; this feedback can provide valuable insight about the management of internal operations and the presence of external domain name abuse.</t>
              <t>DMARC does not produce or encourage elevated delivery privilege of authenticated email. DMARC is a mechanism for policy distribution that enables increasingly strict handling of messages that fail authentication checks, ranging from no action, through altered delivery, up to message rejection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7489"/>
          <seriesInfo name="DOI" value="10.17487/RFC7489"/>
        </reference>
        <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 1250?>

<section anchor="changes-from-previous-version">
      <name>Changes from Previous Version</name>
      <t>The major difference between this version (draft-swaminathan-dka-framework-01) and the previous version (draft-swaminathan-dka-framework-00) is that this version 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>
    </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:</t>
        <artwork><![CDATA[
_dka.example.com.  IN  TXT  "v=DKA1;dka=dka.example.com"
]]></artwork>
        <t>The client parses the record and determines that the DKA for
<tt>example.com</tt> is located at <tt>dka.example.com</tt>.</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://demourl.us/dka</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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
OB9/5OXBYkt2bTLWhShf838BbVVHnYXYAAA=

-->

</rfc>
