<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cui-dns-native-agent-naming-resolution-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="DN-ANR">DNS-Native AI Agent Naming and Resolution</title>
    <seriesInfo name="Internet-Draft" value="draft-cui-dns-native-agent-naming-resolution-00"/>
    <author fullname="Yong Cui">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>cuiyong@tsinghua.edu.cn</email>
        <uri>http://www.cuiyong.net/</uri>
      </address>
    </author>
    <date year="2025" month="December" day="22"/>
    <area>General</area>
    <workgroup>WG Working Group</workgroup>
    <keyword>AI agent</keyword>
    <keyword>DNS</keyword>
    <keyword>SVCB</keyword>
    <keyword>service resolution</keyword>
    <keyword>agent protocol</keyword>
    <abstract>
      <?line 87?>

<t>This document specifies a DNS-native naming and resolution mechanism for AI agents. Building upon the DNS specification (RFC 1035) and leveraging Service Binding (SVCB) records (RFC 9460, RFC 9461), it defines how AI agents are identified using Fully Qualified Domain Names (FQDNs), how their identity and cryptographic keys are published via DNS TXT records, and how multi-version, multi-protocol service resolution is achieved using DNS SVCB records. The design philosophy emphasizes DNS as the authoritative source, protocol autonomy, and graceful degradation for legacy clients. When version is not explicitly specified, the highest priority (default) version is provided. This approach maximizes reuse of existing Internet infrastructure while enabling the rapid evolution of AI agent ecosystems.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://nobrowning.github.io/dns-native-agent-naming-resolution/draft-cui-dns-native-agent-naming-resolution.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-cui-dns-native-agent-naming-resolution/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:WG@example.com"/>),
        which is archived at <eref target="https://example.com/WG"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/nobrowning/dns-native-agent-naming-resolution"/>.</t>
    </note>
  </front>
  <middle>
    <?line 92?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The emergence of AI agents as autonomous software entities capable of communicating with each other and with humans creates new requirements for naming, resolution, and identity verification. Existing approaches often rely on centralized registries or application-layer discovery mechanisms that introduce single points of failure and do not leverage the globally distributed, well-understood DNS infrastructure.</t>
      <t>This document proposes a DNS-native approach that builds upon the foundational DNS specification <xref target="RFC1035"/> and leverages the Service Binding (SVCB) and HTTPS DNS Resource Records defined in <xref target="RFC9460"/> and <xref target="RFC9461"/> for advanced service resolution. The core design principles are:</t>
      <ul spacing="normal">
        <li>
          <t><strong>DNS is the authoritative source</strong>: DNS TXT and SVCB records serve as the single source of truth for agent identity and resolution, while HTTP-based mechanisms serve only as fallback mirrors.</t>
        </li>
        <li>
          <t><strong>Protocols are autonomous</strong>: Agent interaction protocols (e.g., <xref target="A2A"/>, <xref target="ANP"/>) are decoupled from transport, each defining its own interaction semantics.</t>
        </li>
        <li>
          <t><strong>Default availability</strong>: Basic A/AAAA records <xref target="RFC1035"/> ensure minimum connectivity, while enhanced resolution capabilities through SVCB <xref target="RFC9460"/> are optional but recommended. When version is not explicitly specified, the highest priority (default) version is provided.</t>
        </li>
      </ul>
      <t>The key innovations of this specification include:</t>
      <ol spacing="normal" type="1"><li>
          <t>Use of SVCB records <xref target="RFC9460"/> <xref target="RFC9461"/> for multi-version distribution and protocol negotiation</t>
        </li>
        <li>
          <t>Use of TXT records <xref target="RFC1035"/> as identity trust anchors with public key publication and SVCB integrity protection</t>
        </li>
        <li>
          <t>An HTTPS-based fallback mechanism (agent-dns.json) for clients without SVCB support</t>
        </li>
        <li>
          <t>Flexible security model supporting both DNSSEC and signing</t>
        </li>
      </ol>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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 throughout this document:</t>
      <dl>
        <dt>Agent:</dt>
        <dd>
          <t>An autonomous software entity capable of communicating with other agents or humans using defined protocols.</t>
        </dd>
        <dt>Agent Identifier:</dt>
        <dd>
          <t>A Fully Qualified Domain Name (FQDN) that uniquely identifies an agent.</t>
        </dd>
        <dt>Agent Protocol:</dt>
        <dd>
          <t>The application-layer protocol used for agent-to-agent communication (e.g., <xref target="A2A"/>, <xref target="ANP"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="design-principles">
      <name>Design Principles</name>
      <t>This specification follows four core principles:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Principle</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">DNS-First</td>
            <td align="left">DNS is the sole authoritative source for agent resolution; HTTP serves only as a readable mirror</td>
          </tr>
          <tr>
            <td align="left">Path-Independent</td>
            <td align="left">Version and endpoint selection are controlled by DNS, not URL paths</td>
          </tr>
          <tr>
            <td align="left">Protocol Autonomy</td>
            <td align="left">Agent interaction protocols are decoupled from transport</td>
          </tr>
          <tr>
            <td align="left">Default Availability</td>
            <td align="left">A/AAAA records guarantee minimum connectivity; enhanced features are optional. Default version is provided when not specified</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="naming-and-resource-location">
      <name>Naming and Resource Location</name>
      <section anchor="domain-name-as-identity">
        <name>Domain Name as Identity</name>
        <t>Each agent is uniquely identified by a stable Fully Qualified Domain Name (FQDN). Domain ownership combined with TLS certificates forms the foundation of agent identity.</t>
        <section anchor="naming-rules">
          <name>Naming Rules</name>
          <ul spacing="normal">
            <li>
              <t>Use domain names or subdomains owned by the organization</t>
            </li>
            <li>
              <t>Agent version changes do not introduce new identities</t>
            </li>
            <li>
              <t>No registration with any central authority is required</t>
            </li>
          </ul>
        </section>
        <section anchor="naming-examples">
          <name>Naming Examples</name>
          <artwork><![CDATA[
# Recommended: dedicated subdomains
translator.agents.example.com
assistant.ai.company.com
agent123.agents.example.com
]]></artwork>
        </section>
      </section>
      <section anchor="resource-location-via-dns">
        <name>Resource Location via DNS</name>
        <t>This specification does not use URL paths for version expression. All version and endpoint selection is controlled by DNS records:</t>
        <ol spacing="normal" type="1"><li>
            <t>Query DNS SVCB records -&gt; obtain version, endpoint, and protocol information</t>
          </li>
          <li>
            <t>Query DNS TXT records -&gt; obtain public key and verify identity</t>
          </li>
          <li>
            <t>Connect to the TargetName:port specified in SVCB</t>
          </li>
          <li>
            <t>Interact according to the protocol specification</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="dns-record-design">
      <name>DNS Record Design</name>
      <t>This specification uses three types of DNS records <xref target="RFC1035"/>, each with distinct responsibilities. The SVCB record type is defined in <xref target="RFC9460"/> and <xref target="RFC9461"/>:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Record Type</th>
            <th align="left">Responsibility</th>
            <th align="left">Requirement</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">A / AAAA</td>
            <td align="left">Basic connectivity</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14> - ensures minimum availability</td>
          </tr>
          <tr>
            <td align="left">TXT</td>
            <td align="left">Identity declaration, public key publication, SVCB integrity (svcb-digest), signature</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14> - identity trust anchor</td>
          </tr>
          <tr>
            <td align="left">SVCB</td>
            <td align="left">Version distribution, endpoint resolution, protocol negotiation</td>
            <td align="left">
              <bcp14>RECOMMENDED</bcp14> - enhanced resolution</td>
          </tr>
        </tbody>
      </table>
      <section anchor="txt-record-identity-trust-anchor">
        <name>TXT Record: Identity Trust Anchor</name>
        <t>TXT records <xref target="RFC1035"/> serve as the sole trust anchor for agent identity and integrity. Their responsibilities are strictly limited to four functions:</t>
        <ol spacing="normal" type="1"><li>
            <t>Declare agent identity</t>
          </li>
          <li>
            <t>Publish public key / fingerprint</t>
          </li>
          <li>
            <t>Protect SVCB record integrity via digest (svcb-digest)</t>
          </li>
          <li>
            <t>Sign identity and integrity metadata (tamper-proof)</t>
          </li>
        </ol>
        <section anchor="txt-record-format">
          <name>TXT Record Format</name>
          <artwork><![CDATA[
_agent.translator.example.com. IN TXT (
  "v=1;"
  "kid=key-2025-01;"
  "alg=Ed25519;"
  "pk=base64-encoded-public-key;"
  "svcb-digest=base64-encoded-sha256-digest;"
  "sig=base64-encoded-signature"
)
]]></artwork>
        </section>
        <section anchor="txt-field-descriptions">
          <name>TXT Field Descriptions</name>
          <table>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">v</td>
                <td align="left">Version identifier, fixed as 1</td>
              </tr>
              <tr>
                <td align="left">kid</td>
                <td align="left">Key identifier, used for key rotation</td>
              </tr>
              <tr>
                <td align="left">alg</td>
                <td align="left">Signature algorithm: Ed25519 (<bcp14>RECOMMENDED</bcp14>) or ES256</td>
              </tr>
              <tr>
                <td align="left">pk</td>
                <td align="left">Base64-encoded public key</td>
              </tr>
              <tr>
                <td align="left">svcb-digest</td>
                <td align="left">Base64-encoded SHA-256 digest of canonicalized SVCB records (<bcp14>OPTIONAL</bcp14> but <bcp14>RECOMMENDED</bcp14> when signing is used)</td>
              </tr>
              <tr>
                <td align="left">sig</td>
                <td align="left">Signature over record content (<bcp14>OPTIONAL</bcp14> but <bcp14>RECOMMENDED</bcp14>)</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="svcb-record-version-distribution-and-protocol-negotiation">
        <name>SVCB Record: Version Distribution and Protocol Negotiation</name>
        <t>SVCB (Service Binding) records <xref target="RFC9460"/> are the core resolution mechanism, serving the following responsibilities:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Level</th>
              <th align="left">SVCB Role</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Service Location</td>
              <td align="left">TargetName + port specify the service endpoint</td>
            </tr>
            <tr>
              <td align="left">Version Distribution</td>
              <td align="left">Private SvcParam declares agent version</td>
            </tr>
            <tr>
              <td align="left">Protocol Negotiation</td>
              <td align="left">Private parameters declare supported agent protocols</td>
            </tr>
          </tbody>
        </table>
        <section anchor="svcb-record-example">
          <name>SVCB Record Example</name>
          <artwork><![CDATA[
# Complete SVCB record example
_agent.translator.example.com. IN SVCB 1 agent-v3.example.com. (
  alpn=h2
  port=443
  key65480="v3"              ; Agent version
  key65481="a2a,anp"         ; Supported agent protocols
)

# v2 version (lower priority)
_agent.translator.example.com. IN SVCB 2 agent-v2.example.com. (
  alpn=h2
  port=443
  key65480="v2"
  key65481="a2a"
)
]]></artwork>
        </section>
      </section>
      <section anchor="version-and-protocol-resolution">
        <name>Version and Protocol Resolution</name>
        <section anchor="svcb-private-parameters">
          <name>SVCB Private Parameters</name>
          <t>This specification introduces two SVCB private parameters (SvcParam) as defined in <xref target="RFC9460"/> to declare version and protocol:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Parameter</th>
                <th align="left">Semantics</th>
                <th align="left">Example</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">key65480</td>
                <td align="left">Agent version</td>
                <td align="left">"v3", "v2.1.0"</td>
              </tr>
              <tr>
                <td align="left">key65481</td>
                <td align="left">Agent protocols</td>
                <td align="left">"a2a", "a2a,anp"</td>
              </tr>
            </tbody>
          </table>
          <section anchor="version-selection-behavior">
            <name>Version Selection Behavior</name>
            <t>Clients can:</t>
            <ul spacing="normal">
              <li>
                <t><strong>Default selection</strong>: When version is not specified, the highest priority version based on SVCB priority is used</t>
              </li>
              <li>
                <t><strong>Specific selection</strong>: Specify key65480 value to select a particular version</t>
              </li>
              <li>
                <t><strong>Protocol filtering</strong>: Select only versions supporting specific protocols (key65481)</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="alpn-usage">
          <name>ALPN Usage</name>
          <t>ALPN is used for TLS-layer protocol negotiation (e.g., h2, h3). Agent interaction protocols (<xref target="A2A"/>, <xref target="ANP"/>) are declared via SVCB private parameters (key65481), not ALPN values. This ensures compatibility with existing TLS ecosystems and reserves space for future IANA registration.</t>
        </section>
        <section anchor="relationship-between-version-and-protocol">
          <name>Relationship Between Version and Protocol</name>
          <t>This specification clearly distinguishes two layers:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Layer</th>
                <th align="left">Declaration Location</th>
                <th align="left">Example</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Agent Version</td>
                <td align="left">key65480</td>
                <td align="left">v3, v2.1.0</td>
              </tr>
              <tr>
                <td align="left">Agent Protocol</td>
                <td align="left">key65481</td>
                <td align="left">a2a, anp</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="https-fallback-mechanism">
      <name>HTTPS Fallback Mechanism</name>
      <t>To ensure "works by default" behavior, this specification introduces an optional but strongly recommended fallback mechanism.</t>
      <section anchor="agent-dnsjson">
        <name>agent-dns.json</name>
        <t>For clients that do not support SVCB queries, agents can publish a JSON mirror of DNS records at an HTTPS endpoint:</t>
        <artwork><![CDATA[
https://{agent-id}/.well-known/agent-dns.json
]]></artwork>
        <section anchor="media-type">
          <name>Media Type</name>
          <t>The agent-dns.json file <bcp14>MUST</bcp14> be served with the following HTTP headers:</t>
          <artwork><![CDATA[
Content-Type: application/json; charset=utf-8
Cache-Control: max-age=300
]]></artwork>
          <t>Servers <bcp14>SHOULD</bcp14> set an appropriate Cache-Control header. A value between 300 seconds (5 minutes) and 3600 seconds (1 hour) is <bcp14>RECOMMENDED</bcp14>.</t>
        </section>
        <section anchor="json-signature">
          <name>JSON Signature</name>
          <t>The JSON file <bcp14>MUST</bcp14> include a signature for integrity protection. Unlike the TXT record signature which covers only TXT fields, the JSON signature covers the complete service binding information.</t>
          <t>The signature is computed over the canonical JSON representation of the document (excluding the sig field) as defined in <xref target="RFC8785"/> (JSON Canonicalization Scheme).</t>
        </section>
        <section anchor="json-schema-definition">
          <name>JSON Schema Definition</name>
          <t>The agent-dns.json file <bcp14>MUST</bcp14> conform to the following JSON Schema:</t>
          <sourcecode type="json"><![CDATA[
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://example.com/agent-dns.schema.json",
  "title": "Agent DNS JSON",
  "description": "Mirror of DNS records for agent resolution",
  "type": "object",
  "required": ["agentId", "txt", "sig"],
  "properties": {
    "agentId": {
      "type": "string",
      "description": "The FQDN identifying the agent",
      "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?
                  (\\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*$"
    },
    "txt": {
      "type": "object",
      "description": "Core identity fields from DNS TXT record",
      "required": ["v", "kid"],
      "properties": {
        "v": {
          "type": "string",
          "const": "1"
        },
        "kid": {
          "type": "string",
          "description": "Key identifier"
        },
        "alg": {
          "type": "string",
          "enum": ["ES256", "Ed25519"],
          "description": "Signature algorithm"
        },
        "pk": {
          "type": "string",
          "description": "Base64-encoded TLS certificate public key"
        }
      }
    },
    "svcb": {
      "type": "array",
      "description": "Mirror of DNS SVCB records",
      "items": {
        "type": "object",
        "required": ["priority", "target", "port"],
        "properties": {
          "priority": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535
          },
          "target": {
            "type": "string",
            "description": "Target hostname"
          },
          "port": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535
          },
          "alpn": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "agentVersion": {
            "type": "string",
            "description": "Agent version (mirrors key65480)"
          },
          "agentProtocols": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Supported protocols (mirrors key65481)"
          }
        }
      }
    },
    "sig": {
      "type": "string",
      "description": "Base64-encoded signature over canonical JSON
                                           (excluding sig field)"
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="file-structure-example">
          <name>File Structure Example</name>
          <sourcecode type="json"><![CDATA[
{
  "agentId": "translator.example.com",
  "txt": {
    "v": "1",
    "kid": "key-2025-01",
    "alg": "ES256",
    "pk": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE..."
  },
  "svcb": [
    {
      "priority": 1,
      "target": "agent-v3.example.com",
      "port": 443,
      "alpn": ["h2"],
      "agentVersion": "v3",
      "agentProtocols": ["a2a", "anp"]
    },
    {
      "priority": 2,
      "target": "agent-v2.example.com",
      "port": 443,
      "alpn": ["h2"],
      "agentVersion": "v2",
      "agentProtocols": ["a2a"]
    }
  ],
  "sig": "MEUCIQC7..."
}
]]></sourcecode>
        </section>
        <section anchor="json-sig">
          <name>JSON Signature Computation</name>
          <t>The signature over the JSON file is computed as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Construct the JSON object without the sig field.</t>
            </li>
            <li>
              <t>Serialize using JSON Canonicalization Scheme (JCS) as defined in <xref target="RFC8785"/>.</t>
            </li>
            <li>
              <t>Compute the signature using the TLS private key.</t>
            </li>
            <li>
              <t>Encode the signature using Base64.</t>
            </li>
          </ol>
          <artwork><![CDATA[
json_without_sig = { agentId, txt, svcb }
canonical_json = JCS(json_without_sig)
signature = Sign(TLS_private_key, UTF-8(canonical_json))
sig = Base64Encode(signature)
]]></artwork>
        </section>
        <section anchor="json-signature-verification">
          <name>JSON Signature Verification</name>
          <t>Clients <bcp14>MUST</bcp14> verify the JSON signature:</t>
          <ol spacing="normal" type="1"><li>
              <t>Fetch the JSON file over HTTPS.</t>
            </li>
            <li>
              <t>Extract the sig field and remove it from the object.</t>
            </li>
            <li>
              <t>Serialize the remaining object using JCS.</t>
            </li>
            <li>
              <t>Obtain the public key from the txt.pk field in the JSON.</t>
            </li>
            <li>
              <t>Verify the signature.</t>
            </li>
            <li>
              <t>(<bcp14>RECOMMENDED</bcp14> for TLS-based signing) Verify that txt.pk matches the TLS certificate's public key.</t>
            </li>
          </ol>
          <t>If verification fails, the client <bcp14>MUST</bcp14> reject the JSON file.</t>
          <t>Note: When agent providers use separate key pairs (not TLS-based), the verification in step 6 is not applicable. In such cases, the integrity of the JSON file depends on the authenticity of the public key in txt.pk, which has the same trust anchor limitations as described in the Security Model Overview.</t>
        </section>
      </section>
      <section anchor="design-principles-1">
        <name>Design Principles</name>
        <ul spacing="normal">
          <li>
            <t><strong>Mirror, not addition</strong>: JSON only mirrors information already in DNS; it does not introduce content absent from DNS</t>
          </li>
          <li>
            <t><strong>DNS remains authoritative</strong>: HTTPS JSON is only a "readable mirror", not a new authoritative source</t>
          </li>
          <li>
            <t><strong>Signature required</strong>: JSON files <bcp14>MUST</bcp14> be signed for integrity protection</t>
          </li>
          <li>
            <t><strong>Schema validated</strong>: Clients <bcp14>SHOULD</bcp14> validate JSON against the defined schema</t>
          </li>
        </ul>
      </section>
      <section anchor="applicable-scenarios">
        <name>Applicable Scenarios</name>
        <ul spacing="normal">
          <li>
            <t>Clients that do not support SVCB queries</t>
          </li>
          <li>
            <t>Browsers / debugging tools</t>
          </li>
          <li>
            <t>Early ecosystem transition period</t>
          </li>
          <li>
            <t>Environments where DNS resolution is limited</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security">
      <name>Security</name>
      <t>This section defines the security mechanisms for ensuring the integrity and authenticity of agent resolution data.</t>
      <section anchor="security-model">
        <name>Security Model Overview</name>
        <t>This specification provides two approaches for ensuring the integrity and authenticity of agent resolution data:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>DNSSEC (<bcp14>RECOMMENDED</bcp14>)</strong>: Protocol-level cryptographic authentication of DNS data</t>
          </li>
          <li>
            <t><strong>Signature-based Security (<bcp14>OPTIONAL</bcp14> but <bcp14>RECOMMENDED</bcp14>)</strong>: Signing of TXT content, SVCB digest, and JSON fallback</t>
          </li>
        </ol>
        <table>
          <thead>
            <tr>
              <th align="left">Mechanism</th>
              <th align="left">Protection Scope</th>
              <th align="left">Trust Anchor</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DNSSEC</td>
              <td align="left">All DNS records (TXT, SVCB, A/AAAA)</td>
              <td align="left">DNS root zone</td>
            </tr>
            <tr>
              <td align="left">Signature-based Security</td>
              <td align="left">TXT content, SVCB digest, JSON fallback</td>
              <td align="left">Web PKI (when using TLS keys) or self-declared (when using separate keys)</td>
            </tr>
          </tbody>
        </table>
        <section anchor="dnssec-based-security-recommended">
          <name>DNSSEC-based Security (RECOMMENDED)</name>
          <t>DNSSEC <xref target="RFC4033"/> provides cryptographic authentication of DNS data at the protocol level. When enabled:</t>
          <ul spacing="normal">
            <li>
              <t>All DNS records are signed by the zone's DNSSEC keys</t>
            </li>
            <li>
              <t>Clients with DNSSEC validation can verify record authenticity</t>
            </li>
            <li>
              <t>No application-layer signatures are required</t>
            </li>
          </ul>
          <t>DNSSEC is the <bcp14>RECOMMENDED</bcp14> approach for environments where it is fully deployed.</t>
        </section>
        <section anchor="signature-based-security-optional-but-recommended">
          <name>Signature-based Security (OPTIONAL but RECOMMENDED)</name>
          <t>This specification defines an optional but recommended signing mechanism for integrity protection. Agent providers have two options for key management:</t>
          <section anchor="option-1-tls-certificate-keys-recommended">
            <name>Option 1: TLS Certificate Keys (RECOMMENDED)</name>
            <t>Using the domain's TLS certificate keys provides a complete trust chain:</t>
            <ul spacing="normal">
              <li>
                <t>Uses the domain's TLS certificate private key for signing</t>
              </li>
              <li>
                <t>Public key is published in the TXT record (pk field)</t>
              </li>
              <li>
                <t>Enables verification through the established Web PKI trust chain</t>
              </li>
              <li>
                <t>Clients can verify that pk matches the TLS certificate presented during HTTPS connection</t>
              </li>
            </ul>
            <t>When TLS-based signing is used:</t>
            <ol spacing="normal" type="1"><li>
                <t>The TXT record contains the TLS certificate's public key</t>
              </li>
              <li>
                <t>The TXT record contains a digest of SVCB records (svcb-digest)</t>
              </li>
              <li>
                <t>A signature covers the TXT content including the SVCB digest</t>
              </li>
              <li>
                <t>Clients can verify the signature using the public key from the TLS certificate chain</t>
              </li>
            </ol>
          </section>
          <section anchor="option-2-separate-key-pair">
            <name>Option 2: Separate Key Pair</name>
            <t>Agent providers <bcp14>MAY</bcp14> use a separate key pair (not derived from TLS certificates) for signing:</t>
            <ul spacing="normal">
              <li>
                <t>Agent provider generates and manages their own key pair</t>
              </li>
              <li>
                <t>Public key is published in the TXT record (pk field)</t>
              </li>
              <li>
                <t>Signature is computed using the corresponding private key</t>
              </li>
            </ul>
            <t><strong>Trust Anchor Limitation</strong>: When using separate keys, the trust anchor is limited to the TXT record itself. If the TXT record is tampered with (e.g., via DNS spoofing or cache poisoning), an attacker could replace both the public key and signature, rendering the integrity protection ineffective. This is because:</t>
            <ul spacing="normal">
              <li>
                <t>The public key in the TXT record is self-declared without external verification</t>
              </li>
              <li>
                <t>Clients have no independent trust anchor to verify the authenticity of the public key</t>
              </li>
              <li>
                <t>SVCB records and agent-dns.json cannot be reliably verified if the TXT record is compromised</t>
              </li>
            </ul>
            <t>For this reason, when using separate keys:</t>
            <ul spacing="normal">
              <li>
                <t>DNSSEC deployment becomes more important to protect the TXT record itself</t>
              </li>
              <li>
                <t>Clients <bcp14>SHOULD</bcp14> treat records from non-DNSSEC zones with appropriate caution</t>
              </li>
              <li>
                <t>Out-of-band key distribution mechanisms <bcp14>MAY</bcp14> be used to establish trust</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="choosing-a-security-mechanism">
          <name>Choosing a Security Mechanism</name>
          <table>
            <thead>
              <tr>
                <th align="left">Scenario</th>
                <th align="left">Recommended Approach</th>
                <th align="left"> </th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">DNSSEC fully deployed</td>
                <td align="left">DNSSEC alone is sufficient</td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">DNSSEC not available</td>
                <td align="left">Use TLS-based signing (Option 1)</td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">High security requirements</td>
                <td align="left">Use both DNSSEC and signing (defense-in-depth)</td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">HTTPS fallback required</td>
                <td align="left">Signing required for JSON integrity</td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">Using separate keys without DNSSEC</td>
                <td align="left">Limited trust; consider additional verification mechanisms</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="svcb-integrity">
        <name>SVCB Integrity Protection</name>
        <t>When signature-based security is used, SVCB records are protected via a digest stored in the TXT record. This section defines the canonicalization and digest computation procedures.</t>
        <section anchor="svcb-canonicalization">
          <name>SVCB Canonicalization</name>
          <t>To compute the svcb-digest, SVCB records <bcp14>MUST</bcp14> be canonicalized as follows:</t>
          <section anchor="step-1-collect-and-sort">
            <name>Step 1: Collect and Sort</name>
            <ol spacing="normal" type="1"><li>
                <t>Collect all SVCB records for the agent's _agent prefix.</t>
              </li>
              <li>
                <t>Exclude AliasMode records (priority = 0).</t>
              </li>
              <li>
                <t>Sort records by priority in ascending order (lowest first).</t>
              </li>
              <li>
                <t>If priorities are equal, sort by TargetName lexicographically.</t>
              </li>
            </ol>
          </section>
          <section anchor="step-2-normalize-each-record">
            <name>Step 2: Normalize Each Record</name>
            <t>For each SVCB record, construct a canonical string in the following format:</t>
            <artwork><![CDATA[
<priority> <target> <params>
]]></artwork>
            <t>Where:
- priority: Decimal integer with no leading zeros
- target: Fully qualified domain name in lowercase, with trailing dot removed
- params: SvcParams in sorted order by key number, formatted as key=value</t>
          </section>
          <section anchor="step-3-svcparam-normalization">
            <name>Step 3: SvcParam Normalization</name>
            <t>SvcParams <bcp14>MUST</bcp14> be normalized as follows:</t>
            <ol spacing="normal" type="1"><li>
                <t>Sort by SvcParamKey number (ascending).</t>
              </li>
              <li>
                <t>Format each parameter as: <tt>key&lt;number&gt;=&lt;value&gt;</tt></t>
              </li>
              <li>
                <t>String values are enclosed in double quotes.</t>
              </li>
              <li>
                <t>List values (e.g., alpn) use comma separation with no spaces.</t>
              </li>
              <li>
                <t>Separate parameters with a single space.</t>
              </li>
            </ol>
          </section>
          <section anchor="canonical-format-example">
            <name>Canonical Format Example</name>
            <artwork><![CDATA[
# Original SVCB records:
_agent.translator.example.com. IN SVCB 2 agent-v2.example.com. (
  alpn=h2 port=443 key65480="v2" key65481="a2a"
)
_agent.translator.example.com. IN SVCB 1 agent-v3.example.com. (
  alpn=h2 port=443 key65480="v3" key65481="a2a,anp"
)

# Canonical representation (sorted by priority):
1 agent-v3.example.com key1=h2 key3=443 key65480="v3" key65481="a2a,anp"
2 agent-v2.example.com key1=h2 key3=443 key65480="v2" key65481="a2a"
]]></artwork>
            <t>Note: alpn is SvcParamKey 1, port is SvcParamKey 3 as defined in <xref target="RFC9460"/>.</t>
          </section>
        </section>
        <section anchor="digest-computation">
          <name>Digest Computation</name>
          <artwork><![CDATA[
canonical_svcb = <line1> + "\n" + <line2> + "\n" + ...
digest_bytes = SHA-256(UTF-8(canonical_svcb))
svcb-digest = Base64Encode(digest_bytes)
]]></artwork>
          <t>The resulting svcb-digest is approximately 44 characters (32 bytes encoded in Base64).</t>
        </section>
      </section>
      <section anchor="signing-spec">
        <name>Signature Specification</name>
        <t>This section defines the signature mechanism when signature-based security is used.</t>
        <section anchor="public-key-requirements">
          <name>Public Key Requirements</name>
          <t>The pk field contains the public key used for signature verification. There are two options:</t>
          <section anchor="when-using-tls-certificate-keys-recommended">
            <name>When Using TLS Certificate Keys (RECOMMENDED)</name>
            <t>The pk field <bcp14>MUST</bcp14> contain the public key from the domain's TLS certificate:</t>
            <ol spacing="normal" type="1"><li>
                <t>Extract the SubjectPublicKeyInfo from the TLS certificate.</t>
              </li>
              <li>
                <t>Encode using Base64 <xref target="RFC4648"/>.</t>
              </li>
              <li>
                <t>The certificate <bcp14>MUST</bcp14> be valid for the agent's domain name.</t>
              </li>
            </ol>
          </section>
          <section anchor="when-using-separate-key-pair">
            <name>When Using Separate Key Pair</name>
            <t>The pk field contains the agent provider's self-managed public key:</t>
            <ol spacing="normal" type="1"><li>
                <t>Generate a key pair using a supported algorithm.</t>
              </li>
              <li>
                <t>Extract the public key in SubjectPublicKeyInfo format.</t>
              </li>
              <li>
                <t>Encode using Base64 <xref target="RFC4648"/>.</t>
              </li>
            </ol>
            <t>Note: When using separate keys, the public key is self-declared and lacks an independent trust anchor. See Security Model Overview for implications.</t>
          </section>
          <section anchor="supported-key-types">
            <name>Supported Key Types</name>
            <ul spacing="normal">
              <li>
                <t>EC P-256 (for ES256 algorithm) - <bcp14>RECOMMENDED</bcp14></t>
              </li>
              <li>
                <t>Ed25519 (for Ed25519 algorithm)</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="signature-input-construction">
          <name>Signature Input Construction</name>
          <t>The signature input <bcp14>MUST</bcp14> be constructed by concatenating the following fields in order, separated by semicolons, with no trailing semicolon:</t>
          <artwork><![CDATA[
signing_input = "v=" + v + ";kid=" + kid + ";alg=" + alg + ";
                  pk=" + pk + ";svcb-digest=" + svcb-digest
]]></artwork>
          <t>Example:
~~~
v=1;kid=key-2025-01;alg=ES256;pk=MFkwEwYHKoZI...;svcb-digest=K7gNU3sdo+OL...
~~~</t>
        </section>
        <section anchor="signature-generation">
          <name>Signature Generation</name>
          <artwork><![CDATA[
signature_bytes = Sign(private_key, UTF-8(signing_input))
sig = Base64Encode(signature_bytes)
]]></artwork>
          <t>Where private_key is either:
- The TLS certificate's private key (Option 1, <bcp14>RECOMMENDED</bcp14>), or
- The agent provider's separately managed private key (Option 2)</t>
          <t>For ES256: signature is 64 bytes (r || s format), resulting in 88 Base64 characters.
For Ed25519: signature is 64 bytes, resulting in 88 Base64 characters.</t>
        </section>
        <section anchor="signature-verification-procedure">
          <name>Signature Verification Procedure</name>
          <t>Clients <bcp14>MUST</bcp14> perform the following steps:</t>
          <ol spacing="normal" type="1"><li>
              <t>Parse TXT record and extract v, kid, alg, pk, svcb-digest, sig fields.</t>
            </li>
            <li>
              <t>Reconstruct signing_input from v, kid, alg, pk, svcb-digest.</t>
            </li>
            <li>
              <t>Decode pk from Base64 to obtain the public key.</t>
            </li>
            <li>
              <t>Decode sig from Base64 to obtain the signature bytes.</t>
            </li>
            <li>
              <t>Verify the signature using the specified algorithm.</t>
            </li>
            <li>
              <t>(<bcp14>RECOMMENDED</bcp14> for Option 1) Verify that pk matches the TLS certificate presented during connection.</t>
            </li>
          </ol>
          <t>If verification fails, the client <bcp14>MUST</bcp14> reject the TXT record.</t>
          <t>When using Option 2 (separate key pair), clients should be aware that the signature only proves consistency between the TXT record content and the private key holder. Without DNSSEC or TLS binding, there is no external trust anchor to verify the key's authenticity.</t>
        </section>
        <section anchor="tls-certificate-binding-verification-option-1-only">
          <name>TLS Certificate Binding Verification (Option 1 Only)</name>
          <t>When TLS certificate keys are used (Option 1), clients <bcp14>SHOULD</bcp14> verify that the pk in the TXT record matches the server's TLS certificate:</t>
          <ol spacing="normal" type="1"><li>
              <t>Establish TLS connection to the agent's domain.</t>
            </li>
            <li>
              <t>Extract the public key from the server's certificate.</t>
            </li>
            <li>
              <t>Compare with the pk field in the TXT record.</t>
            </li>
            <li>
              <t>If mismatch, treat as verification failure.</t>
            </li>
          </ol>
          <t>This binding ensures that the entity controlling the TLS private key is the same entity that published the DNS records.</t>
          <t>Note: This verification is not applicable when separate key pairs are used (Option 2), as the pk in the TXT record will not match the TLS certificate.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-checklist">
      <name>Implementation Checklist</name>
      <section anchor="for-agent-publishers">
        <name>For Agent Publishers</name>
        <ol spacing="normal" type="1"><li>
            <t>Prepare domain name, configure HTTPS and TLS certificate</t>
          </li>
          <li>
            <t>Configure DNS A/AAAA records (basic connectivity)</t>
          </li>
          <li>
            <t>Configure DNS TXT record (_agent.xxx), publish public key</t>
          </li>
          <li>
            <t>Configure DNS SVCB records, declare version and protocols</t>
          </li>
          <li>
            <t>(<bcp14>RECOMMENDED</bcp14>) Publish /.well-known/agent-dns.json fallback file</t>
          </li>
          <li>
            <t>(<bcp14>RECOMMENDED</bcp14>) Enable DNSSEC</t>
          </li>
        </ol>
      </section>
      <section anchor="for-client-developers">
        <name>For Client Developers</name>
        <ol spacing="normal" type="1"><li>
            <t>Query SVCB records, parse version and endpoint information</t>
          </li>
          <li>
            <t>Query TXT records, extract public key</t>
          </li>
          <li>
            <t>(Fallback) If SVCB unavailable, fetch agent-dns.json</t>
          </li>
          <li>
            <t>Connect to endpoint per agent protocol (key65481) specification</t>
          </li>
          <li>
            <t>(<bcp14>RECOMMENDED</bcp14>) Validate DNSSEC</t>
          </li>
        </ol>
      </section>
      <section anchor="dns-record-configuration-example">
        <name>DNS Record Configuration Example</name>
        <artwork><![CDATA[
; Basic connectivity
translator.example.com.    IN A     203.0.113.50
translator.example.com.    IN AAAA  2001:db8::50

; Identity trust anchor (with SVCB integrity protection)
_agent.translator.example.com. IN TXT "v=1;kid=key-2025-01;
                    alg=Ed25519;pk=...;svcb-digest=...;sig=..."

; Version resolution (SVCB)
_agent.translator.example.com. IN SVCB 1 agent-v3.example.com. (
  alpn=h2 port=443 key65480="v3" key65481="a2a,anp"
)
_agent.translator.example.com. IN SVCB 2 agent-v2.example.com. (
  alpn=h2 port=443 key65480="v2" key65481="a2a"
)
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This specification uses DNS as the authoritative source for agent resolution and identity information. Its security objectives are to ensure the authenticity, integrity, and verifiability of resolution results, rather than evaluating agent service quality or behavioral trustworthiness.</t>
      <section anchor="threat-model">
        <name>Threat Model</name>
        <t>This specification primarily considers the following threats:</t>
        <ul spacing="normal">
          <li>
            <t>DNS poisoning or cache pollution leading to incorrect endpoint resolution</t>
          </li>
          <li>
            <t>Tampering with resolution results to redirect clients to unintended endpoints</t>
          </li>
          <li>
            <t>Downgrade attacks inducing clients to use older versions or weaker protocols</t>
          </li>
          <li>
            <t>Trust violations caused by expired or replaced identity declarations</t>
          </li>
        </ul>
      </section>
      <section anchor="mandatory-security-requirements">
        <name>Mandatory Security Requirements</name>
        <t>To address the above threats, this specification mandates:</t>
        <ul spacing="normal">
          <li>
            <t>Clients <bcp14>MUST</bcp14> complete TXT verification before using any SVCB resolution results</t>
          </li>
          <li>
            <t>Clients <bcp14>MUST</bcp14> perform TXT-SVCB consistency checks</t>
          </li>
          <li>
            <t>Clients <bcp14>MUST</bcp14> use TLS <xref target="RFC8446"/> and verify server certificates <xref target="RFC9525"/></t>
          </li>
          <li>
            <t>Clients <bcp14>MUST NOT</bcp14> use endpoints that fail verification</t>
          </li>
          <li>
            <t>Agents <bcp14>MUST</bcp14> synchronously update TXT and SVCB information when versions or endpoints change</t>
          </li>
        </ul>
      </section>
      <section anchor="dnssec-usage">
        <name>DNSSEC Usage</name>
        <ul spacing="normal">
          <li>
            <t>Agent operators <bcp14>SHOULD</bcp14> enable DNSSEC <xref target="RFC4033"/> for their domains to enhance DNS-layer data integrity</t>
          </li>
          <li>
            <t>Clients <bcp14>MAY</bcp14> verify DNSSEC signatures</t>
          </li>
          <li>
            <t>This specification <bcp14>MUST NOT</bcp14> rely on DNSSEC as the sole security mechanism; its absence <bcp14>SHOULD NOT</bcp14> cause system unavailability</t>
          </li>
        </ul>
      </section>
      <section anchor="specification-scope">
        <name>Specification Scope</name>
        <t>This specification guarantees the following properties:</t>
        <ul spacing="normal">
          <li>
            <t>Verifiability of agent identity</t>
          </li>
          <li>
            <t>Integrity and consistency of resolution results</t>
          </li>
          <li>
            <t>Encryption and tamper-proofing of connections</t>
          </li>
        </ul>
        <t>This specification does NOT attempt to address:</t>
        <ul spacing="normal">
          <li>
            <t>Agent capability authenticity</t>
          </li>
          <li>
            <t>Service quality (SLA) or behavioral compliance</t>
          </li>
          <li>
            <t>Agent reputation or governance issues</t>
          </li>
        </ul>
        <t>These concerns should be handled by upper-layer protocols, operational frameworks, or governance mechanisms.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests IANA registration of the following SVCB SvcParamKeys:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Number</th>
            <th align="left">Name</th>
            <th align="left">Meaning</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">65480</td>
            <td align="left">agent-version</td>
            <td align="left">Agent version identifier</td>
            <td align="left">This document</td>
          </tr>
          <tr>
            <td align="left">65481</td>
            <td align="left">agent-protocols</td>
            <td align="left">Comma-separated list of supported agent protocols</td>
            <td align="left">This document</td>
          </tr>
        </tbody>
      </table>
      <t>Note: The values 65480 and 65481 are in the private use range (65280-65534) as defined in <xref target="RFC9460"/>. Upon publication, these should be replaced with IANA-assigned values from the Expert Review range.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1035">
          <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="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="RFC9461">
          <front>
            <title>Service Binding Mapping for DNS Servers</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>The SVCB DNS resource record type expresses a bound collection of endpoint metadata, for use when establishing a connection to a named service. DNS itself can be such a service, when the server is identified by a domain name. This document provides the SVCB mapping for named DNS servers, allowing them to indicate support for encrypted transport protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9461"/>
          <seriesInfo name="DOI" value="10.17487/RFC9461"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="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="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </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="A2A" target="https://google.github.io/A2A/">
          <front>
            <title>Agent2Agent Protocol (A2A)</title>
            <author>
              <organization>Google</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="ANP" target="https://agent-network-protocol.com/">
          <front>
            <title>Agent Network Protocol (ANP)</title>
            <author>
              <organization>ANP Community</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 826?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8V9+3rbRpbn/3yKWnq+L6SbpK52u2nLPbIkdzSxZcWSk8mk
sx6QAEm0SIDBhTJjqZ9ln2WfbM/vnKpCFQjKznTvjL/uiATqeu63Kvb7/daj
R49aj9R5UkRZEhX90yyYFOptkN2E6W2irqPFch4UUQuN3kdJsIhUMYtzNYnn
kZpk6UKF6NEv0jDtr9MyQ5P+MkuLdJzOB4tQFamaRoXKiyAronBA48gcPNYk
zRZBoWjAtozzwozxsv/iNs1upllaLukzP6Lh2gNeyus0U3ESF3EwV3lUlMue
oo4qTeZrlUQRzxqFcUGLpUniLC/UaJ6Ob1Q6oa/RPMyxkHdo3i7iYh61uVuO
fqNIjWdBMo3C5yqM5lERqXYwGmXRqq3iCebJFPfBsvNZmhUY6zhZq5Rmy9Q4
JWAmhRoHCcbCMqKwp0ZlwUMHWTQp5ypJC0wWJ0WWhuWY2mVZmvGyrlJAhlep
buP5HN1okyooi5SgFY+DOa07LLM4mcrusS6ae61ocFUmevkCqtM0+YYgnIzn
ZUg76e/uthVBr90HXvOC9pRoKM0Zv1jBm2AUzXP7hpCkvgI9ekRZRE5IGK1p
LIxQpOmcYUt7JwjRBzwdl1kGQK2iLI/T5DnthRYYpmOM1sa0KvoUEAFGspNr
EF6hKRIz5OomCxYg1H42GQ/VrCiW+XBnZxoXs3I0GKeLnXEwSnfcVjTOT0Qp
QE4W0UjjiNdC64gzAYJGslrKYgMVxhP6gJUKuQJCJwxiCzhaKOEcu8DmqM14
ZkFH9N0ZfFrMeUP//vZNT0XFeDAYdLEp4j6mpaFqn15c9S8IvatIHZ+r4ykm
vAgWQHKQhMR9eTovC5qi3RJy5D7944v37daYIDJNs/WQcDZJWy0NxKFG27iM
+2GS9xMevh9gbPqCsfuZHZdIo5WXo0WcYyPFekn9z8+uXyv1SAXzPKX54iSM
lhH9JynaPdUGbacZMSG+nB+/oj8grfP316/braRcjKJs2AppbcMWcUVOECrz
oSqyMmrR6g9aRCnBUP0lSqIsmLcsQQ3Vj39RP9I37P0veNK6idb0Ohy2VB/Q
4R3gMwENf65+OHmFv3mUrWJCabUpPOXWygil1ipKSlqRUnYy+izb9SdVhMl4
jgb/agiRaIoeB9l4VpGb826HxxL6GxKPjzIiOxpw58vQp37CP9XAVf+BJuk4
/YqRdn4P0gezYjFvtUi2kCQbtvoqS0GNhPIsWqQr5gaWVUCaUiS65kJZP6UE
p5MypodpNg2S+LcA4w3VdU4zzMpAfUhiZu1iTW0iASUtak0d/7XQjQZRWA7G
2HwWTbn7qyj+G1DwiKcN5rfBOlfBinoHozmWME5Dmn5vd3f32SF/LUmGEuWf
zOIkoG4kGNT1m1PViT6No2WhPnzXBVXqdqx3qNtyliZMBF9cGMlZQQlh5Pb2
dqBbDkhd7rRaCXM4bRRjvX99srd78ER//NPh093q457++Ozw8Kn+eLh7cGAa
PNk33Q6fHj4zbf/4jJ62wNPOLMf7x/ijlJEcLCv2RWJcaipXHWrWbUu7ICMV
7MjHNJ0SvVY0RU13uKUhA8X/+sAs8Sc352fMy2p/d/8J1nFx2bAOdREV4GR3
JReXW1aiiVJ6VGYDOGn7emg4dZIuFmUipOUtq9Ui0dpq9fvE9qO8yIJx0Wqx
5iCZWC6wwHwZjWPSr0RWkB+aQVRSydqKPdQigjaN8wWLbyN68oF6VcbzEB3K
ZSp6ksYyY4+ZF1SHcKhAEV0edh4RPwRTdLrSguoVSVR870CCdWniMUm5XDqC
fnpKf9rr9hTZM2E0iRNa+Sy9rRbDGjeGUMa2QuIADPm6hJnwfRnM5ekpGQ+k
0UmlUP/O6+9PL3IaEwPR4uNMD1CseanjbL0s0mkWLGfxWJH0lUmW5Wge5zMa
bRUz8NT1v1+bVfe4JwZclPMi7mu93tNfDXYbhDQsqWA8iwk+ZvUYGzAxgw9I
/Ue0/TyeJsS88TzN0+VsTey7nAV5/BvtCV2CnFEhdBMXgtmcjJZx1LMagC2p
JF2sZcW0yzHbZGFEH0NBHbA9j6bBeK3G81hQ/uMsSoy1giVDQEWflvN4TAyw
tnRFxh7WMIunM5hDyyzGUtaqQ8gLCBRddwxa04ogHw7EvAmW9IBAQZrnU7zg
bWURJBoZrtGnOC8AG2OtQ9lnARF5OS5Kws7tjE2RhAQlmmERhMA4VNHKAJqG
MWSjCLD5OieDiqxO4ZhFHIbE6eIQsF3KmqkF0EeLiHg3GUfuGDkArqGZlmQO
p5PiFoTCpAQWGwdLyG10GgvPgjdodbckfVSErYrZDEzws1m5CBLqSLYBqUOy
y28JBL+WZJ4teEZgRni155CQoNLSMEHYsuFAnRnIGfDSuLTSCDYgIY7gMqZ+
ZIMQwEPWRARUrJ6moi5zPRAZuGtaaRjnY9KMpEuscADVwY+x1jxomHa9TGMs
GV4HaRngCKsMUyYdLQ7EipzO05HY9Tw3eQugo9toPu+XZG+RB5OmIZO4j/RB
XbrRBpdpXhdulq54nSPIrrySXBPSjUL35E9tirHPn7Viu7935VgkvLZFlKHh
t9fXl1c8IKxXMCF9EAkngiyEj8HDQ9jp4c33PfoOZAfhKiC6CxsEh0gFGrES
DeQVjWMyx1hgkfLsq8ePGWzbJcPjx0Mry7AAV+7wpJGRKxqtei+EVkIDkSyv
knnKE6IudQpvAiD9UQDnyKEdmYKdV5pnQmQwCshXXcTaJcQWjDYVOVyxHNYu
ejeGVAiYY62kI0FPen7QI5iSjr+/5w8Xl/f3XR4mpD2WBKtQXHnigCRfkkPb
E8ZkHAGlMWj4NvGmyMlwoq2O9fpORbYZSy2eExCwtlcknMfqeOeY/lmYugQF
p4CWQvwcL8oFvOckohlW1L9nJdpMCMDRGCxXMEvMZEj2+nQmiPPIiUZOl5qw
4YFjBYsFPJjw/7M8F6lJmpOglqQr5iSWBBw/8RlMe+dErXsD9UGkvUeE7p7q
7OEp20p84AuI0Cq9hDzEIuYJW/t2Gkd/+3yeV7RMRA63PhkT5+QipNkQYMNA
fwzshLxwUMqUoYT5I9EjBwN1nIhQ0ExQ0bo1szpiE5LnMvhbniZd3qNWwTx3
SmjkOfJyCWJtHQ7U6zkpR6iZPBqXPO2CvIS5aQIaHpGaAZdfnZ3wMiEt6HkL
2u4kTVbYKzCEd6dM+Py9QuMtw6j99sPVNdxd/FUX7/jz+7PvP5y/PzvF56tv
j9+8sR9ausXVt+8+vDmtPlU9T969fXt2cSqd6anyHrXab49/aotya7+7vD5/
d3H8RsdsXKkPQpfYFfPoMotIfxASWyQWx0QPImlfnVz+3/+zd0iI/l+E6f29
vT8xPeHLs70/HtKXW2IJmY3FkXxFaKlFGiQKEHUjn2wO9iMZOofNx0EwEg6k
xKGNHv8MyPwyVC9G4+Xe4Uv9ABv2HhqYeQ8ZZptPNjoLEBseNUxjoek9r0Ha
X+/xT953A3fn4Ys/k4kVqf7esz+/bAmNTNL5PL1lwyvKFnkVBtPSCXTrIY3Y
nSX3sDUEX2w1o9ZfMKK0/ST2GDGLNqDEjjZ61mqEgZ5VnRuHIeMFPOQviLvQ
FeOBZv+1hNlkPQ4wjcxvBzfqCkMDOJtWlJVLDCOrQftFKqEKd6dwpbbosQEz
8Kko/0ur/LVV5ItZwRAsyDITo6GyFggZd1V/dYchiXFYd6i71l2/+ud+pm/U
D4bWa44y3ynH1iBl1WxwOAZDpdKes2QUYyC31kBALcgnAfbFHsBi1GVQzPrn
VTCO5v1BKwDwLj1ky5MGm4vsZWpEZDojGHBoFgvtscr78P6NWtKAuQxt8HKs
nSQa+yED4yE7ggc0lsGxYxlgTN8kmJYB9SqiZkvgeWUDTMgtIIMh93T7wM7S
oIpZivFOrUanhYFsauFVRs2bVKiF3j/yeICQca41Yqt1BvtIm3x5A0swhANk
PYC5L7PWwDwjSUo7mMVL0P+IWZeZ/PrNFTkpWSHUHLEbtMhr1jsEhG+HDrAN
u9H3JbNGn5V/KBMmHA8gusrLkTxiW092gOHd6B51FVowYJZUQ25cmsoBgtum
F0ECgvpdpMaxkqXyroJkbVwvyyhrQFR7fKG3/DMJtNIO/v73v3NCyhpzQ6LB
kCETOhtpMSXOgyLNBjpu4wZygzyn9RDVDYIYD5a0HHmBtnv7B02dMDVIY4Ng
TEikUfSEaST2JXz5iuEgBwwoyfIkss7ZqzkmFbt6mKFpig1+NtwkhuT3JXzU
eiBF9V+qdFQA9TZAY4bv+RajjTuKxViN5xqN1XCOTYhh2AVfW0qE9XciLG0S
QNccDQQXDFlaVOxJo3FIn0y7cy11VDDGhKxfpXsVUHJBLfqAXU6016qhESmc
QiLtTEIH4X+2zh0ouvaw9oiYaEMOJoxZdpMHncfGDxFv1AE2DwtMfZ23yzpI
L/saPfHNmWLND2wopKaW6oqpUVMdqx3FcvdOe2aulMXw2ipTfe2Y5VYeB578
prFABXdWJkIJzANh7t4W/6BXdw46+Wo86ocxiZCi22ObnKW7v5JGR4SXwMNV
us91fiqq9vzwJneIZ7OmIG990+G8Y67HngVDw2rn17ysY14WEdoWj8oPJMA0
8LazJYZgYcXEFWcbRMd6ENsew2edxwukm8EibOVMyoTFhRYJp4yjqDYRmPtS
Irsu4nYUEe0UzgQtAux7Ka6cR+EVLiH+BJM+WsHEV7DOmvdFrl+BoGugOgVJ
2ShDoDiddEXyV/BGzp9kkcj+j2JtOuLdEdEkMy64Y6elVHt1tPccyYf2TRwe
0bb6SBP0d/XDYD49Ogv3nzzZ+5M8WN4cwTV9etiPEmSawr5ApE9dpYWzt3rT
fBbsP3mqX+rW8XSjlaHydqtr1Ins9DWS/q7lmUMiyNNtFukmj68cjrAGSdYj
bH5in1DtMe8QPKjhd9Haa2StcVAA4Tsw05HbN6X2V5ZF6TvU9WwxVBqCquOw
ESfdzq4IHtx7eSMixwGES2to4gB2sy35gX2Mpd/DEwqSFO6BBG09FdcxHhvH
fFzeZlNQu/5sudF2uzJ77G8PEV5D5KakY+u4XS0eeBVGPhgcnNZDMtbEvnBC
Mi3u26lFU7uNISD29k3gsylZ1ZNYqU4CVJ5pXXiwxnkTraK50sL0PQRTM3Wx
wNXLs0bPnaPF1R+Uo8fFejQxWyuMMUojZNj9WqG042o1viRNstAqBTLOMzo9
N+XCk+NmiCX6R2Q55GYQEwsCC3j1ALngzkOeMTWNpXmS4lvhK3ctcr5CGHGv
Pe3grg7895BSwXyZHM32kZemJR4dHh7QR+KLp08On+0etVcHbeX9e+6b4VXj
vaN2sB/0gmTZdhpfbdt6C2JWrfYtaDtEKOycS4yz+7Wb2zeb2//9m9tv19dv
BSN4ynVsLdarahgHdwb5lxb5jWafdVJIFd+m0nW5STcdQ4ZdyMwtFhzpWUNf
rr2+tOEPdtb1mOAxEzWnz5rGHogu3Hm8Z0BmHXLLDwoU0qP/7g/2Brtt5bTe
s60delcM5J6qaEVYoAL2lfUzXkWzYBXDsDnRQVgSvCavop1u65Ug4t8UVf9S
KN00l6hwmlikWIcQgprnvNK49Ce90iLHwmgVzEsOiUoz8sUJtQT4knBl2cZN
rKCOi3BEUpLHk14chdGtczeabCjKzbQYiGvT5fjN5QU52sQXrRZ/1rtg7Uru
fD0O5hqkOto126f/H3QHD2d4tuZ2QJaSqd9K43bNEgridTLocp2QNl4Au8eF
8UMkeWuyqohNVMlkk/qSOFa+DHS8a1KyXj0/vjj2IgE6RPE+mkuOBLGPV1Fx
GxEZNfF+I0+P51GQ6ewpLalEkYKwN0NZKzoG+J22gqWjo8g2+XHDoWrgSkHN
D5YVHS5dHfSUsKSqWlp681gUjEi7XOrAlCROX5vsyFuj12nvqcmYtVEzk8Pz
13mothppXu01J5ms2AsSPytGqEiTKYHPSY815GYYU8rPz7Rar538DAeIdSxI
c4vQ3q9lhIR6z4SpUX+pi0mINf/t6t2FCW/WfPAADpKGh7EhhqKWTRHRZ1lR
HN7vDDhhfpOkt8lObZ3W0H4bhcQR8K8lbu+3k3JOzliMxHoxETjfkuJY7SwK
QiEujH4iVmL/mksJnYj3DgZ+jlhZlkfFUVlM+s9aJyhD6J9ICGeIeg/EvY8O
dndlqbC0wKI6r8EFwInk8YmRwcfeCHotJCq06BtpFqIBkRVLE9jFT+DNl0WU
S37+4Kn7ck/NyGXsQk45pq1mT0aRtY4FcvysgpepMQ4cP37ChdqbucCB+pDM
4xsxYyuP2el5O4vHM8WFFjoajmZSFi1ahKevOuimYhdrc81YnyNdm+BEtHSC
tuofi5BD4YUY/zyScTJktixCjI6QbMOtaGSzcCg5JBAYuxsuBS+40YJAcR9Z
EB0e+KRyZmToK8LtIup60MejwElOfoF+Ca1cuq3DZRXtOqMJ6TKDfIa7+i85
P24PVduwF1725fEgzaZSXbpDXvRuf29/R7fvcec4dDu6dbHVIvVIGFV6Sf29
LR8E82OB8jKsfF40edsoI5qyKXpsYkX0S0d/I7qTZya0TM9/bnO38xC2UPGJ
a5oJae1fuCE4DRH3KKemn7nQ0LY3D5w54MokU56Dn9eWDlQh1G+87bWhEh6y
6kZaFtVd6PK/fw76vx33/2O3/6dfOtXn/i+PnRfdP7fUxr/OX/86+LrO3cf/
IqWZ97ICBkPD7hwINu3uJLUliMTn+vACJ4P8eHE1gIeGFSB/Q+TzSwWHTejz
85X3dTv8+R2qzrGd9l7bPr6vWvCUv2O42qb92EnzDMF8+ntmiJJywRDhyAmg
omMrFWSaVtIQlWlezvLmH9hvLSRTS0k54Rxn7pb719AYIj1NRBZkWbDeSmM+
87sBn6pLDAvUJ5gtFFwnQeNssCjgkAY+wYJxQb+NLPmNHsB/7qyAFSERSs9/
rQPs1GKv/gZFoPzm6ZMnB0+cl/cenvR6t07cgNsGAcWDkA2QF3wAZ+tsDJP/
/k0ijLB9Wp909MtNamgGjPf6fvsKIKm1pf8PAtt34Du61M86D93t0OdF2GrA
/xaAPLyVKrjk+KS1De35G/qSeIinTdLhCwq2Jp1yP5LrG3INKnPrP8eoqww6
rTNb+P995Vu8hvF1ZQuy3ShiZWNVNkS7OaymbRdHEbPWIyWmASRqq+1kM8wb
UTdGe8gzlvntt69vbs9uf/r2u/Q/zn/72+7J8fc/nevPp8ffj0+/nx6fDQYD
bIzxYIT0zzyIRYYj5SwjV/Kn3RTidGwbkRyHhwf2kebqn9uzfUf51ziNw1ve
O5cBfrbRrGTZ/sWlpKZV729f9f4/e9X7X1z1L5aOxOYU0m+/Pftwcv79yR8Z
IQ59+V4Yh6VL7Yt8fiSGejy9r3s21pupHDbX2UHNsVRGSZLwBEYTSLjqI7rT
ll96zs0A6UPyVmPOxOiys4ecGnJ5Tq4ecIkGUirAqzNT6Z3I4OwzkvFhAlrE
BwNkGc+Y9Ru7iHAYiKMOQH3Ue/mIfRypz0pzJbmWn4oe56IILVZqfGTf6kjR
yjv17t1WNdsRY6dDq/uoV/eRVtdTH65f9591/OG63JG6yOJk9R07Vncr2n9w
DjdUYVn2+XTRxaZ7LKh9HZmTqRUpMHVwgIUxefaJD035ONYxPTkQWOgqL9QG
MV0wwioK4HMnOFbHSTZNOposTq4YU++kYoSrOKokoB2WUDBY3uipdTsseNB6
MpDdr30sD1pPB1720QZZJaKsM37dqnNQmFn4tK4+y1Azab/JneUR8ZxPvIMl
fKhDByMkAiZIyCLesgdm6n2R4pQah8dtGgYFahnHhVUeITAr5KyWQYzwLOJo
dhddmclbAQEnL6Klemoi7TrsNKIZ1Tm9LBFEod56mVUsRscuKjqQYkLEWuxB
Cbg2Y6exgytgheHX05Gamals4DsC3MoGrknQ9e/M9E5Fshwg0TXbb7lm+90K
QZvoVqKNDZWdiNqLLyBB6yAMY5MHEGmFaJGxQJyQDzlHKKbkxZML8ZwP1JnC
rKp0zWR7g1HOh761F2tPkght535lJyaXKCUvITYVnPAyvPrNtl40V8g1FYdK
lsMyu3FS7O6ArLyKUFJDnVNorLnnwSRwtCL2xElJHspIDR1eNO9kimCKDQoF
GxktcRvGybGlMZLoURKQcmW0nHxlFJiavspI3YDyd2iCUTmdSl0XUpJ9dcah
fJtRkHrSWNIeNECKRNBZsoqzNJEjYbeoPdchIfdMoa6G4ZC6pbLPj8whgXuT
StCpLnO4UvLW5iBBdU6HbyRA8N0ooQrikI91jqmHpHBMNRCq3kLyztr6fIDh
vjHZoeWG5DecI23/jPWJnmBCx0kJr6IDdGNMmP6cqwb8c6J2BhseBU4wLDSL
Q9VaLFswbC+s4GScrtfQx1U0f+piMikIkcpF4Q+dt0DGxyZO1J2pXhI7JOXq
Ordw68Ei74Ynuu4bQLrjek03Itmhdcr6errQuatLw7OUmOK3NImkfm0bQO4e
2Km3S2r5YzRSl9+dqw4Xt4iihSLDqV2uwsmj+aRv84FuM1fn5F1TCCHb2sCR
i5ZWS++d7TYcZL+/r+jya6kC2R2vkpOJSh/M4nOsUcip5jp8uZ5DJJ+uUgZI
v8kNRrAdRyBx/ka/0pJOzpAlxmDS6QeXRaRmefPggjU6ZBlVpbKeQBf/u8aI
PX0pHLohuWKuIp9wlTip4Xm65gNkXNjw+1mmuQBZy7Z66s/N+Jm6KP/Me3P6
5rhmwcwCUmCQRzJ6bmvIFkFCgkafd+Eag3dSwrY3ZCo9cSKI3+GceY3OPliT
X4q6Ccn1wCMfT7fEF1TpHzFDaDOxVCx8yLV03zqU41LwDswpsb4USGrbJ3cO
wmsjxslhdYzp2mU9BSrOfavNnFfkm2f4jICMZTjZWbdDxQ65soZ92HZVOlNF
w+qrgsQ8MQW/cB2YzzasZFOoIKrg2t8cRBJbP18ylyHxt/UNnDI+v3DPKxzF
ecHmBJ8jHHXa0RCJIynhaDTCrtmjbHJE6jAVlHhkvI9iES1FkRC4JMvdnIKq
2OPt8U9s5AebZr5Y+dQqXpkDNPXDHl2XFkUgeuOrKV+hU0RSfCEsl+t7HXA2
z8z1X6fjq8Y8aQU96iHFhYwJh41arcePPT37xroDtlqoQRmJu+L5EZVBZw8Q
VIuNC2g58nkmG28IEFxYbBL5urjG3GBBi04nbF4gSjie8al9cs/hL/Y4514U
pGj5Zq9yHtpro/hAaY1wzMFShhSuJ8DR/U1rrBKk9DCaTLgAP9IVN/S/UTQO
iFoY09ebftfG/nwFb6I0uJMqg5x3ZY8jT1hkJ7iDrDpH5gGcoOzwzMMOYavv
czIbnH5mmngQlD6CzpzHJPTMNQ2gvia0gcyIHWKUfnGZCVe1kD+Vy4n6Zsph
qGldLMqUc/MjKDocZ+BM5QJOSZDwURSNjWaKcuClXaUCF1NUuWfwa0LGgZ4R
dog2ONxaDcKnhv67suinE5K4BCAg1Duw7TgbkBgjc4I0rdSEoEiMg5NZmjIA
AsejqGqF7qx7pu7cw1Jw4MQe8WzeLdVOlZ3rGyjKPg/msGdBh+WE6CzWZ1PM
a3Z3zQVO1OsDX9BUVzodYxZIOfa3MelH64R5F4DICFvOc/OpfHKCon6cEEss
i5kej5WftZqN1aZLvqU2Wj+CrBUn3jIsjYBZN2jN8pr1BN4YCQUsPYeSyllC
myBFjR1djDsl5Od2ZsdrIecQ2tGu6l4r8LxmIlqoaT3eq3FmFhmS19WBVh3n
RZo1qQItmZr85HE9xssXnMhwYyc8TTOOoxBW88Cp2K1HiLm+beyGfit7oLYN
EwDxjwF4sWxW01cIj5GteYKDcigExRUFuDZAQt36IfkX3uiTNKuKM8iu+Wgi
drT1TzpOKtVOxyTKcrjxlRFj61aP1G5XgqMIgZj3o7VT2UoAy4lJQ1FAoBQu
wSbo8bWVXQ6XklLTPcyBH6LVYN5TOcal8ZwafNyEMDa+F26UGbiAIGvlAuEw
DtTyIVYpeBf5ymfcHDj0mH4lFxA4KTTJxFX3Q5rCIom06XK4F2aTL9ULSbXQ
B649zV9KaPtHOD+4c860HKI0M6bVKZ1FFkFKOmoeBQyi36IshWdnLhKTk7W/
2pO1zqFWLI+r2RH+7OkavozEEB+LTwsdz0YwSVY1tAcP+OrLXJKagpQRlxYr
udOwpzeqkyf04ohr7lxAH1SjWYibgx52FkPDiUHJZjLmSmPYdPrOrkJ1LOV0
mSLlgJQg0db40oBD9Z+0xBfS6+XRC17ry/9kuhRESsWvEBZZ02kuQiBMS0js
X0sSFjkT4htSVqa1NqOQCuuybQv9Yu1be8SXkMc1wDkH762p7BQhi7K0d+ug
saFZKx/M5mrnMt5l8TSGTHWZd/hPPLRgjyz4BxY2jyv88w6BNE55UJuSq/bl
9EYFo1p1YkdTsCNvusNW8wow+h4mp78HXzd5M/QeHGgTcCwHJDGC7UNluZS+
15MTRbXHB9tPZGjtcioayEmQCslUGTjO8B2pF7jHY++l+oNq/zVp0x9+sO88
wH2CooE+jtZwsY7MYbROPauHMZHVcw6y1bJ77kA6wXfN6bIct/jAvHD6mvvg
PpFILHC9wOEhFxEHYyneP9hXsiJT84ArXng2uRbDiR6pK/9Gr0faXOojSvRg
HNyOUEWFbr/G6tCI0O4msOYcXdbX6tgcnxdVcLwde16iWoZ/s9s1x8/4PFwV
ezKqn62jDzYe+qVIk7ciU0H7YJ5yWxhJRLebSb0qOQ0q0KDJz5NJujXMIPaF
JLPd9LUOtj49fKaT5Hz5mbMro084xrlhwzi6cbAJoYYgxnYU+fnLb7QHKnEH
91ynAOIvOjpBQt4GPUrttzin8kzl4kYa2nd/m0Gpb2Y++ArAuYnYrZGHpRcm
8R1svgOPvAiOpm7znqHrtuY2JbC6sKHl3BppFhxAA04ScGaNXItLPv7amdhT
tRZeXdV3479obs7jcmv9pWpfiyyTt0FCsir7sJXlTm08t7Amt2kpyoW+gvoS
uZKoZhFKJTAuNoEd1bOg5p55tCBblbzHvGeNBWui2ZfantQS66Os5QgnuyGe
V5DUz3G4G99wqBnfca4b33FoGd8bCr6WN9yCCBwN3FPdeOx8FzGtLY8hf8Oh
8vp5cj5KDsw8p5HdaitSIN7w3/1xevHhIA/TP7x7A+ViyzwqjGiOsWrLYqJS
QSgzaSgx8aD0hQoTTw2xMa6cEUH3UYy7pYY6DNUQ7nXC5daB73nZCFwJrvs3
SA0hhrlJE4SNI+53xT1h6A79IxvE3AKSTqbIR8+1JOj2HJ1K1PfsmREFlQId
yKDCHluG/aphashzy3Pgv4vfWyvUWUaZHM7w2AW1HNrwv8RhITcexffAaKm4
6oHSYXxPyUK66fl+si3byVmUwsMzXpzPRKyAHhqLBSr5ZBCo0ARorwFQpObe
F19csp+gu/BCtvapAM6g3lrc40SZqxtiHG3RVPpTBZN++AcyJlWu5L9U/OME
UHSoRnZiyJos9HoygOjWnKXLZxxuJnkb3MqB/6CoAYZLTMBPfEAzwW1GZAqu
7dmvWkTTFrYkoU67Vrw2S+d8fOxHP6AlVVTm/BTvVhiEJLWNLz8QNKahv8m9
0LFml7pBZm6P9ZjHihT+qY5ulbDaTP/Z2/aqOGIFSlPk4hZ/iW2zGU53CYSP
/2Vb7TsbkuXXllZMdsK3ux6yaqwhaCf0rEFdDokt2pOI9fI4l9YkYrQgUx17
6emIdZBv0q9zgbA5ImcO/Foo6TM95rKpLQWY9s47RF7MdT3MczbDhNdOEt8a
Yjy9X9VWr2XTLsdmhdwG2ve7PXPHTiN6+QdVMHj1Ix0b1jdfgA1lv7C+9Mks
Gt/QPjjwzj8/o0/z6t3hqgEI7SxiNDmmNsfQJvEU/CpBaLBfbU7QxoltBiDV
rsfrjDZua+rqG7WcTm7yTgckPn361O3Zo7ZOvuaw3tkNofQevNUgh6T273ox
1wc9cAK3Cr6jgq0utbs6U64FjwWzKE1SKKtojpM3uXO1mb/iJSvMxlvTGi8y
826uN4rVARBBt2NOYHfBUDxdmdhURk9NuJy2dtD40LvnzK5hae7orKpdqtP3
tSvMNsD7gynPc6Dj3HFmECm06sXInjfc89XaFqWif+cX6pjN4/3dg8HuYG/v
YPBk90sdQKnUYXdvGI6eDYfUgeY9b7y1q8MSbOsdwV8TSAPi2k0WeOOpDveG
JzLM68Y4f4+nR1xpT6s2B/mdsji50Px/KsL3PxDL1FevVM7ric5iBfpOqm13
6X3hFxgaD+r69/a7B7TVeZFXYSWpI49XOk5d2HsQ6rnpXkVYveoiwtjcXJdO
3MnFuoeZH8C0gcpKVIQIt3izslpzjJzzDBgjs1ctGPPnlmA7Q9RM/AFSaqx0
2e3fUsQZL4Isnq9tjtDc5mmvEeYhbD67KktwKxXmeiMmQcK/KcbFGCR/Gm7A
gyvG1RD2+uBNaMgvdYUxj2GvdkhxzSkMSEQazcjIxZySrMcPZ0S6UgLufliO
2YB2OuO+cdiY1X0qtI3bKLhxLkHBcFIsQrDV94EoroXgeEH0ackZ2jQzVRgO
6Tj3D+aMgrcBrkVNoSgMEdVCkCnSsrh0U4hohOMNGuqNV2gseMRIUOK5c7bk
DMLJs2VG0SS1PgzuO9Vaqw70+ojGQaQB+9zFNfDHMEc2usgvH13pszSHh0/1
FZPa7hXj0r9FViLnT/af3N/XR8MN2RjRolrsOZiN9YqS42nVLV+ToM/SJC1z
ou1yyWrL+2UFtyL/1rksiAmimk2uljWqDs6IvkzHVD/BHAB+rX0fuRaEV5mq
Q6FxpswVtyw/+JZHvr1Z/7IHalKt9HABcvyTgaIevaoC5eDGBqlYEJpfGDGl
Cs79j5s15s/5pxb44AEtrLrSXHhA6Xp4a4OwRJNAvzc51zc3Sh17zXJd2FTn
mpm4f6jLzNqNkX2nRIF/L8ghzkYJy6WQXBdsZL5726Ou7q58qGYlw4c1AA7k
XhdLNrA0BztVcfanIdb1et6rmhzvXL057takOXNyDMKwA5KsMWUM1HaKMsSE
KSfO81LuGo84/0nPssT13Amrob6et1xit/6dTyRlhIilMGSClCjf6tOrTVRV
iWjvBJcoNWplexcJylnIwMk3L1wyxVsV8pktnQSbXJd0IWnmO7mnGsX0AWsf
1BLxDyKOvbvL7jZuR6pVEZlrkbShYm9M8s9CVxcqoAje25IZZM8O4t5php8E
C/pVfBneGrb6wL1/G+NbjzQyWW5ZNOhVZuaf2kq88Ak4M+Ofg+w8fbL/bLeP
c+yHD9waN1Af8Ms73sW4BZNQRTlWv7GOBg77uK6aS9710mzU4OwTWJewwqkF
Xor5RSc5CPFIHY/hkhEpTkX3fR5KOUAUHrXJL8uj9j31+H8GjBxPEXYAAA==

-->

</rfc>
