<?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.26 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-narea-domainauth-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="DomainAuthV1">DomainAuth Version 1</title>
    <seriesInfo name="Internet-Draft" value="draft-narea-domainauth-00"/>
    <author fullname="Gus Narea">
      <organization>Relaycorp</organization>
      <address>
        <email>gus@relaycorp.tech</email>
      </address>
    </author>
    <date year="2025" month="April" day="01"/>
    <area>sec</area>
    <keyword>dnssec</keyword>
    <keyword>x509</keyword>
    <keyword>cms</keyword>
    <keyword>authentication</keyword>
    <abstract>
      <?line 89?>

<t>This document defines DomainAuth, a protocol to attribute digital signatures to domain names in such a way that verification can occur entirely offline without a prior distribution of public keys.</t>
      <t>Each signature is distributed as part of a self-contained "signature bundle" that encapsulates a complete chain of trust comprising: (1) a DNSSEC chain from the root zone to a TXT record containing a public key or its digest, (2) an X.509 certificate chain from the key specified in the TXT record to the final signing key, and (3) the digital signature in the form of a CMS SignedData structure.</t>
      <t>Finally, signatures can be attributed to the domain name itself (e.g. "example.com") or specific users (e.g. "alice" of "example.com").</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://docs.veraid.net/domainauth-spec/draft-narea-domainauth.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-narea-domainauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/CheVeraId/domainauth-spec"/>.</t>
    </note>
  </front>
  <middle>
    <?line 98?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Public Key Infrastructures typically require continuous Internet connectivity for certificate validation or prior distribution of public keys, creating significant limitations for offline or intermittently connected environments.  This document addresses the challenge of securely attributing content to domain names in scenarios where verification must occur entirely offline, without reliance on real-time certificate status checking or pre-distributed trust anchors.</t>
      <t>DomainAuth solves this verification challenge by creating self-contained "signature bundles" that encapsulate the complete trust chain required for validation.  Each bundle comprises three cryptographically linked components: a DNSSEC chain extending from the DNS root to a domain's TXT record containing key material, an X.509 certificate chain from the domain to the signing entity, and a CMS SignedData structure containing the digital signature.  This architecture leverages established standards whilst eliminating the need for continuous connectivity or prior trust establishment.</t>
      <t>This specification defines the protocol components, data structures, and verification procedures that constitute the DomainAuth protocol.  It covers the DNS integration mechanism, cryptographic requirements, certificate management practices, and signature verification processes.</t>
      <section anchor="problem-statement">
        <name>Problem Statement</name>
        <t>The protocol was initially designed and implemented to provide users of the offline messaging application Letro <xref target="LETRO"/> with identifiers that are customisable, user friendly, universally unique, and verifiable.</t>
        <t>Letro is powered by the delay-tolerant network Awala <xref target="AWALA"/>, which offers an end-to-end encrypted sneakernet to transport data between a region disconnected from the Internet and a location with access to the Internet.  In the most extreme cases, this physical transport may take several weeks, during which users should be able to produce and verify digital signatures without relying on online services.</t>
        <t>Attacks by powerful adversaries, such as nation-state actors, are part of the threat model, given that Awala and Letro explicitly target people disconnected from the Internet due to conflict or government-sponsored censorship.</t>
        <t>Despite its origin in delay-tolerant networking, DomainAuth has broader applicability and can be useful when the Internet is available, such as the following use cases:</t>
        <ul spacing="normal">
          <li>
            <t>Client authentication.  A client could prove its identity to a server by sending a short-lived token signed with DomainAuth; this would be analogous to using a JSON Web Token <xref target="JWT"/>, except that it can be verified without a prior distribution of public keys or remote operations.  Alternatively, the client could sign each message sent to the server.</t>
          </li>
          <li>
            <t>Artefact signing.  Documents, applications, libraries, and other files could be signed on behalf of a domain name, without vendor-specific gatekeeping mechanisms.  This could unlock further use cases, such as enabling users to share original content whilst proving authenticity and integrity, instead of sharing URLs to resources that could be blocked at the network level.</t>
          </li>
          <li>
            <t>Peer-to-peer web hosting.  A next-generation of websites could be hosted on a peer-to-peer network, with files reliably attributed to their respective domain names.</t>
          </li>
        </ul>
        <t>The present document is meant to provide the foundation for all the use cases above in a generic manner.</t>
      </section>
      <section anchor="design-goals">
        <name>Design Goals</name>
        <t>DomainAuth is designed with the following primary goals:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Offline verification:</strong> All signature bundles contain sufficient information to be independently verified without requiring external network queries.</t>
          </li>
          <li>
            <t><strong>Decentralisation:</strong> The protocol avoids the need for centralised authorities beyond the DNS hierarchy itself.  Each domain owner has exclusive control over their domain and its associated members.</t>
          </li>
          <li>
            <t><strong>User-friendly identifiers:</strong> Identities are based on familiar, human-readable domain names and user names rather than cryptographically-derived values.</t>
          </li>
          <li>
            <t><strong>Build upon well-established standards:</strong> DNSSEC for securing DNS responses, X.509 for certificate management, and CMS for digital signatures.</t>
          </li>
          <li>
            <t><strong>Minimal trust assumptions:</strong> The protocol reduces trust dependencies by leveraging DNSSEC, limiting potential credential issuance attacks to DNS hierarchy operators (primarily IANA and TLD operators).</t>
          </li>
          <li>
            <t><strong>Contextual binding:</strong> Signatures are bound to specific "services", preventing their unauthorised use across different contexts.</t>
          </li>
        </ol>
      </section>
      <section anchor="conventions-and-terminology">
        <name>Conventions and Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
        <?line -18?>

<t>The following terms are used:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Organisation:</strong> A domain name that participates in the DomainAuth protocol by configuring DNSSEC and publishing the necessary DomainAuth TXT record(s).</t>
          </li>
          <li>
            <t><strong>Member:</strong> An entity that produces signatures on behalf of an organisation. Members are either:
            </t>
            <ul spacing="normal">
              <li>
                <t><strong>Users:</strong> Identified by a unique user name within an organisation.</t>
              </li>
              <li>
                <t><strong>Bots:</strong> Acting on behalf of the organisation as a whole.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>DomainAuth TXT Record:</strong> A DNS TXT record at <tt>_domainauth.&lt;domain&gt;</tt> that contains the organisation's public key information.</t>
          </li>
          <li>
            <t><strong>Organisation Certificate:</strong> An X.509 certificate owned by an organisation that serves as the root of trust for all signatures produced on behalf of that organisation.</t>
          </li>
          <li>
            <t><strong>Member Certificate:</strong> An X.509 certificate issued by the organisation certificate to a member.</t>
          </li>
          <li>
            <t><strong>Member Id Bundle:</strong> A data structure containing a member certificate, its issuing organisation certificate, and the DNSSEC chain proving the authenticity of the organisation's DomainAuth TXT record.</t>
          </li>
          <li>
            <t><strong>Signature Bundle:</strong> A data structure containing a digital signature and chain of trust that enables offline verification.  There are two types of signature bundles:
            </t>
            <ul spacing="normal">
              <li>
                <t><strong>Member Signature Bundle:</strong> A signature bundle containing a signature produced by a member using their private key.</t>
              </li>
              <li>
                <t><strong>Organisation Signature Bundle:</strong> A signature bundle containing a signature produced directly by an organisation using its private key, with a required member attribution that assigns authorship of the content to a specific member.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>DNSSEC Chain:</strong> A sequence of DNS responses that allows a verifier to cryptographically validate the authenticity of a DNS record.</t>
          </li>
          <li>
            <t><strong>Service:</strong> A protocol or system that employs DomainAuth signatures for a specific use case.  Each service defines the context in which a signature is valid, and its own rules for signature creation and verification.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <section anchor="architecture">
        <name>Architecture</name>
        <t>DomainAuth is built on three foundational layers:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>DNS and DNSSEC Layer:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Provides the domain name hierarchy and DNSSEC-based verification of domain ownership.</t>
              </li>
              <li>
                <t>The DNSSEC chain connects the DNS root of trust to the organisation's domain, enabling offline validation without prior key distribution.</t>
              </li>
              <li>
                <t>The DomainAuth TXT record bridges DNSSEC and PKI by publishing the organisation's public key information in a standardised, discoverable way.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>PKI Layer:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Establishes a per-organisation PKI where each organisation issues certificates to its members.</t>
              </li>
              <li>
                <t>The Organisation certificate functions as the domain-specific trust anchor that binds the organisation's public key to its domain name.</t>
              </li>
              <li>
                <t>Member certificates extend the organisation's trust to specific members, containing identity information that enables them to produce signatures.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Signature Layer:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Enables members to produce digital signatures on behalf of their organisation.</t>
              </li>
              <li>
                <t>Signature bundles package digital signatures with all verification material, enabling offline validation.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>These layers interact differently depending on the signature type:</t>
        <ul spacing="normal">
          <li>
            <t>In <strong>member signatures</strong>, the chain of trust flows from the DNSSEC chain to the organisation certificate, then to the member certificate, and finally to the signature, providing end-to-end cryptographic proof of authorship.</t>
          </li>
          <li>
            <t>In <strong>organisation signatures</strong>, the chain of trust flows from the DNSSEC chain directly to the organisation certificate and then to the signature, with member attribution provided as a claim rather than a cryptographic proof.</t>
          </li>
        </ul>
        <t>Furthermore, Member Id Bundles are a key architectural component that packages the complete chain of trust (DNSSEC chain, organisation certificate, and member certificate) into a single message, enabling members to produce verifiable signatures offline.</t>
      </section>
      <section anchor="workflow-summary">
        <name>Workflow Summary</name>
        <t>The DomainAuth protocol involves the following key workflows:</t>
        <section anchor="organisation-setup">
          <name>Organisation Setup</name>
          <t>First, the organisation must have DNSSEC properly configured for its domain.</t>
          <t>Then, the organisation must generate an asymmetric key pair and publish its public key information in a DomainAuth TXT record at <tt>_domainauth.&lt;domain&gt;</tt> as described in <xref target="txt-record"/>.</t>
          <t>Multiple such records are allowed, which can be useful for key rotation or binding different keys to different services.</t>
        </section>
        <section anchor="certificate-issuance">
          <name>Certificate Issuance</name>
          <t>The organisation must obtain an X.509 certificate for its public key, or reuse an existing certificate valid during the intended validity period.</t>
          <t>When issuing a member certificate, the organisation must distribute it along with the organisation certificate.  This can be done with a Member Id Bundle as specified in <xref target="member-id-bundle"/>, which is desirable in services meant to be used offline as it also contains the DNSSEC chain.</t>
        </section>
        <section anchor="signature-bundle-production">
          <name>Signature Bundle Production</name>
          <t>A member would produce a signature bundle as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Use their private key to produce a CMS SignedData structure, encapsulating the member's certificate.</t>
            </li>
            <li>
              <t>Obtain the DNSSEC chain from the DomainAuth TXT record. This chain could be provided by the organisation (e.g. in the form of a Member Id Bundle), retrieved from a cache, or resolved from DNS if online.</t>
            </li>
            <li>
              <t>Construct a signature bundle with the CMS SignedData structure, the organisation certificate, and the DNSSEC chain.</t>
            </li>
          </ol>
          <t>Similarly, an organisation would produce a signature bundle as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Use its private key to produce a CMS SignedData structure, without encapsulating the organisation's certificate.</t>
            </li>
            <li>
              <t>Obtain the DNSSEC chain from the DomainAuth TXT record, either from a cache or by resolving it from DNS if online.</t>
            </li>
            <li>
              <t>Construct a signature bundle with the CMS SignedData structure, the organisation certificate, and the DNSSEC chain.</t>
            </li>
          </ol>
          <t>In both cases, the signer can choose to encapsulate the plaintext in the CMS SignedData structure or distribute it separately.</t>
        </section>
        <section anchor="signature-bundle-verification">
          <name>Signature Bundle Verification</name>
          <t>The verification process involves validating the entire chain of trust as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Verify the DNSSEC chain.</t>
            </li>
            <li>
              <t>Verify the organisation certificate using the public key from the TXT record.</t>
            </li>
            <li>
              <t>Determine the certificate of the signer of the CMS SignedData structure.  If it is an organisation signature, use the organisation certificate.  Otherwise, use the certificate of the member, which is encapsulated in the CMS SignedData structure.</t>
            </li>
            <li>
              <t>Verify the CMS SignedData structure against the certificate of the signer.</t>
            </li>
            <li>
              <t>Verify that the signature is valid for the intended service and time period.</t>
            </li>
          </ol>
          <t>Alternatively, the verifier can start with the digital signature, then verify the organisation certificate and finally the DNSSEC chain.</t>
          <t>For more detailed information on the verification process, particularly regarding validity periods, see <xref target="verification-procedure"/>.</t>
        </section>
      </section>
      <section anchor="trust-model">
        <name>Trust Model</name>
        <t>DomainAuth's trust model is anchored in DNSSEC and offers key distinctions from traditional PKIs:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Domain-specific trust roots:</strong> Each organisation can only issue certificates for itself and its members, enforcing a strict hierarchy where domain control is the only path to certificate issuance.</t>
          </li>
          <li>
            <t><strong>Self-contained verification:</strong> The inclusion of complete DNSSEC chains and certificates in signature bundles enables fully offline verification without prior key distribution.</t>
          </li>
          <li>
            <t><strong>Credential lifecycle:</strong> DomainAuth favours short-lived credentials over revocation mechanisms, reducing complexity for disconnected operation.</t>
          </li>
          <li>
            <t><strong>Trust inheritance:</strong> By relying on DNSSEC, DomainAuth inherits both its security properties and limitations, with trust ultimately rooted in the DNS hierarchy, including the root zone and TLD operators.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="dns-integration">
      <name>DNS Integration</name>
      <t>This document makes no distinction between different types of DNS zones, with the exception of the root zone which <bcp14>MUST NOT</bcp14> participate in DomainAuth.  The root zone exclusion avoids representation challenges in user interfaces (where it would appear as a dot or empty string) and eliminates the need for implementations to handle this special case.</t>
      <t>TLDs, apex domains, and subdomains are all treated equivalently.  Any domain at any level in the DNS hierarchy, except the root zone, <bcp14>MAY</bcp14> implement DomainAuth.  Each participating domain operates entirely independently from its parent zones, with no hierarchical relationship or inherited trust.</t>
      <t>Throughout this document, the terms "domain" and "domain name" refer to any such zone without regard to its hierarchical position.</t>
      <section anchor="dnssec-configuration">
        <name>DNSSEC Configuration</name>
        <t>Participating domains <bcp14>MUST</bcp14> have a complete DNSSEC chain of trust from the root zone to the DomainAuth TXT record.</t>
        <t>Newly registered domains <bcp14>SHOULD</bcp14> wait at least the maximum validity period in <xref target="maximum-validity-period"/> before enabling DomainAuth to prevent potential attacks using DNSSEC chains from previous domain owners.</t>
      </section>
      <section anchor="txt-record">
        <name>TXT Record</name>
        <t>Each organisation participating in the DomainAuth protocol <bcp14>MUST</bcp14> publish a TXT record at <tt>_domainauth.&lt;domain&gt;</tt> with the following fields separated by simple spaces:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Version</strong> (required): A positive integer denoting the version of the DomainAuth TXT record format, set to <tt>0</tt> (zero) for this version of the specification.</t>
          </li>
          <li>
            <t><strong>Key Algorithm</strong> (required): A positive integer denoting the key algorithm as registered in the "DomainAuth Signature Algorithm Registry" (<xref target="domainauth-signature-algorithm-registry"/>).  See also <xref target="digital-signature-algorithms"/>.</t>
          </li>
          <li>
            <t><strong>Key Digest Type</strong> (required): A positive integer denoting the key digest type used to identify the key, as registered in the "DomainAuth Key Digest Type Registry" (<xref target="domainauth-key-digest-type-registry"/>).</t>
          </li>
          <li>
            <t><strong>Key Id</strong> (required): The representation of the key identifier.  For example, per <xref target="digital-signature-algorithms"/>, for an RSA key, this is the Base64-encoded digest of the public key.</t>
          </li>
          <li>
            <t><strong>TTL Override</strong> (required): A positive integer representing the number of seconds for the maximum validity period of signatures.  This value <bcp14>MUST</bcp14> be at least 1 second and not exceed the limit specified in <xref target="maximum-validity-period"/>. Refer to <xref target="ttl-override"/> for more details.</t>
          </li>
          <li>
            <t><strong>Service OID</strong> (optional): An Object Identifier (in dotted decimal notation) binding the key to a specific service.  If omitted, the key is valid for any service.</t>
          </li>
        </ol>
        <t>For example, the following TXT record specifies an RSA-2048 key identified by its SHA-512 digest with a TTL override of 24 hours (86,400 seconds) and no service binding:</t>
        <artwork><![CDATA[
_domainauth.example.com. IN TXT "0 1 3 dGhpcyBpcyBub3QgYSByZWFsIGtleSBkaWdlc3Q 86400"
]]></artwork>
        <t>Multiple TXT records <bcp14>MAY</bcp14> be published at the same zone to support different keys, key algorithms, or services.</t>
      </section>
      <section anchor="ttl-override">
        <name>TTL Override</name>
        <t>The TTL override field in the DomainAuth TXT record enables verification of DNS records and DNSSEC signatures for longer periods than their respective specifications would allow, which is essential for delay-tolerant use cases where users may be offline for extended periods.</t>
        <t>DNS records and DNSSEC signatures typically have TTL values that may be as short as a few minutes or hours.  The TTL override mechanism allows the DNSSEC chain to remain verifiable for a significantly longer period, regardless of the TTL in such records.  Refer to <xref target="maximum-validity-period"/> for the maximum validity period.</t>
        <t>During verification, the TTL override creates a restricted time window that extends backwards from the end of the requested verification period by the specified number of seconds.  Verification will succeed if the DNSSEC signatures (RRSIGs) were valid at any point during this window, even if they would have expired according to their original validity periods.</t>
        <t>For example, if a DNSSEC signature has a standard validity period of 3600 seconds (1 hour) but the DomainAuth TXT record specifies a TTL override of 604,800 seconds (7 days), a signature bundle can still be verified up to 7 days after creation, even when offline.  If a verifier attempts to verify a signature bundle 5 days after it was created, the verification would succeed with the TTL override, whereas it would fail with only the 1-hour DNSSEC signature validity period.</t>
      </section>
      <section anchor="dnssec-chain-serialisation">
        <name>DNSSEC Chain Serialisation</name>
        <t>The serialised chain <bcp14>MUST</bcp14> be encoded as the ASN.1 <tt>DnssecChain</tt> structure below, where each <tt>OCTET STRING</tt> contains a complete DNS message as detailed in <xref target="DNS"/>:</t>
        <artwork><![CDATA[
DnssecChain ::= SET OF OCTET STRING
]]></artwork>
        <t>This chain <bcp14>MUST</bcp14> include all DNSSEC responses necessary to validate the <tt>_domainauth.&lt;domain&gt;/TXT</tt> record from the trust anchor.  However, the root zone DS records <bcp14>SHOULD</bcp14> be omitted, since they will be ignored by verifiers as described in <xref target="verification-procedure"/>.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> optimise the serialisation to minimise redundancy and size whilst ensuring completeness for offline verification.</t>
      </section>
    </section>
    <section anchor="x509-certificate-profile">
      <name>X.509 Certificate Profile</name>
      <t>All X.509 certificates <bcp14>MUST</bcp14> comply with <xref target="X.509"/>. Additionally, each certificate <bcp14>MUST</bcp14>:</t>
      <ul spacing="normal">
        <li>
          <t>Have a validity period of at least 1 second and not exceeding the limit specified in <xref target="maximum-validity-period"/>.</t>
        </li>
        <li>
          <t>Only use the algorithms specified in <xref target="cryptographic-algorithms"/>.</t>
        </li>
      </ul>
      <t>Additional requirements and recommendations apply to specific certificate types as described in the following sections.</t>
      <section anchor="organisation-certificate">
        <name>Organisation Certificate</name>
        <t>This is a certificate whose subject key is referenced by the DomainAuth TXT record.  The following requirements and recommendations apply:</t>
        <ul spacing="normal">
          <li>
            <t>Its Subject Distinguished Name <bcp14>MUST</bcp14> contain the Common Name attribute (OID <tt>2.5.4.3</tt>) set to the organisation's domain name with a trailing dot (e.g. <tt>example.com.</tt>).</t>
          </li>
          <li>
            <t>When the certificate is used to issue other certificates, the Basic Constraints extension from <xref section="4.2.1.9" sectionFormat="of" target="X.509"/> <bcp14>MUST</bcp14> be present and marked as critical.  Additionally, the CA flag <bcp14>MUST</bcp14> be enabled, and the Path Length Constraint <bcp14>SHOULD</bcp14> be set to the lowest possible value for the length of the intended certificate chains.</t>
          </li>
          <li>
            <t>When the certificate is used directly to sign CMS SignedData structures, the Basic Constraints extension <bcp14>MAY</bcp14> be absent.  If present, it <bcp14>SHOULD</bcp14> have the CA flag disabled.</t>
          </li>
        </ul>
        <t>Whilst the organisation certificate is typically self-issued, it <bcp14>MAY</bcp14> be issued by another certificate authority. In such cases, the issuer of the organisation certificate and any other certificates in the certification path to the organisation certificate are not considered part of the DomainAuth protocol, and any such parent certificates <bcp14>SHOULD NOT</bcp14> be included in the Signature Bundle. Verification of the organisation certificate is performed solely using the public key referenced in the DomainAuth TXT record.</t>
      </section>
      <section anchor="member-certificate">
        <name>Member Certificate</name>
        <ul spacing="normal">
          <li>
            <t>Its Subject Distinguished Name <bcp14>MUST</bcp14> contain the Common Name attribute (OID <tt>2.5.4.3</tt>) set to the member's name in the case of users or the at sign (<tt>@</tt>) in the case of bots.</t>
          </li>
          <li>
            <t>The Basic Constraints extension from <xref section="4.2.1.9" sectionFormat="of" target="X.509"/> <bcp14>MAY</bcp14> be absent.  If present, it <bcp14>SHOULD</bcp14> have the CA flag disabled.</t>
          </li>
        </ul>
      </section>
      <section anchor="intermediate-certificate">
        <name>Intermediate Certificate</name>
        <t>Organisations <bcp14>MAY</bcp14> issue intermediate certificates to delegate the responsibility of issuing member certificates and organisation signatures to other entities.</t>
        <t>When an intermediate certificate is used, the Basic Constraints extension from <xref section="4.2.1.9" sectionFormat="of" target="X.509"/> <bcp14>MUST</bcp14> be present and marked as critical.  Additionally, the CA flag <bcp14>MUST</bcp14> be enabled, and the Path Length Constraint <bcp14>SHOULD</bcp14> be set to the lowest possible value for the length of the intended certificate chains.</t>
        <t>Note that if an intermediate certificate is assigned a Common Name, it could also be used as a member certificate and it could therefore produce member signatures.</t>
      </section>
    </section>
    <section anchor="member-id-bundle">
      <name>Member Id Bundle</name>
      <t>The Member Id Bundle is a self-contained message that provides all the information needed for a member to produce verifiable signatures.  It is serialised using ASN.1 with the following structure:</t>
      <artwork><![CDATA[
MemberIdBundle ::= SEQUENCE {
    version                  [0] INTEGER,
    dnssecChain              [1] DnssecChain,
    organisationCertificate  [2] Certificate,
    memberCertificate        [3] Certificate,
    intermediateCertificates [4] SET OF Certificate OPTIONAL
}
]]></artwork>
      <t>Where:</t>
      <ul spacing="normal">
        <li>
          <t><tt>version</tt> is the format version, set to <tt>0</tt> (zero) in this version of the specification.</t>
        </li>
        <li>
          <t><tt>dnssecChain</tt> contains the serialised DNSSEC chain proving the authenticity of the organisation's DomainAuth TXT record.</t>
        </li>
        <li>
          <t><tt>organisationCertificate</tt> is the organisation's X.509 certificate.</t>
        </li>
        <li>
          <t><tt>memberCertificate</tt> is the X.509 certificate issued to the member by the organisation.</t>
        </li>
        <li>
          <t><tt>intermediateCertificates</tt> is a set of X.509 certificates issued by the organisation to other entities that can sign member certificates.  It <bcp14>SHOULD NOT</bcp14> include certificates extraneous to the chain between the organisation certificate and the member certificate.</t>
        </li>
      </ul>
      <t>The Member Id Bundle links the member to their organisation and provides all the cryptographic material needed to verify this relationship.  It serves as a precursor to signature production and is typically distributed to members by their organisation's certificate management system.</t>
      <t>Member Id Bundles are not inherently confidential, as they contain only public information, but their integrity is critical for secure signature production.</t>
    </section>
    <section anchor="cms-signeddata-structure">
      <name>CMS SignedData Structure</name>
      <t>DomainAuth signatures use CMS SignedData structures as specified in <xref section="5" sectionFormat="of" target="CMS"/>, with additional requirements and recommendations:</t>
      <ul spacing="normal">
        <li>
          <t><tt>signerInfos</tt> field:
          </t>
          <ul spacing="normal">
            <li>
              <t>There <bcp14>MUST</bcp14> be exactly one <tt>SignerInfo</tt>.</t>
            </li>
            <li>
              <t>The digest and signature algorithms <bcp14>MUST</bcp14> comply with <xref target="cryptographic-algorithms"/>.</t>
            </li>
            <li>
              <t>The following signed attributes <bcp14>MUST</bcp14> be included:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Content Type attribute described in <xref section="11.1" sectionFormat="of" target="CMS"/>.</t>
                </li>
                <li>
                  <t>Message Digest attribute described in <xref section="11.2" sectionFormat="of" target="CMS"/>.</t>
                </li>
                <li>
                  <t>DomainAuth signature metadata attribute as outlined in <xref target="signature-metadata"/>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The <tt>SignerInfo.sid</tt> field <bcp14>MUST</bcp14> use the <tt>issuerAndSerialNumber</tt> choice specified in <xref section="5.3" sectionFormat="of" target="CMS"/>.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><tt>certificates</tt> field:
          </t>
          <ul spacing="normal">
            <li>
              <t>Any intermediate certificates between the organisation and the signer <bcp14>MUST</bcp14> be included.</t>
            </li>
            <li>
              <t>The organisation certificate <bcp14>SHOULD NOT</bcp14> be included, since it is already included in the Signature Bundle.</t>
            </li>
            <li>
              <t>Certificates outside the certification path between the organisation and the signer <bcp14>SHOULD NOT</bcp14> be included.</t>
            </li>
          </ul>
        </li>
      </ul>
      <section anchor="signature-types">
        <name>Signature Types</name>
        <t>DomainAuth supports two distinct types of signatures, offering different levels of assurance and operational flexibility:</t>
        <section anchor="member-signatures">
          <name>Member Signatures</name>
          <t>Member signatures are produced by members (users or bots) using their own private key.  They are suitable for scenarios requiring strong non-repudiation at the individual member level, or when members need to produce signatures whilst being offline for extended periods.</t>
          <t>The member's certificate <bcp14>MUST</bcp14> be included in the <tt>SignedData.certificates</tt> field.</t>
        </section>
        <section anchor="organisation-signatures">
          <name>Organisation Signatures</name>
          <t>Organisation signatures are produced using the organisation's private key or a delegated signing key. These signatures involve attributing the signature to a member and are suitable when member certificate management is impractical.</t>
          <t>The SignerInfo structure <bcp14>MUST</bcp14> include the DomainAuth member attribution in its signed attributes, using the OID <tt>1.3.6.1.4.1.58708.1.2</tt> and the value defined in the ASN.1 structure below:</t>
          <artwork><![CDATA[
MemberAttribution ::= UTF8String
]]></artwork>
          <t>The member attribution value <bcp14>MUST</bcp14> conform to the restrictions defined in <xref target="phishing-attacks"/>. For users, this is the user name; for bots, this is the at sign (<tt>@</tt>).</t>
          <t>Member attribution is a claim made by the organisation, not cryptographically proven by the member.  Verifiers <bcp14>SHOULD</bcp14> present this distinction clearly to end users.</t>
        </section>
      </section>
      <section anchor="signature-metadata">
        <name>Signature Metadata</name>
        <t>Each SignedData structure includes metadata that binds the signature to a specific service and validity period.  This metadata is included as a signed attribute in the SignerInfo structure.</t>
        <t>The signature metadata attribute <bcp14>MUST</bcp14> use the OID <tt>1.3.6.1.4.1.58708.1.0</tt> and be encoded as the <tt>SignatureMetadata</tt> ASN.1 structure below:</t>
        <artwork><![CDATA[
SignatureMetadata ::= SEQUENCE {
    serviceOid      [0] OBJECT IDENTIFIER,
    validityPeriod  [1] DatePeriod
}

DatePeriod ::= SEQUENCE {
    start  [0] GeneralizedTime,
    end    [1] GeneralizedTime
}
]]></artwork>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t><tt>serviceOid</tt> is the Object Identifier of the service for which the signature is valid.</t>
          </li>
          <li>
            <t><tt>validityPeriod</tt> specifies the time period during which the signature is considered valid.  The <tt>start</tt> and <tt>end</tt> fields <bcp14>MUST</bcp14> be expressed in Greenwich Mean Time (GMT) and <bcp14>MUST</bcp14> include seconds.  Therefore, both times will follow the format <tt>YYYYMMDDHHMMSSZ</tt>. Both the start and end times are inclusive, meaning the signature is valid at exactly the start time and remains valid until exactly the end time.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="signature-bundle">
      <name>Signature Bundle</name>
      <t>The Signature Bundle is the primary artefact of the DomainAuth protocol, containing a digital signature and all the information needed to verify it offline.  It is serialised using ASN.1 with the following structure:</t>
      <artwork><![CDATA[
SignatureBundle ::= SEQUENCE {
    version                  [0] INTEGER,
    dnssecChain              [1] DnssecChain,
    organisationCertificate  [2] Certificate,
    signature                [3] ContentInfo
}
]]></artwork>
      <t>Where:</t>
      <ul spacing="normal">
        <li>
          <t><tt>version</tt> is the format version, set to <tt>0</tt> (zero) in this version of the specification.</t>
        </li>
        <li>
          <t><tt>dnssecChain</tt> contains the serialised DNSSEC chain proving the authenticity of the organisation's DomainAuth TXT record.</t>
        </li>
        <li>
          <t><tt>organisationCertificate</tt> is the organisation's X.509 certificate.</t>
        </li>
        <li>
          <t><tt>signature</tt> is a CMS <tt>ContentInfo</tt> containing the SignedData structure.</t>
        </li>
      </ul>
      <t>The specific contents of the <tt>signature</tt> field depend on whether it is a member signature or an organisation signature, as detailed in <xref target="cms-signeddata-structure"/>.</t>
      <section anchor="verification-procedure">
        <name>Verification Procedure</name>
        <t>Implementations <bcp14>MUST</bcp14> verify the syntactic validity of the signature bundle against its ASN.1 schema and reject malformed values.  Refer to <xref target="data-serialisation"/> for more information on serialisation formats.</t>
        <t>A fundamental aspect of the verification procedure is to establish that all components—the DNSSEC chain, X.509 certificate path and the signature itself—were simultaneously valid for at least one second within the specified verification period.  This temporal intersection of validity periods ensures the cryptographic continuity of the trust chain at the time of verification.</t>
        <t>Implementations <bcp14>MUST</bcp14> verify every syntactically-valid signature bundle as follows, and fail if any step fails:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Establish the verification parameters.</strong> The verifier <bcp14>MUST</bcp14> specify the following parameters:
            </t>
            <ul spacing="normal">
              <li>
                <t>Plaintext: The content to be verified if it is detached from the SignedData structure (i.e. the field <tt>SignedData.encapContentInfo.eContent</tt> is absent). This value <bcp14>MUST NOT</bcp14> be provided if the plaintext is encapsulated.</t>
              </li>
              <li>
                <t>Service: The OID of the service for which the signature must be valid.</t>
              </li>
              <li>
                <t>Validity period: The inclusive time range during which the signature bundle must be valid for at least one second (e.g. 1st January 1970 00:00:00 UTC to 31st January 1970 23:59:59 UTC). This period <bcp14>MAY</bcp14> be specified as a specific time (e.g. 1st January 1970 00:00:00 UTC), in which case it <bcp14>MUST</bcp14> be converted to a 1-second period where the start and end are the same as the specified time.</t>
              </li>
            </ul>
            <t>
The verifier <bcp14>MAY</bcp14> override the root zone DS record(s) only for testing purposes or to reflect updated IANA trust anchors before the underlying DNSSEC implementation updates its copy.</t>
          </li>
          <li>
            <t><strong>Identify the relevant DomainAuth TXT record and determine the verification time window for the DNSSEC chain:</strong>
            </t>
            <ol spacing="normal" type="1"><li>
                <t>Extract the domain name from the Common Name attribute in the organisation certificate's Distinguished Name.</t>
              </li>
              <li>
                <t>Extract all records in the RRSet for <tt>_domainauth.&lt;domain&gt;/TXT</tt>.</t>
              </li>
              <li>
                <t>Parse each TXT record rdata, per the rules in <xref target="txt-record"/>.</t>
              </li>
              <li>
                <t>Locate records matching the subject key specification from the organisation certificate (key algorithm and key id) and the service OID specified by the verifier (either matching exactly or with an absent service OID). If multiple matching records exist, use the one with the specific service OID; if none exists, use the wildcard record.  If multiple records of the same type (specific or wildcard) match, verification <bcp14>MUST</bcp14> fail.</t>
              </li>
              <li>
                <t>Extract the TTL override value from the identified TXT record.</t>
              </li>
              <li>
                <t>Calculate a verification time window for the DNSSEC chain as follows:
                </t>
                <ul spacing="normal">
                  <li>
                    <t>End time: The end of the required verification period (as specified by the verifier).</t>
                  </li>
                  <li>
                    <t>Start time: The maximum (later) of:
                    </t>
                    <ul spacing="normal">
                      <li>
                        <t>The start of the required verification period (as specified by the verifier).</t>
                      </li>
                      <li>
                        <t>The end time minus the TTL override value in seconds.</t>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ol>
          </li>
          <li>
            <t><strong>Verify the DNSSEC chain</strong> from the root zone to the <tt>_domainauth.&lt;domain&gt;/TXT</tt> RRSet as described in <xref target="DNSSEC"/>. The chain is considered valid if all DNSSEC signatures in the chain were simultaneously valid (i.e., not expired and not in the future) for at least one second within the verification time window calculated in the previous step.</t>
          </li>
          <li>
            <t><strong>Verify the X.509 certificate chain</strong> from the organisation certificate to the signer's certificate as specified in <xref target="X.509"/>, using any additional certificates in the <tt>SignedData.certificates</tt> field as potential intermediate certificates when constructing the chain.  Note that the chain will comprise a single certificate when the organisation itself is the signer.  </t>
            <t>
The certificate chain <bcp14>MUST</bcp14> overlap with the verification time window and the DNSSEC chain for at least one second, meaning there must be at least one second during which all certificates in the chain were simultaneously valid and this second falls within both the verification time window and the period when the DNSSEC chain was valid.</t>
          </li>
          <li>
            <t><strong>Verify the CMS SignedData structure</strong> as described in <xref section="5.6" sectionFormat="of" target="CMS"/>, using the signer's certificate from the <tt>SignedData.certificates</tt> field or the organisation certificate if the signer is the organisation itself.  </t>
            <t>
The signature metadata attribute <bcp14>MUST</bcp14> be present in the signed attributes of the SignerInfo structure.  Additionally:  </t>
            <ul spacing="normal">
              <li>
                <t>The service OID <bcp14>MUST</bcp14> match that specified by the verifier.</t>
              </li>
              <li>
                <t>The validity period <bcp14>MUST</bcp14> overlap with the verification time window, the X.509 certificate chain and the DNSSEC chain for at least one second, meaning there must be a minimum one-second period during which the signature was valid, all certificates were valid, and the DNSSEC chain was valid.</t>
              </li>
            </ul>
            <t>
If present, the member attribution attribute <bcp14>MUST</bcp14> be in the signed attributes of the SignerInfo structure, and its value <bcp14>MUST</bcp14> be a valid member name as specified in <xref target="phishing-attacks"/>. If absent, the signer <bcp14>MUST</bcp14> be a member whose certificate meets the requirements specified in <xref target="member-certificate"/>.</t>
          </li>
          <li>
            <t><strong>Produce verification output:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>The organisation name without a trailing dot (e.g. <tt>example.com</tt>). This string <bcp14>MUST</bcp14> be represented using Unicode, converting from Punycode if necessary.</t>
              </li>
              <li>
                <t>If the signer is a user, their name <bcp14>MUST</bcp14> be a Unicode string.  The name <bcp14>MUST</bcp14> be taken from the signer certificate in the case of member signatures, or from the member attribution in the case of organisation signatures.  If the signer is a bot, no name <bcp14>MUST</bcp14> be produced (not even an empty string).</t>
              </li>
              <li>
                <t>Whether the signature was produced by the member or the organisation.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>Alternatively, the verification <bcp14>MAY</bcp14> start with the SignedData structure and end with the DNSSEC chain as described below, as long as the validity periods across all components still overlap for at least one second:</t>
        <ol spacing="normal" type="1"><li>
            <t>Establish the verification parameters.</t>
          </li>
          <li>
            <t>Verify the CMS SignedData structure.</t>
          </li>
          <li>
            <t>Verify the X.509 certificate chain.</t>
          </li>
          <li>
            <t>Identify the relevant DomainAuth TXT record and determine the verification time window for the DNSSEC chain.</t>
          </li>
          <li>
            <t>Verify the DNSSEC chain.</t>
          </li>
          <li>
            <t>Produce verification output.</t>
          </li>
        </ol>
        <t>The verification process <bcp14>MUST</bcp14> be performed in full, without skipping any steps.</t>
      </section>
    </section>
    <section anchor="cryptographic-algorithms">
      <name>Cryptographic Algorithms</name>
      <t>This section describes the cryptographic algorithms used in the X.509 certificates and CMS SignedData structures, but not to the DNSSEC chain.</t>
      <t>Algorithms not explicitly allowed by this specification <bcp14>MUST</bcp14> be rejected.</t>
      <t>Services <bcp14>MAY</bcp14> recommend specific algorithms within the set of algorithms allowed by this specification.</t>
      <section anchor="digital-signature-algorithms">
        <name>Digital Signature Algorithms</name>
        <t>For ease of adoption and interoperability reasons, this specification only requires support for RSA Signature Scheme with Appendix - Probabilistic Signature Scheme (RSA-PSS), as detailed in <xref section="8.1" sectionFormat="of" target="RFC8017"/>.  The DomainAuth Signature Algorithm Registry, as specified in <xref target="domainauth-signature-algorithm-registry"/>, <bcp14>MAY</bcp14> introduce support for additional signature algorithms and restrict the use of RSA-PSS (including its deprecation).</t>
        <t>Implementations <bcp14>MUST</bcp14> support RSA-PSS in X.509 certificates as specified in <xref target="RFC4055"/> and CMS SignedData structures according to <xref target="RFC4056"/>.</t>
        <t>RSA keys with moduli less than 2048 bits <bcp14>MUST</bcp14> be rejected.  RSA keys with modulus size of 2048 <bcp14>MUST</bcp14> be supported, and greater sizes <bcp14>SHOULD</bcp14> be supported.</t>
        <t>Due to the size of RSA public keys, they <bcp14>MUST</bcp14> be identified in TXT records using a digest. The process for creating this identifier involves:</t>
        <ol spacing="normal" type="1"><li>
            <t>Taking the public key in its ASN.1 DER-serialised form as a Subject Public Key Info (defined in <xref section="4.1.2.7" sectionFormat="of" target="X.509"/>).</t>
          </li>
          <li>
            <t>Computing a digest of this serialised key using a hash function from the DomainAuth Key Digest Type Registry (<xref target="domainauth-key-digest-type-registry"/>).</t>
          </li>
          <li>
            <t>Encoding the resulting digest using Base64 without padding (<xref target="RFC4648"/>).</t>
          </li>
        </ol>
        <t>This encoded digest is then used as the Key Id in the TXT record.</t>
      </section>
      <section anchor="hash-functions">
        <name>Hash Functions</name>
        <t>This section pertains specifically to the hash functions used within digital signatures themselves (e.g., X.509 certificates, CMS SignedData structures), distinct from their use in key identification.</t>
        <t>For ease of adoption and interoperability reasons, implementations <bcp14>MUST</bcp14> support SHA-256, SHA-384, and SHA-512 as established in <xref target="NIST.FIPS.180-4"/>.</t>
        <t>The DomainAuth Key Digest Type Registry, as described in <xref target="domainauth-key-digest-type-registry"/>, separately governs the use of hash functions for key identification.</t>
      </section>
    </section>
    <section anchor="maximum-validity-period">
      <name>Maximum Validity Period</name>
      <t>Digital signatures <bcp14>MUST NOT</bcp14> have a validity period greater than 7,776,000 seconds (90 days). This limit applies to DNSSEC RRSIG records, X.509 certificates, and CMS SignedData structures (including the signature metadata).</t>
      <t>Similarly, verifiers <bcp14>MUST NOT</bcp14> allow a validity period greater than this limit when verifying signatures over a time period.</t>
      <t>Services <bcp14>SHOULD</bcp14> specify a maximum validity period shorter than the protocol-level limit where feasible.  This approach improves security by limiting the window of vulnerability in case of key compromise or other security incidents.</t>
      <t>Applications built on DomainAuth services <bcp14>MAY</bcp14> impose even shorter validity periods based on their specific security requirements and threat models.</t>
    </section>
    <section anchor="data-serialisation">
      <name>Data Serialisation</name>
      <t>All data structures in the DomainAuth protocol are defined using Abstract Syntax Notation One (ASN.1), as referenced in <xref target="ASN.1"/>.</t>
      <t>Implementations <bcp14>MUST</bcp14> support Distinguished Encoding Rules (DER) as presented in <xref target="ASN.1"/>.</t>
      <t>Services <bcp14>MAY</bcp14> require or recommend additional ASN.1 encoding rules.</t>
    </section>
    <section anchor="test-service">
      <name>Test Service</name>
      <t>Service-agnostic implementations <bcp14>SHOULD</bcp14> use the test service OID <tt>1.3.6.1.4.1.58708.1.1</tt> for testing purposes.  Service implementations <bcp14>MUST NOT</bcp14> use this service.</t>
      <t>This service is not subject to additional requirements or recommendations.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors.  This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.  It is up to the individual working groups to use this information as they see fit".</t>
      <t><em>Note to RFC Editor: Please remove this section before publication.</em></t>
      <section anchor="veraid">
        <name>VeraId</name>
        <t>DomainAuth is the successor to the VeraId protocol described in <xref target="VERAID"/>. DomainAuth and VeraId are functionally identical, except for the following differences:</t>
        <ul spacing="normal">
          <li>
            <t>DNS TXT record:
            </t>
            <ul spacing="normal">
              <li>
                <t>Name: DomainAuth uses <tt>_domainauth.example.com.</tt>, whilst VeraId uses <tt>_veraid.example.com.</tt>.</t>
              </li>
              <li>
                <t>Value: DomainAuth requires the value to begin with the number <tt>0</tt>, denoting the version of the DomainAuth TXT record format, followed by a space.  This value does not have a version number in VeraId.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>VeraId does not explicitly support intermediate certificates, and its implementations do not support them.  Consequently, the <tt>intermediateCertificates</tt> field in the Member Id Bundle is not present in VeraId.</t>
          </li>
          <li>
            <t>VeraId only allows ASN.1 DER serialisation.</t>
          </li>
          <li>
            <t>Cryptographic algorithms:
            </t>
            <ul spacing="normal">
              <li>
                <t>Signature algorithms: VeraId only supports RSA-PSS with modulus sizes of 2048, 3072, and 4096 bits.  Support for EdDSA signatures was considered, but not implemented due to lack of support in the target Hardware Security Modules (HSMs), as documented in <eref target="https://issuetracker.google.com/issues/232422224">https://issuetracker.google.com/issues/232422224</eref>.</t>
              </li>
              <li>
                <t>Hash functions: VeraId only supports SHA-256, SHA-384, and SHA-512.</t>
              </li>
              <li>
                <t>Key identification: VeraId only supports key digests (equivalent to Key Digest Types 1-3 in DomainAuth) as a consequence of its support for RSA keys only, and does not support direct use of public keys (Key Digest Type 0) for key identification.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>VeraId does not offer protection against IDN homograph attacks (see <xref target="phishing-attacks"/>).</t>
          </li>
          <li>
            <t>VeraId only disallows at-signs (<tt>@</tt>), tabs, and new lines in user names.  Otherwise, user names are case-sensitive and may contain spaces in VeraId.</t>
          </li>
          <li>
            <t>VeraId unnecessarily requires X.509 certificates to have the Authority Key Identifier and Subject Key Identifier extensions.</t>
          </li>
        </ul>
        <t>VeraId is led by the author of this document, who intends to deprecate the VeraId specification in favour of DomainAuth and update the reference implementations to fully comply with this specification.</t>
        <t>The following reference implementations of VeraId are available, all implemented by Relaycorp and undergoing independent security audits with reports expected by mid-April 2025:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>VeraId JavaScript Library</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>URL: <eref target="https://github.com/relaycorp/veraid-js">https://github.com/relaycorp/veraid-js</eref></t>
              </li>
              <li>
                <t>Maturity: Used in production in the VeraId Authority application.</t>
              </li>
              <li>
                <t>Coverage: The entire protocol as outlined in <xref target="VERAID"/>.</t>
              </li>
              <li>
                <t>Licensing: MIT licence.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>VeraId JVM Library</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>URL: <eref target="https://github.com/relaycorp/veraid-jvm">https://github.com/relaycorp/veraid-jvm</eref></t>
              </li>
              <li>
                <t>Maturity: Used in the Android version of Letro <xref target="LETRO"/>.</t>
              </li>
              <li>
                <t>Coverage: The entire protocol except for Organisation Signature Bundles.</t>
              </li>
              <li>
                <t>Licensing: Apache 2.0 licence.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>VeraId Authority</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>URL: <eref target="https://github.com/relaycorp/veraid-authority">https://github.com/relaycorp/veraid-authority</eref></t>
              </li>
              <li>
                <t>Description: A multi-tenant, cloud-native application for managing organisation members and issuing Member Id Bundles.</t>
              </li>
              <li>
                <t>Maturity: Used in production in Letro <xref target="LETRO"/>.</t>
              </li>
              <li>
                <t>Coverage: Uses the VeraId JavaScript Library to issue Member Id Bundles and Organisation Signature Bundles.</t>
              </li>
              <li>
                <t>Licensing: Business Source License version 1.1.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>To facilitate functional testing, VeraId implementations use a dedicated VeraId TXT record at <tt>lib-testing.veraid.net</tt>, bound to the test service (<xref target="test-service"/>), whose organisation's private key is publicly available in the source code for the projects above.</t>
      </section>
      <section anchor="letro">
        <name>Letro</name>
        <t><xref target="LETRO"/> is the only VeraId service as of this writing.</t>
        <ul spacing="normal">
          <li>
            <t>Organisation: Relaycorp</t>
          </li>
          <li>
            <t>URLs:
            </t>
            <ul spacing="normal">
              <li>
                <t><eref target="https://github.com/relaycorp/letro-android">https://github.com/relaycorp/letro-android</eref></t>
              </li>
              <li>
                <t><eref target="https://docs.relaycorp.tech/letro-server/">https://docs.relaycorp.tech/letro-server/</eref></t>
              </li>
            </ul>
          </li>
          <li>
            <t>Maturity: Experimental.</t>
          </li>
          <li>
            <t>Coverage: The implementation exercises the entire protocol specified in <xref target="VERAID"/>, except for organisation signatures and bot members.  It uses the VeraId JVM Library to issue member signatures on Android, and the VeraId Authority to issue Member Id Bundles under a variety of domain names operated by Relaycorp (e.g. <tt>applepie.rocks</tt>, <tt>cuppa.fans</tt>).</t>
          </li>
          <li>
            <t>Licensing: Freely distributable with acknowledgement (GNU GPLv3 and GNU AGPLv3 licences).</t>
          </li>
          <li>
            <t>Contact: <eref target="https://relaycorp.tech/">https://relaycorp.tech/</eref></t>
          </li>
          <li>
            <t>Last updated: 2024</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="dnssec-dependency">
        <name>DNSSEC Dependency</name>
        <t>DomainAuth's security model relies fundamentally on DNSSEC, which introduces specific security considerations:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Trust Anchors:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>The DomainAuth protocol inherits trust from the DNSSEC root zone.</t>
              </li>
              <li>
                <t>Compromise of the root KSK would undermine the entire system.</t>
              </li>
              <li>
                <t>Implementations <bcp14>MUST</bcp14> securely manage and update DNSSEC trust anchors.</t>
              </li>
              <li>
                <t>Whilst the protocol allows overriding root zone DS records, this <bcp14>MUST</bcp14> only be done for testing or to reflect updated IANA trust anchors.  Using alternative DNS roots in production contradicts the unique DNS root principle outlined in <xref target="RFC2826"/>.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>TLD Control:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Many TLDs are controlled by governments or private entities.</t>
              </li>
              <li>
                <t>A malicious TLD operator could theoretically issue fraudulent DNSSEC responses for domains under their zone.</t>
              </li>
              <li>
                <t>Organisations <bcp14>SHOULD</bcp14> consider the governance of their TLD when assessing security, including reviewing the relevant DNSSEC Practice Statement.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>DNSSEC Implementation Vulnerabilities:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Flaws in DNSSEC implementations could affect DomainAuth security.</t>
              </li>
              <li>
                <t>Implementations <bcp14>SHOULD</bcp14> use well-tested, actively maintained DNSSEC libraries.</t>
              </li>
              <li>
                <t>Security updates for DNSSEC components <bcp14>SHOULD</bcp14> be promptly applied.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>Whilst these dependencies introduce potential vulnerabilities, the distributed nature of DNS provides significant security advantages compared to centralised PKI models, particularly for offline verification scenarios.</t>
      </section>
      <section anchor="phishing-attacks">
        <name>Phishing Attacks</name>
        <t>To mitigate Internationalised Domain Name (IDN) homograph attacks, user interfaces <bcp14>SHOULD</bcp14> adopt the guidelines from Section 2.11.2 (Recommendations for User Agents) of <xref target="UTR36"/>.</t>
        <t>To mitigate phishing attacks leveraging user names, such names <bcp14>MUST</bcp14> be normalised to the PRECIS UsernameCaseMapped profile as specified in <xref section="3.3" sectionFormat="of" target="RFC8265"/>, but spaces (U+0020) and at signs (U+0040) <bcp14>MUST NOT</bcp14> be allowed.</t>
      </section>
      <section anchor="domain-ownership-changes">
        <name>Domain Ownership Changes</name>
        <t>Organisations <bcp14>SHOULD</bcp14> delay implementing DomainAuth until at least the period specified in <xref target="maximum-validity-period"/> has elapsed since the domain was registered or acquired.  This prevents the DNSSEC chain from the previous owner from remaining valid.</t>
        <t>Domain ownership changes represent a fundamental challenge to any domain-based authentication system.  DomainAuth's approach of using short-lived certificates and signatures helps mitigate these risks by limiting the time window during which historical signatures remain valid.</t>
      </section>
      <section anchor="offline-verification-limitations">
        <name>Offline Verification Limitations</name>
        <t>Offline verification introduces specific security considerations:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Time Synchronisation.</strong> Verifiers rely on accurate local clocks to determine if signatures and certificates are within their validity periods.  Devices with incorrect time settings may incorrectly accept expired signatures or reject valid ones.</t>
          </li>
          <li>
            <t><strong>Replay Attacks.</strong> Services <bcp14>SHOULD</bcp14> implement additional measures (e.g., nonces) for replay-sensitive operations.</t>
          </li>
          <li>
            <t><strong>Revocation Limitations.</strong> Offline verification cannot check real-time revocation status, and therefore the protocol relies on short validity periods rather than revocation checking.</t>
          </li>
        </ul>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <t>Several aspects of the protocol present potential denial of service vectors:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Resource-exhaustion attacks</strong>: Attackers could submit malformed or excessively complex signature bundles requiring significant resources to parse and validate, particularly during DNSSEC chain and certificate validation.</t>
          </li>
          <li>
            <t><strong>Large bundles</strong>: The protocol doesn't inherently limit signature bundle size.  Services <bcp14>SHOULD</bcp14> enforce maximum bundle sizes appropriate to their use case to prevent resource exhaustion.</t>
          </li>
          <li>
            <t><strong>Certificate chain complexity</strong>: Bundles with extremely long certificate chains may cause excessive processing time or memory consumption during validation.</t>
          </li>
        </ol>
      </section>
      <section anchor="key-management">
        <name>Key Management</name>
        <t>Proper key management is essential for the security of the DomainAuth protocol.  The following requirements and recommendations apply:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Key Generation.</strong> DomainAuth REQUIRES a Cryptographically-Secure Pseudorandom Number Generator (CSPRNG) compliant with <xref target="RFC4086"/>. Implementations <bcp14>SHOULD</bcp14> integrate an existing CSPRNG instead of creating their own.</t>
          </li>
          <li>
            <t><strong>Key Storage.</strong> Private keys <bcp14>MUST</bcp14> be protected from unauthorised access.  Organisation private keys <bcp14>SHOULD</bcp14> be stored with the highest level of protection available, preferably in Hardware Security Modules (HSMs). Member private keys <bcp14>SHOULD</bcp14> be protected with appropriate measures, such as operating system security mechanisms or hardware tokens.</t>
          </li>
          <li>
            <t><strong>Key Rotation.</strong> Organisations <bcp14>SHOULD</bcp14> establish a regular schedule for rotating their keys.  Given the nature of the protocol, DomainAuth TXT records for old keys <bcp14>MAY</bcp14> be removed as soon as the new key is deployed without affecting signatures produced with the old key.</t>
          </li>
          <li>
            <t><strong>Key Compromise.</strong> In the event of a key compromise, immediate rotation is <bcp14>REQUIRED</bcp14> and the compromised key's TXT record <bcp14>MUST</bcp14> be removed as soon as possible.</t>
          </li>
        </ul>
      </section>
      <section anchor="audit-trails">
        <name>Audit Trails</name>
        <t>Organisations implementing DomainAuth <bcp14>SHOULD</bcp14> maintain comprehensive audit logs of key management operations and certificate lifecycle events to support security incident investigation and facilitate non-repudiation.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Key Event Logging:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Organisations <bcp14>MUST</bcp14> log key generation, rotation, and retirement events.</t>
              </li>
              <li>
                <t>Each log entry <bcp14>SHOULD</bcp14> include the key identifier, timestamp, operation type, and authorised operator identity.</t>
              </li>
              <li>
                <t>Key material itself <bcp14>MUST NOT</bcp14> be included in logs.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Certificate Operations:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Certificate issuance and renewal events <bcp14>MUST</bcp14> be logged.</t>
              </li>
              <li>
                <t>Logs <bcp14>SHOULD</bcp14> include certificate subject, issuer, serial number, validity period, and authorising entity.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Member Management:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Member registration, name changes, and removal operations <bcp14>MUST</bcp14> be logged.</t>
              </li>
              <li>
                <t>Logs <bcp14>SHOULD</bcp14> include the affected member identifier and the authorising entity.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Signature Operations:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Organisations <bcp14>SHOULD</bcp14> log signature creation events for organisation signatures.</t>
              </li>
              <li>
                <t>Member signatures <bcp14>MAY</bcp14> be logged depending on service requirements.</t>
              </li>
              <li>
                <t>Logs <bcp14>SHOULD</bcp14> include signer identifier, signature validity period, service OID, and a content reference or hash.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Log Security:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Audit logs <bcp14>MUST</bcp14> be protected against unauthorised modification and access.</t>
              </li>
              <li>
                <t>Logs <bcp14>SHOULD</bcp14> be stored with integrity protection mechanisms.</t>
              </li>
              <li>
                <t>In high-risk environments, organisations <bcp14>SHOULD</bcp14> implement tamper-evident logging.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>DomainAuth is focused on authentication and integrity.  Confidentiality, a key property of privacy, is outside the scope of this protocol.</t>
      <t>The protocol's PKI design, where each organisation manages its own certificate hierarchy, helps avoid unnecessary information disclosure.  By allowing an organisation to serve as the certificate authority for its members, this approach minimises the data that would otherwise need to be shared with verifiers, thereby reducing the risk of user information leakage or enabling user enumeration attacks.</t>
      <t>Signature bundles do not contain sensitive personal data beyond what is necessary for identity verification, following the principle of data minimisation.  The protocol also supports the use of bot signatures that do not identify specific individuals.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests IANA to create a new registry group called "DomainAuth Protocol Parameters".</t>
      <section anchor="domainauth-signature-algorithm-registry">
        <name>DomainAuth Signature Algorithm Registry</name>
        <t>IANA is requested to create a new registry titled "DomainAuth Signature Algorithm Registry" under the "DomainAuth Protocol Parameters" registry group.</t>
        <t>The registry policy is Specification Required as set forth in <xref target="RFC8126"/>.</t>
        <t>Each entry in this registry includes the following fields:</t>
        <ul spacing="normal">
          <li>
            <t>Value: A numeric identifier for the signature algorithm.</t>
          </li>
          <li>
            <t>Algorithm: Name of the signature algorithm.</t>
          </li>
          <li>
            <t>Reference: Reference to the document that defines the algorithm.</t>
          </li>
          <li>
            <t>Status: Either "Active", "Deprecated", or "Obsolete".</t>
          </li>
        </ul>
        <t>The initial entries in this registry are:</t>
        <table>
          <name>Initial entries in the DomainAuth Signature Algorithm Registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Algorithm</th>
              <th align="left">Reference</th>
              <th align="left">Status</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">RSA-PSS with modulus 2048 bits</td>
              <td align="left">(This document)</td>
              <td align="left">Active</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">RSA-PSS with modulus 3072 bits</td>
              <td align="left">(This document)</td>
              <td align="left">Active</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">RSA-PSS with modulus 4096 bits</td>
              <td align="left">(This document)</td>
              <td align="left">Active</td>
            </tr>
          </tbody>
        </table>
        <t>The designated expert(s) <bcp14>MUST</bcp14> ensure that the proposed algorithm is appropriate for digital signatures and that the specification adequately defines its parameters and security properties.  The expert <bcp14>MUST</bcp14> consider whether the algorithm has undergone sufficient security analysis and whether its inclusion would promote interoperability.</t>
        <t>Algorithms <bcp14>MUST</bcp14> be marked as "Deprecated" if cryptographic vulnerabilities are discovered that could significantly affect their security properties.  Algorithms <bcp14>SHOULD</bcp14> be marked as "Obsolete" if they should no longer be used due to serious security vulnerabilities.  Implementers <bcp14>SHOULD NOT</bcp14> use deprecated algorithms for new signatures and <bcp14>MUST NOT</bcp14> use obsolete algorithms.</t>
      </section>
      <section anchor="domainauth-key-digest-type-registry">
        <name>DomainAuth Key Digest Type Registry</name>
        <t>IANA is requested to create a new registry titled "DomainAuth Key Digest Type Registry" under the "DomainAuth Protocol Parameters" registry group.</t>
        <t>The registry policy is Specification Required as set forth in <xref target="RFC8126"/>.</t>
        <t>Each entry in this registry includes the following fields:</t>
        <ul spacing="normal">
          <li>
            <t>Value: A numeric identifier for the key digest type.</t>
          </li>
          <li>
            <t>Hash Function: If applicable, the name of the hash function used to derive the key identifier from the public key.</t>
          </li>
          <li>
            <t>Reference: Reference to the document that defines the key digest type.</t>
          </li>
          <li>
            <t>Status: Either "Active", "Deprecated", or "Obsolete".</t>
          </li>
        </ul>
        <t>The initial entries in this registry are:</t>
        <table>
          <name>Initial entries in the DomainAuth Key Digest Type Registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Hash Function</th>
              <th align="left">Reference</th>
              <th align="left">Status</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">None</td>
              <td align="left">(This document)</td>
              <td align="left">Active</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">SHA-256</td>
              <td align="left">(This document)</td>
              <td align="left">Active</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">SHA-384</td>
              <td align="left">(This document)</td>
              <td align="left">Active</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">SHA-512</td>
              <td align="left">(This document)</td>
              <td align="left">Active</td>
            </tr>
          </tbody>
        </table>
        <t>Key Digest Type <tt>0</tt> (<tt>None</tt>) is reserved for future cryptographic algorithms where the public key itself is compact enough to be included directly in the Key Id field of the DomainAuth TXT record (<xref target="txt-record"/>).</t>
        <t>The designated expert(s) <bcp14>MUST</bcp14> ensure that the proposed key digest type is cryptographically suitable for identifying public keys, and that the specification adequately defines its parameters and security properties.</t>
        <t>Key digest types <bcp14>MUST</bcp14> be marked as "Deprecated" if cryptographic vulnerabilities are discovered that could significantly affect their security properties.  Key digest types <bcp14>SHOULD</bcp14> be marked as "Obsolete" if they should no longer be used due to serious security vulnerabilities.  Implementers <bcp14>SHOULD NOT</bcp14> use deprecated key digest types for new signatures and <bcp14>MUST NOT</bcp14> use obsolete key digest types.</t>
        <t><em>Note to RFC Editor: Please replace all instances of <tt>(This document)</tt> with the RFC number of this document upon publication.</em></t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="DNS">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="DNSSEC">
          <front>
            <title>DNS Security Extensions (DNSSEC)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>This document describes the DNS Security Extensions (commonly called "DNSSEC") that are specified in RFCs 4033, 4034, and 4035, as well as a handful of others. One purpose is to introduce all of the RFCs in one place so that the reader can understand the many aspects of DNSSEC. This document does not update any of those RFCs. A second purpose is to state that using DNSSEC for origin authentication of DNS data is the best current practice. A third purpose is to provide a single reference for other documents that want to refer to DNSSEC.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="237"/>
          <seriesInfo name="RFC" value="9364"/>
          <seriesInfo name="DOI" value="10.17487/RFC9364"/>
        </reference>
        <reference anchor="X.509">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="CMS">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="ASN.1">
          <front>
            <title>Information Technology — ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>International Telecommunications Union</organization>
            </author>
            <date year="1994"/>
          </front>
          <seriesInfo name="ITU-T" value="Recommendation X.690"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC4055">
          <front>
            <title>Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>This document supplements RFC 3279. It describes the conventions for using the RSA Probabilistic Signature Scheme (RSASSA-PSS) signature algorithm, the RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) key transport algorithm and additional one-way hash functions with the Public-Key Cryptography Standards (PKCS) #1 version 1.5 signature algorithm in the Internet X.509 Public Key Infrastructure (PKI). Encoding formats, algorithm identifiers, and parameter formats are specified. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4055"/>
          <seriesInfo name="DOI" value="10.17487/RFC4055"/>
        </reference>
        <reference anchor="RFC4056">
          <front>
            <title>Use of the RSASSA-PSS Signature Algorithm in Cryptographic Message Syntax (CMS)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>This document specifies the conventions for using the RSASSA-PSS (RSA Probabilistic Signature Scheme) digital signature algorithm with the Cryptographic Message Syntax (CMS). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4056"/>
          <seriesInfo name="DOI" value="10.17487/RFC4056"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="NIST.FIPS.180-4" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author fullname="Quynh H. Dang" surname="Dang">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author>
              <organization abbrev="NIST">National Institute of Standards and Technology</organization>
              <address>
                <postal>
                  <country>US</country>
                  <city>Gaithersburg</city>
                </postal>
              </address>
            </author>
            <date month="July" year="2015"/>
          </front>
          <seriesInfo name="NIST Federal Information Processing Standards Publications" value="180-4"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/>
        </reference>
        <reference anchor="RFC8126">
          <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="RFC8265">
          <front>
            <title>Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This document describes updated methods for handling Unicode strings representing usernames and passwords. The previous approach was known as SASLprep (RFC 4013) and was based on Stringprep (RFC 3454). The methods specified in this document provide a more sustainable approach to the handling of internationalized usernames and passwords. This document obsoletes RFC 7613.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8265"/>
          <seriesInfo name="DOI" value="10.17487/RFC8265"/>
        </reference>
        <reference anchor="UTR36" target="https://www.unicode.org/reports/tr36/tr36-15.html">
          <front>
            <title>UTR #36: Unicode Security Considerations</title>
            <author initials="M." surname="Davis" fullname="Mark Davis">
              <organization/>
            </author>
            <author initials="M." surname="Suignard" fullname="Michel Suignard">
              <organization/>
            </author>
            <date year="2014" month="September" day="19"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <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="RFC8174">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="VERAID" target="https://veraid.net/spec/">
          <front>
            <title>VeraId V1 Specification</title>
            <author initials="G." surname="Narea" fullname="Gus Narea">
              <organization>Relaycorp</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="LETRO" target="https://letro.app/en/">
          <front>
            <title>Letro</title>
            <author initials="G." surname="Narea" fullname="Gus Narea">
              <organization>Relaycorp</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="AWALA" target="https://specs.awala.network/">
          <front>
            <title>Awala</title>
            <author initials="G." surname="Narea" fullname="Gus Narea">
              <organization>Relaycorp</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="JWT">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC2826">
          <front>
            <title>IAB Technical Comment on the Unique DNS Root</title>
            <author>
              <organization abbrev="IAB">Internet Architecture Board</organization>
            </author>
            <date month="May" year="2000"/>
            <abstract>
              <t>This document discusses the existence of a globally unique public name space in the Internet called the DNS (Domain Name System). This name space is a hierarchical name space derived from a single, globally unique root. It is a technical constraint inherent in the design of the DNS. One root must be supported by a set of coordinated root servers administered by a unique naming authority. It is not technically feasible for there to be more than one root in the public DNS. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2826"/>
          <seriesInfo name="DOI" value="10.17487/RFC2826"/>
        </reference>
        <reference anchor="RFC8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="J. Jonsson" initials="J." surname="Jonsson"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
      </references>
    </references>
    <?line 776?>

<section anchor="asn1-schemas">
      <name>ASN.1 Schemas</name>
      <t>The following ASN.1 schemas define the data structures used in the DomainAuth protocol:</t>
      <artwork><![CDATA[
-- Top-level schemas for DomainAuth components

-- DNSSEC chain is a set of DNS messages
DnssecChain ::= SET OF OCTET STRING

-- Member Id Bundle
MemberIdBundle ::= SEQUENCE {
    version                  [0] INTEGER,
    dnssecChain              [1] DnssecChain,
    organisationCertificate  [2] Certificate,
    memberCertificate        [3] Certificate,
    intermediateCertificates [4] SET OF Certificate OPTIONAL
}

-- Signature Bundle
SignatureBundle ::= SEQUENCE {
    version                  [0] INTEGER,
    dnssecChain              [1] DnssecChain,
    organisationCertificate  [2] Certificate,
    signature                [3] ContentInfo
}

-- Signature metadata (included as a signed attribute)
SignatureMetadata ::= SEQUENCE {
    serviceOid      [0] OBJECT IDENTIFIER,
    validityPeriod  [1] DatePeriod
}

-- Date period structure
DatePeriod ::= SEQUENCE {
    start  [0] GeneralizedTime,
    end    [1] GeneralizedTime
}

-- Member attribution (included as a signed attribute in organisation signatures)
MemberAttribution ::= UTF8String
]]></artwork>
      <t>All DomainAuth data structures <bcp14>MUST</bcp14> be encoded using ASN.1 as specified in <xref target="data-serialisation"/>.</t>
      <t>The ASN.1 structures reference standard types from other specifications:</t>
      <ul spacing="normal">
        <li>
          <t>Certificate is defined in <xref target="X.509"/>.</t>
        </li>
        <li>
          <t>ContentInfo is defined in <xref target="CMS"/>.</t>
        </li>
      </ul>
      <t>All implementations <bcp14>MUST</bcp14> strictly adhere to these schemas.</t>
    </section>
    <section anchor="oid-registry">
      <name>OID Registry</name>
      <t>The following Object Identifiers (OIDs) are defined for use in the DomainAuth protocol, under the <tt>1.3.6.1.4.1.58708.1</tt> (iso.org.dod.internet.private.enterprise.relaycorp.domainauth) arc:</t>
      <ul spacing="normal">
        <li>
          <t><tt>1.3.6.1.4.1.58708.1.0</tt>: Signature Metadata Attribute.</t>
        </li>
        <li>
          <t><tt>1.3.6.1.4.1.58708.1.1</tt>: Test Service.</t>
        </li>
        <li>
          <t><tt>1.3.6.1.4.1.58708.1.2</tt>: Member Attribution Attribute.</t>
        </li>
      </ul>
    </section>
    <section anchor="service-design-guidance">
      <name>Service Design Guidance</name>
      <t>This non-normative section summarises key considerations for system designers creating services that utilise DomainAuth, drawing upon requirements and recommendations specified elsewhere in this document.</t>
      <t>Service designers are required to obtain a unique OID for their service, distinct from the DomainAuth OID arc (see <xref target="oid-registry"/>), as this OID is embedded within the signature metadata (<xref target="signature-metadata"/>) and used during verification (<xref target="verification-procedure"/>). Note that organisations have the option to bind specific keys to a service OID via the DomainAuth TXT record (<xref target="txt-record"/>), which verifiers are required to account for when matching signatures to keys.</t>
      <t>Consideration should be given to incorporating version information either within the OID structure or the service-specific plaintext data being signed, to facilitate future upgrades to the plaintext format.</t>
      <t>Given the reliance on local clocks for offline verification (<xref target="offline-verification-limitations"/>), services may find it beneficial to establish a minimum signature validity duration (e.g., several minutes) to accommodate potential clock skew.  Remember that the overall verification requires temporal overlap between the DNSSEC chain's validity window (influenced by the TTL override <xref target="ttl-override"/>), the certificate chain's validity (<xref target="x509-certificate-profile"/>), and the signature metadata's validity period (<xref target="verification-procedure"/>).</t>
      <t>Whilst the protocol mandates ASN.1 DER encoding (<xref target="data-serialisation"/>), services have the option to specify alternative ASN.1 encoding rules, but service-level implementations bear the responsibility for any necessary conversions if the underlying DomainAuth library does not support the alternative rules (<xref target="data-serialisation"/>).</t>
      <t>Services need to determine which signature types (Member, Organisation, or both) are appropriate for their use case (<xref target="signature-types"/>), and whether plaintext will be encapsulated or detached (<xref target="signature-bundle-production"/>).</t>
      <section anchor="service-security-considerations">
        <name>Service Security Considerations</name>
        <t>The validity period for signatures, specified in the signature metadata (<xref target="signature-metadata"/>), is required to adhere to the maximum limit defined in <xref target="maximum-validity-period"/>. It is recommended that services define their own maximum validity period, as short as possible for their use case, to enhance security (<xref target="maximum-validity-period"/>).</t>
        <t>DomainAuth specifies mandatory-to-implement cryptographic algorithms (<xref target="cryptographic-algorithms"/>). Services have the option to recommend specific algorithms from the allowed set but cannot mandate unsupported ones.</t>
        <t>Service implementations must not override root zone DS records except for testing or to reflect updated IANA trust anchors.  Services using DomainAuth should clearly distinguish test environments from production.</t>
        <t>Services designers should also consider the following potential attack vectors:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Replay attacks:</strong> DomainAuth provides authenticity and integrity but does not inherently mitigate replay attacks.  Services may need to implement additional measures, such as nonces, depending on the application's sensitivity to replays (<xref target="offline-verification-limitations"/>).</t>
          </li>
          <li>
            <t><strong>Phishing attacks:</strong> Service logic built upon the verified identity ought to correctly handle the required Unicode representation of domain names, and the specific normalisation and character restrictions applicable to user names (<xref target="phishing-attacks"/>, <xref target="verification-procedure"/>). Adhering to guidelines like those in <xref target="UTR36"/> for displaying Internationalised Domain Names can help mitigate homograph attacks.</t>
          </li>
          <li>
            <t><strong>Denial of service:</strong> Service designers should establish limits on signature bundle size to mitigate resource exhaustion attacks (<xref target="denial-of-service"/>).</t>
          </li>
        </ul>
        <t>Services may define their own requirements for logging signature events, which would complement the organisation-level audit trails recommended in <xref target="audit-trails"/>.</t>
      </section>
      <section anchor="service-user-experience-considerations">
        <name>Service User Experience Considerations</name>
        <t>Presenting DomainAuth verification results clearly is important for users to understand the basis of trust.  Since DomainAuth supports different signature types with distinct trust implications, user interfaces can play a crucial role in conveying this information accurately.</t>
        <t>Designers should consider the following points when crafting the user experience for DomainAuth services:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Communicating signature origin.</strong> Consider distinguishing between member signatures (cryptographically proven) and organisation signatures (where the organisation vouches for content with member attribution). For organisation signatures, the attribution may be presented as a claim by the organisation (e.g., "Vouched for by example.com, attributed to alice") rather than implying direct proof from the member.  However, the distinction may or may not be relevant depending on the service.</t>
          </li>
          <li>
            <t><strong>Representing bot signatures.</strong> When displaying signatures associated with bots, the interface has to attribute the signature to the organisation itself, omitting any specific user name (e.g. "Signed by example.com").</t>
          </li>
          <li>
            <t><strong>Displaying identifiers safely.</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t>Consider implementing IDN homograph attack mitigations, such as those suggested in <xref target="UTR36"/>.</t>
              </li>
              <li>
                <t>Display the user name exactly as provided by the verification process (which is based on normalised data per <xref target="phishing-attacks"/>).</t>
              </li>
              <li>
                <t>Avoid truncating user names or domain names to prevent ambiguity or misrepresentation.</t>
              </li>
              <li>
                <t>Visually distinguish the user name part from the domain name part of an identifier (e.g., "alice of example.com", "alice@example.com").</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="implementation-guidance">
      <name>Implementation Guidance</name>
      <t>This non-normative section provides guidance for developers implementing DomainAuth libraries.</t>
      <t>Implementations should ensure strict compliance with the ASN.1 schemas (<xref target="asn1-schemas"/>), serialisation formats (<xref target="data-serialisation"/>), and cryptographic algorithms (<xref target="cryptographic-algorithms"/>). Separating core protocol functionality from service-specific logic enables reuse across multiple services.</t>
      <t>For testing purposes, implementers should consider establishing a dedicated DNSSEC-enabled test domain with a DomainAuth TXT record whose private key is publicly available, bound specifically to the test service OID (<tt>1.3.6.1.4.1.58708.1.1</tt>). This approach is secure when properly scoped: the domain is controlled by the implementation team, the key is bound only to the test service, and documentation clearly indicates these are for testing only.  Serialised DNSSEC chains can also serve as test fixtures, allowing offline testing.</t>
      <t>Implementations have to provide the ability to override root zone DS records, which is only intended for local testing environments or to reflect updated IANA trust anchors before the underlying DNSSEC implementation is updated.</t>
      <t>The verification procedure should support both verification orders described in <xref target="verification-procedure"/>: either starting with the DNSSEC chain and ending with the signature, or vice versa.  A critical aspect is validating that all components in the trust chain (DNSSEC records, certificates, and signatures) have validity periods that overlap for at least one second.  Implementations should also handle multiple TXT records correctly, selecting the appropriate one based on key information and service OID.</t>
      <t>Error handling should categorise failures based on verification steps (<xref target="verification-procedure"/>), with different diagnostic detail levels for debugging versus production.  Performance optimisations may include caching verified DNSSEC chains, using efficient ASN.1 parsing libraries, ensuring thread safety, and optimising certificate validation operations.</t>
    </section>
    <section anchor="organisation-operation-guidance">
      <name>Organisation Operation Guidance</name>
      <t>This non-normative section provides guidance for organisations operating domains that participate in the DomainAuth protocol.</t>
      <t>Before implementation, organisations should ensure their domain has been under their control for at least the maximum validity period (<xref target="maximum-validity-period"/>) and consider TLD governance (<xref target="dnssec-dependency"/>). DNSSEC must be properly configured, with processes established for key rollovers.</t>
      <section anchor="tld-dnssec-considerations">
        <name>TLD DNSSEC Considerations</name>
        <t>When selecting a domain for DomainAuth implementation, organisations should carefully assess the security practices of the TLD operator, as mentioned in <xref target="dnssec-dependency"/>. Factors to consider include:</t>
        <ul spacing="normal">
          <li>
            <t>The TLD operator's jurisdiction and potential vulnerability to government influence.</t>
          </li>
          <li>
            <t>The cryptographic algorithms used for DNSSEC by the TLD.</t>
          </li>
          <li>
            <t>The TLD's DNSSEC Practice Statement.</t>
          </li>
          <li>
            <t>The TLD operator's history of security incidents or vulnerabilities.</t>
          </li>
        </ul>
        <t>For security-critical applications, organisations may wish to select TLDs with strong security practices and jurisdictions with robust legal protections.</t>
        <t>Similar considerations apply to the DNS hosting provider used for the domain, as they represent another potential attack vector.  The security practices, DNSSEC support, access controls, and jurisdictional factors of the entity responsible for hosting the domain's DNS records can significantly impact the overall security of a DomainAuth implementation.</t>
      </section>
      <section anchor="organisation-key-management">
        <name>Organisation Key Management</name>
        <t>Key management practices should include secure generation (potentially using HSMs as suggested in <xref target="key-management"/>), protected storage, and scheduled rotation.  Organisations may publish multiple TXT records for different keys, algorithms, or services, which facilitates smooth key rotation.  The TTL override value in TXT records significantly affects verification windows and should be set appropriately for the service's offline requirements.</t>
        <t>The organisation certificate serves as the trust anchor for all members, making its protection particularly important.  For member management, establish clear processes for certificate issuance, naming conventions that comply with normalisation requirements (<xref target="phishing-attacks"/>), secure distribution of Member Id Bundles, and handling departing members.</t>
        <t>Operational security measures should include regular verification of DomainAuth TXT records, comprehensive logging (<xref target="audit-trails"/>), certificate inventory maintenance, and monitoring for unauthorised DNS modifications.  Incident response procedures should address key compromise, DNS hijacking, and trust recovery, noting that the limited validity period of signatures helps contain security incident impact.</t>
        <t>Due to the residual risks regarding offline verification (<xref target="offline-verification-limitations"/>), organisations should implement additional safeguards:</t>
        <ul spacing="normal">
          <li>
            <t>Keep validity periods as short as operationally feasible.</t>
          </li>
          <li>
            <t>Implement robust monitoring for potential compromise indicators.</t>
          </li>
          <li>
            <t>Maintain secure backup procedures for cryptographic materials.</t>
          </li>
          <li>
            <t>Have emergency procedures in place to respond to security incidents, including communication plans to notify relying parties.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author is grateful to the Open Technology Fund for funding the implementation of VeraId, which heavily influenced the final specification of the VeraId protocol, and therefore DomainAuth as its successor.</t>
      <t>The author would also like to thank the authors of <xref target="DNS"/>, <xref target="DNSSEC"/>, <xref target="X.509"/>, <xref target="CMS"/>, and <xref target="ASN.1"/>, which underpin the present protocol.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
GZXkBZABSceU/Q6kdnU8lOu45BjOVwTMp09Nk49KWTMw0FloLNWS3Sn5B9G7
02PcmHLBpgZuTBG9m/wRlE2fD1ZFmxj5KRvkQgnMCbNcC/FhbzkPtp5/mHwh
FiUb4yUVoCZDTyvWEiXpKD9nM89RTsgaDYfSPaqFZEa72/vPQjIkzomS9eKH
w9GTnV2lGvENI5HohuEB7u5HN6TDbz57Otzf3tbD35KDcjaypsUOBv+b/zew
vN3UFo+j07c0541tOPW9KHl1s5iuXuD/W072fnv9u4sXq3/5+WV9+qrJ04sX
H+Kfk3y699vo2VN4/YYb3Ucd/Ppr0p4mqcobX5NQY+aDyvJ6ueDysCDIMAy5
a00+0iDWENkbxM6lYLtIRvXIQnNAanu1My18RkxtUzpaCS7o+Qf6E7ucw4BN
u6whkDla1EOBGOuMqWvREcimCguifBUDK+NcXYJ1axNfWjgjghRHicwIK64e
XIgvDyd9DHeQc9nZNyOvicVqZM1/lt5FoOEvUcWF9xJFiuERnIAzIDVRqS8y
XaWk65hAoiQP+dJxLB22ez0UrTRH36HwV3yxQjTIimFKhves1+MeYJy4jRxR
smQydG91y6XUI0oogY0lt0QqjipgDEl5J7kRdEpg3oIueEcFv07FTcnxwtou
Jn5RlU3oLGJWLkEIz4M70gDW/lPoQsCkzuWUuHg2sydhiGHz/Pzi9BVwkzsq
gifmJ6bTosywEkdDa1ifRosCwwmLC3nIldA3kVL6cUGZcvEUT4Me07IfVxHV
dm61WWs28xXi3nVyQ1SoqT99gm7vqeeN0eYOkSgIg2VzDzMw3LrDd59u7w+f
2SG/i5J4VW8N+zz87HHEDbeVd8sFrp+fi+JZg65JyVWTPaSyRQ2dk0gyiX1g
PKClTVaz+Cl7Xv3EDo9WO+wUk2Vi3aJKFFyvJ1Th1Hy7+CEzHQ4a8u9nIKr5
x+ROwyd2RrjB3YPq3iRjKBIDuKB8GjFjmInX8lGqea2qnahiJRlTjA11dUwo
YDTalXFFT1JhsS6L6+rd0eXJZXRxeX769tWVD36GJqgrWqQ4u/PhAgOBLz9/
NgLVvDg6OPjH6AIGf/cysm/x4tHEFGk57Hti94VsiM/t9Cn4eNg2ebPXQvsW
iPjKWUXKTGwCGVDTD+Udlu4MW7b0sZcPYh6jUFFNCAzVaSoXW+gZzraUwnGl
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
Z0n9P5ByYppnCwEA

-->

</rfc>
