[dtn] Re: Comments on draft-ietf-dtn-bpsec-cose-15 Section 5.11: a related cascade-ordering hazard

"Sipos, Brian J." <Brian.Sipos@jhuapl.edu> Thu, 28 May 2026 13:42 UTC

Return-Path: <Brian.Sipos@jhuapl.edu>
X-Original-To: dtn@mail2.ietf.org
Delivered-To: dtn@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 2415BF6A88AE; Thu, 28 May 2026 06:42:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1779975729; bh=0NB26zMk/qFBUABH27DocCZLmGu7BJ6Aakw2DsZkNwg=; h=From:To:CC:Subject:Date:References:In-Reply-To; b=RfH9IQssZItPHnyGj5/zhELkwSo6dzEU4qx7nCC98FLncMves+wZrfM5xkSE7We5F N3fdYOB2oM+3LJnFaUbPQoBKmxdVYeMghjgi1Mdj+F4cXlsV381zMsmSEbR0RXP5W3 SReAZLJv3mP90fhSg6VitYX2ppGRHHMTIUGfZ6q4=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=jhuapl.edu
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id P6g7pSLSG94J; Thu, 28 May 2026 06:42:08 -0700 (PDT)
Received: from aplegw03.jhuapl.edu (aplegw03.jhuapl.edu [128.244.208.131]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id E8AEBF6A87D3; Thu, 28 May 2026 06:41:52 -0700 (PDT)
Received: from pps.filterd (aplegw03.jhuapl.edu [127.0.0.1]) by aplegw03.jhuapl.edu (8.18.1.7/8.18.1.7) with ESMTP id 64SDfkkI160451; Thu, 28 May 2026 09:41:46 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jhuapl.edu; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=JHUAPL2024; bh=aeGJUpnooT4iR/0LK+OSwDN /ytUwNF7o4sSEhSJU/hw=; b=b6l/7aArxKs2bnklT3peFhEu3us+bi6SDsuk76M sCMpEewgi4VZmW6ckNAPfk9n+GsY0RzZfsvw0UiXjUvWXlT5CTnLv9BTH/LsLKQJ vVC0EtTQaUAx+h/CwuKOJcZ1uPCIlkx/IgknAmspc0M9IFJgq91PCSmapTifx3uC HfbuUIpOc10dwYb8ztUhfZLzZWVktRNDXdd4X5fL0zG1GykITkRxx90ht5lxLrHp rcp5PmloK5MbidlFXF8cJHT9gO5pqnsNstEAmhqkpGczxBXoBvuqeQYgazO/0wfT YknbhvlYrYS/aSzu+moP+3hT3PqZTBIIUTYHDB8zVw6QFHg==
Received: from aplex30.dom1.jhuapl.edu (aplex30.dom1.jhuapl.edu [10.114.162.2]) by aplegw03.jhuapl.edu (PPS) with ESMTPS id 4ebtd9e4h4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 28 May 2026 09:41:46 -0400 (EDT)
Received: from aplex39.dom1.jhuapl.edu (10.114.162.26) by aplex30.dom1.jhuapl.edu (10.114.162.2) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.35; Thu, 28 May 2026 09:41:46 -0400
Received: from aplex39.dom1.jhuapl.edu ([fe80::45d4:6ccc:c2ee:2a03]) by aplex39.dom1.jhuapl.edu ([fe80::45d4:6ccc:c2ee:2a03%9]) with mapi id 15.02.2562.035; Thu, 28 May 2026 09:41:46 -0400
From: "Sipos, Brian J." <Brian.Sipos@jhuapl.edu>
To: Rick Taylor <rick@tropicalstormsoftware.com>, "dtn@ietf.org" <dtn@ietf.org>
Thread-Topic: Comments on draft-ietf-dtn-bpsec-cose-15 Section 5.11: a related cascade-ordering hazard
Thread-Index: AdzqtKySniY/018KQ9C9nwJtLdlyfQDIx/pg
Date: Thu, 28 May 2026 13:41:45 +0000
Message-ID: <f760dda6dc164f208c58f93a142016c4@jhuapl.edu>
References: <82fc531f-62fd-4e50-a404-ed551e8087bc@email.android.com>
In-Reply-To: <82fc531f-62fd-4e50-a404-ed551e8087bc@email.android.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [10.114.162.19]
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="SHA1"; boundary="----=_NextPart_000_00A7_01DCEE86.31F2B410"
MIME-Version: 1.0
X-CrossPremisesHeadersFilteredBySendConnector: aplex30.dom1.jhuapl.edu
X-OrganizationHeadersPreserved: aplex30.dom1.jhuapl.edu
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-05-28_03,2026-05-28_02,2025-10-01_01
Message-ID-Hash: 6AP3WRYCH2K4KSL7QCPEUMUUOPDR5KN5
X-Message-ID-Hash: 6AP3WRYCH2K4KSL7QCPEUMUUOPDR5KN5
X-MailFrom: Brian.Sipos@jhuapl.edu
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-dtn.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: "draft-ietf-dtn-bpsec-cose@ietf.org" <draft-ietf-dtn-bpsec-cose@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [dtn] Re: Comments on draft-ietf-dtn-bpsec-cose-15 Section 5.11: a related cascade-ordering hazard
List-Id: "Delay Tolerant Networking (DTN) discussion list at the IETF." <dtn.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/dtn/eq_MK9BjmF9za2eKoytxc_zJLrU>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dtn>
List-Help: <mailto:dtn-request@ietf.org?subject=help>
List-Owner: <mailto:dtn-owner@ietf.org>
List-Post: <mailto:dtn@ietf.org>
List-Subscribe: <mailto:dtn-join@ietf.org>
List-Unsubscribe: <mailto:dtn-leave@ietf.org>

Rick,

I agree that there are many possible situations for using AAD Scope which do not make operational sense. I would rather that the document explain the consequences of doing something ‘bad’ rather than try to examine all the possible ways that ‘bad’ can manifest. But for specific easy-to-check cases like this I see the value in explaining and excluding them separately.

 

I am going to manage your feedback (in the earlier email also) as separate issues/PRs on the draft repository, eventually viewable in [1]. There are already some changes not yet in the datatracker, visible in [2], which include the addition of a new “Operational Considerations” section 5 which could be updated to address some of these issues.

 

Brian S.

 

[1] https://briansipos.github.io/dtn-bpsec-cose/draft-ietf-dtn-bpsec-cose.html

[2] https://author-tools.ietf.org/diff?doc_1=draft-ietf-dtn-bpsec-cose <https://author-tools.ietf.org/diff?doc_1=draft-ietf-dtn-bpsec-cose&url_2=https://briansipos.github.io/dtn-bpsec-cose/draft-ietf-dtn-bpsec-cose.txt> &url_2=https://briansipos.github.io/dtn-bpsec-cose/draft-ietf-dtn-bpsec-cose.txt

 

 

From: Rick Taylor <rick@tropicalstormsoftware.com> 
Sent: Saturday, May 23, 2026 9:04 AM
To: dtn@ietf.org
Cc: draft-ietf-dtn-bpsec-cose@ietf.org
Subject: [EXT] [dtn] Re: Comments on draft-ietf-dtn-bpsec-cose-15 Section 5.11: a related cascade-ordering hazard

 


APL external email warning: Verify sender forwardingalgorithm@ietf.org <mailto:forwardingalgorithm@ietf.org>  before clicking links or attachments

 

Hi all, Brian,

 

A related issue to my earlier mail on Section 5.11 -- it surfaced while

working through the cascading-block-delete path in Hardy. This one

feels like a foot-gun for any implementation doing cascading edits to

BIBs or BCBs, which is more or less every meaningful BPA.

 

 

The hazard

 

Section 2.2.2 allows AAD Scope to reference any block in the bundle via

positive integer keys, including other security blocks (BIB or BCB).

Step 3b of the AAD construction in Section 2.5.1 then pulls in the referenced

block's BTSD when the AAD-btsd flag is set.

 

If one security block's AAD covers another security block's BTSD, and

the latter is re-encrypted (or re-signed) for any reason -- including

the perfectly legitimate cascade-delete path where dropping a target

forces re-encryption of the covering BCB with a fresh IV -- then the

former's AAD bytes change and its verification breaks.

 

Concretely: BCB X has AAD Scope referencing BCB Y with AAD-btsd. The

cascade drops a target covered by BCB Y, which forces re-encryption of

BCB Y (fresh IV -> new BTSD). BCB X is now broken downstream, even

though we have not touched X directly.

 

For implementations doing cascading edits, this creates an ordering

constraint with no obvious way to satisfy it short of building a

dependency graph from AAD Scope references, topologically sorting, and

re-encrypting in dependency order -- with cycle detection and an error

path for ill-formed bundles. That is a lot of machinery for a feature

whose use case is not obvious to me.

 

 

Use case unclear

 

I cannot think of a legitimate reason for one security block to

AAD-cover another security block's BTSD. The metadata case is

different -- binding to the presence and identity of another security

block via AAD-metadata is plausible and is also safe, since metadata

is stable across security operation regeneration. It is specifically

the BTSD case that creates the ordering hazard.

 

If anyone on the list has a use case in mind I am keen to hear it;

otherwise the simplest fix is to disallow it.

 

 

Relationship to existing Section 5.11 text

 

Section 5.11's second SHALL NOT prohibits AAD-btsd references to blocks

"expected to be modified by intermediate nodes during the lifetime of

the containing security operation." This implicitly covers blocks like

Hop Count and Bundle Age -- blocks designed to be modified in transit.

 

Security blocks are not in that category. They are not designed to be

modified in transit. But their BTSD nonetheless changes as a side

effect of normal BPA operations (cascade-delete re-encryption,

re-signing following target-set changes). The existing text doesn't

quite catch this, because the cascade-induced change isn't

"modification in transit" in the conventional sense -- it's an

endogenous consequence of forwarding decisions.

 

A small additional rule makes the prohibition explicit.

 

 

Suggested text, alongside the additions in my earlier mail to Section 5.11:

 

   The AAD Scope parameter SHALL NOT reference any BIB or BCB

   block via a positive integer key with the AAD-btsd flag set.

   References to other security blocks with the AAD-metadata flag

   only are permitted, as block metadata is stable across security

   operation regeneration (whereas BTSD content changes whenever

   the referenced block is re-signed or re-encrypted, including as

   a side effect of cascading block delete).

 

   A security verifier or acceptor that detects an AAD Scope

   reference to a BIB or BCB block with the AAD-btsd flag set

   SHOULD log the violation, and MAY refuse the bundle in

   accordance with local policy.

 

 

For what it's worth on the implementation side: Hardy will enforce

this as part of the same defensive-check pass discussed in the

previous mail. The cascade machinery becomes substantially simpler if

security-block-to-security-block BTSD AAD coverage is ruled out -- no

dependency graph, no topological sort, no cycle detection, and BIBs

and BCBs can be re-encrypted in any order.

 

Cheers,

Rick