draft-ietf-dtn-bpsec-18.txt | draft-ietf-dtn-bpsec-19.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: July 30, 2020 January 27, 2020 | Expires: August 10, 2020 February 7, 2020 | |||
Bundle Protocol Security Specification | Bundle Protocol Security Specification | |||
draft-ietf-dtn-bpsec-18 | draft-ietf-dtn-bpsec-19 | |||
Abstract | Abstract | |||
This document defines a security protocol providing end to end data | This document defines a security protocol providing data integrity | |||
integrity and confidentiality services for the Bundle Protocol. | 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. | |||
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 July 30, 2020. | This Internet-Draft will expire on August 10, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | |||
skipping to change at page 2, line 22 ¶ | skipping to change at page 2, line 22 ¶ | |||
2. Design Decisions . . . . . . . . . . . . . . . . . . . . . . 7 | 2. Design Decisions . . . . . . . . . . . . . . . . . . . . . . 7 | |||
2.1. Block-Level Granularity . . . . . . . . . . . . . . . . . 7 | 2.1. Block-Level Granularity . . . . . . . . . . . . . . . . . 7 | |||
2.2. Multiple Security Sources . . . . . . . . . . . . . . . . 8 | 2.2. Multiple Security Sources . . . . . . . . . . . . . . . . 8 | |||
2.3. Mixed Security Policy . . . . . . . . . . . . . . . . . . 8 | 2.3. Mixed Security Policy . . . . . . . . . . . . . . . . . . 8 | |||
2.4. User-Defined Security Contexts . . . . . . . . . . . . . 9 | 2.4. User-Defined Security Contexts . . . . . . . . . . . . . 9 | |||
2.5. Deterministic Processing . . . . . . . . . . . . . . . . 9 | 2.5. Deterministic Processing . . . . . . . . . . . . . . . . 9 | |||
3. Security Blocks . . . . . . . . . . . . . . . . . . . . . . . 9 | 3. Security Blocks . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.1. Block Definitions . . . . . . . . . . . . . . . . . . . . 9 | 3.1. Block Definitions . . . . . . . . . . . . . . . . . . . . 9 | |||
3.2. Uniqueness . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.2. Uniqueness . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.3. Target Multiplicity . . . . . . . . . . . . . . . . . . . 11 | 3.3. Target Multiplicity . . . . . . . . . . . . . . . . . . . 11 | |||
3.4. Target Identification . . . . . . . . . . . . . . . . . . 11 | 3.4. Target Identification . . . . . . . . . . . . . . . . . . 12 | |||
3.5. Block Representation . . . . . . . . . . . . . . . . . . 12 | 3.5. Block Representation . . . . . . . . . . . . . . . . . . 12 | |||
3.6. Abstract Security Block . . . . . . . . . . . . . . . . . 12 | 3.6. Abstract Security Block . . . . . . . . . . . . . . . . . 12 | |||
3.7. Block Integrity Block . . . . . . . . . . . . . . . . . . 15 | 3.7. Block Integrity Block . . . . . . . . . . . . . . . . . . 15 | |||
3.8. Block Confidentiality Block . . . . . . . . . . . . . . . 16 | 3.8. Block Confidentiality Block . . . . . . . . . . . . . . . 16 | |||
3.9. Block Interactions . . . . . . . . . . . . . . . . . . . 17 | 3.9. Block Interactions . . . . . . . . . . . . . . . . . . . 17 | |||
3.10. Parameter and Result Identification . . . . . . . . . . . 18 | 3.10. Parameter and Result Identification . . . . . . . . . . . 18 | |||
3.11. BSP Block Examples . . . . . . . . . . . . . . . . . . . 19 | 3.11. BSP Block Examples . . . . . . . . . . . . . . . . . . . 19 | |||
3.11.1. Example 1: Constructing a Bundle with Security . . . 19 | 3.11.1. Example 1: Constructing a Bundle with Security . . . 19 | |||
3.11.2. Example 2: Adding More Security At A New Node . . . 20 | 3.11.2. Example 2: Adding More Security At A New Node . . . 20 | |||
4. Canonical Forms . . . . . . . . . . . . . . . . . . . . . . . 22 | 4. Canonical Forms . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
5. Security Processing . . . . . . . . . . . . . . . . . . . . . 22 | 5. Security Processing . . . . . . . . . . . . . . . . . . . . . 21 | |||
5.1. Bundles Received from Other Nodes . . . . . . . . . . . . 23 | 5.1. Bundles Received from Other Nodes . . . . . . . . . . . . 22 | |||
5.1.1. Receiving BCBs . . . . . . . . . . . . . . . . . . . 23 | 5.1.1. Receiving BCBs . . . . . . . . . . . . . . . . . . . 22 | |||
5.1.2. Receiving BIBs . . . . . . . . . . . . . . . . . . . 24 | 5.1.2. Receiving BIBs . . . . . . . . . . . . . . . . . . . 23 | |||
5.2. Bundle Fragmentation and Reassembly . . . . . . . . . . . 25 | 5.2. Bundle Fragmentation and Reassembly . . . . . . . . . . . 24 | |||
6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 25 | 6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
7. Security Policy Considerations . . . . . . . . . . . . . . . 25 | 7. Security Policy Considerations . . . . . . . . . . . . . . . 24 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 26 | |||
8.1. Attacker Capabilities and Objectives . . . . . . . . . . 27 | 8.1. Attacker Capabilities and Objectives . . . . . . . . . . 26 | |||
8.2. Attacker Behaviors and BPSec Mitigations . . . . . . . . 28 | 8.2. Attacker Behaviors and BPSec Mitigations . . . . . . . . 27 | |||
8.2.1. Eavesdropping Attacks . . . . . . . . . . . . . . . . 28 | 8.2.1. Eavesdropping Attacks . . . . . . . . . . . . . . . . 27 | |||
8.2.2. Modification Attacks . . . . . . . . . . . . . . . . 29 | 8.2.2. Modification Attacks . . . . . . . . . . . . . . . . 28 | |||
8.2.3. Topology Attacks . . . . . . . . . . . . . . . . . . 30 | 8.2.3. Topology Attacks . . . . . . . . . . . . . . . . . . 29 | |||
8.2.4. Message Injection . . . . . . . . . . . . . . . . . . 30 | 8.2.4. Message Injection . . . . . . . . . . . . . . . . . . 30 | |||
9. Security Context Considerations . . . . . . . . . . . . . . . 31 | 9. Security Context Considerations . . . . . . . . . . . . . . . 30 | |||
9.1. Identification and Configuration . . . . . . . . . . . . 31 | 9.1. Mandating Security Contexts . . . . . . . . . . . . . . . 30 | |||
9.2. Authorship . . . . . . . . . . . . . . . . . . . . . . . 31 | 9.2. Identification and Configuration . . . . . . . . . . . . 31 | |||
9.3. Authorship . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
10. Defining Other Security Blocks . . . . . . . . . . . . . . . 33 | 10. Defining Other Security Blocks . . . . . . . . . . . . . . . 33 | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | |||
11.1. Bundle Block Types . . . . . . . . . . . . . . . . . . . 34 | 11.1. Bundle Block Types . . . . . . . . . . . . . . . . . . . 34 | |||
11.2. Security Context Identifiers . . . . . . . . . . . . . . 34 | 11.2. Security Context Identifiers . . . . . . . . . . . . . . 35 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 35 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 35 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 35 | 12.2. Informative References . . . . . . . . . . . . . . . . . 36 | |||
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 36 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 36 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
1. Introduction | 1. Introduction | |||
This document defines security features for the Bundle Protocol (BP) | This document defines security features for the Bundle Protocol (BP) | |||
[I-D.ietf-dtn-bpbis] and is intended for use in Delay Tolerant | [I-D.ietf-dtn-bpbis] and is intended for use in Delay Tolerant | |||
Networks (DTNs) to provide end-to-end security services. | Networks (DTNs) to provide security services between a security | |||
source and a security acceptor. When the security source is the | ||||
bundle source and when the security acceptor is the bundle | ||||
destination, the security service provides end-to-end protection. | ||||
The Bundle Protocol specification [I-D.ietf-dtn-bpbis] defines DTN as | The Bundle Protocol specification [I-D.ietf-dtn-bpbis] defines DTN as | |||
referring to "a networking architecture providing communications in | referring to "a networking architecture providing communications in | |||
and/or through highly stressed environments" where "BP may be viewed | and/or through highly stressed environments" where "BP may be viewed | |||
as sitting at the application layer of some number of constituent | as sitting at the application layer of some number of constituent | |||
networks, forming a store-carry-forward overlay network". The term | networks, forming a store-carry-forward overlay network". The term | |||
"stressed" environment refers to multiple challenging conditions | "stressed" environment refers to multiple challenging conditions | |||
including intermittent connectivity, large and/or variable delays, | including intermittent connectivity, large and/or variable delays, | |||
asymmetric data rates, and high bit error rates. | asymmetric data rates, and high bit error rates. | |||
skipping to change at page 3, line 42 ¶ | skipping to change at page 3, line 46 ¶ | |||
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 integrity and confidentiality services for BP bundles, | |||
BP bundles, as defined in this section. | as defined in this section. | |||
Integrity services ensure that changes to target data within a bundle | Integrity services ensure that changes to target data within a bundle | |||
can be discovered. Data changes may be caused by processing errors, | can be discovered. Data changes may be caused by processing errors, | |||
environmental conditions, or intentional manipulation. In the | environmental conditions, or intentional manipulation. In the | |||
context of BPSec, integrity services apply to plain-text in the | context of BPSec, integrity services apply to plain text in the | |||
bundle. | bundle. | |||
Confidentiality services ensure that target data is unintelligible to | Confidentiality services ensure that target data is unintelligible to | |||
nodes in the DTN, except for authorized nodes possessing special | nodes in the DTN, except for authorized nodes possessing special | |||
information. This generally means producing cipher-text from plain- | information. This generally means producing cipher text from plain | |||
text and generating authentication information for that cipher-text. | text and generating authentication information for that cipher text. | |||
Confidentiality, in this context, applies to the contents of target | Confidentiality, in this context, applies to the contents of target | |||
data and does not extend to hiding the fact that confidentiality | data and does not extend to hiding the fact that confidentiality | |||
exists in the bundle. | 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 two 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. | |||
2. Networks in which BPSec may be deployed may have a mixture of | 2. Networks in which BPSec may be deployed may have a mixture of | |||
security-aware and not-security-aware nodes. Hop-by-hop | security-aware and not-security-aware nodes. Hop-by-hop | |||
authentication cannot be deployed in a network if adjacent nodes | authentication cannot be deployed in a network if adjacent nodes | |||
in the network have different security capabilities. | in the network have different security capabilities. | |||
3. Hop-by-hop authentication is a special case of data integrity and | ||||
can be achieved with the integrity mechanisms defined in this | ||||
specification. Therefore, a separate authentication service is | ||||
not necessary. | ||||
1.2. Specification Scope | 1.2. Specification Scope | |||
This document defines the security services provided by the BPSec. | This document defines the security services provided by the BPSec. | |||
This includes the data specification for representing these services | This includes the data specification for representing these services | |||
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 | |||
skipping to change at page 5, line 45 ¶ | skipping to change at page 5, line 44 ¶ | |||
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 [I-D.ietf-dtn-bpbis] defines the format and | The Bundle Protocol [I-D.ietf-dtn-bpbis] defines the format and | |||
processing of bundles, defines the extension block format used to | processing of bundles, defines the extension block format used to | |||
represent BPSec security blocks, and defines the canonicalization | represent BPSec security blocks, and defines the canonical block | |||
algorithms used by this specification. | structure used by this specification. | |||
The Concise Binary Object Representation (CBOR) format [RFC7049] | The Concise Binary Object Representation (CBOR) format [RFC7049] | |||
defines a data format that allows for small code size, fairly small | defines a data format that allows for small code size, fairly small | |||
message size, and extensibility without version negotiation. The | message size, and extensibility without version negotiation. The | |||
block-specific data associated with BPSec security blocks are encoded | block-specific-data associated with BPSec security blocks are encoded | |||
in this data format. | in this data format. | |||
The Bundle Security Protocol [RFC6257] and Streamlined Bundle | The Bundle Security Protocol [RFC6257] and Streamlined Bundle | |||
Security Protocol [I-D.birrane-dtn-sbsp] documents introduced the | Security Protocol [I-D.birrane-dtn-sbsp] documents introduced the | |||
concepts of using BP extension blocks for security services in a DTN. | concepts of using BP extension blocks for security services in a DTN. | |||
The BPSec is a 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 BCP | |||
[RFC2119]. | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. . | ||||
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 | |||
specification. | specification. | |||
o Bundle Destination - the node which receives a bundle and delivers | o Bundle Destination - the node which receives a bundle and delivers | |||
the payload of the bundle to an application. Also, the Node ID of | the payload of the bundle to an application. Also, the Node ID of | |||
the Bundle Protocol Agent (BPA) receiving the bundle. The bundle | the Bundle Protocol Agent (BPA) receiving the bundle. The bundle | |||
destination acts as the security acceptor for every security | destination acts as the security acceptor for every security | |||
target in every security block in every bundle it receives. | target in every security block in every bundle it receives. | |||
o Bundle Source - the node which originates a bundle. Also, the | o Bundle Source - the node which originates a bundle. Also, the | |||
Node ID of the BPA originating the bundle. | Node ID of the BPA originating the bundle. | |||
o Cipher Suite - a set of one or more algorithms providing integrity | o Cipher Suite - a set of one or more algorithms providing integrity | |||
and confidentiality services. Cipher suites may define necessary | and/or confidentiality services. Cipher suites may define user | |||
parameters but do not provide values for those parameters. | parameters (e.g. secret keys to use) but do not provide values for | |||
those parameters. | ||||
o Forwarder - any node that transmits a bundle in the DTN. Also, | o Forwarder - any node that transmits a bundle in the DTN. Also, | |||
the Node ID of the BPA that sent the bundle on its most recent | the Node ID of the BPA that sent the bundle on its most recent | |||
hop. | hop. | |||
o Intermediate Receiver, Waypoint, or Next Hop - any node that | o Intermediate Receiver, Waypoint, or Next Hop - any node that | |||
receives a bundle from a Forwarder that is not the Bundle | receives a bundle from a Forwarder that is not the Bundle | |||
Destination. Also, the Node ID of the BPA at any such node. | Destination. Also, the Node ID of the BPA at any such node. | |||
o Path - the ordered sequence of nodes through which a bundle passes | o Path - the ordered sequence of nodes through which a bundle passes | |||
skipping to change at page 7, line 17 ¶ | skipping to change at page 7, line 15 ¶ | |||
o Security Context - the set of assumptions, algorithms, | o Security Context - the set of assumptions, algorithms, | |||
configurations and policies used to implement security services. | configurations and policies used to implement security services. | |||
o Security Operation - the application of a security service to a | o Security Operation - the application of a security service to a | |||
security target, notated as OP(security service, security target). | security target, notated as OP(security service, security target). | |||
For example, OP(confidentiality, payload). Every security | For example, OP(confidentiality, payload). Every security | |||
operation in a bundle MUST be unique, meaning that a security | operation in a bundle MUST be unique, meaning that a security | |||
service can only be applied to a security target once in a bundle. | service can only be applied to a security target once in a bundle. | |||
A security operation is implemented by a security block. | A security operation is implemented by a security block. | |||
o Security Service - the security features supported by this | o Security Service - a process that gives some protection to a | |||
specification: either integrity or confidentiality. | security target. For example, this specification defines security | |||
services for plain text integrity, plain text confidentiality, and | ||||
cipher text integrity. | ||||
o Security Source - a bundle node that adds a security block to a | o Security Source - a bundle node that adds a security block to a | |||
bundle. Also, the Node ID of that node. | bundle. Also, the Node ID of that node. | |||
o Security Target - the block within a bundle that receives a | o Security Target - the block within a bundle that receives a | |||
security service as part of a security operation. | security service as part of a security operation. | |||
2. Design Decisions | 2. Design Decisions | |||
The application of security services in a DTN is a complex endeavor | The application of security services in a DTN is a complex endeavor | |||
that must consider physical properties of the network, policies at | that must consider physical properties of the network, policies at | |||
each node, and application security requirements. This section | each node, application security requirements, and current and future | |||
identifies those desirable properties that guide design decisions for | threat environments. This section identifies those desirable | |||
this specification and are necessary for understanding the format and | properties that guide design decisions for this specification and are | |||
behavior of the BPSec protocol. | necessary for understanding the format and behavior of the BPSec | |||
protocol. | ||||
2.1. Block-Level Granularity | 2.1. Block-Level Granularity | |||
Security services within this specification must allow different | Security services within this specification must allow different | |||
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 | |||
skipping to change at page 8, line 12 ¶ | skipping to change at page 8, line 15 ¶ | |||
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 can have multiple security blocks and these blocks can have | A bundle can have multiple security blocks and these blocks can have | |||
different security sources. BPSec implementations MUST NOT assume | different security sources. BPSec implementations MUST NOT assume | |||
that all blocks in a bundle have the same security operations and/or | that all blocks in a bundle have the same security operations applied | |||
security sources. | to them. | |||
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. | consistent with its security policy. | |||
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. | processing. | |||
For example, a bundle source may choose to apply an integrity service | For example, a bundle source may choose to apply an integrity service | |||
to its plain-text payload. Later a waypoint node, representing a | to its plain text payload. Later a waypoint node, representing a | |||
gateway to an insecure portion of the DTN, may receive the bundle and | gateway to an insecure portion of the DTN, may receive the bundle and | |||
choose to apply a confidentiality service. In this case, the | choose to apply a confidentiality service. In this case, the | |||
integrity security source is the bundle source and the | integrity security source is the bundle source and the | |||
confidentiality security source is the waypoint node. | 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 might not be security aware and will not be able to | Some waypoints might not be security aware and will not be able to | |||
skipping to change at page 9, line 22 ¶ | skipping to change at page 9, line 22 ¶ | |||
Some waypoints could 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-Defined Security Contexts | 2.4. User-Defined Security Contexts | |||
A security context is the union of security algorithms (cipher | A security context is the union of security algorithms (cipher | |||
suites), policies associated with the use of those algorithms, and | suites), policies associated with the use of those algorithms, and | |||
configuration values. Different contexts may specify different | configuration values. Different contexts may specify different | |||
algorithms, different polices, or different configuration values used | algorithms, different polices, or different configuration values used | |||
in the implementation of their security services. BPSec must provide | in the implementation of their security services. BPSec provides a | |||
a mechanism for users to define their own security contexts. | mechanism to define security contexts. Users may select from | |||
registered security contexts and customize those contexts through | ||||
security context parameters. | ||||
For example, some users might prefer a SHA2 hash function for | For example, some users might prefer a SHA2 hash function for | |||
integrity whereas other users might prefer a SHA3 hash function. The | integrity whereas other users might prefer a SHA3 hash function. | |||
security services defined in this specification must provide a | Providing either separate security contexts or a single, | |||
mechanism for determining what cipher suite, policy, and | parameterized security context allows users flexibility in applying | |||
configuration has been used to populate a security block. | the desired cipher suite, policy, and configuration when populating 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 | |||
are processed must be deterministic. All nodes must impose this same | are processed must be deterministic. All nodes must impose this same | |||
deterministic processing order for all security blocks. This | deterministic processing order for all security blocks. This | |||
specification provides determinism in the application and evaluation | specification provides determinism in the application and evaluation | |||
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 plain-text security | The BIB is used to ensure the integrity of its plain text security | |||
target(s). The integrity information in the BIB MAY be verified | target(s). The integrity information in the BIB MAY be verified | |||
by any node along the bundle path from the BIB security source to | by any node along the bundle path from the BIB security source to | |||
the bundle destination. Security-aware waypoints add or remove | the bundle destination. Security-aware waypoints add or remove | |||
BIBs from bundles in accordance with their security policy. BIBs | BIBs from bundles in accordance with their security policy. BIBs | |||
are never used to sign the cipher-text provided by a BCB. | are never used for integrity protection of 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 their content while | at the BCB security source in order to protect their content while | |||
in transit. The BCB is decrypted by security-aware nodes in the | in transit. The BCB is decrypted by security-aware nodes in the | |||
network, up to and including the bundle destination, as a matter | network, up to and including the bundle destination, as a matter | |||
of security policy. BCBs additionally provide authentication | of security policy. BCBs additionally provide integrity | |||
mechanisms for the cipher-text they generate. | protection 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. It is important to note that any cipher- | block MUST NOT be added. | |||
text integrity mechanism supplied by the BCB is considered part of | ||||
the confidentiality service and, therefore, unique from the plain- | A security operation may be removed from a bundle as part of | |||
text integrity service provided by the BIB. | processing a security block and, once removed, the same security | |||
operation may be re-applied by adding a new security block into the | ||||
bundle. In this case, conflicting security blocks never co-exist in | ||||
the bundle at the same time. | ||||
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 of blocks would be lost. | deterministic processing of 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 11, line 7 ¶ | skipping to change at page 11, line 19 ¶ | |||
OP(integrity,extension_block_2) are also not redundant and may | OP(integrity,extension_block_2) are also not redundant and may | |||
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 OP(integrity, | o Different Services on same block: The two operations OP(integrity, | |||
payload) and OP(confidentiality, payload) are not inherently | payload) and OP(confidentiality, payload) are not inherently | |||
redundant and may both be present in the bundle at the same time, | redundant and may both be present in the bundle at the same time, | |||
pursuant to other processing rules in this specification. | pursuant to other processing rules in this specification. | |||
3.3. Target Multiplicity | 3.3. Target Multiplicity | |||
Under special circumstances, a single security block MAY represent | A single security block MAY represent multiple security operations as | |||
multiple security operations as a way of reducing the overall number | a way of reducing the overall number of security blocks present in a | |||
of security blocks present in a bundle. In these circumstances, | bundle. In these circumstances, reducing the number of security | |||
reducing the number of security blocks in the bundle reduces the | blocks in the bundle reduces the amount of redundant information in | |||
amount of redundant information in the bundle. | the bundle. | |||
A set of security operations can be represented by a single security | A set of security operations can be represented by a single security | |||
block when all of 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 security context parameters for the security operations are | o The security context parameters for the security operations are | |||
identical. | 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 by the same node. | meaning the set of operations are being added by the same node. | |||
o No security operations have the same security target, as that | o No security operations have the same security target, as that | |||
would violate the need for security operations to be unique. | would violate the need for security operations to be unique. | |||
o None of the security operations conflict with security operations | o None of the security operations conflict with security operations | |||
already present in the bundle. | already present in the bundle. | |||
When representing multiple security operations in a single security | When representing multiple security operations in a single security | |||
block, the information that is common across all operations is | block, the information that is common across all operations is | |||
represented once in the security block, and the information which is | represented once in the security block, and the information which is | |||
skipping to change at page 12, line 15 ¶ | skipping to change at page 12, line 27 ¶ | |||
Number" field suitable for this purpose. Therefore, a security | Number" field suitable for this purpose. Therefore, a security | |||
target in a security block MUST be represented as the Block Number of | target in a security block MUST be represented as the Block Number of | |||
the target 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 [I-D.ietf-dtn-bpbis]. That is, each security block is comprised | in [I-D.ietf-dtn-bpbis]. That is, each security block is comprised | |||
of the 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 | |||
o Block Data Length | o block-type-specific-data | |||
o Block Type Specific Data Fields | o CRC field (if present) | |||
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 field. | |||
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 | |||
is identical for both the BIB and BCB Block Types. Therefore, this | is identical for both the BIB and BCB Block Types. Therefore, this | |||
section defines an Abstract Security Block (ASB) data structure and | section defines an Abstract Security Block (ASB) data structure and | |||
discusses the definition, processing, and other constraints for using | discusses the definition, processing, and other constraints for using | |||
this structure. An ASB is never directly instantiated within a | this structure. An ASB is never directly instantiated within a | |||
bundle, it is only a mechanism for discussing the common aspects of | bundle, it is only a mechanism for discussing the common aspects of | |||
BIB and BCB security blocks. | BIB and BCB security blocks. | |||
skipping to change at page 13, line 11 ¶ | skipping to change at page 13, line 23 ¶ | |||
target within this CBOR array SHALL be represented by a CBOR | target within this CBOR array SHALL be represented by a CBOR | |||
unsigned integer. This array MUST have at least 1 entry and | unsigned integer. This array MUST have at least 1 entry and | |||
each entry MUST represent the Block Number of a block that | each entry MUST represent the Block Number of a block that | |||
exists in the bundle. There MUST NOT be duplicate entries in | exists in the bundle. There MUST NOT be duplicate entries in | |||
this array. | this array. | |||
Security Context Id: | Security Context Id: | |||
This field identifies the security context used to implement | This field identifies the security context used to implement | |||
the security service represented by this block and applied to | the security service represented by this block and applied to | |||
each security target. This field SHALL be represented by a | each security target. This field SHALL be represented by a | |||
CBOR unsigned integer. | CBOR unsigned integer. The values for this Id should come from | |||
the registry defined in Section 11.2 | ||||
Security Context Flags: | Security Context Flags: | |||
This field identifies which optional fields are present in the | This field identifies which optional fields are present in the | |||
security block. This field SHALL be represented as a CBOR | security block. This field SHALL be represented as a CBOR | |||
unsigned integer whose contents shall be interpreted as a bit | unsigned integer whose contents shall be interpreted as a bit | |||
field. Each bit in this bit field indicates the presence (bit | field. Each bit in this bit field indicates the presence (bit | |||
set to 1) or absence (bit set to 0) of optional data in the | set to 1) or absence (bit set to 0) of optional data in the | |||
security block. The association of bits to security block data | security block. The association of bits to security block data | |||
is defined as follows. | is defined as follows. | |||
Bit 1 (the least-significant bit, 0x01): Security Context | Bit 0 (the least-significant bit, 0x01): Security Context | |||
Parameters Present Flag. | Parameters Present Flag. | |||
Bit 2 (0x02): Security Source Present Flag. | Bit 1 (0x02): Security Source Present Flag. | |||
Bit >2 Reserved | Bit >1 Reserved | |||
Implementations MUST set reserved bits to 0 when writing this | Implementations MUST set reserved bits to 0 when writing this | |||
field and MUST ignore the values of reserved bits when reading | field and MUST ignore the values of reserved bits when reading | |||
this field. For unreserved bits, a value of 1 indicates that | this field. For unreserved bits, a value of 1 indicates that | |||
the associated security block field MUST be included in the | the associated security block field MUST be included in the | |||
security block. A value of 0 indicates that the associated | security block. A value of 0 indicates that the associated | |||
security block field MUST NOT be in the security block. | security block field MUST NOT be in the security block. | |||
Security Source (Optional): | Security Source (Optional): | |||
This field identifies the Endpoint that inserted the security | This field identifies the Endpoint that inserted the security | |||
skipping to change at page 14, line 20 ¶ | skipping to change at page 14, line 32 ¶ | |||
in Section 3.10. | in Section 3.10. | |||
* Parameter Value. This field captures the value associated | * Parameter Value. This field captures the value associated | |||
with this parameter. This field SHALL be represented by the | with this parameter. This field SHALL be represented by the | |||
applicable CBOR representation of the parameter, in | applicable CBOR representation of the parameter, in | |||
accordance with Section 3.10. | accordance with Section 3.10. | |||
The logical layout of the parameters array is illustrated in | The logical layout of the parameters array is illustrated in | |||
Figure 1. | Figure 1. | |||
+----------------+----------------+ +----------------+ | ||||
| Parameter 1 | Parameter 2 | ... | Parameter N | | ||||
+------+---------+------+---------+ +------+---------+ | ||||
| Id | Value | Id | Value | | Id | Value | | ||||
+------+---------+------+---------+ +------+---------+ | ||||
Figure 1: Security Context Parameters | Figure 1: Security Context Parameters | |||
Security Results: | Security Results: | |||
This field captures the results of applying a security service | This field captures the results of applying a security service | |||
to the security targets of the security block. This field | to the security targets of the security block. This field | |||
SHALL be represented as a CBOR array of target results. Each | SHALL be represented as a CBOR array of target results. Each | |||
entry in this array represents the set of security results for | entry in this array represents the set of security results for | |||
a specific security target. The target results MUST be ordered | a specific security target. The target results MUST be ordered | |||
identically to the Security Targets field of the security | identically to the Security Targets field of the security | |||
block. This means that the first set of target results in this | block. This means that the first set of target results in this | |||
skipping to change at page 15, line 17 ¶ | skipping to change at page 15, line 23 ¶ | |||
* Result Value. This field captures the value associated with | * Result Value. This field captures the value associated with | |||
the result. This field SHALL be represented by the | the result. This field SHALL be represented by the | |||
applicable CBOR representation of the result value, in | applicable CBOR representation of the result value, in | |||
accordance with Section 3.10. | accordance with Section 3.10. | |||
The logical layout of the security results array is illustrated | The logical layout of the security results array is illustrated | |||
in Figure 2. In this figure there are N security targets for | in Figure 2. In this figure there are N security targets for | |||
this security block. The first security target contains M | this security block. The first security target contains M | |||
results and the Nth security target contains K results. | results and the Nth security target contains K results. | |||
+------------------------------+ +------------------------------+ | ||||
| Target 1 | | Target N | | ||||
+------------+----+------------+ +------------------------------+ | ||||
| Result 1 | | Result M | ... | Result 1 | | Result K | | ||||
+----+-------+ .. +----+-------+ +----+-------+ .. +----+-------+ | ||||
| Id | Value | | Id | Value | | Id | Value | | Id | Value | | ||||
+----+-------+ +----+-------+ +----+-------+ +----+-------+ | ||||
Figure 2: Security Results | Figure 2: Security Results | |||
3.7. Block Integrity Block | 3.7. Block Integrity Block | |||
A BIB is a bundle extension block with the following characteristics. | A BIB is a bundle extension block with the following characteristics. | |||
o The Block Type Code value is as specified in Section 11.1. | The Block Type Code value is as specified in Section 11.1. | |||
o The Block Type Specific Data Fields follow the structure of the | The block-type-specific-data field follows the structure of the | |||
ASB. | ASB. | |||
o A security target listed in the Security Targets field MUST NOT | A security target listed in the Security Targets field MUST NOT | |||
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 Security Context Id MUST utilize an end-to-end authentication | The Security Context MUST utilize an authentication mechanism or | |||
cipher or an end-to-end error detection cipher. | an error detection mechanism. | |||
o The EID of the security source MAY be present. If this field is | The EID of the security source MAY be present. If this field is | |||
not present, then the security source of the block SHOULD be | not present, then the security source of the block SHOULD be | |||
inferred according to security policy and MAY default to the | inferred according to security policy and MAY default to the | |||
bundle source. The security source MAY be specified as part of | bundle source. The security source MAY be specified as part of | |||
security context information described in Section 3.10. | security context parameters described in Section 3.10. | |||
Notes: | Notes: | |||
o It is RECOMMENDED that designers carefully consider the effect of | o It is recommended that designers carefully consider the effect of | |||
setting flags that either discard the block or delete the bundle | setting flags that either discard the block or delete the bundle | |||
in the event that this block cannot be processed. | in the event that this block cannot be processed. | |||
o Since OP(integrity, target) is allowed only once in a bundle per | o Since OP(integrity, target) is allowed only once in a bundle per | |||
target, it is RECOMMENDED that users wishing to support multiple | target, it is RECOMMENDED that users wishing to support multiple | |||
integrity signatures for the same target define a multi-signature | integrity signatures for the same target define a multi-signature | |||
security context. | security context. | |||
o For some security contexts, (e.g., those using asymmetric keying | o Security information MAY be checked at any hop on the way to the | |||
to produce signatures or those using symmetric keying with a group | bundle destination that has access to the required keying | |||
key), the security information MAY be checked at any hop on the | information, in accordance with Section 3.9. | |||
way to the bundle destination that has access to the required | ||||
keying information, in accordance with Section 3.9. | ||||
3.8. Block Confidentiality Block | 3.8. Block Confidentiality Block | |||
A BCB is a bundle extension block with the following characteristics. | A BCB is a bundle extension block with the following characteristics. | |||
The Block Type Code value is as specified in Section 11.1. | The Block Type Code value is as specified in Section 11.1. | |||
The Block Processing Control flags value can be set to whatever | The Block Processing Control flags value can be set to whatever | |||
values are required by local policy, except that this block MUST | values are required by local policy with the following exceptions. | |||
have the "replicate in every fragment" flag set if the target of | BCB blocks MUST have the "block must be replicated in every | |||
the BCB is the Payload Block. Having that BCB in each fragment | fragment" flag set if one of the targets is the payload block. | |||
indicates to a receiving node that the payload portion of each | Having that BCB in each fragment indicates to a receiving node | |||
fragment represents cipher-text. | that the payload portion of each fragment represents cipher text. | |||
BCB blocks MUST NOT have the "block must be removed from bundle if | ||||
it can't be processed" flag set. Removing a BCB from a bundle | ||||
without decrypting its security targets removes information from | ||||
the bundle necessary for their later decryption. | ||||
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 can | 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. A BCB MUST NOT include another BCB as a security target. A | BIB. A BCB MUST NOT include another BCB as a security target. A | |||
BCB MUST NOT target the primary block. | BCB MUST NOT target the primary block. | |||
The Security Context Id MUST utilize a confidentiality cipher that | The Security Context MUST utilize a confidentiality cipher that | |||
provides authenticated encryption with associated data (AEAD). | provides authenticated encryption with associated data (AEAD). | |||
Additional information created by a cipher suite (such as | Additional information created by a cipher suite (such as an | |||
additional authenticated data) can be placed either in a security | authentication tag) can be placed either in a security result | |||
result field or in the generated cipher-text. The determination | field or in the generated cipher text. The determination of where | |||
of where to place these data is a function of the cipher suite and | to place this information is a function of the cipher suite and | |||
security context used. | security context used. | |||
The EID of the security source MAY be present. If this field is | The EID of the security source MAY be present. If this field is | |||
not present, then the security source of the block SHOULD be | not present, then the security source of the block SHOULD be | |||
inferred according to security policy and MAY default to the | inferred according to security policy and MAY default to the | |||
bundle source. The security source MAY be specified as part of | bundle source. The security source MAY be specified as part of | |||
security context information described in Section 3.10. | security context parameters 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 | |||
field contains cipher-text, not plain-text. Other block fields | field contains cipher text, not plain text. | |||
remain unmodified, with the exception of the Block Data Length field, | ||||
which MUST be updated to reflect the new length of the Block Type | ||||
Specific Data field. | ||||
Notes: | Notes: | |||
o It is RECOMMENDED that designers carefully consider the effect of | o It is RECOMMENDED that designers carefully consider the effect of | |||
setting flags that either discard the block or delete the bundle | setting flags that delete the bundle in the event that this block | |||
in the event that this block cannot be processed. | cannot be processed. | |||
o The BCB block processing control flags can 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. | |||
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 a security target of a BCB is also a security target of a BIB, an | If a security target of a BCB is also a security target of a BIB, an | |||
skipping to change at page 18, line 11 ¶ | skipping to change at page 18, line 6 ¶ | |||
targets of a BIB then that BIB MUST be altered in the following | targets of a BIB then that BIB MUST be altered in the following | |||
way. Any security results in the BIB associated with the BCB | way. Any security results in the BIB associated with the BCB | |||
security targets MUST be removed from the BIB and placed in a new | security targets MUST be removed from the BIB and placed in a new | |||
BIB. This newly created BIB MUST then be encrypted. The | BIB. This newly created BIB MUST then be encrypted. The | |||
encryption of the new BIB can be accomplished by either adding a | encryption of the new BIB can be accomplished by either adding a | |||
new BCB that targets the new BIB, or by adding the new BIB to the | 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 | list of security targets for the BCB. Deciding which way to | |||
represent this situation is a matter of security policy. | represent this situation is a matter of security policy. | |||
o A BIB MUST NOT be added for a security target that is already the | o A BIB MUST NOT be added for a security target that is already the | |||
security target of a BCB. In this instance, the BCB is already | security target of a BCB as this would cause ambiguity in block | |||
providing authentication and integrity of the security target and | ||||
the BIB would be redundant, insecure, and cause ambiguity in block | ||||
processing order. | processing order. | |||
o A BIB integrity value MUST NOT be evaluated if the BIB is the | o A BIB integrity value MUST NOT be checked if the BIB is the | |||
security target of an existing BCB. In this case, the BIB data is | security target of an existing BCB. In this case, the BIB data is | |||
encrypted. | encrypted. | |||
o A BIB integrity value MUST NOT be evaluated if the security target | o A BIB integrity value MUST NOT be checked if the security target | |||
of the BIB is also the security target of a BCB. In such a case, | associated with that value is also the security target of a BCB. | |||
the security target data contains cipher-text as it has been | In such a case, the security target data contains cipher text as | |||
encrypted. | 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. | security target. | |||
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. | |||
Since any cipher suite used with a BCB MUST be an AEAD cipher suite, | In cases where a security source wishes to calculate both a plain | |||
it is inefficient and insecure for a single security source to add | text integrity mechanism and encrypt a security target, a BCB with a | |||
both a BIB and a BCB for the same security target. In cases where a | security context that generates such signatures as additional | |||
security source wishes to calculate both a plain-text integrity | security results MUST be used instead of adding both a BIB and then a | |||
mechanism and encrypt a security target, a BCB with a security | BCB for the security target at the security source. | |||
context that generates such signatures as additional security results | ||||
MUST be used instead. | ||||
3.10. Parameter and Result Identification | 3.10. Parameter and Result Identification | |||
Each security context MUST define its own context parameters and | Each security context MUST define its own context parameters and | |||
results. Each defined parameter and result is represented as the | results. Each defined parameter and result is represented as the | |||
tuple of an identifier and a value. Identifiers are always | tuple of an identifier and a value. Identifiers are always | |||
represented as a CBOR unsigned integer. The CBOR encoding of values | represented as a CBOR unsigned integer. The CBOR encoding of values | |||
is as defined by the security context specification. | is as defined by the security context specification. | |||
Identifiers MUST be unique for a given security context but do not | Identifiers MUST be unique for a given security context but do not | |||
need to be unique amongst all security contexts. | need to be unique amongst all security contexts. | |||
An example of a security context can be found at | ||||
[I-D.ietf-dtn-bpsec-interop-sc]. | ||||
3.11. BSP Block Examples | 3.11. BSP Block Examples | |||
This section provides two examples of BPSec blocks applied to a | This section provides two examples of BPSec blocks applied to a | |||
bundle. In the first example, a single node adds several security | bundle. In the first example, a single node adds several security | |||
operations to a bundle. In the second example, a waypoint node | operations to a bundle. In the second example, a waypoint node | |||
received the bundle created in the first example and adds additional | received the bundle created in the first example and adds additional | |||
security operations. In both examples, the first column represents | security operations. In both examples, the first column represents | |||
blocks within a bundle and the second column represents the Block | blocks within a bundle and the second column represents the Block | |||
Number for the block, using the terminology B1...Bn for the purpose | Number for the block, using the terminology B1...Bn for the purpose | |||
of illustration. | of illustration. | |||
3.11.1. Example 1: Constructing a Bundle with Security | 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,B5), and a payload block | primary block (B1), two extension blocks (B4,B5), and a payload block | |||
(B6). The bundle source wishes to provide an integrity signature of | (B6). The bundle source wishes to provide an integrity signature of | |||
the plain-text associated with the primary block, the second | the plain text associated with the primary block, the second | |||
extension block, and the payload. The bundle source also wishes to | extension block, and the payload. The bundle source also wishes to | |||
provide confidentiality for the first extension block. The resultant | provide confidentiality for the first extension block. The resultant | |||
bundle is illustrated in Figure 3 and the security actions are | bundle is illustrated in Figure 3 and the security actions are | |||
described below. | described below. | |||
Block in Bundle ID | ||||
+======================================+====+ | ||||
| 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 | Figure 3: Security at Bundle Creation | |||
The following security actions were applied to this bundle at its | The following security actions were applied to this bundle at its | |||
time of creation. | time of creation. | |||
o An integrity signature applied to the canonicalized primary block | o An integrity signature applied to the canonical form of the | |||
(B1), the second extension block (B5) and the payload block (B6). | primary block (B1), the canonical form of the block-type-specific- | |||
This is accomplished by a single BIB (B2) with multiple targets. | data field of the second extension block (B5) and the canonical | |||
A single BIB is used in this case because all three targets share | form of the payload block (B6). This is accomplished by a single | |||
a security source, security context, and security context | BIB (B2) with multiple targets. A single BIB is used in this case | |||
parameters. Had this not been the case, multiple BIBs could have | because all three targets share a security source, security | |||
been added instead. | context, and security context 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 (B3). Once applied, the contents of | accomplished by a BCB (B3). Once applied, the block-type- | |||
extension block B4 are encrypted. The BCB MUST hold an | specific-data field of extension block B4 is encrypted. The BCB | |||
authentication signature for the cipher-text either in the cipher- | MUST hold an authentication tag for the cipher text either in the | |||
text that now populates the first extension block or as a security | cipher text that now populates the first extension block or as a | |||
result in the BCB itself, depending on which security context is | security result in the BCB itself, depending on which security | |||
used to form the BCB. A plain-text integrity signature may also | context is used to form the BCB. A plain text integrity signature | |||
exist as a security result in the BCB if one is provided by the | may also exist as a security result in the BCB if one is provided | |||
selected confidentiality security context. | by the selected confidentiality security context. | |||
3.11.2. Example 2: Adding More Security At A New Node | 3.11.2. Example 2: Adding More Security At A New Node | |||
Consider that the bundle as it is illustrated in Figure 3 is now | Consider that the bundle as it is illustrated in Figure 3 is now | |||
received by a waypoint node that wishes to encrypt the second | received by a waypoint node that wishes to encrypt the second | |||
extension block and the bundle payload. The waypoint security policy | extension block and the bundle payload. The waypoint security policy | |||
is to allow existing BIBs for these blocks to persist, as they may be | 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. | required as part of the security policy at the bundle destination. | |||
The resultant bundle is illustrated in Figure 4 and the security | The resultant bundle is illustrated in Figure 4 and the security | |||
actions are described below. Note that block IDs provided here are | actions are described below. Note that block IDs provided here are | |||
ordered solely for the purpose of this example and not meant to | ordered solely for the purpose of this example and not meant to | |||
impose an ordering for block creation. The ordering of blocks added | impose an ordering for block creation. The ordering of blocks added | |||
to a bundle MUST always be in compliance with [I-D.ietf-dtn-bpbis]. | to a bundle MUST always be in compliance with [I-D.ietf-dtn-bpbis]. | |||
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=B5,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 | Figure 4: Security At Bundle Forwarding | |||
The following security actions were applied to this bundle prior to | The following security actions were applied to this bundle prior to | |||
its forwarding from the waypoint node. | its forwarding from the waypoint node. | |||
o Since the waypoint node wishes to encrypt blocks B5 and B6, it | o Since the waypoint node wishes to encrypt the block-type-specific- | |||
MUST also encrypt the BIBs providing plain-text integrity over | data field of blocks B5 and B6, it MUST also encrypt the block- | |||
those blocks. However, BIB B2 could not be encrypted in its | type-specific-data field of the BIBs providing plain text | |||
entirety because it also held a signature for the primary block | integrity over those blocks. However, BIB B2 could not be | |||
(B1). Therefore, a new BIB (B7) is created and security results | encrypted in its entirety because it also held a signature for the | |||
associated with B5 and B6 are moved out of BIB B2 and into BIB B7. | 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 | o Now that there is no longer confusion of which plain text | |||
integrity signatures must be encrypted, a BCB is added to the | integrity signatures must be encrypted, a BCB is added to the | |||
bundle with the security targets being the second extension block | bundle with the security targets being the second extension block | |||
(B5) and the payload (B6) as well as the newly created BIB holding | (B5) and the payload (B6) as well as the newly created BIB holding | |||
their plain-text integrity signatures (B7). A single new BCB is | their plain text integrity signatures (B7). A single new BCB is | |||
used in this case because all three targets share a security | used in this case because all three targets share a security | |||
source, security context, and security context parameters. Had | source, security context, and security context parameters. Had | |||
this not been the case, multiple BCBs could have been added | this not been the case, multiple BCBs could have been added | |||
instead. | 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 validating a signature. Canonicalization algorithms are | |||
algorithms are used to construct a stable, end-to-end bit | used to construct a stable, end-to-end bit representation of a target | |||
representation of a target block. | block. | |||
Canonical forms are not transmitted, they are used to generate input | Canonical forms are used to generate input to a security context for | |||
to a cipher suite for security processing at a security-aware node. | security processing at a security-aware node. | |||
The canonicalization of the primary block is as specified in | BPSec operates on data fields within bundle blocks (e.g., the block- | |||
type-specific-data field). In their canonical form, these fields | ||||
MUST include their own CBOR encoding and MUST NOT include any other | ||||
encapsulating CBOR encoding. For example, the canonical form of the | ||||
block-type-specific-data field is a CBOR byte string existing within | ||||
the CBOR array containing the fields of the extension block. The | ||||
entire CBOR byte string is considered the canonical block-type- | ||||
specific-data field. The CBOR array framing is not considered part | ||||
of the field. | ||||
The canonical form of the primary block is specified in | ||||
[I-D.ietf-dtn-bpbis]. | [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 [I-D.ietf-dtn-bpbis] with the following | canonicalized as specified in [I-D.ietf-dtn-bpbis] with the following | |||
exceptions. | 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 the length indication of | |||
MUST NOT be included in the canonicalization. Confidentiality | the block-type-specific-data field MUST NOT be included in a | |||
services are used solely to convert the Block Type Specific Data | canonical form. Confidentiality services are used solely to | |||
Fields from plain-text to cipher-text. | convert block data in the block-type-specific-data field from | |||
plain text to cipher text. | ||||
o Reserved flags MUST NOT be included in any canonicalization as it | ||||
is not known if those flags will change in transit. | ||||
These canonicalization algorithms assume that Endpoint IDs do not | o Reserved flags in the block processing control flags field MUST | |||
change from the time at which a security source adds a security block | NOT be included in a canonical form as it is not known if those | |||
to a bundle and the time at which a node processes that security | flags will change in transit. | |||
block. | ||||
Cipher suites and security contexts MAY define their own | Cipher suites and security contexts MAY define their own | |||
canonicalization algorithms and require the use of those algorithms | canonicalization algorithms and require the use of those algorithms | |||
over the ones provided in this specification. In the event of | over the ones provided in this specification. In the event of | |||
conflicting canonicalization algorithms, those algorithms take | conflicting canonicalization algorithms, those algorithms take | |||
precedence over this specification. | precedence over this specification. | |||
5. Security Processing | 5. Security Processing | |||
This section describes the security aspects of bundle processing. | This section describes the security aspects of bundle processing. | |||
skipping to change at page 23, line 31 ¶ | skipping to change at page 22, line 31 ¶ | |||
be processed according to the security policy. A bundle status | be processed according to the security policy. A bundle status | |||
report indicating the failure MAY be generated. When all security | report indicating the failure MAY be generated. When all security | |||
operations for a BCB have been removed from the BCB, the BCB MUST be | operations for a BCB have been removed from the BCB, the BCB MUST be | |||
removed from the bundle. | removed from 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 MUST process the BCB if | not the destination of the bundle, the node MUST process 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 node | |||
bundle should have applied confidentiality to a specific security | should have applied confidentiality to a specific security target and | |||
target and no such BCB is present in the bundle, then the node MUST | no such BCB is present in the bundle, then the node MUST process this | |||
process this security target in accordance with the security policy. | security target in accordance with the security policy. It is | |||
This may involve removing the security target from the bundle. If | recommended that the node remove the security target from the bundle. | |||
the removed security target is the payload block, the bundle MUST be | If the removed security target is the payload block, the bundle MUST | |||
discarded. | be discarded. | |||
If an encrypted payload block cannot be decrypted (i.e., the cipher- | If an encrypted payload block cannot be decrypted (i.e., the cipher | |||
text cannot be authenticated), then the bundle MUST be discarded and | text cannot be authenticated), then the bundle MUST be discarded and | |||
processed no further. If an encrypted security target other than the | processed no further. If an encrypted security target other than the | |||
payload block cannot be decrypted then the associated security target | payload block cannot be decrypted then the associated security target | |||
and all security blocks associated with that target MUST be discarded | and all security blocks associated with that target MUST be discarded | |||
and processed no further. In both cases, requested status reports | and processed no further. In both cases, requested status reports | |||
(see [I-D.ietf-dtn-bpbis]) MAY be generated to reflect bundle or | (see [I-D.ietf-dtn-bpbis]) MAY be generated to 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 for each security | |||
cipher-text in the security target Block Type Specific Data Fields. | target MUST replace the cipher text in each of the security targets' | |||
If the Block Data Length field was modified at the time of encryption | block-type-specific-data fields. If the plain text is of different | |||
it MUST be updated to reflect the decrypted block length. | size than the cipher text, the CBOR byte string framing of this field | |||
must be updated to ensure this field remains a valid CBOR byte | ||||
string. The length of the recovered plain text is known by the | ||||
decrypting security context. | ||||
If a BCB contains multiple security operations, each operation | If a BCB contains multiple security operations, each operation | |||
processed by the node MUST be be treated as if the security operation | processed by the node MUST be treated as if the security operation | |||
has been represented by a single BCB with a single security operation | has been represented by a single BCB with a single security operation | |||
for the purposes of report generation and policy processing. | for the purposes of report generation and policy processing. | |||
5.1.2. Receiving BIBs | 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 is the security acceptor for any of the security | determine whether it is the security acceptor for any of the security | |||
operations in the BIB. If so, the node MUST process those operations | operations in the BIB. If so, the node MUST process those operations | |||
and remove any operation-specific information from the BIB prior to | and remove any operation-specific information from the BIB prior to | |||
delivering data to an application at the node or forwarding the | delivering data to an application at the node or forwarding the | |||
skipping to change at page 24, line 31 ¶ | skipping to change at page 23, line 33 ¶ | |||
removed from the bundle. | removed from the bundle. | |||
A BIB MUST NOT be processed if the security target of the BIB is also | A BIB MUST NOT be processed if the security target of the BIB is also | |||
the security target of a BCB in the bundle. Given the order of | the security target of a BCB in the bundle. Given the order of | |||
operations mandated by this specification, when both a BIB and a BCB | operations mandated by this specification, when both a BIB and a BCB | |||
share a security target, it means that the security target must have | share a security target, it means that the security target must have | |||
been encrypted after it was integrity signed and, therefore, the BIB | been encrypted after it was integrity signed and, therefore, the BIB | |||
cannot be verified until the security target has been decrypted by | cannot be verified until the security target has been decrypted by | |||
processing the BCB. | processing the BCB. | |||
If the security policy of a security-aware node specifies that a | If the security policy of a security-aware node specifies that a node | |||
bundle should have applied integrity to a specific security target | should have applied integrity to a specific security target and no | |||
and no such BIB is present in the bundle, then the node MUST process | such BIB is present in the bundle, then the node MUST process this | |||
this security target in accordance with the security policy. This | security target in accordance with the security policy. It is | |||
may involve removing the security target from the bundle. If the | RECOMMENDED that the node remove the security target from the bundle | |||
removed security target is the payload or primary block, the bundle | if the security target is not the payload or primary block. If the | |||
MAY be discarded. This action can occur at any node that has the | security target is the payload or primary block, the bundle MAY be | |||
ability to verify an integrity signature, not just the bundle | discarded. This action can occur at any node that has the ability to | |||
destination. | verify an integrity signature, not just the bundle destination. | |||
If a receiving node is not the security acceptor of a security | If a receiving node is not the security acceptor of a security | |||
operation in a BIB it MAY attempt to verify the security operation | operation in a BIB it MAY attempt to verify the security operation | |||
anyway to prevent forwarding corrupt data. If the verification | anyway to prevent forwarding corrupt data. If the verification | |||
fails, the node SHALL process the security target in accordance to | fails, the node SHALL process the security target in accordance to | |||
local security policy. It is RECOMMENDED that if a payload integrity | local security policy. It is RECOMMENDED that if a payload integrity | |||
check fails at a waypoint that it is processed in the same way as if | check fails at a waypoint that it is processed in the same way as if | |||
the check fails at the bundle destination. If the check passes, the | the check fails at the bundle destination. If the check passes, the | |||
node MUST NOT remove the security operation from the BIB prior to | node MUST NOT remove the security operation from the BIB prior to | |||
forwarding. | forwarding. | |||
If a BIB contains multiple security operations, each operation | If a BIB contains multiple security operations, each operation | |||
processed by the node MUST be be treated as if the security operation | processed by the node MUST be treated as if the security operation | |||
has been represented by a single BIB with a single security operation | has been represented by a single BIB with a single security operation | |||
for the purposes of report generation and policy processing. | for the purposes of report generation and policy processing. | |||
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 [I-D.ietf-dtn-bpbis] MUST be followed. As defined | rules described in [I-D.ietf-dtn-bpbis] MUST be followed. As defined | |||
there and summarized here for completeness, only the payload block | there and summarized here for completeness, only the payload block | |||
can be fragmented; security blocks, like all extension blocks, can | can be fragmented; security blocks, like all extension blocks, can | |||
skipping to change at page 25, line 26 ¶ | skipping to change at page 24, line 29 ¶ | |||
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. A node should apply any confidentiality protection prior | |||
to performing any fragmentation. | ||||
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 | |||
management and this specification neither defines nor requires a | management and this specification neither defines nor requires a | |||
specific key management strategy. | specific key management strategy. | |||
7. Security Policy Considerations | 7. Security Policy Considerations | |||
When implementing BPSec, several policy decisions must be considered. | When implementing BPSec, several policy decisions must be considered. | |||
This section describes key policies that affect the generation, | This section describes key policies that affect the generation, | |||
forwarding, and receipt of bundles that are secured using this | forwarding, and receipt of bundles that are secured using this | |||
specification. No single set of policy decisions is envisioned to | specification. No single set of policy decisions is envisioned to | |||
work for all secure DTN deployments. | work for all secure DTN deployments. | |||
o If a bundle is received that contains more than one security | o If a bundle is received that contains combinations of security | |||
operation, in violation of BPSec, then the BPA must determine how | operations that are disallowed by this specification the BPA must | |||
to handle this bundle. The bundle may be discarded, the block | determine how to handle the bundle. The bundle may be discarded, | |||
affected by the security operation may be discarded, or one | the block affected by the security operation may be discarded, or | |||
security operation may be favored over another. | one security operation may be favored over another. | |||
o BPAs in the network must understand what security operations they | o BPAs in the network must understand what security operations they | |||
should apply to bundles. This decision may be based on the source | should apply to bundles. This decision may be based on the source | |||
of the bundle, the destination of the bundle, or some other | of the bundle, the destination of the bundle, or some other | |||
information related to the bundle. | information related to the bundle. | |||
o If a waypoint has been configured to add a security operation to a | o If a waypoint has been configured to add a security operation to a | |||
bundle, and the received bundle already has the security operation | bundle, and the received bundle already has the security operation | |||
applied, then the receiver must understand what to do. The | applied, then the receiver must understand what to do. The | |||
receiver may discard the bundle, discard the security target and | receiver may discard the bundle, discard the security target and | |||
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 be considered for every | |||
blocks that absolutely need them. If a BPA were to apply security | block in a bundle and that the default behavior of a bundle agent | |||
operations such as integrity or confidentiality to every block in | is to use the security services defined in this specification. | |||
the bundle, regardless of need, there could be downstream errors | Designers should only deviate from the use of security operations | |||
processing blocks whose contents must be inspected or changed at | when the deviation can be justified - such as when doing so causes | |||
every hop along the path. | downstream errors when processing blocks whose contents must be | |||
inspected or changed at one or more hops along the path. | ||||
o It is recommended that BCBs be allowed to alter the size of | o It is recommended that BCBs be allowed to alter the size of | |||
extension blocks and the payload block. However, care must be | extension blocks and the payload block. However, care must be | |||
taken to ensure that changing the size of the payload block while | taken to ensure that changing the size of the payload block while | |||
the bundle is in transit do not negatively affect bundle | the bundle is in transit do not negatively affect bundle | |||
processing (e.g., calculating storage needs, scheduling | processing (e.g., calculating storage needs, scheduling | |||
transmission times, caching block byte offsets). | transmission times). | |||
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, a plain-text integrity signature | 1. At the time of encryption, a security context can be selected | |||
may be generated and added to the BCB for the security target | which computes a plain text integrity signature and included | |||
as additional information in the security result field. | as a security context 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 with a | |||
integrity signed. | new block number and given integrity protection. | |||
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 | o It is recommended that security policy address whether cipher | |||
suites whose cipher-text is larger (or smaller) than the initial | suites whose cipher text is larger than the initial plain text are | |||
plain-text are permitted and, if so, for what types of blocks. | permitted and, if so, for what types of blocks. Changing the size | |||
Changing the size of a block may cause processing difficulties for | of a block may cause processing difficulties for networks that | |||
networks that calculate block offsets into bundles or predict | calculate block offsets into bundles or predict transmission times | |||
transmission times or storage availability as a function of bundle | or storage availability as a function of bundle size. In other | |||
size. In other cases, changing the size of a payload as part of | cases, changing the size of a payload as part of encryption has no | |||
encryption has no significant impact. | 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 | |||
skipping to change at page 28, line 18 ¶ | skipping to change at page 27, line 23 ¶ | |||
K_M, K_A, and/or K_B) as well as material which has been publicly- | K_M, K_A, and/or K_B) as well as material which has been publicly- | |||
shared. | shared. | |||
If Mallory is operating as a privileged node, this is tantamount to | If Mallory is operating as a privileged node, this is tantamount to | |||
compromise; BPSec does not provide mechanisms to detect or remove | compromise; BPSec does not provide mechanisms to detect or remove | |||
Mallory from the DTN or BPSec secure environment. It is up to the | Mallory from the DTN or BPSec secure environment. It is up to the | |||
BPSec implementer or the underlying cryptographic mechanisms to | BPSec implementer or the underlying cryptographic mechanisms to | |||
provide appropriate capabilities if they are needed. It should also | provide appropriate capabilities if they are needed. It should also | |||
be noted that if the implementation of BPSec uses a single set of | be noted that if the implementation of BPSec uses a single set of | |||
shared cryptographic material for all nodes, a legitimate node is | shared cryptographic material for all nodes, a legitimate node is | |||
equivalent to a privileged node because K_M == K_A == K_B. | equivalent to a privileged node because K_M == K_A == K_B. For this | |||
reason, sharing cryptographic material in this way is not | ||||
recommended. | ||||
A special case of the legitimate node is when Mallory is either Alice | A special case of the legitimate node is when Mallory is either Alice | |||
or Bob (i.e., K_M == K_A or K_M == K_B). In this case, Mallory is | or Bob (i.e., K_M == K_A or K_M == K_B). In this case, Mallory is | |||
able to impersonate traffic as either Alice or Bob, which means that | able to impersonate traffic as either Alice or Bob, respectively, | |||
traffic to and from that node can be decrypted and encrypted, | which means that traffic to and from that node can be decrypted and | |||
respectively. Additionally, messages may be signed as originating | encrypted, respectively. Additionally, messages may be signed as | |||
from one of the endpoints. | originating from one of the endpoints. | |||
8.2. Attacker Behaviors and BPSec Mitigations | 8.2. Attacker Behaviors and BPSec Mitigations | |||
8.2.1. Eavesdropping Attacks | 8.2.1. Eavesdropping Attacks | |||
Once Mallory has received a bundle, she is able to examine the | Once Mallory has received a bundle, she is able to examine the | |||
contents of that bundle and attempt to recover any protected data or | contents of that bundle and attempt to recover any protected data or | |||
cryptographic keying material from the blocks contained within. The | cryptographic keying material from the blocks contained within. The | |||
protection mechanism that BPSec provides against this action is the | protection mechanism that BPSec provides against this action is the | |||
BCB, which encrypts the contents of its security target, providing | BCB, which encrypts the contents of its security target, providing | |||
skipping to change at page 28, line 46 ¶ | skipping to change at page 28, line 4 ¶ | |||
confidentiality of the data. Of course, it should be assumed that | confidentiality of the data. Of course, it should be assumed that | |||
Mallory is able to attempt offline recovery of encrypted data, so the | Mallory is able to attempt offline recovery of encrypted data, so the | |||
cryptographic mechanisms selected to protect the data should provide | cryptographic mechanisms selected to protect the data should provide | |||
a suitable level of protection. | a suitable level of protection. | |||
When evaluating the risk of eavesdropping attacks, it is important to | When evaluating the risk of eavesdropping attacks, it is important to | |||
consider the lifetime of bundles on a DTN. Depending on the network, | consider the lifetime of bundles on a DTN. Depending on the network, | |||
bundles may persist for days or even years. Long-lived bundles imply | bundles may persist for days or even years. Long-lived bundles imply | |||
that the data exists in the network for a longer period of time and, | that the data exists in the network for a longer period of time and, | |||
thus, there may be more opportunities to capture those bundles. | thus, there may be more opportunities to capture those bundles. | |||
Additionally, bundles that are long-lived imply that the information | Additionally, bundles that are long-lived imply that the information | |||
stored within them may remain relevant and sensitive for long enough | stored within them may remain relevant and sensitive for long enough | |||
that, once captured, there is sufficient time to crack encryption | that, once captured, there is sufficient time to crack encryption | |||
associated with the bundle. If a bundle does persist on the network | associated with the bundle. If a bundle does persist on the network | |||
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. | |||
NOTE: Mallory is not limited by the bundle lifetime and may retain a | ||||
given bundle indefinitely. | ||||
NOTE: Irrespective of whether BPSec is used, traffic analysis will be | ||||
possible. | ||||
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 [I-D.ietf-dtn-bpbis]. Mallory will be | control flags as defined in [I-D.ietf-dtn-bpbis]. Mallory will be | |||
able to undertake activities which include modification of data | able to undertake activities which include modification of data | |||
within the blocks, replacement of blocks, addition of blocks, or | within the blocks, replacement of blocks, addition of blocks, or | |||
removal of blocks. Within BPSec, both the BIB and BCB provide | removal of blocks. Within BPSec, both the BIB and BCB provide | |||
integrity protection mechanisms to detect or prevent data | integrity protection mechanisms to detect or prevent data | |||
skipping to change at page 29, line 51 ¶ | skipping to change at page 29, line 15 ¶ | |||
transmission and are expected to be present on receipt. This or | transmission and are expected to be present on receipt. This or | |||
other similar out-of-band information is required to correct for | other similar out-of-band information is required to correct for | |||
removal of security information in the bundle. | removal of security information in the 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. Validating a BIB indicates only that the BIB was generated by | |||
and BCB should be used and the BCB should require an IND-CCA2 | a holder of the relevant key; it does not provide any guarantee that | |||
encryption scheme. Such an encryption scheme will guard against | the bundle or block was created by the same entity. In order to | |||
signature substitution attempts by Mallory. In this case, Alice | provide verifiable integrity checks BCB should require an encryption | |||
creates a BIB with the protected data block as the security target | scheme that is Indistinguishable under adaptive Chosen Ciphertext | |||
and then creates a BCB with both the BIB and protected data block as | Attack (IND-CCA2) secure. Such an encryption scheme will guard | |||
its security targets. | against signature substitution attempts by Mallory. In this case, | |||
Alice creates a BIB with the protected data block as the security | ||||
target and then creates a BCB with both the BIB and protected data | ||||
block as its security targets. | ||||
8.2.3. Topology Attacks | 8.2.3. Topology Attacks | |||
If Mallory is in a MITM position within the DTN, she is able to | If Mallory is in a MITM position within the DTN, she is able to | |||
influence how any bundles that come to her may pass through the | influence how any bundles that come to her may pass through the | |||
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. | |||
skipping to change at page 30, line 45 ¶ | skipping to change at page 30, line 14 ¶ | |||
8.2.4. Message Injection | 8.2.4. Message Injection | |||
Mallory is also able to generate new bundles and transmit them into | Mallory is also able to generate new bundles and transmit them into | |||
the DTN at will. These bundles may either be copies or slight | the DTN at will. These bundles may either be copies or slight | |||
modifications of previously-observed bundles (i.e., a replay attack) | modifications of previously-observed bundles (i.e., a replay attack) | |||
or entirely new bundles generated based on the Bundle Protocol, | or entirely new bundles generated based on the Bundle Protocol, | |||
BPSec, or other bundle-related protocols. With these attacks | BPSec, or other bundle-related protocols. With these attacks | |||
Mallory's objectives may vary, but may be targeting either the bundle | Mallory's objectives may vary, but may be targeting either the bundle | |||
protocol or application-layer protocols conveyed by the bundle | protocol or application-layer protocols conveyed by the bundle | |||
protocol. | protocol. The target could also be the storage and compute of the | |||
nodes running the bundle or application layer protocols (e.g., a | ||||
denial of service to flood on the storage of the store-and-forward | ||||
mechanism; or compute which would process the packets and perhaps | ||||
prevent other activities). | ||||
BPSec relies on cipher suite capabilities to prevent replay or forged | BPSec relies on cipher suite capabilities to prevent replay or forged | |||
message attacks. A BCB used with appropriate cryptographic | message attacks. A BCB used with appropriate cryptographic | |||
mechanisms (e.g., a counter-based cipher mode) may provide replay | mechanisms may provide replay protection under certain circumstances. | |||
protection under certain circumstances. Alternatively, application | Alternatively, application data itself may be augmented to include | |||
data itself may be augmented to include mechanisms to assert data | mechanisms to assert data uniqueness and then protected with a BIB, a | |||
uniqueness and then protected with a BIB, a BCB, or both along with | BCB, or both along with other block data. In such a case, the | |||
other block data. In such a case, the receiving node would be able | receiving node would be able to validate the uniqueness of the data. | |||
to validate the uniqueness of the data. | ||||
9. Security Context Considerations | 9. Security Context Considerations | |||
9.1. Identification and Configuration | 9.1. Mandating Security Contexts | |||
Because of the diversity of networking scenarios and node | ||||
capabilities that may utilize BPSec there is no one security context | ||||
mandated for every possible BPSec implementation. For example, a | ||||
security context appropriate for a resource-constrained node with | ||||
limited connectivity may be inappropriate for use in a well- | ||||
resourced, well connected node. | ||||
This does not mean that the use of BPSec in a particular network is | ||||
meant to be used without security contexts for interoperability and | ||||
default behavior. Network designers must identify the minimal set of | ||||
security contexts necessary for functions in their network. For | ||||
example, a default set of security contexts could be created for use | ||||
over the terrestrial Internet and required by any BPSec | ||||
implementation communicating over the terrestrial Internet. | ||||
Implementations of BPSec MUST support the mandated security contexts | ||||
of the networks in which they are applied. If a node serves as a | ||||
gateway amongst two or more networks, the BPSec implementation at | ||||
that node MUST support the union of security contexts mandated in | ||||
those networks. | ||||
BPSec has been designed to allow for a diversity of security contexts | ||||
and for new contexts to be defined over time. The use of different | ||||
security contexts does not change the BPSec protocol itself and the | ||||
definition of new security contexts MUST adhere to the requirements | ||||
of such contexts as presented in this section and generally in this | ||||
specification. | ||||
9.2. Identification and Configuration | ||||
Security blocks must uniquely define the security context for their | Security blocks must uniquely define the security context for their | |||
services. This context MUST be uniquely identifiable and MAY use | services. This context MUST be uniquely identifiable and MAY use | |||
parameters for customization. Where policy and configuration | parameters for customization. Where policy and configuration | |||
decisions can be captured as parameters, the security context | decisions can be captured as parameters, the security context | |||
identifier may identify a cipher suite. In cases where the same | identifier may identify a cipher suite. In cases where the same | |||
cipher suites are used with differing predetermined configurations | cipher suites are used with differing predetermined configurations | |||
and policies, users can define multiple security contexts that use | and policies, users can define multiple security contexts that use | |||
the same cipher suite. | the same cipher suite. | |||
skipping to change at page 31, line 35 ¶ | skipping to change at page 31, line 37 ¶ | |||
stability, or an increased need for confidentiality, a larger number | stability, or an increased need for confidentiality, a larger number | |||
of contexts can be defined with each context supporting few, if any, | of contexts can be defined with each context supporting few, if any, | |||
parameters. | parameters. | |||
Security Context Examples | Security Context Examples | |||
+---------+------------+--------------------------------------------+ | +---------+------------+--------------------------------------------+ | |||
| Context | Parameters | Definition | | | Context | Parameters | Definition | | |||
| Id | | | | | Id | | | | |||
+---------+------------+--------------------------------------------+ | +---------+------------+--------------------------------------------+ | |||
| 1 | Key, IV | AES-GCM-256 cipher suite with provided | | | 1 | Encrypted | AES-GCM-256 cipher suite with provided | | |||
| | | ephemeral key and initialization vector. | | | | Key, IV | ephemeral key encrypted with a | | |||
| | | predetermined key encryption key and clear | | ||||
| | | text initialization vector. | | ||||
| 2 | IV | AES-GCM-256 cipher suite with | | | 2 | IV | AES-GCM-256 cipher suite with | | |||
| | | predetermined key and predetermined key | | | | | predetermined key and predetermined | | |||
| | | rotation policy. | | | | | key rotation policy. | | |||
| 3 | Nil | AES-GCM-256 cipher suite with all info | | | 3 | Nil | AES-GCM-256 cipher suite with all info | | |||
| | | predetermined. | | | | | predetermined. | | |||
+---------+------------+--------------------------------------------+ | +---------+------------+--------------------------------------------+ | |||
Table 1 | Table 1 | |||
9.2. Authorship | 9.3. Authorship | |||
Developers or implementers should consider the diverse performance | Developers or implementers should consider the diverse performance | |||
and conditions of networks on which the Bundle Protocol (and | and conditions of networks on which the Bundle Protocol (and | |||
therefore BPSec) will operate. Specifically, the delay and capacity | therefore BPSec) will operate. Specifically, the delay and capacity | |||
of delay-tolerant networks can vary substantially. Developers should | of delay-tolerant networks can vary substantially. Developers should | |||
consider these conditions to better describe the conditions when | consider these conditions to better describe the conditions when | |||
those contexts will operate or exhibit vulnerability, and selection | those contexts will operate or exhibit vulnerability, and selection | |||
of these contexts for implementation should be made with | of these contexts for implementation should be made with | |||
consideration for this reality. There are key differences that may | consideration for this reality. There are key differences that may | |||
limit the opportunity for a security context to leverage existing | limit the opportunity for a security context to leverage existing | |||
skipping to change at page 32, line 31 ¶ | skipping to change at page 32, line 38 ¶ | |||
time may be extremely large. This may limit the utility of | time may be extremely large. This may limit the utility of | |||
session key generation mechanisms, such as Diffie-Hellman, as a | session key generation mechanisms, such as Diffie-Hellman, as a | |||
two-way handshake may not be feasible or reliable. | two-way handshake may not be feasible or reliable. | |||
o Opportunistic Access: Depending on the application environment, a | o Opportunistic Access: Depending on the application environment, a | |||
given endpoint may not be guaranteed to be accessible within a | given endpoint may not be guaranteed to be accessible within a | |||
certain amount of time. This may make asymmetric cryptographic | certain amount of time. This may make asymmetric cryptographic | |||
architectures which rely on a key distribution center or other | architectures which rely on a key distribution center or other | |||
trust center impractical under certain conditions. | trust center impractical under certain conditions. | |||
When developing new security contexts for use with BPSec, the | When developing security contexts for use with BPSec, the following | |||
following information SHOULD be considered for inclusion in these | information SHOULD be considered for inclusion in these | |||
specifications. | specifications. | |||
o Security Context Parameters. Security contexts MUST define their | o Security Context Parameters. Security contexts 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. Security contexts MUST define their security | o Security Results. Security contexts MUST define their security | |||
result Ids, the data types of those results, and their CBOR | result Ids, the data types of those results, and their CBOR | |||
encoding. | encoding. | |||
o New Canonicalizations. Security contexts may define new | o New Canonicalizations. Security contexts may define new | |||
canonicalization algorithms as necessary. | canonicalization algorithms as necessary. | |||
o Cipher-Text Size. Security contexts MUST state whether their | o Cipher-Text Size. Security contexts MUST state whether their | |||
associated cipher suites generate cipher-text (to include any | associated cipher suites generate cipher text (to include any | |||
authentication information) that is of a different size than the | authentication information) that is of a different size than the | |||
input plain-text. | input plain text. | |||
If a security context does not wish to alter the size of the | ||||
plain-text, it should consider defining the following policy. | ||||
* Place overflow bytes, authentication signatures, and any | If a security context does not wish to alter the size of the plain | |||
additional authenticated data in security result fields rather | text it should place overflow bytes and authentication tags in | |||
than in the cipher-text itself. | security result fields. | |||
* Pad the cipher-text in cases where the cipher-text is smaller | o Block Header Information. Security contexts SHOULD include block | |||
than the plain-text. | header information that is considered to be immutable for the | |||
block. This information MAY include the block type code, block | ||||
number, CRC Type and CRC field (if present or if missing and | ||||
unlikely to be added later), and possibly certain block processing | ||||
control flags. Designers should input these fields as additional | ||||
data for integrity protection when these fields are expected to | ||||
remain unchanged over the path the block will take from the | ||||
security source to the security acceptor. Security contexts | ||||
considering block header information MUST describe expected | ||||
behavior when these fields fail their integrity verification. | ||||
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 can co-exist within a bundle and can | 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 | |||
skipping to change at page 34, line 12 ¶ | skipping to change at page 34, line 24 ¶ | |||
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, | |||
and configuration associated with blocks SHOULD be included in any | and configuration associated with blocks SHOULD be included in any | |||
OSB definition. | OSB definition. | |||
NOTE: The burden of showing compliance with processing rules is | NOTE: The burden of showing compliance with processing rules is | |||
placed upon the standards defining new security blocks and the | placed upon the specifications defining new security blocks and the | |||
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 | |||
This specification includes fields requiring registries managed by | This specification includes fields requiring registries managed by | |||
IANA. | IANA. | |||
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 [I-D.ietf-dtn-bpbis]. | "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 | | |||
+-------+-----------------------------+---------------+ | +-------+-----------------------------+---------------+ | |||
| TBA | Block Integrity Block | This document | | | TBA | Block Integrity Block | This document | | |||
| TBA | Block Confidentiality Block | This document | | | TBA | Block Confidentiality Block | This document | | |||
+-------+-----------------------------+---------------+ | +-------+-----------------------------+---------------+ | |||
skipping to change at page 35, line 21 ¶ | skipping to change at page 35, line 32 ¶ | |||
+-------+-------------+---------------+ | +-------+-------------+---------------+ | |||
Table 3 | Table 3 | |||
12. References | 12. References | |||
12.1. Normative References | 12.1. Normative References | |||
[I-D.ietf-dtn-bpbis] | [I-D.ietf-dtn-bpbis] | |||
Burleigh, S., Fall, K., and E. Birrane, "Bundle Protocol | Burleigh, S., Fall, K., and E. Birrane, "Bundle Protocol | |||
Version 7", draft-ietf-dtn-bpbis-18 (work in progress), | Version 7", draft-ietf-dtn-bpbis-22 (work in progress), | |||
January 2020. | February 2020. | |||
[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, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <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 | ||||
IANA Registries", RFC 6255, DOI 10.17487/RFC6255, May | ||||
2011, <https://www.rfc-editor.org/info/rfc6255>. | ||||
[RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object | [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object | |||
Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, | Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, | |||
October 2013, <https://www.rfc-editor.org/info/rfc7049>. | October 2013, <https://www.rfc-editor.org/info/rfc7049>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
12.2. Informative References | 12.2. Informative References | |||
[I-D.birrane-dtn-sbsp] | [I-D.birrane-dtn-sbsp] | |||
Birrane, E., Pierce-Mayer, J., and D. Iannicca, | Birrane, E., Pierce-Mayer, J., and D. Iannicca, | |||
"Streamlined Bundle Security Protocol Specification", | "Streamlined Bundle Security Protocol Specification", | |||
draft-birrane-dtn-sbsp-01 (work in progress), October | draft-birrane-dtn-sbsp-01 (work in progress), October | |||
2015. | 2015. | |||
[I-D.ietf-dtn-bpsec-interop-sc] | [I-D.ietf-dtn-bpsec-interop-sc] | |||
Birrane, E., "BPSec Interoperability Security Contexts", | Birrane, E., "BPSec Interoperability Security Contexts", | |||
draft-ietf-dtn-bpsec-interop-sc-00 (work in progress), | draft-ietf-dtn-bpsec-interop-sc-01 (work in progress), | |||
March 2019. | February 2020. | |||
[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, DOI 10.17487/RFC4838, | Networking Architecture", RFC 4838, DOI 10.17487/RFC4838, | |||
April 2007, <https://www.rfc-editor.org/info/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, | "Bundle Security Protocol Specification", RFC 6257, | |||
DOI 10.17487/RFC6257, May 2011, | DOI 10.17487/RFC6257, May 2011, | |||
<https://www.rfc-editor.org/info/rfc6257>. | <https://www.rfc-editor.org/info/rfc6257>. | |||
skipping to change at page 36, line 27 ¶ | skipping to change at page 36, line 44 ¶ | |||
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. | |||
Authors' Addresses | Authors' Addresses | |||
Edward J. Birrane, III | Edward J. Birrane, III | |||
The Johns Hopkins University Applied Physics Laboratory | The Johns Hopkins University Applied | |||
Physics Laboratory | ||||
11100 Johns Hopkins Rd. | 11100 Johns Hopkins Rd. | |||
Laurel, MD 20723 | Laurel, MD 20723 | |||
US | US | |||
Phone: +1 443 778 7423 | Phone: +1 443 778 7423 | |||
Email: Edward.Birrane@jhuapl.edu | Email: Edward.Birrane@jhuapl.edu | |||
Kenneth McKeever | Kenneth McKeever | |||
The Johns Hopkins University Applied Physics Laboratory | The Johns Hopkins University Applied | |||
Physics Laboratory | ||||
11100 Johns Hopkins Rd. | 11100 Johns Hopkins Rd. | |||
Laurel, MD 20723 | Laurel, MD 20723 | |||
US | US | |||
Phone: +1 443 778 2237 | Phone: +1 443 778 2237 | |||
Email: Ken.McKeever@jhuapl.edu | Email: Ken.McKeever@jhuapl.edu | |||
End of changes. 116 change blocks. | ||||
323 lines changed or deleted | 361 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/ |