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


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

]>


<rfc ipr="trust200902" docName="draft-davliatshin-oauth-attenuation-chains-report-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Attenuation Chains Analysis">Independent Implementation and Formal Analysis of Attenuating Delegation Chains for AI Agents</title>

    <author initials="A." surname="Davliatshin" fullname="Azat Davliatshin">
      <organization></organization>
      <address>
        <email>ardavlyatshin@gmail.com</email>
      </address>
    </author>

    <date year="2026" month="November" day="02"/>

    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>OAuth</keyword> <keyword>delegation</keyword> <keyword>attenuation</keyword> <keyword>agents</keyword> <keyword>formal verification</keyword> <keyword>interoperability</keyword>

    <abstract>


<?line 83?>

<t>This document reports an independent implementation and formal analysis of
two individual Internet-Drafts that propose offline-verifiable, attenuating
delegation chains for AI agents: Attenuating Authorization Tokens (AATs),
in revisions -01 and -02, and the Agent Delegation Chain of
draft-asor-wimse-agent-delegation-chain-02. It describes a minimal verifier
written from each draft's text, with profiles for AAT -01, AAT -02 and
asor-02, and a ProVerif model of the chain structures of AAT -01 and
asor-02. The AAT -02 profile, written from the text and then run against
the author's 229-vector test suite, agrees with it on all 229 vectors. Of
25 observations recorded on AAT -01, the -02 text resolves 19 (16 closed,
3 closed as intended design); one is partly resolved, one no longer arises,
and four remain open. The report lists ten points where -02 leaves an
implementer more than one conforming behaviour. Two properties raised in
public review are checked on both chain structures. The author of this
report is not an author of either draft. The report specifies nothing; it
follows the shape of RFC 7942.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-davliatshin-oauth-attenuation-chains-report/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
    </note>


  </front>

  <middle>


<?line 102?>

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

<!-- What goes here: what was done, what was not, who did it. -->

<t>Several individual Internet-Drafts propose chains of signed tokens in which
each link can only narrow the authority of the one before it, so that a
verifier can check an agent's authority offline. This report covers two of
them, <xref target="AAT-01"/> with its revision <xref target="AAT-02"/>, and <xref target="ASOR-02"/>. Other
individual drafts propose related mechanisms (a delegation header over HTTP
message signatures; an issuer-per-hop chain anchored in a trust registry);
they are outside this report.</t>

<t>The work began against AAT-01. AAT-02 appeared on 26 October 2026, with
changes that its Appendix F describes as breaking -01 implementations, and
with a byte-exact test-vector suite and a procedure for comparing results.
The verifier gained a separate profile for -02. This report covers both
versions and says which of its observations on -01 the -02 text resolves
(<xref target="findings-aat"/>).</t>

<t>What was done:</t>

<t><list style="symbols">
  <t>A minimal TypeScript verifier for the chain checks of both drafts,
written as an executable specification (see <xref target="verifier"/>).</t>
  <t>A separate verifier profile for AAT-02, written from the -02 text and
then run against the author's 229-vector suite: 229 of 229 verdicts
agree, with the expected -02 Section 8 step on every denial.</t>
  <t>A ProVerif model <xref target="PROVERIF"/> of the shared chain structure (parent-hash
linkage, depth, lifetime and capability monotonicity, holder binding and
proof of possession), instantiated for both drafts (see <xref target="model"/>).</t>
  <t>This report.</t>
</list></t>

<t>What was not done: no minting or issuing service, no CBOR encoding, no
revocation or status-list handling. The AAT-02 profile was run against the
author's published vectors; it has not exchanged tokens with another running
implementation.</t>

<t>Who did it: an individual, not an author of either draft. The shape and
tone of this report follow <xref target="AGNIHOTRI-02"/>. The drafts are
the object of study; the mechanisms described here are theirs.</t>

<t>Source code, model and vectors: <eref target="https://github.com/azatdavliatshin/aat"></eref>
(verifier: <eref target="https://github.com/azatdavliatshin/aat/tree/main/verifier"></eref>;
model: <eref target="https://github.com/azatdavliatshin/aat/tree/main/model"></eref>).</t>

</section>
<section anchor="conventions"><name>Conventions and Terminology</name>

<!-- What goes here: BCP 14 boilerplate, terms, short names, label scheme. -->

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>This document uses the following terms, informally, across both drafts.</t>

<dl>
  <dt>chain:</dt>
  <dd>
    <t>An ordered list of tokens, the first a root minted by a trust anchor or
issuer and each later one a link attenuating its predecessor.</t>
  </dd>
  <dt>link:</dt>
  <dd>
    <t>A token in a chain other than the root.</t>
  </dd>
  <dt>holder:</dt>
  <dd>
    <t>The party named by a token's confirmation claim (<xref target="RFC7800"/>) as able to
present it; in AAT-01 and AAT-02 also the only party able to derive from
it (I1).</t>
  </dd>
  <dt>issuer:</dt>
  <dd>
    <t>The party whose key signs a token. In asor-02 this is the <spanx style="verb">iss</spanx> of an
access token (<xref target="RFC9068"/>); in AAT-01 and AAT-02 the root issuer signs
the root, and a derived token is signed by its parent's holder, whose
key thumbprint is its <spanx style="verb">iss</spanx>.</t>
  </dd>
  <dt>attenuation:</dt>
  <dd>
    <t>Producing a link whose authority (capabilities, depth, lifetime) is no
greater than its parent's.</t>
  </dd>
  <dt>PoP:</dt>
  <dd>
    <t>Proof of possession of the key a token is bound to, for example a DPoP
proof <xref target="RFC9449"/>.</t>
  </dd>
</dl>

<t>"AAT-01" is <xref target="AAT-01"/>; "AAT-02" is <xref target="AAT-02"/>; "asor-02" is <xref target="ASOR-02"/>.</t>

<t>Related documents used below: <xref target="RFC8785"/> (JSON Canonicalization Scheme:
asor-02 requires the JWS header and payload of every token to be its
output, Section 3, and compares a constraint it cannot evaluate by its
bytes, Section 4.3; AAT-01 requires it for the PoP JWT payload and for
comparing <spanx style="verb">hta</spanx> with the invocation arguments, Sections 5.2 and 7; -02
drops the payload requirement and compares constraint values and
arguments by it, -02 Section 3.4), <xref target="RFC9278"/> (JWK thumbprint URI, the
<spanx style="verb">iss</spanx> of a derived AAT; asor-02 binds the holder by a <xref target="RFC7638"/>
thumbprint in <spanx style="verb">cnf</spanx> instead) and <xref target="RFC9396"/> (rich authorization
requests; both drafts carry authority as <spanx style="verb">authorization_details</spanx>).</t>

<t>Finding labels A1 to A7 (asor-02), B1 to B25 (AAT-01), C1 to C10 (AAT-02)
and M1, M2 (the two properties of <xref target="model-properties"/>) are this document's
own numbering. They
are not used by the drafts or by the reviews cited here.</t>

</section>
<section anchor="drafts"><name>Reported Drafts</name>

<!-- What goes here: one subsection per draft; what it proposes, at the
level needed to read sections 4 to 8. No evaluation. -->

<section anchor="drafts-aat"><name>AAT-01 and AAT-02</name>

<t><xref target="AAT-01"/> (Niyikiza) defines Attenuating Authorization Tokens: JWTs whose
<spanx style="verb">authorization_details</spanx> (<xref target="RFC9396"/>) list the tools a holder may invoke and
typed constraints on each argument. A root token is issued by a root issuer
and verified under a configured trust anchor key. Each later token is
derived offline by the holder of its parent: it is signed by the key the
parent names in <spanx style="verb">cnf.jwk</spanx>, its <spanx style="verb">iss</spanx> is that key's JWK thumbprint URI
(<xref target="RFC9278"/>), and its <spanx style="verb">par_hash</spanx> is the SHA-256 hash of the parent's JWS
signing input (Section 4.6). The invariants I1 to I6 (Section 4) let a
derived token only narrow tools, argument constraints (by a per-type
subsumption relation, Section 4.5), delegation depth and lifetime. At each
tool invocation the leaf holder presents a proof-of-possession (PoP) JWT
over the tool and its arguments (Section 5); an enforcement point checks
the chain and the proof in one algorithm (Section 7).</t>

<t><xref target="AAT-02"/> (26 October 2026) keeps this structure and makes normative
changes that, by its Appendix F, break -01 implementations. The JWS
algorithm is the fully-specified <spanx style="verb">Ed25519</spanx> (<xref target="RFC9864"/>) in place of
<spanx style="verb">EdDSA</spanx>, and <spanx style="verb">typ</spanx> is required and explicit (<spanx style="verb">aat+jwt</spanx> for tokens,
<spanx style="verb">aat-pop+jwt</spanx> for the PoP JWT). The PoP JWT carries <spanx style="verb">aat_hash</spanx>, the hash of
the leaf's signing input. Trust anchors are (issuer, public key) pairs, and
the root's <spanx style="verb">iss</spanx> must equal the issuer of the anchor whose key verified it.
Parsing rules are strict: duplicate member names are rejected (<xref target="RFC8259"/>),
NumericDates and depths have no fraction or exponent part, <spanx style="verb">crit</spanx> is
processed, and numbers in arguments and constraints must be admissible
(-02 Section 3.4). Constraint maps gain <spanx style="verb">optional</spanx> arguments and a <spanx style="verb">"*"</spanx>
entry for arguments they do not name (-02 Section 3.3). The subsumption
relation is written as a table of valid (parent, derived) pairs, every
other pair invalid (-02 Section 4.5). MAX_DELEGATION_DEPTH is at least 8.
A presentation object with members <spanx style="verb">aat_chain</spanx> and <spanx style="verb">aat_pop</spanx> is defined
(-02 Section 7.4). The verification algorithm is -02 Section 8; this report
names its steps by number and letter (for example, step 3k). -02 publishes
a byte-exact JWS test-vector suite and lists implementations in its
Appendix E. Both versions are implemented; the model is of -01 (see
<xref target="model"/>).</t>

</section>
<section anchor="asor-02"><name>asor-02</name>

<t><xref target="ASOR-02"/> (Asor) defines the Agent Delegation Chain, a profile of OAuth
2.0 JWT access tokens (<xref target="RFC9068"/>). Each Delegation Token carries its
authority as <spanx style="verb">authorization_details</spanx> (<xref target="RFC9396"/>), the principal in <spanx style="verb">sub</spanx>
(the same value in every token of the chain), the acting agent in
<spanx style="verb">client_id</spanx>, a <spanx style="verb">del_depth</spanx> that grows by one per hop and is bounded by
<spanx style="verb">del_max_depth</spanx>, and, below the root, a <spanx style="verb">par_hash</spanx>: the SHA-256 hash of
the parent's JWS signing input. Tokens are verified under keys configured
at the verifier (Section 6, step 1). The leaf is bound to its holder by
<spanx style="verb">cnf</spanx> (<xref target="RFC7800"/>) and a DPoP proof (<xref target="RFC9449"/>). The offline
verification algorithm (Section 6) enforces monotonic attenuation, bounded
depth, monotonic expiry and the same principal throughout. Modelled and
implemented.</t>

</section>
</section>
<section anchor="verifier"><name>The Verifier</name>

<!-- What goes here: layout, what is checked, what is not, vectors. Facts
live in verifier/README.md; point at it, do not restate. -->

<t>The verifier is a minimal TypeScript implementation, not a product. It
verifies a chain under one of three profiles, <spanx style="verb">aat-01</spanx>, <spanx style="verb">aat-02</spanx> and
<spanx style="verb">asor-02</spanx>, with a shared chain walk and a profile that supplies the named,
section-tagged checks of the draft. Layout, inputs, failure codes and
options are documented in <spanx style="verb">verifier/README.md</spanx>
(<eref target="https://github.com/azatdavliatshin/aat/blob/main/verifier/README.md"></eref>).</t>

<t>The <spanx style="verb">aat-02</spanx> profile is a separate set of files that follows -02 Section 8
step by step; every failure carries the step at which it occurs (for
example, <spanx style="verb">3a</spanx> or <spanx style="verb">4p2</spanx>). The <spanx style="verb">aat-01</spanx> profile is kept unchanged next to it,
as the implementation the AAT-01 findings of <xref target="findings-aat"/> refer to.</t>

<t>It checks, for asor-02, the steps of its verification procedure up to the
action check; for AAT-01, the root, link and leaf checks of its verification
algorithm and the proof of possession; for AAT-02, every step of -02
Section 8, including the PoP JWT, with PoP <spanx style="verb">jti</spanx> tracking and nonces taken
from state the caller supplies. It does not implement:</t>

<t><list style="symbols">
  <t>asor-02: status lists (a token carrying a <spanx style="verb">status</spanx> claim is denied with
the distinct code <spanx style="verb">not_implemented</spanx>), holder binding for <spanx style="verb">x5t#S256</spanx>
(mTLS) confirmation and for ES256 proofs, or a DPoP <spanx style="verb">jti</spanx> replay cache;
cumulative running totals are taken from the caller.</t>
  <t>AAT-01: keys other than Ed25519 (OKP), HS256 (never accepted), a PoP
<spanx style="verb">jti</spanx> replay cache, or extension constraint types (denied); and it parses
every token before verifying any signature, which is not the order of
Section 7.</t>
  <t>AAT-02: algorithms other than <spanx style="verb">Ed25519</spanx> (<spanx style="verb">EdDSA</spanx> is denied, -02
Section 9.11), <spanx style="verb">cnf.jwk</spanx> keys other than OKP Ed25519 (denied at steps 3l
and 4b2), any <spanx style="verb">crit</spanx> parameter (denied whenever present, since no
extension parameter is understood), or extension constraint types
(denied).</t>
</list></t>

<t>The complete list is in <spanx style="verb">verifier/README.md</spanx>.</t>

<t>Vectors:</t>

<t><list style="symbols">
  <t>asor-02: the 35 offline-verification vectors published with the
<spanx style="verb">attenu-guard</spanx> 0.20.0 source distribution, Apache License 2.0, copied
unchanged; all 35 produce the outcome they name.</t>
  <t>AAT-01: 41 vectors of this work's own, written from its reading of -01,
which publishes none. They are not the author's vectors.</t>
  <t>AAT-02: the author's JWS test-vector suite, 229 vectors (54 permit,
175 deny), copied byte for byte from <eref target="https://github.com/tenuo-ai/tenuo"></eref>,
commit 99fb00994d8d66b213cd12967d6e8eef45025672, file
<spanx style="verb">tests/vectors/aat-jws-vectors.json</spanx> (SHA-256
b7a42e9dfdce7fbc1f623670bf060f90e6d6b25f64384cbab1bd79363e82209b),
Apache License 2.0. Result: 229 of 229 verdicts agree on the first run,
0 skipped, and the expected -02 Section 8 step on all 175 denials. No
check was adjusted to a vector. Results were compared with the suite's
own <spanx style="verb">compare_results.py</spanx>, following its <spanx style="verb">INTEROP.md</spanx>.</t>
</list></t>

</section>
<section anchor="model"><name>The Model</name>

<!-- What goes here: abstractions, bound, attacker, properties, results,
limits. Facts live in model/README.md. -->

<t>The model is a symbolic (Dolev-Yao) model in ProVerif's typed applied
pi-calculus. Its roles, abstractions, bound (chains of at most four tokens,
depth and expiry bounded by 3, tool sets over a three-tool alphabet) and
attacker (controls the network, may compromise any holder key, never the
trust anchor's key) are described in <spanx style="verb">model/README.md</spanx>
(<eref target="https://github.com/azatdavliatshin/aat/blob/main/model/README.md"></eref>).</t>

<section anchor="model-properties"><name>Properties</name>

<t>For both profiles:</t>

<dl>
  <dt>P1a:</dt>
  <dd>
    <t>Every root of a chain that passes the link checks was minted by the anchor.</t>
  </dd>
  <dt>P1b:</dt>
  <dd>
    <t>Every link whose parent names an honest holder key was derived from that
parent by that holder, unless the key was compromised. For asor-02, the
variant P1b' states the same with "some uncompromised configured key"
in place of the parent's holder (see A7).</t>
  </dd>
  <dt>P2:</dt>
  <dd>
    <t>The invoked tool was granted at the root.</t>
  </dd>
  <dt>P3:</dt>
  <dd>
    <t>Leaf depth, maximum depth and expiry are bounded by the root's.</t>
  </dd>
  <dt>P4:</dt>
  <dd>
    <t>A leaf naming an honest key is used only by that key's holder
(non-injective).</t>
  </dd>
  <dt>M1:</dt>
  <dd>
    <t>Parent validity after derivation: a parent is still accepted after its
holder has derived a child from it, with no compromise at all.</t>
  </dd>
  <dt>M2:</dt>
  <dd>
    <t>Intermediate links carry no proof of possession of their own. Variants
(a) an attacker derives a child of a token it merely observed,
(b) a request is accepted under such a link, (c) a token is usable
without its holder's key.</t>
  </dd>
</dl>

<t>M1 and M2 are the two points of <xref target="MADDEN-REVIEW"/>.</t>

</section>
<section anchor="model-results"><name>Results</name>

<!-- What goes here: the results table, copied from model/out/SUMMARY.md
(query text abbreviated to its label; full queries are in SUMMARY.md),
ProVerif 2.05, seconds of CPU per model file. -->

<texttable title="ProVerif results (version 2.05)" anchor="tbl-results">
      <ttcol align='left'>Model</ttcol>
      <ttcol align='left'>Seconds</ttcol>
      <ttcol align='left'>Query</ttcol>
      <ttcol align='left'>Result</ttcol>
      <c>aat01</c>
      <c>42</c>
      <c>P1a</c>
      <c>true</c>
      <c>aat01</c>
      <c>42</c>
      <c>P1b</c>
      <c>true</c>
      <c>aat01</c>
      <c>42</c>
      <c>P2</c>
      <c>true</c>
      <c>aat01</c>
      <c>42</c>
      <c>P3</c>
      <c>true</c>
      <c>aat01</c>
      <c>42</c>
      <c>P4</c>
      <c>true</c>
      <c>aat01-no-i5</c>
      <c>16</c>
      <c>P1a</c>
      <c>true</c>
      <c>aat01-no-i5</c>
      <c>16</c>
      <c>P1b</c>
      <c>false</c>
      <c>aat01-no-i6</c>
      <c>12</c>
      <c>P4</c>
      <c>false</c>
      <c>aat01-p4-inj</c>
      <c>23</c>
      <c>P4 injective</c>
      <c>false</c>
      <c>aat01-p4-inj</c>
      <c>23</c>
      <c>P4</c>
      <c>true</c>
      <c>aat01-m1</c>
      <c>1</c>
      <c>M1</c>
      <c>reached</c>
      <c>aat01-m2</c>
      <c>39</c>
      <c>M2 (a)</c>
      <c>true</c>
      <c>aat01-m2</c>
      <c>39</c>
      <c>M2 (b)</c>
      <c>true</c>
      <c>aat01-m2</c>
      <c>39</c>
      <c>M2 (c) = P4</c>
      <c>true</c>
      <c>asor02</c>
      <c>197</c>
      <c>P1a</c>
      <c>true</c>
      <c>asor02</c>
      <c>197</c>
      <c>P1b'</c>
      <c>true</c>
      <c>asor02</c>
      <c>197</c>
      <c>P2</c>
      <c>true</c>
      <c>asor02</c>
      <c>197</c>
      <c>P3 (depth, expiry)</c>
      <c>true</c>
      <c>asor02</c>
      <c>197</c>
      <c>P3 (maximum depth)</c>
      <c>true</c>
      <c>asor02</c>
      <c>197</c>
      <c>P4</c>
      <c>true</c>
      <c>asor02-p1b</c>
      <c>37</c>
      <c>P1b</c>
      <c>false</c>
      <c>asor02-nodpop</c>
      <c>113</c>
      <c>P1a</c>
      <c>true</c>
      <c>asor02-nodpop</c>
      <c>113</c>
      <c>P1b</c>
      <c>false</c>
      <c>asor02-nodpop</c>
      <c>113</c>
      <c>P1b'</c>
      <c>true</c>
      <c>asor02-nodpop</c>
      <c>113</c>
      <c>P2</c>
      <c>true</c>
      <c>asor02-nodpop</c>
      <c>113</c>
      <c>P3 (depth, expiry)</c>
      <c>true</c>
      <c>asor02-nodpop</c>
      <c>113</c>
      <c>P4</c>
      <c>false</c>
      <c>asor02-m1</c>
      <c>139</c>
      <c>M1</c>
      <c>reached</c>
      <c>asor02-m2 (DPoP on)</c>
      <c>475</c>
      <c>M2 (a)</c>
      <c>false</c>
      <c>asor02-m2 (DPoP on)</c>
      <c>475</c>
      <c>M2 (b)</c>
      <c>false</c>
      <c>asor02-m2 (DPoP on)</c>
      <c>475</c>
      <c>M2 (c) = P4</c>
      <c>true</c>
      <c>asor02-nodpop-m2</c>
      <c>120</c>
      <c>M2 (a)</c>
      <c>false</c>
      <c>asor02-nodpop-m2</c>
      <c>120</c>
      <c>M2 (b)</c>
      <c>false</c>
      <c>asor02-nodpop-m2</c>
      <c>120</c>
      <c>M2 (c) = P4</c>
      <c>false</c>
      <c>asor02-holder-signs-m2 (DPoP on, <spanx style="verb">hs</spanx>)</c>
      <c>350</c>
      <c>M2 (a)</c>
      <c>true</c>
      <c>asor02-holder-signs-m2</c>
      <c>350</c>
      <c>M2 (b)</c>
      <c>true</c>
      <c>asor02-holder-signs-m2</c>
      <c>350</c>
      <c>M2 (c) = P4</c>
      <c>true</c>
      <c>asor02-nodpop-holder-signs-m2 (<spanx style="verb">hs</spanx>)</c>
      <c>143</c>
      <c>M2 (a)</c>
      <c>true</c>
      <c>asor02-nodpop-holder-signs-m2</c>
      <c>143</c>
      <c>M2 (b)</c>
      <c>true</c>
      <c>asor02-nodpop-holder-signs-m2</c>
      <c>143</c>
      <c>M2 (c) = P4</c>
      <c>false</c>
</texttable>

<t>Each row is one query of one model file. A file without a suffix is a
profile with every check in place, and every query of it is expected
true. A <spanx style="verb">.expectfalse</spanx> file is a variant with one check removed
(<spanx style="verb">no-i5</spanx>, <spanx style="verb">no-i6</spanx>, <spanx style="verb">nodpop</spanx>) or asks for a property the profile does not
claim (<spanx style="verb">p4-inj</spanx>, <spanx style="verb">asor02-p1b</spanx>, the asor-02 M2 files), and at least one of
its queries is expected false; a <spanx style="verb">.reachable</spanx> file asks whether an event
occurs in a run of honest roles only, and "reached" is the expected
answer. A "false" in a variant is therefore the expected outcome of that
variant, not a failed proof; each is accompanied by a ProVerif derivation
and trace in <spanx style="verb">model/out/</spanx>, summarized in <spanx style="verb">model/README.md</spanx>. <spanx style="verb">hs</spanx> is the
holder-signs flag of the asor-02 model (<xref target="cross"/>). A "true" is a
ProVerif proof for an unbounded number of sessions of the bounded model
(<xref target="model-limits"/>), not a statement about the draft text. Seconds are
wall-clock per model file on one machine under <spanx style="verb">make -j6</spanx>, from
<spanx style="verb">model/out/SUMMARY.md</spanx>; they are indicative.</t>

</section>
<section anchor="model-limits"><name>What the Model Does Not Say</name>

<t>Nothing about constraint semantics below the tool level, time (freshness,
skew, lifetimes; only expiry order), revocation, the trust anchor's key,
size and algorithm checks, or chains longer than four tokens. A "true" is
a ProVerif proof for unbounded sessions of the bounded model, not for the
draft text.</t>

</section>
</section>
<section anchor="findings-aat"><name>Findings on AAT-01 and Their Status in -02</name>

<!-- What goes here: one entry per finding, label, section of AAT-01,
argument. Section numbers are those of -01. Kinds: gap, inconsistency,
redundancy, implementation choice. -->

<t>Section numbers in this section are those of AAT-01 unless marked "-02
Section". Each finding B1 to B25 has a status line, starting "-02:", that
gives how the -02 text relates to it:</t>

<dl>
  <dt>closed:</dt>
  <dd>
    <t>The -02 text decides the point.</t>
  </dd>
  <dt>closed as design:</dt>
  <dd>
    <t>-02 keeps the behaviour and says it is intended.</t>
  </dd>
  <dt>partly:</dt>
  <dd>
    <t>-02 decides part of the point.</t>
  </dd>
  <dt>moot:</dt>
  <dd>
    <t>The question no longer arises in -02.</t>
  </dd>
  <dt>open:</dt>
  <dd>
    <t>Unchanged in -02.</t>
  </dd>
</dl>

<t>Where a vector of the author's suite pins the point, the status line names
it by its identifier (J.x.y). Step numbers such as 3k are those of -02
Section 8.</t>

<section anchor="aat-constraints"><name>Constraints (B1 to B8)</name>

<t><list style="symbols">
  <t>B1 (Section 4.5): cross-type subsumption is an allow-list. Section 4.5
of -01 defines subsumption as a fixed list of per-type rules over
(derived, parent) constraint-type pairs and declares every other pair
invalid (-02 writes the same list as a table). The list leaves out some
pairs whose narrowing is decidable from the values alone.
For a composite parent the list loses nothing of its own: an <spanx style="verb">exact</spanx>
under an <spanx style="verb">any</spanx> can be written as a one-clause <spanx style="verb">any</spanx> (see B2). Two pairs
are lost outright: a <spanx style="verb">one_of</spanx> whose members all fall inside a parent
<spanx style="verb">range</spanx>, and an <spanx style="verb">exact</spanx> under a <spanx style="verb">not_one_of</spanx>, have no equivalent in the
parent's type.
This implementation follows the list and rejects all of them. -02 keeps
the pairs and names the choice: the verifier compares types, not values,
so that every verifier gives the same verdict.  <vspace blankLines='1'/>
-02: closed as design -- -02 Section 4.5 lists every valid (parent,
derived) pair and says "Every other pair is invalid"; J.19.1, J.19.4 to
J.19.7 and J.8.4 deny semantically narrower pairs, and their notes call
this conservative by design.</t>
  <t>B2 (Section 4.5): non-composite child under a composite parent. Section
4.5 of -01 gives rules for <spanx style="verb">all</spanx> and <spanx style="verb">any</spanx> only against a parent of the
same type, so a plain constraint under a composite parent falls under the
closing sentence and is invalid. This implementation rejects it. Nothing
is lost beyond B1, because the child can be written in the parent's
type. Under an <spanx style="verb">any</spanx>, a one-clause <spanx style="verb">any</spanx> is valid when the child narrows
one of the parent's clauses. Under an <spanx style="verb">all</spanx>, the child has to narrow
every parent clause: -01 matches each parent clause to a distinct
derived clause, so the child is repeated once per clause, while -02 lets
one derived clause satisfy several. Each step goes through the pairs, so
the rewrite fails exactly where a clause meets one of the two pairs of
B1, and an <spanx style="verb">all</spanx> with more clauses meets them more often.  <vspace blankLines='1'/>
-02: closed as design -- J.8.4 (range under all) and J.19.1 (exact under
any) are denied; J.18.1 denies all under any.</t>
  <t>B3 (Section 4.5): empty composite constraints. Section 4.5 of -01 says
only that a derived <spanx style="verb">any</spanx> must contain at least one clause. An empty
<spanx style="verb">all</spanx> is satisfied by every value and an empty <spanx style="verb">any</spanx> by none, so an empty
parent <spanx style="verb">all</spanx> grants the argument without limit and an empty parent <spanx style="verb">any</spanx>
forbids it; -01 addresses neither. This implementation treats an empty
clause list as malformed for both types, in either position.  <vspace blankLines='1'/>
-02: closed -- -02 Section 4.5 makes an empty all or any invalid in both
the parent and the derived position; it is denied at steps 3n and 4o
(J.21.7, J.16.3).</t>
  <t>B4 (Section 4.5): range corner cases. Section 4.5 of -01 compares the
bounds of a derived <spanx style="verb">range</spanx> with the parent's, one bound at a time. It
does not say what a range that no number satisfies means (<spanx style="verb">min</spanx> greater
than <spanx style="verb">max</spanx>, or equal bounds with an exclusive side), nor what an
inclusivity flag without its bound means. This implementation applies
the bound rules literally, which never widens authority. An empty
derived range whose bounds lie inside the parent's is accepted and
denies every value; one whose bounds lie outside is rejected, although
an empty set narrows anything. Under an empty parent every derived range
that passes the bound rules is itself empty. A flag without its bound
has no effect. A verifier that rejects empty ranges as malformed
therefore denies more than this one, never less, and neither grants
anything the parent does not.  <vspace blankLines='1'/>
-02: partly -- -02 Section 3.4 well-formedness requires min not greater
than max and inclusivity flags only with their bound (J.8.6, J.8.21,
J.8.24). An empty range with equal bounds and an exclusive side (min
equal to max, min_inclusive false) is still well-formed.</t>
  <t>B5 (Section 3.4): value model and equality. -01 says only that
<spanx style="verb">exact.value</spanx> is "any scalar" and must be equal "exactly"; it does not
say whether null is a scalar, whether <spanx style="verb">1</spanx> equals <spanx style="verb">"1"</spanx> or <spanx style="verb">1.0</spanx>, or what
happens to a number a parser cannot hold exactly. This implementation
takes string, number and boolean, compares by JCS, and refuses integers
beyond 2^53-1 so that a constraint and the tool see the same value. That
refusal covers integers only: a fraction such as 1.00000000000000001 is
still read as 1.  <vspace blankLines='1'/>
-02: closed -- <spanx style="verb">exact.value</spanx> may be a string, number, boolean or null,
equality is by JCS, and the admissibility rule of -02 Section 3.4
replaces this implementation's refusal of integers above 2^53-1 (J.8.8
permit; J.8.7, J.8.10, J.8.14 deny).</t>
  <t>B6 (Section 3.4): arrays as sets. -01 does not say whether order or
duplicates matter in the arrays of <spanx style="verb">contains</spanx> and <spanx style="verb">subset</spanx>, so two
verifiers can disagree on the same argument. This implementation treats
both arrays as sets.  <vspace blankLines='1'/>
-02: closed -- -02 Section 3.4: contains and subset "treat their arrays
as sets" (J.26.11, J.26.12).</t>
  <t>B7 (Section 3.4): unknown members of a core constraint type. -01
specifies what to do with an unknown constraint type and says that
unknown top-level claims are ignored, but not what to do with an unknown
member of a known type. Ignoring it would be unsafe: a misspelt bound
such as <spanx style="verb">maximum</spanx> for <spanx style="verb">max</spanx> would leave the argument unbounded. This
implementation rejects such a constraint as malformed.  <vspace blankLines='1'/>
-02: closed -- well-formedness allows "no members other than" those of
the type (J.21.12, <spanx style="verb">maximum</spanx>). The strict reading of -01 taken by this
implementation is now the text.</t>
  <t>B8 (Sections 3.6.2, 4.5): key-set rule and tool omission. Under a
non-empty constraint map -01 fixes the shape of an invocation: every
named argument must be present and no other may appear. A derived token
may drop a whole tool (Section 3.6.2) but must keep exactly the parent's
argument keys, because adding or dropping a key yields invocations the
parent would reject. The rules are consistent; the cost is rigidity. A
holder cannot forbid one argument while keeping the tool, and an
argument the issuer wants to leave optional cannot be constrained at
all; only a parent with an empty map lets a child choose keys. This
implementation follows the rules as written.  <vspace blankLines='1'/>
-02: moot -- <spanx style="verb">optional</spanx> and <spanx style="verb">"*"</spanx> (-02 Section 3.3, the key rules of -02
Section 4.5, steps 4p2 and 4p3) give the means the closed-world key rule
lacked (J.22.*).</t>
</list></t>

</section>
<section anchor="aat-chain"><name>Chain (B9 to B19)</name>

<t><list style="symbols">
  <t>B9 (Section 4, Section 7): redundant checks (I2e, step 5). Some checks
of -01 Section 7 follow from others. <spanx style="verb">child.del_depth &lt;=
parent.del_max_depth</spanx> (4e) follows from 4g and 4m, <spanx style="verb">child.del_depth &lt;=
MAX_DELEGATION_DEPTH</spanx> (4f) from 3i, 4g and 4m, and the "defense in depth"
step 5 from 3c and 4d. No input fails one of them alone; this
implementation keeps all of them, and its property tests reach 4e only
together with 4g or 4m. Redundant checks are harmless, but a test suite
cannot cover them as single faults.  <vspace blankLines='1'/>
-02: open -- unchanged in -02 Section 8. The suite's README names "steps
4e, 4f and 5" among the checks that can never be the only fault. J.10.c
reaches 4e only as the first of two faults (4m also fails).</t>
  <t>B10 (Section 4.4): MAX_TOKEN_LIFETIME is redundant by construction. A
child cannot outlive its parent, so a lifetime bound checked on the root
holds for every link; the note to step 4l of -01 says as much. This
implementation checks it on every token anyway.  <vspace blankLines='1'/>
-02: closed -- the notes to -02 Section 8 say the bound holds by
induction (steps 3h, 4h and 4j); -02 has no per-child lifetime step.</t>
  <t>B11 (Section 7): which anchor key verifies the root and what <spanx style="verb">iss</spanx>
means. In -01 the trust anchors are "a set of public keys" without
issuer names; the root verifies under any of them (step 3b), and step 3k
requires only that <spanx style="verb">root.iss</spanx> be a URI. Section 3.2 says that <spanx style="verb">iss</spanx>
identifies the root issuer, but nothing ties it to the key that
verified the signature. When an enforcement point trusts more than one
issuer, any of them can sign a root that names another as <spanx style="verb">iss</spanx>, and the
chain verifies. Within -01 this does not change a verdict, since nothing
else reads <spanx style="verb">root.iss</spanx>; it matters as soon as audit or local policy relies
on the issuer. The <spanx style="verb">aat-01</spanx> profile follows -01 and accepts the root
under any anchor; the <spanx style="verb">aat-02</spanx> profile implements the new step 3k.  <vspace blankLines='1'/>
-02: closed -- trust anchors are (issuer, key) pairs; step 3k compares
the root's <spanx style="verb">iss</spanx> with the issuer of the anchor that verified the
signature (J.21.6, J.21.22, J.21.23).</t>
  <t>B12 (Section 4.2): I1 comparison of a URN as a string. I1 requires
<spanx style="verb">child.iss</spanx> to equal <spanx style="verb">jwk_thumbprint_uri(parent.cnf.jwk)</spanx>, a URN.
<xref target="RFC8141"/> makes parts of a URN case-insensitive, so "equals" can be
read as a string or as a URN comparison. This implementation compares
strings exactly; it computes the thumbprint for OKP keys only, with the
member order of <xref target="RFC7638"/>. An exact comparison can only deny more, never
less.  <vspace blankLines='1'/>
-02: open -- step 4c still says "equals"; -02 says nothing about
case-insensitive comparison of the URN (<xref target="RFC8141"/>). J.27.6 pins only
the thumbprint members.</t>
  <t>B13 (Sections 3.2, 7, 8.13): algorithms and thumbprints. -01 Section 3.2
requires support for Ed25519, while Section 8.13 admits the DPoP
algorithm list, including ES256 and RS256, and the closing note of
Section 7 mentions Ed448; I1 would
then need thumbprints for those key types as well. This implementation
accepts only <spanx style="verb">EdDSA</spanx> with an OKP Ed25519 key and always refuses
symmetric algorithms (Section 8.13).  <vspace blankLines='1'/>
-02: closed -- the fully-specified <spanx style="verb">Ed25519</spanx> (<xref target="RFC9864"/>); -02 forbids
accepting <spanx style="verb">EdDSA</spanx> and requires <spanx style="verb">alg</spanx> to be consistent with the key's
<spanx style="verb">kty</spanx> and <spanx style="verb">crv</spanx> (J.7.5, J.7.8, J.7.10, J.14.b).</t>
  <t>B14 (Section 7): parse before verify. -01 Section 7 forbids reading
claims before the signature is verified, but step 4b needs the parent's
parsed <spanx style="verb">cnf.jwk</spanx>, and step 2c lets <spanx style="verb">jti</spanx> be extracted first. This
implementation checks the size limits (2a, 2b), parses every token, and
then verifies. The verdict is the same either way; only the reported
code for a forged malformed token differs (<spanx style="verb">malformed</spanx> rather than
<spanx style="verb">signature_invalid</spanx>).  <vspace blankLines='1'/>
-02: closed -- steps 3b, 4b and 7b fix the order per token. With pairs
walked in order, the parent's <spanx style="verb">cnf.jwk</spanx> is parsed before the child's
signature is needed. The <spanx style="verb">aat-02</spanx> profile follows the order literally;
<spanx style="verb">aat-01</spanx> keeps parse-first.</t>
  <t>B15 (Sections 3.2, 3.4): <spanx style="verb">sub</spanx>. -01 Section 3.2 "intentionally omits"
<spanx style="verb">sub</spanx>, and Section 3.4 says a token must not be rejected solely for
claims outside those defined. Rejecting a token with <spanx style="verb">sub</spanx> is therefore
not required, and arguably not allowed. This implementation rejects it
by default and has an option to accept it.  <vspace blankLines='1'/>
-02: open -- -02 still "intentionally omits the sub claim" and requires
unrecognized top-level claims to be ignored. The <spanx style="verb">aat-02</spanx> profile does
not reject <spanx style="verb">sub</spanx> by default (<spanx style="verb">rejectSub</spanx> false). No vector carries <spanx style="verb">sub</spanx>
(J.27.1 covers other unrecognized claims).</t>
  <t>B16 (Section 3.2): <spanx style="verb">jti</spanx> format. -01 says <spanx style="verb">jti</spanx> <bcp14>SHOULD</bcp14> be a UUIDv7 and,
when a UUID is used, <bcp14>MUST</bcp14> be lowercase and hyphenated, but steps 3j and
4b1 check only for a non-empty string. This implementation accepts any
non-empty string and rejects a UUID-shaped value with upper-case
letters.  <vspace blankLines='1'/>
-02: closed -- the notes to -02 Section 8 say the lowercase UUID form
"binds producers and has no verification step". The <spanx style="verb">aat-02</spanx> profile
checks only for a non-empty string (<spanx style="verb">aat-01</spanx> still rejects upper-case
UUIDs).</t>
  <t>B17 (Section 7): limits without defaults. MAX_DELEGATION_DEPTH has no
recommended value in -01; the other limits (MAX_IAT_SKEW 30 s,
MAX_TOKEN_LIFETIME 90 days, MAX_CONSTRAINT_DEPTH 32, MAX_TOKEN_SIZE
64 KiB, MAX_STACK_SIZE 256 KiB) are <bcp14>RECOMMENDED</bcp14>. Whether a chain is
valid then depends on local configuration, and a test vector has to
state the limits it assumes. This implementation uses 16 for the depth.  <vspace blankLines='1'/>
-02: closed -- MAX_DELEGATION_DEPTH is at least 8 (J.10.f, J.21.15,
J.21.19); the suite states every parameter.</t>
  <t>B18 (Section 4.6): <spanx style="verb">par_hash</spanx> covers the signing input, not the
signature. Two JWS with the same signing input and different signature
bytes are therefore the same parent for I5. With Ed25519 and strict
verification this cannot be exploited; the choice is still worth stating
in the draft, since a profile with a malleable signature algorithm would
inherit it.  <vspace blankLines='1'/>
-02: open -- unchanged design; <spanx style="verb">aat_hash</spanx> is computed the same way.</t>
  <t>B19 (Sections 4.2, 4.7, 8.9): the review's points as AAT-01 answers
them. <xref target="MADDEN-REVIEW"/>, posted on the OAuth list the day -01 appeared,
makes two technical points about the chain, apart from the comparison
with HMAC-chained Macaroons and SPKI/SDSI: a parent token stays valid
after a child has been derived from it, so the design lacks the
re-keying of Macaroons; and only the leaf proves possession, so an agent
that sees the bytes of an intermediate or root token could use them.
The author's reply on the list called additive derivation intended and
every token holder-bound. This report names the points M1 and M2
(<xref target="model-properties"/>) and checks them in the model rather than in the
reply.
The second point -01 answers in its text. Section 4.2 (I1) requires the
derived token to be signed by the holder of the parent, Section 4.6 (I5)
commits it to that parent's bytes, and Section 4.7 (I6) requires the
presenter to prove possession of the leaf key. A token observed in
transit can therefore neither be extended, since derivation needs its
holder's key, nor presented as a leaf, nor moved under another parent.
The model confirms this for -01: against an attacker who sees every
token and may hold any holder key other than that of the token in
question, no link is derived from it (M2 a, P1b), no request is accepted
through such a link (M2 b), and no request is accepted with it (M2 c,
P4).
The first point -01 does not state. Nothing in the text says that a
parent remains valid after derivation; Section 8.9 puts revocation out
of scope and recommends short lifetimes, and Sections 8.1.2 and 8.4
give the consequence, that a compromised holder key exercises the full
authority of every token bound to it until expiry, without the property
behind it. The model shows M1 as a run of honest roles alone: a holder
derives a child from its token and is then accepted with that same
token, with no key compromised. It is how the design works, not an
attack on it. This implementation checks I1, I5 and I6 and keeps no
state that would retire a parent after derivation, since -01 defines
none.  <vspace blankLines='1'/>
-02: closed as design -- -02 Section 9.1.1 says that derivation is
additive, that every token in a chain carries a holder key, and that a
sub-agent holding its parent's bytes cannot invoke with them; -02
Section 9.4 says that AATs do not re-key, that a compromised holder key
exposes every token bound to it, and gives deriving to a fresh key and
destroying the parent's key as the approximation (-02 Section 9.4,
with the fresh holder key of -02 Section 9.10).
M1 and M2 (<xref target="model-properties"/>) are this report's independent check of
it; the vectors do not bear on it.</t>
</list></t>

</section>
<section anchor="aat-pop"><name>Proof of Possession (B20 to B23)</name>

<t><list style="symbols">
  <t>B20 (Section 5.2): PoP header and <spanx style="verb">typ</spanx>. -01 specifies no <spanx style="verb">typ</spanx>, <spanx style="verb">kid</spanx>
or <spanx style="verb">jwk</spanx> header parameter for the PoP JWT, so nothing distinguishes it
from another JWT signed by the same key. This implementation looks only
at <spanx style="verb">alg</spanx>.  <vspace blankLines='1'/>
-02: closed -- <spanx style="verb">typ</spanx> is <spanx style="verb">aat-pop+jwt</spanx> (J.7.1, J.7.2); a <spanx style="verb">jwk</spanx> header
parameter is ignored as a key source (J.7.14).</t>
  <t>B21 (Sections 5.2, 7): JCS of the whole PoP payload. -01 Section 5.2
requires the holder to serialize the whole PoP payload with JCS, but
step 7f compares only <spanx style="verb">hta</spanx>, and nothing says whether an enforcement
point must reject a payload that is not canonical. This implementation
rejects it: the payload bytes must equal their JCS re-serialization.  <vspace blankLines='1'/>
-02: closed (requirement dropped) -- -02 Appendix F: "PoP payloads no longer
need to be JCS-canonical". Only <spanx style="verb">hta</spanx> is compared (step 7f).</t>
  <t>B22 (Section 7): clock tolerance. -01 recommends a PoP window of 30
seconds either side, and separately a one-sided MAX_IAT_SKEW of 30
seconds for tokens; it does not say whether the two are the same
parameter. This implementation keeps them apart: the PoP window is its
own option, symmetric, with inclusive bounds.  <vspace blankLines='1'/>
-02: closed -- -02 Section 9.9 separates the one-sided MAX_IAT_SKEW from
the bilateral PoP window (J.20.4, J.20.15, J.20.16).</t>
  <t>B23 (Section 5): PoP binds the leaf only. In -01 the PoP JWT names the
leaf by <spanx style="verb">aat_id</spanx>, which must equal the leaf's <spanx style="verb">jti</spanx> (Section 5.3), a
value chosen by whoever derived the leaf; neither the leaf's bytes nor
the chain enter the PoP signature. Which chain a PoP belongs to
therefore rests on <spanx style="verb">jti</spanx> being unique across derivers, which nothing
checks (steps 3j and 4b1 accept any non-empty string), and <spanx style="verb">aat_aud</spanx> is
optional. The model shows the consequence: one PoP signed by an honest
holder is accepted under two different chains that end in leaves with
that holder's key and that <spanx style="verb">jti</spanx> (trace <spanx style="verb">aat01-p4-inj</spanx>,
<xref target="model-results"/>). This implementation compares <spanx style="verb">aat_id</spanx> with the leaf
<spanx style="verb">jti</spanx>, as -01 says, and nothing more.  <vspace blankLines='1'/>
-02: closed -- <spanx style="verb">aat_hash</spanx> binds the PoP JWT to the exact leaf instance
(J.20.7), and through <spanx style="verb">par_hash</spanx> to the whole chain above it. A present
<spanx style="verb">aat_aud</spanx> always applies (J.6.4). -02 Section 9.5 covers replay across
enforcement points.</t>
</list></t>

</section>
<section anchor="aat-coverage"><name>Coverage (B24, B25)</name>

<t><list style="symbols">
  <t>B24 (Section 3.3): empty constraint map and absent arguments. A tool
with an empty constraint map accepts any arguments, while a tool with
even one constraint rejects an invocation that leaves out a constrained
argument, even one under <spanx style="verb">wildcard</spanx>. -01 Section 3.3 states both, but
the step from "no constraints" to "one constraint" changes the meaning
of every other argument, which is easy to misread. This implementation
follows the text.  <vspace blankLines='1'/>
-02: closed -- <spanx style="verb">{}</spanx> is equivalent to <spanx style="verb">{"*": {"constraint_type":
"wildcard"}}</spanx>, normalized at steps 4p and 6b (J.8.1, J.8.2, J.19.15,
J.22.17).</t>
  <t>B25: no published test vectors; the 41 vectors are ours. -01 came with
no test vectors. The 41 vectors in <spanx style="verb">verifier/vectors/aat/</spanx> were written
for this report from its own reading of -01. They show that the
implementation matches that reading, not that the reading matches the
author's.  <vspace blankLines='1'/>
-02: closed -- 229 author vectors; 229 of 229 agree here.</t>
</list></t>

</section>
<section anchor="aat02-open"><name>Underdetermined in -02 (C1 to C10)</name>

<t>These are points where the -02 text, as read by this implementer, admits
more than one conforming behaviour. None is a claim of a defect. Each ends
with what this implementation does.</t>

<t><list style="symbols">
  <t>C1 (-02 Section 3.5; steps 3a, 4a, 7a): duplicate members in the
protected header. Steps 3b, 4b and 7b reject duplicate member names in
claims, and the notes to -02 Section 8 give parser divergence
(<xref target="RFC8259"/>, Section 4) as the reason. The JOSE header is not covered.
<xref target="RFC7515"/>, Section 4 lets a parser either reject such a header or keep
the last member. With <spanx style="verb">{"typ":"aat-pop+jwt",...,"typ":"aat+jwt"}</spanx>,
explicit typing then depends on the parser. This implementation: rejects
at steps 3a, 4a and 7a.</t>
  <t>C2 (-02 Sections 3.4, 4.3.1): JSON nesting needed for
MAX_CONSTRAINT_DEPTH. A constraint tree of the depth -02 recommends (32)
nests about 2 x 32 JSON levels inside the payload. J.8.15 (permit) is 68
levels deep and J.8.16 is 70. A verifier whose JSON parser has a common
default nesting limit of 64 denies J.8.15 at step 3b. -02 says nothing
about parser nesting limits or how they relate to MAX_CONSTRAINT_DEPTH.
This implementation: the <spanx style="verb">aat-02</spanx> parser allows
max(64, 2 * MAX_CONSTRAINT_DEPTH + 32) levels.</t>
  <t>C3 (step 2c): "minimal JSON parsing". -02 does not say which <spanx style="verb">jti</spanx> is
extracted when the payload repeats <spanx style="verb">jti</spanx> with different values, nor
whether a payload that is not valid JSON fails at step 2c. J.23.4 uses
equal values and so avoids the question. This implementation: a tolerant
parse that takes the first occurrence; the duplicate is then rejected at
step 3b or 4b.</t>
  <t>C4 (-02 Section 3.5; step 3a): <spanx style="verb">typ</spanx> comparison. The text says <spanx style="verb">typ</spanx>
"equals" <spanx style="verb">aat+jwt</spanx>. <xref target="RFC7515"/>, Section 4.1.9 makes <spanx style="verb">typ</spanx> values
case-insensitive and allows the <spanx style="verb">application/</spanx> prefix to be omitted, so
<spanx style="verb">application/aat+jwt</spanx> names the same type. -02 does not say whether
<spanx style="verb">application/aat+jwt</spanx> or <spanx style="verb">AAT+JWT</spanx> is to be accepted. This
implementation: exact string comparison, so both are denied.</t>
  <t>C5 (-02 Section 7.2; step 7d): <spanx style="verb">aat_aud</spanx> type and semantics. Table 5 of
-02 types <spanx style="verb">aat_aud</spanx> as a string, but gives it "the semantics of the JWT
aud claim" (<xref target="RFC7519"/>, Section 4.1.3), which allows an array. Whether
an array <spanx style="verb">aat_aud</spanx> naming the enforcement point is accepted is not
stated: -02 Section 3.2 has <spanx style="verb">aat_aud</spanx> identify an enforcement point "by
exact string comparison", which leans towards a string, while step 6c
explicitly allows <spanx style="verb">aud</spanx> to be an array. This implementation: anything
other than a matching string is denied.</t>
  <t>C6 (steps 3b, 3k): "the trust anchor whose key verified the signature".
When two anchors share one key under different issuers (rotation,
aliasing), "the" anchor is ambiguous: the text can be read as any of
them or as exactly one. This implementation: accepts when the issuer of
any anchor whose key verifies the signature equals <spanx style="verb">iss</spanx>. The suite's
anchors have distinct keys, so no vector decides it.</t>
  <t>C7 (-02 Section 3.2): magnitude of NumericDates and depths. Integer
syntax is required, but admissibility (-02 Section 3.4) applies only to
arguments and constraint values. An <spanx style="verb">exp</spanx> such as 9007199254740993 is
well-formed; comparing it as a double or exactly gives the same verdict
only because of the other bounds (lifetime, skew). Minor. This
implementation: compares as a double.</t>
  <t>C8 (steps 3l, 4b2): what makes <spanx style="verb">cnf.jwk</spanx> invalid. "Encodes a public
key" is followed only by examples of private members. The suite expects
a denial at 3l or 4b2 for an RSA <spanx style="verb">kty</spanx> carrying Ed25519 members
(J.21.21), an X25519 curve (J.24.10) and a 31-byte <spanx style="verb">x</spanx> (J.24.11); the
description of J.24.10 itself allows the denial to come at step 7a
instead. -02 does not refer to the member validation of <xref target="RFC7517"/> or
<xref target="RFC8037"/>. This implementation: requires <spanx style="verb">kty</spanx> OKP, <spanx style="verb">crv</spanx> Ed25519, a
32-byte <spanx style="verb">x</spanx> and no private members (<spanx style="verb">d</spanx>, <spanx style="verb">p</spanx>, <spanx style="verb">q</spanx>, <spanx style="verb">dp</spanx>, <spanx style="verb">dq</spanx>, <spanx style="verb">qi</spanx>,
<spanx style="verb">oth</spanx>, <spanx style="verb">k</spanx>).</t>
  <t>C9 (step 6b): <spanx style="verb">args</spanx> "as written" when the binding has already parsed
them. The duplicate-member check is possible only on the invocation's
JSON text. -02 Section 3.4 obliges a binding to preserve exact numbers
but says nothing about duplicates. This implementation: accepts <spanx style="verb">args</spanx>
as JSON text (checked) or as an already-parsed object (documented as
unable to carry either fault).</t>
  <t>C10 (step 3k): the root's <spanx style="verb">iss</spanx> "is a URI". No grammar is referenced
(for example, absolute-URI of <xref target="RFC3986"/>). This implementation:
<spanx style="verb">scheme ":"</spanx> followed by non-space characters. Minor; no vector tests a
borderline form.</t>
</list></t>

</section>
</section>
<section anchor="findings-asor"><name>Findings on asor-02</name>

<!-- What goes here: A1 to A7, section of asor-02, argument. -->

<t><list style="symbols">
  <t>A1 (Section 6, step 1): which key verifies a link below the root. Step
1 of asor-02 Section 6 verifies the signature of every DT_i, takes the
algorithm from the verifier's "own configuration for the key", and
requires DT_0 to verify under a trusted root key. Which key verifies
DT_i for i &gt; 0 it does not say, and no other rule relates the signer of
a link to its parent: not to the parent's <spanx style="verb">cnf</spanx>, as I1 of AAT-01 does,
nor to its <spanx style="verb">iss</spanx>, nor to the root key. Section 7 puts <spanx style="verb">cnf</spanx> in every
token, but <spanx style="verb">cnf</spanx> binds the party that presents the leaf (step 6), not
the party that signs the next link. Table 1 of Section 6.1 is
consistent with this: below the root it claims only that each child
commits to the parent instance, nothing about who signed it. A
verifier can therefore only apply a configured key set, selected by
<spanx style="verb">kid</spanx>, at every position. The author's implementations run "under a
single-signer trust model" (Section 11) and the 35 vectors sign every
hop with one key, so neither decides the point. With one configured key
the question does not arise. With several, the link checks accept a
child signed by any of them: the model states this as P1b false and
P1b' true (<spanx style="verb">asor02-p1b</spanx>, <xref target="model-results"/>), and M2 (a) and (b) follow
from it (<xref target="cross"/>): one compromised configured key extends any chain,
and with the attacker's own key in the leaf <spanx style="verb">cnf</spanx> the request is
accepted even with DPoP. This implementation selects the key by <spanx style="verb">kid</spanx>
from one configured set for every DT_i, which is all the text allows.</t>
  <t>A2 (Section 3, Section 4.3): <spanx style="verb">del_max_depth</spanx> inheritance. Section 3
requires <spanx style="verb">del_max_depth</spanx> in DT_0 only, and rule 5 of Section 4.3
compares <spanx style="verb">C.del_max_depth &lt;= P.del_max_depth</spanx> for every link. When the
parent carries none, the rule has nothing to compare against; when the
child carries none, rule 3's "absence means unbounded" is written for
constraints, not for this claim. The vectors' children normally omit
it, and <spanx style="verb">reject_child_raises_del_max_depth</spanx> raises it directly under
the root. This implementation compares a child's value with the
nearest ancestor that states one, and lets a child without the claim
pass rule 5.</t>
  <t>A3 (Section 3, Section 6): root without principal, <spanx style="verb">malformed</spanx> or step
  <list style="numbers" type="1">
      <t>Section 3 says that a chain whose DT_0 carries no <spanx style="verb">sub</spanx>, or an empty
one, is malformed; step 3 of Section 6 checks the same condition again
("DT_0.sub is a non-empty string") and says deny, and Table 2 has no
step-3 name for it (<spanx style="verb">principal_altered</spanx> is for a <spanx style="verb">sub</spanx> that differs
from DT_0's). The vector <spanx style="verb">reject_root_without_principal</spanx> expects
<spanx style="verb">malformed</spanx>. This implementation follows the vector and reports it at
parse time.</t>
    </list></t>
  <t>A4 (Section 6, step 3): chain length bound by convention. Step 3
requires <spanx style="verb">n &lt; DT_0.del_max_depth</spanx>, where Section 6 writes the chain as
DT_0 ... DT_n, so n is the index of the last token and the chain has
n + 1 tokens; Section 3 calls <spanx style="verb">del_max_depth</spanx> "the maximum permitted
chain length". The two agree only if n is read as that index: a chain
of exactly <spanx style="verb">del_max_depth</spanx> tokens is then accepted and one token more
is denied. Read as a count, the same test denies the chain of
<spanx style="verb">del_max_depth</spanx> tokens. No vector reaches the boundary (A5). This
implementation reads n as the index.</t>
  <t>A5: coverage of the 35 vectors. The vectors are signed with one public
HS256 test key, so step 1 is exercised only for an algorithm off the
accepted list, not for a wrong key or an unknown <spanx style="verb">kid</spanx>; <spanx style="verb">cnf</spanx> carries a
stand-in thumbprint with no key, so step 6 is not exercised; <spanx style="verb">now</spanx> is
0, so step 5 is exercised for monotonic expiry only; no vector reaches
<spanx style="verb">depth_invalid</spanx> (step 3), the JCS parse names (<spanx style="verb">non_canonical</spanx>,
<spanx style="verb">duplicate_member</spanx>, <spanx style="verb">non_finite</spanx>), step 7, or step 8 beyond
<spanx style="verb">audience_mismatch</spanx> (<spanx style="verb">scope_not_granted</spanx>, <spanx style="verb">ceiling_exceeded</spanx>,
<spanx style="verb">unknown_constraint</spanx>, cumulative totals); rule 5 is exercised only
directly under the root (A2). The verifier covers these in its own
tests, with generated Ed25519 keys for step 6; those tests are this
work's reading, not the author's.</t>
  <t>A6 (Sections 4.3, 6): a child's <spanx style="verb">del_max_depth</spanx> has no effect. Step 3
bounds the chain by <spanx style="verb">DT_0.del_max_depth</spanx> alone, and rule 5 only
forbids a child from raising the value. A DT_1 carrying <spanx style="verb">del_max_depth</spanx>
1 therefore still admits DT_2 and DT_3 below it: the claim is checked
for monotonicity and never used as a limit. The model's <spanx style="verb">asor02-p1b</spanx>
trace shows exactly this chain (<xref target="model-results"/>). In AAT-01, I2
requires <spanx style="verb">derived.del_depth &lt;= parent.del_max_depth</spanx> at every link,
so there the value binds. This implementation follows the asor-02
text.</t>
  <t>A7 (Sections 6.1, 9.4): who mints a link below the root. asor-02 does
not name the signer of a child, and its verbs differ: Section 6.1 has
"an issuer validating a parent before minting a child", Section 9.4 a
parent that "can mint any number of children" and "two issuers
allocating offline" from one budget, Section 11 "a single-signer trust
model". A Delegation Token is an OAuth JWT access token (<xref target="RFC9068"/>)
with its own <spanx style="verb">iss</spanx> (Sections 2 and 3), and nothing requires the holder
of DT_{i-1} to take part in signing DT_i. This report therefore reads
asor-02 as issuer-minted attenuation verified offline: the holder of a
parent is bound by <spanx style="verb">cnf</spanx> and named by <spanx style="verb">client_id</spanx>, and a link is signed
by a key the verifier is configured to accept. Under that reading P1b,
a link made by the holder of its parent, is not a property asor-02
claims, and its failure (A1) is a different trust model rather than a
defect: what a chain establishes is P1b', and its security is that of
the weakest configured key. In the model the asor-02 holder signs the
child with its own key, so holder keys and configured keys are one
population, each agent its own issuer; this is one admissible
deployment, and the queries and verdicts are the same under either
reading. Where a deployment keeps issuer keys apart from agent keys,
the M2 (a) and (b) results need a compromised issuer key, not an agent
key.</t>
</list></t>

</section>
<section anchor="cross"><name>Cross-Draft Observations</name>

<!-- What goes here: holder-derived versus issuer-minted; the M1/M2 table,
one line per cell. -->

<t>Both drafts build the same chain: a root signed by a trusted key, each
link committing to its parent's signing input by <spanx style="verb">par_hash</spanx>, depth,
expiry and capabilities narrowing at every hop, a holder key in every
token and a proof of possession for the leaf. The model treats them as
two instances of one structure, and the shared properties come out the
same: the invoked tool was granted at the root (P2), the leaf's depth,
maximum depth and expiry are bounded by the root's (P3), a leaf naming an
honest key is used only by that key's holder (P4; for asor-02 with DPoP
on), and a parent remains accepted after its holder has derived from it
(M1), in both.</t>

<t>They differ in one place: who signs a link below the root. AAT-01 is
holder-derived: I1 requires the link to be signed by the key the parent
names in <spanx style="verb">cnf</spanx>, so the holder of a token is the only party that can
extend the chain below it. asor-02 is issuer-minted (A7): a link is
signed by a key the verifier is configured to accept, the holder of the
parent is bound by <spanx style="verb">cnf</spanx> and named by <spanx style="verb">client_id</spanx>, and nothing requires
it to take part in the signing (A1). <xref target="tbl-madden"/> shows what follows
for M2. In the AAT-01 row an attacker who sees every token and may hold
any key but that of the token in question can neither derive below it
(a), nor have a request accepted through a link its holder did not make
(b), nor use it (c). In the asor-02 rows the same attacker, holding any
one configured key, which need not belong to the chain, signs a link
below an honest token and the link checks accept it (a); naming its own
key in the forged leaf's <spanx style="verb">cnf</spanx>, it is accepted at step 6 with its own
DPoP proof (b), since DPoP binds the presenter of the leaf and not the
signer of each link. DPoP decides (c) only. The security of an asor-02
chain is therefore that of the weakest key its verifier is configured to
accept; where issuer keys and agent keys are kept apart, (a) and (b)
need a compromised issuer key.</t>

<t>The last row isolates the cause. With one change to the asor-02 model,
the flag <spanx style="verb">hs</spanx> of <spanx style="verb">asor02.pvl</spanx>, a link verifies under its parent's <spanx style="verb">cnf</spanx>
instead of the configured key, and every M2 result for asor-02 with DPoP
equals the AAT-01 result (<spanx style="verb">asor02-holder-signs-m2</spanx>, <xref target="tbl-results"/>);
with DPoP off, (a) and (b) become no and (c) stays yes. The M2 difference
between the drafts is caused by A1 alone. This is a reading asor-02 does
not state, not a rule of it; adopting it would make the signer of a link
the holder of its parent, which is the other draft's design.</t>

<texttable title="M1 and M2 on both profiles" anchor="tbl-madden">
      <ttcol align='left'>Profile</ttcol>
      <ttcol align='left'>M1</ttcol>
      <ttcol align='left'>M2 (a)</ttcol>
      <ttcol align='left'>M2 (b)</ttcol>
      <ttcol align='left'>M2 (c)</ttcol>
      <c>AAT-01</c>
      <c>parent accepted after derivation: yes</c>
      <c>no</c>
      <c>no</c>
      <c>no</c>
      <c>asor-02, DPoP on</c>
      <c>yes</c>
      <c>yes: one configured key extends any chain</c>
      <c>yes: attacker's own key in the forged leaf's <spanx style="verb">cnf</spanx></c>
      <c>no: DPoP gives P4</c>
      <c>asor-02, DPoP off</c>
      <c>yes</c>
      <c>yes</c>
      <c>yes</c>
      <c>yes: an observed chain is accepted from anyone</c>
      <c>asor-02, DPoP on, holder-signs reading (<spanx style="verb">hs</spanx>)</c>
      <c>not run</c>
      <c>no</c>
      <c>no</c>
      <c>no</c>
</texttable>

</section>
<section anchor="impl-status"><name>Implementation Status</name>

<!-- RFC 7942 Section 2 template; to be removed before publication. -->

<t>Note to the RFC Editor: please remove this section and the reference to
<xref target="RFC7942"/> before publication.</t>

<t>This section records the status of known implementations at the time of
posting, following <xref target="RFC7942"/>. The inclusion of an implementation here
does not imply endorsement by the IETF.</t>

<t><xref target="AAT-02"/> Appendix E lists further implementations of AATs, and the
<spanx style="verb">INTEROP.md</spanx> file of the author's vector suite keeps a table of results
against it; this report does not restate them.</t>

<section anchor="impl-aat"><name>aat</name>

<dl>
  <dt>Organization:</dt>
  <dd>
    <t>None (individual).</t>
  </dd>
  <dt>Name:</dt>
  <dd>
    <t>aat (verifier and model).</t>
  </dd>
  <dt>Description:</dt>
  <dd>
    <t>A minimal TypeScript verifier for AAT-01, AAT-02 and asor-02 chains, and
a ProVerif model of AAT-01 and asor-02; see <xref target="verifier"/> and <xref target="model"/>.</t>
  </dd>
  <dt>Level of maturity:</dt>
  <dd>
    <t>Research prototype; an executable specification, not a product.</t>
  </dd>
  <dt>Coverage:</dt>
  <dd>
    <t>Chain verification only; no minting service, no CBOR, no revocation.
asor-02: the token format (Section 3), authority and subsumption
(Section 4), chain linkage (Section 5) and the offline verification
algorithm (Section 6) through the action check (step 8), with DPoP
holder binding (Section 7) for EdDSA proofs; not status lists (step 7,
Section 8), mTLS confirmation or ES256 proofs. AAT-01: the root, link
and leaf checks of Section 7 (invariants I1 to I6 of Section 4), the nine
constraint types and their subsumption (Sections 3.4 and 4.5) and the
PoP JWT (Section 5); not root issuance (Section 3.7) or derivation
(Section 6) beyond test-only minting, keys other than Ed25519, or a PoP
replay cache. AAT-02: every step of -02 Section 8, with the constraint
map, well-formedness and subsumption rules of -02 Sections 3.3, 3.4 and
4.5 and the PoP JWT of -02 Section 7; not issuance or derivation (-02
Section 6), algorithms other than Ed25519, or extension constraint types
(-02 Section 5).</t>
  </dd>
  <dt>Version compatibility:</dt>
  <dd>
    <t>draft-niyikiza-oauth-attenuating-agent-tokens-01,
draft-niyikiza-oauth-attenuating-agent-tokens-02 and
draft-asor-wimse-agent-delegation-chain-02.</t>
  </dd>
  <dt>Licensing:</dt>
  <dd>
    <t>Apache License 2.0.</t>
  </dd>
  <dt>Implementation experience:</dt>
  <dd>
    <t>The AAT-02 profile was written from the -02 text and then run against the
author's vector suite; it agreed on all 229 vectors on the first run.
Of the 25 observations made on AAT-01 while implementing it
(<xref target="findings-aat"/>), the -02 text decides 19 (16 closed, one of them by
dropping the requirement, and 3 closed as design), decides one in part
(B4), makes one moot (B8) and leaves four unchanged (B9, B12, B15, B18);
ten points
of the -02 text are underdetermined for an implementer (C1 to C10), and
no vector decides any of them against this implementation. On asor-02
(<xref target="findings-asor"/>) the main point is A1 with A7: Section 6 names no key
for a link below the root, and the model states what the chain then
guarantees; A2 to A6 are smaller gaps in the text and in the vectors'
coverage. Where a draft was decidable the implementation followed it;
where it was not, the choice is recorded in this document, not only in
the code.</t>
  </dd>
  <dt>Contact:</dt>
  <dd>
    <t>Azat Davliatshin, ardavlyatshin@gmail.com</t>
  </dd>
  <dt>Information date:</dt>
  <dd>
    <t>2026-11-02</t>
  </dd>
</dl>

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

<t>This document specifies no protocol and no change to one. The model's
attacker controls the network, observes every token, and may compromise
any holder key at any time but not the trust anchor's key; results are
only as strong as that attacker and the bounds of <xref target="model-limits"/>.</t>

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

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

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

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



<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="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</reference>

<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>

<reference anchor="RFC7517">
  <front>
    <title>JSON Web Key (JWK)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7517"/>
  <seriesInfo name="DOI" value="10.17487/RFC7517"/>
</reference>

<reference anchor="RFC7519">
  <front>
    <title>JSON Web Token (JWT)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7519"/>
  <seriesInfo name="DOI" value="10.17487/RFC7519"/>
</reference>

<reference anchor="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="RFC7800">
  <front>
    <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="April" year="2016"/>
    <abstract>
      <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7800"/>
  <seriesInfo name="DOI" value="10.17487/RFC7800"/>
</reference>

<reference anchor="RFC8037">
  <front>
    <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8037"/>
  <seriesInfo name="DOI" value="10.17487/RFC8037"/>
</reference>

<reference anchor="RFC8141">
  <front>
    <title>Uniform Resource Names (URNs)</title>
    <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <date month="April" year="2017"/>
    <abstract>
      <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8141"/>
  <seriesInfo name="DOI" value="10.17487/RFC8141"/>
</reference>

<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>

<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>

<reference anchor="RFC9278">
  <front>
    <title>JWK Thumbprint URI</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="K. Yasuda" initials="K." surname="Yasuda"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>This specification registers a kind of URI that represents a JSON Web Key (JWK) Thumbprint value. JWK Thumbprints are defined in RFC 7638. This enables JWK Thumbprints to be used, for instance, as key identifiers in contexts requiring URIs.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9278"/>
  <seriesInfo name="DOI" value="10.17487/RFC9278"/>
</reference>

<reference anchor="RFC9396">
  <front>
    <title>OAuth 2.0 Rich Authorization Requests</title>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="J. Richer" initials="J." surname="Richer"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <date month="May" year="2023"/>
    <abstract>
      <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9396"/>
  <seriesInfo name="DOI" value="10.17487/RFC9396"/>
</reference>

<reference anchor="RFC9449">
  <front>
    <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
    <author fullname="D. Fett" initials="D." surname="Fett"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="D. Waite" initials="D." surname="Waite"/>
    <date month="September" year="2023"/>
    <abstract>
      <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9449"/>
  <seriesInfo name="DOI" value="10.17487/RFC9449"/>
</reference>

<reference anchor="RFC9068">
  <front>
    <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
    <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
    <date month="October" year="2021"/>
    <abstract>
      <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9068"/>
  <seriesInfo name="DOI" value="10.17487/RFC9068"/>
</reference>

<reference anchor="RFC9864">
  <front>
    <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
    <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
    <author fullname="O. Steele" initials="O." surname="Steele"/>
    <date month="October" year="2025"/>
    <abstract>
      <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
      <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9864"/>
  <seriesInfo name="DOI" value="10.17487/RFC9864"/>
</reference>


<reference anchor="AAT-01" target="https://datatracker.ietf.org/doc/draft-niyikiza-oauth-attenuating-agent-tokens/01/">
  <front>
    <title>Attenuating Authorization Tokens for Agentic Delegation Chains</title>
    <author initials="N." surname="Niyikiza" fullname="Niki Niyikiza">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-niyikiza-oauth-attenuating-agent-tokens-01"/>
</reference>
<reference anchor="AAT-02" target="https://datatracker.ietf.org/doc/draft-niyikiza-oauth-attenuating-agent-tokens/02/">
  <front>
    <title>Attenuating Authorization Tokens for Agentic Delegation Chains</title>
    <author initials="N." surname="Niyikiza" fullname="Niki Niyikiza">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-niyikiza-oauth-attenuating-agent-tokens-02"/>
</reference>
<reference anchor="ASOR-02" target="https://datatracker.ietf.org/doc/draft-asor-wimse-agent-delegation-chain/02/">
  <front>
    <title>Verifiable Attenuated Delegation for AI Agent Chains</title>
    <author initials="R." surname="Asor" fullname="Rafael Asor">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-asor-wimse-agent-delegation-chain-02"/>
</reference>
<reference anchor="AGNIHOTRI-02" target="https://datatracker.ietf.org/doc/draft-agnihotri-oauth-agent-impl-status/02/">
  <front>
    <title>Implementation Status of OAuth Identity Chaining and Transaction Tokens</title>
    <author >
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-agnihotri-oauth-agent-impl-status-02"/>
</reference>
<reference anchor="PROVERIF" target="https://bblanche.gitlabpages.inria.fr/proverif/">
  <front>
    <title>ProVerif: Cryptographic protocol verifier in the formal model</title>
    <author initials="B." surname="Blanchet" fullname="Bruno Blanchet">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="MADDEN-REVIEW" target="https://mailarchive.ietf.org/arch/msg/oauth/9RkGndj2O23qOTvv1IRHlJjc0Cg/">
  <front>
    <title>Review of draft-niyikiza-oauth-attenuating-agent-tokens-01 on the OAuth list</title>
    <author initials="N." surname="Madden" fullname="Neil Madden">
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>


    </references>

</references>


<?line 1145?>

<section anchor="reproduce"><name>How to Reproduce</name>

<!-- What goes here: commands and versions. -->

<t>From the root of <eref target="https://github.com/azatdavliatshin/aat"></eref>:</t>

<t><list style="symbols">
  <t><spanx style="verb">npm --prefix verifier install</spanx></t>
  <t><spanx style="verb">npm --prefix verifier test</spanx>: property and unit tests, the 35 asor-02
vectors, the 41 AAT-01 vectors and the 229-vector AAT-02 suite.</t>
  <t><spanx style="verb">npm --prefix verifier run suite:aat02</spanx>: runs the AAT-02 suite alone and
writes <spanx style="verb">verifier/results/aat02-results.json</spanx> in the format of the
suite's <spanx style="verb">compare_results.py</spanx>.</t>
  <t>In a checkout of the suite's repository:
<spanx style="verb">python3 ietf/vectors/compare_results.py results.json</spanx>, with
<spanx style="verb">results.json</spanx> the file written by the previous command. It prints the
suite's SHA-256 and the count of agreements; <spanx style="verb">--steps</spanx> also lists the DENY
vectors whose failing step differs. The script is not part of this
repository, and outside the suite's directory layout it needs
<spanx style="verb">--suite path/to/aat-jws-vectors.json</spanx>.</t>
  <t><spanx style="verb">make -C model summary</spanx>: every ProVerif model, and <spanx style="verb">model/out/SUMMARY.md</spanx>.
The <spanx style="verb">proverif</spanx> executable must be on <spanx style="verb">PATH</spanx> (or passed as
<spanx style="verb">PROVERIF=/path/to/proverif</spanx>); it can be installed with <spanx style="verb">opam install
proverif</spanx>.</t>
  <t><spanx style="verb">make -C report</spanx> and <spanx style="verb">make -C report idnits</spanx>: build this document and
check it. They need kramdown-rfc, xml2rfc and idnits on <spanx style="verb">PATH</spanx>.</t>
</list></t>

<t>Versions: Node 22 or later, Python 3 and ProVerif 2.05 are required. The
verifier run reported here used Node v26.12.0, npm 11.20.0 and Python 3.14.4
(146 tests, 146 passed). The model results of <xref target="tbl-results"/> are from
ProVerif 2.05. The report was built with kramdown-rfc 1.7.43, xml2rfc 3.34.1
and idnits 3.2.0.</t>

</section>
<section anchor="changelog"><name>Change Log</name>

<!-- Remove before publication. -->

<section anchor="section"><name>-00</name>

<t>Written against AAT-01 and asor-02; extended for AAT-02 after 26 October
2026 with the <spanx style="verb">aat-02</spanx> verifier profile and the result of the author's
vector suite.</t>

</section>
</section>
<section numbered="false" anchor="acknowledgements"><name>Acknowledgements</name>

<t>The author of the AAT drafts published the -02 test-vector suite and its
comparison script, which made the AAT-02 results in this report
reproducible by anyone; the author of asor-02 published the test vectors
used for the asor-02 profile. The M1 and M2 properties of the model follow
the two points of Neil Madden's review of AAT on the OAuth working group
list. The author of this report thanks all three. Any error in reading the
drafts is the author's own.</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

