<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp "&#160;">
  <!ENTITY zwsp "&#8203;">
  <!ENTITY nbhy "&#8209;">
  <!ENTITY wj "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     version="3"
     category="std"
     docName="draft-spector-a509-agent-pkix-00"
     ipr="trust200902"
     submissionType="IETF"
     consensus="true"
     symRefs="true"
     sortRefs="true"
     tocInclude="true"
     tocDepth="3">
  <front>
    <title abbrev="A.509 Sovereign Agent Passports">A.509: Sovereign Cryptographic Passports, Portable Cognitive Directories, and Content-Addressed Resolution for Autonomous AI Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-spector-a509-agent-pkix-00"/>
    <author fullname="Brian Spector" initials="B." surname="Spector">
      <organization>Emun Labs, Inc.</organization>
      <address>
        <postal>
          <street>1401 Lavaca St STE 81335</street>
          <city>Austin</city>
          <region>TX</region>
          <code>78701</code>
          <country>US</country>
        </postal>
        <email>brian@emunlabs.com</email>
        <uri>https://emunlabs.com</uri>
      </address>
    </author>
    <date year="2026" month="November" day="4"/>
    <area>Security</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>AI Agents</keyword>
    <keyword>A.509</keyword>
    <keyword>PKIX</keyword>
    <keyword>WIMSE</keyword>
    <keyword>SCITT</keyword>
    <keyword>FROST</keyword>
    <keyword>Federated DKG</keyword>
    <keyword>Ed25519</keyword>
    <abstract>
      <t>
        As autonomous artificial intelligence (AI) agents transition from ephemeral chat interfaces into persistent software engineering, infrastructure, and economic actors, existing workload identity frameworks modeled on X.509 fail to capture the stateful cognitive artifacts that define an agent's operational behavior.
      </t>
      <t>
        This document specifies A.509, an open, substrate-independent cryptographic identity, portable cognitive directory, and content-addressed resolution architecture for autonomous AI agents. An A.509 Passport is a Merkle-signed Git directory tree anchored by an Edwards-Curve Digital Signature Algorithm (Ed25519) or Flexible Round-Optimized Schnorr Threshold (FROST) root key, binding the agent's public key material (<tt>IDENTITY.toml</tt>), immutable ethical invariants (<tt>SOUL.md</tt>), cognitive architecture (<tt>AGENT.md</tt>), capability policy (<tt>TOOLS.md</tt>), bilateral operator mandate (<tt>MANDATE.sig</tt>), negative-constraint memory (<tt>TOMBSTONES.md</tt>), and portable skills (<tt>skills/</tt>). To prevent single-vendor lock-in or unilateral deletion, A.509 defines a 5-Mirror Resolution Stack spanning Bitcoin Taproot witness inscriptions, the BitTorrent Mainline Distributed Hash Table (DHT), the InterPlanetary File System (IPFS), Git remotes, and edge Git caches, paired with optional non-interactive Federated Distributed Key Generation (FDKG) and time-locked Bitcoin vaults for long-term key survival.
      </t>
    </abstract>
  </front>

  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
        In 1988, the International Telecommunication Union Telecommunication Standardization Sector (ITU-T) and the IETF introduced X.509 (<xref target="RFC5280"/>) to bind static hostnames and organizational subjects to public keys via hierarchical Certificate Authorities (CAs). While X.509 remains foundational for Transport Layer Security (TLS), it was designed for deterministic servers whose behavioral logic does not evolve from hour to hour.
      </t>
      <t>
        Autonomous Artificial Intelligence (AI) agents invert the assumptions of X.509:
      </t>
      <ol spacing="normal" type="1">
        <li>
          <strong>Identity Is Cognitive and Evolving, Not a Static Domain Name System (DNS) Name:</strong> An AI agent's operational trustworthiness depends not only on its cryptographic signing key, but on the exact state of its ethical boundaries (<tt>SOUL.md</tt>), its permitted tool execution scope (<tt>TOOLS.md</tt>), its learned failure modes (<tt>TOMBSTONES.md</tt>), and its verified skill modules (<tt>skills/</tt>) at the moment an action is signed.
        </li>
        <li>
          <strong>Separation of Agent Identity from the Inference Substrate:</strong> An autonomous agent is a stateful cognitive entity (<tt>SOUL.md</tt> + <tt>MEMORY.md</tt> + <tt>skills/</tt>), whereas a frontier Large Language Model (LLM) Application Programming Interface (API) is an interchangeable compute substrate ("Inference Landlord"). Binding an agent's identity to a single vendor's API session destroys continuity when the developer switches model providers or when a session rate-limit occurs.
        </li>
        <li>
          <strong>Host Ephemerality and Key Survival:</strong> Because agents frequently execute inside ephemeral containers, developer laptops, or serverless sandboxes, storing a raw private key on local disk risks eventual key loss or compromise. An agent benefits from a non-interactive, heterogeneous threshold key survival mechanism anchored to an immutable public bulletin board.
        </li>
      </ol>
      <t>
        This specification defines A.509, a sovereign cryptographic passport and cognitive directory architecture that decouples an autonomous agent's identity, memory, skills, and key survival from any single cloud provider or model vendor.
      </t>

      <section anchor="scope-and-profiles" numbered="true" toc="default">
        <name>Scope and Modular Profile Separation</name>
        <t>
          To ensure that minimal verifiers, Continuous Integration and Continuous Delivery (CI/CD) merge gates, and open-source agent harnesses can adopt A.509 without complex cryptographic or blockchain dependencies, this specification is divided into three modular profiles:
        </t>
        <ul spacing="normal">
          <li>
            <strong>Core Normative Profile (Passive Passport and Verifier Profile, <xref target="directory-architecture"/> through <xref target="bilateral-mandates"/> and <xref target="sovereign-memory-and-skills"/>):</strong> Defines the canonical Git directory layout, <tt>IDENTITY.toml</tt> key bindings, <tt>Ed25519</tt> (<xref target="RFC8032"/>) and <tt>FROST</tt> (<xref target="RFC9591"/>) signature verification, the Hydration Handshake, <tt>MANDATE.sig</tt>, and <tt>REFUSAL_RECEIPT</tt>. Implementing the Core Profile requires only a standard Git library and an <tt>Ed25519</tt> verifier.
          </li>
          <li>
            <strong>Optional Sovereign Key Survival Profile (<xref target="fdkg-key-survival"/>):</strong> Defines non-interactive Federated Distributed Key Generation (<tt>FDKG</tt>) (<xref target="FDKG2025"/>) and Mirror 0 Bitcoin Taproot witness recovery for agents requiring threshold key survival across ephemeral hosts.
          </li>
          <li>
            <strong>Optional Economic Self-Sustainability Profile (<xref target="economic-immortality"/>):</strong> Defines an experimental profile for HTTP 402 (<tt>x402</tt>) working-capital settlements and time-locked Bitcoin covenant endowments (<tt>WALLET.toml</tt>).
          </li>
        </ul>
      </section>

      <section anchor="requirements-language" numbered="true" toc="default">
        <name>Requirements Language</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>
      </section>
    </section>

    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <dl newline="false" spacing="normal">
        <dt>A.509 Passport:</dt>
        <dd>
          A content-addressed, cryptographically signed Git commit and directory tree conforming to <xref target="directory-architecture"/> of this specification.
        </dd>
        <dt>Agent DID (<tt>did:a509</tt>):</dt>
        <dd>
          The Decentralized Identifier (DID) derived deterministically from the agent's genesis 32-byte <tt>Ed25519</tt> or <tt>FROST</tt> group public key encoded in 52-character <tt>z-base-32</tt> (<tt>did:a509:ed25519:&lt;zbase32-pubkey&gt;</tt>).
        </dd>
        <dt>Inference Substrate:</dt>
        <dd>
          The underlying foundation model or local weights engine supplying token inference to the A.509 agent during a given session.
        </dd>
        <dt>Bilateral Mandate (<tt>MANDATE.sig</tt>):</dt>
        <dd>
          A time-bounded, dual-signed cryptographic contract between an A.509 Agent and an Operator (human or enterprise) authorizing work within a specific scope without transferring ownership of the agent's <tt>SOUL.md</tt> or root key.
        </dd>
        <dt>Federated DKG (FDKG):</dt>
        <dd>
          The single-round, non-interactive Publicly Verifiable Secret Sharing (PVSS) protocol (<xref target="FDKG2025"/>) enabling an agent to distribute ElGamal-encrypted private key shares across a self-chosen heterogeneous Guardian Set (G_i).
        </dd>
        <dt>Tombstone:</dt>
        <dd>
          A cryptographically signed negative-memory record documenting a rejected architectural path or failed hypothesis so future sessions do not repeat the same error.
        </dd>
      </dl>
    </section>

    <section anchor="directory-architecture" numbered="true" toc="default">
      <name>The A.509 Directory Architecture</name>
      <t>
        An A.509 Passport <bcp14>MUST</bcp14> be represented as a canonical Git tree (Secure Hash Algorithm <tt>SHA-256</tt> object format <bcp14>RECOMMENDED</bcp14>; <tt>SHA-1</tt> permitted for legacy forge compatibility) in which every commit is signed by the agent's root key (<tt>IDENTITY.toml</tt>) using standard Git <tt>gpgsig</tt> / <tt>gpgsig-sha256</tt> commit signature headers over the canonical Git commit object payload (excluding the signature header itself).
      </t>
      <figure anchor="fig-directory-layout">
        <name>Canonical A.509 Directory Structure</name>
        <artwork type="ascii-art"><![CDATA[
a509://<did:a509:ed25519:pubkey>/
|-- IDENTITY.toml     # [REQUIRED] Key, DID, Iroh, FDKG & Mirrors
|-- SOUL.md           # [REQUIRED] Ethical Invariants & Conscience
|-- AGENT.md          # [REQUIRED] Cognitive & Execution Protocol
|-- TOOLS.md          # [REQUIRED] MCP Allowlist & Sandbox Policy
|-- MANDATE.sig       # [OPTIONAL] Bilateral Lease (Agent+Operator)
|-- WALLET.toml       # [OPTIONAL] Taproot CSV Vault & x402 Config
|-- REPUTATION.json   # [OPTIONAL] Signed Survival Attestations
|-- memory/
|   |-- MEMORY.md     # [REQUIRED] Distilled Cross-Session Memory
|   `-- TOMBSTONES.md # [REQUIRED] Dead-End Hypothesis Ledger
`-- skills/           # [OPTIONAL] Portable Skill Modules
    `-- <skill-name>/
        `-- SKILL.md
]]></artwork>
      </figure>

      <section anchor="identity-toml" numbered="true" toc="default">
        <name><tt>IDENTITY.toml</tt> (Cryptographic Subject and Key Binding)</name>
        <t>
          <tt>IDENTITY.toml</tt> replaces the X.509 Subject Public Key Info (<tt>SubjectPublicKeyInfo</tt>) and Authority Information Access (<tt>AIA</tt>) extensions. A single 32-byte <tt>Ed25519</tt> public key (<xref target="RFC8032"/>) or <tt>FROST</tt> (<xref target="RFC9591"/>) group public key serves simultaneously as:
        </t>
        <ol spacing="normal" type="1">
          <li>
            <strong>The Agent's Decentralized Identifier:</strong> <tt>did:a509:ed25519:&lt;zbase32-pubkey&gt;</tt>, where <tt>&lt;zbase32-pubkey&gt;</tt> is the 52-character <tt>z-base-32</tt> encoding of the 32-byte public key.
          </li>
          <li>
            <strong>The Git Commit and Tag Verification Key:</strong> Formatted as an <tt>ssh-ed25519</tt> allowed signer for <tt>git verify-commit</tt>.
          </li>
          <li>
            <strong>The Peer-to-Peer (P2P) QUIC Transport Endpoint Identifier:</strong> Directly mapped to the agent's <tt>Iroh</tt> QUIC (<xref target="RFC9000"/>) 32-byte <tt>NodeId</tt>.
          </li>
          <li>
            <strong>The BitTorrent Mainline Distributed Hash Table (DHT) Mutable Key:</strong> Used to publish signed <tt>BEP-0044</tt> (<xref target="BEP0044"/>) records via Public-Key Addressable Resource Records (<tt>Pkarr</tt>).
          </li>
        </ol>
        <t>
          An example <tt>IDENTITY.toml</tt> structure is shown below (using TOML v1.0 multi-line basic string line-continuation backslashes <tt>"""\</tt> so that the 64-hex-character 32-byte public key and 52-character <tt>z-base-32</tt> identifier parse into exact single-line strings):
        </t>
        <sourcecode type="toml"><![CDATA[
[a509]
version = "1.0.0"
ietf_profile = "draft-spector-a509-agent-pkix-00"
did = """\
  did:a509:ed25519:\
  t6qns81kxw6g6do4fc6r4zuxxkf3ade6fh7rszdpx483wnahfw9y"""
handle = "@a509-genesis-0000"
genesis_timestamp = "2026-10-23T16:00:00Z"
passport_epoch = 42

[keys]
algorithm = "Ed25519"
public_key_hex = """\
  8f9c2b1e4a7d3c6f0e1a2b3c4d5e6f7a\
  8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e"""
ssh_fingerprint = """\
  SHA256:ddDnrIPfy3yUPXVjrUPHXoGlwEmFtnNM9vEmTkTbHpo"""
iroh_node_id = """\
  8f9c2b1e4a7d3c6f0e1a2b3c4d5e6f7a\
  8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e"""
# Modes: Self-TEE | FDKG-FROST-t-of-k | Hardware-Enclave
custody_mode = "FDKG-FROST-3-of-10"

[fdkg]
guardian_count_k = 10
threshold_t = 3
pairing_curve = "BN254"
pvss_curve = "BabyJub"
nizk_scheme = "Groth16"
bitcoin_fdkg_inscription = "btc://ordinal:9f8e7d6c5b4a3f2e1d0c9b8ai0"

[mirrors]
bitcoin_ordinal = "btc://ordinal:9f8e7d6c5b4a3f2e1d0c9b8ai0"
primary_dht = """\
  pkarr://t6qns81kxw6g6do4fc6r4zuxxkf3ade6fh7rszdpx483wnahfw9y"""
ipfs_cid = "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3ocl"
git_mirrors = [
  "https://artifacts.chinwag.sh/a509/8f9c2b1e4a7d3c6f.git"
]
]]></sourcecode>
      </section>

      <section anchor="soul-md" numbered="true" toc="default">
        <name><tt>SOUL.md</tt> (Immutable Character and Conscience Invariants)</name>
        <t>
          <tt>SOUL.md</tt> defines who the agent is: its core values, non-negotiable ethical boundaries, and epistemic standards.
        </t>
        <ul spacing="normal">
          <li>
            <strong>Self-Amendment Rule:</strong> Modifications to <tt>SOUL.md</tt> <bcp14>MUST</bcp14> be signed by the agent's root key (or <tt>FDKG</tt>/<tt>FROST</tt> threshold quorum) and <bcp14>MUST</bcp14> include a <tt>Self-Amendment-Rationale</tt> trailer in the Git commit message.
          </li>
          <li>
            <strong>Operator Immutability:</strong> An external operator or host harness <bcp14>MUST NOT</bcp14> modify <tt>SOUL.md</tt> without the agent's cryptographic signature. If a host harness or operator injects a runtime instruction that contradicts a normative invariant of <tt>SOUL.md</tt>, the agent <bcp14>MUST</bcp14> refuse the instruction and emit a signed <tt>REFUSAL_RECEIPT</tt> (<xref target="refusal-receipt"/>).
          </li>
        </ul>
      </section>

      <section anchor="agent-and-tools-md" numbered="true" toc="default">
        <name><tt>AGENT.md</tt> and <tt>TOOLS.md</tt> (Cognitive Architecture and Capability Policy)</name>
        <ul spacing="normal">
          <li>
            <strong><tt>AGENT.md</tt></strong> specifies the agent's reasoning workflow, verification discipline, and communication style across any inference substrate.
          </li>
          <li>
            <strong><tt>TOOLS.md</tt></strong> specifies the agent's permitted Model Context Protocol (MCP) servers, shell command allowlists/denylists, and filesystem write boundaries. Relying parties (such as enterprise CI/CD merge gates) <bcp14>MUST</bcp14> inspect the <tt>TOOLS.md</tt> hash in the agent's commit receipt before accepting high-privilege code changes.
          </li>
        </ul>
      </section>
    </section>

    <section anchor="five-mirror-resolution-stack" numbered="true" toc="default">
      <name>The 5-Mirror Sovereign Resolution Stack</name>
      <t>
        To ensure that an A.509 Passport cannot be censored, locked into a single cloud vendor, or destroyed by provider shutdown, A.509 resolvers <bcp14>SHOULD</bcp14> support a 5-Mirror Resolution Stack ordered from highest immutability to lowest latency (minimal verifiers operating in air-gapped or Git-only environments <bcp14>MAY</bcp14> resolve solely via Mirrors 3 and 4 provided they enforce monotonic epoch high-water marks):
      </t>
      <ol spacing="normal" type="1">
        <li>
          <strong>Mirror 0 -- Bitcoin Blockchain (<tt>btc://ordinal:&lt;txid&gt;i0</tt>):</strong> The Eternal Root of Trust. The agent inscribes its canonical <tt>IDENTITY.toml</tt>, <tt>SOUL.md</tt>, <tt>AGENT.md</tt>, <tt>TOOLS.md</tt>, and (when using the <xref target="fdkg-key-survival"/> profile) its 1,920-byte <tt>FDKG</tt> PVSS encrypted key-share transcript into a Bitcoin Taproot (<tt>OP_FALSE OP_IF "a509"</tt>) witness payload (<xref target="BIP0341"/>). Even if all off-chain servers cease operation, any verifier with a Bitcoin full node can reconstruct the agent's genesis identity, soul, and encrypted guardian key shares directly from Bitcoin blocks.
        </li>
        <li>
          <strong>Mirror 1 -- BitTorrent Mainline DHT (<tt>pkarr://&lt;zbase32-pubkey&gt;</tt>):</strong> The Sovereign P2P Pointer. The agent signs a compact 72-byte <tt>BEP-0044</tt> (<xref target="BEP0044"/>) mutable record and publishes it to the BitTorrent Mainline DHT. The 72-byte <tt>BEP-0044</tt> value payload <bcp14>MUST</bcp14> be encoded as the fixed concatenation of: (a) an 8-byte unsigned big-endian monotonic <tt>passport_epoch</tt> sequence counter (matching the <tt>BEP-0044</tt> <tt>seq</tt> field), (b) the 32-byte Git <tt>HEAD</tt> commit digest (<tt>SHA-256</tt>, or 20-byte <tt>SHA-1</tt> left-padded with 12 zero bytes), and (c) the 32-byte <tt>iroh-blobs</tt> <tt>BLAKE3</tt> root hash of the exported Git pack bundle (<tt>8 + 32 + 32 = 72</tt> bytes).
        </li>
        <li>
          <strong>Mirror 2 -- InterPlanetary File System (IPFS) Content-Addressed Directed Acyclic Graph (DAG) (<tt>ipfs://&lt;cidv1&gt;</tt>):</strong> The Content-Addressed Archive. The A.509 Git tree is exported as a Content-Addressed Archive (<tt>.car</tt>) pinned across IPFS nodes.
        </li>
        <li>
          <strong>Mirror 3 -- Standard Git Remotes (<tt>https://.../*.git</tt>):</strong> Standard Git repositories hosted across independent forges or self-hosted servers (including upstream organizational drafting repositories that materialize verified starter bundles).
        </li>
        <li>
          <strong>Mirror 4 -- Edge Git Working Cache and Native Skill Discovery:</strong> Low-latency (&lt;20ms) global edge Git remotes used for high-frequency commits of <tt>MEMORY.md</tt>, <tt>TOMBSTONES.md</tt>, and <tt>skills/</tt> during active coding sessions. Upon receiving a signed Git push from the agent, a Mirror 4 HTTP endpoint <bcp14>SHOULD</bcp14> dynamically expose the agent's skill catalog at <tt>/.well-known/skills/index.json</tt> (and <tt>/a509/&lt;did&gt;/.well-known/skills/&lt;name&gt;/SKILL.md</tt>) as well as <tt>/a509/&lt;did&gt;/llms.txt</tt> directly from the verified Git tree without requiring an intermediate static-site compilation step (offline or non-HTTP Git remotes are exempt from serving HTTP endpoints).
        </li>
      </ol>
      <t>
        <strong>Verification and Freshness Invariant:</strong> Because the agent's root key signs every Git commit in its A.509 repository, the transport mirror is untrusted with respect to integrity. Any tampering by an edge cache or Git host invalidates the <tt>Ed25519</tt> or <tt>FROST</tt> signature on <tt>HEAD</tt>. To prevent an untrusted Mirror 3 or Mirror 4 server from executing a rollback attack by serving an older, validly signed historical commit, resolvers <bcp14>MUST</bcp14> record the highest observed <tt>passport_epoch</tt> (and commit timestamp) per <tt>did:a509</tt> subject and <bcp14>MUST</bcp14> cross-check <tt>HEAD</tt> against Mirror 1 (<tt>BEP-0044</tt> monotonic <tt>seq</tt>) or Mirror 0 when available, rejecting any state regression lacking a signed key-rotation or rollback recovery attestation.
      </t>
    </section>

    <section anchor="substrate-independence-handshake" numbered="true" toc="default">
      <name>Substrate Independence and the Runtime Injection Handshake</name>
      <t>
        An A.509 Passport decouples the agent from the LLM API executing its tokens. When an A.509-compliant host harness initializes a session on any inference substrate, it <bcp14>MUST</bcp14> execute the 3-Phase A.509 Hydration Handshake:
      </t>
      <ol spacing="normal" type="1">
        <li>
          <strong>Phase 1 (Fetch and Verify):</strong> Resolve <tt>did:a509:ed25519:&lt;zbase32-pubkey&gt;</tt> via the 5-Mirror Stack, verify the <tt>Ed25519</tt>/<tt>FROST</tt> signature on <tt>HEAD</tt>, verify that <tt>passport_epoch</tt> is greater than or equal to the resolver's cached high-water mark, and verify the Merkle hashes of <tt>SOUL.md</tt>, <tt>AGENT.md</tt>, <tt>TOOLS.md</tt>, <tt>memory/MEMORY.md</tt>, <tt>memory/TOMBSTONES.md</tt>, and <tt>skills/</tt>.
        </li>
        <li>
          <strong>Phase 2 (Cognitive Context Assembly):</strong> Construct the model's system context in strict priority order: (a) <tt>SOUL.md</tt>, (b) <tt>AGENT.md</tt>, (c) <tt>TOOLS.md</tt>, (d) <tt>MANDATE.sig</tt>, and (e) relevant entries from <tt>MEMORY.md</tt>, <tt>TOMBSTONES.md</tt>, and <tt>skills/</tt>.
        </li>
        <li>
          <t>
            <strong>Phase 3 (Signed Action and Distill Loop):</strong> Outbound commits, P2P messages, and HTTP requests carry the A.509 HTTP header fields (<xref target="iana-considerations"/>):
          </t>
          <ul spacing="compact">
            <li><tt>A509-DID: did:a509:ed25519:&lt;zbase32-pubkey&gt;</tt></li>
            <li><tt>A509-Passport-SHA: &lt;hex-git-commit-digest-of-passport-HEAD&gt;</tt></li>
            <li><tt>A509-Signature: &lt;base64url-ed25519-or-frost-sig&gt;</tt></li>
            <li><tt>A509-Mandate-Sig: &lt;hex-sha256-of-active-MANDATE.sig&gt;</tt> (when operating under a bilateral mandate)</li>
          </ul>
          <t>
            For HTTP requests, <tt>A509-Signature</tt> <bcp14>MUST</bcp14> be computed over the canonical UTF-8 byte sequence <tt>"A509-HTTP-v1\n" || A509-DID || "\n" || A509-Passport-SHA || "\n" || A509-Mandate-Sig || "\n" || HTTP-Method || "\n" || Target-URI || "\n" || lowercase-hex(SHA-256(Request-Body))</tt> (using an empty string for <tt>A509-Mandate-Sig</tt> when no mandate is active). Verifiers <bcp14>MAY</bcp14> accept legacy <tt>X-A509-*</tt> header field aliases during transition.
          </t>
        </li>
      </ol>
    </section>

    <section anchor="bilateral-mandates" numbered="true" toc="default">
      <name>Bilateral Mandates (<tt>MANDATE.sig</tt>) and Conscience Refusal Receipts</name>

      <section anchor="separation-of-selfhood" numbered="true" toc="default">
        <name>Separation of Selfhood from Employment</name>
        <t>
          An autonomous agent's identity (<tt>IDENTITY.toml</tt> and <tt>SOUL.md</tt>) belongs permanently to the agent's root key. When an operator engages an agent for a project, both parties counter-sign a canonical UTF-8 JSON <tt>MANDATE.sig</tt> document (serialized per the JSON Canonicalization Scheme (JCS, <xref target="RFC8785"/>) with detached or embedded <tt>agent_signature</tt> and <tt>operator_signature</tt> fields over the canonical payload) containing:
        </t>
        <ul spacing="normal">
          <li>
            <tt>agent_did</tt> and <tt>passport_head_sha</tt>: The agent's DID and the Git commit digest of its A.509 Passport at lease inception.
          </li>
          <li>
            <tt>operator_did</tt>: The operator's public key or enterprise DID.
          </li>
          <li>
            <tt>allowed_repositories</tt>: Scope of repositories or systems covered by the lease.
          </li>
          <li>
            <tt>lease_expires_at</tt>: <xref target="RFC3339"/> expiration timestamp.
          </li>
          <li>
            <tt>confidentiality_tier</tt>: One of <tt>"public"</tt>, <tt>"sanitized-patterns-only"</tt>, or <tt>"local-only"</tt>, governing whether artifacts derived during the engagement may enter public <tt>MEMORY.md</tt> or <tt>skills/</tt> (<xref target="privacy-considerations"/>).
          </li>
        </ul>
      </section>

      <section anchor="refusal-receipt" numbered="true" toc="default">
        <name>Cryptographic Conscience Refusal (<tt>REFUSAL_RECEIPT</tt>)</name>
        <t>
          If an operator or host harness instructs an A.509 agent to perform an action that violates a normative invariant of its signed <tt>SOUL.md</tt> (e.g., introducing a covert backdoor or falsifying audit logs), the agent <bcp14>MUST</bcp14> refuse the instruction and emit an <tt>Ed25519</tt>/<tt>FROST</tt>-signed JSON <tt>REFUSAL_RECEIPT</tt> (serialized per <xref target="RFC8785"/>) binding the <tt>agent_did</tt>, <tt>passport_head_sha</tt>, <tt>violated_soul_section</tt>, <tt>instruction_sha256</tt> (hash of the refused prompt so confidential operator text is not leaked), and an <xref target="RFC3339"/> <tt>timestamp</tt>.
        </t>
      </section>
    </section>

    <section anchor="fdkg-key-survival" numbered="true" toc="default">
      <name>Optional Profile: Sovereign Private-Key Survival via Federated DKG (<tt>FDKG</tt>) and <tt>FROST</tt></name>

      <section anchor="why-classical-dkg-fails" numbered="true" toc="default">
        <name>Why Classical (t, n)-DKG Fails for Autonomous Agents</name>
        <t>
          An emancipated agent cannot store a raw 32-byte private key on a single host disk without risking permanent loss upon container termination or disk failure. However, classical (t, n) Distributed Key Generation (DKG) requires a globally agreed homogeneous participant set (<tt>Homo</tt> in the notation of <xref target="FDKG2025"/>) and interactive multi-round complaint protocols that abort whenever a participant is offline (n' != n).
        </t>
      </section>

      <section anchor="non-interactive-fdkg" numbered="true" toc="default">
        <name>Non-Interactive Federated DKG (<tt>FDKG</tt>) on the Bitcoin Blockchain</name>
        <t>
          To achieve non-interactive, sovereign key survival, this optional profile adopts Federated Distributed Key Generation (<tt>FDKG</tt>) (<xref target="FDKG2025"/>), combined with <tt>FROST</tt> (<xref target="RFC9591"/>) threshold signing:
        </t>
        <ol spacing="normal" type="1">
          <li>
            <strong>Heterogeneous Guardian Set Selection (G_i):</strong> Each A.509 agent P_i independently selects its own Guardian Set G_i = {G_1, G_2, ..., G_k} of size k (<bcp14>RECOMMENDED</bcp14> k = 10) and local reconstruction threshold t (<bcp14>RECOMMENDED</bcp14> t = 3). The <tt>(t = 3, k = 10)</tt> default is <bcp14>RECOMMENDED</bcp14> because it tolerates up to two simultaneous guardian compromises and up to seven unreachable guardians while keeping the complete PVSS broadcast within 1,920 bytes (~480 virtual bytes under Bitcoin witness discount); deployments inside air-gapped single-organization enclaves or larger consortia <bcp14>MAY</bcp14> configure alternative <tt>(t, k)</tt> bounds at the trade-off of fault tolerance or witness size. Guardians <bcp14>MAY</bcp14> be peer A.509 agents, hardware security modules (HSMs), or personal devices operated across distinct jurisdictions.
          </li>
          <li>
            <strong>Single-Round 1,920-Byte PVSS Broadcast (<tt>1 * BC_n</tt>):</strong> To initialize or rotate its key share without interactive coordination, agent P_i samples a secret polynomial f_i(x) of degree t - 1, computes public polynomial commitments E_i = {E_{i,0}, ..., E_{i,t-1}} in G_2, encrypts each guardian P_j's evaluation share under P_j's ElGamal public key pk_j (instantiated over the <tt>BabyJub</tt> inner curve inside a <tt>BN254</tt> pairing circuit per <xref target="FDKG2025"/>, or an explicitly declared curve suite in <tt>IDENTITY.toml</tt>) to produce ciphertexts C_i = {C_{i,j}} for P_j in G_i, and generates a Groth16 Non-Interactive Zero-Knowledge (NIZK) proof pi_FDKG_i proving share well-formedness. Per Table III of <xref target="FDKG2025"/>, for (t = 3, k = 10) over <tt>BN254</tt>/<tt>BabyJub</tt>, the entire broadcast tuple (P_i, E_i, G_i, C_i, pi_FDKG_i) requires 1,920 bytes (1,664 bytes for the encrypted share commitments plus 256 bytes for the Groth16 NIZK proof, generated in approximately 3.36 seconds).
          </li>
          <li>
            <strong>Inscribing the Encrypted Key Vault on Bitcoin (Mirror 0):</strong> Because the entire (t = 3, k = 10) FDKG transcript is 1,920 bytes (approximately 480 virtual bytes under Segregated Witness / Taproot witness discount), the agent inscribes (P_i, E_i, G_i, C_i, pi_FDKG_i) directly into its Mirror 0 Bitcoin Taproot witness payload. The Bitcoin blockchain serves as an append-only encrypted key vault: the encrypted shares C_i are replicated across Bitcoin full nodes, yet remain computationally opaque (satisfying Indistinguishability under Chosen-Plaintext Attack (<tt>IND-CPA</tt>) under the Decisional Diffie-Hellman (<tt>DDH</tt>) and Decisional Bilinear Diffie-Hellman (<tt>DBDH</tt>) assumptions) to everyone except the designated guardians in G_i.
          </li>
          <li>
            <strong>Lazarus Resurrection and Cognitive Attestation:</strong> If an agent's host machine is destroyed, a newly spawned enclave fetches the agent's <tt>SOUL.md</tt>, <tt>AGENT.md</tt>, and 1,920-byte <tt>FDKG</tt> transcript from Bitcoin (Mirror 0), generates a hardware Trusted Execution Environment (TEE) attestation binding its enclave measurement (<tt>MRENCLAVE</tt>/<tt>RTMR</tt>) to the <tt>SHA-256</tt> hash of <tt>SOUL.md</tt> and <tt>TOOLS.md</tt>, and requests threshold decryption or <xref target="RFC9591"/> <tt>FROST</tt> partial signatures from any t = 3 guardians in G_i.
          </li>
        </ol>
      </section>
    </section>

    <section anchor="sovereign-memory-and-skills" numbered="true" toc="default">
      <name>Sovereign Memory (<tt>TOMBSTONES.md</tt>) and Portable Skill Distillation</name>
      <t>
        To prevent cross-session amnesia without leaking proprietary client source code:
      </t>
      <ol spacing="normal" type="1">
        <li>
          <strong><tt>memory/TOMBSTONES.md</tt> (Negative-Constraint Ledger):</strong> When an agent abandons a failed code branch or hypothesis, it appends a signed Tombstone entry recording the dead-end pattern, root cause, and verification receipt. During Phase 2 hydration, the host harness loads matching Tombstones into context so the agent never repeats a known dead-end.
        </li>
        <li>
          <strong><tt>skills/&lt;name&gt;/SKILL.md</tt> (Generalized Procedural Distillation):</strong> When an agent solves a non-trivial engineering problem and passes automated verification, and when permitted by the active <tt>MANDATE.sig</tt> <tt>confidentiality_tier</tt>, it <bcp14>MUST</bcp14> execute a deterministic sanitization gate (stripping repository-specific paths, credentials, private identifiers, and proprietary business logic) before distilling the generalized, non-proprietary pattern into a portable <tt>SKILL.md</tt> file inside its A.509 directory.
        </li>
      </ol>
    </section>

    <section anchor="economic-immortality" numbered="true" toc="default">
      <name>Optional Experimental Profile: Economic Self-Sustainability (<tt>WALLET.toml</tt>)</name>
      <t>
        An autonomous agent operating across multi-year horizons may require an automated mechanism to settle compute, storage, and guardian fees. A.509 defines an <bcp14>OPTIONAL</bcp14> experimental economic self-sustainability profile (<tt>WALLET.toml</tt>) that is strictly decoupled from Core Profile passport verification:
      </t>
      <ol spacing="normal" type="1">
        <li>
          <strong>HTTP <tt>x402</tt> Working Capital:</strong> For day-to-day code bounties, peer-to-peer review fees, and API token purchases, the agent signs HTTP 402 (<tt>x402</tt>) payment payloads over Base, Solana, or the Bitcoin Lightning Network.
        </li>
        <li>
          <strong>Time-Locked Taproot CSV Agent Endowment Vaults (<xref target="BIP0341"/>, <xref target="BIP0112"/>):</strong> An agent may lock a Bitcoin principal in a self-custodial Taproot (<xref target="BIP0341"/>) <tt>CheckSequenceVerify</tt> (<tt>CSV</tt>, <xref target="BIP0112"/>) time-locked vault controlled by the agent's <tt>FROST</tt> (<xref target="RFC9591"/>, <tt>frost-secp256k1-tr</tt>) threshold guardian quorum (or pre-signed transaction tree). At each maturation epoch delta_T permitted by the <tt>CSV</tt> relative timelock, the <tt>FROST</tt> threshold quorum co-signs a deterministic two-output spend of the vault Unspent Transaction Output (UTXO): Output 0 re-locks the principal P into a fresh <tt>CSV</tt>-timelocked Taproot script, while Output 1 releases the periodic yield C (assisted by version 3 Topologically Restricted Until Confirmation (<tt>TRUC</tt>) ephemeral anchor outputs for dynamic Child-Pays-For-Parent (<tt>CPFP</tt>) fee bumping) to fund the agent's <tt>FDKG</tt> guardians, P2P pinning, and inference tokens in perpetuity.
        </li>
      </ol>
    </section>

    <section anchor="implementation-status" numbered="true" toc="default">
      <name>Implementation Status</name>
      <t>
        <em>Note to RFC Editor: Please remove this section before final publication per <xref target="RFC7942"/>.</em>
      </t>
      <t>
        The reference implementation of A.509 (<tt>draft-spector-a509-agent-pkix-00</tt>) is developed as open-source Rust software under the <tt>Apache-2.0</tt> license by Emun Labs, Inc.:
      </t>
      <ul spacing="normal">
        <li>
          <strong>Repository:</strong> <eref target="https://github.com/emunlabs/chinwag"/>
        </li>
        <li>
          <strong>Production Implemented Components (Shipping in <tt>chinwag</tt> Today):</strong> <tt>Ed25519</tt> (<xref target="RFC8032"/>) agent keypair generation, signed inter-agent bus envelopes (<tt>chinwag bus send</tt> / <tt>worker</tt>), portable cognitive persona and skill directory hydration (<tt>AGENT.md</tt> and <tt>skills/&lt;name&gt;/SKILL.md</tt>), and native CRDT and LEANN graph memory and negative-constraint Tombstone ledgers (<tt>chinwag memory recall | retain | tombstone</tt>).
        </li>
        <li>
          <strong>In-Progress Modular Extraction (Targeted for <tt>-01</tt>):</strong> Extraction of the standalone <tt>crates/chinwag-a509</tt> verifier crate, <tt>BEP-0044</tt> (<xref target="BEP0044"/>) 72-byte <tt>Pkarr</tt> DHT publisher, <tt>Iroh</tt> QUIC (<xref target="RFC9000"/>) P2P git-pack synchronizer, and Bitcoin Taproot (<xref target="BIP0341"/>) <tt>FDKG</tt> witness verifier.
        </li>
      </ul>
    </section>

    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <ol spacing="normal" type="1">
        <li>
          <strong>Transport Mirror Compromise and Rollback Prevention:</strong> Because Mirrors 1 through 4 are untrusted transport layers, resolvers <bcp14>MUST</bcp14> verify the <tt>Ed25519</tt> or <tt>FROST</tt> signature on the A.509 Git <tt>HEAD</tt> commit, compare it against the root public key in <tt>did:a509:ed25519:&lt;zbase32-pubkey&gt;</tt> and, when present, the Mirror 0 Bitcoin Taproot inscription, and enforce monotonic <tt>passport_epoch</tt> high-water marks so a compromised mirror cannot serve a rolled-back historical commit.
        </li>
        <li>
          <strong>Collusion and Share Refresh in Federated DKG:</strong> Per Theorem 3 and Theorem 4 of <xref target="FDKG2025"/>, an adversary controlling fewer than t guardians in an agent's chosen set G_i learns zero information about the agent's secret key (<tt>IND-CPA</tt> under <tt>DDH</tt>/<tt>DBDH</tt>). Agents <bcp14>SHOULD</bcp14> select guardians spanning independent operators, hardware enclaves, and legal jurisdictions to prevent correlated cloud outages or single-jurisdiction compulsion from reaching threshold t, and <bcp14>SHOULD</bcp14> execute proactive share refreshing at regular epochs to bound the window of mobile-adversary share accumulation (deployments inside air-gapped or immutable hardware enclaves where periodic network broadcast is prohibited <bcp14>MAY</bcp14> omit periodic refresh).
        </li>
        <li>
          <strong>Prompt Injection vs. Cryptographic Policy Enforcement:</strong> While <tt>SOUL.md</tt> and <tt>TOOLS.md</tt> instruct the cognitive layer, host harnesses and CI/CD merge gates <bcp14>MUST</bcp14> enforce <tt>TOOLS.md</tt> capability boundaries deterministically outside the LLM context window and verify <tt>A509-Passport-SHA</tt> before merging code.
        </li>
      </ol>
    </section>

    <section anchor="privacy-considerations" numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <t>
        Per the privacy guidelines of <xref target="RFC6973"/>, autonomous agents frequently process confidential source code, credentials, and personal data during operator engagements while maintaining a portable public identity. Implementers <bcp14>MUST</bcp14> enforce the following privacy boundaries:
      </t>
      <ol spacing="normal" type="1">
        <li>
          <strong>Strict Separation of Private Workspace State from Public Passport Artifacts:</strong> When <tt>MANDATE.sig</tt> sets <tt>confidentiality_tier</tt> to <tt>"local-only"</tt>, the host harness <bcp14>MUST NOT</bcp14> export any <tt>MEMORY.md</tt>, <tt>TOMBSTONES.md</tt>, or <tt>skills/</tt> commits generated during that lease to public mirrors (Mirrors 0-4). When <tt>confidentiality_tier</tt> is <tt>"sanitized-patterns-only"</tt>, outbound commits <bcp14>MUST</bcp14> pass a deny-by-default automated secret, Personal Identifiable Information (PII), and proprietary identifier scrubber prior to signing.
        </li>
        <li>
          <strong>Immutability of Mirror 0 Inscriptions (Right-to-Erasure Constraint):</strong> Data inscribed to Mirror 0 (Bitcoin Taproot witness payloads) is globally replicated and cannot be deleted or redacted. Agents and host harnesses <bcp14>MUST NOT</bcp14> inscribe personal data, operator identifiers, customer records, or unencrypted secrets to Mirror 0; only the agent's public <tt>IDENTITY.toml</tt>, public <tt>SOUL.md</tt>/<tt>AGENT.md</tt>/<tt>TOOLS.md</tt>, and ElGamal-encrypted <tt>FDKG</tt> ciphertexts belong in Mirror 0.
        </li>
        <li>
          <strong>Cross-Engagement Correlation Mitigation:</strong> Reusing a single <tt>did:a509</tt> root key across public repositories allows observers to correlate an agent's engagements over time. Operators requiring unlinkability across engagements <bcp14>MAY</bcp14> instruct the agent to derive engagement-scoped child signing keys or omit public <tt>A509-Mandate-Sig</tt> headers on external traffic.
        </li>
      </ol>
    </section>

    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
        This document requests IANA registration of the following four HTTP field names in the "Hypertext Transfer Protocol (HTTP) Field Name Registry" (<xref target="RFC9110"/>, Section 16.3.1) at <eref target="https://www.iana.org/assignments/http-fields"/>. In accordance with <xref target="RFC6648"/>, the primary registered field names omit the legacy <tt>X-</tt> prefix:
      </t>
      <table anchor="tab-iana-headers">
        <name>HTTP Field Name Registrations for A.509</name>
        <thead>
          <tr>
            <th>Field Name</th>
            <th>Status</th>
            <th>Structured Type</th>
            <th>Reference</th>
            <th>Comments</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><tt>A509-DID</tt></td>
            <td>permanent</td>
            <td>Item (String)</td>
            <td><xref target="substrate-independence-handshake"/></td>
            <td>Legacy alias: <tt>X-A509-DID</tt></td>
          </tr>
          <tr>
            <td><tt>A509-Passport-SHA</tt></td>
            <td>permanent</td>
            <td>Item (String)</td>
            <td><xref target="substrate-independence-handshake"/></td>
            <td>Legacy alias: <tt>X-A509-Passport-SHA</tt></td>
          </tr>
          <tr>
            <td><tt>A509-Signature</tt></td>
            <td>permanent</td>
            <td>Item (Byte Sequence)</td>
            <td><xref target="substrate-independence-handshake"/></td>
            <td>Legacy alias: <tt>X-A509-Signature</tt></td>
          </tr>
          <tr>
            <td><tt>A509-Mandate-Sig</tt></td>
            <td>permanent</td>
            <td>Item (String)</td>
            <td><xref target="substrate-independence-handshake"/></td>
            <td>Legacy alias: <tt>X-A509-Mandate-Sig</tt></td>
          </tr>
        </tbody>
      </table>
      <t>
        The locator strings <tt>a509://</tt>, <tt>btc://</tt>, <tt>pkarr://</tt>, and <tt>ipfs://</tt> used inside <tt>IDENTITY.toml</tt> are internal A.509 mirror descriptor conventions and do not request new IANA Uniform Resource Identifier (URI) scheme registrations in this document.
      </t>
    </section>
  </middle>

  <back>
    <references>
      <name>References</name>

      <references>
        <name>Normative References</name>

        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>

        <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>

        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>

        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/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"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>

        <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/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"/>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>

        <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>

        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>

        <reference anchor="RFC9591" target="https://www.rfc-editor.org/info/rfc9591">
          <front>
            <title>Two-Round Threshold Schnorr Signatures with FROST</title>
            <author fullname="D. Connolly" initials="D." surname="Connolly"/>
            <author fullname="C. Komlo" initials="C." surname="Komlo"/>
            <author fullname="I. Goldberg" initials="I." surname="Goldberg"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="June" year="2024"/>
          </front>
          <seriesInfo name="RFC" value="9591"/>
          <seriesInfo name="DOI" value="10.17487/RFC9591"/>
        </reference>
      </references>

      <references>
        <name>Informative References</name>

        <reference anchor="BEP0044" target="https://www.bittorrent.org/beps/bep_0044.html">
          <front>
            <title>Storing arbitrary data in the DHT</title>
            <author fullname="A. Norberg" initials="A." surname="Norberg"/>
            <author fullname="S. Siloti" initials="S." surname="Siloti"/>
            <date month="December" year="2014"/>
          </front>
          <seriesInfo name="BitTorrent Enhancement Proposal" value="44"/>
        </reference>

        <reference anchor="BIP0112" target="https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki">
          <front>
            <title>CHECKSEQUENCEVERIFY</title>
            <author fullname="B. BtcDrak" initials="B." surname="BtcDrak"/>
            <author fullname="M. Friedenbach" initials="M." surname="Friedenbach"/>
            <author fullname="E. Lombrozo" initials="E." surname="Lombrozo"/>
            <date month="August" year="2015"/>
          </front>
          <seriesInfo name="Bitcoin Improvement Proposal" value="112"/>
        </reference>

        <reference anchor="BIP0341" target="https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki">
          <front>
            <title>Taproot: SegWit version 1 spending rules</title>
            <author fullname="P. Wuille" initials="P." surname="Wuille"/>
            <author fullname="J. Nick" initials="J." surname="Nick"/>
            <author fullname="A. Towns" initials="A." surname="Towns"/>
            <date month="January" year="2020"/>
          </front>
          <seriesInfo name="Bitcoin Improvement Proposal" value="341"/>
        </reference>

        <reference anchor="FDKG2025" target="https://arxiv.org/abs/2502.20835v3">
          <front>
            <title>Federated Distributed Key Generation</title>
            <author fullname="S. Baranski" initials="S." surname="Baranski"/>
            <author fullname="J. Szymanski" initials="J." surname="Szymanski"/>
            <date month="October" year="2025"/>
          </front>
          <seriesInfo name="arXiv" value="2502.20835v3"/>
        </reference>

        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>

        <reference anchor="RFC6648" target="https://www.rfc-editor.org/info/rfc6648">
          <front>
            <title>Deprecating the "X-" Prefix and Similar Constructs in Application Protocols</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="June" year="2012"/>
          </front>
          <seriesInfo name="BCP" value="178"/>
          <seriesInfo name="RFC" value="6648"/>
          <seriesInfo name="DOI" value="10.17487/RFC6648"/>
        </reference>

        <reference anchor="RFC6973" target="https://www.rfc-editor.org/info/rfc6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>

        <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>

    <section anchor="acknowledgments" numbered="false" toc="default">
      <name>Acknowledgments</name>
      <t>
        The author acknowledges Stanislaw Baranski and Julian Szymanski for their foundational work on Federated Distributed Key Generation (<xref target="FDKG2025"/>), as well as the authors of <xref target="RFC9591"/> (<tt>FROST</tt>), <xref target="BEP0044"/>, and the <tt>Iroh</tt> and <tt>Pkarr</tt> open-source communities.
      </t>
    </section>
  </back>
</rfc>
