<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-burls-mtac-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="MTAC">Merkle Tree Agent Certificates (MTAC): Batch-Issued Post-Quantum Identity Credentials for AI Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-burls-mtac-00"/>
    <author initials="R." surname="Burls" fullname="Reuben Burls">
      <organization>Aelethion OU</organization>
      <address>
        <email>rgburls@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="21"/>
    <area>Security</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>AI agent</keyword>
    <keyword>transparency log</keyword>
    <keyword>post-quantum</keyword>
    <keyword>ML-DSA</keyword>
    <keyword>Merkle tree</keyword>
    <keyword>agent identity</keyword>
    <abstract>
      <?line 52?>

<t>This document specifies Merkle Tree Agent Certificates (MTAC), a credential format
and issuance profile in which a certificate authority commits a batch of AI agent
identity credentials to a Merkle tree, signs only the tree head with the
post-quantum signature algorithm ML-DSA-65, and distributes a per-credential
inclusion proof. A relying party verifies a credential offline against the signed
tree head without contacting the issuer. Each batch root is additionally co-signed
by an independently keyed witness, providing per-batch integrity and continuity
attestation, and its root can be corroborated against an independent public record.</t>
      <t>MTAC defines the leaf structure, its deterministic encoding, the leaf hash
preimage, the signed tree head wire format, the witness co-signature, and an
optional challenge-response proof of possession that binds a credential to a
holder key. Test vectors are provided. This document specifies a credential
issuance and verification mechanism. Declared scopes carried in a credential are
self-reported parameters recorded at issuance; this document does not specify a
runtime authorization mechanism.</t>
    </abstract>
  </front>
  <middle>
    <?line 71?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Autonomous AI agents increasingly act across organizational boundaries. A relying
party receiving a request from such an agent needs to determine what credential
that agent was issued, by which authority, under what declared parameters, and
whether that credential is present in a tamper-evident log that can be independently
checked. Existing credential formats address parts of this problem, but issuing an individual signed certificate
per agent scales poorly when agent populations are large and credential lifetimes
are short, and post-quantum signatures are substantially larger than the classical
signatures they replace.</t>
      <t>Merkle Tree Agent Certificates (MTAC) addresses this by making the batch, rather
than the individual credential, the unit of issuance. A certificate authority
collects agent identity assertions over a batch window, constructs a Merkle tree
over the resulting leaves, and produces a single ML-DSA-65 <xref target="FIPS204"/> signature
over the tree head. Each agent receives an inclusion proof of size logarithmic in
the batch size. One signing operation covers the whole batch, and verification is
a local hash computation against a signed tree head that the verifier already
holds.</t>
      <section anchor="position-of-this-work">
        <name>Position of this work</name>
        <t>As of 21 July 2026, no third-party public document, specification, or shipped
system specifies Merkle batch issuance as the unit of credential issuance for AI
agent identity under post-quantum (ML-DSA-65) signed tree heads, with each batch
root independently co-signed by a distinct witness key and publicly corroborated.</t>
        <t>Adjacent work occupies other compositions. MAGIQ (arXiv:2605.06933) performs
post-quantum batch authorization over a private, unlogged aggregation and states
that it provides no revocation. The GoDaddy Agent Name Service operates a
production, publicly queryable log labelled RFC9162_SHA256 recording per-entry
agent registrations under classical signatures. draft-coetzee-oauth-spt-txn-tokens
co-signs Merkle tree heads with an external witness over post-hoc authorization
receipts rather than over credential issuance. draft-fane-opena2a-aip and
draft-sharif-apki-agent-pki perform per-event Certificate Transparency style
logging of agent credentials. <xref target="I-D.ietf-plants-merkle-tree-certs"/> specifies
post-quantum Merkle batch issuance for non-agent subjects, and its working group
is chartered for WebPKI and TLS.</t>
        <t>The closest artifact is a shipped implementation rather than a specification.
CIRISVerify requires hybrid Ed25519 and ML-DSA-65 signed tree heads over an RFC 6962
log for AI agents, and additionally defines N-of-M co-signature of those tree heads by
independently keyed witnesses. It holds every element named above except one: its log
records licence verification events, and its licences are signed individually rather
than committed as a batch. <strong>The distinguishing property of this specification is
therefore the issuance unit, not the witness arrangement and not the use of
post-quantum signatures</strong>, both of which are present in prior work. See <xref target="related"/>.</t>
        <t>This document does not claim novelty in Merkle tree construction, in inclusion
proofs, in post-quantum signatures, or in carrying an inclusion proof alongside a
credential. Each of those is established practice, and <xref target="related"/> identifies where.</t>
      </section>
      <section anchor="what-this-document-does-not-specify">
        <name>What this document does not specify</name>
        <t>The distinction matters for correct implementation, so it is stated here rather
than only in <xref target="security-considerations"/>.</t>
        <t>Declared scopes in an MTAC leaf are self-reported parameters recorded at issuance.
This document specifies how they are encoded, committed, and verified as having
been issued. It does not specify a runtime authorization mechanism, and a relying
party <bcp14>MUST NOT</bcp14> treat the presence of a scope token as evidence that the agent
operated within it.</t>
        <t>Verification establishes that a credential was validly issued by the named
authority and is present in the log at the given tree head. It does not establish
what the agent subsequently did.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt>Batch:</dt>
        <dd>
          <t>The set of agent identity assertions committed to a single Merkle tree by one
certificate authority during one batch window.</t>
        </dd>
        <dt>Leaf:</dt>
        <dd>
          <t>The canonical encoding of a single agent identity assertion, as defined in
<xref target="leaf"/>.</t>
        </dd>
        <dt>Leaf hash:</dt>
        <dd>
          <t>The 32-octet SHA-256 value computed over the preimage defined in <xref target="leaf-hash"/>.</t>
        </dd>
        <dt>Signed Tree Head (STH):</dt>
        <dd>
          <t>The structure defined in <xref target="sth"/>, binding a log identifier, a tree size, a
timestamp, and a Merkle root, signed with ML-DSA-65.</t>
        </dd>
        <dt>Witness:</dt>
        <dd>
          <t>An entity holding a signing key distinct from the certificate authority key,
which co-signs batch roots as described in <xref target="witness"/>.</t>
        </dd>
        <dt>Holder commitment:</dt>
        <dd>
          <t>A thumbprint of a public key, carried as a scope token in a leaf, committing the
credential to a key whose possession can later be demonstrated (<xref target="pop"/>).</t>
        </dd>
        <dt>Declared scope:</dt>
        <dd>
          <t>A self-reported parameter recorded in a leaf at issuance. The term "declared" is
load-bearing throughout this document.</t>
        </dd>
      </dl>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <t>A certificate authority (CA) operates a log. The log has a <tt>log_id</tt>, defined in
<xref target="sth"/> as the SHA-256 of the CA's raw ML-DSA-65 public key.</t>
      <t>During a batch window the CA collects agent identity assertions. At the close of
the window it encodes each assertion as a leaf (<xref target="leaf"/>), computes each leaf hash
(<xref target="leaf-hash"/>), constructs a Merkle tree following the structure of <xref target="RFC9162"/>
Section 2.1, and signs the resulting tree head (<xref target="sth"/>). A witness independently
co-signs the batch root (<xref target="witness"/>). Each agent receives its leaf, its inclusion
proof, and the signed tree head.</t>
      <t>A relying party verifies by recomputing the leaf hash from the leaf bytes,
folding the inclusion proof to a root, comparing that root against the signed tree
head, and verifying the ML-DSA-65 signature over the tree head. All four steps are
local computation. No network interaction with the CA is required at verification
time.</t>
    </section>
    <section anchor="leaf">
      <name>MtacLeaf</name>
      <section anchor="structure">
        <name>Structure</name>
        <t>An MtacLeaf contains exactly six fields. All six are mandatory. There are no
optional fields in schema version 1.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">CBOR type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>schema_version</tt></td>
              <td align="left">unsigned integer</td>
              <td align="left">
                <bcp14>MUST</bcp14> be 1</td>
            </tr>
            <tr>
              <td align="left">
                <tt>agent_id</tt></td>
              <td align="left">text string</td>
              <td align="left">Identifier of the agent</td>
            </tr>
            <tr>
              <td align="left">
                <tt>sponsor_id</tt></td>
              <td align="left">text string</td>
              <td align="left">Identifier of the sponsoring entity</td>
            </tr>
            <tr>
              <td align="left">
                <tt>authorized_scopes</tt></td>
              <td align="left">array of text string</td>
              <td align="left">Declared scopes; see <xref target="scopes"/></td>
            </tr>
            <tr>
              <td align="left">
                <tt>not_before</tt></td>
              <td align="left">unsigned integer</td>
              <td align="left">Start of the validity window, seconds since the Unix epoch</td>
            </tr>
            <tr>
              <td align="left">
                <tt>not_after</tt></td>
              <td align="left">unsigned integer</td>
              <td align="left">End of the validity window, seconds since the Unix epoch</td>
            </tr>
          </tbody>
        </table>
        <t><tt>schema_version</tt> is an ordinary map entry. It is not a CBOR tag and not an
envelope. A decoder that encounters <tt>schema_version</tt> other than 1 <bcp14>MUST</bcp14> reject the
leaf.</t>
        <t>Implementations <bcp14>MUST NOT</bcp14> assume that <tt>not_before</tt> is less than or equal to
<tt>not_after</tt>. The encoding layer is value-agnostic, and coherence of the validity
window is a policy check performed above this layer. A verifier that requires a
coherent window <bcp14>MUST</bcp14> check it explicitly.</t>
      </section>
      <section anchor="encoding">
        <name>Canonical encoding</name>
        <t>A leaf is encoded as a CBOR <xref target="RFC8949"/> map using the deterministic encoding rules
of <xref target="RFC8949"/> Section 4.2.1 (CDER), with the additional constraints in this
section. The rules below are normative and are restated here rather than
incorporated by reference, because two of them are commonly implemented
incorrectly and both change the leaf hash.</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Map key ordering is bytewise over the ENCODED key.</strong> Keys <bcp14>MUST</bcp14> be sorted by
comparing their complete CBOR encodings as octet strings, which includes the
initial length head. This is not string-lexicographic ordering of the key text.
See <xref target="key-order"/>.</t>
          </li>
          <li>
            <t><strong>Integers <bcp14>MUST</bcp14> use the shortest form.</strong> An encoder <bcp14>MUST NOT</bcp14> emit a value in a
wider representation than necessary. A decoder <bcp14>MUST</bcp14> reject non-shortest-form
integers.</t>
          </li>
          <li>
            <t><strong>Text strings <bcp14>MUST</bcp14> be in Unicode Normalization Form C (NFC), and normalization
is applied before the length head is computed.</strong> An encoder that emits non-NFC
UTF-8 produces a different leaf hash for a semantically equal leaf. A decoder
<bcp14>MUST</bcp14> reject text that is not in NFC.</t>
          </li>
          <li>
            <t><strong>Duplicate map keys <bcp14>MUST</bcp14> be rejected</strong> by decoders.</t>
          </li>
          <li>
            <t><strong>Array element order is preserved and is significant.</strong> Only map keys are
reordered by the canonical form. Two leaves whose <tt>authorized_scopes</tt> contain
the same elements in a different order are different leaves with different leaf
hashes. Implementations <bcp14>MUST NOT</bcp14> sort <tt>authorized_scopes</tt> as a normalization
step.</t>
          </li>
        </ol>
        <t>A decoder that accepts any of the forms this section requires to be rejected
introduces malleability: two distinct octet strings would decode to the same leaf,
while hashing to different leaf hashes.</t>
        <section anchor="key-order">
          <name>Map key ordering, worked</name>
          <t>The six schema version 1 keys, with their encoded first octet:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Key</th>
                <th align="left">Length</th>
                <th align="left">First encoded octet</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>agent_id</tt></td>
                <td align="left">8</td>
                <td align="left">0x68</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>not_after</tt></td>
                <td align="left">9</td>
                <td align="left">0x69</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>not_before</tt></td>
                <td align="left">10</td>
                <td align="left">0x6a</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>sponsor_id</tt></td>
                <td align="left">10</td>
                <td align="left">0x6a</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>schema_version</tt></td>
                <td align="left">14</td>
                <td align="left">0x6e</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>authorized_scopes</tt></td>
                <td align="left">17</td>
                <td align="left">0x71</td>
              </tr>
            </tbody>
          </table>
          <t>Because the length head is the first octet compared, shorter keys sort first. The
correct order is therefore:</t>
          <artwork><![CDATA[
agent_id, not_after, not_before, sponsor_id, schema_version,
authorized_scopes
]]></artwork>
          <t>Sorting the same six keys as text strings yields a different order:</t>
          <artwork><![CDATA[
agent_id, authorized_scopes, not_after, not_before, schema_version,
sponsor_id
]]></artwork>
          <t>An implementation that produces the second order produces a different octet string
and therefore a different leaf hash. This is the single most likely source of
interoperability failure in this specification.</t>
        </section>
      </section>
      <section anchor="scopes">
        <name>Declared scopes</name>
        <t><tt>authorized_scopes</tt> is an array of text strings. Two token classes are defined.</t>
        <t>A capability scope token describes an operation class the agent declares it may
perform. Capability scope tokens are self-reported by the requesting entity and
recorded by the CA. They are declared parameters. This document specifies no
vocabulary for them and no mechanism by which they constrain agent behaviour.</t>
        <t>A holder commitment token has the form <tt>aegis:holder:&lt;jkt&gt;</tt>, where <tt>&lt;jkt&gt;</tt> is the
43-character thumbprint defined in <xref target="jkt"/>. A holder commitment token is a key
commitment. It grants nothing and gates nothing by itself. It is not a permission
and not an access grant. Its only function is to identify the key whose possession
may be demonstrated under <xref target="pop"/>.</t>
        <t>A relying party <bcp14>MUST NOT</bcp14> interpret either token class as evidence about agent
behaviour.</t>
      </section>
    </section>
    <section anchor="leaf-hash">
      <name>Leaf hash</name>
      <t>The leaf hash is SHA-256 over a preimage of exactly four concatenated segments:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Offset</th>
            <th align="left">Length</th>
            <th align="left">Contents</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0</td>
            <td align="left">1</td>
            <td align="left">0x00, the <xref target="RFC9162"/> Section 2.1.1 leaf type octet</td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">16</td>
            <td align="left">
              <tt>DOMAIN_LABEL</tt>, defined below</td>
          </tr>
          <tr>
            <td align="left">17</td>
            <td align="left">32</td>
            <td align="left">CA public key fingerprint, defined below</td>
          </tr>
          <tr>
            <td align="left">49</td>
            <td align="left">L</td>
            <td align="left">The canonical leaf encoding from <xref target="encoding"/></td>
          </tr>
        </tbody>
      </table>
      <t>The total preimage length is 49 + L octets.</t>
      <t><tt>DOMAIN_LABEL</tt> is the following 16 octets:</t>
      <artwork><![CDATA[
"aegis-leaf/v1\n\0\0"
61 65 67 69 73 2d 6c 65 61 66 2f 76 31 0a 00 00
]]></artwork>
      <t>The CA public key fingerprint is the SHA-256 of the <strong>raw 1952-octet ML-DSA-65
public key</strong> as defined by <xref target="FIPS204"/> Section 5.3. The public key <bcp14>MUST NOT</bcp14> be
wrapped in any ASN.1, DER, or other structure before hashing. Implementations that
wrap the key before hashing will compute a different fingerprint, a different leaf
hash, and will fail to interoperate.</t>
      <t>The same 32-octet value is used as the <tt>log_id</tt> in <xref target="sth"/>. One value therefore
binds a leaf to its issuer and identifies the log in the signed tree head.</t>
      <t>No length prefix and no separator appears before the trailing leaf encoding. The
construction is unambiguous because the three preceding segments are of fixed
width, so the boundary between the fingerprint and the leaf encoding is determined
by position alone. Implementations <bcp14>MUST NOT</bcp14> insert a length prefix.</t>
      <t>Leaf index and batch epoch are deliberately absent from the preimage. Position in
the tree is bound by the inclusion proof and the verification algorithm that
consumes <tt>leaf_index</tt>, following <xref target="RFC9162"/> Section 2.1.3.2.</t>
      <section anchor="leaf-vector">
        <name>Test vector</name>
        <t>The following vector is fully reproducible. The CA public key is synthetic and
defined by a rule rather than supplied as a blob, so no key file is required.</t>
        <t>Leaf field values:</t>
        <artwork><![CDATA[
schema_version    : 1
agent_id          : "urn:aegis:agent:f01"
sponsor_id        : "sponsor@example.com"
authorized_scopes : ["scope:read"]
not_before        : 1713600000
not_after         : 1745136000
]]></artwork>
        <t>Canonical leaf encoding, L = 138 octets:</t>
        <artwork><![CDATA[
a6686167656e745f69647375726e3a61656769733a6167656e743a663031696e6f745f61
667465721a6804a9806a6e6f745f6265666f72651a662376006a73706f6e736f725f6964
7373706f6e736f72406578616d706c652e636f6d6e736368656d615f76657273696f6e01
71617574686f72697a65645f73636f706573816a73636f70653a72656164
]]></artwork>
        <t>CA public key: 1952 octets where octet i has value (i mod 256), for i from 0 to
1951. Its SHA-256 fingerprint is:</t>
        <artwork><![CDATA[
0a9594d4796731c68bae082ee8641342b7782bd5eac0919dea05c16a4f48683d
]]></artwork>
        <t>Preimage length: 1 + 16 + 32 + 138 = 187 octets. Resulting leaf hash:</t>
        <artwork><![CDATA[
8dd4e9aad96815df9ffe9fddb2d7ff7e867cc345a771b2d40fc8e464f04b9995
]]></artwork>
        <t>An implementation that reproduces this value has correctly implemented
<xref target="encoding"/> and this section, including the map key ordering of <xref target="key-order"/>.</t>
      </section>
    </section>
    <section anchor="sth">
      <name>Signed Tree Head</name>
      <section anchor="wire-format">
        <name>Wire format</name>
        <t>The signed tree head is a CBOR array of two elements:</t>
        <artwork><![CDATA[
array(2)[
  tstr "AEGIS-STH-v1",
  bstr( array(5)[ log_id         bstr(32),
                  tree_size      uint,
                  timestamp      uint,
                  root_hash      bstr(32),
                  sth_extensions array ] )
]
]]></artwork>
        <t>The envelope and the body are emitted in definite-length shortest form. The octet
string in position 1 is the signed message: the signature is computed over exactly
those octets as received. <strong>A verifier <bcp14>MUST</bcp14> verify over the received octets and <bcp14>MUST
NOT</bcp14> re-encode the body before verifying</strong>, because any re-encoding that differs by a
single octet produces a different message and a failed verification.</t>
        <t><tt>log_id</tt> is the SHA-256 of the raw ML-DSA-65 CA public key, the same value used as
the fingerprint in <xref target="leaf-hash"/>.</t>
        <t><tt>timestamp</tt> is milliseconds since the Unix epoch.</t>
        <t><tt>sth_extensions</tt> is an array, empty in this version. This document defines no
extension semantics; the field exists so that the signed body has a place for future
extension, and it is covered by the signature. Implementations <bcp14>MUST</bcp14> accept an empty
array and <bcp14>MUST NOT</bcp14> assume the field is absent.</t>
        <t><strong>The wire order is <tt>tree_size</tt> before <tt>timestamp</tt>.</strong> Implementations <bcp14>MUST</bcp14> emit and
parse the body in the order given above. Any ordering derived from a struct
declaration, a serialization library's field order, or alphabetical sorting is
incorrect.</t>
      </section>
      <section anchor="signature-and-domain-separation">
        <name>Signature and domain separation</name>
        <t>The signature is ML-DSA-65 <xref target="FIPS204"/> over the signed message, using the FIPS 204
Section 5.2 context parameter with the value:</t>
        <artwork><![CDATA[
ctx = "AEGIS-STH-v1"
]]></artwork>
        <t>Domain separation is therefore dual layer: the context string appears both as the
tag in position 0 of the envelope, which is inside the hashed message, and as the
FIPS 204 context, which is not. A verifier <bcp14>MUST</bcp14> supply the context string.
Verifying with an empty context will reject valid signatures.</t>
        <t>The signature is 3309 octets. The CA public key is 1952 octets. Both lengths are
as specified in <xref target="FIPS204"/> for ML-DSA-65 and are cross-referenced in <xref target="RFC9964"/>.</t>
      </section>
      <section anchor="not-cose">
        <name>Relationship to ML-DSA in JOSE and COSE</name>
        <t>MTAC signatures are raw <xref target="FIPS204"/> signatures. They are <strong>not</strong> JOSE or COSE
signatures, and this document does not define a COSE or JOSE serialization.</t>
        <t>This distinction is stated explicitly because <xref target="RFC9964"/> Section 5 requires that
"the ctx parameter <bcp14>MUST</bcp14> be the empty string for ML-DSA-44, ML-DSA-65, and ML-DSA-87"
when ML-DSA is used in JOSE or COSE, whereas every MTAC signature uses a non-empty
FIPS 204 context. There is no conflict: that requirement governs the JOSE and COSE
serializations <xref target="RFC9964"/> defines, and MTAC uses neither.</t>
        <t><xref target="RFC9964"/> is cited normatively by this document for two things only: the AKP key
type and the <tt>ML-DSA-65</tt> algorithm name used in the holder thumbprint of <xref target="jkt"/>, and
the confirmation of <xref target="FIPS204"/> key and signature lengths. It is not cited as the
serialization for any MTAC signature.</t>
        <t>An implementation that wishes to carry MTAC evidence inside COSE, for example as a
COSE Receipt, cannot reuse an MTAC signature directly: a COSE object asserting
ML-DSA-65 must have been produced with an empty context, so it would be a second,
separate signature over a different input. That is a known consequence of the design
and is discussed further in <xref target="scitt"/>.</t>
      </section>
    </section>
    <section anchor="inclusion-proof">
      <name>Inclusion proof</name>
      <t>An inclusion proof is a CBOR array of three elements, emitted in definite-length
shortest form:</t>
      <artwork><![CDATA[
array(3)[ tree_size uint, leaf_index uint, path array of bstr(32) ]
]]></artwork>
      <t><strong>Note the element order: <tt>tree_size</tt> precedes <tt>leaf_index</tt>.</strong> The two elements are
both unsigned integers, so a decoder cannot detect a transposition by type, and an
implementation that reverses them will verify single-leaf trees successfully while
failing on every larger tree. This order is deliberately the same as the inclusion
proof of <xref target="RFC9942"/> Section 5.2, so that an MTAC proof can be carried as a COSE
Receipt proof without reordering. See <xref target="related"/>.</t>
      <t><tt>path</tt> contains the sibling hashes from the leaf to the root, in leaf-to-root
order. Interior nodes are hashed with the 0x01 prefix, per <xref target="RFC9162"/> Section 2.1.1,
so that no interior node hash can collide with a leaf hash, which uses the 0x00
prefix given in <xref target="leaf-hash"/>.</t>
      <t>For a tree of size 1 the path is empty and the leaf hash equals the root hash. A
single-leaf proof therefore encodes as the four octets <tt>83 01 00 80</tt>, which is
<tt>array(3)</tt> followed by <tt>tree_size</tt> 1, <tt>leaf_index</tt> 0, and an empty path.</t>
      <t>Verification folds the path using the bits of <tt>leaf_index</tt>, following <xref target="RFC9162"/>
Section 2.1.3.</t>
    </section>
    <section anchor="witness">
      <name>Witness co-signature</name>
      <section anchor="purpose-and-limits">
        <name>Purpose and limits</name>
        <t>A witness holds a signing key distinct from the CA key and co-signs batch roots.
The witness provides per-batch, independent-key co-signed integrity and continuity
attestation. It protects a relying party that checks it against a compromise
limited to the CA key, and against dropped or truncated batches.</t>
        <t>The witness described here does NOT provide non-equivocation. Achieving that
property would require an independently operated third-party witness and a
route by which entries can be enumerated, neither of which this document
specifies. Implementers and reviewers comparing this mechanism against the
receipts of <xref target="RFC9942"/>, which does address that property, should note the
difference. The witness check is additive: it does not replace the primary
verification result defined in <xref target="verification"/>.</t>
      </section>
      <section anchor="cosig-format">
        <name>Co-signature format</name>
        <t>The witness signs a five-line note. The note is deliberately human-readable rather
than CBOR, so that an auditor can inspect a co-signature artifact by eye. The signed
octets are exactly, with no trailing octet after the final newline:</t>
        <artwork><![CDATA[
AEGIS-WITNESS-v1\n
origin:<origin>\n
size:<size>\n
root_hash:<root_hash_hex>\n
timestamp:<timestamp>\n
]]></artwork>
        <t>Byte-exact reconstruction is required to verify the signature, so each field is
specified precisely:</t>
        <dl>
          <dt><tt>origin</tt></dt>
          <dd>
            <t>A textual log identifier, assigned by the operator and carried in the log's
metadata. <strong>It is not cryptographically bound to <tt>log_id</tt> in this version</strong>, and a
verifier <bcp14>MUST NOT</bcp14> treat it as an authenticated identifier. It is present so that a
human auditor can tell two logs apart in a co-signature artifact. Binding it is a
candidate for a future revision.</t>
          </dd>
          <dt><tt>size</tt></dt>
          <dd>
            <t>The <tt>tree_size</tt> of the signed tree head being co-signed, rendered as decimal ASCII
with no leading zeros and no separators.</t>
          </dd>
          <dt><tt>root_hash_hex</tt></dt>
          <dd>
            <t>The <tt>root_hash</tt> of that signed tree head, rendered as exactly 64 <strong>lowercase</strong>
hexadecimal characters.</t>
          </dd>
          <dt><tt>timestamp</tt></dt>
          <dd>
            <t><strong>The <tt>timestamp</tt> field of the signed tree head being co-signed</strong>, rendered as
decimal ASCII with no leading zeros. It is the log's timestamp, not the witness's
own signing time, so a verifier reproduces it from the tree head rather than from
any clock.</t>
          </dd>
        </dl>
        <t>The signature algorithm is ML-DSA-65 with the FIPS 204 context:</t>
        <artwork><![CDATA[
ctx = "AEGIS-WITNESS-v1"
]]></artwork>
        <t>This context <bcp14>MUST</bcp14> differ from the CA context of <xref target="sth"/>. A verifier <bcp14>MUST NOT</bcp14> accept
a witness co-signature as a CA tree head signature or the reverse.</t>
        <t>The batch identifier is NOT part of the signed note. A verifier locates a
co-signature by <tt>root_hash</tt>, not by batch identifier.</t>
      </section>
      <section anchor="witness-trust-root">
        <name>Witness trust root</name>
        <t>The witness public key is a trust root. A verifier <bcp14>MUST</bcp14> obtain it out of band, from a
list of trusted witnesses it maintains, and <strong><bcp14>MUST NOT</bcp14></strong> take it from the co-signature
artifact itself. An artifact-supplied key verifies its own contents and provides
nothing: the artifact is controlled by the same party that produced it, so accepting an
inline key reduces the check to self-attestation.</t>
        <t>A verifier that encounters a co-signature whose public key is not in its trusted list
<bcp14>MUST</bcp14> treat the co-signature as untrusted rather than as absent, because the two
conditions have different causes and a deployment may wish to distinguish them.</t>
      </section>
      <section anchor="high-water-mark">
        <name>High-water mark</name>
        <t>To detect truncation of the batch sequence, a witness maintains a signed
high-water mark. The signed payload is 21 octets:</t>
        <artwork><![CDATA[
"AEGIS-HWM-v1:" || uint64_be(hwm)
]]></artwork>
        <t>The FIPS 204 context for the high-water mark signature is:</t>
        <artwork><![CDATA[
ctx = "AEGIS-HWM-v1"
]]></artwork>
        <t>This context <bcp14>MUST</bcp14> differ from the contexts of <xref target="sth"/> and <xref target="cosig-format"/>. Note that the
context string and the payload prefix are not the same octets: <strong>the payload prefix
carries a trailing colon and the context string does not.</strong> An implementation that
reuses one for the other will produce signatures no conforming verifier accepts.</t>
        <t>A verifier that observes a latest batch number lower than a previously observed
signed high-water mark <bcp14>MUST</bcp14> treat the sequence as truncated.</t>
      </section>
    </section>
    <section anchor="pop">
      <name>Holder proof of possession</name>
      <t>This mechanism is <bcp14>OPTIONAL</bcp14>. A credential carrying no holder commitment is a bearer
credential, and verification behaviour is unchanged.</t>
      <section anchor="jkt">
        <name>Thumbprint computation</name>
        <t>The holder commitment is the base64url encoding, without padding <xref target="RFC4648"/>
Section 5, of the SHA-256 of a canonical JSON object with exactly three members, in
this order:</t>
        <artwork><![CDATA[
{"alg":"ML-DSA-65","kty":"AKP","pub":"<base64url-nopad raw public key>"}
]]></artwork>
        <t>There is no whitespace. The member order is lexicographic by member name, as
required by the <xref target="RFC7638"/> Section 3 process. The <tt>kty</tt> value <tt>AKP</tt> and the
algorithm name <tt>ML-DSA-65</tt> are as registered in <xref target="RFC9964"/> Section 3. The <tt>pub</tt>
member carries the raw <xref target="FIPS204"/> Section 5.3 public key encoding.</t>
        <t>The resulting thumbprint is 43 characters.</t>
        <t><strong>This document specifies SHA-256 as the thumbprint hash.</strong> Neither <xref target="RFC7638"/> nor
<xref target="RFC9964"/> mandates a particular hash for this computation: <xref target="RFC7638"/> Section 3.4
leaves the choice to the application. Implementations <bcp14>MUST</bcp14> use SHA-256 for MTAC
holder commitments.</t>
        <t>The COSE integer values registered in <xref target="RFC9964"/> for the key type and algorithm
are not used in this computation. The JSON member values are the strings above.</t>
        <section anchor="jkt-vector">
          <name>Test vector</name>
          <t>Using the same synthetic key rule as <xref target="leaf-vector"/>, namely 1952 octets where octet i
has value (i mod 256), the canonical JSON object begins:</t>
          <artwork><![CDATA[
{"alg":"ML-DSA-65","kty":"AKP","pub":"AAECAwQFBgcICQoLDA0ODx...
]]></artwork>
          <t>and the resulting thumbprint is:</t>
          <artwork><![CDATA[
u0JcdAyiIOVlMstYWc-w2n2RJ437Y3-WbE4QfBHG35U
]]></artwork>
          <t>One synthetic key therefore serves both test vectors in this document.</t>
        </section>
      </section>
      <section anchor="committed-form">
        <name>Committed form</name>
        <t>The commitment is carried as a single scope token in <tt>authorized_scopes</tt>:</t>
        <artwork><![CDATA[
aegis:holder:<43-character thumbprint>
]]></artwork>
        <t>The token is 56 characters. No field is added to the leaf. The leaf structure of
<xref target="leaf"/> is unchanged, and a verifier that does not implement this section parses
the leaf normally and treats the token as an opaque scope string.</t>
      </section>
      <section anchor="challenge-and-response">
        <name>Challenge and response</name>
        <t>A verifier generates a challenge and transmits it to the presenting party. The
presenting party signs a payload constructed as a CBOR array of two elements,
encoded in definite-length shortest form:</t>
        <artwork><![CDATA[
array(2)[ bstr(challenge), tstr(session_identifier) ]
]]></artwork>
        <t><strong>The session identifier is the value of the leaf's <tt>agent_id</tt> field.</strong> It is taken
from the verified leaf, not from any value the presenting party supplies.</t>
        <t>The signature uses ML-DSA-65 with the FIPS 204 context:</t>
        <artwork><![CDATA[
ctx = "AEGIS-HOLDER-v1"
]]></artwork>
        <t>This gives three-way domain separation across the tree head, witness, and holder
contexts.</t>
        <t>Payload test vector, for a 16-octet challenge of <tt>00 01 02 ... 0f</tt> and session
identifier <tt>urn:aegis:session:golden</tt>:</t>
        <artwork><![CDATA[
8250000102030405060708090a0b0c0d0e0f781875726e3a61656769733a
73657373696f6e3a676f6c64656e
]]></artwork>
      </section>
      <section anchor="verifier-requirements">
        <name>Verifier requirements</name>
        <t>A verifier performing a possession check <bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Reconstruct the signed payload from the challenge IT generated and the session
identifier committed in the credential. It <bcp14>MUST NOT</bcp14> use values supplied by the
presenting party for either.</t>
          </li>
          <li>
            <t>Verify the signature BEFORE comparing the thumbprint. The check order is
signature first, then thumbprint.</t>
          </li>
          <li>
            <t>Recompute the thumbprint from the presented public key per <xref target="jkt"/> and compare
it against the committed token.</t>
          </li>
        </ol>
        <t>A challenge <bcp14>MUST</bcp14> be at least 16 octets.</t>
        <t><strong>Challenge uniqueness is an operational obligation of the verifier.</strong> This
specification defines no challenge generator, no nonce store, no replay ledger,
and no challenge expiry. A verifier that reuses a challenge, or that accepts a
challenge it did not itself generate, obtains no possession guarantee. See
<xref target="security-considerations"/>.</t>
        <t>A successful possession check demonstrates that the presenting party holds the
private key committed at issuance, at the time of presentation. It does not
establish that the presenting party is the agent named in the credential, and it
does not establish independent actor status. Where a single operator holds both the
CA key and the holder key, key custody is deployment-dependent.</t>
      </section>
    </section>
    <section anchor="verification">
      <name>Verification</name>
      <section anchor="primary-verification">
        <name>Primary verification</name>
        <t>A relying party verifying a credential <bcp14>MUST</bcp14> perform all of the following:</t>
        <ol spacing="normal" type="1"><li>
            <t>Decode the leaf, rejecting any non-canonical form per <xref target="encoding"/>.</t>
          </li>
          <li>
            <t>Recompute the leaf hash per <xref target="leaf-hash"/>.</t>
          </li>
          <li>
            <t>Fold the inclusion proof to a candidate root.</t>
          </li>
          <li>
            <t>Compare the candidate root against <tt>root_hash</tt> in the signed tree head.</t>
          </li>
          <li>
            <t>Verify the ML-DSA-65 signature over the signed tree head with the context of
<xref target="sth"/>, using a CA public key obtained out of band.</t>
          </li>
        </ol>
        <t>The result of primary verification is that the credential was validly issued by the
authority identified by <tt>log_id</tt> and is present in the log at the given tree head.
This is the complete meaning of a successful result. It carries no implication
about the agent's subsequent behaviour.</t>
        <t>The CA public key is a trust root. It <bcp14>MUST</bcp14> be obtained out of band and pinned. A
verifier that accepts a CA public key supplied alongside the credential obtains no
security property, because a substituted key accompanied by a re-signed tree head
verifies successfully.</t>
      </section>
      <section anchor="freshness-and-replay">
        <name>Freshness and replay</name>
        <t>A verifier <bcp14>MAY</bcp14> additionally require freshness by rejecting a tree head older than a
configured maximum age, and <bcp14>MAY</bcp14> reject a tree head whose timestamp is not strictly
greater than the last one observed for the same <tt>log_id</tt>. Both are implemented in
the reference verifier described in <xref target="impl-status"/>.</t>
      </section>
      <section anchor="additive-checks">
        <name>Additive checks</name>
        <t>The witness check of <xref target="witness"/> and the possession check of <xref target="pop"/> are additive.
Where a relying party demands one and it fails, that is a distinct outcome from
primary verification failure, and implementations <bcp14>SHOULD</bcp14> signal the two distinctly.</t>
      </section>
      <section anchor="public-corroboration">
        <name>Public corroboration</name>
        <t>An MTAC log operator <bcp14>MAY</bcp14> publish batch roots to an independent public medium so
that a relying party can confirm that a root matches what the log committed,
without trusting the log operator. Where such corroboration is published on a
public ledger, the published value corroborates the signed tree head Merkle root
only. It does not establish anything about agent behaviour, and the availability
properties of the publishing medium are outside the scope of this document.</t>
      </section>
    </section>
    <section anchor="roadmap">
      <name>Roadmap and extensions</name>
      <t>This section is INFORMATIVE and describes work that is NOT implemented and NOT
specified by this document. It is included to indicate direction. Nothing in this
section may be relied upon by an implementer.</t>
      <section anchor="batch-scoped-revocation">
        <name>Batch-scoped revocation</name>
        <t>Because a batch has a bounded window, omitting an assertion from the next batch
causes the credential to lapse at the end of the current window without a
revocation list or an online status protocol. This document does not specify a
revocation mechanism, and no revocation mechanism is implemented.</t>
      </section>
      <section anchor="third-party-witnessing-and-enumeration">
        <name>Third-party witnessing and enumeration</name>
        <t>An independently operated witness, together with a route by which log entries can
be enumerated, would permit a stronger property than the one described in
<xref target="witness"/>. Neither is specified here.</t>
      </section>
    </section>
    <section anchor="related">
      <name>Relationship to existing work</name>
      <t>This section is INFORMATIVE.</t>
      <section anchor="merkle-tree-certificates">
        <name>Merkle Tree Certificates</name>
        <t><xref target="I-D.ietf-plants-merkle-tree-certs"/> specifies batch Merkle issuance with
post-quantum signed tree heads. It is the direct architectural antecedent of the
issuance model used here. Its working group is chartered for WebPKI and TLS, its
leaf encodes TLS certificate fields, and it contains no AI agent identity content.
MTAC applies the same issuance shape to a different subject with a different leaf.</t>
      </section>
      <section anchor="scitt">
        <name>SCITT</name>
        <t><xref target="RFC9943"/> defines an architecture for transparency over supply chain statements,
and <xref target="RFC9942"/> defines receipts proving properties of a verifiable data structure.
An MTAC signed tree head and inclusion proof are structurally analogous to a
receipt over a Merkle verifiable data structure. <xref target="I-D.ietf-scitt-scrapi"/> defines
reference APIs. A profile mapping MTAC batches onto SCITT statements and receipts
is plausible future work and is not specified here.</t>
      </section>
      <section anchor="certificate-transparency">
        <name>Certificate Transparency</name>
        <t>The Merkle tree construction and the leaf type octet follow <xref target="RFC9162"/> Section
2.1.1. Note that both <xref target="RFC9162"/> and its predecessor <xref target="RFC6962"/> are Experimental.
This document cites <xref target="RFC9162"/> because it is the later specification and defines
the constructions used here; several adjacent agent-identity documents cite
<xref target="RFC6962"/> instead, and implementers comparing them should be aware that the two
differ.</t>
      </section>
      <section anchor="other-agent-identity-work">
        <name>Other agent identity work</name>
        <t>The following documents address adjacent problems and several of them combine two or
three of the same elements MTAC uses. Each is named and distinguished, because a
reader who finds them independently is entitled to know why this document is not
redundant with them. Revision numbers and dates are as of 21 July 2026.</t>
        <t>Documents that combine post-quantum signatures, a Merkle transparency structure, and
AI agent identity, in some arrangement:</t>
        <ul spacing="normal">
          <li>
            <t><tt>draft-fane-opena2a-aip-00</tt> specifies hybrid Ed25519 and ML-DSA-65 agent
credentials with an RFC 6962 style transparency log covering identity and
credential issuance events. The logging is per event rather than per batch, and
the batch is not the unit of issuance.</t>
          </li>
          <li>
            <t><tt>draft-sharif-apki-agent-pki-00</tt> defines agent transparency logs as append only
Merkle trees over agent certificate issuance, permits ML-DSA-65, and requires
migration to post-quantum algorithms. It places one certificate per leaf, so
issuance remains per certificate in the classical Certificate Transparency shape.</t>
          </li>
          <li>
            <t><tt>draft-ailex-vap-legal-ai-provenance-03</tt> requires that events be batched into a
binary Merkle hash tree following <xref target="RFC9162"/>, and names ML-DSA-65. It is the
closest work found on the batching mechanism itself. What is batched is audit
events rather than identity credentials.</t>
          </li>
          <li>
            <t><tt>draft-marques-asqav-compliance-receipts-07</tt> signs a root over a batch of
receipts rather than signing each receipt, with ML-DSA-65 and Merkle inclusion
proofs. The subject is compliance receipts for actions already taken, not
credentials issued in advance.</t>
          </li>
          <li>
            <t><tt>draft-coetzee-oauth-spt-txn-tokens-03</tt> requires both a classical and an ML-DSA
signature, and periodically signs Merkle tree heads over an append only log with
an external witness co-signature. That witness arrangement is the closest work
found to <xref target="witness"/>. Its log covers post hoc authorization decision receipts.</t>
          </li>
          <li>
            <t><tt>draft-ihsanullah-dnsid-01</tt> provides DNS anchored durable identity for AI agents
with records published to a Certificate Transparency style log. Post-quantum
support is algorithm agility rather than a requirement, and batches are an
optional registration convenience rather than the issuance unit.</t>
          </li>
          <li>
            <t><tt>draft-rotzin-spice-afir-profile-00</tt> uses ML-DSA-65 as its primary algorithm and
composes with a Merkle inference chain. Its subject is inference provenance rather
than an identity credential.</t>
          </li>
        </ul>
        <t>Documents that combine a Merkle transparency structure with agent identity, without
post-quantum signatures:</t>
        <ul spacing="normal">
          <li>
            <t><tt>draft-hood-agtp-log-02</tt> specifies a transparency log protocol aligned with
<xref target="RFC9162"/> and issues receipts per <xref target="RFC9943"/>. It is a log protocol rather than
a credential format, and it does not address post-quantum signatures.</t>
          </li>
          <li>
            <t><tt>draft-narajala-courtney-ansv2-01</tt> establishes how an agent is named, discovered
and anchored to a domain. MTAC defines no namespace and can carry any identifier
in <tt>agent_id</tt>, so the two compose directly.</t>
          </li>
        </ul>
        <t>Documents addressing request-time and after-the-fact concerns:</t>
        <ul spacing="normal">
          <li>
            <t><tt>draft-klrc-aiagent-auth-03</tt> addresses how an agent authenticates and is
authorized at request time. MTAC addresses what credential was issued. The
issuance-time boundary between the two is stated in <xref target="security-considerations"/>.</t>
          </li>
          <li>
            <t><tt>draft-bu-agentproto-security-principal-binding-03</tt> binds a security principal to
an agent communication protocol. MTAC does not define a communication protocol.</t>
          </li>
          <li>
            <t><tt>draft-noa-scitt-ai-agent-receipt-00</tt> profiles receipts for agent actions after
they occur. A receipt layer composes with an issuance layer.</t>
          </li>
          <li>
            <t><tt>draft-dawkins-scitt-ai-article50-00</tt> maps transparency artifacts to the EU AI Act
Article 50 obligation. An MTAC credential provides evidence relevant to a
provider's or deployer's Article 50(1) documentation. It does not substitute for
the content-level machine-readable marking required by Article 50(2), and
compliance is a legal status assessed by a competent authority.</t>
          </li>
        </ul>
        <t>Beyond Internet-Drafts, at least one published implementation goes further than any of
the drafts above and deserves to be described accurately. CIRISVerify (CIRISAI,
AGPL-3.0) signs tree heads over an RFC 6962 log for AI agents with hybrid Ed25519 and
ML-DSA-65 signatures, and requires both rather than permitting the post-quantum one as
an option. <strong>It also defines N-of-M co-signature of its tree heads by independently
keyed witnesses, for split-view detection.</strong> That is the same defensive shape as
<xref target="witness"/>, arrived at independently, and this document does not claim the witness
arrangement as novel.</t>
        <t>What differs is the unit. CIRISVerify's log records licence verification events, and
its licences are signed individually rather than committed as a batch. Identity is
rooted in a hardware key ceremony. The batch is not the thing issued.</t>
        <t>This document therefore does not claim that any individual element, or any pair of
them, is unaddressed, and it does not claim the witness co-signature as its own idea.
<strong>The arrangement it specifies, in which the batch is the unit of credential issuance,
is what the preceding list does not contain.</strong> Every other property described here is
present somewhere in the work above.</t>
      </section>
    </section>
    <section anchor="impl-status">
      <name>Implementation Status</name>
      <t>This section is to be removed before publication as an RFC, per <xref target="RFC7942"/>.</t>
      <section anchor="reference-verifier">
        <name>Reference verifier</name>
        <t>An independent verifier implementation is published and installable:</t>
        <artwork><![CDATA[
pip install aegis-verifier==0.1.3
]]></artwork>
        <table>
          <thead>
            <tr>
              <th align="left">Property</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Version</td>
              <td align="left">0.1.3</td>
            </tr>
            <tr>
              <td align="left">Released</td>
              <td align="left">2026-05-21</td>
            </tr>
            <tr>
              <td align="left">License</td>
              <td align="left">Apache-2.0</td>
            </tr>
            <tr>
              <td align="left">Requires</td>
              <td align="left">Python 3.11 or later</td>
            </tr>
            <tr>
              <td align="left">Coverage</td>
              <td align="left">Linux x86_64 and aarch64 (manylinux and musllinux), macOS universal2, Windows x86_64</td>
            </tr>
          </tbody>
        </table>
        <t>The distribution is built from a Rust core with PyO3 and maturin. liboqs is
statically bundled, so no native build dependencies are required at install time.</t>
      </section>
      <section anchor="what-the-published-version-verifies">
        <name>What the published version verifies</name>
        <t>Version 0.1.3 performs primary verification as defined in <xref target="verification"/>: signed
tree head signature, Merkle inclusion, and leaf hash. It additionally implements
the freshness and replay checks described in <xref target="verification"/>, exposing a stateful
verifier that tracks the last seen tree head per <tt>log_id</tt>.</t>
        <t>Version 0.1.3 does NOT implement the witness co-signature check of <xref target="witness"/> or
the holder possession check of <xref target="pop"/>. Those checks were added to the issuing
implementation after this version was released and are performed by the issuing
side tooling. A future release is expected to cover them.</t>
      </section>
      <section anchor="verified-behaviour">
        <name>Verified behaviour</name>
        <t>The following were executed against the published distribution on 2026-07-21.</t>
        <t>Primary verification of a genuine ML-DSA-65 signed batch succeeded, returning leaf
index, tree size, and tree head timestamp. Three negative controls were each
rejected: a corrupted signature, a substituted CA public key, and a single flipped
octet in the leaf.</t>
        <t>The leaf hash test vector of <xref target="leaf-vector"/> was computed independently in two
implementations, a Python reimplementation written from this document and the Rust
reference, producing identical output. The thumbprint golden vector of <xref target="jkt"/> was
likewise confirmed by executing the reference implementation's own test suite against
the pinned reference revision.</t>
        <t>The FIPS 204 public key encoding was confirmed by taking the ML-DSA-65 example from
<xref target="RFC9964"/> Appendix A, which the RFC states is the <xref target="FIPS204"/> Section 5.3
encoding, and verifying the RFC's published signature under the RFC's published
public key using the same liboqs build the implementation uses. Verification
succeeded and a tampered-message control was rejected.</t>
        <t>The decoder rejections required by <xref target="encoding"/> were each confirmed against the
reference decoder: non-shortest-form integers, misordered map keys, duplicate map
keys, and non-NFC text are all rejected.</t>
      </section>
      <section anchor="public-corroboration-deployment">
        <name>Public corroboration deployment</name>
        <t>The issuing implementation publishes batch roots to a contract on the Ethereum
Sepolia testnet, dev-grade key. A relying party can compare a published root
against the signed tree head root it already holds. The published value
corroborates the signed tree head Merkle root only.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="the-issuance-time-boundary">
        <name>The issuance-time boundary</name>
        <t>This is the most important consideration in this document.</t>
        <t>MTAC establishes what credential a session or agent was issued, by which authority,
under what declared parameters, and that the credential is present in the log. It
does not establish what the agent does at request time. A credential that verifies
successfully may be held by an agent whose behaviour has since changed.</t>
        <t>Declared scopes are not proof of behaviour. A relying party that treats a scope
token as a behavioural guarantee has made an error this specification cannot
detect. Relying parties requiring assurance about request-time behaviour need a
mechanism outside this document.</t>
      </section>
      <section anchor="challenge-freshness">
        <name>Challenge freshness</name>
        <t>The possession mechanism of <xref target="pop"/> derives its value entirely from challenge
freshness, and this specification places that obligation on the verifier. The
software requirement is a minimum challenge length of 16 octets and nothing more.
There is no challenge generator, no nonce store, no replay ledger, and no expiry
defined here or implemented in the reference tooling.</t>
        <t>A verifier that reuses challenges, accepts challenges generated elsewhere, or fails
to bind the challenge to the session under check obtains no possession
guarantee, while the protocol appears to succeed. Implementers <bcp14>MUST</bcp14> generate
challenges from a cryptographically secure random source, <bcp14>MUST</bcp14> use each challenge
once, and <bcp14>SHOULD</bcp14> bind challenge lifetime to the transaction.</t>
      </section>
      <section anchor="bearer-behaviour-by-default">
        <name>Bearer behaviour by default</name>
        <t>A credential carrying no holder commitment is a bearer credential. Anyone holding
the credential bytes can present them and primary verification will succeed. Where
a relying party does not demand a possession check, behaviour is identical to
bearer. Deployments requiring more <bcp14>MUST</bcp14> demand the check explicitly rather than
assuming it occurred.</t>
      </section>
      <section anchor="encoding-malleability">
        <name>Encoding malleability</name>
        <t>The decoder requirements of <xref target="encoding"/> are security requirements, not style
preferences. A decoder that accepts non-canonical forms permits two distinct octet
strings to decode to the same logical leaf while hashing to different leaf hashes,
which breaks the correspondence between what was committed and what is verified.</t>
        <t>The NFC requirement is easy to overlook. Two agent identifiers that render
identically but differ in Unicode normalization produce different leaf hashes. The
array-order requirement is similarly easy to overlook: implementations <bcp14>MUST NOT</bcp14>
sort <tt>authorized_scopes</tt>.</t>
      </section>
      <section anchor="trust-root-distribution">
        <name>Trust root distribution</name>
        <t>The CA public key is the trust root and <bcp14>MUST</bcp14> be pinned out of band. A verifier that
takes the CA key from the same channel as the credential gains nothing, because an
adversary supplying both a substituted key and a re-signed tree head produces a
successful verification. The <tt>log_id</tt> binding of <xref target="leaf-hash"/> means a substituted
key also changes every leaf hash, so a mismatched pin is detectable, but only if a
pin exists.</t>
      </section>
      <section anchor="witness-limits">
        <name>Witness limits</name>
        <t>The witness of <xref target="witness"/> protects against a compromise limited to the CA key and
against dropped or truncated batches. It does not protect against an adversary who
controls both the CA key and the witness key, and it does not provide
non-equivocation. A deployment operating both the CA and the witness under one
administrative authority obtains integrity and continuity attestation, not
independence.</t>
      </section>
      <section anchor="post-quantum-posture">
        <name>Post-quantum posture</name>
        <t>ML-DSA-65 <xref target="FIPS204"/> is used for all signatures. Signature size is 3309 octets and
public key size is 1952 octets. Batch issuance amortizes the signing cost across a
batch, but each relying party still transports one tree head signature. Deployments
with constrained transport should size batches accordingly.</t>
        <t>The security of the construction also depends on SHA-256, used for the leaf hash,
the Merkle tree, and the thumbprint.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>All identifiers used in this document are either registered elsewhere, namely the
<tt>AKP</tt> key type and the <tt>ML-DSA-65</tt> algorithm name in <xref target="RFC9964"/>, or are string
constants scoped to this specification and carried inside structures this document
defines.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC7638">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="RFC9964">
          <front>
            <title>ML-DSA for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M. Prorock" initials="M." surname="Prorock"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="May" year="2026"/>
            <abstract>
              <t>This document specifies JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) serializations for the Module-Lattice-Based Digital Signature Standard (ML-DSA), a Post-Quantum Cryptography (PQC) digital signature scheme defined in US NIST FIPS 204.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9964"/>
          <seriesInfo name="DOI" value="10.17487/RFC9964"/>
        </reference>
        <reference anchor="FIPS204" target="https://csrc.nist.gov/pubs/fips/204/final">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2024" month="August" day="13"/>
          </front>
          <seriesInfo name="FIPS" value="204"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.204"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC9942">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Receipts</title>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>CBOR Object Signing and Encryption (COSE) Receipts prove properties of a Verifiable Data Structure (VDS) to a verifier. VDSs and associated Proof Types enable security properties, such as minimal disclosure, transparency, and non-equivocation. Transparency helps maintain trust over time and has been applied to certificates, end-to-end encrypted messaging systems, and supply chain security. This specification enables concise transparency-oriented systems by building on Concise Binary Object Representation (CBOR) and COSE. The extensibility of the approach is demonstrated by providing CBOR encodings for Merkle inclusion and consistency proofs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9942"/>
          <seriesInfo name="DOI" value="10.17487/RFC9942"/>
        </reference>
        <reference anchor="RFC9943">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9943"/>
          <seriesInfo name="DOI" value="10.17487/RFC9943"/>
        </reference>
        <reference anchor="I-D.ietf-plants-merkle-tree-certs">
          <front>
            <title>Merkle Tree Certificates</title>
            <author fullname="David Benjamin" initials="D." surname="Benjamin">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Devon O'Brien" initials="D." surname="O'Brien">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Luke Valenta" initials="L." surname="Valenta">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Filippo Valsorda" initials="F." surname="Valsorda">
              <organization>Geomys</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document describes Merkle Tree certificates, a new form of X.509
   certificates which integrate public logging of the certificate, in
   the style of Certificate Transparency.  The integrated design reduces
   logging overhead in the face of both shorter-lived certificates and
   large post-quantum signature algorithms, while still achieving
   comparable security properties to existing X.509 constructions and
   Certificate Transparency.  Merkle Tree certificates additionally
   admit an optional size optimization that avoids signatures
   altogether, at the cost of only applying to up-to-date relying
   parties and older certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-plants-merkle-tree-certs-05"/>
        </reference>
        <reference anchor="I-D.ietf-scitt-scrapi">
          <front>
            <title>Supply Chain Integrity, Transparency, and Trust (SCITT) Reference APIs</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Jon Geater" initials="J." surname="Geater">
              <organization>Bowball Technologies Ltd</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <date day="26" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies a REST API with the HTTP resources, request
   and response messages, and error handling needed for an interoperable
   implementation of a SCITT Transparency Service, as defined by the
   Supply Chain Integrity, Transparency, and Trust (SCITT) Architecture.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-scrapi-11"/>
        </reference>
      </references>
    </references>
    <?line 1047?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The Merkle tree construction and leaf type octet follow <xref target="RFC9162"/>. The batch
issuance model follows <xref target="I-D.ietf-plants-merkle-tree-certs"/>. The thumbprint
computation follows the <xref target="RFC7638"/> process with the key type and algorithm
registered in <xref target="RFC9964"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
TpCzAAA=

-->

</rfc>
