Subject: [dtn-security] Updated SBSP Document

From: "Birrane, Edward J." <[email-masked]>
Date: Wed, 28 May 2014 09:40:06 -0400

Good morning.

I've released a new version of the Streamlined Bundle Security Protocol (SBSP) document (see information below).

This change incorporates comments received to date, including:

- Minor spelling/grammar changes and text cleanup.
- Expanded discussion on extension block identification (Section 2.1)
- Clarified that a BIB may not be added to sign an encrypted block. (Section 2.7)
- Clarified block processing order in Section 2.7.
- Clarified BIB processing (Section 3.3.3)
- Simplified bundle fragmentation discussion (Section 3.4)
- Clarified interaction of authentication and reactive fragmentation.
- Updated policy considerations.

I am cross-posting to dtn-interest and dtn-security as an announcement, but would ask that technical discussion occur on dtn-security.

-Ed

A New Internet-Draft is available from the on-line Internet-Drafts directories.
 This draft is a work item of the Delay-Tolerant Networking Research Group Working Group of the IETF.

        Title           : Streamlined Bundle Security Protocol Specification
        Author          : Edward J. Birrane
        Filename        : draft-irtf-dtnrg-sbsp-01.txt
        Pages           : 34
        Date            : 2014-05-27

Abstract:
   This document defines a streamlined bundle security protocol, which
   provides data authentication, integrity, and confidentiality services
   for the Bundle Protocol.  Capabilities are provided to protect the
   bundle payload, and additional data that may be included within the
   bundle, along a single path through a network.

The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-irtf-dtnrg-sbsp/

There's also a htmlized version available at:
http://tools.ietf.org/html/draft-irtf-dtnrg-sbsp-01

A diff from the previous version is available at:
http://www.ietf.org/rfcdiff?url2=draft-irtf-dtnrg-sbsp-01

---
Ed Birrane
Principal Professional Staff, Space Department
Johns Hopkins Applied Physics Laboratory
(W) 443-778-7423 / (F) 443-228-3839

---

From: "Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]" <[email-masked]>
Date: Thu, 29 May 2014 19:09:02 +0000

Ed,

Good work - the SBSP spec continues to evolve nicely. I'll kick off the discussions with my comments below.

Cheers,

DZ

[Page 12] 2.4 Bundle Authentication Block
The security-target MUST be the entire bundle, which MUST be
represented by a <block type><occurrence number> of <0x00><0x00>.
*         Per 3.4 Bundle Fragmentation and Reassembly, bundle authentication may be applied to bundle fragments as well as non-fragmented bundles.
*         If a bundle fragment is received that has a BAB, there is no way to determine if the BAB applies to the bundle fragment or if it applies to an entire bundle that was later fragmented by a non-security-aware BA.
o    I propose that a <block type><occurrence number> of <0x00><payload frag length> indicate that the BAB applies to a bundle fragment
*         If such a bundle fragment is further fragmented by a non-security-aware BA then the <payload frag length> can be used to determine that the original fragmented bundle must be reassembled before authentication is checked because it will not match the length field in the payload block.
o    Some discussion may be desirable in section 3.4 as well as 2.4 if accepted

[Page 14] 2.6 Block Confidentiality Block
The block processing control flags value can be set to whatever
values are required by local policy, except that a Lone BCB or
First BCB MUST have the "replicate in every fragment" flag set.
This indicates to a receiving node that the payload portion in
each fragment represents cipher-text.
*         The intent here is only if the target of the Lone BCB or First BCB is the payload block which would need to be added if this is kept as a requirement.
*         I think this requirement should be removed or at least reduced to a "MAY"
1.       It assumes that the Lone or First BCB must be prior to the payload block which is not a specific requirement and is not necessary in any case for SBSP
2.       A BCB block could be quite large and add a lot of bandwidth overhead if included in every fragment
3.       I do not see a benefit gained by including the block in every fragment
                                       i.            Even the destination node likely cannot decrypt any individual fragment except the first one and  it probably would only decrypt a partial bundle as a last resort or forensic function if the entire bundle was not received before expiration
                                     ii.            Intermediate nodes shouldn't generally be poking around in bundle payloads anyway and no need to provide additional clues as to whether a fragment payload is encrypted or a bunch of binary values - keep the bad guys guessing and wasting CPU cycles if possible
                                    iii.            BSP includes this requirement - have any of the implementations found a need or benefit for this and would it still apply in context of the SBSP?

[Page 24] 3.1.2.3 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.

[Page 24] 3.1.2.3 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 3.1.2.1 (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.

[Page 23] 3.1.2.2 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

[Page 26] 3.3.2 Receiving BCB Blocks
If the relevant parts of an encrypted payload cannot be decrypted
(i.e., the decryption key cannot be deduced or decryption fails),
then the bundle MUST be discarded and processed no further; in this
case, a bundle deletion status report (see [RFC5050]) indicating the
decryption failure MAY be generated.
*         Does a new deletion reason code need to be defined?

-----Original Message-----
From: dtn-interest [mailto:[email-masked]] On Behalf Of Birrane, Edward J.
Sent: Wednesday, May 28, 2014 8:40 AM
To: [email-masked]; [email-masked]
Subject: [dtn-interest] Updated SBSP Document

Good morning.

-Ed

        Pages           : 34

        Date            : 2014-05-27

Abstract:

---

Ed Birrane

Principal Professional Staff, Space Department Johns Hopkins Applied Physics Laboratory

_______________________________________________

dtn-interest mailing list

[email-masked]<mailto:[email-masked]>

https://www.irtf.org/mailman/listinfo/dtn-interest

---

From: "Burleigh, Scott C (312G)" <[email-masked]>
Date: Fri, 30 May 2014 19:17:04 +0000

A couple of remarks on David's comments, in-line below.

Scott

From: dtn-security [mailto:[email-masked]] On Behalf Of Zoller, David A. (MSFC-EO50)[HOSC SERVICES CONTRACT]
Sent: Thursday, May 29, 2014 12:09 PM
To: Birrane, Edward J.; [email-masked]
Subject: Re: [dtn-security] Updated SBSP Document

Ed,

Cheers,

DZ

[Page 12] 2.4 Bundle Authentication Block
The security-target MUST be the entire bundle, which MUST be
represented by a <block type><occurrence number> of <0x00><0x00>.
·         Per 3.4 Bundle Fragmentation and Reassembly, bundle authentication may be applied to bundle fragments as well as non-fragmented bundles.
·         If a bundle fragment is received that has a BAB, there is no way to determine if the BAB applies to the bundle fragment or if it applies to an entire bundle that was later fragmented by a non-security-aware BA.
o    I propose that a <block type><occurrence number> of <0x00><payload frag length> indicate that the BAB applies to a bundle fragment
·         If such a bundle fragment is further fragmented by a non-security-aware BA then the <payload frag length> can be used to determine that the original fragmented bundle must be reassembled before authentication is checked because it will not match the length field in the payload block.
o    Some discussion may be desirable in section 3.4 as well as 2.4 if accepted

Ø  When a BAB is attached to a bundle that is a fragment, the bundle that it applies to is always that fragment, never the bundle that carried the original payload (of which the current bundle's payload is a fragment).  Since BABs are not end-to-end, the BAB for an original un-fragmented bundle will never be carried forward in any fragments generated from that bundle (see the last paragraph of 3.3.1), so there's no ambiguity.  But this does bring up an important point: the block processing control flags of the BAB must always have the "replicate in every fragment" flag set to 0.

·         The intent here is only if the target of the Lone BCB or First BCB is the payload block which would need to be added if this is kept as a requirement.
·         I think this requirement should be removed or at least reduced to a "MAY"

Ø  I think this a good point.  Since all decryption should only happen at the bundle destination, which is where all the fragments are going to have to end up, why not forward all BCBs (for all blocks that have them) only with the fragment whose offset is zero?

·         Need to include a statement to the effect:

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

[Page 24] 3.1.2.3 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 3.1.2.1 (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?

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.

·         Does a new deletion reason code need to be defined?

Ø  Good idea.

-----Original Message-----
From: dtn-interest [mailto:[email-masked]] On Behalf Of Birrane, Edward J.
Sent: Wednesday, May 28, 2014 8:40 AM
To: [email-masked]<mailto:[email-masked]>; [email-masked]<mailto:[email-masked]>
Subject: [dtn-interest] Updated SBSP Document

Good morning.

-Ed

        Pages           : 34

        Date            : 2014-05-27

Abstract:

---

Ed Birrane