draft-ietf-dtn-bpsec-06.txt | draft-ietf-dtn-bpsec-07.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, 2018 October 30, 2017 | Expires: January 2, 2019 July 1, 2018 | |||
Bundle Protocol Security Specification | Bundle Protocol Security Specification | |||
draft-ietf-dtn-bpsec-06 | draft-ietf-dtn-bpsec-07 | |||
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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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, 2018. | This Internet-Draft will expire on January 2, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://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. Supported Security Services . . . . . . . . . . . . . . . 3 | 1.1. Supported Security Services . . . . . . . . . . . . . . . 3 | |||
1.2. Specification Scope . . . . . . . . . . . . . . . . . . . 4 | 1.2. Specification Scope . . . . . . . . . . . . . . . . . . . 4 | |||
1.3. Related Documents . . . . . . . . . . . . . . . . . . . . 5 | 1.3. Related Documents . . . . . . . . . . . . . . . . . . . . 5 | |||
1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2. Design Decisions . . . . . . . . . . . . . . . . . . . . . . 6 | 2. Design Decisions . . . . . . . . . . . . . . . . . . . . . . 6 | |||
2.1. Block-Level Granularity . . . . . . . . . . . . . . . . . 6 | 2.1. Block-Level Granularity . . . . . . . . . . . . . . . . . 7 | |||
2.2. Multiple Security Sources . . . . . . . . . . . . . . . . 7 | 2.2. Multiple Security Sources . . . . . . . . . . . . . . . . 7 | |||
2.3. Mixed Security Policy . . . . . . . . . . . . . . . . . . 7 | 2.3. Mixed Security Policy . . . . . . . . . . . . . . . . . . 8 | |||
2.4. User-Selected Cipher Suites . . . . . . . . . . . . . . . 8 | 2.4. User-Selected Cipher Suites . . . . . . . . . . . . . . . 8 | |||
2.5. Deterministic Processing . . . . . . . . . . . . . . . . 8 | 2.5. Deterministic Processing . . . . . . . . . . . . . . . . 8 | |||
3. Security Blocks . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Security Blocks . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.1. Block Definitions . . . . . . . . . . . . . . . . . . . . 8 | 3.1. Block Definitions . . . . . . . . . . . . . . . . . . . . 9 | |||
3.2. Uniqueness . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.2. Uniqueness . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.3. Target Multiplicity . . . . . . . . . . . . . . . . . . . 9 | 3.3. Target Multiplicity . . . . . . . . . . . . . . . . . . . 10 | |||
3.4. Target Identification . . . . . . . . . . . . . . . . . . 10 | 3.4. Target Identification . . . . . . . . . . . . . . . . . . 11 | |||
3.5. Block Representation . . . . . . . . . . . . . . . . . . 10 | 3.5. Block Representation . . . . . . . . . . . . . . . . . . 11 | |||
3.6. Abstract Security Block . . . . . . . . . . . . . . . . . 11 | 3.6. Abstract Security Block . . . . . . . . . . . . . . . . . 11 | |||
3.7. Block Integrity Block . . . . . . . . . . . . . . . . . . 14 | 3.7. Block Integrity Block . . . . . . . . . . . . . . . . . . 14 | |||
3.8. Block Confidentiality Block . . . . . . . . . . . . . . . 15 | 3.8. Block Confidentiality Block . . . . . . . . . . . . . . . 15 | |||
3.9. Block Interactions . . . . . . . . . . . . . . . . . . . 16 | 3.9. Block Interactions . . . . . . . . . . . . . . . . . . . 16 | |||
3.10. Cipher Suite Parameter and Result Identification . . . . 17 | 3.10. Cipher Suite Parameter and Result Identification . . . . 18 | |||
3.11. BSP Block Example . . . . . . . . . . . . . . . . . . . . 18 | 3.11. BSP Block Examples . . . . . . . . . . . . . . . . . . . 18 | |||
4. Canonical Forms . . . . . . . . . . . . . . . . . . . . . . . 19 | 3.11.1. Example 1: Constructing a Bundle with Security . . . 18 | |||
5. Security Processing . . . . . . . . . . . . . . . . . . . . . 20 | 3.11.2. Example 2: Adding More Security At A New Node . . . 19 | |||
5.1. Bundles Received from Other Nodes . . . . . . . . . . . . 20 | 4. Canonical Forms . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
5.1.1. Receiving BCB Blocks . . . . . . . . . . . . . . . . 20 | 5. Security Processing . . . . . . . . . . . . . . . . . . . . . 22 | |||
5.1.2. Receiving BIB Blocks . . . . . . . . . . . . . . . . 21 | 5.1. Bundles Received from Other Nodes . . . . . . . . . . . . 22 | |||
5.2. Bundle Fragmentation and Reassembly . . . . . . . . . . . 22 | 5.1.1. Receiving BCBs . . . . . . . . . . . . . . . . . . . 22 | |||
6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 22 | 5.1.2. Receiving BIBs . . . . . . . . . . . . . . . . . . . 23 | |||
7. Security Policy Considerations . . . . . . . . . . . . . . . 23 | 5.2. Bundle Fragmentation and Reassembly . . . . . . . . . . . 24 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | 6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
8.1. Attacker Capabilities and Objectives . . . . . . . . . . 24 | 7. Security Policy Considerations . . . . . . . . . . . . . . . 24 | |||
8.2. Attacker Behaviors and BPSec Mitigations . . . . . . . . 25 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | |||
8.2.1. Eavesdropping Attacks . . . . . . . . . . . . . . . . 25 | 8.1. Attacker Capabilities and Objectives . . . . . . . . . . 26 | |||
8.2.2. Modification Attacks . . . . . . . . . . . . . . . . 26 | 8.2. Attacker Behaviors and BPSec Mitigations . . . . . . . . 27 | |||
8.2.3. Topology Attacks . . . . . . . . . . . . . . . . . . 27 | 8.2.1. Eavesdropping Attacks . . . . . . . . . . . . . . . . 27 | |||
8.2.4. Message Injection . . . . . . . . . . . . . . . . . . 28 | 8.2.2. Modification Attacks . . . . . . . . . . . . . . . . 28 | |||
9. Cipher Suite Authorship Considerations . . . . . . . . . . . 28 | 8.2.3. Topology Attacks . . . . . . . . . . . . . . . . . . 29 | |||
10. Defining Other Security Blocks . . . . . . . . . . . . . . . 29 | 8.2.4. Message Injection . . . . . . . . . . . . . . . . . . 29 | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 | 9. Cipher Suite Authorship Considerations . . . . . . . . . . . 30 | |||
11.1. Bundle Block Types . . . . . . . . . . . . . . . . . . . 30 | 10. Defining Other Security Blocks . . . . . . . . . . . . . . . 31 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 31 | 11.1. Bundle Block Types . . . . . . . . . . . . . . . . . . . 32 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 31 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 31 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 33 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 | 12.2. Informative References . . . . . . . . . . . . . . . . . 33 | |||
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 34 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | ||||
1. Introduction | 1. Introduction | |||
This document defines security features for the Bundle Protocol (BP) | This document defines security features for the Bundle Protocol (BP) | |||
[BPBIS] and is intended for use in Delay Tolerant Networks (DTNs) to | [I-D.ietf-dtn-bpbis] and is intended for use in Delay Tolerant | |||
provide end-to-end security services. | Networks (DTNs) to provide end-to-end security services. | |||
The Bundle Protocol specification [BPBIS] defines DTN as referring to | The Bundle Protocol specification [I-D.ietf-dtn-bpbis] defines DTN as | |||
"a networking architecture providing communications in and/or through | referring to "a networking architecture providing communications in | |||
highly stressed environments" where "BP may be viewed as sitting at | and/or through highly stressed environments" where "BP may be viewed | |||
the application layer of some number of constituent networks, forming | as sitting at the application layer of some number of constituent | |||
a store-carry-forward overlay network". The term "stressed" | networks, forming a store-carry-forward overlay network". The term | |||
environment refers to multiple challenging conditions including | "stressed" environment refers to multiple challenging conditions | |||
intermittent connectivity, large and/or variable delays, asymmetric | including intermittent connectivity, large and/or variable delays, | |||
data rates, and high bit error rates. | asymmetric data rates, and high bit error rates. | |||
The BP might be deployed such that portions of the network cannot be | The BP might be deployed such that portions of the network cannot be | |||
trusted, posing the usual security challenges related to | trusted, posing the usual security challenges related to | |||
confidentiality and integrity. However, the stressed nature of the | confidentiality and integrity. However, the stressed nature of the | |||
BP operating environment imposes unique conditions where usual | BP operating environment imposes unique conditions where usual | |||
transport security mechanisms may not be sufficient. For example, | transport security mechanisms may not be sufficient. For example, | |||
the store-carry-forward nature of the network may require protecting | the store-carry-forward nature of the network may require protecting | |||
data at rest, preventing unauthorized consumption of critical | data at rest, preventing unauthorized consumption of critical | |||
resources such as storage space, and operating without regular | resources such as storage space, and operating without regular | |||
contact with a centralized security oracle (such as a certificate | contact with a centralized security oracle (such as a certificate | |||
authority). | authority). | |||
An end-to-end security service is needed that operates in all of the | An end-to-end security service is needed that operates in all of the | |||
environments where the BP operates. | environments where the BP operates. | |||
1.1. Supported Security Services | 1.1. Supported Security Services | |||
BPSec provides end-to-end integrity and confidentiality services for | BPSec provides end-to-end integrity and confidentiality services for | |||
BP bundles. | BP bundles, as defined in this section. | |||
Integrity services ensure that protected data within a bundle are not | Integrity services ensure that target data within a bundle are not | |||
changed from the time they are provided to the network to the time | changed from the time they are provided to the network to the time | |||
they are delivered at their destination. Data changes may be caused | they are delivered at their destination. Data changes may be caused | |||
by processing errors, environmental conditions, or intentional | by processing errors, environmental conditions, or intentional | |||
manipulation. | manipulation. In the context of BPSec, integrity services apply to | |||
plain-text in the bundle. | ||||
Confidentiality services ensure that protected data is unintelligible | Confidentiality services ensure that target data is unintelligible to | |||
to nodes in the DTN, except for authorized nodes possessing special | nodes in the DTN, except for authorized nodes possessing special | |||
information. Confidentiality, in this context, applies to the | information. This generally means producing cipher-text from plain- | |||
contents of protected data and does not extend to hiding the fact | text and generating authentication information for that cipher-text. | |||
that protected data exist in the bundle. | Confidentiality, in this context, applies to the contents of target | |||
data and does not extend to hiding the fact that confidentiality | ||||
exists in the bundle. | ||||
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 | |||
detect and therefore hop-by-hop authentication is difficult or | detect and therefore hop-by-hop authentication is difficult or | |||
impossible to enforce. | impossible to enforce. | |||
skipping to change at page 4, line 38 ¶ | skipping to change at page 4, line 42 ¶ | |||
as BP extension blocks, and the rules for adding, removing, and | as BP extension blocks, and the rules for adding, removing, and | |||
processing these blocks at various points during the bundle's | processing these blocks at various points during the bundle's | |||
traversal of the DTN. | traversal of the DTN. | |||
BPSec applies only to those nodes that implement it, known as | BPSec applies only to those nodes that implement it, known as | |||
"security-aware" nodes. There might be other nodes in the DTN that | "security-aware" nodes. There might be other nodes in the DTN that | |||
do not implement BPSec. While all nodes in a BP overlay can exchange | do not implement BPSec. While all nodes in a BP overlay can exchange | |||
bundles, BPSec security operations can only happen at BPSec security- | bundles, BPSec security operations can only happen at BPSec security- | |||
aware nodes. | aware nodes. | |||
This specification does not address individual cipher suite | BPSec addresses only the security of data traveling over the DTN, not | |||
implementations. Different networking conditions and operational | the underlying DTN itself. Furthermore, while the BPSec protocol can | |||
provide security-at-rest in a store-carry-forward network, it does | ||||
not address threats which share computing resources with the DTN and/ | ||||
or BPSec software implementations. These threats may be malicious | ||||
software or compromised libraries which intend to intercept data or | ||||
recover cryptographic material. Here, it is the responsibility of | ||||
the BPSec implementer to ensure that any cryptographic material, | ||||
including shared secret or private keys, is protected against access | ||||
within both memory and storage devices. | ||||
This specification addresses neither the fitness of externally- | ||||
defined cryptographic methods nor the security of their | ||||
implementation. Different networking conditions and operational | ||||
considerations require varying strengths of security mechanism such | considerations require varying strengths of security mechanism such | |||
that mandating a cipher suite in this specification may result in too | that mandating a cipher suite in this specification may result in too | |||
much security for some networks and too little security in others. | much security for some networks and too little security in others. | |||
It is expected that separate documents will be standardized to define | It is expected that separate documents will be standardized to define | |||
cipher suites compatible with BPSec, to include operational cipher | cipher suites compatible with BPSec, to include operational cipher | |||
suites and interoperability cipher suites. | suites and interoperability cipher suites. | |||
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. Similar | policy and does not provide a security policy for the BPSec. Similar | |||
to cipher suites, security policies are based on the nature and | to cipher suites, security policies are based on the nature and | |||
capabilities of individual networks and network operational concepts. | capabilities of individual networks and network operational concepts. | |||
This specification does provide policy considerations when building a | This specification does provide policy considerations when building a | |||
security policy. | security policy. | |||
This specification does not address how to combine the BPSec security | With the exception of the Bundle Protocol, this specification does | |||
blocks with other protocols, other BP extension blocks, or other best | not address how to combine the BPSec security blocks with other | |||
practices to achieve security in any particular network | protocols, other BP extension blocks, or other best practices to | |||
implementation. | achieve security in any particular network implementation. | |||
1.3. Related Documents | 1.3. 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 DTNs and identifies certain security assumptions | architecture for DTNs and identifies certain security assumptions | |||
made by existing Internet protocols that are not valid in a DTN. | made by existing Internet protocols that are not valid in a DTN. | |||
The Bundle Protocol [BPBIS] defines the format and processing of | The Bundle Protocol [I-D.ietf-dtn-bpbis] defines the format and | |||
bundles, defines the extension block format used to represent BPSec | processing of bundles, defines the extension block format used to | |||
security blocks, and defines the canonicalization algorithms used by | represent BPSec security blocks, and defines the canonicalization | |||
this specification. | algorithms used by this specification. | |||
The Bundle Security Protocol [RFC6257] and Streamlined Bundle | The Bundle Security Protocol [RFC6257] and Streamlined Bundle | |||
Security Protocol [SBSP] documents introduced the concepts of using | Security Protocol [I-D.birrane-dtn-sbsp] documents introduced the | |||
BP extension blocks for security services in a DTN. The BPSec is a | concepts of using BP extension blocks for security services in a DTN. | |||
continuation and refinement of these documents. | The BPSec is a continuation and refinement of these documents. | |||
1.4. Terminology | 1.4. 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 terminology either unique to the BPSec or | This section defines terminology either unique to the BPSec or | |||
otherwise necessary for understanding the concepts defined in this | otherwise necessary for understanding the concepts defined in this | |||
skipping to change at page 6, line 49 ¶ | skipping to change at page 7, line 18 ¶ | |||
blocks within a bundle to have different security services applied to | blocks within a bundle to have different security services applied to | |||
them. | them. | |||
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 represent different types of information with different | |||
security needs. | security needs. | |||
For example, a payload block might be encrypted to protect its | For example, a payload block might be encrypted to protect its | |||
contents and an extension block containing summary information | contents and an extension block containing summary information | |||
related to the payload might be integrity signed but unencrypted to | related to the payload might be integrity signed but unencrypted to | |||
provide waypoints access to payload-related data without providing | provide waypoints access to payload-related data without providing | |||
access to the payload. | access to the payload. | |||
2.2. Multiple Security Sources | 2.2. Multiple Security Sources | |||
A bundle MAY have multiple security blocks and these blocks MAY have | A bundle can have multiple security blocks and these blocks can have | |||
different security sources. | different security sources. BPSec implementations MUST NOT assume | |||
that all blocks in a bundle have the same security operations and/or | ||||
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 adds a | at any time during its existence in the DTN. When a waypoint 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 may add a security service to an existing extension block, | waypoint MAY add a security service to an existing extension block, | |||
consistent with its security policy. For example, a node | consistent with its security policy. | |||
representing a boundary between a trusted part of the network and an | ||||
untrusted part of the network may wish to apply payload encryption | ||||
for bundles leaving the trusted portion of the network. | ||||
When a waypoint adds a security service to the bundle, the waypoint | When a waypoint adds a security service to the bundle, the waypoint | |||
is the security source for that service. The security block(s) which | is the security source for that service. The security block(s) which | |||
represent that service in the bundle may need to record this security | represent that service in the bundle may need to record this security | |||
source as the bundle destination might need this information for | source as the bundle destination might need this information for | |||
processing. For example, a destination node might interpret policy | processing. For example, a destination node might interpret policy | |||
as it related to security blocks as a function of the security source | as it related to security blocks as a function of the security source | |||
for that block. | for that block. | |||
For example, a bundle source may choose to apply an integrity service | ||||
to its plain-text payload. Later a waypoint node, representing a | ||||
gateway to an insecure portion of the DTN, may receive the bundle and | ||||
choose to apply a confidentiality service. In this case, the | ||||
integrity security source is the bundle source and the | ||||
confidentiality security source is the waypoint node. | ||||
2.3. Mixed Security Policy | 2.3. Mixed Security Policy | |||
The security policy enforced by nodes in the DTN MAY differ. | The security policy enforced by nodes in the DTN may differ. | |||
Some waypoints may not be security aware and will not be able to | Some waypoints might not be security aware and will not be able to | |||
process security blocks. Therefore, security blocks must have their | 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 waypoints | appropriately by non-security-aware waypoints. | |||
Some waypoints will have security policies that require evaluating | Some waypoints will have security policies that require evaluating | |||
security services even if they are not the bundle destination or the | security services even if they are not the bundle destination or the | |||
final intended destination of the service. For example, a waypoint | final intended destination of the service. For example, a waypoint | |||
may choose to verify an integrity service even though the waypoint is | could choose to verify an integrity service even though the waypoint | |||
not the bundle destination and the integrity service will be needed | is not the bundle destination and the integrity service will be | |||
by other node along the bundle's path. | needed by other nodes along the bundle's path. | |||
Some waypoints will determine, through policy, that they are the | Some waypoints will determine, through policy, that they are the | |||
intended recipient of the security service and terminate the security | intended recipient of the security service and terminate the security | |||
service in the bundle. For example, a gateway node may determine | service in the bundle. For example, a gateway node could determine | |||
that, even though it is not the destination of the bundle, it should | that, even though it is not the destination of the bundle, it should | |||
verify and remove a particular integrity service or attempt to | verify and remove a particular integrity service or attempt to | |||
decrypt a confidentiality service, before forwarding the bundle along | decrypt a confidentiality service, before forwarding the bundle along | |||
its path. | its path. | |||
Some waypoints may understand security blocks but refuse to process | Some waypoints could understand security blocks but refuse to process | |||
them unless they are the bundle destination. | them unless they are the bundle destination. | |||
2.4. User-Selected Cipher Suites | 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, cipher-text, 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 | |||
select different cipher suites to implement security services. For | select different cipher suites to implement security services. For | |||
example, some users might prefer a SHA2 hash function for integrity | example, some users might prefer a SHA2 hash function for integrity | |||
whereas other users may prefer a SHA3 hash function instead. The | whereas other users might prefer a SHA3 hash function instead. The | |||
security services defined in this specification must provide a | security services defined in this specification must provide a | |||
mechanism for identifying what cipher suite has been used to populate | mechanism for identifying what cipher suite has been used to populate | |||
a security block. | a security block. | |||
2.5. Deterministic Processing | 2.5. Deterministic Processing | |||
Whenever a node determines that it must process more than one | Whenever a node determines that it must process more than one | |||
security block in a received bundle (either because the policy at a | security block in a received bundle (either because the policy at a | |||
waypoint states that it should process security blocks or because the | waypoint states that it should process security blocks or because the | |||
node is the bundle destination) the order in which security blocks | node is the bundle destination) the order in which security blocks | |||
skipping to change at page 8, line 43 ¶ | skipping to change at page 9, line 17 ¶ | |||
of security services, even when doing so results in a loss of | of security services, even when doing so results in a loss of | |||
flexibility. | flexibility. | |||
3. Security Blocks | 3. Security Blocks | |||
3.1. Block Definitions | 3.1. Block Definitions | |||
This specification defines two types of security block: the Block | This specification defines two types of security block: the Block | |||
Integrity Block (BIB) and the Block Confidentiality Block (BCB). | Integrity Block (BIB) and the Block 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 plain-text security | |||
The integrity information in the BIB MAY be verified by any node | target(s). The integrity information in the BIB MAY be verified | |||
in between the BIB security source and the bundle destination. | by any node along the bundle path from the BIB security source to | |||
Security-aware waypoints may add or remove BIBs from bundles in | the bundle destination. Security-aware waypoints add or remove | |||
accordance with their security policy. | BIBs from bundles in accordance with their security policy. BIBs | |||
are never used to sign the cipher-text provided by a BCB. | ||||
The BCB indicates that the security target(s) have been encrypted | The BCB indicates that the security target(s) have been encrypted | |||
at the BCB security source in order to protect its content while | at the BCB security source in order to protect their content while | |||
in transit. The BCB may be decrypted by security-aware nodes in | in transit. The BCB is decrypted by security-aware nodes in the | |||
the network, up to and including the bundle destination, as a | network, up to and including the bundle destination, as a matter | |||
matter of security policy. | of security policy. BCBs additionally provide authentication | |||
mechanisms for the cipher-text they generate. | ||||
3.2. Uniqueness | 3.2. Uniqueness | |||
Security operations in a bundle MUST be unique - the same security | Security operations in a bundle MUST be unique; the same security | |||
service MUST NOT be applied to a security target more than once in a | service MUST NOT be applied to a security target more than once in a | |||
bundle. Since a security operation is represented as a security | bundle. Since a security operation is represented as a security | |||
block, this limits what security blocks may be added to a bundle: if | block, this limits what security blocks may be added to a bundle: if | |||
adding a security block to a bundle would cause some other security | adding a security block to a bundle would cause some other security | |||
block to no longer represent a unique security operation then the new | block to no longer represent a unique security operation then the new | |||
block MUST NOT be added. | block MUST NOT be added. It is important to note that any cipher- | |||
text integrity mechanism supplied by the BCB is considered part of | ||||
the confidentiality service and, therefore, unique from the plain- | ||||
text integrity service provided by the BIB. | ||||
If multiple security blocks representing the same security operation | If multiple security blocks representing the same security operation | |||
were allowed in a bundle at the same time, there would exist | were allowed in a bundle at the same time, there would exist | |||
ambiguity regarding block processing order and the property of | ambiguity regarding block processing order and the property of | |||
deterministic processing blocks would be lost. | deterministic processing blocks would be lost. | |||
Using the notation OP(service,target), several examples illustrate | Using the notation OP(service,target), several examples illustrate | |||
this uniqueness requirement. | this uniqueness requirement. | |||
o Signing the payload twice: The two operations OP(integrity, | o Signing the payload twice: The two operations OP(integrity, | |||
skipping to change at page 9, line 44 ¶ | skipping to change at page 10, line 24 ¶ | |||
both be present in the bundle at the same time. | both be present in the bundle at the same time. | |||
o Different Services on same block: The two operations | o Different Services on same block: The two operations | |||
OP(integrity,payload) and OP(confidentiality, payload) are not | OP(integrity,payload) and OP(confidentiality, payload) are not | |||
inherently redundant and may both be present in the bundle at the | inherently redundant and may both be present in the bundle at the | |||
same time, pursuant to other processing rules in this | same time, pursuant to other processing rules in this | |||
specification. | specification. | |||
3.3. Target Multiplicity | 3.3. Target Multiplicity | |||
Under special circumstances, a single security block may represent | Under special circumstances, a single security block MAY represent | |||
multiple security operations as a way of reducing the overall number | multiple security operations as a way of reducing the overall number | |||
of security blocks present in a bundle. In these circumstances, | of security blocks present in a bundle. In these circumstances, | |||
reducing the number of security blocks in the bundle reduces the | reducing the number of security blocks in the bundle reduces the | |||
amount of redundant information in the bundle. | amount of redundant information in the bundle. | |||
A set of security operations may be represented by a single security | A set of security operations can be represented by a single security | |||
block if and only if the following conditions are true. | block when all of the following conditions are true. | |||
o The security operations apply the same security service. For | o The security operations apply the same security service. For | |||
example, they are all integrity operations or all confidentiality | example, they are all integrity operations or all confidentiality | |||
operations. | operations. | |||
o The cipher suite parameters and key information for the security | o The cipher suite parameters and key information for the security | |||
operations are identical. | operations are identical. | |||
o The security source for the security operations is the same. | o The security source for the security operations is the same. | |||
Meaning the set of operations are being added/removed by the same | Meaning the set of operations are being added/removed by the same | |||
skipping to change at page 10, line 35 ¶ | skipping to change at page 11, line 14 ¶ | |||
different (e.g., the security targets) are represented individually. | different (e.g., the security targets) are represented individually. | |||
When the security block is processed all security operations | When the security block is processed all security operations | |||
represented by the security block MUST be applied/evaluated at that | represented by the security block MUST be applied/evaluated at that | |||
time. | time. | |||
3.4. Target Identification | 3.4. Target Identification | |||
A security target is a block in the bundle to which a security | A security target is a block in the bundle to which a security | |||
service applies. This target must be uniquely and unambiguously | service applies. This target must be uniquely and unambiguously | |||
identifiable when processing a security block. The definition of the | identifiable when processing a security block. The definition of the | |||
extension block header from [BPBIS] provides a "Block Number" field | extension block header from [I-D.ietf-dtn-bpbis] provides a "Block | |||
suitable for this purpose. Therefore, a security target in a | Number" field suitable for this purpose. Therefore, a security | |||
security block MUST be represented as the Block Number of the target | target in a security block MUST be represented as the Block Number of | |||
block. | the target block. | |||
3.5. Block Representation | 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 [I-D.ietf-dtn-bpbis]. That is, each security block is comprised | |||
following elements: | of the 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 (if present) | 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 | |||
Security-specific information for a security block is captured in the | Security-specific information for a security block is captured in the | |||
"Block Type Specific Data Fields". | "Block Type Specific Data Fields". | |||
3.6. Abstract Security Block | 3.6. Abstract Security Block | |||
The structure of the security-specific portions of a security block | The structure of the security-specific portions of a security block | |||
skipping to change at page 12, line 20 ¶ | skipping to change at page 12, line 48 ¶ | |||
Parameters Present Flag. | Parameters Present Flag. | |||
In this field, a value of 1 indicates that the associated | In this field, a value of 1 indicates that the associated | |||
security block field MUST be included in the security block. A | security block field MUST be included in the security block. A | |||
value of 0 indicates that the associated security block field | value of 0 indicates that the associated security block field | |||
MUST NOT be in the security block. | MUST NOT be in the security block. | |||
Security Source (Optional Field): | Security Source (Optional Field): | |||
This field identifies the Endpoint that inserted the security | This field identifies the Endpoint that inserted the security | |||
block in the bundle. If the security source field is not | block in the bundle. If the security source field is not | |||
present then the source MAY be inferred from other information, | present then the source MUST be inferred from other | |||
such as the bundle source or the previous hop, as defined by | information, such as the bundle source, previous hop, or other | |||
security policy. This field SHALL be represented by a CBOR | values defined by security policy. This field SHALL be | |||
array in accordance with [BPBIS] rules for representing | represented by a CBOR array in accordance with | |||
Endpoint Identifiers (EIDs). | ||||
[I-D.ietf-dtn-bpbis] rules for representing Endpoint | ||||
Identifiers (EIDs). | ||||
Cipher Suite Parameters (Optional Field): | Cipher Suite Parameters (Optional Field): | |||
This field captures one or more cipher suite parameters that | This field captures one or more cipher suite parameters that | |||
should be provided to security-aware nodes when processing the | should be provided to security-aware nodes when processing the | |||
security service described by this security block. This field | security service described by this security block. This field | |||
SHALL be represented by a CBOR array. Each entry in this array | SHALL be represented by a CBOR array. Each entry in this array | |||
is a single cipher suite parameter. A single cipher suite | is a single cipher suite parameter. A single cipher suite | |||
parameter SHALL also be represented as a CBOR array comprising | parameter SHALL also be represented as a CBOR array comprising | |||
a 2-tuple of the id and value of the parameter, as follows. | a 2-tuple of the id and value of the parameter, as follows. | |||
skipping to change at page 14, line 35 ¶ | skipping to change at page 15, line 8 ¶ | |||
reference a security block defined in this specification (e.g., a | reference a security block defined in this specification (e.g., a | |||
BIB or a BCB). | BIB or a BCB). | |||
o 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. | |||
o 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 be specified as part of | |||
of key information described in Section 3.10. | key information described in Section 3.10. | |||
Notes: | Notes: | |||
o It is RECOMMENDED that cipher suite designers carefully consider | o It is RECOMMENDED that cipher suite designers carefully consider | |||
the effect of setting flags that either discard the block or | the effect of setting flags that either discard the block or | |||
delete the bundle in the event that this block cannot be | delete the bundle in the event that this block cannot be | |||
processed. | 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 | |||
skipping to change at page 15, line 27 ¶ | skipping to change at page 15, line 49 ¶ | |||
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. | fragment represents cipher-text. | |||
The Block Type Specific Data Fields follow the structure of the | The Block Type Specific Data Fields follow the structure of the | |||
ASB. | ASB. | |||
A security target listed in the Security Targets field MAY | A security target listed in the Security Targets field can | |||
reference the payload block, a non-security extension block, or a | reference the payload block, a non-security extension block, or a | |||
BIB block. A BCB MUST NOT include another BCB as a security | BIB. A BCB MUST NOT include another BCB as a security target. A | |||
target. A BCB MUST NOT target the primary block. | BCB MUST NOT target the primary block. | |||
The Cipher Suite Id MUST be documented as a confidentiality cipher | The Cipher Suite Id MUST be documented as a confidentiality cipher | |||
suite. | suite that supports authenticated encryption with associated data | |||
(AEAD). | ||||
Any additional bytes generated from applying the cipher suite to a | Additional information created by a cipher suite (such as | |||
security target (such as additional authenticated text) MAY be | additional authenticated data) can be placed either in a security | |||
placed in an appropriate security result (e.g., an Integrity Check | result field or in the generated cipher-text. The determination | |||
Value) in accordance with cipher suite and security policy. | of where to place these data is a function of the cipher suite | |||
used. | ||||
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 be specified as part of | |||
of key information described in Section 3.10. | key information described in Section 3.10. | |||
The BCB modifies the contents of its security target(s). When a BCB | The BCB modifies the contents of its security target(s). When a BCB | |||
is 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 Block Type Specific Data | Following encryption, the security target Block Type Specific Data | |||
Fields contains cipher-text, not plain-text. Other block fields | field contains cipher-text, not plain-text. Other block fields | |||
remain unmodified, with the exception of the Block Data Length field, | 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 | which MUST be updated to reflect the new length of the Block Type | |||
the block (see below). | Specific Data field. | |||
Fragmentation, reassembly, and custody transfer are adversely | ||||
affected by a change in size of the payload block due to ambiguity | ||||
about what byte range of the block is actually in any particular | ||||
fragment. Therefore, when the security target of a BCB is the bundle | ||||
payload, the BCB MUST NOT alter the size of the payload block body | ||||
data. This "in-place" encryption allows fragmentation, reassembly, | ||||
and custody transfer to operate without knowledge of whether or not | ||||
encryption has occurred. | ||||
If a BCB cannot alter the size of the security target (e.g., the | ||||
security target is the payload block or block length modifications | ||||
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 | o It is RECOMMENDED that cipher suite designers carefully consider | |||
the effect of setting flags that either discard the block or | the effect of setting flags that either discard the block or | |||
delete the bundle in the event that this block cannot be | delete the bundle in the event that this block cannot be | |||
processed. | processed. | |||
o The BCB block processing control flags MAY be set independently | o The BCB block processing control flags can be set independently | |||
from the processing control flags of the security target(s). The | from the processing control flags of the security target(s). The | |||
setting of such flags SHOULD be an implementation/policy decision | setting of such flags SHOULD be an implementation/policy decision | |||
for the encrypting node. | for the encrypting node. | |||
o A BCB MAY include information as part of additional authenticated | ||||
data to address parts of the target block that are not converted | ||||
to cipher-text. | ||||
3.9. 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 a security target of a BCB is also a security target of a BIB, an | |||
integrity applied to it, then an undesirable condition occurs where a | undesirable condition occurs where a security aware waypoint would be | |||
security aware waypoint would be unable to check the integrity result | unable to validate the BIB because one of its security target's | |||
of a block because the block contents have been encrypted after the | contents have been encrypted by a BCB. To address this situation the | |||
integrity signature was generated. To address 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 When adding a BCB to a bundle, if some (or all) of the security | |||
applied to any integrity operation already defined for that | targets of the BCB also match all of the security targets of an | |||
target. This means that if a BCB is added to encrypt a block, | existing BIB, then the existing BIB MUST also be encrypted. This | |||
another BCB MUST also be added to encrypt a BIB also targeting | can be accomplished by either adding a new BCB that targets the | |||
that block. | existing BIB, or by adding the BIB to the list of security targets | |||
for the BCB. Deciding which way to represent this situation is a | ||||
matter of security policy. | ||||
o An integrity operation MUST NOT be applied to a security target if | o When adding a BCB to a bundle, if some (or all) of the security | |||
a BCB in the bundle shares the same security target. This | targets of the BCB match some (but not all) of the security | |||
prevents ambiguity in the order of evaluation when receiving a BIB | targets of a BIB, then a new BIB MUST be created and all entries | |||
and a BCB for a given security target. | relating to those BCB security targets MUST be moved from the | |||
original BIB to the newly created BIB. The newly created BIB MUST | ||||
then be encrypted. This can be accomplished by either adding a | ||||
new BCB that targets the new BIB, or by adding the new BIB to the | ||||
list of security targets for the BCB. Deciding which way to | ||||
represent this situation is a matter of security policy. | ||||
o An integrity value MUST NOT be evaluated if the BIB providing the | o A BIB MUST NOT be added for a security target that is already the | |||
integrity value is the security target of an existing BCB block in | security target of a BCB. In this instance, the BCB is already | |||
the bundle. In such a case, the BIB data contains cipher-text as | providing authentication and integrity of the security target and | |||
it has been encrypted. | the BIB would be redundant, insecure, and cause ambiguity in block | |||
processing order. | ||||
o An integrity value MUST NOT be evaluated if the security target of | o A BIB integrity value MUST NOT be evaluated if the BIB is the | |||
the BIB is also the security target of a BCB in the bundle. In | security target of an existing BCB. In this case, the BIB data is | |||
such a case, the security target data contains cipher-text as it | encrypted. | |||
has been encrypted. | ||||
o A BIB integrity value MUST NOT be evaluated if the security target | ||||
of the BIB is also the security target of a BCB. In such a case, | ||||
the security target data contains cipher-text as it has been | ||||
encrypted. | ||||
o As mentioned in Section 3.7, 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. | |||
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. | |||
NOTE: Since any cipher suite used with a BCB MUST be an AEAD cipher | ||||
suite, it is inefficient and possible insecure for a single security | ||||
source to add both a BIB and a BCB for the same security target. In | ||||
cases where a security source wishes to calculate both a plain-text | ||||
integrity mechanism and encrypt a security target, a BCB with a | ||||
cipher suite that generates such signatures as additional security | ||||
results SHOULD be used instead. | ||||
3.10. Cipher Suite Parameter and Result Identification | 3.10. Cipher Suite Parameter and Result Identification | |||
Cipher suite parameters and security results each represent multiple | Cipher suite parameters and security results each represent multiple | |||
distinct pieces of information in a security block. Each piece of | distinct pieces of information in a security block. Each piece of | |||
information is assigned an identifier and a CBOR encoding. | information is assigned an identifier and a CBOR encoding. | |||
Identifiers MUST be unique for a given cipher suite but do not need | Identifiers MUST be unique for a given cipher suite but do not need | |||
to be unique across all cipher suites. Therefore, parameter ids and | to be unique across all cipher suites. Therefore, parameter ids and | |||
security result ids are specified in the context of a cipher suite | security result ids are specified in the context of a cipher suite | |||
definition. | definition. | |||
Individual BPSec cipher suites SHOULD use existing registries of | Individual BPSec cipher suites SHOULD use existing registries of | |||
identifiers and CBOR encodings, such as those defined in [COSE], | identifiers and CBOR encodings, such as those defined in [RFC8152], | |||
whenever possible. Cipher suites MAY define their own identifiers | whenever possible. Cipher suites SHOULD define their own identifiers | |||
and CBOR encodings when necessary. | and CBOR encodings when necessary. | |||
A cipher suite MAY include multiple instances of the same identifier | A cipher suite can include multiple instances of the same identifier | |||
for a parameter or result in a security block. Parameters and | for a parameter or result in a security block. Parameters and | |||
results are represented using CBOR, and any identification of a new | results are represented using CBOR, and any identification of a new | |||
parameter or result must include how the value will be represented | parameter or result must include how the value will be represented | |||
using the CBOR specification. Ids themselves are always represented | using the CBOR specification. Ids themselves are always represented | |||
as a CBOR unsigned integer. | as a CBOR unsigned integer. | |||
3.11. BSP Block Example | 3.11. BSP Block Examples | |||
An example of BPSec blocks applied to a bundle is illustrated in | ||||
Figure 3. In this figure the first column represents blocks within a | ||||
bundle and the second column represents the Block Number for the | ||||
block, using the terminology B1...Bn for the purpose of illustration. | ||||
Block in Bundle ID | This section provides two examples of BPSec blocks applied to a | |||
+===================================+====+ | bundle. In the first example, a single node adds several security | |||
| Primary Block | B1 | | operations to a bundle. In the second example, a waypoint node | |||
+-----------------------------------+----+ | received the bundle created in the first example and adds additional | |||
| BIB | B2 | | security operations. In both examples, the first column represents | |||
| OP(integrity, target=B1) | | | blocks within a bundle and the second column represents the Block | |||
+-----------------------------------+----+ | Number for the block, using the terminology B1...Bn for the purpose | |||
| BCB | B3 | | of illustration. | |||
| OP(confidentiality, target=B4) | | | ||||
+-----------------------------------+----+ | ||||
| Extension Block | B4 | | ||||
+-----------------------------------+----+ | ||||
| BIB | B5 | | ||||
| OP(integrity, target=B6) | | | ||||
+-----------------------------------+----+ | ||||
| Extension Block | B6 | | ||||
+-----------------------------------+----+ | ||||
| BCB | B7 | | ||||
| OP(confidentiality,targets=B8,B9) | | | ||||
+-----------------------------------+----+ | ||||
| BIB (encrypted by B7) | B8 | | ||||
| OP(integrity, target=B9) | | | ||||
+-----------------------------------+----| | ||||
| Payload Block | B9 | | ||||
+-----------------------------------+----+ | ||||
Figure 3: Sample Use of BPSec Blocks | 3.11.1. Example 1: Constructing a Bundle with Security | |||
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), two extension blocks (B4,B6), and a payload block | primary block (B1), two extension blocks (B4,B5), and a payload block | |||
(B9). The following security applications are applied to this | (B6). The bundle source wishes to provide an integrity signature of | |||
bundle. | the plain-text associated with the primary block, one of the | |||
extension blocks, and the payload. The resultant bundle is | ||||
illustrated in Figure 3 and the security actions are described below. | ||||
o An integrity signature applied to the canonicalized primary block. | Block in Bundle ID | |||
This is accomplished by a single BIB (B2). | +======================================+====+ | |||
| Primary Block | B1 | | ||||
+--------------------------------------+----+ | ||||
| BIB | B2 | | ||||
| OP(integrity, targets=B1, B5, B6) | | | ||||
+--------------------------------------+----+ | ||||
| BCB | B3 | | ||||
| OP(confidentiality, target=B4) | | | ||||
+--------------------------------------+----+ | ||||
| Extension Block (encrypted) | B4 | | ||||
+--------------------------------------+----+ | ||||
| Extension Block | B5 | | ||||
+--------------------------------------+----+ | ||||
| Payload Block | B6 | | ||||
+--------------------------------------+----+ | ||||
Figure 3: Security at Bundle Creation | ||||
The following security actions were applied to this bundle at its | ||||
time of creation. | ||||
o An integrity signature applied to the canonicalized primary block | ||||
(B1), the second extension block (B5) and the payload block (B6). | ||||
This is accomplished by a single BIB (B2) with multiple targets. | ||||
A single BIB is used in this case because all three targets share | ||||
a security source and policy has them share the same cipher suite, | ||||
key, and cipher suite parameters. Had this not been the case, | ||||
multiple BIBs could have been added instead. | ||||
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 (B3). Once applied, the contents of | |||
extension block B4 are encrypted. The BCB MUST hold an | ||||
authentication signature for the cipher-text either in the cipher- | ||||
text that now populated the first extension block or as a security | ||||
result in the BCB itself, depending on which cipher suite is used | ||||
to form the BCB. A plain-text integrity signature may also exist | ||||
as a security result in the BCB if one is provided by the selected | ||||
confidentiality cipher suite. | ||||
o Integrity for the second extension block (B6). This is | 3.11.2. Example 2: Adding More Security At A New Node | |||
accomplished by a BIB block (B5). NOTE: If the extension block B6 | ||||
contains a representation of the serialized bundle (such as a hash | ||||
over all blocks in the bundle at the time of its last | ||||
transmission) then the BIB block is also providing an | ||||
authentication service. | ||||
o An integrity signature on the payload (B10). This is accomplished | Consider that the bundle as it is illustrated in Figure 3 is now | |||
by a BIB block (B8). | received by a waypoint node that wishes to encrypt the first | |||
extension block and the bundle payload. The waypoint security policy | ||||
is to allow existing BIBs for these blocks to persist, as they may be | ||||
required as part of the security policy at the bundle destination. | ||||
o Confidentiality for the payload block and it's integrity | The resultant bundle is illustrated in Figure 4 and the security | |||
signature. This is accomplished by a BCB block, B7, encrypting B8 | actions are described below. Note that block IDs provided here are | |||
and B9. In this case, the security source, key parameters, and | ordered solely for the purpose of this example and not meant to | |||
service are identical, so a single security block MAY be used for | impose an ordering for block creation. The ordering of blocks added | |||
this purpose, rather than requiring two BCBs one to encrypt B8 and | to a bundle MUST always be in compliance with [I-D.ietf-dtn-bpbis]. | |||
one to encrypt B9. | ||||
Block in Bundle ID | ||||
+======================================+====+ | ||||
| Primary Block | B1 | | ||||
+--------------------------------------+----+ | ||||
| BIB | B2 | | ||||
| OP(integrity, targets=B1) | | | ||||
+--------------------------------------+----+ | ||||
| BIB (encrypted) | B7 | | ||||
| OP(integrity, targets=B5, B6) | | | ||||
+--------------------------------------+----+ | ||||
| BCB | B8 | | ||||
| OP(confidentiality, target=B4,B6,B7) | | | ||||
+--------------------------------------+----+ | ||||
| BCB | B3 | | ||||
| OP(confidentiality, target=B4) | | | ||||
+--------------------------------------+----+ | ||||
| Extension Block (encrypted) | B4 | | ||||
+--------------------------------------+----+ | ||||
| Extension Block (encrypted) | B5 | | ||||
+--------------------------------------+----+ | ||||
| Payload Block (encrypted) | B6 | | ||||
+--------------------------------------+----+ | ||||
Figure 4: Security At Bundle Forwarding | ||||
The following security actions were applied to this bundle prior to | ||||
its forwarding from the waypoint node. | ||||
o Since the waypoint node wishes to encrypt blocks B5 and B6, it | ||||
MUST also encrypt the BIBs providing plain-text integrity over | ||||
those blocks. However, BIB B2 could not be encrypted in its | ||||
entirety because it also held a signature for the primary block | ||||
(B1). Therefore, a new BIB (B7) is created and security results | ||||
associated with B5 and B6 are moved out of BIB B2 and into BIB B7. | ||||
o Now that there is no longer confusion of which plain-text | ||||
integrity signatures must be encrypted, a BCB is added to the | ||||
bundle with the security targets being the second extension block | ||||
(B5) and the payload (B6) as well as the newly created BIB holding | ||||
their plain-text integrity signatures (B7). A single new BCB is | ||||
used in this case because all three targets share a security | ||||
source and policy has them share the same cipher suite, key, and | ||||
cipher suite parameters. Had this not been the case, multiple | ||||
BCBs could have been added instead. | ||||
4. Canonical Forms | 4. Canonical Forms | |||
Security services require consistency and determinism in how | Security services require consistency and determinism in how | |||
information is presented to cipher suites at the security source and | information is presented to cipher suites at the security source and | |||
at a receiving node. For example, integrity services require that | at a receiving node. For example, integrity services require that | |||
the same target information (e.g., the same bits in the same order) | the same target information (e.g., the same bits in the same order) | |||
is provided to the cipher suite when generating an original signature | is provided to the cipher suite when generating an original signature | |||
and when generating a comparison signature. Canonicalization | and when generating a comparison signature. Canonicalization | |||
algorithms are used to construct a stable, end-to-end bit | algorithms are used to construct a stable, end-to-end bit | |||
representation of a target block. | representation of a target block. | |||
Canonical forms are not transmitted, they are used to generate input | Canonical forms are not transmitted, they are used to generate input | |||
to a cipher suite for security processing at a security-aware node. | to a cipher suite for security processing at a security-aware node. | |||
The canonicalization of the primary block is as specified in [BPBIS]. | The canonicalization of the primary block is as specified in | |||
[I-D.ietf-dtn-bpbis]. | ||||
All non-primary blocks share the same block structure and are | All non-primary blocks share the same block structure and are | |||
canonicalized as specified in [BPBIS] with the following exception. | canonicalized as specified in [I-D.ietf-dtn-bpbis] with the following | |||
exceptions. | ||||
o If the service being applied is a confidentiality service, then | o If the service being applied is a confidentiality service, then | |||
the Block Type Code, Block Number, Block Processing Control Flags, | the Block Type Code, Block Number, Block Processing Control Flags, | |||
CRC Type and CRC Field (if present), and Block Data Length fields | CRC Type and CRC Field (if present), and Block Data Length fields | |||
MUST NOT be included in the canonicalization. Confidentiality | MUST NOT be included in the canonicalization. Confidentiality | |||
services are used solely to convert the Block Type Specific Data | services are used solely to convert the Block Type Specific Data | |||
Fields from plain-text to cipher-text. | Fields from plain-text to cipher-text. | |||
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 change in transit. | is not known if those flags will change in transit. | |||
skipping to change at page 20, line 31 ¶ | skipping to change at page 22, line 14 ¶ | |||
5. Security Processing | 5. Security Processing | |||
This section describes the security aspects of bundle processing. | This section describes the security aspects of bundle processing. | |||
5.1. Bundles Received from Other Nodes | 5.1. Bundles Received from Other Nodes | |||
Security blocks must be processed in a specific order when received | Security blocks must be processed in a specific order when received | |||
by a security-aware node. The processing order is as follows. | by a security-aware node. The processing order is as follows. | |||
o All BCB blocks in the bundle MUST be evaluated prior to evaluating | o When BIBs and BCBs share a security target, BCBs MUST be evaluated | |||
any BIBs in the bundle. When BIBs and BCBs share a security | first and BIBs second. | |||
target, BCBs MUST be evaluated first and BIBs second. | ||||
5.1.1. Receiving BCB Blocks | 5.1.1. Receiving BCBs | |||
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 MUST 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 | If the security policy of a security-aware node specifies that a | |||
bundle should have applied confidentiality to a specific security | bundle should have applied confidentiality to a specific security | |||
target and no such BCB is present in the bundle, then the node MUST | target and no such BCB is present in the bundle, then the node MUST | |||
process this security target in accordance with the security policy. | process this security target in accordance with the security policy. | |||
This MAY involve removing the security target from the bundle. If | This may involve removing the security target from the bundle. If | |||
the removed security target is the payload block, the bundle MAY be | the removed security target is the payload block, the bundle MUST be | |||
discarded. | discarded. | |||
If an encrypted payload block cannot be decrypted (i.e., the | If an encrypted payload block cannot be decrypted (i.e., the cipher- | |||
decryption key cannot be deduced or decryption fails), then the | text cannot be authenticated), then the bundle MUST be discarded and | |||
bundle MUST be discarded and processed no further. If an encrypted | processed no further. If an encrypted security target other than the | |||
security target other than the payload block cannot be decrypted then | payload block cannot be decrypted then the associated security target | |||
the associated security target and all security blocks associated | and all security blocks associated with that target MUST be discarded | |||
with that target MUST be discarded and processed no further. In both | and processed no further. In both cases, requested status reports | |||
cases, requested status reports (see [BPBIS]) MAY be generated to | (see [I-D.ietf-dtn-bpbis]) MAY be generated to reflect bundle or | |||
reflect bundle or block deletion. | 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 Block Type Specific Data Fields. | cipher-text in the security target Block Type Specific Data Fields. | |||
If the Block Data Length field was modified at the time of encryption | If the Block Data Length field was modified at the time of encryption | |||
it MUST be updated to reflect the decrypted block length. | 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 when the BCB is processed. Errors and other | MUST be processed when the BCB is processed. Errors and other | |||
processing steps SHALL be made 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 BIBs | |||
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 final responsibility of verifying the | determine whether it has the final responsibility of verifying the | |||
BIB security target and removing it prior to delivering data to an | BIB security target and removing it prior to delivering data to an | |||
application at the node or forwarding the bundle. If a BIB check | application at the node or forwarding the bundle. If a BIB check | |||
fails, the security target has failed to authenticate and the | fails, the security target has failed to authenticate and the | |||
security target SHALL be processed according to the security policy. | security target SHALL be processed according to the security policy. | |||
A bundle status report indicating the failure MAY be generated. | A bundle status report indicating the failure MAY be generated. | |||
Otherwise, if the BIB verifies, the security target is ready to be | Otherwise, if the BIB verifies, the security target is ready to be | |||
processed for delivery. | processed for delivery. | |||
skipping to change at page 21, line 50 ¶ | skipping to change at page 23, line 31 ¶ | |||
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 can 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 a receiving node does not have the final responsibility of | If a receiving node does not have the final responsibility of | |||
verifying the BIB it MAY still attempt to verify the BIB to prevent | verifying the BIB it MAY attempt to verify the BIB to prevent the | |||
the needless forwarding of corrupt data. If the check fails, the | needless forwarding of corrupt data. If the check fails, the node | |||
node SHALL process the security target in accordance to local | SHALL process the security target in accordance to local security | |||
security policy. It is RECOMMENDED that if a payload integrity check | policy. It is RECOMMENDED that if a payload integrity check fails at | |||
fails at a waypoint that it is processed in the same way as if the | a waypoint that it is processed in the same way as if the check fails | |||
check fails at the destination. If the check passes, the node MUST | at the destination. If the check passes, the node MUST NOT remove | |||
NOT remove the BIB prior to forwarding. | the BIB prior to forwarding. | |||
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. Errors and | MUST be processed if the BIB is processed by the Node. Errors and | |||
other processing steps SHALL be made as if each security target had | other processing steps SHALL be made as if each security target had | |||
been 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 payload, and | If it is necessary for a node to fragment a bundle payload, and | |||
security services have been applied to that bundle, the fragmentation | security services have been applied to that bundle, the fragmentation | |||
rules described in [BPBIS] MUST be followed. As defined there and | rules described in [I-D.ietf-dtn-bpbis] MUST be followed. As defined | |||
summarized here for completeness, only the payload block may be | there and summarized here for completeness, only the payload block | |||
fragmented; security blocks, like all extension blocks, can never be | can be fragmented; security blocks, like all extension blocks, can | |||
fragmented. | never be fragmented. | |||
Due to the complexity of payload block fragmentation, including the | Due to the complexity of payload block fragmentation, including the | |||
possibility of fragmenting payload block 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. Specifically, a BCB or BIB MUST NOT be | representing a fragment. Specifically, a BCB or BIB MUST NOT be | |||
added to a bundle if the "Bundle is a Fragment" flag is set in the | added to a bundle if the "Bundle is a Fragment" flag is set in the | |||
Bundle Processing Control Flags field. | Bundle Processing Control Flags field. | |||
Security processing in the presence of payload block fragmentation | Security processing in the presence of payload block fragmentation | |||
MAY be handled by other mechanisms outside of the BPSec protocol or | may be handled by other mechanisms outside of the BPSec protocol or | |||
by applying BPSec blocks in coordination with an encapsulation | by applying BPSec blocks in coordination with an encapsulation | |||
mechanism. | mechanism. | |||
6. Key Management | 6. Key Management | |||
There exist a myriad of ways to establish, communicate, and otherwise | There exist a myriad of ways to establish, communicate, and otherwise | |||
manage key information in a DTN. Certain DTN deployments might | manage key information in a DTN. Certain DTN deployments might | |||
follow established protocols for key management whereas other DTN | follow established protocols for key management whereas other DTN | |||
deployments might require new and novel approaches. BPSec assumes | deployments might require new and novel approaches. BPSec assumes | |||
that key management is handled as a separate part of network | that key management is handled as a separate part of network | |||
skipping to change at page 23, line 38 ¶ | skipping to change at page 25, line 21 ¶ | |||
associated BPSec blocks, replace the security operation, or some | associated BPSec blocks, replace the security 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 | |||
blocks that absolutely need them. If a BPA were to apply security | blocks that absolutely need them. If a BPA were to apply security | |||
operations such as integrity or confidentiality to every block in | operations such as integrity or confidentiality to every block in | |||
the bundle, regardless of need, there could be downstream errors | the bundle, regardless of need, there could be downstream errors | |||
processing blocks whose contents must be inspected or changed at | processing blocks whose contents must be inspected or changed at | |||
every hop along the path. | every hop along the path. | |||
o It is recommended that BCBs be allowed to alter the size of | ||||
extension blocks and the payload block. However, care must be | ||||
taken to ensure that changing the size of the payload block while | ||||
the bundle is in transit do not negatively affect bundle | ||||
processing (e.g., calculating storage needs, scheduling | ||||
transmission times, caching block byte offsets). | ||||
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. If this condition is likely to be | by a BCB is not allowed. If this condition is likely to be | |||
encountered, there are (at least) three possible policies that | encountered, there are (at least) three possible policies that | |||
could handle this situation. | could handle this situation. | |||
1. At the time of encryption, an integrity signature may be | 1. At the time of encryption, a plain-text integrity signature | |||
generated and added to the BCB for the security target as | may be generated and added to the BCB for the security target | |||
additional information in the security result field. | as 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. | |||
o It is recommended that security policy address whether cipher | ||||
suites whose cipher-text is larger (or smaller) than the initial | ||||
plain-text are permitted and, if so, for what types of blocks. | ||||
Changing the size of a block may cause processing difficulties for | ||||
networks that calculate block offsets into bundles or predict | ||||
transmission times or storage availability as a function of bundle | ||||
size. In other cases, changing the size of a payload as part of | ||||
encryption has no significant impact. | ||||
8. Security Considerations | 8. Security Considerations | |||
Given the nature of DTN applications, it is expected that bundles may | Given the nature of DTN applications, it is expected that bundles may | |||
traverse a variety of environments and devices which each pose unique | traverse a variety of environments and devices which each pose unique | |||
security risks and requirements on the implementation of security | security risks and requirements on the implementation of security | |||
within BPSec. For these reasons, it is important to introduce key | within BPSec. For these reasons, it is important to introduce key | |||
threat models and describe the roles and responsibilities of the | threat models and describe the roles and responsibilities of the | |||
BPSec protocol in protecting the confidentiality and integrity of the | BPSec protocol in protecting the confidentiality and integrity of the | |||
data against those threats. This section provides additional | data against those threats. This section provides additional | |||
discussion on security threats that BPSec will face and describes how | discussion on security threats that BPSec will face and describes how | |||
BPSec security mechanisms operate to mitigate these threats. | BPSec security mechanisms operate to mitigate these threats. | |||
It should be noted that BPSEC addresses only the security of data | ||||
traveling over the DTN, not the underlying DTN itself. Additionally, | ||||
BPSec addresses neither the fitness of externally-defined | ||||
cryptographic methods nor the security of their implementation. It | ||||
is the responsibility of the BPSec implementer that appropriate | ||||
algorithms and methods are chosen. Furthermore, the BPSec protocol | ||||
does not address threats which share computing resources with the DTN | ||||
and/or BPSec software implementations. These threats may be | ||||
malicious software or compromised libraries which intend to intercept | ||||
data or recover cryptographic material. Here, it is the | ||||
responsibility of the BPSec implementer to ensure that any | ||||
cryptographic material, including shared secret or private keys, is | ||||
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. In doing so, it is assumed that the DTN (or significant | |||
portions of the DTN) are completely under the control of an attacker. | ||||
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 | |||
skipping to change at page 26, line 24 ¶ | skipping to change at page 28, line 10 ¶ | |||
for years and the cipher suite used for a BCB provides inadequate | for years and the cipher suite used for a BCB provides inadequate | |||
protection, Mallory may be able to recover the protected data either | protection, Mallory may be able to recover the protected data either | |||
before that bundle reaches its intended destination or before the | before that bundle reaches its intended destination or before the | |||
information in the bundle is no longer considered sensitive. | information in the bundle is no longer considered sensitive. | |||
8.2.2. Modification Attacks | 8.2.2. Modification Attacks | |||
As a node participating in the DTN between Alice and Bob, Mallory | As a node participating in the DTN between Alice and Bob, Mallory | |||
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 [I-D.ietf-dtn-bpbis]. Mallory will be | |||
undertake activities which include modification of data within the | able to undertake activities which include modification of data | |||
blocks, replacement of blocks, addition of blocks, or removal of | within the blocks, replacement of blocks, addition of blocks, or | |||
blocks. Within BPSec, both the BIB and BCB provide integrity | removal of blocks. Within BPSec, both the BIB and BCB provide | |||
protection mechanisms to detect or prevent data manipulation attempts | integrity protection mechanisms to detect or prevent data | |||
by Mallory. | manipulation attempts 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 mechanisms 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 | |||
removes a BCB block, but keeps the security target, the security | removes a BCB, but keeps the security target, the security target | |||
target remains encrypted and there is a possibility that there may no | remains encrypted and there is a possibility that there may no longer | |||
longer be sufficient information to decrypt the block at its | be sufficient information to decrypt the block at its destination. | |||
destination. If Mallory removes both a BCB (or BIB) and its security | If Mallory removes both a BCB (or BIB) and its security target there | |||
target there is no evidence left in the bundle of the security | is no evidence left in the bundle of the security operation. | |||
operation. Similarly, if Mallory removes the BIB but not the | Similarly, if Mallory removes the BIB but not the security target | |||
security target there is no evidence left in the bundle of the | there is no evidence left in the bundle of the security operation. | |||
security operation. In each of these cases, the implementation of | In each of these cases, the implementation of BPSec must be combined | |||
BPSec must be combined with policy configuration at endpoints in the | with policy configuration at endpoints in the network which describe | |||
network which describe the expected and required security operations | the expected and required security operations that must be applied on | |||
that must be applied on transmission and are expected to be present | transmission and are expected to be present on receipt. This or | |||
on receipt. This or other similar out-of-band information is | other similar out-of-band information is required to correct for | |||
required to correct for removal of security information in the | removal of security information in the bundle. | |||
bundle. | ||||
A limitation of the BIB may exist within the implementation of BIB | A limitation of the BIB may exist within the implementation of BIB | |||
validation at the destination node. If Mallory is a legitimate node | validation at the destination node. If Mallory is a legitimate node | |||
within the DTN, the BIB generated by Alice with K_A can be replaced | within the DTN, the BIB generated by Alice with K_A can be replaced | |||
with a new BIB generated with K_M and forwarded to Bob. If Bob is | with a new BIB generated with K_M and forwarded to Bob. If Bob is | |||
only validating that the BIB was generated by a legitimate user, Bob | only validating that the BIB was generated by a legitimate user, Bob | |||
will acknowledge the message as originating from Mallory instead of | will acknowledge the message as originating from Mallory instead of | |||
Alice. In order to provide verifiable integrity checks, both a BIB | Alice. In order to provide verifiable integrity checks, both a BIB | |||
and BCB should be used and the BCB should require an IND-CCA2 | and BCB should be used and the BCB should require an IND-CCA2 | |||
encryption scheme. Such an encryption scheme will guard against | encryption scheme. Such an encryption scheme will guard against | |||
skipping to change at page 27, line 37 ¶ | skipping to change at page 29, line 22 ¶ | |||
network. Upon receiving and processing a bundle that must be routed | network. Upon receiving and processing a bundle that must be routed | |||
elsewhere in the network, Mallory has three options as to how to | elsewhere in the network, Mallory has three options as to how to | |||
proceed: not forward the bundle, forward the bundle as intended, or | proceed: not forward the bundle, forward the bundle as intended, or | |||
forward the bundle to one or more specific nodes within the network. | forward the bundle to one or more specific nodes within the network. | |||
Attacks that involve re-routing the packets throughout the network | Attacks that involve re-routing the packets throughout the network | |||
are essentially a special case of the modification attacks described | are essentially a special case of the modification attacks described | |||
in this section where the attacker is modifying fields within the | in this section where the attacker is modifying fields within the | |||
primary block of the bundle. Given that BPSec cannot encrypt the | primary block of the bundle. Given that BPSec cannot encrypt the | |||
contents of the primary block, alternate methods must be used to | contents of the primary block, alternate methods must be used to | |||
prevent this situation. These methods MAY include requiring BIBs for | prevent this situation. These methods may include requiring BIBs for | |||
primary blocks, using encapsulation, or otherwise strategically | primary blocks, using encapsulation, or otherwise strategically | |||
manipulating primary block data. The specifics of any such | manipulating primary block data. The specifics of any such | |||
mitigation technique are specific to the implementation of the | mitigation technique are specific to the implementation of the | |||
deploying network and outside of the scope of this document. | deploying network and outside of the scope of this document. | |||
Furthermore, routing rules and policies may be useful in enforcing | Furthermore, routing rules and policies may be useful in enforcing | |||
particular traffic flows to prevent topology attacks. While these | particular traffic flows to prevent topology attacks. While these | |||
rules and policies may utilize some features provided by BPSec, their | rules and policies may utilize some features provided by BPSec, their | |||
definition is beyond the scope of this specification. | definition is beyond the scope of this specification. | |||
skipping to change at page 29, line 22 ¶ | skipping to change at page 30, line 49 ¶ | |||
information SHOULD be considered for inclusion in these | information SHOULD be considered for inclusion in these | |||
specifications. | specifications. | |||
o Cipher Suite Parameters. Cipher suites MUST define their | o Cipher Suite Parameters. Cipher suites MUST define their | |||
parameter ids, the data types of those parameters, and their CBOR | parameter ids, the data types of those parameters, and their CBOR | |||
encoding. | encoding. | |||
o Security Results. Cipher suites MUST define their security result | o Security Results. Cipher suites MUST define their security result | |||
ids, the data types of those results, and their CBOR encoding. | ids, the data types of those results, and their CBOR encoding. | |||
o New Canonicalizations. Cipher suites MAY define new | o New Canonicalizations. Cipher suites may define new | |||
canonicalization algorithms as necessary. | canonicalization algorithms as necessary. | |||
o Cipher-Text Size. Cipher suites MUST state whether they generate | ||||
cipher-text (to include any included authentication information) | ||||
that is of a different size than the input plain-text. | ||||
If a cipher suite does not wish to alter the size of the plain- | ||||
text, it should consider the following. | ||||
* Place overflow bytes, authentication signatures, and any | ||||
additional authenticated data in security result fields rather | ||||
than in the cipher-text itself. | ||||
* Pad the cipher-text in cases where the cipher-text is smaller | ||||
than the plain-text. | ||||
o If a BCB cannot alter the size of the security target 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. Any additional | ||||
authentication information can be treated either as overflow | ||||
cipher-text or represented separately in the BCB in a security | ||||
result field, in accordance with cipher suite documentation and | ||||
security policy. | ||||
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 can co-exist within a bundle and can | |||
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 deterministic 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 can 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. | |||
o An OSB definition MAY NOT require any behavior of a BPSEC-BPA that | o An OSB definition MUST NOT require any behavior of a BPSEC-BPA | |||
is in conflict with the behavior identified in this specification. | that is in conflict with the behavior identified in this | |||
In particular, the security processing requirements imposed by | specification. In particular, the security processing | |||
this specification must be consistent across all BPSEC-BPAs in a | requirements imposed by this specification must be consistent | |||
network. | across all BPSEC-BPAs in a network. | |||
o The behavior of an OSB when dealing with fragmentation must be | o The behavior of an OSB when dealing with fragmentation must be | |||
specified and MUST NOT lead to ambiguous processing states. In | specified and MUST NOT lead to ambiguous processing states. In | |||
particular, an OSB definition should address how to receive and | particular, an OSB definition should address how to receive and | |||
process an OSB in a bundle fragment that may or may not also | process an OSB in a bundle fragment that may or may not also | |||
contain its security target. An OSB definition should also | contain its security target. An OSB definition should also | |||
address whether an OSB may be added to a bundle marked as a | address whether an OSB may be added to a bundle marked as a | |||
fragment. | fragment. | |||
Additionally, policy considerations for the management, monitoring, | Additionally, policy considerations for the management, monitoring, | |||
skipping to change at page 30, line 35 ¶ | skipping to change at page 32, line 41 ¶ | |||
identification of such blocks shall not, alone, require maintenance | identification of such blocks shall not, alone, require maintenance | |||
of this specification. | of this specification. | |||
11. IANA Considerations | 11. IANA Considerations | |||
A registry of cipher suite identifiers will be required. | A registry of cipher suite identifiers will be required. | |||
11.1. Bundle Block Types | 11.1. Bundle Block Types | |||
This specification allocates two 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 | | |||
+-------+-----------------------------+---------------+ | +-------+-----------------------------+---------------+ | |||
| TBD | Block Integrity Block | This document | | | TBD | Block Integrity Block | This document | | |||
| TBD | Block Confidentiality Block | This document | | | TBD | Block Confidentiality Block | This document | | |||
+-------+-----------------------------+---------------+ | +-------+-----------------------------+---------------+ | |||
skipping to change at page 31, line 4 ¶ | skipping to change at page 33, line 6 ¶ | |||
+-------+-----------------------------+---------------+ | +-------+-----------------------------+---------------+ | |||
| Value | Description | Reference | | | Value | Description | Reference | | |||
+-------+-----------------------------+---------------+ | +-------+-----------------------------+---------------+ | |||
| TBD | Block Integrity Block | This document | | | TBD | Block Integrity Block | This document | | |||
| TBD | Block Confidentiality Block | This document | | | TBD | Block Confidentiality Block | This document | | |||
+-------+-----------------------------+---------------+ | +-------+-----------------------------+---------------+ | |||
Table 1 | Table 1 | |||
12. References | 12. References | |||
12.1. Normative References | 12.1. Normative References | |||
[BPBIS] Burleigh, S., Fall, K., and E. Birrane, "Bundle Protocol", | [I-D.ietf-dtn-bpbis] | |||
draft-ietf-dtn-bpbis-06 (work in progress), July 2016. | Burleigh, S., Fall, K., and E. Birrane, "Bundle Protocol | |||
Version 7", draft-ietf-dtn-bpbis-11 (work in progress), | ||||
May 2018. | ||||
[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, | |||
DOI 10.17487/RFC2119, March 1997, | ||||
<https://www.rfc-editor.org/info/rfc2119>. | ||||
[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, | |||
<https://www.rfc-editor.org/info/rfc3552>. | <https://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, DOI 10.17487/RFC6255, May | |||
2011, <https://www.rfc-editor.org/info/rfc6255>. | ||||
12.2. Informative References | 12.2. Informative References | |||
[COSE] Schaad, J., "CBOR Object Signing and Encryption (COSE)", | [I-D.birrane-dtn-sbsp] | |||
draft-ietf-cose-msg-24 (work in progress), November 2016. | Birrane, E., Pierce-Mayer, J., and D. Iannicca, | |||
"Streamlined Bundle Security Protocol Specification", | ||||
draft-birrane-dtn-sbsp-01 (work in progress), October | ||||
2015. | ||||
[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, DOI 10.17487/RFC4838, | |||
April 2007, <https://www.rfc-editor.org/info/rfc4838>. | ||||
[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, | |||
2011. | DOI 10.17487/RFC6257, May 2011, | |||
<https://www.rfc-editor.org/info/rfc6257>. | ||||
[SBSP] Birrane, E., "Streamlined Bundle Security Protocol", | [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", | |||
draft-birrane-dtn-sbsp-01 (work in progress), October | RFC 8152, DOI 10.17487/RFC8152, July 2017, | |||
2015. | <https://www.rfc-editor.org/info/rfc8152>. | |||
Appendix A. Acknowledgements | Appendix A. Acknowledgements | |||
The following participants contributed technical material, use cases, | The following participants contributed technical material, use cases, | |||
and useful thoughts on the overall approach to this security | and useful thoughts on the overall approach to this security | |||
specification: Scott Burleigh of the Jet Propulsion Laboratory, Amy | specification: Scott Burleigh of the Jet Propulsion Laboratory, Amy | |||
Alford and Angela Hennessy of the Laboratory for Telecommunications | Alford and Angela Hennessy of the Laboratory for Telecommunications | |||
Sciences, and Angela Dalton and Cherita Corbett of the Johns Hopkins | Sciences, and Angela Dalton and Cherita Corbett of the Johns Hopkins | |||
University Applied Physics Laboratory. | University Applied Physics Laboratory. | |||
End of changes. 106 change blocks. | ||||
323 lines changed or deleted | 448 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |