| rfc9172v1.txt | rfc9172.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) E. Birrane, III | Internet Engineering Task Force (IETF) E. Birrane, III | |||
| Request for Comments: 9172 K. McKeever | Request for Comments: 9172 K. McKeever | |||
| Category: Standards Track JHU/APL | Category: Standards Track JHU/APL | |||
| ISSN: 2070-1721 November 2021 | ISSN: 2070-1721 November 2021 | |||
| Bundle Protocol Security Specification | Bundle Protocol Security (BPSec) | |||
| 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 (BP). | and confidentiality services for the Bundle Protocol (BP). | |||
| Status of This Memo | Status of This Memo | |||
| This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
| skipping to change at line 98 ¶ | skipping to change at line 98 ¶ | |||
| 9.2. Identification and Configuration | 9.2. Identification and Configuration | |||
| 9.3. Authorship | 9.3. Authorship | |||
| 10. Defining Other Security Blocks | 10. Defining Other Security Blocks | |||
| 11. IANA Considerations | 11. IANA Considerations | |||
| 11.1. Bundle Block Types | 11.1. Bundle Block Types | |||
| 11.2. Bundle Status Report Reason Codes | 11.2. Bundle Status Report Reason Codes | |||
| 11.3. Security Context Identifiers | 11.3. Security Context Identifiers | |||
| 12. References | 12. References | |||
| 12.1. Normative References | 12.1. Normative References | |||
| 12.2. Informative References | 12.2. Informative References | |||
| Acknowledgements | Acknowledgments | |||
| Authors' Addresses | 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) | |||
| [RFC9171] and is intended for use in Delay-Tolerant Networks (DTNs) | [RFC9171] and is intended for use in Delay-Tolerant Networking (DTN) | |||
| to provide security services between a security source and a security | to provide security services between a security source and a security | |||
| acceptor. When the security source is the bundle source and the | acceptor. When the security source is the bundle source and the | |||
| security acceptor is the bundle destination, the security service | security acceptor is the bundle destination, the security service | |||
| provides end-to-end protection. | provides end-to-end protection. | |||
| The Bundle Protocol specification [RFC9171] defines DTN as referring | The Bundle Protocol specification [RFC9171] defines DTN as referring | |||
| to "a network architecture providing communications in and/or through | to "a network architecture providing communications in and/or through | |||
| highly stressed environments" where "BP may be viewed as sitting at | highly stressed environments" where "BP may be viewed as sitting at | |||
| the application layer of some number of constituent networks, forming | the application layer of some number of constituent networks, forming | |||
| a store-carry-forward overlay network". The phrase "stressed | a store-carry-forward overlay network". The phrase "stressed | |||
| environment" refers to multiple challenging conditions including | environment" refers to multiple challenging conditions including | |||
| intermittent connectivity, large and/or variable delays, asymmetric | intermittent connectivity, large and/or variable delays, 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 that operates in all of the | An end-to-end security service that operates in all of the | |||
| environments where the BP operates is needed. | 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. Generally, this 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 | |||
| In this context, confidentiality 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; 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 that 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 that 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 secrets 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. Among untrusted | Completely trusted networks are extremely uncommon. Among untrusted | |||
| networks, different networking conditions and operational | networks, different networking conditions and operational | |||
| considerations require security mechanisms of varying strengths. | 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 will define different security contexts for | services, may result in too much security for some networks and too | |||
| use in different networks. A set of default security contexts are | little security in others. Default security contexts are defined in | |||
| defined in [RFC9173] and provide basic security services for | [RFC9173] to provide basic security services for interoperability | |||
| interoperability testing and for operational use on the terrestrial | testing and for operational use on the terrestrial Internet. It is | |||
| 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 | |||
| policies and does not provide a security policy for the BPSec. | policies and does not provide a security policy for the BPSec. | |||
| Similar to cipher suites, security policies are based on the nature | Similar to cipher suites, security policies are based on the nature | |||
| and capabilities of individual networks and network operational | and capabilities of individual networks and network operational | |||
| concepts. This specification does provide policy considerations when | concepts. This specification does provide policy considerations that | |||
| building a 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. | |||
| * "Bundle Protocol Version 7" [RFC9171] defines the format and | * "Bundle Protocol Version 7" [RFC9171] defines the format and | |||
| processing of bundles, the extension block format used to | processing of bundles, the extension block format used to | |||
| represent BPSec security blocks, and the canonical block structure | represent BPSec security blocks, and the canonical block structure | |||
| used by this specification. | used by this specification. | |||
| * "Concise Binary Object Representation (CBOR)" [RFC8949] defines a | * "Concise Binary Object Representation (CBOR)" [RFC8949] defines a | |||
| data format that allows for small code size, fairly small message | data format that allows for small code size, fairly small message | |||
| size, and extensibility without version negotiation. The block- | size, and extensibility without version negotiation. The block- | |||
| specific-data associated with BPSec security blocks is encoded in | type-specific data associated with BPSec security blocks is | |||
| this data format. | encoded in this data format. | |||
| * "Bundle Security Protocol Specification" [RFC6257] and | * "Bundle Security Protocol Specification" [RFC6257] introduces the | |||
| "Streamlined Bundle Security Protocol Specification" [DTN-SBSP] | concept of using BP extension blocks for security services in DTN. | |||
| introduce the concept of using BP extension blocks for security | BPSec is a continuation and refinement of this document. | |||
| services in a DTN. The BPSec is a continuation and refinement of | ||||
| these documents. | ||||
| 1.4. Terminology | 1.4. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 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 that either is unique to the BPSec | This section defines terminology that either is unique to the BPSec | |||
| or is necessary for understanding the concepts defined in this | or is necessary for understanding the concepts defined in this | |||
| specification. | specification. | |||
| Bundle Destination: the node that receives a bundle and delivers the | Bundle Destination: the node that receives a bundle and delivers the | |||
| payload of the bundle to an application. Also, the Node ID of the | payload of the bundle to an application. Also, the node ID of the | |||
| Bundle Protocol Agent (BPA) receiving the bundle. The bundle | Bundle Protocol Agent (BPA) receiving the bundle. The bundle | |||
| destination acts as the security acceptor for every security | destination acts as the security acceptor for every security | |||
| target in every security block in every bundle it receives. | target in every security block in every bundle it receives. | |||
| Bundle Source: the node that originates a bundle. Also, the Node ID | Bundle Source: the node that originates a bundle. Also, the node ID | |||
| of the BPA originating the bundle. | of the BPA originating the bundle. | |||
| 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 they do not provide | parameters (e.g., secret keys to use), but they do not provide | |||
| values for those parameters. | values for those parameters. | |||
| Forwarder: any node that transmits a bundle in the DTN. Also, the | Forwarder: any node that transmits a bundle in DTN. Also, the node | |||
| Node ID of the BPA that sent the bundle on its most recent hop. | ID of the BPA that sent the bundle on its most recent hop. | |||
| Intermediate Receiver, Waypoint, or Next Hop: any node that receives | Intermediate Receiver, Waypoint, or Next Hop: any node that receives | |||
| a bundle from a forwarder that is not the bundle destination. | a bundle from a forwarder that is not the bundle destination. | |||
| Also, the Node ID of the BPA at any such node. | Also, the node ID of the BPA at any such node. | |||
| Path: the ordered sequence of nodes through which a bundle passes on | Path: the ordered sequence of nodes through which a bundle passes on | |||
| its way from source to destination. The path is not necessarily | its way from source to destination. The path is not necessarily | |||
| known in advance by the bundle or any BPAs in the DTN. | known in advance by the bundle or any BPAs in DTN. | |||
| Security Acceptor: a bundle node that processes and dispositions one | Security Acceptor: a bundle node that processes and dispositions one | |||
| or more security blocks in a bundle. Security acceptors act as | or more security blocks in a bundle. Security acceptors act as | |||
| the endpoint of a security service represented in a security | the endpoint of a security service represented in a security | |||
| block. They remove the security blocks they act upon as part of | block. 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, the node ID of that node. | |||
| Security Block: a BPSec extension block in a bundle. | Security Block: a BPSec extension block in a bundle. | |||
| 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. | |||
| Security Operation: the application of a given security service to a | Security Operation: the application of a given security service to a | |||
| security target, notated as OP(security service, security target). | security target, notated as OP(security service, security target). | |||
| For example, OP(bcb-confidentiality, payload). Every security | For example, OP(bcb-confidentiality, payload). Every security | |||
| operation in a bundle MUST be unique, meaning that a given | operation in a bundle MUST be unique, meaning that a given | |||
| security service can only be applied to a security target once in | security service can only be applied to a security target once in | |||
| a bundle. A security operation is implemented by a security | a bundle. A security operation is implemented by a security | |||
| block. | block. | |||
| Security Service: a process that gives some protection to a security | Security Service: a process that gives some protection to a security | |||
| target. For example, this specification defines security services | target. For example, this specification defines security services | |||
| for plain text integrity (bib-integrity) and authenticated plain | for plaintext integrity (bib-integrity) and authenticated | |||
| text confidentiality with additional authenticated data (bcb- | plaintext confidentiality with additional authenticated data (bcb- | |||
| confidentiality). | confidentiality). | |||
| Security Source: a bundle node that adds a security block to a | Security Source: a bundle node that adds a security block to a | |||
| bundle. Also, the Node ID of that node. | bundle. Also, the node ID of that node. | |||
| Security Target: the block within a bundle that receives a security | Security Target: the block within a bundle that receives a security | |||
| service as part of a security operation. | service as part of a security operation. | |||
| Security Verifier: a bundle node that verifies the correctness of | Security Verifier: a bundle node that verifies the data integrity of | |||
| one or more security blocks in a bundle. Unlike security | one or more security blocks in a bundle. Unlike security | |||
| acceptors, security verifiers do not act as the endpoint of a | acceptors, security verifiers do not act as the endpoint of a | |||
| security service, and they do not remove verified security blocks. | security service, and they do not remove verified security blocks. | |||
| Also, the Node ID of that node. | Also, the node ID of that node. | |||
| 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 that are | that guide design decisions for this specification and that are | |||
| necessary for understanding the format and behavior of the BPSec | necessary for understanding the format and behavior of the BPSec | |||
| protocol. | protocol. | |||
| 2.1. Block-Level Granularity | 2.1. Block-Level Granularity | |||
| skipping to change at line 352 ¶ | skipping to change at line 351 ¶ | |||
| 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) that | 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 be used to | it is recommended that solutions such as bundle encapsulation be used | |||
| 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 will terminate the | intended recipient of the security service and will terminate the | |||
| security service in the bundle. For example, a gateway node could | security service in the bundle. For example, a gateway node could | |||
| determine that, even though it is not the destination of the bundle, | determine that, even though it is not the destination of the bundle, | |||
| it should verify and remove a particular integrity service or attempt | it should verify and remove a particular integrity service or attempt | |||
| to decrypt a confidentiality service, before forwarding the bundle | to decrypt a confidentiality service, before forwarding the bundle | |||
| along 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 | |||
| skipping to change at line 441 ¶ | skipping to change at line 442 ¶ | |||
| 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 or targets have been | * The BCB indicates that the security target or targets have been | |||
| encrypted at the BCB security source in order to protect their | encrypted at the BCB security source in order to protect their | |||
| content while in transit. As a matter of security policy, the BCB | content while in transit. As a matter of security policy, the BCB | |||
| is decrypted by security acceptor nodes in the network, up to and | is decrypted by security acceptor nodes in the network, up to and | |||
| including the bundle destination. BCBs additionally provide | including the bundle destination. BCBs additionally provide | |||
| integrity 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 preexisting 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 | |||
| skipping to change at line 512 ¶ | skipping to change at line 513 ¶ | |||
| 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 coexist 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; | in a BCB is considered part of the confidentiality service; | |||
| therefore, it is unique from the plain text integrity service | therefore, it is unique from the plaintext integrity service | |||
| provided 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 | |||
| skipping to change at line 578 ¶ | skipping to change at line 579 ¶ | |||
| 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 [RFC9171] provides a "Block Number" field | extension block header from [RFC9171] provides a "block number" field | |||
| suitable for this purpose. Therefore, a security target in a | suitable for this purpose. Therefore, a security target in a | |||
| security block MUST be represented as the Block Number of the target | security block MUST be represented as the block number of 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 [RFC9171]. That is, each security block is comprised of the | in [RFC9171]. That is, each security block is comprised of the | |||
| following elements: | following elements: | |||
| * block type code | * block type code | |||
| * block number | * block number | |||
| * block processing control flags | * block processing control flags | |||
| * cyclic redundancy check (CRC) type | * cyclic redundancy check (CRC) type | |||
| * block-type-specific-data | * block-type-specific data | |||
| * CRC field (if present) | * 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 its definition, its processing, and other constraints for | discusses its definition, its processing, and other constraints for | |||
| using 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 Concise Binary Object Representation | SHALL be represented by a Concise Binary Object Representation | |||
| (CBOR) array of data items. Each target within this CBOR array | (CBOR) array of data items. Each target within this CBOR array | |||
| SHALL be represented by a CBOR unsigned integer. This array | SHALL be represented by a CBOR unsigned integer. This array | |||
| MUST have at least one entry and each entry MUST represent the | MUST have at least one entry and each entry MUST represent the | |||
| Block Number of a block that exists in the bundle. There MUST | block number of a block that exists in the bundle. There MUST | |||
| NOT be duplicate entries in this array. The order of elements | NOT be duplicate entries in this array. The order of elements | |||
| in this list has no semantic meaning outside of the context of | in this list has no semantic meaning outside of the context of | |||
| this block. Within the block, the ordering of targets must | this block. Within the block, the ordering of targets must | |||
| match the ordering of 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 | |||
| skipping to change at line 643 ¶ | skipping to change at line 644 ¶ | |||
| 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 bundle node that inserted the | |||
| block in the bundle. This field SHALL be represented by a CBOR | security block in the bundle. Also, the node ID of that node. | |||
| array in accordance with the rules in [RFC9171] for | This field SHALL be represented by a CBOR array in accordance | |||
| representing Endpoint IDs (EIDs). | 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. | |||
| skipping to change at line 706 ¶ | skipping to change at line 708 ¶ | |||
| 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 | |||
| skipping to change at line 739 ¶ | skipping to change at line 741 ¶ | |||
| +----------+----+----------+ +---------------------------+ | +----------+----+----------+ +---------------------------+ | |||
| | 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: | |||
| * 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. | |||
| * 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. | |||
| * 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). | |||
| * 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: | |||
| * 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. | |||
| * 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: | ||||
| * 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 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 either by 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. | |||
| * 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 | |||
| skipping to change at line 871 ¶ | skipping to change at line 874 ¶ | |||
| * 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. | |||
| * 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. | |||
| * 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. | |||
| * 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 | |||
| skipping to change at line 912 ¶ | skipping to change at line 915 ¶ | |||
| An example of a security context can be found in [RFC9173]. | An example of a security context can be found in [RFC9173]. | |||
| 3.11. BPSec Block Examples | 3.11. BPSec Block Examples | |||
| This section provides two examples of BPSec blocks applied to | This section provides two examples of BPSec blocks applied to | |||
| bundles. 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 | primary block (B1), two extension blocks (B4, B5), and a payload | |||
| block (B6). The bundle source wishes to provide an integrity | block (B6). The bundle source wishes to provide an integrity | |||
| signature of the plain text associated with the primary block, the | signature of the plaintext associated with the primary block, the | |||
| second extension block, and the payload. The bundle source also | second extension block, and the payload. The bundle source also | |||
| wishes to provide confidentiality for the first extension block. The | wishes to provide confidentiality for the first extension block. The | |||
| resultant bundle is illustrated in Figure 3 and the security actions | resultant bundle is illustrated in Figure 3 and the security actions | |||
| are described below. | are described below. | |||
| Block in Bundle ID | Block in Bundle ID | |||
| +==========================================+====+ | +==========================================+====+ | |||
| | Primary Block | B1 | | | Primary Block | B1 | | |||
| +------------------------------------------+----+ | +------------------------------------------+----+ | |||
| | BIB | B2 | | | BIB | B2 | | |||
| skipping to change at line 950 ¶ | skipping to change at line 953 ¶ | |||
| +------------------------------------------+----+ | +------------------------------------------+----+ | |||
| | 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. | |||
| * 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. | |||
| * 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 | |||
| skipping to change at line 1010 ¶ | skipping to change at line 1013 ¶ | |||
| | 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. | |||
| * 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. | ||||
| * Now that there is no longer confusion about 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 line 1047 ¶ | skipping to change at line 1049 ¶ | |||
| 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 [RFC9171] | The canonical form of the primary block is as specified in [RFC9171] | |||
| with the following constraint. | with the following constraint. | |||
| * 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 [RFC9171] with the following | canonicalized as specified in [RFC9171] with the following | |||
| constraints. | constraints. | |||
| * 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]. | |||
| * 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. | ||||
| * 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 | |||
| skipping to change at line 1129 ¶ | skipping to change at line 1132 ¶ | |||
| 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 | other than the payload block cannot be decrypted, then the associated | |||
| target and all security blocks associated with that target MUST be | security target and all security blocks associated with that target | |||
| discarded and processed no further. In both cases, requested status | MUST be discarded and processed no further. In both cases, requested | |||
| reports (see [RFC9171]) MAY be generated to reflect bundle or block | status reports (see [RFC9171]) MAY be generated to reflect bundle or | |||
| 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 a different | block-type-specific data fields. If the plaintext is of a different | |||
| size than the cipher text, the framing of the CBOR byte string of | size than the ciphertext, the framing of the CBOR byte string of this | |||
| this field must be updated to ensure this field remains a valid CBOR | field must be updated to ensure this field remains a valid CBOR byte | |||
| 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 line 1186 ¶ | skipping to change at line 1189 ¶ | |||
| 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 with | 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 [RFC9171] MUST be followed. As defined there and | rules described in [RFC9171] MUST be followed. As defined there and | |||
| summarized here for completeness, only the payload block can be | summarized here for completeness, only the payload block can be | |||
| fragmented; security blocks, like all extension blocks, can never be | fragmented; security blocks, like all extension blocks, can 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 exists a myriad of ways to establish, communicate, and | There exists a myriad of ways to establish, communicate, and | |||
| otherwise manage key information in a DTN. Certain DTN deployments | otherwise manage key information in DTN. Certain DTN deployments | |||
| might follow established protocols for key management, whereas other | might follow established protocols for key management, whereas other | |||
| DTN deployments might require new and novel approaches. BPSec | DTN deployments might require new and novel approaches. BPSec | |||
| assumes that key management is handled as a separate part of network | assumes that key management is handled as a separate part of network | |||
| management; this specification neither defines nor requires a | management; this specification neither defines nor requires a | |||
| specific strategy for key management. | 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, | |||
| skipping to change at line 1256 ¶ | skipping to change at line 1259 ¶ | |||
| information related to the bundle. | information related to the bundle. | |||
| * 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 take | associated BPSec blocks, replace the security operation, or take | |||
| some other action. | some other action. | |||
| * 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 | |||
| be 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 | deviation can be justified -- such as when doing so causes | |||
| causes downstream errors when processing blocks whose contents | downstream errors when processing blocks whose contents must be | |||
| must be inspected or changed at one or more hops along the path. | inspected or changed at one or more hops along the path. | |||
| * 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). | |||
| * 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 | |||
| that computes a plain text integrity-protection mechanism that | that computes a plaintext integrity-protection mechanism 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 may be 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. | |||
| * 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. | |||
| * When the report-to address is verified as unchanged from the | * When the report-to address is verified as unchanged from the | |||
| skipping to change at line 1394 ¶ | skipping to change at line 1396 ¶ | |||
| 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; therefore, it 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 that 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 noncooperative 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 that are differentiated based on their access to | network. There are three classes of OPA nodes that are | |||
| cryptographic material: | differentiated based on their access to cryptographic material: | |||
| Unprivileged Node: Olive has not been provisioned within the secure | Unprivileged Node: Olive has not been provisioned within the secure | |||
| environment and only has access to cryptographic material that has | environment and only has access to cryptographic material that has | |||
| been publicly shared. | been publicly shared. | |||
| Legitimate Node: Olive is within the secure environment; therefore, | Legitimate Node: Olive is within the secure environment; therefore, | |||
| Olive has access to cryptographic material that has been | Olive has access to cryptographic material that has been | |||
| provisioned to Olive (i.e., K_M) as well as material that has been | provisioned to Olive (i.e., K_M) as well as material that has been | |||
| publicly shared. | publicly shared. | |||
| Privileged Node: Olive is a privileged node within the secure | Privileged Node: Olive is a privileged node within the secure | |||
| environment; therefore, Olive has access to cryptographic material | environment; therefore, Olive has access to cryptographic material | |||
| that 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 that 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 line 1457 ¶ | skipping to change at line 1460 ¶ | |||
| 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, the implication is that long-lived bundles store | Additionally, the implication is that long-lived bundles store | |||
| information within that remains relevant and sensitive for long | information within that remains relevant and sensitive for long | |||
| enough that, once captured, there is sufficient time to crack | enough that, once captured, there is sufficient time to crack | |||
| encryption associated with the bundle. If a bundle does persist on | encryption associated with the bundle. If a bundle does persist on | |||
| the network for years and the cipher suite used for a BCB provides | the network for years and the cipher suite used for a BCB provides | |||
| inadequate protection, Olive may be able to recover the protected | inadequate protection, Olive may be able to recover the protected | |||
| data either before that bundle reaches its intended destination or | data either before that bundle reaches its intended destination or | |||
| skipping to change at line 1479 ¶ | skipping to change at line 1482 ¶ | |||
| sensitive. | 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 [RFC9171]. Olive will be able to | or block processing control flags as defined in [RFC9171]. Olive | |||
| undertake activities including 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 that 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 | If Olive removes both a BCB (or BIB) and its security target, there | |||
| is no evidence left in the bundle of the security operation. | is no evidence left in the bundle of the security operation. | |||
| Similarly, if Olive removes the BIB, but not the security target, | Similarly, if Olive removes the BIB, but not the security target, | |||
| there is no evidence left in the bundle of the security operation. | there is no evidence left in the bundle of the security operation. | |||
| In each of these cases, the implementation of BPSec must be combined | In each of these cases, the implementation of BPSec must be combined | |||
| with policy configuration at endpoints in the network that describe | with policy configuration at endpoints in the network that describe | |||
| the expected and required security operations that must be applied on | the expected and required security operations that must be applied on | |||
| transmission and that are expected to be present on receipt. This or | transmission and that are expected to be present on receipt. This or | |||
| other similar out-of-band information is required to correct for | other similar out-of-band information is required to correct for | |||
| removal of security information in the bundle. | removal of security information in the bundle. | |||
| A limitation of the BIB may exist within the implementation of BIB | A limitation of the BIB may exist within the implementation of BIB | |||
| validation at the destination node. If 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, the BCB should require an | entity. In order to provide verifiable integrity checks, the BCB | |||
| encryption scheme that is Indistinguishable under adaptive Chosen | should require an encryption scheme that is Indistinguishable under | |||
| Ciphertext Attack (IND-CCA2) secure. Such an encryption scheme will | adaptive Chosen Ciphertext Attack (IND-CCA2) secure. Such an | |||
| guard against signature substitution attempts by Olive. In this | encryption scheme will guard against signature substitution attempts | |||
| case, Alice creates a BIB with the protected data block as the | by Olive. In this case, Alice creates a BIB with the protected data | |||
| security target and then creates a BCB with both the BIB and | block as the security target and then creates a BCB with both the BIB | |||
| protected data 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 an 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 rerouting the packets throughout the network are | Attacks that involve rerouting the bundles throughout the network are | |||
| essentially a special case of the modification attacks described in | essentially a special case of the modification attacks described in | |||
| this section, one 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 details of any such mitigation | manipulating primary block data. The details of any such mitigation | |||
| technique are specific to the implementation of the deploying network | technique are specific to the implementation of the deploying network | |||
| and are 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 be either 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, | Bundle Protocol, BPSec, or other bundle-related protocols. With | |||
| Olive's objectives may vary, but may be targeting either the Bundle | these attacks, Olive's objectives may vary, but may be targeting | |||
| Protocol or application-layer protocols conveyed by the Bundle | either the Bundle Protocol or application-layer protocols conveyed by | |||
| Protocol. The target could also be the storage and compute of the | the Bundle Protocol. The target could also be the storage and | |||
| nodes running the bundle or application-layer protocols (e.g., a | computing capabilities of the nodes running the bundle or | |||
| denial of service to flood on the storage of the store-and-forward | application-layer protocols (e.g., a denial of service to flood on | |||
| mechanism or a compute that would process the packets and perhaps | the storage of the store-and-forward mechanism or a computation that | |||
| prevent other 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 be protected with a | mechanisms to assert data uniqueness and then be protected with a | |||
| BIB, 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 | Similarly, additional blocks, such as the Bundle Age, may be signed | |||
| and 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 | |||
| skipping to change at line 1610 ¶ | skipping to change at line 1614 ¶ | |||
| 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 happen 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 they could be required by any | over the terrestrial Internet, and they could be required by any | |||
| BPSec 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 BP | context(s) defined in IETF Standards Track RFCs. As of this writing, | |||
| mandatory security context is specified in [RFC9173], but the | that BP mandatory security context is specified in [RFC9173], but the | |||
| mandatory security context(s) might change over time in accordance | mandatory security context(s) might change over time in accordance | |||
| with usual IETF processes. Such changes are likely to occur in the | with usual IETF processes. Such changes are likely to occur in the | |||
| future if/when flaws are discovered in the applicable cryptographic | future if/when flaws are discovered in the applicable cryptographic | |||
| algorithms, for example. | algorithms, for example. | |||
| Additionally, BPSec implementations need to support the security | Additionally, BPSec implementations need to support the security | |||
| contexts that 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 between 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 | |||
| skipping to change at line 1699 ¶ | skipping to change at line 1703 ¶ | |||
| 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 DTNs can vary substantially. Developers should consider these | of DTNs can vary substantially. Developers should consider these | |||
| conditions to better describe the conditions in which those contexts | conditions to better describe the conditions in which those contexts | |||
| will operate or exhibit vulnerability, and selection of these | will operate or exhibit vulnerability, and selection of these | |||
| contexts for implementation should be made with consideration for | contexts for implementation should be made with consideration for | |||
| this reality. There are key differences that may limit the | this reality. There are key differences that may limit the | |||
| opportunity for a security context to leverage existing cipher suites | opportunity for a security context to leverage existing cipher suites | |||
| and technologies that have been developed for use in traditional, | and technologies that have been developed for use in more reliable | |||
| more reliable networks: | networks: | |||
| Data Lifetime: Depending on the application environment, bundles may | Data Lifetime: Depending on the application environment, bundles may | |||
| persist on the network for extended periods of time, perhaps even | persist on the network for extended periods of time, perhaps 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. | |||
| 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 | |||
| skipping to change at line 1736 ¶ | skipping to change at line 1740 ¶ | |||
| parameter Ids, the data types of those parameters, and their CBOR | parameter Ids, the data types of those parameters, and their CBOR | |||
| encoding. | encoding. | |||
| 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. | |||
| New Canonicalizations: Security contexts may define new | New Canonicalizations: Security contexts may define new | |||
| canonicalization algorithms as necessary. | canonicalization algorithms as necessary. | |||
| 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. | |||
| 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. | |||
| Handling CRC Fields: Security contexts may include algorithms that | Handling CRC Fields: Security contexts may include algorithms that | |||
| alter the contexts of their security target block, such as the | alter the contexts of their security target block, such as 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 coexist 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. | |||
| * OSBs MUST NOT reuse any enumerations identified in this | * OSBs MUST NOT reuse any enumerations identified in this | |||
| specification, to include the block type codes for BIB and BCB. | specification, to include the block type codes for BIB and BCB. | |||
| * 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. | |||
| * 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. | |||
| * 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. | |||
| * 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. | |||
| * 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, | |||
| skipping to change at line 1825 ¶ | skipping to change at line 1829 ¶ | |||
| 11. IANA Considerations | 11. IANA Considerations | |||
| This specification includes fields that require 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]. | |||
| +=======+=============================+===============+ | +=======+=======================+===============+ | |||
| | Value | Description | Reference | | | Value | Description | Reference | | |||
| +=======+=============================+===============+ | +=======+=======================+===============+ | |||
| | 11 | Block Integrity Block | This document | | | 11 | Block Integrity | This document | | |||
| +-------+-----------------------------+---------------+ | +-------+-----------------------+---------------+ | |||
| | 12 | Block Confidentiality Block | This document | | | 12 | Block Confidentiality | This document | | |||
| +-------+-----------------------------+---------------+ | +-------+-----------------------+---------------+ | |||
| Table 2: Additional Entries for the "Bundle Block | Table 2: Additional Entries for the "Bundle | |||
| Type" Registry | Block Type" Registry | |||
| The "Bundle Block Types" registry 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]. | |||
| +============+=======+============================+================+ | +============+=======+============================+================+ | |||
| | BP Version | Value | Description | Reference | | | BP Version | Value | Description | Reference | | |||
| +============+=======+============================+================+ | +============+=======+============================+================+ | |||
| | 7 | 12 | Missing Security Operation | This document, | | | 7 | 12 | Missing security operation | This document, | | |||
| | | | | Section 7.1 | | | | | | Section 7.1 | | |||
| +------------+-------+----------------------------+----------------+ | +------------+-------+----------------------------+----------------+ | |||
| | 7 | 13 | Unknown Security Operation | This document, | | | 7 | 13 | Unknown security operation | This document, | | |||
| | | | | Section 7.1 | | | | | | Section 7.1 | | |||
| +------------+-------+----------------------------+----------------+ | +------------+-------+----------------------------+----------------+ | |||
| | 7 | 14 | Unexpected Security | This document, | | | 7 | 14 | Unexpected security | This document, | | |||
| | | | Operation | Section 7.1 | | | | | operation | Section 7.1 | | |||
| +------------+-------+----------------------------+----------------+ | +------------+-------+----------------------------+----------------+ | |||
| | 7 | 15 | Failed Security Operation | This document, | | | 7 | 15 | Failed security operation | This document, | | |||
| | | | | Section 7.1 | | | | | | Section 7.1 | | |||
| +------------+-------+----------------------------+----------------+ | +------------+-------+----------------------------+----------------+ | |||
| | 7 | 16 | Conflicting Security | This document, | | | 7 | 16 | Conflicting security | This document, | | |||
| | | | Operation | Section 7.1 | | | | | operation | Section 7.1 | | |||
| +------------+-------+----------------------------+----------------+ | +------------+-------+----------------------------+----------------+ | |||
| Table 3: Additional Entries for the "Bundle Status Report Reason | Table 3: Additional Entries for the "Bundle Status Report Reason | |||
| Codes" Registry | Codes" Registry | |||
| 11.3. Security Context Identifiers | 11.3. Security Context Identifiers | |||
| BPSec has a Security Context Identifier field for which IANA has | BPSec has a Security Context Identifier field for which IANA has | |||
| created a new registry named "BPSec Security Context Identifiers". | created a new registry named "BPSec Security Context Identifiers". | |||
| Initial values for this registry are given below. | Initial values for this registry are given below. | |||
| skipping to change at line 1930 ¶ | skipping to change at line 1934 ¶ | |||
| [RFC9171] Burleigh, S., Fall, K., and E. Birrane, III, "Bundle | [RFC9171] Burleigh, S., Fall, K., and E. Birrane, III, "Bundle | |||
| Protocol Version 7", RFC 9171, DOI 10.17487/RFC9171, | Protocol Version 7", RFC 9171, DOI 10.17487/RFC9171, | |||
| November 2021, <https://www.rfc-editor.org/info/rfc9171>. | November 2021, <https://www.rfc-editor.org/info/rfc9171>. | |||
| [RFC9173] Birrane, III, E., "BPSec Default Security Contexts", | [RFC9173] Birrane, III, E., "BPSec Default Security Contexts", | |||
| RFC 9173, DOI 10.17487/RFC9173, November 2021, | RFC 9173, DOI 10.17487/RFC9173, November 2021, | |||
| <https://www.rfc-editor.org/info/rfc9173>. | <https://www.rfc-editor.org/info/rfc9173>. | |||
| 12.2. Informative References | 12.2. Informative References | |||
| [DTN-SBSP] Birrane, E., Pierce-Mayer, J., and D. Iannicca, | ||||
| "Streamlined Bundle Security Protocol Specification", Work | ||||
| in Progress, Internet-Draft, draft-birrane-dtn-sbsp-01, 16 | ||||
| October 2015, <https://datatracker.ietf.org/doc/html/ | ||||
| draft-birrane-dtn-sbsp-01>. | ||||
| [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>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| Acknowledgements | 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 Physics Laboratory | The Johns Hopkins University Applied Physics Laboratory | |||
| 11100 Johns Hopkins Rd. | 11100 Johns Hopkins Rd. | |||
| Laurel, MD 20723 | Laurel, MD 20723 | |||
| United States of America | United States of America | |||
| Phone: +1 443 778 7423 | Phone: +1 443 778 7423 | |||
| End of changes. 118 change blocks. | ||||
| 330 lines changed or deleted | 332 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/ | ||||