<?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.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-reddy-wimse-aggregate-signatures-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Aggregate Signatures for WIMSE">Aggregate Signatures for WIMSE Delegation-Chain Integrity</title>
    <seriesInfo name="Internet-Draft" value="draft-reddy-wimse-aggregate-signatures-00"/>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <author fullname="Hannes Tschofenig">
      <organization abbrev="UniBw M.">University of the Bundeswehr Munich</organization>
      <address>
        <postal>
          <city>Neubiberg</city>
          <region>Bavaria</region>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@unibw.de</email>
      </address>
    </author>
    <date year="2026" month="September" day="08"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>aggregate signatures</keyword>
    <keyword>signature stripping</keyword>
    <keyword>workload identity</keyword>
    <keyword>PQC</keyword>
    <abstract>
      <?line 60?>

<t>This document profiles the WIMSE HTTP Message Signatures mechanism
(<xref target="I-D.ietf-wimse-http-signature"/>) to protect a request that passes through a
chain of workloads. In the base mechanism each workload signs independently: an
intermediary can remove a signature undetected, and the signatures accumulate on
every hop. This document combines the workloads' signatures into one aggregate
signature. Removal of a signature becomes detectable, and the signature material
no longer grows with the length of the chain, a significant saving for
post-quantum signature algorithms, whose signatures are large. The mechanism works
with any aggregate signature scheme.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-reddy-wimse-aggregate-signatures/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Workload Identity in Multi System Environments Working Group mailing list (<eref target="mailto:wimse@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/wimse/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/tireddy2/WIMSE-aggregate-signature"/>.</t>
    </note>
  </front>
  <middle>
    <?line 72?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The WIMSE architecture (<xref target="I-D.ietf-wimse-arch"/>) authenticates a workload with a
Workload Identity Token (WIT) (<xref target="I-D.ietf-wimse-workload-creds"/>), a credential
that identifies the workload. On its own a WIT is a bearer credential: any party
that obtains it could present it as its own.</t>
      <t>The WIMSE HTTP Message Signatures mechanism (<xref target="I-D.ietf-wimse-http-signature"/>)
binds the WIT to a specific HTTP message. The sending workload signs the message
with the key bound to its WIT. This proves the sender holds the WIT's key, and it
protects the message from modification in transit, including by intermediaries
that terminate TLS.</t>
      <t>A request may pass through several workloads before reaching its destination. This
forms a chain, and each workload in the chain signs the message. The destination
needs assurance about the whole chain, not only the last workload it received the
message from.</t>
      <t>In the base mechanism each workload signs independently. This creates two problems
in a chain.</t>
      <t>First, the signatures can be stripped. A workload on the path can delete another
workload's signature, and the shorter chain still verifies. The destination cannot
tell that a workload was removed.</t>
      <t>Second, the signatures accumulate. Every hop adds a full signature, so the total size
grows with the length of the chain. This becomes particularly problematic with
post-quantum signatures, which are large, often several kilobytes. A chain of even a
few workloads then carries tens of kilobytes of signatures, which can exceed
HTTP header size limits.</t>
      <t>This document addresses both problems in two layers. First, each hop
records a digest of the request it received and the request it forwards
(<xref target="lineage"/>), giving a verifiable record of how the request was transformed. This
alone detects removal of any hop that changed the request, because the recorded
digests no longer line up. Second, the hops' signatures are combined into a single
aggregate signature (<xref target="integrity"/>). The aggregate detects removal of a hop even
when it did not change the request, and keeps the signature material close to the
size of one signature regardless of the length of the chain. The mechanism works
with any aggregate signature scheme, including post-quantum schemes as they
mature.</t>
    </section>
    <section anchor="delegation-in-agentic-systems">
      <name>Delegation in Agentic Systems</name>
      <t>An AI agent is a workload and is authenticated by a WIT like any other workload.
Agentic systems are a primary motivation for this document because they produce
delegation chains with two properties that highlight the problems described in <xref target="intro"/>.</t>
      <t>The path is dynamic. An agent decides at processing time which downstream agent to
delegate a sub-task to, so the chain is not fixed by configuration and is not
known to the destination in advance. The destination therefore cannot check the
chain against an expected path; it can only rely on what the chain itself proves.
This is why silent removal of a hop must be detectable from the signatures alone.</t>
      <t>The request is transformed at each hop. Unlike a forwarding proxy, an agent
changes the content it passes on: the sub-task given to a downstream agent differs
from the task the agent received. Each transformation must be cryptographically
attributable to the agent that performed it.</t>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document addresses workload identity and message integrity for delegation
chains. Authorization is out of scope. Scoped delegation and transferable
authorization credentials are a separate problem, addressed by other mechanisms
discussed in OAUTH WG.</t>
      </section>
      <section anchor="goals">
        <name>Goals</name>
        <t>For a delegation chain, this document aims to:</t>
        <ul spacing="normal">
          <li>
            <t>preserve the identity of the originating workload across all hops;</t>
          </li>
          <li>
            <t>let a receiving party verify that the chain traces back to the originator; and</t>
          </li>
          <li>
            <t>produce a signed, attributable record of each hop's transformation of the
request.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="terminology-and-conventions">
      <name>Terminology and Conventions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the terms from <xref target="I-D.ietf-wimse-arch"/>,
<xref target="I-D.ietf-wimse-workload-creds"/>, and <xref target="I-D.ietf-wimse-http-signature"/>.
Aggregation is used as defined in <xref target="I-D.irtf-cfrg-bls-signature"/>: given a list of
signatures for a list of messages and public keys, an aggregation algorithm
produces one signature that authenticates the same list of messages and public
keys. This document additionally uses:</t>
      <dl>
        <dt>Hop:</dt>
        <dd>
          <t>A workload that signs the request as it passes along the chain.</t>
        </dd>
        <dt>Delegation Chain:</dt>
        <dd>
          <t>The ordered sequence of hops that sign the request, from the initiator (H_1) to
the last hop (H_N).</t>
        </dd>
        <dt>Initiator:</dt>
        <dd>
          <t>The first hop (H_1), which originates the request.</t>
        </dd>
        <dt>Destination:</dt>
        <dd>
          <t>The party (H_{N+1}) that receives the request from the last hop and verifies the
chain.</t>
        </dd>
      </dl>
    </section>
    <section anchor="how-aggregate-signatures-work">
      <name>How Aggregate Signatures Work</name>
      <t>An aggregate signature scheme combines several signatures, each produced by a
different signer over a different message, into a single value. A verifier checks
that one value against the whole set of signer public keys and messages
(<xref target="fig-agg"/>). The values are:</t>
      <ul spacing="normal">
        <li>
          <t>k_i: the public key of hop i, obtained from its WIT.</t>
        </li>
        <li>
          <t>m_i: the message signed by hop i. It consists of the request components and
parameters listed in that hop's Signature-Input (<xref target="RFC9421"/>), including the
WIMSE parameters (<xref target="I-D.ietf-wimse-http-signature"/>). The signature algorithm
hashes m_i when producing the signature.</t>
        </li>
        <li>
          <t>s_i: the signature of hop i over m_i.</t>
        </li>
        <li>
          <t>S: the aggregate of s_1 to s_N.</t>
        </li>
      </ul>
      <figure anchor="fig-agg">
        <name>Aggregating per-hop signatures into a single value</name>
        <artwork type="ascii-art"><![CDATA[
  H1: sign(m1) --> s1 --.
                        |
  H2: sign(m2) --> s2 --+--> aggregate --> S
                        |
  H3: sign(m3) --> s3 --'

  Verify once:  S  against  { (k1,m1), (k2,m2), (k3,m3) }

  * one value S proves all of H1, H2, H3 signed
  * to drop Hk from S, the attacker must subtract sk but sk is never
    placed on the wire, so it cannot be removed
]]></artwork>
      </figure>
      <t>Combining requires no secret: any party can fold a further signature into the
running value S. Removing a contribution is different. To remove hop k from S, a
party needs s_k, the individual signature of hop k. In a chain where only the
running aggregate is forwarded, an interior hop's individual signature is never
placed on the wire, so an upstream hop cannot be removed. The algorithm that
produces and combines the signatures is not fixed by this document; it is carried
in each hop's WIT. Because signatures can be aggregated only within a single
scheme, all hops in the chain will have to use the same algorithm (see <xref target="agility"/>).</t>
    </section>
    <section anchor="integrity">
      <name>Chain Integrity via Aggregate Signatures</name>
      <t>Each hop signs its message as profiled in <xref target="I-D.ietf-wimse-http-signature"/>,
additionally covering the lineage parameters of <xref target="lineage"/>. The hops' signatures
are combined into a single aggregate signature carried in a new HTTP field,
Signature-Aggregate. Like the Signature field of <xref target="RFC9421"/>, its value is a
Byte Sequence and is therefore base64-encoded (<xref target="RFC8941"/>). The presence of
Signature-Aggregate signals aggregate mode: a hop that receives it folds its
signature into the running aggregate rather than adding an independent Signature,
and the destination verifies the single value against all Signature-Input entries.
Each hop's Signature-Input entry is retained, so the verifier has, for each hop,
the covered components and, via the hop's WIT, the public key needed
to verify the aggregate.</t>
      <section anchor="non-removability-of-interior-signatures">
        <name>Non-Removability of Interior Signatures</name>
        <t>As the request travels, each hop adds its signature to a running aggregate. A hop
forwards only this combined value. The individual signatures that went into it are
not sent.</t>
        <t>To make a verifier accept a chain with one hop removed, an attacker needs the
aggregate for the remaining hops. Producing that value means subtracting the
removed hop's individual signature from the aggregate. That signature was never
sent, so the attacker cannot do this.</t>
        <t>The verifier checks the aggregate against the set of hops presented with it. A
chain with a hop removed does not verify. Removal is therefore detected, and
verification is all-or-nothing: the whole chain verifies, or it fails.</t>
      </section>
      <section anchor="anchoring-the-end-signatures">
        <name>Anchoring the End Signatures</name>
        <t>The previous subsection shows that an interior hop cannot be removed. This leaves
the two ends of the chain.</t>
        <t>Removing the last hop's signature removes that hop's own authentication. The last
hop is the party presenting the request, so this defeats its own purpose.</t>
        <t>Discarding the aggregate and signing a new one makes the attacker the initiator of
a new chain. The initiator is identified by its WIT. Whether a workload is allowed
to originate a request is an authorization decision, which is out of scope
(<xref target="scope"/>); this mechanism only binds the initiator's identity to the chain
through its WIT. A destination that accepts requests only from permitted
initiators will reject a chain re-originated by an intermediary.</t>
        <t>If an intermediary forwards the request unchanged without adding its signature,
the chain passes through intact and still verifies; nothing is lost. If it
modifies the request without signing, the last hop's signature no longer matches
the modified request and the change is detected.</t>
      </section>
    </section>
    <section anchor="lineage">
      <name>Request Lineage</name>
      <t>In an agentic system the request is modified as it travels. Some changes are
legitimate: an orchestrator or gateway rewrites the request before passing it on.
Some are not: a forwarding proxy is meant to pass the request through unchanged, so
if it alters the request, that is an attack.</t>
      <t>This section lets a verifier tell these apart, and serves two purposes:</t>
      <ul spacing="normal">
        <li>
          <t>Detect an unauthorized modifier. A change made by a party that did not sign is
rejected.</t>
        </li>
        <li>
          <t>Provide an audit trail. A change made by a signing hop is allowed, but recorded
and attributable to that hop.</t>
        </li>
      </ul>
      <t>The difference between the two is simply whether a signing hop made the change.</t>
      <section anchor="mechanism">
        <name>Mechanism</name>
        <t>Each hop records two digests, both covered by its signature:</t>
        <ul spacing="normal">
          <li>
            <t>The digest of the request it received (its input).</t>
          </li>
          <li>
            <t>The digest of the request it forwards (its output). This is the Content-Digest
(<xref target="RFC9530"/>) already required by <xref target="I-D.ietf-wimse-http-signature"/> when a body
is present.</t>
          </li>
        </ul>
        <t>The input digest is carried in a new signature parameter, wimse-req-digest, so it
is covered by the signature like any other parameter. Each hop signs as required by
<xref target="I-D.ietf-wimse-http-signature"/>, and additionally covers wimse-req-digest on
requests and wimse-resp-digest on responses (<xref target="responses"/>). Content-Digest alone
is not enough: it records only what a hop sends, not what it received, so on its own it
cannot show that one hop's output is the next hop's input.</t>
        <t>The verifier walks the chain and verifies that each hop's output digest matches
the next hop's input digest. A mismatch indicates that the request was modified
between the two hops. If the modification is reflected in the signed input and
output digests recorded by a hop, it is a legitimate transformation
attributable to that hop. Otherwise, the modification is
unauthorized, and the request is rejected.</t>
        <t>The signed lineage record is tamper-evident and provides a verifiable audit trail
for request/response transformations.</t>
      </section>
      <section anchor="initiator">
        <name>Initiator</name>
        <t>The initiator has no predecessor, so it has no input digest. Its
wimse-req-digest carries the reserved value "origin", which identifies the
start of the request lineage. The initiator is identified by its WIT; whether
it is allowed to originate the request is an authorization decision and is out
of scope (<xref target="scope"/>).</t>
      </section>
    </section>
    <section anchor="responses">
      <name>Responses</name>
      <t>The response path is handled the same as the request path (<xref target="integrity"/>,
<xref target="lineage"/>), in reverse. The responses are aggregated, and each hop records the
response it received and the response it forwards. An orchestrator that combines
several responses into one is a transforming hop like any other.</t>
      <t>The response takes the same path as the request, in reverse: from the
destination back through each hop to the initiator. This is inherent to how the
chain is connected: each hop has a link only to its neighbors, and each link is
protected by TLS, so an intermediary cannot respond to the initiator directly, and
the response returns hop by hop.</t>
      <t>The differences are the parameter name and the direction: each hop carries the
digest of the response it received in wimse-resp-digest, and continuity
is verified from the destination back to the initiator.</t>
      <t>The response originator has no predecessor on the response path and therefore no
received response. It <bcp14>MUST</bcp14> set wimse-resp-digest to the reserved value "origin",
which identifies the start of the response lineage. Verifiers <bcp14>MUST</bcp14> treat this value
as indicating that the response originated at the destination hop.</t>
    </section>
    <section anchor="flow">
      <name>Message Flow</name>
      <t>This section shows the request path for a two-hop chain: an initiator H1 sends a
request to a hop H2, which transforms it and forwards it. Only the request is
shown. Signature, aggregate, and digest values are truncated. Within the field
values, line breaks preceded by a backslash are inserted for readability only
and are not part of the field.</t>
      <t>H1 originates the request. It has no predecessor, so its wimse-req-digest carries
the origin value. The aggregate contains only H1's signature so far.</t>
      <figure>
        <name>Request sent by the initiator H1</name>
        <sourcecode type="http-message"><![CDATA[
POST /task HTTP/1.1
Host: h2.example
Content-Type: application/json
Content-Digest: sha-256=:d1a...=:
Workload-Identity-Token: eyJ0eXAiOi...
Signature-Input: h1=("@method" "@target-uri" "content-digest" \
    "workload-identity-token");created=1710000000;expires=1710000060;\
    nonce="a1b2...";tag="wimse";wimse-aud="h2.example";\
    wimse-req-digest=:AAAA...=:
Signature-Aggregate: :QoM1...=:

{"task": "..."}
]]></sourcecode>
      </figure>
      <t>H2 verifies H1's signature, transforms the request (so its Content-Digest
changes), and forwards it. H2's wimse-req-digest is the digest of the request it
received from H1, which equals H1's Content-Digest. H2 folds its signature into
the aggregate, which now covers both hops.</t>
      <figure>
        <name>Request forwarded by H2, aggregate now covering H1 and H2</name>
        <sourcecode type="http-message"><![CDATA[
POST /run HTTP/1.1
Host: h3.example
Content-Type: application/json
Content-Digest: sha-256=:9f3...=:
Workload-Identity-Token: eyJ0eXAiOi...
Signature-Input: h1=("@method" "@target-uri" "content-digest" \
    "workload-identity-token");created=1710000000;expires=1710000060;\
    nonce="a1b2...";tag="wimse";wimse-aud="h2.example";\
    wimse-req-digest=:AAAA...=:, \
  h2=("@method" "@target-uri" "content-digest" \
    "workload-identity-token");created=1710000005;expires=1710000065;\
    nonce="c3d4...";tag="wimse";wimse-aud="h3.example";\
    wimse-req-digest=:d1a...=:
Signature-Aggregate: :7Zx9...=:

{"task": "...transformed..."}
]]></sourcecode>
      </figure>
      <t>Note that H2's wimse-req-digest (<tt>:d1a...=:</tt>) equals H1's Content-Digest in the
first message: this is the continuity link that ties the two hops together.</t>
      <t>The destination verifies the single Signature-Aggregate value against
both Signature-Input entries and their WIT keys, and checks that H2's
wimse-req-digest equals H1's Content-Digest.</t>
    </section>
    <section anchor="agility">
      <name>Algorithm Agility</name>
      <t>This document does not depend on any particular aggregate signature algorithm. The
signature algorithm is carried in each hop's WIT (<tt>cnf.jwk.alg</tt>), as
in <xref target="I-D.ietf-wimse-http-signature"/>, and all hops in a chain use the same
algorithm. Any algorithm that aggregates signatures over distinct messages under
distinct keys can be used, consistent with <xref target="RFC7696"/>.</t>
      <t>Algorithm agility does not mean a verifier accepts whatever algorithm a
hop presents. Each verifier applies a policy of acceptable algorithms and rejects a
hop whose algorithm falls outside it, even if the signature verifies. The algorithm
in the WIT records what a hop used; the policy decides what is acceptable. Without
such a policy, agility becomes a downgrade path.</t>
      <t>At the time of writing, the mechanism can be instantiated with BLS,
specified in the BLS Signatures document (<xref target="I-D.irtf-cfrg-bls-signature"/>); its algorithm
identifier for use in a WIT will be defined in a separate specification.</t>
      <t>BLS is not post-quantum secure. Post-quantum aggregation is an active area of research,
including work on aggregating Falcon signatures (<xref target="FALCON-LABRADOR"/>), and any such scheme
can be used when it matures, without changing this protocol.</t>
      <t>Without an aggregate-capable algorithm, for example in a post-quantum deployment
(ML-DSA does not aggregate), a chain falls back to individual per-hop post-quantum
signatures. Integrity then rests on the per-hop request and response digests, each hop
recording what it received and what it forwarded: they catch removal of a hop
that changed the request or response, but not one that did not, which is what
the aggregate protects.</t>
    </section>
    <section anchor="trade-offs">
      <name>Trade-offs</name>
      <t>Aggregation verifies the chain as a whole. This is what makes it non-strippable
(<xref target="integrity"/>), but it also means a single bad signature makes the whole chain
fail to verify, and the verifier cannot tell which hop was at fault. A faulty hop
can therefore deny service to the chain.</t>
      <t>The benefit is that the chain carries a single aggregate value instead of every
hop's signature, so its size does not grow with the length of the chain.
Individual signatures carry every hop's signature; only aggregation
avoids this. The saving is largest for long chains and for post-quantum signatures,
whose signatures are large.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Chain integrity relies on the non-removability of the aggregate (<xref target="integrity"/>) and
on the initiator being identified by its WIT: an attacker can neither remove an
interior hop nor re-originate the chain as a permitted initiator. Because each hop
verifies the chain it received before forwarding it, tampering is detected at the
next honest hop, not only at the destination.</t>
      <t>The request digests of <xref target="lineage"/> provide attributability, not correctness. They
record which hop changed the request from a given input to a given output, and
reject a change no hop signed for, but they do not judge whether a change was
legitimate. A hop can change content maliciously and still produce a valid record;
the change is attributable to that hop.</t>
      <t>The algorithm each hop uses is carried in its WIT, so a verifier learns
what was used but not what should have been used. Because the path is dynamic, the
expected algorithm for a given hop is not known in advance and cannot be checked
after the fact. An attacker able to forge signature using a traditional algorithm
could present a hop signed with that algorithm in place of a post-quantum one, and
the chain would verify. Once a traditional algorithm is broken this cannot be
detected; it is prevented only by policy. A post-quantum deployment excludes
traditional algorithms from the acceptable set.</t>
      <t>A chain is only as strong as the weakest algorithm in it, whether the
hops sign individually or their signatures are aggregated. A single hop signing with
a broken or traditional algorithm lets an attacker substitute that hop's
contribution. With individual signatures, the hops must use algorithms of comparable
strength, though not necessarily the same algorithm: two post-quantum algorithms of
equal strength are acceptable. Aggregation adds a further constraint, because
signatures combine only within one algorithm: every hop uses the same algorithm.</t>
      <t>These protections apply to the response only if the response is signed along the
chain (<xref target="responses"/>). If it is not, a response can be dropped or altered without
detection.</t>
      <t>The mechanism proves which hops signed, not that every expected hop was included. A
hop can deliver or forward the request without involving a further hop; because the
path is dynamic, the destination does not know which hops to expect, so such a
bypass cannot be detected. Requiring a particular hop to be present is a matter of
authorization and is out of scope.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Every hop presents its WIT, which identifies the workload, so the complete set of
workloads in a chain, and the order in which they signed, is visible to the
destination and to every party on the path. The request digests further reveal that
the request was transformed at each hop and link each hop's input to its output.
Together these expose the structure of a delegation: which workloads participated,
in what order, and where the request changed.</t>
      <t>This exposure is inherent to the mechanism. Chain integrity requires each hop to be
identified by its WIT, so the participating identities cannot be hidden while still
verifying the chain. A deployment can limit only what each WIT reveals about its
workload; however, the delegation chain itself, including the participating workloads,
their order, and the authenticated request transformations must remain visible to
any party that verifies the chain.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="http-signature-metadata-parameters">
        <name>HTTP Signature Metadata Parameters</name>
        <t>IANA is requested to register the following entries in the "HTTP Signature Metadata
Parameters" registry, per the registration template in Section 6.3.1 of
<xref target="RFC9421"/>.</t>
        <section anchor="param-req-digest">
          <name>wimse-req-digest</name>
          <ul spacing="normal">
            <li>
              <t>Name: <tt>wimse-req-digest</tt></t>
            </li>
            <li>
              <t>Description: on request signatures, the digest of the request as received by the
signing hop (its input digest), used to establish request transformation lineage
across a delegation chain. A distinguished origin value indicates the initiator.</t>
            </li>
            <li>
              <t>Reference: RFC XXXX, <xref target="lineage"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="param-resp-digest">
          <name>wimse-resp-digest</name>
          <ul spacing="normal">
            <li>
              <t>Name: <tt>wimse-resp-digest</tt></t>
            </li>
            <li>
              <t>Description: on response signatures, the digest of the response as received by the
signing hop from downstream (its response input digest), used to establish
response transformation lineage across a delegation chain. A distinguished origin
value indicates the initiator of the response.</t>
            </li>
            <li>
              <t>Reference: RFC XXXX, <xref target="responses"/>.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="http-fields">
        <name>HTTP Fields</name>
        <t>IANA is requested to register the following in the "Hypertext Transfer Protocol
(HTTP) Field Name" registry:</t>
        <ul spacing="normal">
          <li>
            <t>Field Name: Signature-Aggregate</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Structured Type: Item</t>
          </li>
          <li>
            <t>Reference: RFC XXXX, <xref target="integrity"/></t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC9530">
          <front>
            <title>Digest Fields</title>
            <author fullname="R. Polli" initials="R." surname="Polli"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document defines HTTP fields that support integrity digests. The Content-Digest field can be used for the integrity of HTTP message content. The Repr-Digest field can be used for the integrity of HTTP representations. Want-Content-Digest and Want-Repr-Digest can be used to indicate a sender's interest and preferences for receiving the respective Integrity fields.</t>
              <t>This document obsoletes RFC 3230 and the Digest and Want-Digest HTTP fields.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9530"/>
          <seriesInfo name="DOI" value="10.17487/RFC9530"/>
        </reference>
        <reference anchor="RFC7696">
          <front>
            <title>Guidelines for Cryptographic Algorithm Agility and Selecting Mandatory-to-Implement Algorithms</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2015"/>
            <abstract>
              <t>Many IETF protocols use cryptographic algorithms to provide confidentiality, integrity, authentication, or digital signature. Communicating peers must support a common set of cryptographic algorithms for these mechanisms to work properly. This memo provides guidelines to ensure that protocols have the ability to migrate from one mandatory-to-implement algorithm suite to another over time.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="201"/>
          <seriesInfo name="RFC" value="7696"/>
          <seriesInfo name="DOI" value="10.17487/RFC7696"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-workload-creds">
          <front>
            <title>WIMSE Workload Credentials</title>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="2" month="July" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones up to complex multi-service, multi-cloud, multi-
   tenant deployments.

   This document defines the credentials that workloads use to represent
   their identity.  They can be used in various protocols to
   authenticate workloads to each other.  To use these credentials,
   workloads must provide proof of possession of the associated private
   key material, which is covered in other documents.  This document
   focuses on the credentials alone, independent of the proof-of-
   possession mechanism.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-workload-creds-02"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-http-signature">
          <front>
            <title>WIMSE Workload-to-Workload Authentication with HTTP Signatures</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <date day="4" month="August" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones to complex multi-service, multi-cloud, multi-tenant
   deployments.  This document defines one of the mechanisms to provide
   workload authentication, using HTTP Signatures.  While only
   applicable to HTTP traffic, the protocol provides end-to-end
   protection of requests (and optionally, responses), even when service
   traffic is not end-to-end encrypted, that is, when TLS proxies and
   load balancers are used.  Authentication is based on the Workload
   Identity Token (WIT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-http-signature-06"/>
        </reference>
        <reference anchor="I-D.irtf-cfrg-bls-signature">
          <front>
            <title>BLS Signatures</title>
            <author fullname="Dan Boneh" initials="D." surname="Boneh">
              <organization>Stanford University</organization>
            </author>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Yubico</organization>
            </author>
            <author fullname="Sergey Gorbunov" initials="S." surname="Gorbunov">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Riad S. Wahby" initials="R. S." surname="Wahby">
              <organization>Carnegie Mellon University</organization>
            </author>
            <author fullname="Hoeteck Wee" initials="H." surname="Wee">
              <organization>NTT Research and ENS, Paris</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <author fullname="Zhenfei Zhang" initials="Z." surname="Zhang">
              <organization>Algorand</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   BLS is a digital signature scheme with aggregation properties.  Given
   set of signatures (signature_1, ..., signature_n) anyone can produce
   an aggregated signature.  Aggregation can also be done on secret keys
   and public keys.  Furthermore, the BLS signature scheme is
   deterministic, non-malleable, and efficient.  Its simplicity and
   cryptographic properties allows it to be useful in a variety of use-
   cases, specifically when minimal storage space or bandwidth are
   required.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-bls-signature-07"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-wimse-arch">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of the Bundeswehr Munich</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as
   software executing for a specific purpose, potentially comprising one
   or more running instances.  This document discusses an architecture
   for designing and standardizing protocols and payloads for conveying
   workload identity and security context information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-08"/>
        </reference>
        <reference anchor="FALCON-LABRADOR" target="https://eprint.iacr.org/2024/311">
          <front>
            <title>Aggregating Falcon Signatures with LaBRADOR</title>
            <author initials="M. A." surname="Aardal" fullname="M. A. Aardal">
              <organization/>
            </author>
            <author initials="D. F." surname="Aranha" fullname="D. F. Aranha">
              <organization/>
            </author>
            <author initials="K." surname="Boudgoust" fullname="K. Boudgoust">
              <organization/>
            </author>
            <author initials="S." surname="Kolby" fullname="S. Kolby">
              <organization/>
            </author>
            <author initials="A." surname="Takahashi" fullname="A. Takahashi">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <refcontent>CRYPTO 2024, IACR ePrint 2024/311</refcontent>
        </reference>
      </references>
    </references>
    <?line 546?>

<section anchor="rationale">
      <name>What the Aggregate Adds Over Per-Hop Digests</name>
      <t>The request digests (<xref target="lineage"/>) already detect removal of a hop that
changed the request: with that hop gone, the recorded input and output digests of
the remaining hops no longer line up. The aggregate adds one thing on top. It also
detects removal of a hop that signed but did not change the request, for example a
gateway that forwards the body unchanged. The examples below use a three-hop chain
H1, H2, H3 in which H2 forwards the request unchanged.</t>
      <t>As in <xref target="fig-agg"/>, m_i is the message hop i signs, s_i is its signature, and k_i is
its public key, taken from its WIT.</t>
      <t>With individual signatures and the digests, the pass-through hop can be stripped,
because removing it keeps the digests aligned:</t>
      <artwork type="ascii-art"><![CDATA[
  H1  Content-Digest=A  req-digest=origin
  H2  Content-Digest=A  req-digest=A      (forwards unchanged)
  H3  Content-Digest=B  req-digest=A

  Attacker strips H2 and presents H1 -> H3:
    H3.req-digest=A equals H1.Content-Digest=A, continuity holds
    s1 and s3 still verify on their own
    => accepted; H2 is erased
]]></artwork>
      <t>With the aggregate, the same removal fails, because H2's signature cannot be taken
out of the combined value:</t>
      <artwork type="ascii-art"><![CDATA[
  Aggregate  S = s1 + s2 + s3

  Attacker strips H2 and claims the chain is H1 -> H3:
    it needs  s1 + s3  =  S - s2
    but s2 was never on the wire, so it cannot form it
    => rejected
]]></artwork>
      <t>Aggregation is also smaller: individual signatures grow with the length of the
chain, while an aggregate is a single signature regardless of length.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document builds on the WIMSE Workload Credentials and HTTP Signature drafts.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
