<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.3.6) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-duda-agent-id-framework-00" category="info" submissionType="IETF">
  <front>
    <title abbrev="MyDraft">Self-Certifying Identity and Capability-Based Delegation for Autonomous AI Agents</title>

    <author initials="A." surname="Duda" fullname="Andrzej Duda">
      <organization>Univ. Grenoble Alpes, CNRS, Grenoble INP, LIG</organization>
      <address>
        <email>andrzej.duda@univ-grenoble-alpes.fr</email>
      </address>
    </author>
    <author initials="M." surname="Korczynski" fullname="Maciej Korczynski">
      <organization>Univ. Grenoble Alpes, CNRS, Grenoble INP, LIG</organization>
      <address>
        <email>Maciej.Korczynski@univ-grenoble-alpes.fr</email>
      </address>
    </author>
    <author initials="O." surname="Hureau" fullname="Olivier Hureau">
      <organization>Univ. Grenoble Alpes, CNRS, Grenoble INP, LIG</organization>
      <address>
        <email>Olivier.Hureau@univ-grenoble-alpes.fr</email>
      </address>
    </author>
    <author initials="S." surname="Fernandez" fullname="Simon Fernandez">
      <organization>Univ. Grenoble Alpes, CNRS, Grenoble INP, LIG</organization>
      <address>
        <email>Simon.Fernandez@univ-grenoble-alpes.fr</email>
      </address>
    </author>
    <author initials="J." surname="Zhang" fullname="Jun Zhang">
      <organization>Huawei Technologies France S.A.S.U.</organization>
      <address>
        <email>junzhang1@huawei.com</email>
      </address>
    </author>
    <author initials="H." surname="Labiod" fullname="Houda Labiod">
      <organization>Huawei Technologies France S.A.S.U.</organization>
      <address>
        <email>houda.labiod@huawei.com</email>
      </address>
    </author>

    <date year="2026" month="June" day="26"/>

    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    

    <abstract>


<?line 46?>
<t>We present an identity and delegation framework for
secure AI agent communications. The framework introduces a set of
entities including Client AI Agents, Service AI Agents, Agent Providers,
and Agent Brokers, together with a Trustful Mutable Store responsible
for maintaining cryptographically verifiable identity bindings. We
propose self-certifying identifiers derived from public keys, realized
as DNS-based Self-certifying Identifiers (SIDs) and IPFS-based
Identifiers (IIDs), which provide lightweight decentralized identities
for agents. To support trust establishment, we distinguish identity from
trust and introduce a model that combines globally meaningful names,
cryptographic identities, and trusted intermediaries such as Agent
Providers and Agent Brokers. We show how DNS/DNSSEC and IPFS/IPNS can be
used as distributed, highly available, integrity-protected, and mutable
infrastructures for managing AI agent identities and trust metadata.</t>



    </abstract>



  </front>

  <middle>


<?line 61?>

<section anchor="introduction"><name>Introduction</name>

<t>Agent-to-agent communication is expected to become a major component of
the emerging Internet of Agents, where autonomous AI agents discover
services, exchange information, and perform tasks on behalf of users and
organizations. This evolution raises fundamental challenges in identity
management, trust establishment, delegation, authentication, and
authorization at a scale potentially exceeding that of today's Internet
users. Existing mechanisms based on certificates, federated identity
systems, and bearer tokens were primarily designed for human users and
service-oriented architectures and do not adequately address the
requirements of highly dynamic, autonomous, and short-lived AI agents.</t>

<t>In this draft, we present an identity and delegation framework for
secure AI agent communications. It relies on the following key entities:
AI agents, their providers, and brokers that support discovery and
coordination. All entities are identified with self-certifying
identifiers derived from public keys, with key material resolved through
a distributed, mutable, and integrity-protected store. Building on this
foundation, we describe a three-step approach to secure AI agent
interaction: i) discovery through indexed metadata describing agent
capabilities, ii) establishment of jointly defined credentials enabling
authentication and authorization, and iii) a secure communication
protocol between AI agents. The framework enables trustworthy,
interoperable, and policy-constrained collaboration between autonomous
AI agents in open environments.</t>

<t>The framework further introduces two complementary protocols. The
Delegation and Authorization Protocol (DAP) enables trusted entities to
negotiate mission-specific capabilities that define participating
agents, permissions, constraints, and operational controls. The Identity
and Authentication Protocol (IDAP) uses self-certifying identities,
capability validation, proof of possession of cryptographic keys, and
ephemeral Diffie-Hellman key exchange to provide authentication,
authorization, replay protection, and forward secrecy. Together, these
mechanisms establish a foundation for interoperable, auditable, and
trustworthy AI agent ecosystems, enabling secure delegation and
communication across organizational and administrative boundaries.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>The key words "MUST", "MUST NOT", "SHOULD", and "MAY"
in this document are to be interpreted as described in
<xref target="RFC2119"/> and <xref target="RFC8174"/>.</t>

</section>
<section anchor="architecture-for-ai-agent-identities"><name>Architecture for AI Agent Identities</name>

<section anchor="identity-and-trust"><name>Identity and Trust</name>

<t>A fundamental requirement for secure AI agent communications is a robust
notion of <em>identity</em>.
At its core, an identity consists of two elements: an <em>identifier</em> and a
<em>public key</em>. The identifier provides a stable and globally unique
reference to an agent, while the public key enables cryptographic
operations such as authentication, signature verification, and secure
key establishment. The public key gives the identity its cryptographic
verifiability: an agent can prove possession of the corresponding
private key, allowing other parties to verify that they are
communicating with the intended entity. However, an identifier and a
public key alone are insufficient. To make the identity usable, there
must be a reliable mechanism for storing and retrieving the binding
between the identifier and the public key. Without such a binding, an
attacker could substitute a different key and impersonate the agent.</t>

</section>
<section anchor="entities"><name>Entities</name>

<t>We assume two classes of providers in the agent ecosystem: <em>Client AI
Agent Providers</em> and <em>Service AI Agent Providers</em>. A Client AI Agent
Provider manages a set of <em>Client AI Agents</em> that act on behalf of users
or organizations and may delegate tasks to other agents. Conversely, a
Service AI Agent Provider manages <em>Service AI Agents</em> that offer
specialized capabilities to external agents. Both types of providers can
serve as trust anchors, establishing the identity of the agents they
manage and taking responsibility for their operation. In this model,
individual AI agents are lightweight entities that possess cryptographic
identities and credentials, while the stronger trust relationships are
associated with the providers that operate them.</t>

<t>Both Client and Service AI Agents are designed to have lightweight
identities and to interact autonomously. A Client AI Agent initiating a
delegation must present cryptographic evidence that it possesses the
necessary authority to request the service. Likewise, a Service AI Agent
must verify that the requesting agent holds the appropriate capabilities
and delegation rights before executing the requested task. This
capability-based model enables fine-grained authorization and controlled
delegation while maintaining cryptographic accountability.</t>

<t>To facilitate cooperation among independently operated agents, we
introduce an additional entity, the <em>Agent Broker</em>. The Agent Broker
acts as a trusted intermediary between Client and Service Providers by
maintaining an index of AI agent descriptions, capabilities, service
endpoints, and trust-related metadata. When a Client AI Agent needs to
delegate a task, it first queries the Agent Broker to discover suitable
Service AI Agents capable of performing the requested operation. The
broker does not necessarily participate in the execution of the task
itself; rather, it supports discovery, selection, and trust
establishment by providing reliable information about available agents
and their providers. In this way, the Agent Broker plays a role
analogous to a directory service, while Client Providers and Service
Providers remain the primary trust anchors responsible for the
identities and behavior of the agents they manage.</t>

</section>
<section anchor="trust-anchors-and-naming"><name>Trust Anchors and Naming</name>

<t>In an <em>Internet of Agents</em>, a similar model is likely to
emerge. AI agents may be associated with Agent Providers or
Agent Brokers that act as trusted intermediaries, vouching for the
identity, capabilities, or reputation of the agents they host or manage.
These entities can serve as recognizable trust anchors for other
participants in the ecosystem. Trust is therefore not attached solely to
an agent's cryptographic identity, but also to the chain of entities
standing behind it. An organization may trust an agent because it trusts
its provider, and it may trust the provider because it is associated
with a well-known domain or institution.</t>

<t>Trust relationships must also support transitivity and reasoning. If
entity A trusts entity B, and entity B delegates authority to entity C,
then A may decide to trust C under specific conditions. Such trust
chains require cryptographic continuity and integrity guarantees at
every step. Delegations, endorsements, and attestations must be
cryptographically bound to identities so that their authenticity and
provenance can be verified. In this model, trust becomes a verifiable
graph of relationships rooted in recognized trust anchors and maintained
through cryptographically protected delegation chains. Consequently,
identity answers the question "Who is this agent?", while trust answers
the more difficult question "Why should I believe this agent and accept
its actions?".</t>

<t>In the proposed framework, AI agent identities are based on identifiers
bound to public keys, while trust is rooted in domain names,
organizations, Agent Providers, and Agent Brokers that act as trust
anchors. This separation allows identity to remain cryptographically
verifiable and globally interoperable, while enabling trust to be
established, delegated, and reasoned about through accountable and
verifiable relationships.</t>

<t>The relationship between naming and trust is fundamental in any
large-scale digital ecosystem. Trust cannot be established solely from
cryptographic identifiers, as humans and organizations reason about
trust using meaningful names rather than cryptographic keys. A global
namespace provides the bridge between machine-verifiable identities and
human-understandable entities. The Domain Name System (DNS) already
fulfills this role on today's Internet by providing globally unique and
semantically meaningful names that can be associated with organizations,
services, and users.</t>

<t>In an Internet of Agents, DNS can serve as a unifying namespace for all
participants in the ecosystem. Every entity, including Client and
Service AI Agents, Agent Providers, and Agent Brokers-, can be
identified by a DNS name as its primary identifier. Unlike opaque
identifiers or public-key fingerprints, DNS names carry semantic
information that can be interpreted by humans and automated systems
alike. For example, an agent associated with <strong><spanx style="verb">travel.booking.com</spanx></strong>
immediately conveys more information than a random cryptographic
identifier, allowing participants to reason about ownership,
responsibility, and organizational affiliation.</t>

<t>This semantic meaningfulness is essential for trust reasoning. When
evaluating whether an agent should be trusted, a participant may not
know the agent directly, but it may recognize and trust the organization
controlling the associated domain name. Trust can therefore be derived
from a chain of relationships rooted in well-known domains and
institutions. An organization may trust a Service AI Agent because it is
operated by a recognized Agent Provider, which in turn is associated
with a reputable domain. Similarly, Agent Brokers can leverage
domain-based identities to establish trust relationships across
administrative boundaries. DNS names thus provide the contextual
information needed to interpret cryptographic identities and support
trust transitivity.</t>

<t>Combining DNS-based naming with cryptographic identities yields a
powerful model: public keys provide cryptographic verifiability, while
DNS names provide semantic context and accountability. DNSSEC can
further strengthen this relationship by protecting the integrity of the
bindings between names, keys, and delegations. In this way, DNS becomes
not only a naming infrastructure but also a foundation for scalable
trust establishment, delegation, and discovery in the emerging Internet
of Agents.</t>

</section>
<section anchor="trust-relationships"><name>Trust Relationships</name>

<t>To illustrate the relationships between Agents and their Providers,
let us consider an example of an AI agent responsible 
for protecting an organization's infrastructure. Such an Agent may need
to perform several tasks, including scanning networks, analyzing
threats, mitigating attacks, and monitoring systems. A Client AI Agent
Provider could therefore manage agents such as <em>React</em>, <em>Mitigate</em>, and
<em>Scan</em>, each specialized in a particular aspect of incident response.
When the Scan agent identifies a suspicious condition requiring more
advanced analysis, it may decide to delegate part of its mission to an
external service. Rather than implementing all capabilities locally, the
agent can rely on specialized Service AI Agents managed by a Service AI
Agent Provider. In our example, the Service Provider offers agents such
as Detect, Analyze, and Monitor, which provide advanced threat
detection, forensic analysis, and continuous monitoring services.</t>

<t>We can observe that trust is not directly established
between individual agents but it is instead rooted in a set of trusted
entities and the infrastructure: the Client AI Agent Provider, the
Service AI Agent Provider, the Agent Broker, and a <em>Trustful Mutable
Store</em>, which acts as a
common source of truth for identities, public keys, and metadata.
The Agents themselves possess lightweight identities and are not
expected to maintain long-term reputations. Instead, trust is derived
from the entities that manage, discover, and authenticate them.</t>

<t>The first level of trust exists between an AI agent and its provider.
Client AI Agents such as React, Mitigate, and Scan trust their Client
Provider to establish and maintain their identities, credentials, and
delegated authorities. Similarly, Service AI Agents such as Detect,
Analyze, and Monitor trust their Agent Provider to manage their
identities and publish accurate information about their capabilities. In
this sense, both Providers act as Trust Anchors responsible for the
Agents operating under their control.</t>

<t>A second trust relationship exists between the Providers and the Agent
Broker. It maintains an index of agent descriptions, capabilities, and
service metadata, allowing agents to discover suitable service
providers. Agent Providers trust the Agent Broker to correctly index and
publish metadata, while the Agent Broker trusts the Agent Providers as
authoritative sources of information about the Agents they manage. This
relationship is essential because agent discovery precedes any
cooperation or delegation.</t>

<t>Alongside agent entities, we introduce the notion of the <em>Trustful Mutable Store</em>.
Both
Providers interact with this store and trust its integrity and
availability. The store provides cryptographic continuity by maintaining
the bindings between identifiers, public keys, Agent Providers, and
delegations. As a result, identities and trust assertions can be
independently verified rather than relying solely on statements made by
individual Agents.</t>

<t>Initially, there may be no
direct trust between these two agents. Trust is established indirectly
through a chain of trusted intermediaries. A Client AI Agent may trust a
Service AI Agent because it trusts its own Provider, which trusts the
Agent Broker and the Trustful Mutable Store, and because the Service AI
Agent is vouched for by its Service Provider. This creates a form of
trust transitivity in which trust is derived from verifiable
relationships among trusted entities rather than from direct prior
knowledge of a remote AI Agent. The Service AI Agent performs a
symmetrical reasoning process before accepting a delegated task.</t>

<t>Consequently, the framework separates identity from trust. Identity
is established through cryptographic bindings between identifiers and
public keys stored in the Trustful Mutable Store, a highly distributed
and available infrastructure that guarantees the integrity of stored
information, while trust emerges from a graph of relationships involving
Agent Providers, Agent Brokers, and other recognized trust anchors. The
resulting trust chain can be verified cryptographically and traced back
to accountable organizations, typically identified through DNS domain
names, which provide the semantic context necessary for human and
machine trust reasoning.</t>

<t>Trust extends beyond identity. Knowing an identifier and a public key
allows a party to verify who an agent is, but not whether it should be
trusted. We therefore define trust as the combination of a name, an
identifier, and a public key. Names, provided through a global namespace
such as DNS, introduce semantic meaning and organizational context that
are absent from cryptographic identifiers alone. They enable agents,
organizations, and users to reason about ownership, responsibility, and
reputation. Trust can then be anchored in recognized entities associated
with these names, such as Agent Providers, Agent Brokers, or other
well-known organizations. These trusted entities act as trust anchors
and intermediaries, allowing trust to propagate through verifiable
delegation chains. As a result, trust becomes a graph of
cryptographically protected relationships rooted in globally unique and
semantically meaningful names, enabling scalable trust reasoning and
cooperation in the Internet of Agents.</t>

<t>Figure below illustrates the identity and delegation layer usable by A2A, MCP,
ACP, or other agent communication protocols. It presents the entities and their
relationships in the framework.</t>

<figure><artwork><![CDATA[
+------------------+               
| agent metadata   |           +-------------------------+
| identities-keys  |-----------|     AI Agent Providers  |
+------------------+           +-------------------------+
         |                        |                   |
         | identity binding       | Capability        | Capability   
         | public keys            |                   |         
         v                        v                   v
+------------------+      +------------------+      +------------------+
| Trustful Mutable |      |     Client       |      |     Service      |
|       Store      |<---->|                  |----->|                  |
| identities-keys  |      |     AI Agent     | task |     AI Agent     |
|     metadata     |      |                  |      |                  |
+------------------+      +------------------+      +------------------+
]]></artwork></figure>

</section>
</section>
<section anchor="identifiers-and-protocols"><name>Identifiers and Protocols</name>

<t>In this section, we present the details of identifiers and protocols for
secure communication between AI Agents.</t>

<section anchor="self-certifying-agent-identifiers"><name>Self-Certifying Agent Identifiers</name>

<t>Assume that an entity generates a pair of keys: public key <spanx style="verb">P</spanx> and
secret key <spanx style="verb">S</spanx>. We define a SID (Self-Certifying
Identifier) as a concatenation of the Context and the Context-dependent
Identifier (CI):</t>

<figure><artwork><![CDATA[
SID = Context || CI,
]]></artwork></figure>

<figure><artwork><![CDATA[
CI = base32(ripemd160(sha256(P))),
]]></artwork></figure>

<t>where <em>sha256</em> and <em>ripemd160</em> are hash functions resulting in 256 and
160 bits, respectively, and <em>base32</em> is a binary-to-text encoding
scheme. The Context represents the algorithm used for the
generation of the keys and key sizes (just <spanx style="verb">1</spanx> in example domain names
below). The <em>base32</em> encoding represents a binary string with <strong><spanx style="verb">0-9</spanx></strong>
digits and some lower case letters (excluding characters hard to
distinguish like <strong><spanx style="verb">i</spanx></strong>, <strong><spanx style="verb">l</spanx></strong>, <strong><spanx style="verb">o</spanx></strong>).</t>

<t>The advantage of SID is that a Server AI Agent can trust
another Client AI Agent because it can prove the possession of the
private key associated with the public key from which SID
is derived. Nevertheless, security depends on the trustful binding of
the SID and the public key.</t>

</section>
<section anchor="trustful-mutable-store"><name>Trustful Mutable Store</name>

<t>In addition to Self-Certifying Identifiers (SID), the
framework requires a trustworthy mechanism for maintaining the binding
between an SID and the corresponding public key. While the
SID itself can be derived from the public key, agents
interacting for the first time must still be able to resolve an
identifier into the current public key material and associated metadata.
To support this functionality, we introduce a Trustful Mutable Store,
responsible for storing and distributing
SID-to-public-key bindings.</t>

<t>The Trustful Mutable Store must satisfy several fundamental
requirements. First, it must be distributed and highly available, as
agent communications are expected to occur at Internet scale and cannot
depend on a single centralized service. Second, it must provide strong
integrity guarantees, ensuring that any public key material or metadata
retrieved from the store can be cryptographically verified and has not
been tampered with. Third, unlike traditional public-key infrastructures
that assume relatively stable identities, AI agent ecosystems are
characterized by highly dynamic and often short-lived agents.
Consequently, the store must support mutability, allowing key bindings,
metadata, and delegation information to be updated efficiently while
preserving verifiability and accountability.</t>

<t>Several existing systems illustrate different subsets of these
properties. Blockchain-based systems such as Bitcoin and Ethereum
provide highly distributed, highly available, and integrity-protected
storage through consensus mechanisms. However, their data model is
fundamentally immutable, making them less suitable for managing rapidly
evolving agent identities and delegations. At the other end of the
spectrum, DNS combined with DNSSEC offers a globally distributed, highly
available, integrity-protected, and inherently mutable infrastructure.
DNSSEC protects the authenticity of records through cryptographic
signatures while allowing records to be updated as identities and
services evolve. Similarly, the InterPlanetary File System (IPFS)
provides a distributed and integrity-protected storage substrate.
Combined with mutable naming mechanisms such as IPNS, it can support
updates while preserving content authenticity.</t>

<t>These observations suggest that a Trustful Mutable Store for AI Agents
should combine the scalability and availability of Internet-scale
distributed systems with cryptographic integrity guarantees and support
for controlled updates. Such a store provides the missing link between
self-certifying identities and trust establishment by enabling
participants to securely resolve identifiers, retrieve public keys,
verify delegations, and discover associated metadata. It therefore forms
a critical component of the identity infrastructure required for a
large-scale Internet of Agents.</t>

<t>A Trustful Mutable Store can be realized using different distributed
infrastructures, each offering a different balance between naming,
integrity, availability, and mutability. Two particularly relevant
candidates are DNS and IPFS. DNS provides a globally deployed and
operationally proven naming infrastructure that combines distributed
administration with hierarchical delegation. Through DNSSEC, it offers
integrity protection for records while retaining the ability to update
information over time. In this implementation, SID can be
represented as domain names or associated with domain names, while
public keys, delegation information, and metadata can be stored in DNS
records, for example as structured <strong><spanx style="verb">tag=value</spanx></strong> attributes in TXT
records. DNS also naturally supports organizational delegation: Agent
Providers can manage their own namespace slices, operate their own
authoritative DNS services, and independently create, update, or remove
agent identities. This hierarchical model aligns well with the need to
manage large numbers of agents and their highly dynamic lifecycles.</t>

<t>An alternative approach is provided by IPFS and its naming layer, the
InterPlanetary Naming System (IPNS). IPFS stores content under
content-derived identifiers (CIDs), the cryptographic hashes of the
content itself that provide strong integrity guarantees and high
availability through a peer-to-peer network. Because CIDs are immutable,
IPNS introduces a mutable naming mechanism in which a name is derived
from a public key and resolved through records stored and replicated in
a Distributed Hash Table (DHT). An IPNS record can bind an IPNS name to
an IPFS CID containing immutable metadata, including public keys,
validity periods, purposes, delegation information, and cryptographic
signatures. This model naturally supports self-certifying identities, as
the name itself is derived from the public key. Consequently, both
DNS/DNSSEC and IPFS/IPNS satisfy the core requirements of a Trustful
Mutable Store---distribution, availability, integrity protection, and
support for updates---while offering different trade-offs between
human-readable naming, administrative delegation, and cryptographic
self-certification.</t>

</section>
<section anchor="delegation-authentication-and-authorization-protocols"><name>Delegation, Authentication, and Authorization Protocols</name>

<t>Before a Client AI Agent can delegate a task to a Service AI Agent,
their respective Providers must first establish a common authorization
framework. This goal can be achieved with the Delegation and
Authorization Protocol (DAP), executed between the Client Provider and
the Service Provider. DAP results in the creation of a <em>Capability</em>, a
cryptographically protected authorization token that specifies the
entities participating in the mission, including the Client Provider,
Service Provider, Client AI Agent, and Service AI Agent. The Capability
also defines the authority granted for the mission, such as permitted
actions, roles, quotas, spending limits, validity periods, and auditing
requirements, as well as protocol-level controls including nonces,
sequence numbers, replay protection, and one-time or repeated use
constraints. The Capability is jointly approved, signed by both
providers, and ecrypted, ensuring that the delegation is explicitly
authorized by the organizations responsible for the participating
Agents.</t>

<t>Once the Capability has been established, the Client AI Agent can
autonomously initiate the delegated task. The agent possesses its own
cryptographic identity and presents the Capability as proof of
authorization when interacting with the selected Service AI Agent.
Authentication and secure communication are performed using the Identity
and Authentication Protocol (IDAP), which allows agents to authenticate
each other based on their identifiers and public keys while establishing
a forward-secure session key. During this process, the Service AI Agent
verifies both the identity of the requesting agent and the validity of
the Capability before executing the requested operation. This separation
of responsibilities allows DAP to govern delegation and authorization at
the provider level, while IDAP enables secure and autonomous
agent-to-agent communications at the operational level.</t>

</section>
<section anchor="capability"><name>Capability</name>

<t>We define <spanx style="verb">CAP</spanx>, an authorization Capability as</t>

<figure><artwork><![CDATA[
CAP = [sp, cp, ca, sa, authority, control],
]]></artwork></figure>

<t>where <strong><spanx style="verb">cp</spanx></strong> and <strong><spanx style="verb">sp</spanx></strong> identify the Client and Service Providers,
<strong><spanx style="verb">ca</spanx></strong> and <strong><spanx style="verb">sa</spanx></strong> identify the participating Agents. Other
parameters are as follows: <em>authority</em> specifies the permissions and
limits (allowed actions, roles, quotas, budgets, time window, audit
requirements, etc.) and <em>control</em> defines protocol-level requirements
such as replay and usage protections (nonces, sequence numbers, validity
periods, one-time or repeated use, auditing obligations, quotas,
budgets, and other operational limits.</t>

<t>The capability is jointly
approved by both providers and is therefore jointly signed using their
private keys <spanx style="verb">S_sp,S_cp</spanx>, thus establishing a cryptographically
verifiable agreement on the delegated mission. It is also encrypted with
the public key <spanx style="verb">P_sa</spanx> of the Service Agent:</t>

<figure><artwork><![CDATA[
Enc-CAP =  {[CAP]S_sp,S_cp}P_sa
]]></artwork></figure>

</section>
<section anchor="overall-architecture"><name>Overall Architecture</name>

<t>The architecture
consists of four main entities: a Client Provider, a Service Provider,
an Agent Broker, and a Trustful Mutable Store. The Client Provider
manages a set of Client AI Agents, with the Client Agent identified as
<strong><spanx style="verb">ca</spanx></strong>. Similarly, the Service Provider manages a set of Service AI
Agents and the Service Agent is identified as <strong><spanx style="verb">sa</spanx></strong>. Each provider and
each agent possesses a self-certifying identifier derived from a public
key. The bindings between identifiers and public keys (e.g., <strong><spanx style="verb">ca</spanx></strong> -
<strong><spanx style="verb">P_ca</spanx></strong>, <strong><spanx style="verb">sa</spanx></strong> - <strong><spanx style="verb">P_sa</spanx></strong>, <strong><spanx style="verb">cp</spanx></strong> - <strong><spanx style="verb">P_cp</spanx></strong>, and <strong><spanx style="verb">sp</spanx></strong> -
<strong><spanx style="verb">P_sp</spanx></strong>) are stored in the Trustful Mutable Store, which can be
implemented using infrastructures such as DNS/DNSSEC or IPFS/IPNS. The
store provides globally accessible, integrity-protected, and updatable
identity information.</t>

<t>To facilitate discovery, both Client and Service AI Agents publish
metadata describing their capabilities so that an Agent Broker can gather this information and
maintain an index of available services. When a Client AI Agent needs
to delegate a task, it first queries the Agent Broker to identify a
suitable Service AI Agent. So for example, the Client
Agent (<strong><spanx style="verb">ca</spanx></strong>) can discover through the broker's metadata index
the Service Agent (<strong><spanx style="verb">sa</spanx></strong>) as a suitable
executor of a given task. The Agent Broker
therefore acts as a discovery service and a trusted intermediary that
enables cooperation among independently managed agents.</t>

<t>The cooperation of agents requires two protocols: i) DAP (Delegation and
Authorization Protocol) for negociating the terms of the mission and
creating Capability for further authorization of Agents and ii) IDAP
(IDentity and Authentication Protocol) for secure authentication and
authorization of the Client Agent based on Capability so the Service
Agent can perform a given task.</t>

<t>Before performing the task, Client Provider uses DAP to to establish a
mission-specific Capability that defines: i) the <em>entities</em> involved in
the mission (<strong><spanx style="verb">ca</spanx></strong>, <strong><spanx style="verb">sa</spanx></strong>, <strong><spanx style="verb">cp</spanx></strong>, <strong><spanx style="verb">sp</spanx></strong>), ii) the
<em>authority</em> that specifies conditions and limits of the mission (allowed
actions, roles, quotas, budgets, time window, audit requirements, etc.),
and iii) <em>control</em> that specifies protocol requirements (nonce, sequence
number, one-time or repeated use, etc.). Capability is jointly signed by
the secret keys of the Service and Client Providers and encrypted with
the public key of the Service Agent.</t>

<t>The Client Agent then uses IDAP for authentication and secure connection
to the Service Agent. It authenticates itself based on its identifier
(<strong><spanx style="verb">ca</spanx></strong>) and uses ephemeral Diffie-Hellman to create a session key.
The Detect Agent checks the Capability signatures by getting the
corresponding public keys from the Trustful Mutable Store (e.g.,
<strong><spanx style="verb">P_ca</spanx></strong> corresponding to <strong><spanx style="verb">ca</spanx></strong>). Based on the validated
Capability, the target agent accepts the authorized mission and executes
the tasks following the terms in Capability (limits, conditions).</t>

<t>The capability therefore serves as the authorization artifact for the
mission, while IDAP provides secure authentication and key
establishment. Together, DAP and IDAP separate authorization from
communication security, allowing Agent Providers to define delegation policies
while enabling their Agents to interact autonomously and securely.</t>

</section>
</section>
<section anchor="dap-delegation-and-authorization-protocol"><name>DAP (Delegation and Authorization Protocol)</name>

<t>The Delegation and Authorization Protocol (DAP) is executed between a
Client Provider and a Service Provider before any agent-to-agent
interaction takes place. Its purpose is to establish a mutually agreed
authorization framework governing a delegated mission.</t>

<t>Before negotiating a Capability, the Client Provider and the Service
Provider first authenticate each other using their identifiers and
public keys resolved from the Trustful Mutable Store. Each side proves
possession of its private key by signing an ephemeral Diffie-Hellman
contribution and the current protocol transcript, which prevents
impersonation and binds the negotiation to the authenticated Providers.</t>

<t>After authentication, both Providers derive <spanx style="verb">K_dap</spanx>, a shared session
key using ephemeral Diffie-Hellman:</t>

<figure><artwork><![CDATA[
K_dap = KDF[DH(eph_cp, eph_sp), transcript],
]]></artwork></figure>

<t>where <spanx style="verb">eph_cp, eph_sp</spanx> are ephemeral Diffie-Hellman shares of
Client and Service Providers, respectively, and KDF is
the Key Derivation Function.</t>

<t>All subsequent negotiation messages are encrypted and
integrity-protected with <spanx style="verb">K_dap</spanx>, which ensures that the proposed
mission, identities of the participating agents, roles, budgets, limits,
and operational conditions are not exposed to third parties. The
negotiation can then proceed through proposal, counterproposal,
acceptance, and finalization messages inside the protected channel.</t>

<t>The final output of the protocol is a signed Capability defining the
mission:</t>

<figure><artwork><![CDATA[
CAP = [sp, cp, ca, sa, authority, control],
]]></artwork></figure>

<figure><artwork><![CDATA[
Sig-CAP =  [CAP]{S_sp,S_cp}
]]></artwork></figure>

<t>where <em>authority</em> defines conditions and limits of the mission (allowed
actions, roles, quotas, budgets, time window, audit requirements, etc.),
and <em>control</em> supports lifecycle management, replay protection,
auditing, discovery, and protocol operation: nonce, sequence number,
one-time or repeated use.</t>

<t>The signed Capabilityis then encrypted with the encryption key <spanx style="verb">P_sa</spanx>
of the Service AI Agent:</t>

<figure><artwork><![CDATA[
Enc-CAP = [Sig-CAP]P_sa
]]></artwork></figure>

<t>It can then be delivered only to authorized parties, for example the
Service AI Agent. It must be able to decrypt or unwrap the Capability
when IDAP starts, while unauthorized observers cannot learn the mission
content.</t>

<t>The protocol flow between the Client Provider (CP) and the Service
Provider (SP) is as follows:</t>

<t><list style="numbers" type="1">
  <t>CP <spanx style="verb">-&gt;</spanx> SP: CP identifier, eph_cp ephemeral
DH share, signature with <spanx style="verb">S_cp</spanx></t>
  <t>SP <spanx style="verb">-&gt;</spanx> CP: SP identifier, eph_sp ephemeral
DH share, signature with <spanx style="verb">S_sp</spanx></t>
  <t>CP and SP: verify identities, derive <spanx style="verb">K_dap</spanx></t>
  <t>CP <spanx style="verb">left-&gt;</spanx> SP: encrypted negotiation of mission,
authority, limits, control parameters</t>
  <t>CP and SP: jointly sign Capability</t>
  <t>CP/SP: encrypt Capability with <spanx style="verb">P_sa</spanx> for authorized use</t>
  <t>CP <spanx style="verb">-&gt;</spanx> Client Agent: encrypted signed Capability</t>
</list></t>

<t>DAP provides the following security properties:</t>

<t><list style="symbols">
  <t>mutual authentication between Client Provider and Service Provider,</t>
  <t>confidential negotiation, because all mission parameters are exchanged
under an ephemeral session key,</t>
  <t>forward secrecy, since <spanx style="verb">K_dap</spanx> comes from ephemeral
Diffie--Hellman,</t>
  <t>capability confidentiality, because the resulting capability is
encrypted,</t>
  <t>integrity and non-repudiation, because the capability is signed by
both Providers,</t>
  <t>replay protection, through nonces, sequence numbers, timestamps, and
expiry,</t>
  <t>clear delegation chain in which the Client Provider empowers the
Client AI Agent and the Service Provider empowers the Service AI
Agent.</t>
</list></t>

</section>
<section anchor="idap-identity-and-authentication-protocol"><name>IDAP (IDentity and Authentication Protocol)</name>

<t>The Identity and Authentication Protocol (IDAP) is executed directly
between a Client AI Agent and a Service AI Agent once a valid Capability
has been established through DAP. Its purpose is to authenticate the
participating agents, verify authorization, and establish a secure
communication channel. The protocol begins when the Client AI Agent
sends the Capability together with an ephemeral Diffie--Hellman public
share. To prove possession of its identity, the agent signs the
transmitted information using its private key. Upon receiving the
request, the Service AI Agent resolves the identifiers contained in the
message through the Trustful Mutable Store, retrieves the corresponding
public keys, and verifies the signature of the Client AI Agent. The
Service AI Agent then validates the Capability, including the identities
of the participating entities, the authorization constraints, validity
conditions, and the signatures of the Client and Service Providers. If
the Capability is valid and the requested mission is authorized, the
Service AI Agent accepts the delegation request, generates its own
ephemeral Diffie--Hellman share, derives a shared session key, and
returns its share signed with its private key.</t>

<t>Upon receiving the response, the Client AI Agent resolves the identifier
of the Service AI Agent, retrieves its public key from the Trustful
Mutable Store, and verifies the signature on the received
Diffie--Hellman share. It then derives the same shared session key,
completing the mutual authentication and key establishment procedure. At
the end of the protocol, both Agents have a cryptographically
authenticated and confidential communication channel bound to their
identities and to the delegated mission defined by the Capability.</t>

<t><list style="numbers" type="1">
  <t>CA <spanx style="verb">-&gt;</spanx> SA:
sends <spanx style="verb">[Enc-CAP, ca, sa, g^x, nonce_ca]{S_ca}</spanx></t>
  <t>SA:
resolves <strong><spanx style="verb">ca</spanx></strong>, <strong><spanx style="verb">cp</spanx></strong>, <strong><spanx style="verb">sp</spanx></strong> to get their keys,
verifies signature,
decrypts Enc-CAP,
validates CAP</t>
  <t>SA <spanx style="verb">-&gt;</spanx> CA:
sends <spanx style="verb">[sa, g^y, nonce_sa]{S_sa}</spanx></t>
  <t>CA:
resolves <strong><spanx style="verb">sa</spanx></strong> to get its key,
verifies signature</t>
  <t>Both derive:
<spanx style="verb">K_master = KDF[g^xy, hash (transcript)]</spanx>,
<spanx style="verb">K_cap_ca = KDF(K_master</spanx>, "IDAP ca to sa encryption"),
<spanx style="verb">K_cap_sa = KDF(K_master</spanx>, "IDAP sa to ca encryption")</t>
</list></t>

<t>IDAP provides several important security properties. First, it mitigates
token theft by combining authorization with proof-of-possession:
possession of a Capability alone is insufficient, as the requesting
agent must also demonstrate control of the private key corresponding to
the identity specified in the Capability. Second, replay attacks are
prevented through the use of nonces, sequence numbers, timestamps, and
validity intervals carried by the Capability and protocol messages.
Third, the use of ephemeral Diffie-Hellman key exchange provides
forward secrecy, ensuring that compromise of long-term private keys does
not enable an attacker to recover past session keys or decrypt
previously recorded communications. As a result, IDAP establishes a
secure and authenticated communication channel while preserving the
delegation and authorization guarantees provided by DAP.</t>

</section>
<section anchor="dnsdnssec-as-the-trustful-mutable-store"><name>DNS/DNSSEC as the Trustful Mutable Store</name>

<t>We propose to use DNS as the Trustful Mutable Store for
SID identifiers. DNS has been an operationally viable and
highly distributed infrastructure, the cornerstone of the Internet since
its origins. It is: scalable, highly available, resilient, and provides
trust with the DNSSEC security extension.</t>

<t>For SID identifiers, the Trustful Mutable Store is under
control of Agents and Providers to keep all public identity data
up-to-date. We propose to use the <strong><spanx style="verb">TXT</spanx></strong> record to store all the
identifiers and public keys. The format of the <strong><spanx style="verb">TXT</spanx></strong> records is
based on RFC 6763---it uses DNS TXT records to store arbitrary tag/value
pairs conveying additional information about the named service. Each
key/value pair is encoded as its own constituent string within the DNS
TXT record in the form of <strong><spanx style="verb">tag=value</spanx></strong>. We use a simple syntax: a
number of semi-colon (<strong><spanx style="verb">;</spanx></strong>) separated <strong><spanx style="verb">tag=value</spanx></strong> fields like in
DKIM, RFC 6376:</t>

<figure><artwork><![CDATA[
tag-list  =  tag-spec *( ";" tag-spec )  ";" .
]]></artwork></figure>

<t>First, we can use the well-known name of <strong><spanx style="verb">_agents</spanx></strong> to list all
Agents of a given Agent Provider. So, <strong><spanx style="verb">_agents.openai.com</spanx></strong> may
contain the following SID identifiers:</t>

<figure><artwork><![CDATA[
_agents TXT "sid=1exq5yqbl6l48pf0fu7juhltjkrbu2rxf";
   "sid=1g43wxdm35yxtjyuje72j64esenyneplk"; 
   "sid=1svmtrshch3g43wxdm35yxtjyuje7g43w";
   "sid=16ed71b37dc5e69c5124fe93ee12446e1";
]]></artwork></figure>

<t>Then, the description of a given Agent is stored in the <strong><spanx style="verb">TXT</spanx></strong> record
associated with its SID identifier:</t>

<figure><artwork><![CDATA[
1exq5yqbl6l48pf0fu7juhltjkrbu2rxf.openai.com.
]]></artwork></figure>

<t>An example <strong><spanx style="verb">TXT</spanx></strong> record for the Agent could be as follows:</t>

<figure><artwork><![CDATA[
1exq5yqbl6l48pf0fu7juhltjkrbu2rxf.openai.com.

1exq5yqbl6l48pf0fu7juhltjkrbu2rxf TXT
   "sid=1exq5yqbl6l48pf0fu7juhltjkrbu2rxf";
   "key=1caac9c64711f66e6ed71b37dc5e69c5124fe93ee12446e1a47ad4b650dd861d";
   "proto="MCP"; 
   "name="Detect"; 
   "desc="Analyzes scanned data and detects malicious URLs"; 
   "in-type="txt"; 
   "out-type="JSON/MISP"; 
   "meta="http://openai.com/_agents/1exq5yqbl6l48pf0fu7juhltjkrbu2rxf"; 
]]></artwork></figure>

<t>This description provides the public key associated with the
SID and provides basic metadata of the Detect Agent. It
also indicates that more metadata can be found in the following URL:</t>

<figure><artwork><![CDATA[
http://openai.com/_agents/1exq5yqbl6l48pf0fu7juhltjkrbu2rxf
]]></artwork></figure>

<t>The resolution of a SID consist of retrieving its
corresponding public key. For instance, the resolution of the Detect
Agent SID:</t>

<figure><artwork><![CDATA[
1exq5yqbl6l48pf0fu7juhltjkrbu2rxf
]]></artwork></figure>

<t>will result in the following public key:</t>

<figure><artwork><![CDATA[
1caac9c64711f66e6ed71b37dc5e69c5124fe93ee12446e1a47ad4b650dd861d
]]></artwork></figure>

<t>that will enable Agent authentication.</t>

</section>
<section anchor="ipfsipns-as-the-trustful-mutable-store"><name>IPFS/IPNS as the Trustful Mutable Store</name>

<t>The InterPlanetary File System (IPFS) can serve as a Trustful Mutable
Store by combining distributed storage, cryptographic integrity, and
decentralized name resolution. IPFS is a peer-to-peer storage system in
which every object is identified by a Content Identifier
(CID) derived from a cryptographic hash of its content.
Because the identifier is computed from the content itself, any
modification of the content results in a different CID,
making stored objects inherently immutable and integrity-protected.</t>

<t>Content is distributed across a network of peers, while a Distributed
Hash Table (DHT) maps CIDs to the peers currently storing
the corresponding content objects. This architecture provides high
availability and resilience without relying on a centralized
infrastructure.</t>

<t>While immutable content is desirable for integrity, identity systems
require the ability to update keys and metadata over time. IPFS
addresses this requirement through the InterPlanetary Naming System
(IPNS), which introduces a mutable naming layer above immutable IPFS
content. An IPNS name is derived from a public key, typically as a hash
of the public key itself, creating a self-certifying identifier. The
corresponding IPNS record is stored in the DHT and contains a reference
to an IPFS CID holding immutable metadata. The record
also includes the public key, validity information, purpose, binding
signatures, sequence numbers, expiration times, and a signature
generated with the corresponding private key. Updates are performed by
publishing a new IPNS record with an increased sequence number and a new
CID, while preserving cryptographic verifiability.</t>

<t>In the proposed framework, an SID can be represented as
an IPNS name, we call them in this case IID, IPFS
IDentifiers. Resolving an IID yields an IPNS record that
points to immutable metadata stored in IPFS. This metadata can contain
public keys, capabilities, delegations, service descriptions, and other
trust-related information. The integrity of the information is
guaranteed at two levels: the CID ensures that the
content itself has not been modified, while the IPNS signature ensures
that updates originate from the legitimate owner of the identifier. As a
result, the IPFS/IPNS combination provides a distributed, highly
available, integrity-protected, and mutable infrastructure that
naturally supports self-certifying identities and can therefore serve as
a Trustful Mutable Store for AI Agents.</t>

<section anchor="iid-ipfs-identifiers"><name>IID - IPFS IDentifiers</name>

<t>In the IPFS-based implementation of the Trustful Mutable Store, each
entity generates public key <spanx style="verb">P</spanx> and secret key <spanx style="verb">S</spanx>. The entity
identifier, called the IPFS Identifier (IID), is directly
derived from the public key and therefore constitutes a self-certifying
identifier. Formally, the IID is constructed as:</t>

<figure><artwork><![CDATA[
IID = Context || CI,
]]></artwork></figure>

<figure><artwork><![CDATA[
CI = base32(ripemd160(sha256(P))),
]]></artwork></figure>

<t>where <em>sha256</em> and <em>ripemd160</em> are hash functions resulting in 256 and
160 bits, respectively, and <em>base32</em> is a binary-to-text encoding
scheme. For example, public key <spanx style="verb">P</spanx>:</t>

<figure><artwork><![CDATA[
1caac9c64711f66e6ed...
]]></artwork></figure>

<t>results in the following IID:</t>

<figure><artwork><![CDATA[
/ipns/bafzbeia...
]]></artwork></figure>

<t>The IID serves as a stable, self-certifying identifier
whose ownership can be verified by demonstrating possession of secret
key <spanx style="verb">S</spanx>.</t>

<t>To associate metadata with the identifier, the entity creates a metadata
object containing its public key and descriptive information:</t>

<figure><artwork><![CDATA[
{
  public_key: 1caac9c64711f66e6ed...,
  metadata: {
      name: "Detect",
      proto: "MCP"
      ...
  },
  signature: g43wxdm35yxtjyuje72...
}
]]></artwork></figure>

<t>The metadata object is signed using secret key <spanx style="verb">S</spanx> and stored in IPFS,
producing an immutable IPFS Content Identifier
(metadata-CID):</t>

<figure><artwork><![CDATA[
/ipfs/wxdmyaqr...
]]></artwork></figure>

</section>
<section anchor="iid-public-key-binding-through-ipns"><name>IID--Public Key Binding through IPNS</name>

<t>In the IPFS-based identity framework, the binding between an IPFS
Identifier (IID) and the corresponding public key is
established indirectly through an IPNS record. The IID
itself is an IPNS name derived from the entity's public key and serves
as the stable identifier of the entity. The public key and additional
metadata are stored in an immutable IPFS object, while the IPNS record
provides the mutable binding between the identifier and the current
metadata object.</t>

<t>The metadata object stored in IPFS contains the entity's public key and
associated metadata. Since the object is stored in
IPFS, its CID is derived from its content and therefore guarantees
integrity.</t>

<t>The relationship between the IID and the metadata object
is maintained through an IPNS record stored in the Distributed Hash
Table (DHT).</t>

<t>We can observe that IID is self-certifying: the
identifier itself is cryptographically bound to the public key, while
IPNS provides mutability and IPFS provides integrity-protected storage
of metadata. Updates to metadata are performed by publishing a new IPFS
object and updating the corresponding IPNS record, preserving both
authenticity and continuity of the identifier.</t>

<t>Let us consider the following example: <strong><spanx style="verb">/ipns/bafzbeia...</spanx></strong> is an
IID and the <strong><spanx style="verb">/ipfs/wxdmyaqr...</spanx></strong> is the IPFS
CID of the metadata object. Thus, their binding is
represented in the following IPNS record stored in DHT:</t>

<figure><artwork><![CDATA[
{
  name: /ipns/bafzbeia...
  value: /ipfs/wxdmyaqr...
  sequence number: 42
  expiry: 1/7/2026
  signature: 6ed71b37dc5e69c51...
}
]]></artwork></figure>

<t>The record is signed with secret key <spanx style="verb">S</spanx> corresponding to the public key
associated with the IID. It contains the
mapping:</t>

<figure><artwork><![CDATA[
name:  /ipns/bafzbeia...
value: /ipfs/wxdmyaqr...
]]></artwork></figure>

<t>together with management information such as a sequence number,
expiration time, and a digital signature generated with secret key <spanx style="verb">S</spanx>.
The sequence number enables updates of the binding over time, while the
expiration time limits the validity period of the record. Because the
record is signed by the owner of the identifier, only the holder of
secret key <spanx style="verb">S</spanx> can modify the association between the IID and the
metadata object.</t>

<t>When another entity wants to resolve the <strong><spanx style="verb">/ipns/bafzbeia...</spanx></strong>
IID, it retrieves the corresponding IPNS record from the
DHT, verifies the signature, and obtains the CID of the
metadata object. The metadata object is then fetched from IPFS and its
integrity is verified through the CID. Public key <spanx style="verb">P</spanx> contained in the
metadata can subsequently be used to verify signatures generated by the
entity. In this way, we have a complete chain of trust:</t>

<t><spanx style="verb">P</spanx> <spanx style="verb">-&gt;</spanx> IID <spanx style="verb">-&gt;</spanx> <strong><spanx style="verb">/ipns/bafzbeia...</spanx></strong>
<spanx style="verb">-&gt;</spanx> <strong><spanx style="verb">/ipfs/wxdmyaqr...</spanx></strong>,</t>

<t>where: IID is a stable identifier, IPNS provides a
mutable and signed binding, IPFS provides immutable and
integrity-protected storage, and secret key <spanx style="verb">S</spanx> establishes ownership
and control of the entire identity.</t>

<t>This scheme for IIDs provides several important
properties. First, it establishes a cryptographically verifiable binding
between the IID and the public key contained in the
metadata object. Second, it supports mutability: if the entity updates
its metadata, a new IPFS object is created and a new IPNS record is
published with an incremented sequence number and a new
CID. Third, the expiration field prevents the use of
stale bindings and enables key rotation or identity revocation. Finally,
because IPNS records are signed by the identifier owner, only the
legitimate holder of the secret key can modify the
IID--metadata association. Consequently, the IPNS record
acts as the equivalent of a directory entry in the Trustful Mutable
Store, binding an IID to the current public key and
metadata while preserving the integrity, availability, and update
capabilities required by large-scale AI Agent ecosystems.</t>

</section>
<section anchor="trust-binding-in-ipns"><name>Trust Binding in IPNS</name>

<t>While self-certifying identifiers provide a cryptographic binding
between an IID and a public key, they do not by
themselves establish trust. A natural way to associate trust with an
IID in the IPFS/IPNS framework is through signed metadata
objects. The metadata object referenced by the IPNS record contains the
public key corresponding to the IID, descriptive
information about the entity, and a signature generated with the
associated secret key. In the previous example, the signature of the metadata object:</t>

<figure><artwork><![CDATA[
/ipfs/wxdmyaqr... 
]]></artwork></figure>

<t>was done with secret key <spanx style="verb">S</spanx> corresponding to public key <spanx style="verb">P</spanx> of the IID:</t>

<figure><artwork><![CDATA[
{
  public_key: 1caac9c64711f66e6ed...,
  metadata: {
      name: "Detect",
      proto: "MCP"
  },
  signature: g43wxdm35yxtjyuje72...
}
]]></artwork></figure>

<t>However, it can also by done by another entity, e.g., an Agent Provider, or a
trust anchor, with its public key:</t>

<figure><artwork><![CDATA[
{
  public_key: 1caac9c64711f66e6ed...,
  metadata: {
      name: "Detect",
      proto: "MCP"
  },
  signature: dc5e69c5124fe93au75...
}
]]></artwork></figure>

<t>The signature proves that the holder of the secret key corresponding to
the public key approves the metadata and controls the associated IID.
This mechanism establishes authenticity and integrity, allowing any
participant to verify that the metadata originates from the owner of the
identifier.</t>

<t>However, authenticity alone does not imply trust. To enable trust
establishment, the metadata object can be additionally signed by another
trusted entity, such as an Agent Provider, Agent Broker, certification
authority, or other recognized trust anchor. In this case, the metadata
becomes a form of cryptographic attestation stating that the trusted
entity has verified certain properties of the agent and is willing to
associate its reputation with it. The resulting structure may contain
one or more endorsements:</t>

<figure><artwork><![CDATA[
{
  public_key: P,
  metadata: {
      name: "Detect",
      proto: "MCP"
  },
  owner_signature: Sig_Sa(...),
  provider_signature: Sig_Sp(...),
  broker_signature: Sig_Sb(...)
}
]]></artwork></figure>

<t>The trust associated with the IID is then derived not only from the
self-certifying relationship between the identifier and the public key,
but also from the entities that endorse the metadata. A relying party
may not know the agent directly, yet it may trust the Agent Provider
that manages the agent or the Agent Broker that validated its
capabilities. Trust reasoning therefore becomes a matter of evaluating
chains of cryptographically verifiable attestations. If an organization
trusts a particular Agent Provider, it can extend a corresponding level
of trust to agents whose metadata has been endorsed by that provider.</t>

<t>This approach preserves the decentralized nature of IPFS and IPNS while
introducing a flexible trust layer. The IID remains
self-certifying and independent of any central authority, whereas trust
is expressed through signed endorsements attached to the metadata. As a
result, identity and trust remain distinct concepts: the
IID and public key establish who the entity is, while
third-party signatures provide evidence of why the entity should be
trusted.</t>

<t>An alternative approach to establishing trust for IPFS-based identifiers
is to leverage the existing DNS and DNSSEC infrastructure. In this
approach, an Agent Provider publishes the association between an
IID and its corresponding public key within a
DNSSEC-protected domain under its administrative control. For example,
if the Agent Provider controls the domain <strong><spanx style="verb">openai.com</spanx></strong>, it can
create a DNS record such as:</t>

<figure><artwork><![CDATA[
bafzbeia....openai.com. IN TXT
   "iid=bafzbeia..."
   "key=1caac9c64711f66e6ed..."
]]></artwork></figure>

<t>The DNS name acts as a trust anchor linking the Agent Provider's domain
to the IID. Because the DNS record is protected by DNSSEC, any party can
verify its authenticity and integrity through the DNSSEC chain of trust.
The resulting trust relationship can be expressed as:</t>

<figure><artwork><![CDATA[
Agent Provider -> Domain Name -> IID
]]></artwork></figure>

<t>In other words, an entity may trust the IID not because it directly
knows the agent, but because it trusts the organization controlling the
DNS domain that publishes the binding. The DNSSEC signatures provide
cryptographic evidence that the IID--public-key
association has indeed been published by the domain owner.</t>

<t>This approach naturally complements the IPFS/IPNS identity model. The
IID remains a self-certifying identifier derived from a
public key and resolved through IPNS, while DNSSEC provides an
independent trust layer that associates the IID with a
recognizable organization. The corresponding IPFS metadata object can
continue to store descriptive information about the agent, such as
capabilities, supported protocols, service endpoints, and indexing
information used by Agent Brokers. DNS therefore provides organizational
trust and accountability, whereas IPFS provides decentralized storage
and discovery metadata.</t>

<t>Combining the two mechanisms yields a particularly attractive model for
an Internet of Agents. IPFS/IPNS provides decentralized, globally
resolvable, and self-certifying identities, while DNSSEC anchors those
identities in a namespace that is globally unique, semantically
meaningful, and already associated with real-world organizations. This
allows relying parties to perform both cryptographic verification and
trust reasoning: the IID proves control of a public key,
while the DNSSEC-protected domain identifies the organization that
stands behind the agent. Consequently, trust can be established through
well-known Agent Providers and their domains without sacrificing the
decentralized properties of the underlying IPFS-based identity
infrastructure.</t>

</section>
</section>
<section anchor="relationship-to-agent-communication-protocols"><name>Relationship to Agent Communication Protocols</name>

<t>This draft does not define a new agent communication protocol. Instead, it
provides an identity, authentication, authorization, and delegation framework
that can be used by existing and future agent communication protocols.
Recent efforts in the AI agent ecosystem, including Agent-to-Agent (A2A), Model
Context Protocol (MCP), and other emerging agent communication frameworks, primarily
focus on message exchange, service discovery, task execution, and
interaction patterns among autonomous agents. While such protocols define how
agents communicate, they generally assume the existence of mechanisms that allow
agents to identify themselves, authenticate their peers, establish trust
relationships, and determine the scope of actions that an agent is authorized to
perform.</t>

<t>This document addresses these concerns by defining:</t>

<t><list style="symbols">
  <t>self-certifying agent identifiers derived from cryptographic public keys,</t>
  <t>two mechanisms for publishing agent identities and distributing agent metadata: DNS/DNSSEC and IPNS/IPFS,</t>
  <t>capability-based authorization tokens that support fine-grained delegation,</t>
  <t>verifiable delegation chains that allow an agent to act on behalf of another entity.</t>
</list></t>

<t>The framework is transport-independent and AI agent protocol-independent. It can be used
with HTTP-based, message-based, or future agent communication protocols without
modifying the protocol semantics.</t>

<t>In particular, the framework supports several capabilities that are commonly
required by autonomous agents:</t>

<t><list style="symbols">
  <t>establishment of persistent and globally unique agent identities,</t>
  <t>cryptographic authentication of communicating agents,</t>
  <t>discovery of agent metadata and public keys,</t>
  <t>delegation of authority between users and agents, and among cooperating agents,</t>
  <t>verification of authorization decisions across administrative domains,</t>
  <t>auditable proof of delegated authority.</t>
</list></t>

<t>The framework therefore complements agent communication protocols by providing a
common trust and authorization layer. Agent communication protocols define how
messages are exchanged, whereas this draft defines how communicating parties
establish identity, trust, and delegated authority.</t>

<t>The mechanisms specified in this document may be used by agent communication
protocols to support secure multi-agent interactions, cross-domain delegation,
agent marketplaces, service brokers, and autonomous task execution on behalf of
users or organizations.</t>

</section>
<section anchor="agent-discovery-and-metadata-publication"><name>Agent Discovery and Metadata Publication</name>

<t>Autonomous agents require mechanisms to discover peer agents, obtain their
metadata, validate their identities, and retrieve information necessary to
establish secure communications. Existing agent communication frameworks
frequently rely on proprietary registries, centralized directories, agent cards,
or application-specific discovery mechanisms.</t>

<t>This draft defines a decentralized mechanism for agent discovery and metadata
publication based on DNS/DNSSEC and IPNS/IPFS.
Agent discovery is performed through the following sequence:</t>

<figure><artwork><![CDATA[
Agent Identifier (SID or IID)
          |
          v
DNSSEC-signed Identity Record
          |
          v
Agent Metadata Pointer
          |
          v
IPNS Name
          |
          v
IPFS Metadata Document
]]></artwork></figure>

<t>The DNSSEC-signed identity record binds an agent identifier to metadata required for communication and authorization. Such metadata may include:</t>

<t><list style="symbols">
  <t>public keys,</t>
  <t>supported communication protocols,</t>
  <t>service endpoints,</t>
  <t>capability requirements,</t>
  <t>delegation policies,</t>
  <t>trust anchors,</t>
  <t>references to additional metadata objects.</t>
</list></t>

<t>The metadata object MAY contain similar information to agent cards used by
existing agent ecosystems, including supported protocols or services,
authentication requirements, semantic descriptions, and policy information.</t>

<t>DNSSEC provides origin authentication and integrity protection for the binding
between the Agent Identifier and the metadata pointer. IPFS provides content
integrity through content-addressed storage, while IPNS enables controlled
updates to metadata without requiring changes to the agent identity.</t>

<t>The approach based on DNS/DNSSEC or IPNS/IPFS enables decentralized agent discovery without requiring
centralized registries or proprietary directory services. The mechanism is
independent of the communication protocol used by the agent and can support MCP,
A2A, ACP, AGNTCY, and future agent communication protocols.</t>

<t>The framework does not mandate a specific metadata schema. Agent ecosystems may
define protocol-specific metadata formats while reusing the identity,
publication, and discovery mechanisms defined in this document.</t>

<t>The figure below illustrates the process of agent discovery.</t>

<figure><artwork><![CDATA[
+----------------------+
|   Agent Identifier   |
+----------------------+
           |
           v
+------------------+
| DNSSEC Record    |
+------------------+
         |
         v
+------------------+
| IPNS Pointer     |
+------------------+
        |
        v
+------------------+
| Agent Metadata   |
|  (IPFS Object)   |
+------------------+
     |
     +--> Public Keys
     +--> Endpoints
     +--> Policies
     +--> Agent Card
]]></artwork></figure>

</section>
<section anchor="conclusion"><name>Conclusion</name>

<t>In this draft, we have presented an identity and delegation framework
for secure AI agent communications based on the separation of identity,
trust, authentication, and authorization. At the foundation of the
architecture lies the notion of a cryptographically verifiable identity
defined as an Identifier--Public Key pair. Identifiers may take the form
of DNS-based Self-certifying Identifiers (SIDs) or
IPFS-based Identifiers (IIDs), both derived from public
keys and therefore constituting a particular class of decentralized
identifiers. The bindings between identifiers and public keys are
maintained in a Trustful Mutable Store, which provides distribution,
availability, integrity protection, and support for updates. We have
shown that both DNS/DNSSEC and IPFS/IPNS provide suitable realizations
of such a store, offering complementary trade-offs between hierarchical
naming, organizational delegation, and decentralized self-certification.</t>

<t>The framework further distinguishes identity from trust. While
identifiers and public keys enable cryptographic authentication, trust
requires additional context that allows participants to reason about the
entities behind the identities. We therefore define trust as the
combination of a Name, an Identifier, and a Public Key. DNS plays a
central role as a globally unique and semantically meaningful namespace
that links cryptographic identities to recognizable organizations. Trust
is anchored in accountable entities such as AI Agent Providers and Agent
Brokers, which act as trust anchors and intermediaries. Through signed
attestations, DNSSEC-protected bindings, and verifiable metadata, trust
can be propagated across organizational boundaries while preserving
cryptographic continuity and accountability.</t>

<t>To support secure cooperation among autonomous agents, we introduce two
complementary protocols. The Delegation and Authorization Protocol (DAP)
enables trusted entities to negotiate and establish a cryptographically
protected Capability defining the participants, permissions,
constraints, and operational controls associated with a mission. In many
respects, a Capability plays a role similar to a Verifiable Credential,
but it is specifically designed to express delegation and authorization
relationships between agents and their providers. The Identity and
Authentication Protocol (IDAP) then allows agents to authenticate one
another, validate capabilities, and establish forward-secure
communication channels based on proof of possession of cryptographic
keys.</t>

<t>Rather than defining a new
agent communication protocol, the framework provides a common trust layer that
can be used by existing and emerging agent ecosystems, including MCP, A2A,
AGNTCY, and future agent communication protocols. The framework combines
self-certifying agent identifiers, DNSSEC-protected identity records, and
IPNS/IPFS-based metadata publication to enable decentralized agent discovery and
verifiable identity management without relying on centralized registries. In
addition, capability-based authorization and delegation mechanisms allow agents
to securely act on behalf of users or other agents while providing cryptographic
proof of authority. Together, these mechanisms establish a foundation for
secure, interoperable, and scalable multi-agent systems operating across
administrative and organizational boundaries.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The security of this framework relies on the authenticity and integrity of
cryptographic public keys, DNSSEC-signed identity records, capability tokens,
and content-addressed objects stored in IPFS.</t>

<section anchor="trust-anchors"><name>Trust Anchors</name>

<t>The framework assumes that DNSSEC validation is performed correctly and that
validating parties possess an authentic DNSSEC trust anchor. Compromise of
DNSSEC signing keys can allow an attacker to publish fraudulent identity
records, delegation policies, or capability metadata.</t>

<t>The framework also relies on the collision resistance of the hash functions used
to derive self-certifying identifiers and content identifiers. A successful
collision attack could enable identifier impersonation or substitution attacks.</t>

</section>
<section anchor="agent-key-compromise"><name>Agent Key Compromise</name>

<t>Compromise of an agent's private key allows an attacker to impersonate the agent
and to authenticate protocol messages as that agent.</t>

<t>A compromised key may also be used to issue fraudulent capability delegations,
impersonate service providers, or authorize malicious actions. Implementations
SHOULD support key rotation and SHOULD provide mechanisms for revoking
compromised credentials and capabilities.</t>

<t>Short-lived capability tokens reduce the impact of key compromise.</t>

</section>
<section anchor="dns-based-attacks"><name>DNS-Based Attacks</name>

<t>The framework uses DNS to publish identity bindings, policy information, and
delegation metadata.</t>

<t>Attackers may attempt DNS spoofing, cache poisoning, or record manipulation
attacks. DNSSEC validation mitigates such attacks by providing origin
authentication and data integrity.</t>

<t>Availability attacks against authoritative DNS servers remain
possible. Operators SHOULD deploy redundant authoritative name servers and
SHOULD use standard DNS operational practices to improve resilience.</t>

</section>
<section anchor="ipfs-and-ipns-attacks"><name>IPFS and IPNS Attacks</name>

<t>IPFS provides content integrity through content-addressed identifiers. An
attacker cannot modify stored content without changing its content identifier.</t>

<t>However, attackers may attempt content withholding, eclipse attacks, routing
manipulation, or denial-of-service attacks against IPFS infrastructure.</t>

<t>Implementations SHOULD verify all retrieved content using the expected content
identifier and SHOULD reject content that fails verification.</t>

<t>IPNS records MUST be validated using the corresponding public key before use.</t>

</section>
<section anchor="capability-abuse"><name>Capability Abuse</name>

<t>Capability tokens grant specific permissions to agents. Theft or disclosure of a
valid capability token may enable unauthorized actions.</t>

<t>Capability tokens SHOULD be bound to the public key of the authorized holder and
SHOULD require proof-of-possession during protocol execution.</t>

<t>Capability tokens SHOULD include expiration times, audience restrictions, and policy constraints.</t>

</section>
<section anchor="replay-attacks"><name>Replay Attacks</name>

<t>An attacker may attempt to replay previously observed protocol messages,
capability assertions, or delegation records.</t>

<t>Implementations SHOULD include nonces, timestamps, sequence numbers, or
challenge-response mechanisms to detect and reject replayed messages.</t>

<t>Capability tokens SHOULD have limited validity periods.</t>

</section>
<section anchor="delegation-chains"><name>Delegation Chains</name>

<t>Long delegation chains increase verification complexity and expand the attack surface.</t>

<t>Implementations SHOULD impose limits on delegation depth and SHOULD detect delegation loops.</t>

<t>Each delegation step MUST be cryptographically verified before authorization decisions are made.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>Publishing identity records, delegation relationships, or capability metadata in
DNS may reveal operational relationships between agents.</t>

<t>Operators SHOULD minimize publicly exposed metadata and SHOULD avoid publishing
sensitive policy information unless necessary.</t>

<t>Where privacy requirements exist, encrypted capability payloads and
privacy-preserving credential mechanisms MAY be employed.</t>

</section>
<section anchor="denial-of-service-attacks"><name>Denial-of-Service Attacks</name>

<t>Attackers may attempt to exhaust computational resources by triggering repeated
DNS lookups, IPFS retrievals, signature verifications, or delegation-chain
validation.</t>

<t>Implementations SHOULD employ caching, rate limiting, validation timeouts, and
resource consumption limits.</t>

</section>
<section anchor="cryptographic-agility"><name>Cryptographic Agility</name>

<t>The framework SHOULD support replacement of cryptographic algorithms used for
signatures, hashing, identifier derivation, and capability protection.</t>

<t>Implementations SHOULD be designed to permit migration to new algorithms,
including post-quantum cryptographic algorithms, without requiring redesign of
the protocol architecture.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>



    <references title='Normative References' anchor="sec-normative-references">



<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>




<?line 1484?>

<section anchor="references"><name>References</name>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA91963Mb15Xn9/tXdMkfIjIAbMu2PGHWmaEpO+bEllWmvJnZ
VNZqAk2irQYa7m6QguPM3z7nfc+93aDkyexu1briWCKB7vs4z995zefz0A/l
dvVD2bTb6qwYun0V6l1Hf+qHJx988LsPnoRlOZwV9famLd4rLtbV8nXo99eb
uu/rdjscdvC9yy9efhnKrirPij9W26ormyLc38LPt0PVbauh+GJ7W2+rqqu3
t8XLsn9dfNl2yyqEoR4a+P5V1dzML6puqG8O+JHLVbWFXx0KWFtxUe7K67qB
v84/L/tqVTyrmuq2HODtxU3bFef7od22m3bfF+eXxfktfLUP5fV1V92dFd8c
nnXlzRBW7XJbbuBVK/zrfLVflfMSPzqvV/ObDn5133av5x98EMJ7xaoc4JNP
PnjyZP4B/q+Yz+lnRd0XN3XTwBrqbVHCezewjGXZNIfi+lC82TRPuptlUd8U
23Yobuu7ahsCfGzddmdhHgr4Vn9WnC+KZ/B6+Cuv6Hy76n6uftQfth0c3Pfb
+m5R/LGrtu11UxXnza7qZ8XF8++uZvGnl89fzIqvL/8IX6o2Zd2c4XHhoxa4
vX/ZwzPmt/LheYmPWNx0tA5+8Tflsob3/gmu4ufDtn9d/4Nv5+ct4vPevoRv
m/qurrriqz0Qz/4ffL88bMEPe/vLr+oNkNCXQKFwbtXP/+Db6WkLe9rbX/+v
+23xv9bl9lZf/NW+vK/q4mW1XG/bpr2tq774siu3y6q4WpwvrhbfL+Lrftxv
f8Yvf/gva/raYtlu3MO/aoEEiq+BcdrVf+n5a3zAoqEH+FeEbdsh1d9VZ/Dh
7768ePLhh7+TP/7Th59+jH8Mc2CY8rofunI5hD9Xxa6reuA1oM+i9qy9cpys
PIg8HfpqCZeI/ExMWsCbN3CgS/psvyheriv3jXo7dO1qv4T9lEUP4qa9CfQW
3GG9XTb7FUqVi6bGZ5mQmIHc6e7qZeV/RP8tXnTtHay062cB18k//LxrX+OP
iqG9rYY1kO19PazhlS9RWN7sm+Kb/VAidVwNLaweNr2D1dbwk4CCCg52O8C/
uJZld9jBY7pytxYBcgfS8aamr9sZXddbXDls+M9V2HXtru0r2CAIy2UUlvzp
G6D8Hg60g5tZwdm0m2K3v27qZfG6OsCagSWa+udqFcq+ePb8an5NovQqe9al
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
GZhNkEuwJGN7C7/1bZ4sfHxFIYy4TsseoRLBMJVnjj5Iv++so025PUxeOBK7
XHKQ+l1PkoxKC8Ee67WlR1VSCBaYBGHYEitwRaAQvNjBBvacEQg7tJIwd8VZ
p6XAC2flz04GKiYtQ/fhsonWBVxJrRKazhOTA5M+N4wE3IBWTxrcCHA8Af31
jsiEG6g3i/rrvjGNEuwsuGhP6qMl6YLUq2C/WxHjVVql3Rwkd4hUWEfF1Ulu
0VTGUAhXQvqVdivSU3HZL7FqGoupK+kXQK0ldpR/zfG6z5t2+Zq8bEmd0kcp
fPB5PSzbmisQvyAQaL/RUNUEADnVhOtIX5uA583xR0FM8UaArnvXfcnVwXPw
jwxurWwKjvkRtttYL50NFwJjxLhA9RXDbUmHL6D2etUcQiWI5XS/rzSEIhmL
pKKJwVnlknHV7TeS/Mv91ETlSo6XJl1E0GHi5MK7tC+rt2u6XMQnRERmCUZB
3ilfFDvN14kQbrukPhyTmHWwjgy9gMDGAfa9hKzLPs8F19wO6g12VyURbQNE
XjQlyE80277El2hCOLZ8OwkWMitHwvtYqyQkKWoggHywkPxAvQk9Lclnc11W
lOCxy9xMbSzNPOQt6jk4biVocTskJ8tKDAw1TmSxvhe3t1y3TObfERXnu5D0
QaBYISYWUoQ5OeHgYo14paqPuDQh+ENT1p5Ki5wsZnKplzdt5wqQ5cq1eKrM
45tUYoNZU3BCTb19re5hON6/x4UgR5Wj1iQqT6JmV7Q5mFGUxEZV4yVB0iBI
+MqXZvkcxEkLCZGyiIBT/CmA14iJGksCmGOnvhS3yyIwYqCwi1QmRSST4OD5
MToRpa39KqX6Iwp9HxPKNK8k45EwkrCYfQ2kEhWNpcUws2iEzBKCc70UNdh9
37qsPrqZpkIfKCyxxJG5CI0pFJKldHbkJGLH6lE+VrumPTDDB9dHiqHdu1iu
MxXpsp6WSYDMZTJj+TzywhrohXrs4V26BAMwbCz4A7KUpALLcGeVxc5OdKkq
GllSdJV3NJRNgXKZgZK0aCI+NPxjRq5lE0osDt0Micqb2yt9j5zDjGZf7vQl
VWJqdPjcgWnDJU0hU6qL8Uk4mCA7prQ/c+BLjGLKbayo1qK8/QyrDCrwjjEh
le+DEOWX//ZSH8KUQCnFpHropq3kPAvrxCWfjdqL4kp9ehPF5WPlTd9wNY9r
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
1CIWXOFtz8VO9PJLaLTsXlcDzT1wjhDD8TaJ13gt1cKJIAtMsRiJSSxoNM/4
xp4Zh+BTv1Hm4Fwp3iKOVEr5WvMEEh3bxilWVP6sLMK5X6xMQ8xlUcBbtKz3
Pdgh5hy0xJ3cVjjjjJrAtO7up2bDgm3xhdloD5o/4aazRC90JgqmXLCJuHS1
q25Js+HKvImsaR28ZJmwhDBMwMjtbqfnF6chefdQz22RGr5C8WXmZMbgJbVH
lniEvzkLnO3izcUJOMfU70LApvisuncJyx7n8r2TOWMogat8yQLWSXJ+1okE
qPCfX9yf7xT/FMTbutd+x+k0x77F74pU2hJbHf04ucWImj3wCfDs7XnPhPFj
ZCtdpstYIkyRp1hEky6egU8CNxWJd5cNMM7F6aK4QlvYvosSSAp7SZlmCisC
J0ckL31oBKQkRlfadD/VgjqPhkxCB8rSDyythVv4xuZLGWbUH6md+Ob83zU6
iq2QcHxlwu0aJGK2UikcqpStY0aSd5wmEKWC5qzxdMBZyGyIdPCAWksTVa90
IvnUxByg4ySAqW6dEUOO3autZ85UvuGIu0alGTtmgkWGUklBSBij1vKbuToW
LmFTJich28RJfozzgq26n6hwiF0M8ACpwpo0unVXSMw5Vb8Gu05JKArziICy
ZaTyMJeAo1UE/+kowfHZXrbH1Lw4NzIxDzB/MgvvUTbeJLeZoZBmE3A6MVsG
4KLPAnjxs+Ic/lSc//H5y4t/n/0KFCGz7wwpAYJdyZQyVTexKhxzZsvFKIWP
mmuJaWbOyvjrTOk6zryr4px1M7q81pkVORRqNoJ2eM0NLRuPcrunoDb6Z3XT
7LknZq+uDCr/aMjbGxash347n/znt+GXohizESqCo98optUF6IuJr+ALhHJZ
exXHHu4e7B579KHEhqLiind4aHzm0Udm+hO/A6dDrXSKb0kqn7zlPfIS+MAf
NKH+T6CM3E+/UDXjP6lzzeKPBA0E0S6xwPcQ9gT5TfM/gqYGkV0U0+dd14Vt
GvOehO7cbE1zy7Op8Nd+PF6caE+tdIy81afIEcSx+j4fxFraIz/GgveQdIlp
FBQG1rWOUg/maBjQqjzEqVmRopPCVGxluHC/7DkgWL6uZHXdBpMxgGwFcrnK
sCP/VbTn+hMQncEBv8kHMBP/RDpKJxhTHOdsUHReP8/JFy6xZNmUzOaJyPed
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

-->

</rfc>

