rfc9172.original | rfc9172.txt | |||
---|---|---|---|---|
Delay-Tolerant Networking E. Birrane | Internet Engineering Task Force (IETF) E. Birrane, III | |||
Internet-Draft K. McKeever | Request for Comments: 9172 K. McKeever | |||
Intended status: Standards Track JHU/APL | Category: Standards Track JHU/APL | |||
Expires: August 19, 2021 February 15, 2021 | ISSN: 2070-1721 January 2022 | |||
Bundle Protocol Security Specification | Bundle Protocol Security (BPSec) | |||
draft-ietf-dtn-bpsec-27 | ||||
Abstract | Abstract | |||
This document defines a security protocol providing data integrity | This document defines a security protocol providing data integrity | |||
and confidentiality services for the Bundle Protocol. | and confidentiality services for the Bundle Protocol (BP). | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on August 19, 2021. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9172. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Revised BSD License text as described in Section 4.e of the | |||
the Trust Legal Provisions and are provided without warranty as | Trust Legal Provisions and are provided without warranty as described | |||
described in the Simplified BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Supported Security Services . . . . . . . . . . . . . . . 3 | 1.1. Supported Security Services | |||
1.2. Specification Scope . . . . . . . . . . . . . . . . . . . 4 | 1.2. Specification Scope | |||
1.3. Related Documents . . . . . . . . . . . . . . . . . . . . 5 | 1.3. Related Documents | |||
1.4. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6 | 1.4. Terminology | |||
2. Design Decisions . . . . . . . . . . . . . . . . . . . . . . 7 | 2. Design Decisions | |||
2.1. Block-Level Granularity . . . . . . . . . . . . . . . . . 7 | 2.1. Block-Level Granularity | |||
2.2. Multiple Security Sources . . . . . . . . . . . . . . . . 8 | 2.2. Multiple Security Sources | |||
2.3. Mixed Security Policy . . . . . . . . . . . . . . . . . . 9 | 2.3. Mixed Security Policy | |||
2.4. User-Defined Security Contexts . . . . . . . . . . . . . 9 | 2.4. User-Defined Security Contexts | |||
2.5. Deterministic Processing . . . . . . . . . . . . . . . . 9 | 2.5. Deterministic Processing | |||
3. Security Blocks . . . . . . . . . . . . . . . . . . . . . . . 10 | 3. Security Blocks | |||
3.1. Block Definitions . . . . . . . . . . . . . . . . . . . . 10 | 3.1. Block Definitions | |||
3.2. Uniqueness . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.2. Uniqueness | |||
3.3. Target Multiplicity . . . . . . . . . . . . . . . . . . . 12 | 3.3. Target Multiplicity | |||
3.4. Target Identification . . . . . . . . . . . . . . . . . . 13 | 3.4. Target Identification | |||
3.5. Block Representation . . . . . . . . . . . . . . . . . . 13 | 3.5. Block Representation | |||
3.6. Abstract Security Block . . . . . . . . . . . . . . . . . 13 | 3.6. Abstract Security Block | |||
3.7. Block Integrity Block . . . . . . . . . . . . . . . . . . 16 | 3.7. Block Integrity Block | |||
3.8. Block Confidentiality Block . . . . . . . . . . . . . . . 17 | 3.8. Block Confidentiality Block | |||
3.9. Block Interactions . . . . . . . . . . . . . . . . . . . 18 | 3.9. Block Interactions | |||
3.10. Parameter and Result Identification . . . . . . . . . . . 19 | 3.10. Parameter and Result Identification | |||
3.11. BSP Block Examples . . . . . . . . . . . . . . . . . . . 20 | 3.11. BPSec Block Examples | |||
3.11.1. Example 1: Constructing a Bundle with Security . . . 20 | 3.11.1. Example 1: Constructing a Bundle with Security | |||
3.11.2. Example 2: Adding More Security At A New Node . . . 21 | 3.11.2. Example 2: Adding More Security at a New Node | |||
4. Canonical Forms . . . . . . . . . . . . . . . . . . . . . . . 23 | 4. Canonical Forms | |||
5. Security Processing . . . . . . . . . . . . . . . . . . . . . 24 | 5. Security Processing | |||
5.1. Bundles Received from Other Nodes . . . . . . . . . . . . 24 | 5.1. Bundles Received from Other Nodes | |||
5.1.1. Receiving BCBs . . . . . . . . . . . . . . . . . . . 24 | 5.1.1. Receiving BCBs | |||
5.1.2. Receiving BIBs . . . . . . . . . . . . . . . . . . . 25 | 5.1.2. Receiving BIBs | |||
5.2. Bundle Fragmentation and Reassembly . . . . . . . . . . . 26 | 5.2. Bundle Fragmentation and Reassembly | |||
6. Key Management . . . . . . . . . . . . . . . . . . . . . . . 27 | 6. Key Management | |||
7. Security Policy Considerations . . . . . . . . . . . . . . . 27 | 7. Security Policy Considerations | |||
7.1. Security Reason Codes . . . . . . . . . . . . . . . . . . 28 | 7.1. Security Reason Codes | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | 8. Security Considerations | |||
8.1. Attacker Capabilities and Objectives . . . . . . . . . . 30 | 8.1. Attacker Capabilities and Objectives | |||
8.2. Attacker Behaviors and BPSec Mitigations . . . . . . . . 31 | 8.2. Attacker Behaviors and BPSec Mitigations | |||
8.2.1. Eavesdropping Attacks . . . . . . . . . . . . . . . . 31 | 8.2.1. Eavesdropping Attacks | |||
8.2.2. Modification Attacks . . . . . . . . . . . . . . . . 32 | 8.2.2. Modification Attacks | |||
8.2.3. Topology Attacks . . . . . . . . . . . . . . . . . . 33 | 8.2.3. Topology Attacks | |||
8.2.4. Message Injection . . . . . . . . . . . . . . . . . . 34 | 8.2.4. Message Injection | |||
9. Security Context Considerations . . . . . . . . . . . . . . . 34 | 9. Security Context Considerations | |||
9.1. Mandating Security Contexts . . . . . . . . . . . . . . . 34 | 9.1. Mandating Security Contexts | |||
9.2. Identification and Configuration . . . . . . . . . . . . 35 | 9.2. Identification and Configuration | |||
9.3. Authorship . . . . . . . . . . . . . . . . . . . . . . . 37 | 9.3. Authorship | |||
10. Defining Other Security Blocks . . . . . . . . . . . . . . . 38 | 10. Defining Other Security Blocks | |||
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 | 11. IANA Considerations | |||
11.1. Bundle Block Types . . . . . . . . . . . . . . . . . . . 39 | 11.1. Bundle Block Types | |||
11.2. Bundle Status Report Reason Codes . . . . . . . . . . . 40 | 11.2. Bundle Status Report Reason Codes | |||
11.3. Security Context Identifiers . . . . . . . . . . . . . . 40 | 11.3. Security Context Identifiers | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 12. References | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 41 | 12.1. Normative References | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 42 | 12.2. Informative References | |||
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 42 | Acknowledgments | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 | Authors' Addresses | |||
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 | [RFC9171] and is intended for use in Delay-Tolerant Networking (DTN) | |||
Networks (DTNs) to provide security services between a security | to provide security services between a security source and a security | |||
source and a security acceptor. When the security source is the | acceptor. When the security source is the bundle source and the | |||
bundle source and when the security acceptor is the bundle | security acceptor is the bundle destination, the security service | |||
destination, the security service provides end-to-end protection. | provides end-to-end protection. | |||
The Bundle Protocol specification [I-D.ietf-dtn-bpbis] defines DTN as | The Bundle Protocol specification [RFC9171] defines DTN as referring | |||
referring to "a networking architecture providing communications in | to "a network architecture providing communications in and/or through | |||
and/or through highly stressed environments" where "BP may be viewed | highly stressed environments" where "BP may be viewed as sitting at | |||
as sitting at the application layer of some number of constituent | the application layer of some number of constituent networks, forming | |||
networks, forming a store-carry-forward overlay network". The term | a store-carry-forward overlay network". The phrase "stressed | |||
"stressed" environment refers to multiple challenging conditions | environment" refers to multiple challenging conditions including | |||
including intermittent connectivity, large and/or variable delays, | intermittent connectivity, large and/or variable delays, asymmetric | |||
asymmetric data rates, and high bit error rates. | data rates, and high bit error rates. | |||
It should be presumed that the BP will be deployed such that the | It should be presumed that the BP will be deployed in an untrusted | |||
network cannot be trusted, posing the usual security challenges | network, which poses the usual security challenges related to | |||
related to confidentiality and integrity. However, the stressed | confidentiality and integrity. However, the stressed nature of the | |||
nature of the BP operating environment imposes unique conditions | BP operating environment imposes unique conditions where usual | |||
where usual transport security mechanisms may not be sufficient. For | transport security mechanisms may not be sufficient. For example, | |||
example, the store-carry-forward nature of the network may require | the store-carry-forward nature of the network may require protecting | |||
protecting data at rest, preventing unauthorized consumption of | data at rest, preventing unauthorized consumption of critical | |||
critical resources such as storage space, and operating without | resources such as storage space, and operating without regular | |||
regular contact with a centralized security oracle (such as a | contact with a centralized security oracle (such as a certificate | |||
certificate authority). | authority). | |||
An end-to-end security service is needed that operates in all of the | An end-to-end security service that operates in all of the | |||
environments where the BP operates. | environments where the BP operates is needed. | |||
1.1. Supported Security Services | 1.1. Supported Security Services | |||
BPSec provides integrity and confidentiality services for BP bundles, | BPSec provides integrity and confidentiality services for 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 plaintext 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 DTN, except for authorized nodes possessing special | |||
information. This generally means producing cipher text from plain | information. Generally, this means producing ciphertext from | |||
text and generating authentication information for that cipher text. | plaintext and generating authentication information for that | |||
Confidentiality, in this context, applies to the contents of target | ciphertext. In this context, confidentiality applies to the contents | |||
data and does not extend to hiding the fact that confidentiality | of target data and does not extend to hiding the fact that | |||
exists in the bundle. | confidentiality exists in the bundle. | |||
NOTE: Hop-by-hop authentication is NOT a supported security service | NOTE: Hop-by-hop authentication is NOT a supported security service | |||
in this specification, for two 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; therefore, hop-by-hop authentication is difficult or | |||
impossible to enforce. | impossible to enforce. | |||
2. Hop-by-hop authentication cannot be deployed in a network if | 2. Hop-by-hop authentication cannot be deployed in a network if | |||
adjacent nodes in the network have incompatible security | adjacent nodes in the network have incompatible security | |||
capabilities. | capabilities. | |||
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 a delay-tolerant network. | |||
BPSec addresses only the security of data traveling over the DTN, not | BPSec addresses only the security of data traveling over the DTN, not | |||
the underlying DTN itself. Furthermore, while the BPSec protocol can | the underlying DTN itself. Furthermore, while the BPSec protocol can | |||
provide security-at-rest in a store-carry-forward network, it does | provide security-at-rest in a store-carry-forward network, it does | |||
not address threats which share computing resources with the DTN and/ | not address threats that share computing resources with the DTN and/ | |||
or BPSec software implementations. These threats may be malicious | or BPSec software implementations. These threats may be malicious | |||
software or compromised libraries which intend to intercept data or | software or compromised libraries that intend to intercept data or | |||
recover cryptographic material. Here, it is the responsibility of | recover cryptographic material. Here, it is the responsibility of | |||
the BPSec implementer to ensure that any cryptographic material, | the BPSec implementer to ensure that any cryptographic material, | |||
including shared secret or private keys, is protected against access | including shared secrets or private keys, is protected against access | |||
within both memory and storage devices. | within both memory and storage devices. | |||
Completely trusted networks are extremely uncommon. Amongst | Completely trusted networks are extremely uncommon. Among untrusted | |||
untrusted networks, different networking conditions and operational | networks, different networking conditions and operational | |||
considerations require varying strengths of security mechanism. | considerations require security mechanisms of varying strengths. | |||
Mandating a single security context may result in too much security | Mandating a single security context, which is a set of assumptions, | |||
for some networks and too little security in others. It is expected | algorithms, configurations, and policies used to implement security | |||
that separate documents define different security contexts for use in | services, may result in too much security for some networks and too | |||
different networks. A set of default security contexts are defined | little security in others. Default security contexts are defined in | |||
in ([I-D.ietf-dtn-bpsec-default-sc]) and provide basic security | [RFC9173] to provide basic security services for interoperability | |||
services for interoperability testing and for operational use on the | testing and for operational use on the terrestrial Internet. It is | |||
terrestrial Internet. | expected that separate documents will define different security | |||
contexts for use in different networks. | ||||
This specification addresses neither the fitness of externally- | This specification addresses neither the fitness of externally | |||
defined cryptographic methods nor the security of their | defined cryptographic methods nor the security of their | |||
implementation. | implementation. | |||
This specification does not address the implementation of security | This specification does not address the implementation of security | |||
policy and does not provide a security policy for the BPSec. Similar | policies and does not provide a security policy for the BPSec. | |||
to cipher suites, security policies are based on the nature and | Similar to cipher suites, security policies are based on the nature | |||
capabilities of individual networks and network operational concepts. | and capabilities of individual networks and network operational | |||
This specification does provide policy considerations when building a | concepts. This specification does provide policy considerations that | |||
security policy. | can be taken into account when building a security policy. | |||
With the exception of the Bundle Protocol, this specification does | With the exception of the Bundle Protocol, this specification does | |||
not address how to combine the BPSec security blocks with other | not address how to combine the BPSec security blocks with other | |||
protocols, other BP extension blocks, or other best practices to | protocols, other BP extension blocks, or other best practices to | |||
achieve security in any particular network implementation. | achieve security in any particular network implementation. | |||
1.3. Related Documents | 1.3. Related Documents | |||
This document is best read and understood within the context of the | This document is best read and understood within the context of the | |||
following other DTN documents: | following other DTN documents: | |||
"Delay-Tolerant Networking Architecture" [RFC4838] defines the | * "Delay-Tolerant Networking Architecture" [RFC4838] defines the | |||
architecture for DTNs and identifies certain security assumptions | architecture for DTN 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 DTN. | |||
The Bundle Protocol [I-D.ietf-dtn-bpbis] defines the format and | * "Bundle Protocol Version 7" [RFC9171] defines the format and | |||
processing of bundles, defines the extension block format used to | processing of bundles, the extension block format used to | |||
represent BPSec security blocks, and defines the canonical block | represent BPSec security blocks, and the canonical block structure | |||
structure used by this specification. | used by this specification. | |||
The Concise Binary Object Representation (CBOR) format [RFC8949] | * "Concise Binary Object Representation (CBOR)" [RFC8949] defines a | |||
defines a data format that allows for small code size, fairly small | data format that allows for small code size, fairly small message | |||
message size, and extensibility without version negotiation. The | size, and extensibility without version negotiation. The block- | |||
block-specific-data associated with BPSec security blocks are encoded | type-specific data associated with BPSec security blocks is | |||
in this data format. | encoded in this data format. | |||
The Bundle Security Protocol [RFC6257] and Streamlined Bundle | * "Bundle Security Protocol Specification" [RFC6257] introduces the | |||
Security Protocol [I-D.birrane-dtn-sbsp] documents introduced the | concept of using BP extension blocks for security services in DTN. | |||
concepts of using BP extension blocks for security services in a DTN. | BPSec is a continuation and refinement of this document. | |||
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 BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
This section defines terminology either unique to the BPSec or | This section defines terminology that either is unique to the BPSec | |||
otherwise necessary for understanding the concepts defined in this | or is necessary for understanding the concepts defined in this | |||
specification. | specification. | |||
o Bundle Destination - the node which receives a bundle and delivers | Bundle Destination: the Bundle Protocol Agent (BPA) that receives a | |||
the payload of the bundle to an application. Also, the Node ID of | bundle and delivers the payload of the bundle to an Application | |||
the Bundle Protocol Agent (BPA) receiving the bundle. The bundle | Agent. Also, an endpoint comprising the node(s) at which the | |||
destination acts as the security acceptor for every security | bundle is to be delivered. The bundle destination acts as the | |||
target in every security block in every bundle it receives. | security acceptor for every security target in every security | |||
block in every bundle it receives. | ||||
o Bundle Source - the node which originates a bundle. Also, the | Bundle Source: the BPA that originates a bundle. Also, any node ID | |||
Node ID of the BPA originating the bundle. | of the node of which the BPA is a component. | |||
o Cipher Suite - a set of one or more algorithms providing integrity | Cipher Suite: a set of one or more algorithms providing integrity | |||
and/or confidentiality services. Cipher suites may define user | and/or confidentiality services. Cipher suites may define user | |||
parameters (e.g. secret keys to use) but do not provide values for | parameters (e.g., secret keys to use), but they do not provide | |||
those parameters. | values for those parameters. | |||
o Forwarder - any node that transmits a bundle in the DTN. Also, | Forwarder: any BPA that transmits a bundle in DTN. Also, any node | |||
the Node ID of the BPA that sent the bundle on its most recent | ID of the node of which the BPA that sent the bundle on its most | |||
hop. | recent hop is a component. | |||
o Intermediate Receiver, Waypoint, or Next Hop - any node that | Intermediate Receiver, Waypoint, or Next Hop: any BPA that receives | |||
receives a bundle from a Forwarder that is not the Bundle | a bundle from a forwarder that is not the bundle destination. | |||
Destination. Also, the Node ID of the BPA at any such node. | Also, any node ID of the node of which the BPA is a component. | |||
o Path - the ordered sequence of nodes through which a bundle passes | Path: the ordered sequence of nodes through which a bundle passes on | |||
on its way from Source to Destination. The path is not | its way from source to destination. The path is not necessarily | |||
necessarily known in advance by the bundle or any BPAs in the DTN. | known in advance by the bundle or any BPAs in DTN. | |||
o Security Acceptor - a bundle node that processes and dispositions | Security Acceptor: a BPA that processes and dispositions one or more | |||
one or more security blocks in a bundle. Security acceptors act | security blocks in a bundle. Security acceptors act as the | |||
as the endpoint of a security service represented in a security | endpoint of a security service represented in a security block. | |||
block. They remove the security blocks they act upon as part of | They remove the security blocks they act upon as part of | |||
processing and disposition. Also, the Node ID of that node. | processing and disposition. Also, any node ID of the node of | |||
which the BPA is a component. | ||||
o Security Block - a BPSec extension block in a bundle. | Security Block: a BPSec extension block in a bundle. | |||
o Security Context - the set of assumptions, algorithms, | 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 given security service | Security Operation: the application of a given security service to a | |||
to a security target, notated as OP(security service, security | security target, notated as OP(security service, security target). | |||
target). For example, OP(bcb-confidentiality, payload). Every | For example, OP(bcb-confidentiality, payload). Every security | |||
security operation in a bundle MUST be unique, meaning that a | operation in a bundle MUST be unique, meaning that a given | |||
given security service can only be applied to a security target | security service can only be applied to a security target once in | |||
once in a bundle. A security operation is implemented by a | a bundle. A security operation is implemented by a security | |||
security block. | block. | |||
o Security Service - a process that gives some protection to a | Security Service: a process that gives some protection to a security | |||
security target. For example, this specification defines security | target. For example, this specification defines security services | |||
services for plain text integrity (bib-integrity), and | for plaintext integrity (bib-integrity) and authenticated | |||
authenticated plain text confidentiality with additional | plaintext confidentiality with additional authenticated data (bcb- | |||
authenticated data (bcb-confidentiality). | confidentiality). | |||
o Security Source - a bundle node that adds a security block to a | Security Source: a BPA that adds a security block to a bundle. | |||
bundle. Also, the Node ID of that node. | Also, any node ID of the node of which the BPA is a component. | |||
o Security Target - the block within a bundle that receives a | Security Target: the block within a bundle that receives a security | |||
security service as part of a security operation. | service as part of a security operation. | |||
o Security Verifier - a bundle node that verifies the correctness of | Security Verifier: a BPA that verifies the data integrity of one or | |||
one or more security blocks in a bundle. Unlike security | more security blocks in a bundle. Unlike security acceptors, | |||
acceptors, security verifiers do not act as the endpoint of a | security verifiers do not act as the endpoint of a security | |||
security service and do not remove verified security blocks. | service, and they do not remove verified security blocks. Also, | |||
Also, the Node ID of that node. | any node ID of the node of which the BPA is a component. | |||
2. Design Decisions | 2. Design Decisions | |||
The application of security services in a DTN is a complex endeavor | The application of security services in DTN is a complex endeavor | |||
that must consider physical properties of the network (such as | that must consider physical properties of the network (such as | |||
connectivity and propagation times), policies at each node, | connectivity and propagation times), policies at each node, | |||
application security requirements, and current and future threat | application security requirements, and current and future threat | |||
environments. This section identifies those desirable properties | environments. This section identifies those desirable properties | |||
that guide design decisions for this specification and are necessary | that guide design decisions for this specification and that are | |||
for understanding the format and 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 | |||
variety of data that may augment or annotate the payload, or | variety of data that may augment or annotate the payload or that | |||
otherwise provide information necessary for the proper processing of | otherwise provide information necessary for the proper processing of | |||
a bundle along a path. Therefore, applying a single level and type | a bundle along a path. Therefore, applying a single level and type | |||
of security across an entire bundle fails to recognize that blocks in | of security across an entire bundle fails to recognize that blocks in | |||
a bundle represent different types of information with different | a bundle represent different types of information with different | |||
security needs. | security needs. | |||
For example, a payload block might be encrypted to protect its | For example, a payload block might be encrypted to protect its | |||
contents and an extension block containing summary information | contents and an extension block containing summary information | |||
related to the payload might be integrity signed but unencrypted to | related to the payload might be integrity signed but unencrypted to | |||
provide waypoints access to payload-related data without providing | provide waypoints access to payload-related data without providing | |||
access to the payload. | access to the payload. | |||
2.2. Multiple Security Sources | 2.2. Multiple Security Sources | |||
A bundle 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 applied | that all blocks in a bundle have the same security operations applied | |||
to them. | 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 DTN. When a waypoint adds a new | |||
new extension block to a bundle, that extension block MAY have | extension block to a bundle, that extension block MAY have security | |||
security services applied to it by that waypoint. Similarly, a | services applied to it by that waypoint. Similarly, a waypoint MAY | |||
waypoint MAY add a security service to an existing block, consistent | add a security service to an existing block, consistent with its | |||
with its security policy. | 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) that | |||
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 plaintext payload. Later a waypoint node, representing a | |||
gateway to another portion of the DTN, may receive the bundle and | gateway to another portion of the delay-tolerant network, may receive | |||
choose to apply a confidentiality service. In this case, the | the bundle and choose to apply a confidentiality service. In this | |||
integrity security source is the bundle source and the | case, the integrity security source is the bundle source and the | |||
confidentiality security source is the waypoint node. | confidentiality security source is the waypoint node. | |||
In cases where the security source and security acceptor are not the | In cases where the security source and security acceptor are not the | |||
bundle source and bundle destination, it is possible that the bundle | bundle source and bundle destination, respectively, it is possible | |||
will reach the bundle destination prior to reaching a security | that the bundle will reach the bundle destination prior to reaching a | |||
acceptor. In cases where this may be a practical problem, it is | security acceptor. In cases where this may be a practical problem, | |||
recommended that solutions such as bundle encapsulation can be used | it is recommended that solutions such as bundle encapsulation be used | |||
to ensure that a bundle be delivered to a security acceptor prior to | to ensure that a bundle be delivered to a security acceptor prior to | |||
being delivered to the bundle destination. Generally, if a bundle | being delivered to the bundle destination. Generally, if a bundle | |||
reaches a waypoint that has the appropriate configuration and policy | reaches a waypoint that has the appropriate configuration and policy | |||
to act as a security acceptor for a security service in the bundle, | to act as a security acceptor for a security service in the bundle, | |||
then the waypoint should act as that security acceptor. | then the waypoint should act as that security acceptor. | |||
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 delay-tolerant network | |||
may differ. | ||||
Some waypoints will have security policies that require evaluating | Some waypoints will have security policies that require the waypoint | |||
security services even if they are not the bundle destination or the | to evaluate security services even if the waypoint is neither the | |||
final intended acceptor of the service. For example, a waypoint | bundle destination nor the final intended acceptor of the service. | |||
could choose to verify an integrity service even though the waypoint | For example, a waypoint could choose to verify an integrity service | |||
is not the bundle destination and the integrity service will be | even though the waypoint is not the bundle destination and the | |||
needed by other nodes along the bundle's path. | integrity service will be needed by other nodes along the bundle's | |||
path. | ||||
Some waypoints will determine, through policy, that they are the | Some waypoints will determine, through policy, that they are the | |||
intended recipient of the security service and terminate the security | intended recipient of the security service and will terminate the | |||
service in the bundle. For example, a gateway node could determine | security service in the bundle. For example, a gateway node could | |||
that, even though it is not the destination of the bundle, it should | determine that, even though it is not the destination of the bundle, | |||
verify and remove a particular integrity service or attempt to | it should verify and remove a particular integrity service or attempt | |||
decrypt a confidentiality service, before forwarding the bundle along | to decrypt a confidentiality service, before forwarding the bundle | |||
its path. | along its path. | |||
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 set of assumptions, algorithms, | |||
suites), policies associated with the use of those algorithms, and | configurations, and policies used to implement security services. | |||
configuration values. Different contexts may specify different | Different contexts may specify different algorithms, different | |||
algorithms, different polices, or different configuration values used | polices, or different configuration values used in the implementation | |||
in the implementation of their security services. BPSec provides a | of their security services. BPSec provides a mechanism to define | |||
mechanism to define security contexts. Users may select from | security contexts. Users may select from registered security | |||
registered security contexts and customize those contexts through | contexts and customize those contexts through security context | |||
security context parameters. | 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. | integrity, whereas other users might prefer a SHA3 hash function. | |||
Providing either separate security contexts or a single, | Providing either separate security contexts or a single, | |||
parameterized security context allows users flexibility in applying | parameterized security context allows users flexibility in applying | |||
the desired cipher suite, policy, and configuration when populating a | the desired cipher suite, policy, and configuration when populating a | |||
security block. | 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 plaintext 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. Waypoints add or remove BIBs from bundles | the bundle destination. Waypoints add or remove BIBs from bundles | |||
in accordance with their security policy. BIBs are never used for | in accordance with their security policy. BIBs are never used for | |||
integrity protection of the cipher text provided by a BCB. | integrity protection of the ciphertext provided by a BCB. Because | |||
Because security policy at BPSec nodes may differ regarding | security policy at BPSec nodes may differ regarding integrity | |||
integrity verification, BIBs do not guarantee hop-by-hop | verification, BIBs do not guarantee hop-by-hop authentication, as | |||
authentication, as discussed in Section 1.1. | discussed in Section 1.1. | |||
The BCB indicates that the security target(s) have been encrypted | * The BCB indicates that the security target or targets have been | |||
at the BCB security source in order to protect their content while | encrypted at the BCB security source in order to protect their | |||
in transit. The BCB is decrypted by security acceptor nodes in | content while in transit. As a matter of security policy, the BCB | |||
the network, up to and including the bundle destination, as a | is decrypted by security acceptor nodes in the network, up to and | |||
matter of security policy. BCBs additionally provide integrity | including the bundle destination. BCBs additionally provide | |||
protection mechanisms for the cipher text they generate. | integrity-protection mechanisms for the ciphertext 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 by a security | bundle. Since a security operation is represented by a security | |||
block, this means that multiple security blocks of the same type | block, this means that multiple security blocks of the same type | |||
cannot share the same security targets. A new security block MUST | cannot share the same security targets. A new security block MUST | |||
NOT be added to a bundle if a pre-existing security block of the same | NOT be added to a bundle if a preexisting security block of the same | |||
type is already defined for the security target of the new security | type is already defined for the security target of the new security | |||
block. | block. | |||
This uniqueness requirement ensures that there is no ambiguity | This uniqueness requirement ensures that there is no ambiguity | |||
related to the order in which security blocks are processed or how | related to the order in which security blocks are processed or how | |||
security policy can be specified to require certain security services | security policy can be specified to require certain security services | |||
be present in a bundle. | be present in a bundle. | |||
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(bib-integrity, | Signing the payload twice: The two operations OP(bib-integrity, | |||
payload) and OP(bib-integrity, payload) are redundant and MUST NOT | payload) and OP(bib-integrity, payload) are redundant and MUST NOT | |||
both be present in the same bundle at the same time. | both be present in the same bundle at the same time. | |||
o Signing different blocks: The two operations OP(bib-integrity, | Signing different blocks: The two operations OP(bib-integrity, | |||
payload) and OP(bib-integrity, extension_block_1) are not | payload) and OP(bib-integrity, extension_block_1) are not | |||
redundant and both may be present in the same bundle at the same | redundant and both may be present in the same bundle at the same | |||
time. Similarly, the two operations OP(bib-integrity, | time. Similarly, the two operations OP(bib-integrity, | |||
extension_block_1) and OP(bib-integrity, extension_block_2) are | extension_block_1) and OP(bib-integrity, extension_block_2) are | |||
also not redundant and may both be present in the bundle at the | also not redundant and may both be present in the bundle at the | |||
same time. | same time. | |||
o Different Services on same block: The two operations OP(bib- | Different services on same block: The two operations OP(bib- | |||
integrity, payload) and OP(bcb-confidentiality, payload) are not | integrity, payload) and OP(bcb-confidentiality, payload) are not | |||
inherently redundant and may both be present in the bundle at the | inherently redundant and may both be present in the bundle at the | |||
same time, pursuant to other processing rules in this | same time, pursuant to other processing rules in this | |||
specification. | specification. | |||
o Different services from different block types: The notation | Different services from different block types: The notation | |||
OP(service, target) refers specifically to a security block, as | OP(service, target) refers specifically to a security block, as | |||
the security block is the embodiment of a security service applied | the security block is the embodiment of a security service applied | |||
to a security target in a bundle. Were some Other Security Block | to a security target in a bundle. Were some Other Security Block | |||
(OSB) to be defined providing an integrity service, then the | (OSB) to be defined providing an integrity service, then the | |||
operations OP(bib-integrity, target) and OP(osb-integrity, target) | operations OP(bib-integrity, target) and OP(osb-integrity, target) | |||
MAY both be present in the same bundle if so allowed by the | MAY both be present in the same bundle if so allowed by the | |||
definition of the OSB, as discussed in Section 10. | definition of the OSB, as discussed in Section 10. | |||
NOTES: | NOTES: | |||
A security block may be removed from a bundle as part of security | * A security block may be removed from a bundle as part of security | |||
processing at a waypoint node with a new security block being | processing at a waypoint node with a new security block being | |||
added to the bundle by that node. In this case, conflicting | added to the bundle by that node. In this case, conflicting | |||
security blocks never co-exist in the bundle at the same time and | security blocks never coexist in the bundle at the same time and | |||
the uniqueness requirement is not violated. | the uniqueness requirement is not violated. | |||
A cipher text integrity mechanism (such as associated | * A ciphertext integrity-protection mechanism (such as associated | |||
authenticated data) calculated by a cipher suite and transported | authenticated data) calculated by a cipher suite and transported | |||
in a BCB is considered part of the confidentiality service and, | in a BCB is considered part of the confidentiality service; | |||
therefore, unique from the plain text integrity service provided | therefore, it is unique from the plaintext integrity service | |||
by a BIB. | provided by a BIB. | |||
The security blocks defined in this specification (BIB and BCB) | * The security blocks defined in this specification (BIB and BCB) | |||
are designed with the intention that the BPA adding these blocks | are designed with the intention that the BPA adding these blocks | |||
is the authoritative source of the security service. If a BPA | is the authoritative source of the security service. If a BPA | |||
adds a BIB on a security target, then the BIB is expected to be | adds a BIB on a security target, then the BIB is expected to be | |||
the authoritative source of integrity for that security target. | the authoritative source of integrity for that security target. | |||
If a BPA adds a BCB to a security target, then the BCB is expected | If a BPA adds a BCB to a security target, then the BCB is expected | |||
to be the authoritative source of confidentiality for that | to be the authoritative source of confidentiality for that | |||
security target. More complex scenarios, such as having multiple | security target. More complex scenarios, such as having multiple | |||
nodes in a network sign the same security target, can be | nodes in a network sign the same security target, can be | |||
accommodated using the definition of custom security contexts | accommodated using the definition of custom security contexts (see | |||
(Section 9) and/or the definition of other security blocks | Section 9) and/or the definition of OSBs (see Section 10). | |||
(Section 10). | ||||
3.3. Target Multiplicity | 3.3. Target Multiplicity | |||
A single security block MAY represent multiple security operations as | A single security block MAY represent multiple security operations as | |||
a way of reducing the overall number of security blocks present in a | a way of reducing the overall number of security blocks present in a | |||
bundle. In these circumstances, reducing the number of security | bundle. In these circumstances, reducing the number of security | |||
blocks in the bundle reduces the amount of redundant information in | blocks in the bundle reduces the 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 | * 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 | * The security context parameters for the security operations are | |||
identical. | identical. | |||
o The security source for the security operations is the same, | * 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 | * 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 | * 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; the information that is | |||
different (e.g., the security targets) are represented individually. | different (e.g., the security targets) is represented individually. | |||
It is RECOMMENDED that if a node processes any security operation in | If a node processes any security operation in a security block, it is | |||
a security block that it process all security operations in the | RECOMMENDED that it process all security operations in the security | |||
security block. This allows security sources to assert that the set | block. This allows security sources to assert that the set of | |||
of security operations in a security block are expected to be | security operations in a security block are expected to be processed | |||
processed by the same security acceptor. However, the determination | by the same security acceptor. However, the determination of whether | |||
of whether a node actually is a security acceptor or not is a matter | a node actually is a security acceptor or not is a matter of the | |||
of the policy of the node itself. In cases where a receiving node | policy of the node itself. In cases where a receiving node | |||
determines that it is the security acceptor of only a subset of the | determines that it is the security acceptor of only a subset of the | |||
security operations in a security block, the node may choose to only | security operations in a security block, the node may choose to only | |||
process that subset of security operations. | process that subset of security operations. | |||
3.4. Target Identification | 3.4. Target Identification | |||
A security target is a block in the bundle to which a security | A security target is a block in the bundle to which a security | |||
service applies. This target must be uniquely and unambiguously | service applies. This target must be uniquely and unambiguously | |||
identifiable when processing a security block. The definition of the | identifiable when processing a security block. The definition of the | |||
extension block header from [I-D.ietf-dtn-bpbis] provides a "Block | extension block header from [RFC9171] provides a "block number" field | |||
Number" field suitable for this purpose. Therefore, a security | suitable for this purpose. Therefore, a security target in a | |||
target in a security block MUST be represented as the Block Number of | security block MUST be represented as the block number of the target | |||
the target block. | 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 [RFC9171]. That is, each security block is comprised of the | |||
of the following elements: | following elements: | |||
o block type code | ||||
o block number | ||||
o block processing control flags | ||||
o CRC type | ||||
o block-type-specific-data | ||||
o CRC field (if present) | * block type code | |||
* block number | ||||
* block processing control flags | ||||
* cyclic redundancy check (CRC) type | ||||
* block-type-specific data | ||||
* 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 field. | 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 its definition, its processing, and other constraints for | |||
this structure. An ASB is never directly instantiated within a | using 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. | |||
The fields of the ASB SHALL be as follows, listed in the order in | The fields of the ASB SHALL be as follows, listed in the order in | |||
which they must appear. The encoding of these fields MUST be in | which they must appear. The encoding of these fields MUST be in | |||
accordance with the canonical forms provided in Section 4. | accordance with the canonical forms provided in Section 4. | |||
Security Targets: | Security Targets: | |||
This field identifies the block(s) targeted by the security | This field identifies the block(s) targeted by the security | |||
operation(s) represented by this security block. Each target | operation(s) represented by this security block. Each target | |||
block is represented by its unique Block Number. This field | block is represented by its unique block number. This field | |||
SHALL be represented by a CBOR array of data items. Each | SHALL be represented by a Concise Binary Object Representation | |||
target within this CBOR array SHALL be represented by a CBOR | (CBOR) array of data items. Each target within this CBOR array | |||
unsigned integer. This array MUST have at least 1 entry and | SHALL be represented by a CBOR unsigned integer. This array | |||
each entry MUST represent the Block Number of a block that | MUST have at least one entry and each entry MUST represent the | |||
exists in the bundle. There MUST NOT be duplicate entries in | block number of a block that exists in the bundle. There MUST | |||
this array. The order of elements in this list has no semantic | NOT be duplicate entries in this array. The order of elements | |||
meaning outside of the context of this block. Within the | in this list has no semantic meaning outside of the context of | |||
block, the ordering of targets must match the ordering of | this block. Within the block, the ordering of targets must | |||
results associated with these targets. | match the ordering of results associated with these targets. | |||
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. The values for this Id should come from | CBOR unsigned integer. The values for this Id should come from | |||
the registry defined in Section 11.3 | the registry defined in Section 11.3. | |||
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 0 (the least-significant bit, 0x01): Security Context | Bit 0 (the least-significant bit, 0x01): "Security context | |||
Parameters Present Flag. | parameters present" flag. | |||
Bit >0 Reserved | Bit >0 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: | Security Source: | |||
This field identifies the Endpoint that inserted the security | This field identifies the BPA that inserted the security block | |||
block in the bundle. This field SHALL be represented by a CBOR | in the bundle. Also, any node ID of the node of which the BPA | |||
array in accordance with [I-D.ietf-dtn-bpbis] rules for | is a component. This field SHALL be represented by a CBOR | |||
representing Endpoint Identifiers (EIDs). | array in accordance with the rules in [RFC9171] for | |||
representing endpoint IDs (EIDs). | ||||
Security Context Parameters (Optional): | Security Context Parameters (Optional): | |||
This field captures one or more security context parameters | This field captures one or more security context parameters | |||
that should be used when processing the security service | that should be used when processing the security service | |||
described by this security block. This field SHALL be | described by this security block. This field SHALL be | |||
represented by a CBOR array. Each entry in this array is a | represented by a CBOR array. Each entry in this array is a | |||
single security context parameter. A single parameter SHALL | single security context parameter. A single parameter SHALL | |||
also be represented as a CBOR array comprising a 2-tuple of the | also be represented as a CBOR array comprising a 2-tuple of the | |||
id and value of the parameter, as follows. | Id and value of the parameter, as follows. | |||
* Parameter Id. This field identifies which parameter is | Parameter Id: This field identifies which parameter is being | |||
being specified. This field SHALL be represented as a CBOR | specified. This field SHALL be represented as a CBOR | |||
unsigned integer. Parameter Ids are selected as described | unsigned integer. Parameter Ids are selected as described | |||
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 | |||
with this parameter. This field SHALL be represented by the | 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 | | | Parameter 1 | Parameter 2 | ... | Parameter N | | |||
+------+---------+------+---------+ +------+---------+ | +------+---------+------+---------+ +------+---------+ | |||
| Id | Value | Id | Value | | Id | Value | | | 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 | |||
array corresponds to the first entry in the Security Targets | array corresponds to the first entry in the Security Targets | |||
field of the security block, and so on. There MUST be one | field of the security block, and so on. There MUST be one | |||
entry in this array for each entry in the Security Targets | entry in this array for each entry in the Security Targets | |||
field of the security block. | field of the security block. | |||
The set of security results for a target is also represented as | The set of security results for a target is also represented as | |||
a CBOR array of individual results. An individual result is | a CBOR array of individual results. An individual result is | |||
represented as a 2-tuple of a result id and a result value, | represented as a CBOR array comprising a 2-tuple of a result Id | |||
defined as follows. | and a result value, defined as follows. | |||
* Result Id. This field identifies which security result is | Result Id: This field identifies which security result is | |||
being specified. Some security results capture the primary | being specified. Some security results capture the primary | |||
output of a cipher suite. Other security results contain | output of a cipher suite. Other security results contain | |||
additional annotative information from cipher suite | additional annotative information from cipher suite | |||
processing. This field SHALL be represented as a CBOR | processing. This field SHALL be represented as a CBOR | |||
unsigned integer. Security result Ids will be as specified | unsigned integer. Security result Ids will be as specified | |||
in Section 3.10. | in Section 3.10. | |||
* 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 | | | Target 1 | | Target N | | |||
+------------+----+------------+ +------------------------------+ | +----------+----+----------+ +---------------------------+ | |||
| Result 1 | | Result M | ... | Result 1 | | Result K | | | Result 1 | | Result M | ... | Result 1 | | Result K | | |||
+----+-------+ .. +----+-------+ +----+-------+ .. +----+-------+ | +----+-----+ .. +----+-----+ +---+------+ .. +----+------+ | |||
| Id | Value | | Id | Value | | Id | Value | | Id | Value | | | 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 BP 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-type-specific-data field follows the structure of the | * The block-type-specific data field follows the structure of the | |||
ASB. | ASB. | |||
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). | |||
The Security Context MUST utilize an authentication mechanism or | * The security context MUST utilize an authentication mechanism or | |||
an error detection mechanism. | an error detection mechanism. | |||
Notes: | Notes: | |||
o Designers SHOULD carefully consider the effect of setting flags | * Designers SHOULD carefully consider the effect of setting flags | |||
that either discard the block or delete the bundle in the event | that either discard the block or delete the bundle in the event | |||
that this block cannot be processed. | that this block cannot be processed. | |||
o Since OP(bib-integrity, target) is allowed only once in a bundle | * Since OP(bib-integrity, target) is allowed only once in a bundle | |||
per target, it is RECOMMENDED that users wishing to support | per target, it is RECOMMENDED that users wishing to support | |||
multiple integrity mechanisms for the same target define a multi- | multiple integrity-protection mechanisms for the same target | |||
result security context. Such a context could generate multiple | define a multi-result security context. Such a context could | |||
security results for the same security target using different | generate multiple security results for the same security target | |||
integrity-protection mechanisms or different configurations for | using different integrity-protection mechanisms or different | |||
the same integrity-protection mechanism. | configurations for the same integrity-protection mechanism. | |||
o A BIB is used to verify the plain text integrity of its security | * A BIB is used to verify the plaintext integrity of its security | |||
target. However, a single BIB MAY include security results for | target. However, a single BIB MAY include security results for | |||
blocks other than its security target when doing so establishes a | blocks other than its security target when doing so establishes a | |||
needed relationship between the BIB security target and other | needed relationship between the BIB security target and other | |||
blocks in the bundle (such as the primary block). | blocks in the bundle (such as the primary block). | |||
o Security information MAY be checked at any hop on the way to the | * Security information MAY be checked at any hop on the way to the | |||
bundle destination that has access to the required keying | bundle destination that has access to the required keying | |||
information, in accordance with Section 3.9. | 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 BP 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 with the following exceptions. | values are required by local policy with the following exceptions: | |||
BCB blocks MUST have the "block must be replicated in every | ||||
fragment" flag set if one of the targets is the payload block. | ||||
Having that BCB in each fragment indicates to a receiving node | ||||
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 | - BCBs MUST have the "Block must be replicated in every fragment" | |||
flag set if one of the targets is the payload block. Having | ||||
that BCB in each fragment indicates to a receiving node that | ||||
the payload portion of each fragment represents ciphertext. | ||||
- BCBs 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 | ||||
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. A BCB MUST NOT target a | BCB MUST NOT target the primary block. A BCB MUST NOT target a | |||
BIB block unless it shares a security target with that BIB block. | BIB unless it shares a security target with that BIB. | |||
Any Security Context used by a BCB MUST utilize a confidentiality | * Any security context used by a BCB MUST utilize a confidentiality | |||
cipher that provides authenticated encryption with associated data | cipher that provides authenticated encryption with associated data | |||
(AEAD). | (AEAD). | |||
Additional information created by a cipher suite (such as an | * Additional information created by a cipher suite (such as an | |||
authentication tag) can be placed either in a security result | authentication tag) can be placed either in a security result | |||
field or in the generated cipher text. The determination of where | field or in the generated ciphertext. The determination of where | |||
to place this information 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 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. | field contains ciphertext, not plaintext. | |||
Notes: | Notes: | |||
o It is RECOMMENDED that designers carefully consider the effect of | * It is RECOMMENDED that designers carefully consider the effect of | |||
setting flags that delete the bundle in the event that this block | setting flags that delete the bundle in the event that this block | |||
cannot be processed. | cannot be processed. | |||
o The BCB block processing control flags can be set independently | * 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; this sharing | |||
dependencies. | creates processing dependencies. | |||
If a security target of a BCB is also a security target of a BIB, an | If a BCB and a BIB share a security target, an undesirable condition | |||
undesirable condition occurs where a waypoint would be unable to | occurs: a waypoint would be unable to validate the BIB because the | |||
validate the BIB because one of its security target's contents have | shared security target has been encrypted by the BCB. To address | |||
been encrypted by a BCB. To address this situation the following | this situation, the following processing rules MUST be followed: | |||
processing rules MUST be followed. | ||||
o When adding a BCB to a bundle, if some (or all) of the security | * When adding a BCB to a bundle, if some (or all) of the security | |||
targets of the BCB also match all of the security targets of an | targets of the BCB match all of the security targets of an | |||
existing BIB, then the existing BIB MUST also be encrypted. This | existing BIB, then the existing BIB MUST also be encrypted. This | |||
can be accomplished by either adding a new BCB that targets the | can be accomplished either by adding a new BCB that targets the | |||
existing BIB, or by adding the BIB to the list of security targets | existing BIB or by adding the BIB to the list of security targets | |||
for the BCB. Deciding which way to represent this situation is a | for the BCB. Deciding which way to represent this situation is a | |||
matter of security policy. | matter of security policy. | |||
o When adding a BCB to a bundle, if some (or all) of the security | * When adding a BCB to a bundle, if some (or all) of the security | |||
targets of the BCB match some (but not all) of the security | targets of the BCB match some (but not all) of the security | |||
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 either by 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 | * A BIB MUST NOT be added for a security target that is already the | |||
security target of a BCB as this would cause ambiguity in block | security target of a BCB as this would cause ambiguity in block | |||
processing order. | processing order. | |||
o A BIB integrity value MUST NOT be checked if the BIB is the | * 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 checked if the security target | * A BIB integrity value MUST NOT be checked if the security target | |||
associated with that value is also the security target of a BCB. | associated with that value is also the security target of a BCB. | |||
In such a case, the security target data contains cipher text as | In such a case, the security target data contains ciphertext as it | |||
it has been encrypted. | has been encrypted. | |||
o As mentioned in Section 3.7, a BIB MUST NOT have a BCB as its | * 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 where 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. | |||
In cases where a security source wishes to calculate both a plain | In cases where a security source wishes to calculate both a plaintext | |||
text integrity mechanism and encrypt a security target, a BCB with a | integrity-protection mechanism and encrypt a security target, a BCB | |||
security context that generates an integrity-protection mechanism as | with a security context that generates an integrity-protection | |||
one or more additional security results MUST be used instead of | mechanism as one or more additional security results MUST be used | |||
adding both a BIB and then a BCB for the security target at the | instead of adding both a BIB and then a BCB for the security target | |||
security source. | at the security source. | |||
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 | An example of a security context can be found in [RFC9173]. | |||
[I-D.ietf-dtn-bpsec-default-sc]. | ||||
3.11. BSP Block Examples | 3.11. BPSec Block Examples | |||
This section provides two examples of BPSec blocks applied to a | This section provides two examples of BPSec blocks applied to | |||
bundle. In the first example, a single node adds several security | bundles. 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 | |||
(B6). The bundle source wishes to provide an integrity signature of | block (B6). The bundle source wishes to provide an integrity | |||
the plain text associated with the primary block, the second | signature of the plaintext associated with the primary block, the | |||
extension block, and the payload. The bundle source also wishes to | second extension block, and the payload. The bundle source also | |||
provide confidentiality for the first extension block. The resultant | wishes to provide confidentiality for the first extension block. The | |||
bundle is illustrated in Figure 3 and the security actions are | resultant bundle is illustrated in Figure 3 and the security actions | |||
described below. | are described below. | |||
Block in Bundle ID | Block in Bundle ID | |||
+==========================================+====+ | +==========================================+====+ | |||
| Primary Block | B1 | | | Primary Block | B1 | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| BIB | B2 | | | BIB | B2 | | |||
| OP(bib-integrity, targets=B1, B5, B6) | | | | OP(bib-integrity, targets = B1, B5, B6)| | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| BCB | B3 | | | BCB | B3 | | |||
| OP(bcb-confidentiality, target=B4) | | | | OP(bcb-confidentiality, target = B4) | | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| Extension Block (encrypted) | B4 | | | Extension Block (encrypted) | B4 | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| Extension Block | B5 | | | Extension Block | B5 | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| Payload Block | B6 | | | 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 canonical form of the | * An integrity signature applied to the canonical form of the | |||
primary block (B1), the canonical form of the block-type-specific- | primary block (B1), the canonical form of the block-type-specific | |||
data field of the second extension block (B5) and the canonical | data field of the second extension block (B5), and the canonical | |||
form of the payload block (B6). This is accomplished by a single | form of the payload block (B6). This is accomplished by a single | |||
BIB (B2) with multiple targets. A single BIB is used in this case | BIB (B2) with multiple targets. A single BIB is used in this case | |||
because all three targets share a security source, security | because all three targets share a security source, security | |||
context, and security context parameters. Had this not been the | context, and security context parameters. Had this not been the | |||
case, multiple BIBs could have been added instead. | case, multiple BIBs could have been added instead. | |||
o Confidentiality for the first extension block (B4). This is | * Confidentiality for the first extension block (B4). This is | |||
accomplished by a BCB (B3). Once applied, the block-type- | accomplished by a BCB (B3). Once applied, the block-type-specific | |||
specific-data field of extension block B4 is encrypted. The BCB | data field of extension block B4 is encrypted. The BCB MUST hold | |||
MUST hold an authentication tag for the cipher text either in the | an authentication tag for the ciphertext either in the ciphertext | |||
cipher text that now populates the first extension block or as a | that now populates the first extension block or as a security | |||
security result in the BCB itself, depending on which security | result in the BCB itself, depending on which security context is | |||
context is used to form the BCB. A plain text integrity signature | used to form the BCB. A plaintext integrity signature may also | |||
may also exist as a security result in the BCB if one is provided | exist as a security result in the BCB if one is provided by the | |||
by the selected confidentiality security context. | 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 are 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 [RFC9171]. | |||
Block in Bundle ID | Block in Bundle ID | |||
+==========================================+====+ | +==========================================+====+ | |||
| Primary Block | B1 | | | Primary Block | B1 | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| BIB | B2 | | | BIB | B2 | | |||
| OP(bib-integrity, targets=B1) | | | | OP(bib-integrity, target = B1) | | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| BIB (encrypted) | B7 | | | BIB (encrypted) | B7 | | |||
| OP(bib-integrity, targets=B5, B6) | | | | OP(bib-integrity, targets = B5, B6) | | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| BCB | B8 | | | BCB | B8 | | |||
| OP(bcb-confidentiality,targets=B5,B6,B7) | | | |OP(bcb-confidentiality,targets = B5,B6,B7)| | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| BCB | B3 | | | BCB | B3 | | |||
| OP(bcb-confidentiality, target=B4) | | | | OP(bcb-confidentiality, target = B4) | | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| Extension Block (encrypted) | B4 | | | Extension Block (encrypted) | B4 | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| Extension Block (encrypted) | B5 | | | Extension Block (encrypted) | B5 | | |||
+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| Payload Block (encrypted) | B6 | | | 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 the block-type-specific- | * Since the waypoint node wishes to encrypt the block-type-specific | |||
data field of blocks B5 and B6, it MUST also encrypt the block- | data field of blocks B5 and B6, it MUST also encrypt the block- | |||
type-specific-data field of the BIBs providing plain text | type-specific data field of the BIBs providing plaintext integrity | |||
integrity over those blocks. However, BIB B2 could not be | over those blocks. However, BIB B2 could not be encrypted in its | |||
encrypted in its entirety because it also held a signature for the | entirety because it also held a signature for the primary block | |||
primary block (B1). Therefore, a new BIB (B7) is created and | (B1). Therefore, a new BIB (B7) is created and security results | |||
security results associated with B5 and B6 are moved out of BIB B2 | associated with B5 and B6 are moved out of BIB B2 and into BIB B7. | |||
and into BIB B7. | ||||
o Now that there is no longer confusion of which plain text | * Now that there is no longer confusion about which plaintext | |||
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 plaintext 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 security sources, | information is presented to cipher suites at security sources, | |||
verifiers, and acceptors. For example, integrity services require | verifiers, and acceptors. For example, integrity services require | |||
skipping to change at page 23, line 27 ¶ | skipping to change at line 1052 ¶ | |||
algorithms transcode the contents of a security target into a | algorithms transcode the contents of a security target into a | |||
canonical form. | canonical form. | |||
Canonical forms are used to generate input to a security context for | Canonical forms are used to generate input to a security context for | |||
security processing at a BP node. If the values of a security target | security processing at a BP node. If the values of a security target | |||
are unchanged, then the canonical form of that target will be the | are unchanged, then the canonical form of that target will be the | |||
same even if the encoding of those values for wire transmission is | same even if the encoding of those values for wire transmission is | |||
different. | different. | |||
BPSec operates on data fields within bundle blocks (e.g., the block- | BPSec operates on data fields within bundle blocks (e.g., the block- | |||
type-specific-data field). In their canonical form, these fields | type-specific data field). In their canonical form, these fields | |||
MUST include their own CBOR encoding and MUST NOT include any other | MUST include their own CBOR encoding and MUST NOT include any other | |||
encapsulating CBOR encoding. For example, the canonical form of the | encapsulating CBOR encoding. For example, the canonical form of the | |||
block-type-specific-data field is a CBOR byte string existing within | block-type-specific data field is a CBOR byte string existing within | |||
the CBOR array containing the fields of the extension block. The | the CBOR array containing the fields of the extension block. The | |||
entire CBOR byte string is considered the canonical block-type- | entire CBOR byte string is considered the canonical block-type- | |||
specific-data field. The CBOR array framing is not considered part | specific data field. The CBOR array framing is not considered part | |||
of the field. | of the field. | |||
The canonical form of the primary block is as specified in | The canonical form of the primary block is as specified in [RFC9171] | |||
[I-D.ietf-dtn-bpbis] with the following constraint. | with the following constraint. | |||
o CBOR values from the primary block MUST be canonicalized using the | * CBOR values from the primary block MUST be canonicalized using the | |||
rules for Deterministically Encoded CBOR, as specified in | rules for Deterministically Encoded CBOR, as specified in | |||
[RFC8949]. | [RFC8949]. | |||
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 [RFC9171] with the following | |||
constraints. | constraints. | |||
o CBOR values from the non-primary block MUST be canonicalized using | * CBOR values from the non-primary block MUST be canonicalized using | |||
the rules for Deterministically Encoded CBOR, as specified in | the rules for Deterministically Encoded CBOR, as specified in | |||
[RFC8949]. | [RFC8949]. | |||
o Only the block-type-specific-data field may be provided to a | * Only the block-type-specific data field may be provided to a | |||
cipher suite for encryption as part of a confidentiality security | cipher suite for encryption as part of a confidentiality security | |||
service. Other fields within a non-primary-block MUST NOT be | service. Other fields within a non-primary block MUST NOT be | |||
encrypted or decrypted and MUST NOT be included in the canonical | encrypted or decrypted and MUST NOT be included in the canonical | |||
form used by the cipher suite for encryption and decryption. | form used by the cipher suite for encryption and decryption. An | |||
These other fields MAY have an integrity protection mechanism | integrity-protection mechanism MAY be applied to these other | |||
applied to them by treating them as associated authenticated data. | fields as supported by the security context. For example, these | |||
fields might be treated as associated authenticated data. | ||||
o Reserved and unassigned flags in the block processing control | * Reserved and unassigned flags in the block processing control | |||
flags field MUST be set to 0 in a canonical form as it is not | flags field MUST be set to 0 in a canonical form as it is not | |||
known if those flags will change in transit. | known if those flags will change in transit. | |||
Security contexts MAY define their own canonicalization algorithms | Security contexts MAY define their own canonicalization algorithms | |||
and require the use of those algorithms over the ones provided in | and require the use of those algorithms over the ones provided in | |||
this specification. In the event of conflicting canonicalization | this specification. In the event of conflicting canonicalization | |||
algorithms, algorithms defined in a security context take precedence | algorithms, algorithms defined in a security context take precedence | |||
over this specification when constructing canonical forms for that | over this specification when constructing canonical forms for that | |||
security context. | security context. | |||
5. Security Processing | 5. Security Processing | |||
This section describes the security aspects of bundle processing. | This section describes the security aspects of bundle processing. | |||
5.1. Bundles Received from Other Nodes | 5.1. Bundles Received from Other Nodes | |||
Security blocks must be processed in a specific order when received | Security blocks must be processed in a specific order when received | |||
by a BP node. The processing order is as follows. | by a BP node. The processing order is as follows. | |||
o When BIBs and BCBs share a security target, BCBs MUST be evaluated | * When BIBs and BCBs share a security target, BCBs MUST be evaluated | |||
first and BIBs second. | first and BIBs second. | |||
5.1.1. Receiving BCBs | 5.1.1. Receiving BCBs | |||
If a received bundle contains a BCB, the receiving node MUST | If a received bundle contains a BCB, the receiving node MUST | |||
determine whether it is the security acceptor for any of the security | determine whether it is the security acceptor for any of the security | |||
operations in the BCB. If so, the node MUST process those operations | operations in the BCB. If so, the node MUST process those operations | |||
and remove any operation-specific information from the BCB prior to | and remove any operation-specific information from the BCB prior to | |||
delivering data to an application at the node or forwarding the | delivering data to an application at the node or forwarding the | |||
bundle. If processing a security operation fails, the target SHALL | bundle. If processing a security operation fails, the target SHALL | |||
skipping to change at page 25, line 14 ¶ | skipping to change at line 1135 ¶ | |||
If the security policy of a node specifies that a node should have | If the security policy of a node specifies that a node should have | |||
applied confidentiality to a specific security target and no such BCB | applied confidentiality to a specific security target and no such BCB | |||
is present in the bundle, then the node MUST process this security | is present in the bundle, then the node MUST process this security | |||
target in accordance with the security policy. It is RECOMMENDED | target in accordance with the security policy. It is RECOMMENDED | |||
that the node remove the security target from the bundle because the | that the node remove the security target from the bundle because the | |||
confidentiality (and possibly the integrity) of the security target | confidentiality (and possibly the integrity) of the security target | |||
cannot be guaranteed. If the removed security target is the payload | cannot be guaranteed. If the removed security target is the payload | |||
block, the bundle MUST be discarded. | block, the bundle MUST 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 | |||
text cannot be authenticated), then the bundle MUST be discarded and | ciphertext cannot be authenticated), then the bundle MUST be | |||
processed no further. If an encrypted security target other than the | discarded and processed no further. If an encrypted security target | |||
payload block cannot be decrypted then the associated security target | other than the payload block cannot be decrypted, then the associated | |||
and all security blocks associated with that target MUST be discarded | security target and all security blocks associated with that target | |||
and processed no further. In both cases, requested status reports | MUST be discarded and processed no further. In both cases, requested | |||
(see [I-D.ietf-dtn-bpbis]) MAY be generated to reflect bundle or | status reports (see [RFC9171]) MAY be generated to reflect bundle or | |||
block deletion. | block deletion. | |||
When a BCB is decrypted, the recovered plain text for each security | When a BCB is decrypted, the recovered plaintext for each security | |||
target MUST replace the cipher text in each of the security targets' | target MUST replace the ciphertext in each of the security targets' | |||
block-type-specific-data fields. If the plain text is of different | block-type-specific data fields. If the plaintext is of a different | |||
size than the cipher text, the CBOR byte string framing of this field | size than the ciphertext, the framing of the CBOR byte string of this | |||
must be updated to ensure this field remains a valid CBOR byte | 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 | string. The length of the recovered plaintext is known by the | |||
decrypting security context. | 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 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 | |||
skipping to change at page 26, line 4 ¶ | skipping to change at line 1174 ¶ | |||
bundle. If processing a security operation fails, the target SHALL | bundle. If processing a security operation fails, the target SHALL | |||
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 BIB have been removed from the BIB, the BIB MUST be | operations for a BIB have been removed from the BIB, the BIB MUST be | |||
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; 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 node specifies that a node should have | If the security policy of a node specifies that a node should have | |||
applied integrity to a specific security target and no such BIB is | applied integrity to a specific security target and no such BIB is | |||
present in the bundle, then the node MUST process this security | present in the bundle, then the node MUST process this security | |||
target in accordance with the security policy. It is RECOMMENDED | target in accordance with the security policy. It is RECOMMENDED | |||
that the node remove the security target from the bundle if the | that the node remove the security target from the bundle if the | |||
security target is not the payload or primary block. If the security | security target is not the payload or primary block. If the security | |||
target is the payload or primary block, the bundle MAY be discarded. | target is the payload or primary block, the bundle MAY be discarded. | |||
This action can occur at any node that has the ability to verify an | This action can occur at any node that has the ability to verify an | |||
integrity signature, not just the bundle destination. | 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 with | |||
local security policy. It is RECOMMENDED that if a payload integrity | local security policy. If a payload integrity check fails at a | |||
check fails at a waypoint that it is processed in the same way as if | waypoint, it is RECOMMENDED that it be processed in the same way as a | |||
the check fails at the bundle destination. If the check passes, the | failure of a payload integrity check at the bundle destination. If | |||
node MUST NOT remove the security operation from the BIB prior to | the check passes, the node MUST NOT remove the security operation | |||
forwarding. | from the BIB prior to 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 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 [RFC9171] MUST be followed. As defined there and | |||
there and summarized here for completeness, only the payload block | summarized here for completeness, only the payload block can be | |||
can be fragmented; security blocks, like all extension blocks, can | fragmented; security blocks, like all extension blocks, can never be | |||
never be fragmented. | fragmented. | |||
Due to the complexity of payload block fragmentation, including the | Due to the complexity of payload-block fragmentation, including the | |||
possibility of fragmenting payload block fragments, integrity and | possibility of fragmenting payload-block fragments, integrity and | |||
confidentiality operations are not to be applied to a bundle | confidentiality operations are not to be applied to a bundle | |||
representing a fragment. Specifically, a BCB or BIB MUST NOT be | representing a fragment. Specifically, a BCB or BIB MUST NOT be | |||
added to a bundle if the "Bundle is a Fragment" flag is set in the | added to a bundle if the "Bundle is a fragment" flag is set in the | |||
Bundle Processing Control Flags field. | bundle processing control flags field. | |||
Security processing in the presence of payload block fragmentation | Security processing in the presence of payload-block fragmentation | |||
may be handled by other mechanisms outside of the BPSec protocol or | may be handled by other mechanisms outside of the BPSec protocol or | |||
by applying BPSec blocks in coordination with an encapsulation | by applying BPSec blocks in coordination with an encapsulation | |||
mechanism. A node should apply any confidentiality protection prior | mechanism. A node should apply any confidentiality protection prior | |||
to performing any fragmentation. | to performing any fragmentation. | |||
6. Key Management | 6. Key Management | |||
There exist a myriad of ways to establish, communicate, and otherwise | There exists a myriad of ways to establish, communicate, and | |||
manage key information in a DTN. Certain DTN deployments might | otherwise manage key information in DTN. Certain DTN deployments | |||
follow established protocols for key management whereas other DTN | might follow established protocols for key management, whereas other | |||
deployments might require new and novel approaches. BPSec assumes | DTN deployments might require new and novel approaches. BPSec | |||
that key management is handled as a separate part of network | assumes that key management is handled as a separate part of network | |||
management and this specification neither defines nor requires a | management; this specification neither defines nor requires a | |||
specific key management strategy. | specific strategy for key management. | |||
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 combinations of security | * If a bundle is received that contains combinations of security | |||
operations that are disallowed by this specification the BPA must | operations that are disallowed by this specification, the BPA must | |||
determine how to handle the bundle. The bundle may be discarded, | determine how to handle the bundle: the bundle may be discarded, | |||
the block affected by the security operation may be discarded, or | the block affected by the security operation may be discarded, or | |||
one 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 | * 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 | * 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 take | |||
other action. | some other action. | |||
o It is RECOMMENDED that security operations be applied to every | * It is RECOMMENDED that security operations be applied to every | |||
block in a bundle and that the default behavior of a bundle agent | block in a bundle and that the default behavior of a BPA be to use | |||
is to use the security services defined in this specification. | the security services defined in this specification. Designers | |||
Designers should only deviate from the use of security operations | should only deviate from the use of security operations when the | |||
when the deviation can be justified - such as when doing so causes | deviation can be justified -- such as when doing so causes | |||
downstream errors when processing blocks whose contents must be | downstream errors when processing blocks whose contents must be | |||
inspected or changed at one or more hops along the path. | inspected or changed at one or more hops along the path. | |||
o BCB security contexts can alter the size of extension blocks and | * BCB security contexts can alter the size of extension blocks and | |||
the payload block. Security policy SHOULD consider how changes to | the payload block. Security policy SHOULD consider how changes to | |||
the size of a block could negatively effect bundle processing | the size of a block could negatively effect bundle processing | |||
(e.g., calculating storage needs and scheduling transmission | (e.g., calculating storage needs and scheduling transmission | |||
times). | times). | |||
o Adding a BIB to a security target that has already been encrypted | * 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 security context can be selected | 1. At the time of encryption, a security context can be selected | |||
which computes a plain text integrity-protection mechanism | that computes a plaintext integrity-protection mechanism that | |||
that is included as a security context result field. | is included as a security context result field. | |||
2. The encrypted block may be replicated as a new block with a | 2. The encrypted block may be replicated as a new block with a | |||
new block number and given integrity protection. | new block number and may be 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 Security policy SHOULD address whether cipher suites whose cipher | * Security policy SHOULD address whether cipher suites whose | |||
text is larger than the initial plain text are permitted and, if | ciphertext is larger than the initial plaintext are permitted and, | |||
so, for what types of blocks. Changing the size of a block may | if so, for what types of blocks. Changing the size of a block may | |||
cause processing difficulties for networks that calculate block | cause processing difficulties for networks that calculate block | |||
offsets into bundles or predict transmission times or storage | offsets into bundles or predict transmission times or storage | |||
availability as a function of bundle size. In other cases, | availability as a function of bundle size. In other cases, | |||
changing the size of a payload as part of encryption has no | changing the size of a payload as part of encryption has no | |||
significant impact. | significant impact. | |||
7.1. Security Reason Codes | 7.1. Security Reason Codes | |||
Bundle protocol agents (BPAs) must process blocks and bundles in | BPAs must process blocks and bundles in accordance with both BP | |||
accordance with both BP policy and BPSec policy. The decision to | policy and BPSec policy. The decision to receive, forward, deliver, | |||
receive, forward, deliver, or delete a bundle may be communicated to | or delete a bundle may be communicated to the report-to address of | |||
the report-to address of the bundle, in the form of a status report, | the bundle in the form of a status report, as a method of tracking | |||
as a method of tracking the progress of the bundle through the | the progress of the bundle through the network. The status report | |||
network. The status report for a bundle may be augmented with a | for a bundle may be augmented with a "reason code" explaining why the | |||
"reason code" explaining why the particular action was taken on the | particular action was taken on the bundle. | |||
bundle. | ||||
This section describes a set of reason codes associated with the | This section describes a set of reason codes associated with the | |||
security processing of a bundle. The communication of security- | security processing of a bundle. The communication of security- | |||
related status reports might reduce the security of a network if | related status reports might reduce the security of a network if | |||
these reports are intercepted by unintended recipients. BPSec policy | these reports are intercepted by unintended recipients. BPSec policy | |||
SHOULD specify the conditions in which sending security reason codes | SHOULD specify the conditions in which sending security reason codes | |||
are appropriate. Examples of appropriate conditions for the use of | are appropriate. Examples of appropriate conditions for the use of | |||
security reason codes could include the following. | security reason codes could include the following. | |||
o When the report-to address is verified as unchanged from the | * When the report-to address is verified as unchanged from the | |||
bundle source. This can occur by placing an appropriate BIB on | bundle source. This can occur by placing an appropriate BIB on | |||
the bundle primary block. | the bundle primary block. | |||
o When the block containing a status report with a security reason | * When the block containing a status report with a security reason | |||
code is encrypted by a BCB. | code is encrypted by a BCB. | |||
o When a status report containing a security reason code is only | * When a status report containing a security reason code is only | |||
sent for security issues relating to bundles and/or blocks | sent for security issues relating to bundles and/or blocks | |||
associated with non-operational user data or otherwise with test | associated with non-operational user data or test data. | |||
data. | ||||
o When a status report containing a security reason code is only | * When a status report containing a security reason code is only | |||
sent for security issues associated with non-operational security | sent for security issues associated with non-operational security | |||
contexts, or security contexts using non-operational | contexts, or security contexts using non-operational | |||
configurations, such as test keys. | configurations, such as test keys. | |||
Security reason codes are assigned in accordance with Section 11.2 | Security reason codes are assigned in accordance with Section 11.2 | |||
and are as described below. | and are as described below. | |||
Missing Security Operation: | Missing security operation: | |||
This reason code indicates that a bundle was missing one or | This reason code indicates that a bundle was missing one or | |||
more required security operations. This reason code is | more required security operations. This reason code is | |||
typically used by a security verifier or security acceptor. | typically used by a security verifier or security acceptor. | |||
Unknown Security Operation: | Unknown security operation: | |||
This reason code indicates that one or more security operations | This reason code indicates that one or more security operations | |||
present in a bundle cannot be understood by the security | present in a bundle cannot be understood by the security | |||
verifier or security acceptor for the operation. For example, | verifier or security acceptor for the operation. For example, | |||
this reason code may be used if a security block references an | this reason code may be used if a security block references an | |||
unknown security context identifier or security context | unknown security context identifier or security context | |||
parameter. This reason code should not be used for security | parameter. This reason code should not be used for security | |||
operations for which the node is not a security verifier or | operations for which the node is not a security verifier or | |||
security acceptor; there is no requirement that all nodes in a | security acceptor; there is no requirement that all nodes in a | |||
network understand all security contexts, security context | network understand all security contexts, security context | |||
parameters, and security services for every bundle in a | parameters, and security services for every bundle in a | |||
network. | network. | |||
Unexpected Security Operation: | Unexpected security operation: | |||
This reason code indicates that a receiving node is neither a | This reason code indicates that a receiving node is neither a | |||
security verifier nor a security acceptor for at least one | security verifier nor a security acceptor for at least one | |||
security operation in a bundle. This reason code should not be | security operation in a bundle. This reason code should not be | |||
seen as an error condition; not every node is a security | seen as an error condition: not every node is a security | |||
verifier or security acceptor for every security operation in | verifier or security acceptor for every security operation in | |||
every bundle. In certain networks, this reason code may be | every bundle. In certain networks, this reason code may be | |||
useful in identifying misconfigurations of security policy. | useful in identifying misconfigurations of security policy. | |||
Failed Security Operation: | Failed security operation: | |||
This reason code indicates that one or more security operations | This reason code indicates that one or more security operations | |||
in a bundle failed to process as expected for reasons other | in a bundle failed to process as expected for reasons other | |||
than misconfiguration. This may occur when a security-source | than misconfiguration. This may occur when a security-source | |||
is unable to add a security block to a bundle. This may occur | is unable to add a security block to a bundle. This may occur | |||
if the target of a security operation fails to verify using the | if the target of a security operation fails to verify using the | |||
defined security context at a security verifier. This may also | defined security context at a security verifier. This may also | |||
occur if a security operation fails to be processed without | occur if a security operation fails to be processed without | |||
error at a security acceptor. | error at a security acceptor. | |||
Conflicting Security Operations: | Conflicting security operation: | |||
This reason code indicates that two or more security operations | This reason code indicates that two or more security operations | |||
in a bundle are not conformant with the BPSec specification and | in a bundle are not conformant with the BPSec specification and | |||
that security processing was unable to proceed because of a | that security processing was unable to proceed because of a | |||
BPSec protocol violation. | BPSec protocol violation. | |||
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 that 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 this reason, it is important to introduce key | |||
threat models and describe the roles and responsibilities of the | threat models and describe the roles and responsibilities of the | |||
BPSec protocol in protecting the confidentiality and integrity of the | BPSec protocol in protecting the confidentiality and integrity of the | |||
data against those threats. This section provides additional | data against those threats. This section provides additional | |||
discussion on security threats that BPSec will face and describes how | discussion on security threats that BPSec will face and describes how | |||
BPSec security mechanisms operate to mitigate these threats. | BPSec security mechanisms operate to mitigate these threats. | |||
The threat model described here is assumed to have a set of | The threat model described here is assumed to have a set of | |||
capabilities identical to those described by the Internet Threat | capabilities identical to those described by the Internet Threat | |||
Model in [RFC3552], but the BPSec threat model is scoped to | Model in [RFC3552], but the BPSec threat model is scoped to | |||
illustrate threats specific to BPSec operating within DTN | illustrate threats specific to BPSec operating within DTN | |||
environments and therefore focuses on on-path-attackers (OPAs). In | environments; therefore, it focuses on on-path attackers (OPAs). In | |||
doing so, it is assumed that the DTN (or significant portions of the | doing so, it is assumed that the delay-tolerant network (or | |||
DTN) are completely under the control of an attacker. | significant portions of the delay-tolerant network) are completely | |||
under the control of an attacker. | ||||
8.1. Attacker Capabilities and Objectives | 8.1. Attacker Capabilities and Objectives | |||
BPSec was designed to protect against OPA threats which may have | BPSec was designed to protect against OPA threats that may have | |||
access to a bundle during transit from its source, Alice, to its | access to a bundle during transit from its source, Alice, to its | |||
destination, Bob. An OPA node, Olive, is a non-cooperative node | destination, Bob. An OPA node, Olive, is a noncooperative node | |||
operating on the DTN between Alice and Bob that has the ability to | operating on the delay-tolerant network between Alice and Bob that | |||
receive bundles, examine bundles, modify bundles, forward bundles, | has the ability to receive bundles, examine bundles, modify bundles, | |||
and generate bundles at will in order to compromise the | forward bundles, and generate bundles at will in order to compromise | |||
confidentiality or integrity of data within the DTN. There are three | the confidentiality or integrity of data within the delay-tolerant | |||
classes of OPA nodes which are differentiated based on their access | network. There are three classes of OPA nodes that are | |||
to cryptographic material: | differentiated based on their access to cryptographic material: | |||
o Unprivileged Node: Olive has not been provisioned within the | Unprivileged Node: Olive has not been provisioned within the secure | |||
secure environment and only has access to cryptographic material | environment and only has access to cryptographic material that has | |||
which has been publicly-shared. | been publicly shared. | |||
o Legitimate Node: Olive is within the secure environment and | Legitimate Node: Olive is within the secure environment; therefore, | |||
therefore has access to cryptographic material which has been | Olive has access to cryptographic material that has been | |||
provisioned to Olive (i.e., K_M) as well as material which has | provisioned to Olive (i.e., K_M) as well as material that has been | |||
been publicly-shared. | publicly shared. | |||
o Privileged Node: Olive is a privileged node within the secure | Privileged Node: Olive is a privileged node within the secure | |||
environment and therefore has access to cryptographic material | environment; therefore, Olive has access to cryptographic material | |||
which has been provisioned to Olive, Alice and/or Bob (i.e. K_M, | that has been provisioned to Olive, Alice, and/or Bob (i.e., K_M, | |||
K_A, and/or K_B) as well as material which has been publicly- | K_A, and/or K_B) as well as material that has been publicly | |||
shared. | shared. | |||
If Olive is operating as a privileged node, this is tantamount to | If Olive 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 | |||
Olive from the DTN or BPSec secure environment. It is up to the | Olive from the delay-tolerant network or BPSec secure environment. | |||
BPSec implementer or the underlying cryptographic mechanisms to | It is up to the BPSec implementer or the underlying cryptographic | |||
provide appropriate capabilities if they are needed. It should also | mechanisms to provide appropriate capabilities if they are needed. | |||
be noted that if the implementation of BPSec uses a single set of | It should also be noted that if the implementation of BPSec uses a | |||
shared cryptographic material for all nodes, a legitimate node is | single set of shared cryptographic material for all nodes, a | |||
equivalent to a privileged node because K_M == K_A == K_B. For this | legitimate node is equivalent to a privileged node because K_M == K_A | |||
reason, sharing cryptographic material in this way is not | == K_B. For this reason, sharing cryptographic material in this way | |||
recommended. | is not recommended. | |||
A special case of the legitimate node is when Olive is either Alice | A special case of the legitimate node is when Olive is either Alice | |||
or Bob (i.e., K_M == K_A or K_M == K_B). In this case, Olive is able | or Bob (i.e., K_M == K_A or K_M == K_B). In this case, Olive is able | |||
to impersonate traffic as either Alice or Bob, respectively, which | to impersonate traffic as either Alice or Bob, respectively, which | |||
means that traffic to and from that node can be decrypted and | means that traffic to and from that node can be decrypted and | |||
encrypted, respectively. Additionally, messages may be signed as | encrypted, respectively. Additionally, messages may be signed as | |||
originating 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 | |||
skipping to change at page 32, line 8 ¶ | skipping to change at line 1463 ¶ | |||
of that bundle and attempt to recover any protected data or | 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 | |||
confidentiality of the data. Of course, it should be assumed that | confidentiality of the data. Of course, it should be assumed that | |||
Olive is able to attempt offline recovery of encrypted data, so the | Olive 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 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, the implication is that long-lived bundles store | |||
stored within them may remain relevant and sensitive for long enough | information within that remains relevant and sensitive for long | |||
that, once captured, there is sufficient time to crack encryption | enough that, once captured, there is sufficient time to crack | |||
associated with the bundle. If a bundle does persist on the network | encryption associated with the bundle. If a bundle does persist on | |||
for years and the cipher suite used for a BCB provides inadequate | the network for years and the cipher suite used for a BCB provides | |||
protection, Olive may be able to recover the protected data either | inadequate protection, Olive may be able to recover the protected | |||
before that bundle reaches its intended destination or before the | data either before that bundle reaches its intended destination or | |||
information in the bundle is no longer considered sensitive. | before the information in the bundle is no longer considered | |||
sensitive. | ||||
NOTE: Olive is not limited by the bundle lifetime and may retain a | NOTE: Olive is not limited by the bundle lifetime and may retain a | |||
given bundle indefinitely. | given bundle indefinitely. | |||
NOTE: Irrespective of whether BPSec is used, traffic analysis will be | NOTE: Irrespective of whether BPSec is used, traffic analysis will be | |||
possible. | possible. | |||
8.2.2. Modification Attacks | 8.2.2. Modification Attacks | |||
As a node participating in the DTN between Alice and Bob, Olive will | As a node participating in the delay-tolerant network between Alice | |||
also be able to modify the received bundle, including non-BPSec data | and Bob, Olive will also be able to modify the received bundle, | |||
such as the primary block, payload blocks, or block processing | including non-BPSec data such as the primary block, payload blocks, | |||
control flags as defined in [I-D.ietf-dtn-bpbis]. Olive will be able | or block processing control flags as defined in [RFC9171]. Olive | |||
to undertake activities which include modification of data within the | will be able to undertake activities including modification of data | |||
blocks, replacement of blocks, addition of blocks, or removal of | within the blocks, replacement of blocks, addition of blocks, or | |||
blocks. Within BPSec, both the BIB and BCB provide integrity | removal of blocks. Within BPSec, both the BIB and BCB provide | |||
protection mechanisms to detect or prevent data manipulation attempts | integrity-protection mechanisms to detect or prevent data | |||
by Olive. | manipulation attempts by Olive. | |||
The BIB provides that protection to another block which is its | The BIB provides that protection to another block that is its | |||
security target. The cryptographic mechanisms used to generate the | security target. The cryptographic mechanisms used to generate the | |||
BIB should be strong against collision attacks and Olive should not | BIB should be strong against collision attacks, and Olive should not | |||
have access to the cryptographic material used by the originating | have access to the cryptographic material used by the originating | |||
node to generate the BIB (e.g., K_A). If both of these conditions | node to generate the BIB (e.g., K_A). If both of these conditions | |||
are true, Olive will be unable to modify the security target or the | are true, Olive will be unable to modify the security target or the | |||
BIB and lead Bob to validate the security target as originating from | BIB, and thus she cannot lead Bob to validate the security target as | |||
Alice. | originating from Alice. | |||
Since BPSec security operations are implemented by placing blocks in | Since BPSec security operations are implemented by placing blocks in | |||
a bundle, there is no in-band mechanism for detecting or correcting | a bundle, there is no in-band mechanism for detecting or correcting | |||
certain cases where Olive removes blocks from a bundle. If Olive | certain cases where Olive removes blocks from a bundle. If Olive | |||
removes a BCB, but keeps the security target, the security target | removes a BCB, but keeps the security target, the security target | |||
remains encrypted and there is a possibility that there may no longer | remains encrypted and there is a possibility that there may no longer | |||
be sufficient information to decrypt the block at its destination. | be sufficient information to decrypt the block at its destination. | |||
If Olive removes both a BCB (or BIB) and its security target there is | If Olive removes both a BCB (or BIB) and its security target, there | |||
no evidence left in the bundle of the security operation. Similarly, | is no evidence left in the bundle of the security operation. | |||
if Olive removes the BIB but not the security target there is no | Similarly, if Olive removes the BIB, but not the security target, | |||
evidence left in the bundle of the security operation. In each of | there is no evidence left in the bundle of the security operation. | |||
these cases, the implementation of BPSec must be combined with policy | In each of these cases, the implementation of BPSec must be combined | |||
configuration at endpoints in the network which describe the expected | with policy configuration at endpoints in the network that describe | |||
and required security operations that must be applied on transmission | the expected and required security operations that must be applied on | |||
and are expected to be present on receipt. This or other similar | transmission and that are expected to be present on receipt. This or | |||
out-of-band information is required to correct for removal of | other similar out-of-band information is required to correct for | |||
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 Olive is a legitimate node | validation at the destination node. If Olive is a legitimate node | |||
within the DTN, the BIB generated by Alice with K_A can be replaced | within the delay-tolerant network, the BIB generated by Alice with | |||
with a new BIB generated with K_M and forwarded to Bob. If Bob is | K_A can be replaced with a new BIB generated with K_M and forwarded | |||
only validating that the BIB was generated by a legitimate user, Bob | to Bob. If Bob is only validating that the BIB was generated by a | |||
will acknowledge the message as originating from Olive instead of | legitimate user, Bob will acknowledge the message as originating from | |||
Alice. Validating a BIB indicates only that the BIB was generated by | Olive instead of Alice. Validating a BIB indicates only that the BIB | |||
a holder of the relevant key; it does not provide any guarantee that | was generated by a holder of the relevant key; it does not provide | |||
the bundle or block was created by the same entity. In order to | any guarantee that the bundle or block was created by the same | |||
provide verifiable integrity checks BCB should require an encryption | entity. In order to provide verifiable integrity checks, the BCB | |||
scheme that is Indistinguishable under adaptive Chosen Ciphertext | should require an encryption scheme that is Indistinguishable under | |||
Attack (IND-CCA2) secure. Such an encryption scheme will guard | adaptive Chosen Ciphertext Attack (IND-CCA2) secure. Such an | |||
against signature substitution attempts by Olive. In this case, | encryption scheme will guard against signature substitution attempts | |||
Alice creates a BIB with the protected data block as the security | by Olive. In this case, Alice creates a BIB with the protected data | |||
target and then creates a BCB with both the BIB and protected data | block as the security target and then creates a BCB with both the BIB | |||
block as its security targets. | and protected data block as its security targets. | |||
8.2.3. Topology Attacks | 8.2.3. Topology Attacks | |||
If Olive is in a OPA position within the DTN, she is able to | If Olive is in an OPA position within the delay-tolerant network, she | |||
influence how any bundles that come to her may pass through the | is able to influence how any bundles that come to her may pass | |||
network. Upon receiving and processing a bundle that must be routed | through the network. Upon receiving and processing a bundle that | |||
elsewhere in the network, Olive has three options as to how to | must be routed elsewhere in the network, Olive has three options as | |||
proceed: not forward the bundle, forward the bundle as intended, or | to how to proceed: not forward the bundle, forward the bundle as | |||
forward the bundle to one or more specific nodes within the network. | intended, or forward the bundle to one or more specific nodes within | |||
the network. | ||||
Attacks that involve re-routing the packets throughout the network | Attacks that involve rerouting the bundles throughout the network are | |||
are essentially a special case of the modification attacks described | essentially a special case of the modification attacks described in | |||
in this section where the attacker is modifying fields within the | this section, one where the attacker is modifying fields within the | |||
primary block of the bundle. Given that BPSec cannot encrypt the | primary block of the bundle. Given that BPSec cannot encrypt the | |||
contents of the primary block, alternate methods must be used to | contents of the primary block, alternate methods must be used to | |||
prevent this situation. These methods may include requiring BIBs for | prevent this situation. These methods may include requiring BIBs for | |||
primary blocks, using encapsulation, or otherwise strategically | primary blocks, using encapsulation, or otherwise strategically | |||
manipulating primary block data. The specifics of any such | manipulating primary block data. The details of any such mitigation | |||
mitigation technique are specific to the implementation of the | technique are specific to the implementation of the deploying network | |||
deploying network and outside of the scope of this document. | and are outside of the scope of this document. | |||
Furthermore, routing rules and policies may be useful in enforcing | Furthermore, routing rules and policies may be useful in enforcing | |||
particular traffic flows to prevent topology attacks. While these | particular traffic flows to prevent topology attacks. While these | |||
rules and policies may utilize some features provided by BPSec, their | rules and policies may utilize some features provided by BPSec, their | |||
definition is beyond the scope of this specification. | definition is beyond the scope of this specification. | |||
8.2.4. Message Injection | 8.2.4. Message Injection | |||
Olive is also able to generate new bundles and transmit them into the | Olive is also able to generate new bundles and transmit them into the | |||
DTN at will. These bundles may either be copies or slight | delay-tolerant network at will. These bundles may be either 1) | |||
modifications of previously-observed bundles (i.e., a replay attack) | copies or slight modifications of previously observed bundles (i.e., | |||
or entirely new bundles generated based on the Bundle Protocol, | a replay attack) or 2) entirely new bundles generated based on the | |||
BPSec, or other bundle-related protocols. With these attacks Olive's | Bundle Protocol, BPSec, or other bundle-related protocols. With | |||
objectives may vary, but may be targeting either the bundle protocol | these attacks, Olive's objectives may vary, but may be targeting | |||
or application-layer protocols conveyed by the bundle protocol. The | either the Bundle Protocol or application-layer protocols conveyed by | |||
target could also be the storage and compute of the nodes running the | the Bundle Protocol. The target could also be the storage and | |||
bundle or application layer protocols (e.g., a denial of service to | computing capabilities of the nodes running the bundle or | |||
flood on the storage of the store-and-forward mechanism; or compute | application-layer protocols (e.g., a denial of service to flood on | |||
which would process the packets and perhaps prevent other | the storage of the store-and-forward mechanism or a computation that | |||
activities). | would process the bundles 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 may provide replay protection under certain circumstances. | mechanisms may provide replay protection under certain circumstances. | |||
Alternatively, application data itself may be augmented to include | Alternatively, application data itself may be augmented to include | |||
mechanisms to assert data uniqueness and then protected with a BIB, a | mechanisms to assert data uniqueness and then be protected with a | |||
BCB, or both along with other block data. In such a case, the | BIB, a BCB, or both along with other block data. In such a case, the | |||
receiving node would be able to validate the uniqueness of the data. | receiving node would be able to validate the uniqueness of the data. | |||
For example, a BIB may be used to validate the integrity of a | For example, a BIB may be used to validate the integrity of a | |||
bundle's primary block, which includes a timestamp and lifetime for | bundle's primary block, which includes a timestamp and lifetime for | |||
the bundle. If a bundle is replayed outside of its lifetime, then | the bundle. If a bundle is replayed outside of its lifetime, then | |||
the replay attack will fail as the bundle will be discarded. | the replay attack will fail as the bundle will be discarded. | |||
Similarly, additional blocks such as the Bundle Age may be signed and | Similarly, additional blocks, such as the Bundle Age, may be signed | |||
validated to identify replay attacks. Finally, security context | and validated to identify replay attacks. Finally, security context | |||
parameters within BIB and BCB blocks may include anti-replay | parameters within BIBs and BCBs may include anti-replay mechanisms | |||
mechanisms such as session identifiers, nonces, and dynamic passwords | such as session identifiers, nonces, and dynamic passwords as | |||
as supported by network characteristics. | supported by network characteristics. | |||
9. Security Context Considerations | 9. Security Context Considerations | |||
9.1. Mandating Security Contexts | 9.1. Mandating Security Contexts | |||
Because of the diversity of networking scenarios and node | Because of the diversity of networking scenarios and node | |||
capabilities that may utilize BPSec there is a risk that a single | capabilities that may utilize BPSec, there is a risk that a single | |||
security context mandated for every possible BPSec implementation is | security context mandated for every possible BPSec implementation is | |||
not feasible. For example, a security context appropriate for a | not feasible. For example, a security context appropriate for a | |||
resource-constrained node with limited connectivity may be | resource-constrained node with limited connectivity may be | |||
inappropriate for use in a well-resourced, well connected node. | inappropriate for use in a well-resourced, well-connected node. | |||
This does not mean that the use of BPSec in a particular network is | This does not mean that the use of BPSec in a particular network is | |||
meant to be used without security contexts for interoperability and | meant to happen without security contexts for interoperability and | |||
default behavior. Network designers must identify the minimal set of | default behavior. Network designers must identify the minimal set of | |||
security contexts necessary for functions in their network. For | security contexts necessary for functions in their network. For | |||
example, a default set of security contexts could be created for use | example, a default set of security contexts could be created for use | |||
over the terrestrial Internet and required by any BPSec | over the terrestrial Internet, and they could be required by any | |||
implementation communicating over the terrestrial Internet. | BPSec implementation communicating over the terrestrial Internet. | |||
To ensure interoperability among various implementations, all BPSec | To ensure interoperability among various implementations, all BPSec | |||
implementations MUST support at least the current IETF standards- | implementations MUST support at least the current, mandatory security | |||
track mandatory security context(s). As of this writing, that BCP | context(s) defined in IETF Standards Track RFCs. As of this writing, | |||
mandatory security context is specified in | that BP mandatory security context is specified in [RFC9173], but the | |||
[I-D.ietf-dtn-bpsec-default-sc], but the mandatory security | mandatory security context(s) might change over time in accordance | |||
context(s) might change over time in accordance with usual IETF | with usual IETF processes. Such changes are likely to occur in the | |||
processes. Such changes are likely to occur in the future if/when | future if/when flaws are discovered in the applicable cryptographic | |||
flaws are discovered in the applicable cryptographic algorithms, for | algorithms, for example. | |||
example. | ||||
Additionally, BPsec implementations need to support the security | Additionally, BPSec implementations need to support the security | |||
contexts which are specified and/or used by the BP networks in which | contexts that are required by the BP networks in which they are | |||
they are deployed. | deployed. | |||
If a node serves as a gateway amongst two or more networks, the BPSec | If a node serves as a gateway between two or more networks, the BPSec | |||
implementation at that node needs to support the union of security | implementation at that node needs to support the union of security | |||
contexts mandated in those networks. | contexts mandated in those networks. | |||
BPSec has been designed to allow for a diversity of security contexts | 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 | and for new contexts to be defined over time. The use of different | |||
security contexts does not change the BPSec protocol itself and the | security contexts does not change the BPSec protocol itself, and the | |||
definition of new security contexts MUST adhere to the requirements | definition of new security contexts MUST adhere to the requirements | |||
of such contexts as presented in this section and generally in this | of such contexts as presented in this section and generally in this | |||
specification. | specification. | |||
Implementors should monitor the state of security context | Implementers should monitor the state of security context | |||
specifications to check for future updates and replacement. | specifications to check for future updates and replacement. | |||
9.2. Identification and Configuration | 9.2. Identification and Configuration | |||
Security blocks uniquely identify the security context to be used in | Security blocks uniquely identify the security context to be used in | |||
the processing of their security services. The security context for | the processing of their security services. The security context for | |||
a security block MUST be uniquely identifiable and MAY use parameters | a security block MUST be uniquely identifiable and MAY use parameters | |||
for customization. | for customization. | |||
To reduce the number of security contexts used in a network, security | To reduce the number of security contexts used in a network, security | |||
skipping to change at page 36, line 31 ¶ | skipping to change at line 1676 ¶ | |||
produced for each security service. | produced for each security service. | |||
Network operators must determine the number, type, and configuration | Network operators must determine the number, type, and configuration | |||
of security contexts in a system. Networks with rapidly changing | of security contexts in a system. Networks with rapidly changing | |||
configurations may define relatively few security contexts with each | configurations may define relatively few security contexts with each | |||
context customized with multiple parameters. For networks with more | context customized with multiple parameters. For networks with more | |||
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 | +=============+============+=======================================+ | |||
| Context | Parameters | Definition | | ||||
+------------+------------+-----------------------------------------+ | | Type | | | | |||
| Context | Parameters | Definition | | +=============+============+=======================================+ | |||
| Type | | | | | Key | Encrypted | AES-GCM-256 cipher suite with | | |||
+------------+------------+-----------------------------------------+ | | Exchange | Key, IV | provided ephemeral key encrypted with | | |||
| Key | Encrypted | AES-GCM-256 cipher suite with provided | | | AES | | a predetermined key encryption key | | |||
| Exchange | Key, IV | ephemeral key encrypted with a | | | | | and cleartext initialization vector. | | |||
| AES | | predetermined key encryption key and | | +-------------+------------+---------------------------------------+ | |||
| | | clear text initialization vector. | | | Pre-Shared | IV | AES-GCM-256 cipher suite with | | |||
| Pre-shared | IV | AES-GCM-256 cipher suite with | | | Key AES | | predetermined key and predetermined | | |||
| Key AES | | predetermined key and predetermined | | | | | key-rotation policy. | | |||
| | | key rotation policy. | | +-------------+------------+---------------------------------------+ | |||
| Out of | None | AES-GCM-256 cipher suite with all info | | | Out-of-Band | None | AES-GCM-256 cipher suite with all | | |||
| Band AES | | predetermined. | | | AES | | info predetermined. | | |||
+------------+------------+-----------------------------------------+ | +-------------+------------+---------------------------------------+ | |||
Table 1 | Table 1: Security Context Examples | |||
9.3. 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 DTNs can vary substantially. Developers should consider these | |||
consider these conditions to better describe the conditions when | conditions to better describe the conditions in which those contexts | |||
those contexts will operate or exhibit vulnerability, and selection | will operate or exhibit vulnerability, and selection of these | |||
of these contexts for implementation should be made with | contexts for implementation should be made with consideration for | |||
consideration for this reality. There are key differences that may | this reality. There are key differences that may limit the | |||
limit the opportunity for a security context to leverage existing | opportunity for a security context to leverage existing cipher suites | |||
cipher suites and technologies that have been developed for use in | and technologies that have been developed for use in more reliable | |||
traditional, more reliable networks: | networks: | |||
o Data Lifetime: Depending on the application environment, bundles | Data Lifetime: Depending on the application environment, bundles may | |||
may persist on the network for extended periods of time, perhaps | persist on the network for extended periods of time, perhaps even | |||
even years. Cryptographic algorithms should be selected to ensure | years. Cryptographic algorithms should be selected to ensure | |||
protection of data against attacks for a length of time reasonable | protection of data against attacks for a length of time reasonable | |||
for the application. | for the application. | |||
o One-Way Traffic: Depending on the application environment, it is | One-Way Traffic: Depending on the application environment, it is | |||
possible that only a one-way connection may exist between two | possible that only a one-way connection may exist between two | |||
endpoints, or if a two-way connection does exist, the round- trip | endpoints, or if a two-way connection does exist, the round-trip | |||
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 | 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 that rely on a key distribution center or other | |||
trust center impractical under certain conditions. | trust center impractical under certain conditions. | |||
When developing security contexts for use with BPSec, the following | When developing security contexts for use with BPSec, the 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 | 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 | 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 | 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 | Ciphertext Size: Security contexts MUST state whether their | |||
associated cipher suites generate cipher text (to include any | associated cipher suites generate ciphertext (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 plaintext. | |||
If a security context does not wish to alter the size of the plain | If a security context does not wish to alter the size of the | |||
text it should place overflow bytes and authentication tags in | plaintext, it should place overflow bytes and authentication tags | |||
security result fields. | in security result fields. | |||
o Block Header Information. Security contexts SHOULD include block | Block Header Information: Security contexts SHOULD include block | |||
header information that is considered to be immutable for the | header information that is considered to be immutable for the | |||
block. This information MAY include the block type code, block | block. This information MAY include the block type code, block | |||
number, CRC Type and CRC field (if present or if missing and | number, CRC type, and CRC field (if present or if missing and | |||
unlikely to be added later), and possibly certain block processing | unlikely to be added later), and possibly certain block processing | |||
control flags. Designers should input these fields as additional | control flags. Designers should input these fields as additional | |||
data for integrity protection when these fields are expected to | data for integrity protection when these fields are expected to | |||
remain unchanged over the path the block will take from the | remain unchanged over the path the block will take from the | |||
security source to the security acceptor. Security contexts | security source to the security acceptor. Security contexts | |||
considering block header information MUST describe expected | considering block header information MUST describe expected | |||
behavior when these fields fail their integrity verification. | behavior when these fields fail their integrity verification. | |||
o Handling CRC Fields. Security contexts may include algorithms | Handling CRC Fields: Security contexts may include algorithms that | |||
that alter the contexts of their security target block, such as | alter the contexts of their security target block, such as the | |||
the case when encrypting the block-type-specific data of a target | case when encrypting the block-type-specific data of a target | |||
block as part oF a BCB confidentiality service. Security context | block as part of a BCB confidentiality service. Security context | |||
specifications SHOULD address how preexisting CRC-Type and CRC- | specifications SHOULD address how preexisting CRC type and CRC | |||
Value fields be handled. For example, a BCB security context | value fields be handled. For example, a BCB security context | |||
could remove the plain-text CRC value from its target upon | could remove the plaintext CRC value from its target upon | |||
encryption and replace or recalculate the value upon decryption. | encryption and replace or recalculate the value upon decryption. | |||
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. BIB, BCB, and | |||
of BIB, BCB, and any future OSBs can co-exist within a bundle and can | any future OSBs can coexist within a bundle and can be considered in | |||
be considered in conformance with BPSec if each of the following | conformance with BPSec if all of the following requirements are met | |||
requirements are met by any future identified security blocks. | by any future identified security blocks. | |||
o Other security blocks (OSBs) MUST NOT reuse any enumerations | * OSBs MUST NOT reuse any enumerations identified in this | |||
identified in this specification, to include the block type codes | specification, to include the block type codes for BIB and BCB. | |||
for BIB and BCB. | ||||
o An OSB definition MUST state whether it can be the target of a BIB | * An OSB definition MUST state whether it can be the target of a BIB | |||
or a BCB. The definition MUST also state whether the OSB can | or a BCB. The definition MUST also state whether the OSB can | |||
target a BIB or a BCB. | target a BIB or a BCB. | |||
o An OSB definition MUST provide a deterministic processing order in | * An OSB definition MUST provide a deterministic processing order in | |||
the event that a bundle is received containing BIBs, BCBs, and | the event that a bundle is received containing BIBs, BCBs, and | |||
OSBs. This processing order MUST NOT alter the BIB and BCB | OSBs. This processing order MUST NOT alter the BIB and BCB | |||
processing orders identified in this specification. | processing orders identified in this specification. | |||
o An OSB definition MUST provide a canonicalization algorithm if the | * An OSB definition MUST provide a canonicalization algorithm if the | |||
default non-primary-block canonicalization algorithm cannot be | default algorithm for non-primary-block canonicalization cannot be | |||
used to generate a deterministic input for a cipher suite. This | used to generate a deterministic input for a cipher suite. This | |||
requirement can be waived if the OSB is defined so as to never be | requirement can be waived if the OSB is defined so as to never be | |||
the security target of a BIB or a BCB. | the security target of a BIB or a BCB. | |||
o An OSB definition MUST NOT require any behavior of a BPSEC-BPA | * An OSB definition MUST NOT require any behavior of a BPSec BPA | |||
that is in conflict with the behavior identified in this | that is in conflict with the behavior identified in this | |||
specification. In particular, the security processing | specification. In particular, the security processing | |||
requirements imposed by this specification must be consistent | requirements imposed by this specification must be consistent | |||
across all BPSEC-BPAs in a network. | across all BPSec BPAs in a network. | |||
o The behavior of an OSB when dealing with fragmentation must be | * The behavior of an OSB when dealing with fragmentation must be | |||
specified and MUST NOT lead to ambiguous processing states. In | specified and MUST NOT lead to ambiguous processing states. In | |||
particular, an OSB definition should address how to receive and | particular, an OSB definition should address how to receive and | |||
process an OSB in a bundle fragment that may or may not also | process an OSB in a bundle fragment that may or may not also | |||
contain its security target. An OSB definition should also | contain its security target. An OSB definition should also | |||
address whether an OSB may be added to a bundle marked as a | address whether an OSB may be added to a bundle marked as a | |||
fragment. | fragment. | |||
Additionally, policy considerations for the management, monitoring, | Additionally, policy considerations for the management, monitoring, | |||
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 specifications 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 that require 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 [RFC6255]. | "Bundle Block Types" registry defined in [RFC6255]. | |||
Additional Entries for the Bundle Block-Type Codes Registry: | +=======+=======================+===============+ | |||
| Value | Description | Reference | | ||||
+-------+-----------------------------+---------------+ | +=======+=======================+===============+ | |||
| Value | Description | Reference | | | 11 | Block Integrity | This document | | |||
+-------+-----------------------------+---------------+ | +-------+-----------------------+---------------+ | |||
| TBA | Block Integrity Block | This document | | | 12 | Block Confidentiality | This document | | |||
| TBA | Block Confidentiality Block | This document | | +-------+-----------------------+---------------+ | |||
+-------+-----------------------------+---------------+ | ||||
Table 2 | Table 2: Additional Entries for the "Bundle | |||
Block Types" Registry | ||||
The Bundle Block Types namespace notes whether a block type is meant | The "Bundle Block Types" registry notes whether a block type is meant | |||
for use in BP version 6, BP version 7, or both. The two block types | for use in BP version 6, BP version 7 (BPv7), or both. The two block | |||
defined in this specification are meant for use with BP version 7. | types defined in this specification are meant for use with BPv7. | |||
11.2. Bundle Status Report Reason Codes | 11.2. Bundle Status Report Reason Codes | |||
This specification allocates five reason codes from the existing | This specification allocates five reason codes from the existing | |||
"Bundle Status Report Reason Codes" registry defined in [RFC6255]. | "Bundle Status Report Reason Codes" registry defined in [RFC6255]. | |||
Additional Entries for the Bundle Status Report Reason Codes | +============+=======+============================+================+ | |||
Registry: | | BP Version | Value | Description | Reference | | |||
+============+=======+============================+================+ | ||||
| 7 | 12 | Missing security operation | This document, | | ||||
| | | | Section 7.1 | | ||||
+------------+-------+----------------------------+----------------+ | ||||
| 7 | 13 | Unknown security operation | This document, | | ||||
| | | | Section 7.1 | | ||||
+------------+-------+----------------------------+----------------+ | ||||
| 7 | 14 | Unexpected security | This document, | | ||||
| | | operation | Section 7.1 | | ||||
+------------+-------+----------------------------+----------------+ | ||||
| 7 | 15 | Failed security operation | This document, | | ||||
| | | | Section 7.1 | | ||||
+------------+-------+----------------------------+----------------+ | ||||
| 7 | 16 | Conflicting security | This document, | | ||||
| | | operation | Section 7.1 | | ||||
+------------+-------+----------------------------+----------------+ | ||||
+---------+-------+-----------------------+-------------------------+ | Table 3: Additional Entries for the "Bundle Status Report Reason | |||
| BP | Value | Description | Reference | | Codes" Registry | |||
| Version | | | | | ||||
+---------+-------+-----------------------+-------------------------+ | ||||
| 7 | TBD | Missing Security | This document, Section | | ||||
| | | Operation | Section 7.1 | | ||||
| 7 | TBD | Unknown Security | This document, Section | | ||||
| | | Operation | Section 7.1 | | ||||
| 7 | TBD | Unexpected Security | This document, Section | | ||||
| | | Operation | Section 7.1 | | ||||
| 7 | TBD | Failed Security | This document, Section | | ||||
| | | Operation | Section 7.1 | | ||||
| 7 | TBD | Conflicting Security | This document, Section | | ||||
| | | Operation | Section 7.1 | | ||||
+---------+-------+-----------------------+-------------------------+ | ||||
11.3. Security Context Identifiers | 11.3. Security Context Identifiers | |||
BPSec has a Security Context Identifier field for which IANA is | BPSec has a Security Context Identifier field for which IANA has | |||
requested to create and maintain a new registry named "BPSec Security | created a new registry named "BPSec Security Context Identifiers". | |||
Context Identifiers". Initial values for this registry are given | Initial values for this registry are given below. | |||
below. | ||||
The registration policy for this registry is: Specification Required. | ||||
The value range is: signed 16-bit integer. | The registration policy for this registry is Specification Required | |||
(see [RFC8126]). | ||||
BPSec Security Context Identifier Registry | The value range: signed 16-bit integer. | |||
+-------+-------------+---------------+ | +=======+=============+===============+ | |||
| Value | Description | Reference | | | Value | Description | Reference | | |||
+-------+-------------+---------------+ | +=======+=============+===============+ | |||
| < 0 | Reserved | This document | | | < 0 | Reserved | This document | | |||
+-------+-------------+---------------+ | ||||
| 0 | Reserved | This document | | | 0 | Reserved | This document | | |||
+-------+-------------+---------------+ | +-------+-------------+---------------+ | |||
Table 3 | Table 4: "BPSec Security Context | |||
Identifier" Registry | ||||
Negative security context identifiers are reserved for local/site- | Negative security context identifiers are reserved for local/site- | |||
specific uses. The use of 0 as a security context identifier is for | specific uses. The use of 0 as a security context identifier is for | |||
non-operational testing purposes only. | nonoperational testing purposes only. | |||
12. References | 12. References | |||
12.1. Normative References | 12.1. Normative References | |||
[I-D.ietf-dtn-bpbis] | ||||
Burleigh, S., Fall, K., and E. Birrane, "Bundle Protocol | ||||
Version 7", draft-ietf-dtn-bpbis-31 (work in progress), | ||||
January 2021. | ||||
[I-D.ietf-dtn-bpsec-default-sc] | ||||
Birrane, E., "BPSec Default Security Contexts", draft- | ||||
ietf-dtn-bpsec-default-sc-01 (work in progress), February | ||||
2021. | ||||
[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>. | |||
skipping to change at page 42, line 10 ¶ | skipping to change at line 1927 ¶ | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object | [RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object | |||
Representation (CBOR)", STD 94, RFC 8949, | Representation (CBOR)", STD 94, RFC 8949, | |||
DOI 10.17487/RFC8949, December 2020, | DOI 10.17487/RFC8949, December 2020, | |||
<https://www.rfc-editor.org/info/rfc8949>. | <https://www.rfc-editor.org/info/rfc8949>. | |||
12.2. Informative References | [RFC9171] Burleigh, S., Fall, K., and E. Birrane, III, "Bundle | |||
Protocol Version 7", RFC 9171, DOI 10.17487/RFC9171, | ||||
January 2022, <https://www.rfc-editor.org/info/rfc9171>. | ||||
[I-D.birrane-dtn-sbsp] | [RFC9173] Birrane, III, E., White, A., and S. Heiner, "Default | |||
Birrane, E., Pierce-Mayer, J., and D. Iannicca, | Security Contexts for Bundle Protocol Security (BPSec)", | |||
"Streamlined Bundle Security Protocol Specification", | RFC 9173, DOI 10.17487/RFC9173, January 2022, | |||
draft-birrane-dtn-sbsp-01 (work in progress), October | <https://www.rfc-editor.org/info/rfc9173>. | |||
2015. | ||||
12.2. Informative References | ||||
[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>. | |||
Appendix A. Acknowledgements | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
<https://www.rfc-editor.org/info/rfc8126>. | ||||
Acknowledgments | ||||
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, | specification: Scott Burleigh of the IPNGROUP, Angela Hennessy of the | |||
Angela Hennessy of the Laboratory for Telecommunications Sciences, | Laboratory for Telecommunications Sciences, Amy Alford and Cherita | |||
and Amy Alford, Angela Dalton, and Cherita Corbett of the Johns | Corbett of the Johns Hopkins University Applied Physics Laboratory | |||
Hopkins University Applied Physics Laboratory. | (JHU/APL), and Angela Dalton of AMD Research. | |||
Additionally, Benjamin Kaduk of Akamai Technologies provided a | ||||
detailed technical review that resulted in a stronger and more | ||||
precise specification. | ||||
Authors' Addresses | Authors' Addresses | |||
Edward J. Birrane, III | Edward J. Birrane, III | |||
The Johns Hopkins University Applied | The Johns Hopkins University Applied Physics Laboratory | |||
Physics Laboratory | ||||
11100 Johns Hopkins Rd. | 11100 Johns Hopkins Rd. | |||
Laurel, MD 20723 | Laurel, MD 20723 | |||
US | United States of America | |||
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 | The Johns Hopkins University Applied Physics Laboratory | |||
Physics Laboratory | ||||
11100 Johns Hopkins Rd. | 11100 Johns Hopkins Rd. | |||
Laurel, MD 20723 | Laurel, MD 20723 | |||
US | United States of America | |||
Phone: +1 443 778 2237 | Phone: +1 443 778 2237 | |||
Email: Ken.McKeever@jhuapl.edu | Email: Ken.McKeever@jhuapl.edu | |||
End of changes. 287 change blocks. | ||||
815 lines changed or deleted | 814 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |