| 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/ | ||||