Re: [dtn-security] Updated SBSP Document - Canonicalization of Extension Blocks

"Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <> Mon, 02 June 2014 18:01 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 425DA1A0260 for <>; Mon, 2 Jun 2014 11:01:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.551
X-Spam-Status: No, score=-2.551 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RP_MATCHES_RCVD=-0.651, SPF_PASS=-0.001] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Lbp2JpHsEpGO for <>; Mon, 2 Jun 2014 11:01:15 -0700 (PDT)
Received: from ( [IPv6:2001:4d0:a302:1100::101]) by (Postfix) with ESMTP id 2D26D1A025B for <>; Mon, 2 Jun 2014 11:01:15 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id A8402D0503; Mon, 2 Jun 2014 12:55:28 -0500 (CDT)
Received: from ( []) by (8.14.5/8.14.5) with ESMTP id s52I17Fs008774; Mon, 2 Jun 2014 13:01:07 -0500
Received: from ([]) by ([]) with mapi id 14.03.0174.001; Mon, 2 Jun 2014 13:01:07 -0500
From: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <>
To: "Burleigh, Scott C (JPL-312G)[Jet Propulsion Laboratory]" <>, "Birrane, Edward J." <>, "" <>
Thread-Topic: Updated SBSP Document - Canonicalization of Extension Blocks
Thread-Index: Ac9+iuEjMG+dNHBvSEOuNdHOvLFJHg==
Date: Mon, 2 Jun 2014 18:01:06 +0000
Message-ID: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
Content-Type: multipart/alternative; boundary="_000_94CFB3711B4CAE4DBFC5BEB3374BF0C60D8E85NDMSMBX404ndcnasa_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.12.52, 1.0.14, 0.0.0000 definitions=2014-06-02_02:2014-06-02,2014-06-02,1970-01-01 signatures=0
Subject: Re: [dtn-security] Updated SBSP Document - Canonicalization of Extension Blocks
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "The Delay-Tolerant Networking Research Group \(DTNRG\) - Security." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 02 Jun 2014 18:01:19 -0000

[Page 24] Extension Block Canonicalization
Endpoint ID references in blocks are canonicalized using the de-
referenced text form in place of the reference pair.  The reference
count is not included, nor is the length of the endpoint ID text.
The EID reference is, therefore, canonicalized as <scheme>:<SSP>,
which includes the ":" character.
·         Need to include a statement to the effect:
o    Artificial EIDs as defined in this document (ssp reference is 0x00) must be skipped and are not included in the canonicalization.

Ø  Right, the AEID's offsets don't reference text in the dictionary.  Good catch!

 [Page 24] Extension Block Canonicalization
The block-length is canonicalized as its unpacked SDNV value.  If the
data to be canonicalized is less than the complete, original block
data, this field contains the size of the data being canonicalized
(the "effective block") rather than the actual size of the block.
·         Section (Primary Block Canonicalization) details the length fields as 4 byte values and effectively reserves the term "unpacked SDNV value" to mean the 8 byte value. I recommend using the same convention here.
o    Personally, I would specify all SDNV values canonicalized as 8 byte values and be done with it
·         Add a statement to the effect:
o    The entirety or portion(s) of the block body data are canonicalized as is.

Ø  I agree about canonicalizing all SDNVs as 8-byte values.  FWIW, I think the canonicalization in bundle security protocol is a major pain in the neck.  Is the mutability of blocks - the need to exclude mutable fields from hash computations - the main reason for it?  Is there no way to simplify?

[Page 23] Payload Block Canonicalization
When canonicalizing the payload block, the block processing control
flags value used for canonicalization is the unpacked SDNV value with
reserved and mutable bits masked to zero.  The unpacked value is
ANDed with mask 0x0000 0000 0000 0077 to zero reserved bits and the
"last block" bit.  The "last block" bit is ignored because BABs and
other security blocks MAY be added for some parts of the journey but
not others, so the setting of this bit might change from hop to hop.

Payload blocks are canonicalized as-is, with the exception that, in
some instances, only a portion of the payload data is to be
protected.  In such a case, only those bytes are included in the
canonical form, and additional cipher suite parameters are required
to specify which part of the payload is protected, as discussed
further below.
·         The processing control flags are pulled out and masked so the Payload block can no longer be considered canonicalized "as-is".
·         A Payload Block is the same underlying format as an Extension Block with the restriction that the 'block contains an EID-reference field' is never set and it should follow the same canonicalization methodology as that of the Extension Block
o    I propose a single "Non-Primary Block Canonicalization" section based on the finalized version of the Extension Block Canonicalization

Ø  Again I complain about canonicalization.

I think the major issue is the dictionary, since it can be modified even if the actual eid's in the block are stable.  The flags are straightforward.  In BSP, there's also a big issue with tail chasing when a PIB block is required to include chunks of itself in it's own hash.  IIRC, SBSP avoids that entirely.

>>           Which is a major reason that I want to get rid of the dictionary altogether in "RFC5050bis".


·         Could the processing flags be ignored? Ultimately, either the block makes it to the destination or it does not. If a changed flag did not prevent it getting there then would you want to discard the block or bundle if that truly was the only change?

·         The length field could be left out as a change in it should be detected in the hash of the block data

·         I don't see a simplification of the dictionary issue as-is either; although, the separating semicolons are not really needed.