draft-ietf-dtn-bpsec-03.txt   draft-ietf-dtn-bpsec-04.txt 
Delay-Tolerant Networking E. Birrane Delay-Tolerant Networking E. Birrane
Internet-Draft K. McKeever Internet-Draft K. McKeever
Intended status: Standards Track JHU/APL Intended status: Standards Track JHU/APL
Expires: May 3, 2017 October 30, 2016 Expires: September 13, 2017 March 12, 2017
Bundle Protocol Security Specification Bundle Protocol Security Specification
draft-ietf-dtn-bpsec-03 draft-ietf-dtn-bpsec-04
Abstract Abstract
This document defines a security protocol providing end to end data This document defines a security protocol providing end to end data
integrity and confidentiality services for the Bundle Protocol. integrity and confidentiality services for the Bundle Protocol.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
skipping to change at page 1, line 31 skipping to change at page 1, line 31
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on May 3, 2017. This Internet-Draft will expire on September 13, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Supported Security Services . . . . . . . . . . . . . . . 3 1.2. Supported Security Services . . . . . . . . . . . . . . . 3
1.3. Specification Scope . . . . . . . . . . . . . . . . . . . 4 1.3. Specification Scope . . . . . . . . . . . . . . . . . . . 4
1.4. Related Documents . . . . . . . . . . . . . . . . . . . . 5 1.4. Related Documents . . . . . . . . . . . . . . . . . . . . 5
1.5. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 1.5. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
2. Key Properties . . . . . . . . . . . . . . . . . . . . . . . 7 2. Key Properties . . . . . . . . . . . . . . . . . . . . . . . 6
2.1. Block-Level Granularity . . . . . . . . . . . . . . . . . 7 2.1. Block-Level Granularity . . . . . . . . . . . . . . . . . 6
2.2. Multiple Security Sources . . . . . . . . . . . . . . . . 7 2.2. Multiple Security Sources . . . . . . . . . . . . . . . . 7
2.3. Mixed Security Policy . . . . . . . . . . . . . . . . . . 8 2.3. Mixed Security Policy . . . . . . . . . . . . . . . . . . 7
2.4. User-Selected Ciphersuites . . . . . . . . . . . . . . . 8 2.4. User-Selected Cipher Suites . . . . . . . . . . . . . . . 8
2.5. Deterministic Processing . . . . . . . . . . . . . . . . 9 2.5. Deterministic Processing . . . . . . . . . . . . . . . . 8
3. Security Block Definitions . . . . . . . . . . . . . . . . . 9 3. Security Blocks . . . . . . . . . . . . . . . . . . . . . . . 8
3.1. Block Identification . . . . . . . . . . . . . . . . . . 10 3.1. Block Definitions . . . . . . . . . . . . . . . . . . . . 9
3.2. Block Representation . . . . . . . . . . . . . . . . . . 10 3.2. Uniqueness . . . . . . . . . . . . . . . . . . . . . . . 9
3.3. Block Integrity Block . . . . . . . . . . . . . . . . . . 13 3.3. Target Multiplicity . . . . . . . . . . . . . . . . . . . 10
3.4. Block Confidentiality Block . . . . . . . . . . . . . . . 14 3.4. Target Identification . . . . . . . . . . . . . . . . . . 10
3.5. Block Interactions . . . . . . . . . . . . . . . . . . . 16 3.5. Block Representation . . . . . . . . . . . . . . . . . . 11
3.6. Parameters and Result Fields . . . . . . . . . . . . . . 17 3.6. Abstract Security Block . . . . . . . . . . . . . . . . . 11
3.7. BSP Block Example . . . . . . . . . . . . . . . . . . . . 18 3.7. Block Integrity Block . . . . . . . . . . . . . . . . . . 14
4. Canonical Forms . . . . . . . . . . . . . . . . . . . . . . . 20 3.8. Block Confidentiality Block . . . . . . . . . . . . . . . 15
4.1. Technical Notes . . . . . . . . . . . . . . . . . . . . . 20 3.9. Block Interactions . . . . . . . . . . . . . . . . . . . 16
4.2. Primary Block Canonicalization . . . . . . . . . . . . . 21 3.10. Parameters and Result Types . . . . . . . . . . . . . . . 17
4.3. Non-Primary-Block Canonicalization . . . . . . . . . . . 22 3.11. BSP Block Example . . . . . . . . . . . . . . . . . . . . 20
5. Security Processing . . . . . . . . . . . . . . . . . . . . . 22 4. Canonical Forms . . . . . . . . . . . . . . . . . . . . . . . 22
5.1. Bundles Received from Other Nodes . . . . . . . . . . . . 23 4.1. Technical Notes . . . . . . . . . . . . . . . . . . . . . 22
5.1.1. Receiving BCB Blocks . . . . . . . . . . . . . . . . 23 4.2. Primary Block Canonicalization . . . . . . . . . . . . . 23
5.1.2. Receiving BIB Blocks . . . . . . . . . . . . . . . . 23 4.3. Non-Primary-Block Canonicalization . . . . . . . . . . . 23
5.2. Bundle Fragmentation and Reassembly . . . . . . . . . . . 24 5. Security Processing . . . . . . . . . . . . . . . . . . . . . 24
6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 25 5.1. Bundles Received from Other Nodes . . . . . . . . . . . . 24
7. Policy Considerations . . . . . . . . . . . . . . . . . . . . 25 5.1.1. Receiving BCB Blocks . . . . . . . . . . . . . . . . 24
8. Security Considerations . . . . . . . . . . . . . . . . . . . 26 5.1.2. Receiving BIB Blocks . . . . . . . . . . . . . . . . 25
8.1. Attacker Capabilities and Objectives . . . . . . . . . . 27 5.2. Bundle Fragmentation and Reassembly . . . . . . . . . . . 26
8.2. Attacker Behaviors and BPSec Mitigations . . . . . . . . 28 6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 26
8.2.1. Eavesdropping Attacks . . . . . . . . . . . . . . . . 28 7. Security Policy Considerations . . . . . . . . . . . . . . . 26
8.2.2. Modification Attacks . . . . . . . . . . . . . . . . 28 8. Security Considerations . . . . . . . . . . . . . . . . . . . 27
8.2.3. Topology Attacks . . . . . . . . . . . . . . . . . . 29 8.1. Attacker Capabilities and Objectives . . . . . . . . . . 28
8.2.4. Message Injection . . . . . . . . . . . . . . . . . . 30 8.2. Attacker Behaviors and BPSec Mitigations . . . . . . . . 29
9. Ciphersuite Authorship Considerations . . . . . . . . . . . . 30 8.2.1. Eavesdropping Attacks . . . . . . . . . . . . . . . . 29
10. Defining Other Security Blocks . . . . . . . . . . . . . . . 31 8.2.2. Modification Attacks . . . . . . . . . . . . . . . . 29
11. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . 32 8.2.3. Topology Attacks . . . . . . . . . . . . . . . . . . 31
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 8.2.4. Message Injection . . . . . . . . . . . . . . . . . . 31
12.1. Bundle Block Types . . . . . . . . . . . . . . . . . . . 32 9. Cipher Suite Authorship Considerations . . . . . . . . . . . 32
12.2. Cipher Suite Flags . . . . . . . . . . . . . . . . . . . 32 10. Defining Other Security Blocks . . . . . . . . . . . . . . . 33
12.3. Parameters and Results . . . . . . . . . . . . . . . . . 33 11. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . 34
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
12.1. Bundle Block Types . . . . . . . . . . . . . . . . . . . 34
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 34
13.1. Normative References . . . . . . . . . . . . . . . . . . 34 13.1. Normative References . . . . . . . . . . . . . . . . . . 34
13.2. Informative References . . . . . . . . . . . . . . . . . 34 13.2. Informative References . . . . . . . . . . . . . . . . . 35
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 35 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 35
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35
1. Introduction 1. Introduction
This document defines security features for the Bundle Protocol This document defines security features for the Bundle Protocol (BP)
[BPBIS] intended for use in delay-tolerant networks, in order to [BPBIS]. This BP Security Specification (BPSec) is intended for use
provide Delay-Tolerant Networking (DTN) security services. in Delay Tolerant Networks (DTNs) to provide end-to-end security
services.
1.1. Motivation 1.1. Motivation
The Bundle Protocol is used in DTNs that overlay multiple networks, The Bundle Protocol specification [BPBIS] defines DTN as referring to
some of which may be challenged by limitations such as intermittent "a networking architecture providing communications in and/or through
and possibly unpredictable loss of connectivity, long or variable highly stressed environments" where "BP may be viewed as sitting at
delay, asymmetric data rates, and high error rates. The purpose of the application layer of some number of constituent networks, forming
the Bundle Protocol is to support interoperability across such a store-carry-forward overlay network". The term "stressed"
stressed networks. environment refers to multiple challenging conditions including
intermittent connectivity, large and/or variable delays, asymmetric
data rates, and high bit error rates.
The stressed environment of the underlying networks over which the There is a reasonable expectation that BP may be deployed in such a
Bundle Protocol operates makes it important for the DTN to be way that a portion of the network might become compromised, posing
protected from unauthorized use, and this stressed environment poses the usual security challenges related to confidentiality and
unique challenges for the mechanisms needed to secure the Bundle integrity. However, the stressed nature of the BP operating
Protocol. Furthermore, DTNs may be deployed in environments where a environment imposes unique requirements such that the usual security
portion of the network might become compromised, posing the usual mechanisms to usual security challenges may not apply. For example,
security challenges related to confidentiality and integrity. the store-carry-forward nature of the network may require protecting
data at rest while also preventing unauthorized consumption of
critical resources such as storage space. The heterogeneous nature
of the networks comprising the BP overlay, and/or associated timing,
might prevent the establishment of an end-to-end session to provide a
context for a security service. The partitionability of a DTN might
prevent regular contact with a centralized security oracle (such as a
certificate authority).
An end-to-end security service is needed that operates in all of the
environments where the BP operates.
1.2. Supported Security Services 1.2. Supported Security Services
This specification supports end-to-end integrity and confidentiality BPSec provides end-to-end integrity and confidentiality services for
services associated with BP bundles. BP bundles.
Integrity services ensure data within a bundle are not changed. Data Integrity services ensure data within a bundle are not changed. Data
changes may be caused by processing errors, environmental conditions, changes may be caused by processing errors, environmental conditions,
or intentional manipulation. An integrity service is one that or intentional manipulation. An integrity service is one that
provides sufficient confidence to a data receiver that data has not provides sufficient confidence to a data receiver that data has not
changed since its value was last asserted. changed since its value was last asserted.
Confidentiality services ensure that the values of some data within a Confidentiality services ensure that only authorized receivers can
bundle can only be determined by authorized receivers of the data. view those data within a bundle identified as needing to be private
When a bundle traverses a DTN, many nodes in the network other than amongst the data source and data receivers. A confidentiality
the destination node MAY see the contents of a bundle. A services is one that provides confidence to a data receiver that
confidentiality service allows a destination node to generate data private data was not viewed by other nodes as the bundle traversed
values from otherwise encrypted contents of a bundle. the DTN.
NOTE: Hop-by-hop authentication is NOT a supported security service NOTE: Hop-by-hop authentication is NOT a supported security service
in this specification, for three reasons. in this specification, for three reasons.
1. The term "hop-by-hop" is ambiguous in a BP overlay, as nodes that 1. The term "hop-by-hop" is ambiguous in a BP overlay, as nodes that
are adjacent in the overlay may not be adjacent in physical are adjacent in the overlay may not be adjacent in physical
connectivity. This condition is difficult or impossible to connectivity. This condition is difficult or impossible to
predict in the overlay and therefore makes the concept of hop-by- predict in the overlay and therefore makes the concept of hop-by-
hop authentication difficult or impossible to enforce at the hop authentication difficult or impossible to enforce at the
overlay. overlay.
2. Networks in which BPSec may be deployed may have a mixture of 2. Networks in which BPSec may be deployed may have a mixture of
security-aware and not-security-aware nodes. Hop-by-hop security-aware and not-security-aware nodes. Hop-by-hop
authentication cannot be deployed in a network if adjacent nodes authentication cannot be deployed in a network if adjacent nodes
in the network have different security capabilities. in the network have different security capabilities.
3. Hop-by-hop authentication can be viewed as a special case of data 3. Hop-by-hop authentication can be viewed as a special case of data
integrity. As such, it is possible to develop policy that integrity. As such, a version of authentication can be achieved
provides a version of authentication using the integrity by using the integrity mechanisms defined in this specification.
mechanisms defined in this specification.
1.3. Specification Scope 1.3. Specification Scope
This document describes the Bundle Protocol Security Specification This document defines the security services provided by the BPSec.
(BPSec), which provides security services for blocks within a bundle. This includes the data specification for representing these services
This includes the data specification for individual BP extension as BP extension blocks, and the rules for adding, removing, and
blocks and the processing instructions for those blocks. processing these blocks at various points in the bundle's traversal
of the DTN.
BPSec applies, by definition, only to those nodes that implement it, BPSec applies only to those nodes that implement it, known as
known as "security-aware" nodes. There MAY be other nodes in the DTN "security-aware" nodes. There might be other nodes in the DTN that
that do not implement BPSec. All nodes can interoperate with the do not implement BPSec. While all nodes in a BP overlay can exchange
exception that BPSec security operations can only happen at BPSec bundles, BPSec security operations can only happen at BPSec security-
security-aware nodes. aware nodes.
This specification does not address individual cipher suite This specification does not address individual cipher suite
implementations. The definition and enumeration of cipher suites implementations. Different networking conditions and operational
should be undertaken in separate specification documents. considerations require varying strengths of security mechanism such
that mandating a cipher suite in this specification may result in too
much security for some networks and too little security in others.
The definition and enumeration of cipher suites is assumed to be
undertaken in other, separate specification documents.
This specification does not address the implementation of security This specification does not address the implementation of security
policy and does not provide a security policy for the BPSec. policy and does not provide a security policy for the BPSec. Similar
Security policies are typically based on the nature and capabilities to cipher suites, security policies are based on the nature and
of individual networks and network operational concepts. However, capabilities of individual networks and network operational concepts.
this specification does recommend policy considerations when building This specification does provide policy considerations when building a
a security policy. security policy.
This specification does not address how to combine the BPSec security This specification does not address how to combine the BPSec security
blocks with other protocols, other BP extension blocks, or other best blocks with other protocols, other BP extension blocks, or other best
practices to achieve security in any particular network practices to achieve security in any particular network
implementation. implementation.
1.4. Related Documents 1.4. Related Documents
This document is best read and understood within the context of the This document is best read and understood within the context of the
following other DTN documents: following other DTN documents:
"Delay-Tolerant Networking Architecture" [RFC4838] defines the "Delay-Tolerant Networking Architecture" [RFC4838] defines the
architecture for delay-tolerant networks, but does not discuss architecture for DTNs and identifies certain security assumptions
security at any length. made by existing Internet protocols that are not valid in a DTN.
The DTN Bundle Protocol [BPBIS] defines the format and processing of The Bundle Protocol [BPBIS] defines the format and processing of the
the blocks used to implement the Bundle Protocol, excluding the bundles that both carry the data and the security services operating
security-specific blocks defined here. on those data. This document also defines the extension block format
used to capture BPSec security blocks.
The Bundle Security Protocol [RFC6257] and Streamlind Bundle Security The Bundle Security Protocol [RFC6257] and Streamlined Bundle
Protocol [SBSP] introduce the concepts of security blocks for Security Protocol [SBSP] documents introduced the concepts of BP
security services. BPSec is based off of these documents. security blocks for security services in a DTN. The BPSec is a
continuation and refinement of these documents.
1.5. Terminology 1.5. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
[RFC2119]. [RFC2119].
This section defines those terms whose definition is important to the This section defines terminology either unique to the BPSec or
understanding of concepts within this specification. otherwise necessary for understanding the concepts defined in this
specification.
o Source - the bundle node from which a bundle originates.
o Destination - the bundle node to which a bundle is ultimately
destined.
o Forwarder - the bundle node that forwarded the bundle on its most o Forwarder - any node that transmits a bundle in the DTN. The Node
recent hop. ID of the Bundle Protocol Agent (BPA) that sent the bundle on its
most recent hop.
o Intermediate Receiver, Waypoint, or "Next Hop" - the neighboring o Intermediate Receiver, Waypoint, or "Next Hop" - any node that
bundle node to which a forwarder forwards a bundle. receives a bundle from a Forwarder that is not the Destination.
The Node ID of the BPA at any such node.
o Path - the ordered sequence of nodes through which a bundle passes o Path - the ordered sequence of nodes through which a bundle passes
on its way from source to destination. The path is not on its way from Source to Destination. The path is not
necessarily known by the bundle, or any bundle-aware nodes. necessarily known in advance by the bundle or any BPAs in the DTN.
The application of these terms applied to a sample network topology
is shown in Figure 1. This figure shows four bundle nodes (BN1, BN2,
BN3, BN4) residing above some transport layer(s). Three distinct
transport and network protocols (T1/N1, T2/N2, and T3/N3) are also
shown.
+---------v-| +->>>>>>>>>>v-+ +->>>>>>>>>>v-+ +-^---------+
| BN1 v | | ^ BN2 v | | ^ BN3 v | | ^ BN4 |
+---------v-+ +-^---------v-+ +-^---------v-+ +-^---------+
| T1 v | + ^ T1/T2 v | + ^ T2/T3 v | | ^ T3 |
+---------v-+ +-^---------v-+ +-^---------v + +-^---------+
| N1 v | | ^ N1/N2 v | | ^ N2/N3 v | | ^ N3 |
+---------v-+ +-^---------v + +-^---------v-+ +-^---------+
| >>>>>>>>^ >>>>>>>>>>^ >>>>>>>>^ |
+-----------+ +------------+ +-------------+ +-----------+
| | | |
|<-- An Internet --->| |<--- An Internet --->|
| | | |
Figure 1: Bundle Nodes Sitting Above the Transport Layer.
Consider the case where BN1 originates a bundle that it forwards to
BN2. BN2 forwards the bundle to BN3, and BN3 forwards the bundle to
BN4. BN1 is the source of the bundle and BN4 is the destination of
the bundle. BN1 is the first forwarder, and BN2 is the first
intermediate receiver; BN2 then becomes the forwarder, and BN3 the
intermediate receiver; BN3 then becomes the last forwarder, and BN4
the last intermediate receiver, as well as the destination.
If node BN2 originates a bundle (for example, a bundle status report o Security Block - a BPSec extension block in a bundle.
or a custodial signal), which is then forwarded on to BN3, and then
to BN4, then BN2 is the source of the bundle (as well as being the
first forwarder of the bundle) and BN4 is the destination of the
bundle (as well as being the final intermediate receiver).
The following security-specific terminology is also defined to o Security Operation - the application of a security service to a
clarify security operations in this specifiation. security target, notated as OP(security service, security target).
For example, OP(confidentiality, payload). Every security
operation in a bundle MUST be unique, meaning that a security
service can only be applied to a security target once in a bundle.
A security operation is implemented by a security block.
o Security Service - the security features supported by this o Security Service - the security features supported by this
specification: integrity and confidentiality. specification: integrity and confidentiality.
o Security Source - a bundle node that adds a security block to a o Security Source - a bundle node that adds a security block to a
bundle. bundle.
o Security Target - the block within a bundle that receives a o Security Target - the block within a bundle that receives a
security-service as part of a security-operation. security-service as part of a security-operation.
o Security Block - a BPSec extension block in a bundle. o Source - the node which originates a bundle. The Node ID of the
BPA originating the bundle.
o Security Operation - the application of a security service to a
security target, notated as OP(security service, security target).
For example, OP(confidentiality, payload). Every security
operation in a bundle MUST be unique, meaning that a security
service can only be applied to a security target once in a bundle.
A security operation is implemented by a security block.
2. Key Properties 2. Key Properties
The application of security services in a DTN is a complex endeavor The application of security services in a DTN is a complex endeavor
that must consider physical properties of the network, policies at that must consider physical properties of the network, policies at
each node, and various application security requirements. Rather each node, and various application security requirements. This
than enumerate all potential security implementations in all section identifies and defines the key properties guiding design
potential DTN topologies, this specification defines a set of key decisions for the security services provided by this specification.
properties of a security system. The security primitives outlined in
this document MUST enable the realization of these properties in a
DTN deploying the Bundle Protocol.
2.1. Block-Level Granularity 2.1. Block-Level Granularity
Security services within this specification MUST allow different
blocks within a bundle to have different security services applied to
them. As such, each security block within a bundle MUST be
associated with a specific security operation.
Blocks within a bundle represent different types of information. The Blocks within a bundle represent different types of information. The
primary block contains identification and routing information. The primary block contains identification and routing information. The
payload block carries application data. Extension blocks carry a payload block carries application data. Extension blocks carry a
variety of data that may augment or annotate the payload, or variety of data that may augment or annotate the payload, or
otherwise provide information necessary for the proper processing of otherwise provide information necessary for the proper processing of
a bundle along a path. Therefore, applying a single level and type a bundle along a path. Therefore, applying a single level and type
of security across an entire bundle fails to recognize that blocks in of security across an entire bundle fails to recognize that blocks in
a bundle may represent different types of information with different a bundle may represent different types of information with different
security needs. security needs.
Security services within this specification MUST provide block level For example, a payload block might be encrypted to protect its
granularity where applicable such that different blocks within a contents and an extension block containing summary information
bundle may have different security services applied to them. related to the payload might be integrity signed but unencrypted to
provide waypoints access to payload-related data without providing
For example, within a bundle, a payload might be encrypted to protect access to the payload.
its contents, whereas an extension block containing summary
information related to the payload might be integrity signed but
otherwise unencrypted to provide certain nodes access to payload-
related data without providing access to the payload.
Each security block in a bundle will be associated with a specific
security operation.
2.2. Multiple Security Sources 2.2. Multiple Security Sources
A bundle MAY have multiple security blocks and these blocks MAY have A bundle MAY have multiple security blocks and these blocks MAY have
different security sources. different security sources.
The Bundle Protocol allows extension blocks to be added to a bundle The Bundle Protocol allows extension blocks to be added to a bundle
at any time during its existence in the DTN. When a waypoint node at any time during its existence in the DTN. When a waypoint adds a
adds a new extension block to a bundle, that extension block may have new extension block to a bundle, that extension block may have
security services applied to it by that waypoint. Similarly, a security services applied to it by that waypoint. Similarly, a
waypoint node may add a security service to an existing extension waypoint may add a security service to an existing extension block,
block, consistent with its security policy. For example, a node consistent with its security policy. For example, a node
representing a boundary between a trusted part of the network and an representing a boundary between a trusted part of the network and an
untrusted part of the network may wish to apply payload encryption untrusted part of the network may wish to apply payload encryption
for bundles leaving the trusted portion of the network. for bundles leaving the trusted portion of the network.
In each case, a node other than the bundle originator may add a When a waypoint adds a security service to the bundle, the waypoint
security service to the bundle and, as such, the source for the is the security source for that service. The security block(s) which
security service will be different than the source of the bundle represent that service in the bundle may need to record this security
itself. Security services MUST track their orginating node so as to source as the bundle destination might need this information for
properly apply policy and key selection associated with processing processing. For example, a destination node might interpret policy
the security service at the bundle destination. as it related to security blocks as a function of the security source
for that block.
Referring to Figure 1, if the bundle that originates at BN1 is given
security blocks by BN1, then BN1 is the security source for those
blocks as well as being the source of the bundle. If the bundle that
originates at BN1 is then given a security block by BN2, then BN2 is
the security source for that block even though BN1 remains the bundle
source.
2.3. Mixed Security Policy 2.3. Mixed Security Policy
Different nodes in a DTN may have different security related The security policy enforced by nodes in the DTN MAY differ.
capabilities. Some nodes may not be security aware and will not
understand any security related extension blocks. Other nodes may
have security policies that require evaluation of security services
at places other than the bundle destination (such as verifying
integrity signatures at certain waypoint nodes). Other nodes may
ignore any security processing if they are not the destination of the
bundle. The security services described in this specification must
allow each of these scenarios.
Extension blocks representing security services MUST have their block Some waypoints may not be security aware and will not be able to
process security blocks. Therefore, security blocks MUST have their
processing flags set such that the block will be treated processing flags set such that the block will be treated
appropriately by non-security-aware nodes. appropriately by non-security-aware waypoints
Some waypoints will have security policies that require evaluating
security services even if they are not the bundle destination or the
final intended destination of the service. For example, a waypoint
may choose to verify an integrity service even though the waypoint is
not the bundle destination and the integrity service will be needed
by other node along the bundle's path.
Extension blocks providing integrity services within a bundle MUST Some waypoints will determine, through policy, that they are the
support options to allow waypoint nodes to evaluate these signatures intended recipient of the security service and terminate the security
if such nodes have the proper configuraton to do so. service in the bundle. For example, a gateway node may determine
that, even though it is not the destination of the bundle, it should
verify and remove a particular integrity service or attempt to
decrypt a confidentiality service, before forwarding the bundle along
its path.
2.4. User-Selected Ciphersuites Some waypoints may understand security blocks but refuse to process
them unless they are the bundle destination.
2.4. User-Selected Cipher Suites
The security services defined in this specification rely on a variety The security services defined in this specification rely on a variety
of cipher suites providing integrity signatures, ciphertext, and of cipher suites providing integrity signatures, cipher-text, and
other information necessary to populate security blocks. Users may other information necessary to populate security blocks. Users MAY
wish to select different cipher suites to implement different select different cipher suites to implement security services. For
security services. For example, some users may wish to use a SHA-256 example, some users might prefer a SHA-256 based hash for integrity
based hash for integrity whereas other users may require a SHA-384 whereas other users may prefer a SHA-384 hash instead. The security
hash instead. The security services defined in this specification services defined in this specification MUST provide a mechanism for
MUST provide a mechanism for identifying what cipher suite has been identifying what cipher suite has been used to populate a security
used to populate a security block. block.
2.5. Deterministic Processing 2.5. Deterministic Processing
In all cases, the processing order of security services within a Whenever a node determines that it must process more than one
bundle must avoid ambiguity when evaluating security at the bundle security block in a received bundle (either because the policy at a
destination. This specification MUST provide determinism in the waypoint states that it should process security blocks or because the
application and evaluation of security services, even when doing so node is the bundle destination) the order in which security blocks
results in a loss of flexibility. are processed MUST be deterministic. All nodes MUST impose this same
deterministic processing order for all security blocks. This
specification provides determinism in the application and evaluation
of security services, even when doing so results in a loss of
flexibility.
3. Security Block Definitions 3. Security Blocks
3.1. Block Definitions
There are two types of security blocks that may be included in a This specification defines two types of security block: the Block
bundle. These are the Block Integrity Block (BIB) and the Block Integrity Block (BIB) and the Block Confidentiality Block (BCB).
Confidentiality Block (BCB).
The BIB is used to ensure the integrity of its security target(s). The BIB is used to ensure the integrity of its security target(s).
The integrity information in the BIB MAY (when possible) be The integrity information in the BIB MAY be verified by any node
verified by any node in between the BIB security source and the in between the BIB security source and the bundle destination.
bundle destination. BIBs MAY be added to, and removed from, Security-aware waypoints may add or remove BIBs from bundles in
bundles as a matter of security policy. accordance with their security policy.
The BCB indicates that the security target(s) has been encrypted, The BCB indicates that the security target(s) has been encrypted,
in whole or in part, at the BCB security source in order to in whole or in part, at the BCB security source in order to
protect its content while in transit. The BCB may be decrypted by protect its content while in transit. The BCB may be decrypted by
appropriate nodes in the network, up to and including the bundle security-aware nodes in the network, up to and including the
destination, as a matter of security policy. bundle destination, as a matter of security policy.
A security operation MUST NOT be applied more than once in a bundle. 3.2. Uniqueness
For example, the two security operations: OP(integrity, payload) and
OP(integrity, payload) are considered redundant and MUST NOT appear
together in a bundle. However, the two security operations
OP(integrity, payload) and OP(integrity, extension_block_1) MAY both
be present in the bundle. Also, the two security operations
OP(integrity, extension_block_1) and OP(integrity, extension_block_2)
are unique and may both appear in the same bundle.
If the same security service is to be applied to multiple security Security operations in a bundle MUST be unique - the same security
targets, and cipher suite parameters for each security service are service MUST NOT be applied to a security target more than once in a
identical, then the set of security operations can be represented as bundle. Since a security operation is represented as a security
a single security block with multiple security targets. In such a block, this limits what security blocks may be added to a bundle: if
case, all security operations represented in the security block MUST adding a security block to a bundle would cause some other security
be applied/evaluated together. block to no longer represent a unique security operation then the new
block MUST NOT be added.
3.1. Block Identification If multiple security blocks representing the same security operation
were allowed in a bundle at the same time, there would exist
ambiguity regarding block processing order and the property of
deterministic processing blocks would be lost.
This specification requires that every target block of a security Using the notation OP(service,target), several examples illustrate
operation be uniquely identifiable. The definition of the extension this uniqueness requirement.
block header from [BPBIS] provides such a mechanism in the "Block
Number" field, which provides a unique identifier for a block within
a bundle. Within this specification, a security target will be
identified by its unique Block Number.
A security block MAY apply to multiple security targets if and only o Signing the payload twice: The two operations OP(integrity,
if all cipher suite parameters, security source, and key information payload) and OP(integrity, payload) are redundant and cannot both
are common for the security operation. In such a case, the security be present in the same bundle at the same time.
block MUST contain security results for each covered security target.
The use of multiple security targets in a security block provides an
efficiency mechanism so that identical ciphersuite information does
not need to be repeated across multiple security blocks.
3.2. Block Representation o Signing different blocks: The two operations OP(integrity,
payload) and OP(integrity, extension_block_1) are not redundant
and both may be present in the same bundle at the same time.
Similarly, the two operations OP(integrity, extension_block_1) and
OP(integrity,extension_block_2) are also not redundant and may
both be present in the bundle at the same time.
o Different Services on same block: The two operations
OP(integrity,payload) and OP(confidentiality, payload) are not
inherently redundant and may both be present in the bundle at the
same time, pursuant to other processing rules in this
specification.
3.3. Target Multiplicity
Under special circumstances, a single security block can represent
multiple security operations as a way of reducing the overall number
of security blocks present in a bundle. In these circumstances,
reducing the number of security blocks in the bundle reduces the
amount of redundant information in the bundle.
A set of security operations may be represented by a single security
block if and only if the following conditions are true.
o The security operations apply the same security service. For
example, they are all integrity operations or all confidentiality
operations.
o The cipher suite parameters and key information for the security
operations are identical.
o The security source for the security operations is the same.
Meaning the set of operations are being added/removed by the same
node.
o No security operations have the same security target, as that
would violate the need for security operations to be unique.
o None of the security operations conflict with security operations
already present in the bundle.
When representing multiple security operations in a single security
block, the information that is common across all operations is
represented once in the security block, and the information which is
different (e.g., the security targets) are represented individually.
When the security block is processed all security operations
represented by the security block MUST be applied/evaluated at that
time.
3.4. Target Identification
A security target is a block in the bundle to which a security
service applies. This target MUST be uniquely and unambiguously
identifiable when processing a security block. The definition of the
extension block header from [BPBIS] provides a "Block Number" field
for exactly this purpose. Therefore, a security target in a security
block MUST be represented as the Block Number of the target block.
3.5. Block Representation
Each security block uses the Canonical Bundle Block Format as defined Each security block uses the Canonical Bundle Block Format as defined
in [BPBIS]. That is, each security block is comprised of the in [BPBIS]. That is, each security block is comprised of the
following elements: following elements:
o Block Type Code o Block Type Code
o Block Number o Block Number
o Block Processing Control Flags o Block Processing Control Flags
o CRC Type and CRC Field o CRC Type and CRC Field (if present)
o Block Data Length o Block Data Length
o Block Type Specific Data Fields o Block Type Specific Data Fields
The structure of the BIB and BCB Block Type Specific Data fields are Security-specific information for a security block is captured in the
identifcal and illustrated in Figure 2. In this figure, field names "Block Type Specific Data Fields".
prefaced with an '*' are optional and their inclusion in the block is
indicated by the Cipher Suite Flags field.
+=================================================
| Field Name | Field Data Type |
+=================================================
| # Security Targets | Unsigned Integer |
+---------------------+--------------------------+
| Security Targets | Array (Unsigned Integer) |
+---------------------+--------------------------+
| Cipher Suite ID | Unsigned Integer |
+---------------------+--------------------------+
| Cipher Suite Flags | Unsigned Integer |
+---------------------+--------------------------+
| Security Source | URI - OPTIONAL |
+---------------------+--------------------------+
| Cipher Parameters | Byte Array - OPTIONAL |
+---------------------+--------------------------+
| Security Result | Byte Array |
+---------------------+--------------------------+
Figure 2: BIB and BCB Block Structure
Where the block fields are identified as follows.
o # Security Targets - The number of security targets for this
security block. This value MUST be at least 1.
o Security Targets - This array contains the unique identifier of
the blocks targetted by this security operation. Each security
target MUST represent a block present in the bundle. A security
target MUST NOT be repeated in this array.
o Cipher suite ID - Identifies the cipher suite used to implement
the security service represented by this block and applied to each
security target.
o Cipher suite flags - Identifies which optional security block
fields are present in the block. The structure of the Cipher
Suite Flags field is shown in Figure 3. The presence of an
optional field is indicated by setting the value of the
corresponding flag to one. A value of zero indicates the
corresponding optional field is not present. The BPSEC Cipher
Suite Flags are defined as follows.
Bit Bit Bit Bit Bit Bit Bit Bit 3.6. Abstract Security Block
7 6 5 4 3 2 1 0
+-----------------------------------+-----+-----+
| reserved | src |parm |
+-----------------------------------+-----+-----+
MSB LSB
Figure 3: Cipher Suite Flags The structure of the security-specific portions of a security block
is identical for both the BIB and BCB Block Types. Therefore, this
section defines an Abstract Security Block (ASB) data structure and
discusses the definition, processing, and other constraints for using
this structure. An ASB is never directly instantiated within a
bundle, it is only a mechanism for discussing the common aspects of
BIB and BCB security blocks.
Where: The fields of the ASB SHALL be as follows, listed in the order in
which they MUST appear.
* bits 7-2 are reserved for future use. Security Targets:
This field identifiers the block or blocks that are the target
of the security operation(s) represented by this security
block. Each security target is identified as the Block Number
of the target block. This field SHALL be represented by a CBOR
array of data items. Each target within this CBOR array SHALL
be represented by a CBOR unsigned integer. This array MUST
have at least 1 item.
* src - bit 1 indicates whether the Security Source is present in Cipher Suite Id:
the block. This field identifies the cipher suite used to implement the
security service represented by this block and applied to each
security target. This field SHALL be represented by a CBOR
unsigned integer.
* parm - bit 0 indicates whether or not the Cipher Suite Cipher Suite Flags:
Parameters field is present in the block. This field identifiers which optional fields are present in the
security block. This field SHALL be represented as a CBOR
unsigned integer containing a bit field of 5 bits indicating
the presence or absence of other security block fields, as
follows.
o (OPTIONAL) Security Source (URI) - This identifies the node that Bit 1 (the most-significant bit, 0x10): reserved.
inserted the security service in the bundle. If the security
source is not present then the source MAY be inferred from the
bundle source, the previous hop, or some other node as defined by
security policy.
o (OPTIONAL) Parameters (Byte Array) - Compound field of the Bit 2 (0x08): reserved.
following two items.
* Length (Unsigned Integer) - specifies the length of the next Bit 3 (0x04): reserved.
field, which captures the parameters data.
* Data (Byte Array) - A byte array encoding one or more cipher Bit 4 (0x02): Security Source Present Flag.
suite parameters, with each parameter represented as a Type-
Length-Value (TLV) triplet, defined as follows.
+ Type (Byte) - The parameter type. Bit 5 (the least-significant bit, 0x01): Cipher Suite
Parameters Present Flag.
+ Length (Unsigned Integer) - The length of the parameter. In this field, a value of 1 indicates that the associated
security block field MUST be included in the security block. A
value of 0 indicates that the associated security block field
MUST NOT be in the security block.
+ Value (Byte Array) - The parameter value. Security Source (Optional Field):
This field identifies the Endpoint that inserted the security
block in the bundle. If the security source field is not
present then the source MAY be inferred from other information,
such as the bundle source or the previous hop, as defined by
security policy. This field SHALL be represented by a CBOR
array in accordance with [BPBIS] rules for representing
Endpoint Identifiers (EIDs).
See Section 3.6 for a list of parameter types that MUST be Cipher Suite Parameters (Optional Field):
supported by BPSEC implementations. BPSEC cipher suite This field captures one or more cipher suite parameters that
specifications MAY define their own parameters to be should be provided to security-aware nodes when processing the
represented in this byte array. security service described by this security block. This field
SHALL be represented by a CBOR array. Each entry in this array
is a single cipher suite parameter. A single cipher suite
parameter SHALL also be represented as a CBOR array comprising
a 2-tuple of the type and value of the parameter, as follows.
o Security Result (Byte Array) - A security result is the output of * Parameter Type. This field identifiers which cipher suite
an appropriate cipher suite specific calculation (e.g., a parameter is being specified. This field SHALL be
signature, Message Authentication Code (MAC), or cipher-text block represented as a CBOR unsigned integer. Potential parameter
key). There MUST exist one security result for each security types are described in Section 3.10. Other specifications
target in the security block. A security result is a multi-field MAY define additional parameter types for use in this field.
component, described as follows.
* Total Length (Unsigned Integer) - specifies the length, in * Parameter Value. This field captures the value associated
bytes, of the remaining security result information. with this parameter. This field SHALL be represented by the
applicable CBOR representation of the parameter type. These
specifications are given in Section 3.10 for parameter types
defined in this specification. Other specifications that
define other parameter types MUST include the appropriate
CBOR encoding of the parameter value.
* Results (Byte Array) - This field captures each of the security Therefore, this field SHALL be represented as a CBOR array of
results, catenated together, one for each security target CBOR arrays.
covered by the security block. Each result is captured by the
four-tuple of (Target, Type, Len, Value). The meaning of each
is given below.
+ Target (Optional) (Unsigned Integer) - If the security block Security Results:
has multiple security targets, the target field is the Block This field captures the results of applying a security service
Number of the security target to which this result field to the security targets in this security block. This field
applies. If the security block only has a single security SHALL be represented as a CBOR array. Each entry in this array
target, this field is omitted. represents a "target list" of security results for a specific
security target. There MUST be one "target list" for each
entry in the Security Targets field and target lists in the
Security Results field MUST be in the same order as the
Security Targets field (e.g., the first "target list" MUST hold
results for the first entry in the Security Targets field, and
so on).
+ Type (Unsigned Integer) - The type of security result field. A "target list" is also represented as a CBOR array of
individual security results for that target. An individual
security result is also represented as a CBOR array comprising
the 2-tuple of the result type and result value, defined as
follows.
+ Length (Unsigned Integer) - The length of the result field. * Result Type. This field captures the type of security
result. Some security result types capture the primary
output of a cipher suite. Other security results contain
additional annotative information from the cipher suite
processing. This field SHALL be represented as a CBOR
unsigned integer. Potential result types are described in
Section 3.10. Other specifications MAY define additional
result types for use in this field.
+ Value (Byte Array) - The results of the cipher suite * Result Value. This field captures the value associated with
specific calculation. this result for this target. This field SHALL be
represented by the applicable CBOR representation of the
result type. These specifications are given in Section 3.10
for result types defined in this specification. Other
specifications that define other result types MUST include
the appropriate CBOR encoding of the result value.
3.3. Block Integrity Block 3.7. Block Integrity Block
A BIB is an ASB with the following characteristics: A BIB is a bundle extension block with the following characteristics.
The Block Type Code value MUST be 0x02. o The Block Type Code value is as specified in Section 12.1.
The Block Processing Control flags value can be set to whatever o The Block Type Specific Data Fields follow the structure of the
values are required by local policy. Cipher suite designers ASB.
should carefully consider the effect of setting flags that either
discard the block or delete the bundle in the event that this
block cannot be processed.
A security target for a BIB MUST NOT reference a security block o A security target listed in the Security Targets field MUST NOT
defined in this specification (e.g., a BIB or a BCB). reference a security block defined in this specification (e.g., a
BIB or a BCB).
The cipher suite ID MUST be documented as an end-to-end o The Cipher Suite Id MUST be documented as an end-to-end
authentication-cipher suite or as an end-to-end error-detection- authentication-cipher suite or as an end-to-end error-detection-
cipher suite. cipher suite.
An EID-reference to the security source MAY be present. If this o An EID-reference to the security source MAY be present. If this
field is not present, then the security source of the block SHOULD field is not present, then the security source of the block SHOULD
be inferred according to security policy and MAY default to the be inferred according to security policy and MAY default to the
bundle source. The security source may also be specified as part bundle source. The security source may also be specified as part
of key information described in Section 3.6. of key information described in Section 3.10.
The security result captures the result of applying the cipher
suite calculation (e.g., the MAC or signature) to the relevant
parts of the security target, as specified in the cipher suite
definition. This field MUST be present.
The cipher suite MAY process less than the entire security target. o The cipher suite MAY process less than the entire security target.
If the cipher suite processes less than the complete, original If the cipher suite processes less than the complete, original
security target, the cipher suite parameters MUST specify which security target, the cipher suite parameters MUST specify which
bytes of the security target are protected. bytes of the security target are protected.
Notes: Notes:
o It is RECOMMENDED that cipher suite designers carefully consider
the effect of setting flags that either discard the block or
delete the bundle in the event that this block cannot be
processed.
o Since OP(integrity, target) is allowed only once in a bundle per o Since OP(integrity, target) is allowed only once in a bundle per
target, it is RECOMMENDED that users wishing to support multiple target, it is RECOMMENDED that users wishing to support multiple
integrity signatures for the same target define a multi-signature integrity signatures for the same target define a multi-signature
cipher suite. cipher suite.
o For some cipher suites, (e.g., those using asymmetric keying to o For some cipher suites, (e.g., those using asymmetric keying to
produce signatures or those using symmetric keying with a group produce signatures or those using symmetric keying with a group
key), the security information MAY be checked at any hop on the key), the security information MAY be checked at any hop on the
way to the destination that has access to the required keying way to the destination that has access to the required keying
information, in accordance with Section 3.5. information, in accordance with Section 3.9.
o The use of a generally available key is RECOMMENDED if custodial o The use of a generally available key is RECOMMENDED if custodial
transfer is employed and all nodes SHOULD verify the bundle before transfer is employed and all nodes SHOULD verify the bundle before
accepting custody. accepting custody.
3.4. Block Confidentiality Block 3.8. Block Confidentiality Block
A BCB is an ASB with the following characteristics: A BCB is a bundle extension block with the following characteristics.
The Block Type Code value MUST be 0x03. The Block Type Code value is as specified in Section 12.1.
The Block Processing Control flags value can be set to whatever The Block Processing Control flags value can be set to whatever
values are required by local policy, except that this block MUST values are required by local policy, except that this block MUST
have the "replicate in every fragment" flag set if the target of have the "replicate in every fragment" flag set if the target of
the BCB is the Payload Block. Having that BCB in each fragment the BCB is the Payload Block. Having that BCB in each fragment
indicates to a receiving node that the payload portion of each indicates to a receiving node that the payload portion of each
fragment represents cipher-text. Cipher suite designers should fragment represents cipher-text.
carefully consider the effect of setting flags that either discard
the block or delete the bundle in the event that this block cannot
be processed.
A security target for a BCB MAY reference the payload block, a The Block Type Specific Data Fields follow the structure of the
non-security extension block, or a BIB block. A security target ASB.
in a BCB MUST NOT be another BCB.
The cipher suite ID MUST be documented as a confidentiality cipher A security target listed in the Security Targets field MAY
reference the payload block, a non-security extension block, or a
BIB block. A BCB MUST NOT include another BCB as a security
target. A BCB MUST NOT target the primary block.
The Cipher Suite Id MUST be documented as a confidentiality cipher
suite. suite.
Any additional bytes generated as a result of encryption and/or Any additional bytes generated from applying the cipher suite to a
authentication processing of the security target SHOULD be placed security target (such as additional authenticated text) MAY be
in an "integrity check value" field (see Section 3.6) or other placed in an appropriate security result (e.g., an Integrity Check
such appropriate area in the security result of the BCB. Value) in accordance with cipher suite and security policy.
An EID-reference to the security source MAY be present. If this An EID-reference to the security source MAY be present. If this
field is not present, then the security source of the block SHOULD field is not present, then the security source of the block SHOULD
be inferred according to security policy and MAY default to the be inferred according to security policy and MAY default to the
bundle source. The security source may also be specified as part bundle source. The security source may also be specified as part
of key information described in Section 3.6. of key information described in Section 3.10.
The security result MUST be present in the BCB. This compound
field normally contains fields such as an encrypted bundle
encryption key and/or authentication tag.
The BCB modifies the contents of its security target. When a BCB is The BCB modifies the contents of its security target(s). When a BCB
applied, the security target body data are encrypted "in-place". is applied, the security target body data are encrypted "in-place".
Following encryption, the security target body data contains cipher- Following encryption, the security target Block Type Specific Data
text, not plain-text. Other security target block fields (such as Fields contains cipher-text, not plain-text. Other block fields
type, processing control flags, and length) remain unmodified. remain unmodified, with the exception of the Block Data Length field,
which may be changed if the BCB is allowed to change the length of
the block (see below).
Fragmentation, reassembly, and custody transfer are adversely Fragmentation, reassembly, and custody transfer are adversely
affected by a change in size of the payload due to ambiguity about affected by a change in size of the payload block due to ambiguity
what byte range of the block is actually in any particular fragment. about what byte range of the block is actually in any particular
Therefore, when the security target of a BCB is the bundle payload, fragment. Therefore, when the security target of a BCB is the bundle
the BCB MUST NOT alter the size of the payload block body data. payload, the BCB MUST NOT alter the size of the payload block body
Cipher suites SHOULD place any block expansion, such as data. This "in-place" encryption allows fragmentation, reassembly,
authentication tags (integrity check values) and any padding and custody transfer to operate without knowledge of whether or not
generated by a block-mode cipher, into an integrity check value item encryption has occurred.
in the security result field (see Section 3.6) of the BCB. This "in-
place" encryption allows fragmentation, reassembly, and custody If a BCB cannot alter the size of the security target (e.g., the
transfer to operate without knowledge of whether or not encryption security target is the payload block or block length modifications
has occurred. are disallowed by policy) then differences in the size of the cipher-
text and plain-text MUST be handled in the following way. If the
cipher-text is shorter in length than the plain-text, padding must be
used in accordance with the cipher suite policy. If the cipher-text
is larger than the plain-text, overflow bytes MUST be placed in
overflow parameters in the Security Result field.
Notes: Notes:
o It is RECOMMENDED that cipher suite designers carefully consider
the effect of setting flags that either discard the block or
delete the bundle in the event that this block cannot be
processed.
o The cipher suite MAY process less than the entire original o The cipher suite MAY process less than the entire original
security target body data. If the cipher suite processes less security target body data. If the cipher suite processes less
than the complete, original security target body data, the BCB for than the complete, original security target body data, the BCB for
that security target MUST specify, as part of the cipher suite that security target MUST specify, as part of the cipher suite
parameters, which bytes of the body data are protected. parameters, which bytes of the body data are protected.
o The BCB's "discard" flag may be set independently from its o The BCB block processing control flags MAY be set independently
security target's "discard" flag. Whether or not the BCB's from the processing control flags of the security target(s). The
"discard" flag is set is an implementation/policy decision for the setting of such flags SHOULD be an implementation/policy decision
encrypting node. (The "discard" flag is more properly called the for the encrypting node.
"Discard if block cannot be processed" flag.)
o A BCB MAY include information as part of additional authenticated o A BCB MAY include information as part of additional authenticated
data to address parts of the target block, such as EID references, data to address parts of the target block that are not converted
that are not converted to cipher-text. to cipher-text.
3.5. Block Interactions 3.9. Block Interactions
The security block types defined in this specification are designed The security block types defined in this specification are designed
to be as independent as possible. However, there are some cases to be as independent as possible. However, there are some cases
where security blocks may share a security target creating processing where security blocks may share a security target creating processing
dependencies. dependencies.
If confidentiality is being applied to a target that already has If confidentiality is being applied to a target that already has
integrity applied to it, then an undesirable condition occurs where a integrity applied to it, then an undesirable condition occurs where a
security aware intermediate node would be unable to check the security aware waypoint would be unable to check the integrity result
integrity result of a block because the block contents have been of a block because the block contents have been encrypted after the
encrypted after the integrity signature was generated. To address integrity signature was generated. To address this concern, the
this concern, the following processing rules MUST be followed. following processing rules MUST be followed.
o If confidentiality is to be applied to a target, it MUST also be o If confidentiality is to be applied to a target, it MUST also be
applied to any integrity operation already defined for that applied to any integrity operation already defined for that
target. This means that if a BCB is added to encrypt a block, target. This means that if a BCB is added to encrypt a block,
another BCB MUST also be added to encrypt a BIB also targeting another BCB MUST also be added to encrypt a BIB also targeting
that block. that block.
o An integrity operation MUST NOT be applied to a security target if o An integrity operation MUST NOT be applied to a security target if
a BCB in the bundle shares the same security target. This a BCB in the bundle shares the same security target. This
prevents ambiguity in the order of evaluation when receiving a BIB prevents ambiguity in the order of evaluation when receiving a BIB
skipping to change at page 16, line 50 skipping to change at page 17, line 33
o An integrity value MUST NOT be evaluated if the BIB providing the o An integrity value MUST NOT be evaluated if the BIB providing the
integrity value is the security target of an existing BCB block in integrity value is the security target of an existing BCB block in
the bundle. In such a case, the BIB data contains cipher-text as the bundle. In such a case, the BIB data contains cipher-text as
it has been encrypted. it has been encrypted.
o An integrity value MUST NOT be evaluated if the security target of o An integrity value MUST NOT be evaluated if the security target of
the BIB is also the security target of a BCB in the bundle. In the BIB is also the security target of a BCB in the bundle. In
such a case, the security target data contains cipher-text as it such a case, the security target data contains cipher-text as it
has been encrypted. has been encrypted.
o As mentioned in Section 3.3, a BIB MUST NOT have a BCB as its o As mentioned in Section 3.7, a BIB MUST NOT have a BCB as its
security target. BCBs may embed integrity results as part of security target. BCBs may embed integrity results as part of
cipher suite parameters. security results.
These restrictions on block interactions impose a necessary ordering These restrictions on block interactions impose a necessary ordering
when applying security operations within a bundle. Specifically, for when applying security operations within a bundle. Specifically, for
a given security target, BIBs MUST be added before BCBs. This a given security target, BIBs MUST be added before BCBs. This
ordering MUST be preserved in cases where the current BPA is adding ordering MUST be preserved in cases where the current BPA is adding
all of the security blocks for the bundle or whether the BPA is a all of the security blocks for the bundle or whether the BPA is a
waypoint adding new security blocks to a bundle that already contains waypoint adding new security blocks to a bundle that already contains
security blocks. security blocks.
3.6. Parameters and Result Fields 3.10. Parameters and Result Types
Various cipher suites include several items in the cipher suite Cipher suite parameters and security results may capture multiple
parameters and/or security result fields. Which items MAY appear is types of information in a security block. This section identifies a
defined by the particular cipher suite description. A cipher suite set of parameters and results that are available in any BPSec
MAY support several instances of the same type within a single block. implementation for use by any cipher suite. Individual cipher suites
MAY define additional parameters and results. A cipher suite MAY
include multiple instances of the same type of parameter or result in
a security block.
Each item is represented as a type-length-value. Type is a single Parameters and results are represented using CBOR, and any
byte indicating the item. Length is the count of data bytes to identification of a new parameter or result type MUST include how the
follow, and is an Unsigned Integer. Value is the data content of the value of the type will be represented using the CBOR specification.
item. Types themselves are always represented as a CBOR unsigned integer.
Item types, name, and descriptions are defined as follows. Cipher suite parameter types, as defined by this specification, are
as follows.
Cipher suite parameters and result fields. Cipher Suite Parameter Types.
+-------+----------------+-----------------------------+------------+ +------+----------------+--------------------------+----------------+
| Type | Name | Description | Field | | Type | Name | Description | CBOR |
+-------+----------------+-----------------------------+------------+ | | | | Representation |
| 0 | Reserved | | | +------+----------------+--------------------------+----------------+
+-------+----------------+-----------------------------+------------+ | 0 | Initialization | A random value, | Byte String |
| 1 | Initialization | A random value, typically | Cipher | | | Vector | typically eight to | |
| | Vector (IV) | eight to sixteen bytes. | Suite | | | | sixteen bytes. | |
| | | | Parameters | +------+----------------+--------------------------+----------------+
+-------+----------------+-----------------------------+------------+ | 1 | Key | Material encoded or | Byte String |
| 2 | Reserved | | | | | Information | protected by the key | |
+-------+----------------+-----------------------------+------------+ | | | management system and | |
| 3 | Key | Material encoded or | Cipher | | | | used to transport an | |
| | Information | protected by the key | Suite | | | | ephemeral key protected | |
| | | management system and used | Parameters | | | | by a long-term key. | |
| | | to transport an ephemeral | | +------+----------------+--------------------------+----------------+
| | | key protected by a long- | | | 2 | Content Range | Pair of Unsigned | CBOR Array |
| | | term key. | | | | | Integers (offset,length) | comprising a |
+-------+----------------+-----------------------------+------------+ | | | specifying the range of | 2-tuple of |
| 4 | Content Range | Pair of Unsigned Integers | Cipher | | | | payload bytes to which | CBOR unsigned |
| | | (offset,length) specifying | Suite | | | | an operation applies. | integers. |
| | | the range of payload bytes | Parameters | | | | The offset MUST be the | |
| | | to which an operation | | | | | offset within the | |
| | | applies. The offset MUST be | | | | | original bundle, even if | |
| | | the offset within the | | | | | the current bundle is a | |
| | | original bundle, even if | | | | | fragment. | |
| | | the current bundle is a | | +------+----------------+--------------------------+----------------+
| | | fragment. | | | 3 | Salt | An IV-like value used by | Byte Array |
+-------+----------------+-----------------------------+------------+ | | | certain confidentiality | |
| 5 | Integrity | Result of BIB digest or | Security | | | | suites. | |
| | Signatures | other signing operation. | Results | +------+----------------+--------------------------+----------------+
+-------+----------------+-----------------------------+------------+ | 4-31 | Reserved | Reserve for future BPSec | |
| 6 | Unassigned | | | | | | protocol expansion | |
+-------+----------------+-----------------------------+------------+ +------+----------------+--------------------------+----------------+
| 7 | Salt | An IV-like value used by | Cipher | | >= | Unassigned | Unassigned by this | |
| | | certain confidentiality | Suite | | 32 | | specification. Can be | |
| | | suites. | Parameters | | | | assigned by cipher suite | |
+-------+----------------+-----------------------------+------------+ | | | specifications. | |
| 8 | BCB Integrity | Output from certain | Security | +------+----------------+--------------------------+----------------+
| | Check Value | confidentiality cipher | Results |
| | (ICV) / | suite operations to be used | |
| | Authentication | at the destination to | |
| | Tag | verify that the protected | |
| | | data has not been modified. | |
| | | This value MAY contain | |
| | | padding if required by the | |
| | | cipher suite. | |
+-------+----------------+-----------------------------+------------+
| 9-255 | Reserved | | |
+-------+----------------+-----------------------------+------------+
Table 1 Table 1
3.7. BSP Block Example Security result parameter types, as defined by this specification,
are as follows.
Security Result Types.
+------+----------------+--------------------------+----------------+
| Type | Name | Description | CBOR |
| | | | Representation |
+------+----------------+--------------------------+----------------+
| 0 | Integrity | Result of BIB digest or | Byte String |
| | Signatures | other signing operation. | |
+------+----------------+--------------------------+----------------+
| 1 | BCB Integrity | Output from certain | Byte String |
| | Check Value | confidentiality cipher | |
| | (ICV) / | suite operations to be | |
| | Authentication | used at the destination | |
| | Tag | to verify that the | |
| | | protected data has not | |
| | | been modified. This | |
| | | value MAY contain | |
| | | padding if required by | |
| | | the cipher suite. | |
+------+----------------+--------------------------+----------------+
| 2-31 | Reserved | Reserve for future BPSec | |
| | | protocol expansion | |
+------+----------------+--------------------------+----------------+
| >= | Unassigned | Unassigned by this | |
| 32 | | specification. Can be | |
| | | assigned by cipher suite | |
| | | specifications. | |
+------+----------------+--------------------------+----------------+
Table 2
3.11. BSP Block Example
An example of BPSec blocks applied to a bundle is illustrated in An example of BPSec blocks applied to a bundle is illustrated in
Figure 4. In this figure the first column represents blocks within a Figure 1. In this figure the first column represents blocks within a
bundle and the second column represents a unique identifier for each bundle and the second column represents the Block Number for the
block, suitable for use as the security target of a BPSec security block, using the terminology B1...Bn for the purpose of illustration.
block. Since the mechanism and format of a security target is not
specified in this document, the terminology B1...Bn is used to
identify blocks in the bundle for the purposes of illustration.
Block in Bundle ID Block in Bundle ID
+===================================+====+ +===================================+====+
| Primary Block | B1 | | Primary Block | B1 |
+-----------------------------------+----+ +-----------------------------------+----+
| BIB | B2 | | BIB | B2 |
| OP(integrity, target=B1) | | | OP(integrity, target=B1) | |
+-----------------------------------+----+ +-----------------------------------+----+
| BCB | B3 | | BCB | B3 |
| OP(confidentiality, target=B4) | | | OP(confidentiality, target=B4) | |
+-----------------------------------+----+ +-----------------------------------+----+
| Extension Block | B4 | | Extension Block | B4 |
+-----------------------------------+----+ +-----------------------------------+----+
| BIB | B5 | | BIB | B5 |
| OP(integrity, target=B6) | | | OP(integrity, target=B6) | |
+-----------------------------------+----+ +-----------------------------------+----+
| Extension Block | B6 | | Extension Block | B6 |
+-----------------------------------+----+ +-----------------------------------+----+
| BCB | B7 | | BCB | B7 |
| OP(confidentiality,target=B8,B9) | | | OP(confidentiality,targets=B8,B9) | |
+-----------------------------------+----+ +-----------------------------------+----+
| BIB (encrypted by B7) | B8 | | BIB (encrypted by B7) | B8 |
| OP(integrity, target=B9) | | | OP(integrity, target=B9) | |
+-----------------------------------+----| +-----------------------------------+----|
| Payload Block | B9 | | Payload Block | B9 |
+-----------------------------------+----+ +-----------------------------------+----+
Figure 4: Sample Use of BSP Blocks Figure 1: Sample Use of BPSec Blocks
In this example a bundle has four non-security-related blocks: the In this example a bundle has four non-security-related blocks: the
primary block (B1), three extension blocks (B4,B6), and a payload primary block (B1), two extension blocks (B4,B6), and a payload block
block (B9). The following security applications are applied to this (B9). The following security applications are applied to this
bundle. bundle.
o An integrity signature applied to the canonicalized primary block. o An integrity signature applied to the canonicalized primary block.
This is accomplished by a single BIB (B2). This is accomplished by a single BIB (B2).
o Confidentiality for the first extension block (B4). This is o Confidentiality for the first extension block (B4). This is
accomplished by a BCB block (B3). accomplished by a BCB block (B3).
o Integrity for the second extension block (B6). This is o Integrity for the second extension block (B6). This is
accomplished by a BIB block (B5). NOTE: If the extension block B6 accomplished by a BIB block (B5). NOTE: If the extension block B6
contains a representation of the serialized bundle (such as a hash contains a representation of the serialized bundle (such as a hash
over all blocks in the bundle at the time of its last over all blocks in the bundle at the time of its last
transmission) then the BIB block is also providing an transmission) then the BIB block is also providing an
authentication service from the prior BPSEC-BPA to this BPSEC-BPA. authentication service.
o An integrity signature on the payload (B10). This is accomplished o An integrity signature on the payload (B10). This is accomplished
by a BIB block (B8). by a BIB block (B8).
o Confidentiality for the payload block and it's integrity o Confidentiality for the payload block and it's integrity
signature. This is accomplished by a BCB block, B7, encrypting B8 signature. This is accomplished by a BCB block, B7, encrypting B8
and B9. and B9. In this case, the security source, key parameters, and
service are identical, so a single security block MAY be used for
this purpose, rather than requiring two BCBs one to encrypt B8 and
one to encrypt B9.
4. Canonical Forms 4. Canonical Forms
By definition, an integrity service determines whether any aspect of By definition, an integrity service determines whether any aspect of
a block was changed from the moment the security service was applied a block was changed from the moment the security service was applied
at the security source until the point of current evaluation. To at the security source until the point of evaluation. To
successfully verify the integrity of a block, the data passed to the successfully verify the integrity of a block, the data passed to the
verifying cipher suite MUST be the same bits, in the same order, as verifying cipher suite MUST be the same bits, in the same order, as
those passed to the signature-generating cipher suite at the security those passed to the signature-generating cipher suite at the security
source. source.
However, [BPBIS] does not specify a single on-the-wire encoding of
bundles. In cases where a security source generates a different
encoding than that used at a receiving node, care MUST be taken to
ensure that the inputs to cipher suites at the receiving node is a
bitwise match to inputs provided at the security source.
This section provides guidance on how to create a canonical form for This section provides guidance on how to create a canonical form for
each type of block in a bundle. This form MUST be used when each type of block in a bundle. This form MUST be used when
generating inputs to cipher suites for use by BPSec blocks. generating inputs to cipher suites for use by BPSec blocks.
This specification does not define any security operation over the
entire bundle and, therefore, provides no canonical form for a
serialized bundle.
4.1. Technical Notes 4.1. Technical Notes
The following technical considerations hold for all canonicalizations The following technical considerations hold for all canonicalizations
in this section. in this section.
o Any numeric fields defined as variable-length MUST be expanded to o Any numeric fields defined as variable-length MUST be expanded to
their "unpacked" form. For example, a 32-bit integer value MUST their largest unpacked form before being used by a cipher suite.
be unpacked to a four-byte representation. If a field does not specify a maximum size, a maximum size of 32
bits for integer and 64 bits for floating point values SHALL be
o Each block encoding MUST follow the CBOR encodings provided in assumed.
[BPBISCBOR].
o Canonical forms are not transmitted, they are used to generate o Canonical forms are not transmitted, they are used to generate
input to a cipher suite for secuity processing at a security-aware input to a cipher suite for security processing at a security-
node. aware node.
o Reserved flags MUST NOT be included in any canonicalization as it o Reserved flags MUST NOT be included in any canonicalization as it
is not known if those flags will chaneg in transit. is not known if those flags will change in transit.
o These canonicalization algorithms assume that endpoint IDs o These canonicalization algorithms assume that Endpoint IDs do not
themselves are immutable and they are unsuitable for use in change from the time at which a security source adds a security
environments where that assumption might be violated. block to a bundle and the time at which a node processes that
security block.
o Cipher suites MAY define their own canonicalization algorithms and o Cipher suites MAY define their own canonicalization algorithms and
require the use of those algorithms over the ones provided in this require the use of those algorithms over the ones provided in this
specification. In the event of conflicting canonicalization specification. In the event of conflicting canonicalization
algorithms, cipher suite algorithms take precedence over this algorithms, cipher suite algorithms take precedence over this
specification. specification.
4.2. Primary Block Canonicalization 4.2. Primary Block Canonicalization
The primary block canonical form is the same as the CBOR encoding of The canonicalization of the primary block is as specified in [BPBIS]
the block, with certain modifications to account for allowed block with the following exceptions.
changes as the bundle traverses the DTN. The fields that compromise
the primary block, and any special considerations for their
representation in a canonical form, are as follows.
o The Version field is included, without modification.
o The Bundle Processing Flags field is used, with modification. o The following Bundle Processing Control Flags MAY change as a
Certain bundle processing flags MAY change as a bundle transits bundle transits the DTN without indicating an integrity error and,
the DTN without indicating an integrity error. These flags, which therefore, MUST NOT be included in the canonicalization of the
are identified below, MUST NOT be represented in the canonicalized primary block.
form of the bundle processing flags and, instead, be represented
by the bit 0.
* Reserved flags. * Bundle is a fragment. (Bit 15, 0x0001)
* Bundle is a Fragment flag. * Custody transfer requested for this bundle. (Bit 12, 0x0008)
o The CRC Type, Destination EID, Source Node ID, Report-To EID, * Reserved (Bits 0-2, 0xE000)
Creation Timestamp, and Lifetime fields are included, without
modification.
o The fragment ID field MAY change if the bundle is fragmented in Regardless of the value of these flags in the primary block, they
transit and, as such, this field MUST NOT be included in the MUST be set to 0 when canonicalized for security processing.
canonicalization.
o The CRC field MAY change at each hop - for example, if a bundle o The CRC field MAY change at each hop - for example, if a bundle
becomes fragmented, each fragment will have a different CRC value becomes fragmented, each fragment will have a different CRC value
from the original signed primary block. As such, this field MUST from the original signed primary block. As such, this field MUST
NOT be included in the canonicalization. NOT be included in the canonicalization.
4.3. Non-Primary-Block Canonicalization 4.3. Non-Primary-Block Canonicalization
All non-primary blocks (NPBs) in [BPBIS] share the same block All non-primary blocks (NPBs) share the same block structure and are
structure and should be canonicalized in the same way. canonicalized as specified in [BPBIS] with the following exceptions.
Canonicalization for NPBs is dependent on whether the security
operation being performed is integrity or confidentiality. Integrity
operations consider every field in the block, whereas confidentiality
operations only consider the block-type-specific data. Since
confidentiality is applied to hide information (replacing plaintext
with ciphertext) it provides no benefit to include in the
confidentiality calculation information that MUST remain readable,
such as block fields other than the block-type-specific data.
The fields that comprise a NPB, and any special considerations for
their representation in a canonical form, are as follows.
o The Block Type Code field is included, without modification, for
integrity operations and omitted for confidentiality operations.
o The Block Number field is included, without modification, for
integrity operations and omitted for confidentiality operations.
o The Block Processing Control Flags field is included, without
modification, for integrity operations and omitted for
confidentiality operations, with the exception of reserved flags
which are treated as 0 in both cases.
o The CRC type and CRC fields are included, without modification, o If the service being applied is a confidentiality service, then
for integrity operations and omitted for confidentiality the Block Type Code, Block Number, Block Processing Control Flags,
operations. CRC Type and CRC Field (if present), and Block Data Length fields
MUST NOT be included in the canonicalization. Confidentiality
services are used to convert the Block Type Specific Data Fields
from plain-text to cipher-text.
o The Block Type Specific Data field is included, without o The Block Type Specific Data Field is included, without
modification, for both integrity and confidentiality operations, modification, for both integrity and confidentiality services,
with the exception that in some cases only a portion of the with the exception that in some cases only a portion of the
payload data is to be processed. In such a case, only those bytes payload data is to be processed. In such a case, only those bytes
are included in the canonical form and additional cipher suite are included in the canonical form and additional cipher suite
parameters are required to specify which part of the field is parameters are required to specify which part of the field is
included. included.
5. Security Processing 5. Security Processing
This section describes the security aspects of bundle processing. This section describes the security aspects of bundle processing.
skipping to change at page 23, line 26 skipping to change at page 24, line 30
If a received bundle contains a BCB, the receiving node MUST If a received bundle contains a BCB, the receiving node MUST
determine whether it has the responsibility of decrypting the BCB determine whether it has the responsibility of decrypting the BCB
security target and removing the BCB prior to delivering data to an security target and removing the BCB prior to delivering data to an
application at the node or forwarding the bundle. application at the node or forwarding the bundle.
If the receiving node is the destination of the bundle, the node MUST If the receiving node is the destination of the bundle, the node MUST
decrypt any BCBs remaining in the bundle. If the receiving node is decrypt any BCBs remaining in the bundle. If the receiving node is
not the destination of the bundle, the node MAY decrypt the BCB if not the destination of the bundle, the node MAY decrypt the BCB if
directed to do so as a matter of security policy. directed to do so as a matter of security policy.
If the security policy of a security-aware node specifies that a
bundle should have applied confidentiality to a specific security
target and no such BCB is present in the bundle, then the node MUST
process this security target in accordance with the security policy.
This MAY involve removing the security target from the bundle. If
the removed security target is the payload block, the bundle MAY be
discarded.
If the relevant parts of an encrypted payload block cannot be If the relevant parts of an encrypted payload block cannot be
decrypted (i.e., the decryption key cannot be deduced or decryption decrypted (i.e., the decryption key cannot be deduced or decryption
fails), then the bundle MUST be discarded and processed no further. fails), then the bundle MUST be discarded and processed no further.
If an encrypted security target other than the payload block cannot If an encrypted security target other than the payload block cannot
be decrypted then the associated security target and all security be decrypted then the associated security target and all security
blocks associated with that target MUST be discarded and processed no blocks associated with that target MUST be discarded and processed no
further. In both cases, requested status reports (see [BPBIS]) MAY further. In both cases, requested status reports (see [BPBIS]) MAY
be generated to reflect bundle or block deletion. be generated to reflect bundle or block deletion.
When a BCB is decrypted, the recovered plain-text MUST replace the When a BCB is decrypted, the recovered plain-text MUST replace the
cipher-text in the security target body data cipher-text in the security target Block Type Specific Data Fields.
If the Block Data Length field was modified at the time of encryption
it MUST be updated to reflect the decrypted block length.
If a BCB contains multiple security targets, all security targets If a BCB contains multiple security targets, all security targets
MUST be processed if the BCB is processed by the Node. The effect of MUST be processed when the BCB is processed. Errors and other
this is to be the same as if each security target had been processing steps SHALL be made as if each security target had been
represented by an individual BCB with a single security target. represented by an individual BCB with a single security target.
5.1.2. Receiving BIB Blocks 5.1.2. Receiving BIB Blocks
If a received bundle contains a BIB, the receiving node MUST If a received bundle contains a BIB, the receiving node MUST
determine whether it has the responsibility of verifying the BIB determine whether it has the final responsibility of verifying the
security target and whether to remove the BIB prior to delivering BIB security target and removing it prior to delivering data to an
data to an application at the node or forwarding the bundle. application at the node or forwarding the bundle. If a BIB check
fails, the security target has failed to authenticate and the
security target SHALL be processed according to the security policy.
A bundle status report indicating the failure MAY be generated.
Otherwise, if the BIB verifies, the security target is ready to be
processed for delivery.
A BIB MUST NOT be processed if the security target of the BIB is also A BIB MUST NOT be processed if the security target of the BIB is also
the security target of a BCB in the bundle. Given the order of the security target of a BCB in the bundle. Given the order of
operations mandated by this specification, when both a BIB and a BCB operations mandated by this specification, when both a BIB and a BCB
share a security target, it means that the security target MUST have share a security target, it means that the security target MUST have
been encrypted after it was integrity signed and, therefore, the BIB been encrypted after it was integrity signed and, therefore, the BIB
cannot be verified until the security target has been decrypted by cannot be verified until the security target has been decrypted by
processing the BCB. processing the BCB.
If the security policy of a security-aware node specifies that a If the security policy of a security-aware node specifies that a
bundle should have applied integrity to a specific security target bundle should have applied integrity to a specific security target
and no such BIB is present in the bundle, then the node MUST process and no such BIB is present in the bundle, then the node MUST process
this security target in accordance with the security policy. This this security target in accordance with the security policy. This
MAY involve removing the security target from the bundle. If the MAY involve removing the security target from the bundle. If the
removed security target is the payload or primary block, the bundle removed security target is the payload or primary block, the bundle
MAY be discarded. This action may occur at any node that has the MAY be discarded. This action may occur at any node that has the
ability to verify an integrity signature, not just the bundle ability to verify an integrity signature, not just the bundle
destination. destination.
If the bundle has a BIB and the receiving node is the destination for If a receiving node does not have the final responsibility of
the bundle, the node MUST verify the security target in accordance verifying the BIB it MAY still attempt to verify the BIB to prevent
with the cipher suite specification. If a BIB check fails, the the needless forwarding of corrupt data. If the check fails, the
security target has failed to authenticate and the security target node SHALL process the security target in accordance to local
SHALL be processed according to the security policy. A bundle status security policy. It is RECOMMENDED that if a payload integrity check
report indicating the failure MAY be generated. Otherwise, if the fails at a waypoint that it is processed in the same way as if the
BIB verifies, the security target is ready to be processed for check fails at the destination. If the check passes, the node MUST
delivery. NOT remove the BIB prior to forwarding.
If the bundle has a BIB and the receiving node is not the bundle
destination, the receiving node MAY attempt to verify the value in
the security result field. If the check fails, the node SHALL
process the security target in accordance to local security policy.
It is RECOMMENDED that if a payload integrity check fails at a
waypoint that it is processed in the same way as if the check fails
at the destination.
If a BIB contains multiple security targets, all security targets If a BIB contains multiple security targets, all security targets
MUST be processed if the BIB is processed by the Node. The effect of MUST be processed if the BIB is processed by the Node. Errors and
this is to be the same as if each security target had been other processing steps SHALL be made as if each security target had
represented by an individual BIB with a single security target. been represented by an individual BIB with a single security target.
5.2. Bundle Fragmentation and Reassembly 5.2. Bundle Fragmentation and Reassembly
If it is necessary for a node to fragment a bundle and security If it is necessary for a node to fragment a bundle payload, and
services have been applied to that bundle, the fragmentation rules security services have been applied to that bundle, the fragmentation
described in [BPBIS] MUST be followed. As defined there and repeated rules described in [BPBIS] MUST be followed. As defined there and
here for completeness, only the payload may be fragmented; security summarized here for completeness, only the payload block may be
blocks, like all extension blocks, can never be fragmented. fragmented; security blocks, like all extension blocks, can never be
fragmented.
Due to the complexity of bundle fragmentation, including the Due to the complexity of payload block fragmentation, including the
possibility of fragmenting bundle fragments, integrity and possibility of fragmenting payload block fragments, integrity and
confidentiality operations are not to be applied to a bundle confidentiality operations are not to be applied to a bundle
representing a fragment (i.e., a bundle whose "bundle is a Fragment" representing a fragment. Specifically, a BCB or BIB MUST NOT be
flag is set in the Bundle Processing Control Flags field). added to a bundle if the "Bundle is a Fragment" flag is set in the
Specifically, a BCB or BIB MUST NOT be added to a bundle fragment, Bundle Processing Control Flags field.
even if the security target of the security block is not the payload.
When integrity and confidentiality must be applied to a fragment, we Security processing in the presence of payload block fragmentation
RECOMMEND that encapsulation be used instead. MAY be handled by other mechanisms outside of the BPSec protocol or
by applying BPSec blocks in coordination with an encapsulation
mechanism.
6. Key Management 6. Key Management
Key management in delay-tolerant networks is recognized as a There exist a myriad of ways to establish, communicate, and otherwise
difficult topic and is one that this specification does not attempt manage key information in a DTN. Certain DTN deployments might
to solve. follow established protocols for key management whereas other DTN
deployments might require new and novel approaches. BPSec assumes
that key management is handled as a separate part of network design
and this specification neither defines nor requires a specific key
management strategy.
7. Policy Considerations 7. Security Policy Considerations
When implementing BPSec, several policy decisions must be considered. When implementing BPSec, several policy decisions must be considered.
This section describes key policies that affect the generation, This section describes key policies that affect the generation,
forwarding, and receipt of bundles that are secured using this forwarding, and receipt of bundles that are secured using this
specification. specification. No single set of policy decisions is envisioned to
work for all secure DTN deployments.
o If a bundle is received that contains more than one security o If a bundle is received that contains more than one security
operation, in violation of BPSec, then the BPA must determine how operation, in violation of BPSec, then the BPA must determine how
to handle this bundle. The bundle may be discarded, the block to handle this bundle. The bundle may be discarded, the block
affected by the security operation may be discarded, or one affected by the security operation may be discarded, or one
security operation may be favored over another. security operation may be favored over another.
o BPAs in the network MUST understand what security operations they o BPAs in the network MUST understand what security operations they
should apply to bundles. This decision may be based on the source should apply to bundles. This decision may be based on the source
of the bundle, the destination of the bundle, or some other of the bundle, the destination of the bundle, or some other
information related to the bundle. information related to the bundle.
o If an intermediate receiver has been configured to add a security o If a waypoint has been configured to add a security operation to a
operation to a bundle, and the received bundle already has the bundle, and the received bundle already has the security operation
security operation applied, then the receiver MUST understand what applied, then the receiver MUST understand what to do. The
to do. The receiver may discard the bundle, discard the security receiver may discard the bundle, discard the security target and
target and associated BPSec blocks, replace the security associated BPSec blocks, replace the security operation, or some
operation, or some other action. other action.
o It is recommended that security operations only be applied to the o It is recommended that security operations only be applied to the
payload block, the primary block, and any block-types specifically blocks that absolutely need them. If a BPA were to apply security
identified in the security policy. If a BPA were to apply operations such as integrity or confidentiality to every block in
security operations such as integrity or confidentiality to every the bundle, regardless of need, there could be downstream errors
block in the bundle, regardless of the block type, there could be processing blocks whose contents must be inspected or changed at
downstream errors processing blocks whose contents must be every hop along the path.
inspected at every hop in the network path.
o Adding a BIB to a security target that has already been encrypted o Adding a BIB to a security target that has already been encrypted
by a BCB is not allowed. Therefore, we recommend three methods to by a BCB is not allowed. If this condition is likely to be
add an integrity signature to an encrypted security target. encountered, there are (at least) three possible policies that
could handle this situation.
1. At the time of encryption, an integrity signature may be 1. At the time of encryption, an integrity signature may be
generated and added to the BCB for the security target as generated and added to the BCB for the security target as
additional information in the security result field. additional information in the security result field.
2. The encrypted block may be replicated as a new block and 2. The encrypted block may be replicated as a new block and
integrity signed. integrity signed.
3. An encapsulation scheme may be applied to encapsulate the 3. An encapsulation scheme may be applied to encapsulate the
security target (or the entire bundle) such that the security target (or the entire bundle) such that the
encapsulating structure is, itself, no longer the security encapsulating structure is, itself, no longer the security
target of a BCB and may therefore be the security target of a target of a BCB and may therefore be the security target of a
BIB. BIB.
8. Security Considerations 8. Security Considerations
Given the nature of delay-tolerant networking applications, it is Given the nature of DTN applications, it is expected that bundles may
expected that bundles may traverse a variety of environments and traverse a variety of environments and devices which each pose unique
devices which each pose unique security risks and requirements on the security risks and requirements on the implementation of security
implementation of security within BPSEC. For these reasons, it is within BPSec. For these reasons, it is important to introduce key
important to introduce key threat models and describe the roles and threat models and describe the roles and responsibilities of the
responsibilities of the BPSEC protocol in protecting the BPSec protocol in protecting the confidentiality and integrity of the
confidentiality and integrity of the data against those threats data against those threats. This section provides additional
throughout the DTN. This section provides additional discussion on discussion on security threats that BPSec will face and describes how
security threats that BPSEC will face and describe in additional BPSec security mechanisms operate to mitigate these threats.
detail how BPSEC security mechanisms operate to mitigate these
threats.
It should be noted that BPSEC addresses only the security of data It should be noted that BPSEC addresses only the security of data
traveling over the DTN, not the underlying DTN itself. Additionally, traveling over the DTN, not the underlying DTN itself. Additionally,
BPSEC addresses neither the fitness of externally-defined BPSec addresses neither the fitness of externally-defined
cryptographic methods nor the security of their implementation. It cryptographic methods nor the security of their implementation. It
is the responsibility of the BPSEC implementer that appropriate is the responsibility of the BPSec implementer that appropriate
algorithms and methods are chosen. Furthermore, the BPSEC protocol algorithms and methods are chosen. Furthermore, the BPSec protocol
does not address threats which share computing resources with the DTN does not address threats which share computing resources with the DTN
and/or BPSEC software implementations. These threats may be and/or BPSec software implementations. These threats may be
malicious software or compromised libraries which intend to intercept malicious software or compromised libraries which intend to intercept
data or recover cryptographic material. Here, it is the data or recover cryptographic material. Here, it is the
responsibility of the BPSEC implementer to ensure that any responsibility of the BPSec implementer to ensure that any
cryptographic material, including shared secret or private keys, is cryptographic material, including shared secret or private keys, is
protected against access within both memory and storage devices. protected against access within both memory and storage devices.
The threat model described here is assumed to have a set of The threat model described here is assumed to have a set of
capabilities identical to those described by the Internet Threat capabilities identical to those described by the Internet Threat
Model in [RFC3552], but the BPSEC threat model is scoped to Model in [RFC3552], but the BPSec threat model is scoped to
illustrate threats specific to BPSEC operating within DTN illustrate threats specific to BPSec operating within DTN
environments and therefore focuses on man-in-the-middle (MITM) environments and therefore focuses on man-in-the-middle (MITM)
attackers. attackers.
8.1. Attacker Capabilities and Objectives 8.1. Attacker Capabilities and Objectives
BPSEC was designed to protect against MITM threats which may have BPSec was designed to protect against MITM threats which may have
access to a bundle during transit from its source, Alice, to its access to a bundle during transit from its source, Alice, to its
destination, Bob. A MITM node, Mallory, is a non-cooperative node destination, Bob. A MITM node, Mallory, is a non-cooperative node
operating on the DTN between Alice and Bob that has the ability to operating on the DTN between Alice and Bob that has the ability to
receive bundles, examine bundles, modify bundles, forward bundles, receive bundles, examine bundles, modify bundles, forward bundles,
and generate bundles at will in order to compromise the and generate bundles at will in order to compromise the
confidentiality or integrity of data within the DTN. For the confidentiality or integrity of data within the DTN. For the
purposes of this section, any MITM node is assumed to effectively be purposes of this section, any MITM node is assumed to effectively be
security-aware even if it does not implement the BPSec protocol. security-aware even if it does not implement the BPSec protocol.
There are three classes of MITM nodes which are differentiated based There are three classes of MITM nodes which are differentiated based
on their access to cryptographic material: on their access to cryptographic material:
skipping to change at page 28, line 39 skipping to change at page 30, line 9
will also be able to modify the received bundle, including non-BPSec will also be able to modify the received bundle, including non-BPSec
data such as the primary block, payload blocks, or block processing data such as the primary block, payload blocks, or block processing
control flags as defined in [BPBIS]. Mallory will be able to control flags as defined in [BPBIS]. Mallory will be able to
undertake activities which include modification of data within the undertake activities which include modification of data within the
blocks, replacement of blocks, addition of blocks, or removal of blocks, replacement of blocks, addition of blocks, or removal of
blocks. Within BPSec, both the BIB and BCB provide integrity blocks. Within BPSec, both the BIB and BCB provide integrity
protection mechanisms to detect or prevent data manipulation attempts protection mechanisms to detect or prevent data manipulation attempts
by Mallory. by Mallory.
The BIB provides that protection to another block which is its The BIB provides that protection to another block which is its
security target. The cryptographic mechansims used to generate the security target. The cryptographic mechanisms used to generate the
BIB should be strong against collision attacks and Mallory should not BIB should be strong against collision attacks and Mallory should not
have access to the cryptographic material used by the originating have access to the cryptographic material used by the originating
node to generate the BIB (e.g., K_A). If both of these conditions node to generate the BIB (e.g., K_A). If both of these conditions
are true, Mallory will be unable to modify the security target or the are true, Mallory will be unable to modify the security target or the
BIB and lead Bob to validate the security target as originating from BIB and lead Bob to validate the security target as originating from
Alice. Alice.
Since BPSec security operations are implemented by placing blocks in Since BPSec security operations are implemented by placing blocks in
a bundle, there is no in-band mechanism for detecting or correcting a bundle, there is no in-band mechanism for detecting or correcting
certain cases where Mallory removes blocks from a bundle. If Mallory certain cases where Mallory removes blocks from a bundle. If Mallory
skipping to change at page 30, line 27 skipping to change at page 32, line 5
BPSec relies on cipher suite capabilities to prevent replay or forged BPSec relies on cipher suite capabilities to prevent replay or forged
message attacks. A BCB used with appropriate cryptographic message attacks. A BCB used with appropriate cryptographic
mechanisms (e.g., a counter-based cipher mode) may provide replay mechanisms (e.g., a counter-based cipher mode) may provide replay
protection under certain circumstances. Alternatively, application protection under certain circumstances. Alternatively, application
data itself may be augmented to include mechanisms to assert data data itself may be augmented to include mechanisms to assert data
uniqueness and then protected with a BIB, a BCB, or both along with uniqueness and then protected with a BIB, a BCB, or both along with
other block data. In such a case, the receiving node would be able other block data. In such a case, the receiving node would be able
to validate the uniqueness of the data. to validate the uniqueness of the data.
9. Ciphersuite Authorship Considerations 9. Cipher Suite Authorship Considerations
Cipher suite developers or implementers should consider the diverse Cipher suite developers or implementers should consider the diverse
performance and conditions of networks on which the Bundle Protocol performance and conditions of networks on which the Bundle Protocol
(and therefore BPSec) will operate. Specifically, the delay and (and therefore BPSec) will operate. Specifically, the delay and
capacity of delay-tolerant networks can vary substantially. Cipher capacity of delay-tolerant networks can vary substantially. Cipher
suite developers should consider these conditions to better describe suite developers should consider these conditions to better describe
the conditions when those suites will operate or exhibit the conditions when those suites will operate or exhibit
vulnerability, and selection of these suites for implementation vulnerability, and selection of these suites for implementation
should be made with consideration to the reality. There are key should be made with consideration to the reality. There are key
differences that may limit the opportunity to leverage existing differences that may limit the opportunity to leverage existing
skipping to change at page 31, line 13 skipping to change at page 32, line 38
time may be extremely large. This may limit the utility of time may be extremely large. This may limit the utility of
session key generation mechanisms, such as Diffie-Hellman, as a session key generation mechanisms, such as Diffie-Hellman, as a
two-way handshake may not be feasible or reliable. two-way handshake may not be feasible or reliable.
o Opportunistic Access: Depending on the application environment, a o Opportunistic Access: Depending on the application environment, a
given endpoint may not be guaranteed to be accessible within a given endpoint may not be guaranteed to be accessible within a
certain amount of time. This may make asymmetric cryptographic certain amount of time. This may make asymmetric cryptographic
architectures which rely on a key distribution center or other architectures which rely on a key distribution center or other
trust center impractical under certain conditions. trust center impractical under certain conditions.
When developing new cipher suites for use with BPSec, the following
information SHOULD be considered for inclusion in these
specifications.
o New Parameters. Cipher suites MAY define new parameter types that
may appear in security blocks and used to configure the cipher
suite.
o New Results. Cipher suites MAY define new security result types
that may appear in security blocks and capture the outputs of the
cipher suite.
o New Canonicalizations. Cipher suites MAY define new
canonicalization algorithms as necessary.
10. Defining Other Security Blocks 10. Defining Other Security Blocks
Other security blocks (OSBs) may be defined and used in addition to Other security blocks (OSBs) may be defined and used in addition to
the security blocks identified in this specification. Both the usage the security blocks identified in this specification. Both the usage
of BIB, BCB, and any future OSBs MAY co-exist within a bundle and MAY of BIB, BCB, and any future OSBs MAY co-exist within a bundle and MAY
be considered in conformance with BPSec if each of the following be considered in conformance with BPSec if each of the following
requirements are met by any future identified security blocks. requirements are met by any future identified security blocks.
o Other security blocks (OSBs) MUST NOT reuse any enumerations o Other security blocks (OSBs) MUST NOT reuse any enumerations
identified in this specification, to include the block type codes identified in this specification, to include the block type codes
for BIB and BCB. for BIB and BCB.
o An OSB definition MUST state whether it can be the target of a BIB o An OSB definition MUST state whether it can be the target of a BIB
or a BCB. The definition MUST also state whether the OSB can or a BCB. The definition MUST also state whether the OSB can
target a BIB or a BCB. target a BIB or a BCB.
o An OSB definition MUST provide a deterinistic processing order in o An OSB definition MUST provide a deterministic processing order in
the event that a bundle is received containing BIBs, BCBs, and the event that a bundle is received containing BIBs, BCBs, and
OSBs. This processing order MUST NOT alter the BIB and BCB OSBs. This processing order MUST NOT alter the BIB and BCB
processing orders identified in this specification. processing orders identified in this specification.
o An OSB definition MUST provide a canonicalization algorithm if the o An OSB definition MUST provide a canonicalization algorithm if the
default non-primary-block canonicalization algorithm cannot be default non-primary-block canonicalization algorithm cannot be
used to generate a deterministic input for a cipher suite. This used to generate a deterministic input for a cipher suite. This
requirement MAY be waived if the OSB is defined so as to never be requirement MAY be waived if the OSB is defined so as to never be
the security target of a BIB or a BCB. the security target of a BIB or a BCB.
skipping to change at page 32, line 25 skipping to change at page 34, line 16
11. Conformance 11. Conformance
All implementations are strongly RECOMMENDED to provide some method All implementations are strongly RECOMMENDED to provide some method
of hop-by-hop verification by generating a hash to some canonical of hop-by-hop verification by generating a hash to some canonical
form of the bundle and placing an integrity signature on that form form of the bundle and placing an integrity signature on that form
using a BIB. using a BIB.
12. IANA Considerations 12. IANA Considerations
This protocol has fields that have been registered by IANA. Registries of Cipher Suite IDs, Cipher Suite Flags, Cipher Suite
Parameter Types, and Security Result Types will be required.
12.1. Bundle Block Types 12.1. Bundle Block Types
This specification allocates three block types from the existing This specification allocates two block types from the existing
"Bundle Block Types" registry defined in [RFC6255] . "Bundle Block Types" registry defined in [RFC6255] .
Additional Entries for the Bundle Block-Type Codes Registry: Additional Entries for the Bundle Block-Type Codes Registry:
+-------+-----------------------------+---------------+ +-------+-----------------------------+---------------+
| Value | Description | Reference | | Value | Description | Reference |
+-------+-----------------------------+---------------+ +-------+-----------------------------+---------------+
| 2 | Block Integrity Block | This document | | TBD | Block Integrity Block | This document |
| 3 | Block Confidentiality Block | This document | | TBD | Block Confidentiality Block | This document |
+-------+-----------------------------+---------------+ +-------+-----------------------------+---------------+
Table 2
12.2. Cipher Suite Flags
This protocol has a cipher suite flags field and certain flags are
defined. An IANA registry has been set up as follows.
The registration policy for this registry is: Specification Required
The Value range is: Variable Length
Cipher Suite Flag Registry:
+--------------------------+-------------------------+--------------+
| Bit Position (right to | Description | Reference |
| left) | | |
+--------------------------+-------------------------+--------------+
| 0 | Block contains result | This |
| | | document |
| 1 | Block Contains | This |
| | parameters | document |
| 2 | Source EID ref present | This |
| | | document |
| >3 | Reserved | This |
| | | document |
+--------------------------+-------------------------+--------------+
Table 3 Table 3
12.3. Parameters and Results
This protocol has fields for cipher suite parameters and results.
The field is a type-length-value triple and a registry is required
for the "type" sub-field. The values for "type" apply to both the
cipher suite parameters and the cipher suite results fields. Certain
values are defined. An IANA registry has been set up as follows.
The registration policy for this registry is: Specification Required
The Value range is: 8-bit unsigned integer.
Cipher Suite Parameters and Results Type Registry:
+---------+-------------------------------------------+-------------+
| Value | Description | Reference |
+---------+-------------------------------------------+-------------+
| 0 | reserved | Section 3.6 |
| 1 | initialization vector (IV) | Section 3.6 |
| 2 | reserved | Section 3.6 |
| 3 | key information | Section 3.6 |
| 4 | content-range (pair of Unsigned Integers) | Section 3.6 |
| 5 | integrity signature | Section 3.6 |
| 6 | unassigned | Section 3.6 |
| 7 | salt | Section 3.6 |
| 8 | BCB integrity check value (ICV) | Section 3.6 |
| 9-191 | reserved | Section 3.6 |
| 192-250 | private use | Section 3.6 |
| 251-255 | reserved | Section 3.6 |
+---------+-------------------------------------------+-------------+
Table 4
13. References 13. References
13.1. Normative References 13.1. Normative References
[BPBIS] Burleigh, S., Fall, K., and E. Birrane, "Bundle Protocol", [BPBIS] Burleigh, S., Fall, K., and E. Birrane, "Bundle Protocol",
draft-ietf-dtn-bpbis-04 (work in progress), July 2016. draft-ietf-dtn-bpbis-06 (work in progress), July 2016.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC
Text on Security Considerations", BCP 72, RFC 3552, Text on Security Considerations", BCP 72, RFC 3552,
DOI 10.17487/RFC3552, July 2003, DOI 10.17487/RFC3552, July 2003,
<http://www.rfc-editor.org/info/rfc3552>. <http://www.rfc-editor.org/info/rfc3552>.
[RFC6255] Blanchet, M., "Delay-Tolerant Networking Bundle Protocol [RFC6255] Blanchet, M., "Delay-Tolerant Networking Bundle Protocol
IANA Registries", RFC 6255, May 2011. IANA Registries", RFC 6255, May 2011.
13.2. Informative References 13.2. Informative References
[BPBISCBOR]
Burleigh, S., "Bundle Protocol CBOR Representation
Specification", draft-burleigh-dtn-rs-cbor-01 (work in
progress), April 2016.
[RFC4838] Cerf, V., Burleigh, S., Hooke, A., Torgerson, L., Durst, [RFC4838] Cerf, V., Burleigh, S., Hooke, A., Torgerson, L., Durst,
R., Scott, K., Fall, K., and H. Weiss, "Delay-Tolerant R., Scott, K., Fall, K., and H. Weiss, "Delay-Tolerant
Networking Architecture", RFC 4838, April 2007. Networking Architecture", RFC 4838, April 2007.
[RFC6257] Symington, S., Farrell, S., Weiss, H., and P. Lovell, [RFC6257] Symington, S., Farrell, S., Weiss, H., and P. Lovell,
"Bundle Security Protocol Specification", RFC 6257, May "Bundle Security Protocol Specification", RFC 6257, May
2011. 2011.
[SBSP] Birrane, E., "Streamlined Bundle Security Protocol", [SBSP] Birrane, E., "Streamlined Bundle Security Protocol",
draft-birrane-dtn-sbsp-01 (work in progress), October draft-birrane-dtn-sbsp-01 (work in progress), October
 End of changes. 163 change blocks. 
718 lines changed or deleted 708 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/