| rfc9172xml2.original.xml | rfc9172.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| <!ENTITY RFC4838 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | <!DOCTYPE rfc [ | |||
| .4838.xml"> | <!ENTITY nbsp " "> | |||
| <!ENTITY RFC6257 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | <!ENTITY zwsp "​"> | |||
| .6257.xml"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | <!ENTITY wj "⁠"> | |||
| .8174.xml"> | ||||
| <!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .3552.xml"> | ||||
| <!ENTITY RFC8949 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .8949.xml"> | ||||
| <!ENTITY RFC6255 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .6255.xml"> | ||||
| <!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .2119.xml"> | ||||
| ]> | ]> | |||
| <?rfc toc="yes"?> | ||||
| <!-- generate a table of contents --> | ||||
| <?rfc symrefs="yes"?> | ||||
| <!-- use anchors instead of numbers for references --> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <!-- alphabetize the references --> | ||||
| <?rfc compact="yes" ?> | ||||
| <!-- conserve vertical whitespace --> | ||||
| <?rfc subcompact="no" ?> | ||||
| <!-- but keep a blank line between list items --> | ||||
| <rfc category="std" docName="draft-ietf-dtn-bpsec-27" ipr="trust200902" | ||||
| obsoletes="" submissionType="IETF" updates="" xml:lang="en"> | ||||
| <front> | ||||
| <title>Bundle Protocol Security Specification</title> | ||||
| <author fullname="Edward J. Birrane, III" initials="E.J." | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-dtn-bpsec-27 | |||
| surname="Birrane"> | " number="9172" ipr="trust200902" obsoletes="" submissionType="IETF" category="s | |||
| <organization abbrev="JHU/APL">The Johns Hopkins University Applied | td" | |||
| consensus="true" updates="" xml:lang="en" tocInclude="true" symRefs="true" | ||||
| sortRefs="true" version="3"> | ||||
| <!-- xml2rfc v2v3conversion 3.6.0 --> | ||||
| <front> | ||||
| <title>Bundle Protocol Security (BPSec)</title> | ||||
| <seriesInfo name="RFC" value="9172"/> | ||||
| <author fullname="Edward J. Birrane, III" initials="E" surname="Birrane, III | ||||
| "> | ||||
| <organization abbrev="JHU/APL">The Johns Hopkins University Applied | ||||
| Physics Laboratory</organization> | Physics Laboratory</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>11100 Johns Hopkins Rd.</street> | <street>11100 Johns Hopkins Rd.</street> | |||
| <city>Laurel</city> | <city>Laurel</city> | |||
| <region>MD</region> | <region>MD</region> | |||
| <code>20723</code> | <code>20723</code> | |||
| <country>US</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <phone>+1 443 778 7423</phone> | <phone>+1 443 778 7423</phone> | |||
| <email>Edward.Birrane@jhuapl.edu</email> | <email>Edward.Birrane@jhuapl.edu</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Kenneth McKeever" initials="K" surname="McKeever"> | ||||
| <author fullname="Kenneth McKeever" initials="K.R." | <organization abbrev="JHU/APL">The Johns Hopkins University Applied | |||
| surname="McKeever"> | ||||
| <organization abbrev="JHU/APL">The Johns Hopkins University Applied | ||||
| Physics Laboratory</organization> | Physics Laboratory</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>11100 Johns Hopkins Rd.</street> | <street>11100 Johns Hopkins Rd.</street> | |||
| <city>Laurel</city> | <city>Laurel</city> | |||
| <region>MD</region> | <region>MD</region> | |||
| <code>20723</code> | <code>20723</code> | |||
| <country>US</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <phone>+1 443 778 2237</phone> | <phone>+1 443 778 2237</phone> | |||
| <email>Ken.McKeever@jhuapl.edu</email> | <email>Ken.McKeever@jhuapl.edu</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="January" year="2022"/> | ||||
| <date month="February" day="15" year="2021"/> | ||||
| <!-- Meta-data --> | ||||
| <area>General</area> | <area>General</area> | |||
| <workgroup>Delay-Tolerant Networking</workgroup> | ||||
| <workgroup>Delay-Tolerant Networking</workgroup> | <keyword>security</keyword> | |||
| <keyword>bundle</keyword> | ||||
| <keyword>security</keyword> | <keyword>integrity</keyword> | |||
| <keyword>bundle</keyword> | <keyword>confidentiality</keyword> | |||
| <keyword>integrity</keyword> | <abstract> | |||
| <keyword>confidentiality</keyword> | <t> | |||
| <abstract> | ||||
| <t> | ||||
| This document defines a security protocol providing data | This document defines a security protocol providing data | |||
| integrity and confidentiality services for the Bundle Protocol. | integrity and confidentiality services for the Bundle Protocol (BP). | |||
| </t> | </t> | |||
| </abstract> | ||||
| </abstract> | </front> | |||
| </front> | <middle> | |||
| <section anchor="intro" toc="default" numbered="true"> | ||||
| <middle> | <name>Introduction</name> | |||
| <t> | ||||
| <section anchor="intro" title="Introduction" toc="default"> | ||||
| <t> | ||||
| This document defines security features for the Bundle Protocol | This document defines security features for the Bundle Protocol | |||
| (BP) <xref target="I-D.ietf-dtn-bpbis"/> and is intended for use | (BP) <xref target="RFC9171" format="default"/> and is intended for use | |||
| in Delay Tolerant Networks (DTNs) to provide security | in Delay-Tolerant Networking (DTN) to provide security | |||
| services between a security source and a security acceptor. When the | services between a security source and a security acceptor. When the | |||
| security source is the bundle source and when the security acceptor is | security source is the bundle source and the security acceptor is | |||
| the bundle destination, the security service provides end-to-end | the bundle destination, the security service provides end-to-end | |||
| protection. | protection. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | The Bundle Protocol specification <xref target="RFC9171" format="default"/ | |||
| The Bundle Protocol specification <xref target="I-D.ietf-dtn-bpbis"/> | > | |||
| defines DTN as referring to "a networking architecture providing | defines DTN as referring to "a network architecture providing | |||
| communications in and/or through highly stressed environments" | communications in and/or through highly stressed environments" | |||
| where "BP may be viewed as sitting at the application layer of some | where "BP may be viewed as sitting at the application layer of some | |||
| number of constituent networks, forming a store-carry-forward | number of constituent networks, forming a store-carry-forward | |||
| overlay network". The term "stressed" environment refers to multiple | overlay network". The phrase "stressed environment" refers to multiple | |||
| challenging conditions including intermittent connectivity, large | challenging conditions including intermittent connectivity, large | |||
| and/or variable delays, asymmetric data rates, and high bit error | and/or variable delays, asymmetric data rates, and high bit error | |||
| rates. | rates. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | It should be presumed that the BP will be deployed in an untrusted | |||
| It should be presumed that the BP will be deployed such that the network c | network, which poses the usual security challenges | |||
| annot | related to confidentiality and integrity. However, the stressed nature of the | |||
| be trusted, posing the usual security challenges related to | BP | |||
| confidentiality and integrity. However, the stressed nature of the BP | ||||
| operating environment imposes unique conditions where usual transport | operating environment imposes unique conditions where usual transport | |||
| security mechanisms may not be sufficient. For example, the | security mechanisms may not be sufficient. For example, the | |||
| store-carry-forward nature of the network may require protecting | store-carry-forward nature of the network may require protecting | |||
| data at rest, preventing unauthorized consumption of critical | data at rest, preventing unauthorized consumption of critical | |||
| resources such as storage space, and operating without regular | resources such as storage space, and operating without regular | |||
| contact with a centralized security oracle (such as a certificate | contact with a centralized security oracle (such as a certificate | |||
| authority). | authority). | |||
| </t> | </t> | |||
| <t> | ||||
| An end-to-end security service is needed that operates in all of the | ||||
| environments where the BP operates. | ||||
| </t> | ||||
| <section anchor="sup_sec_svc" title="Supported Security Services"> | ||||
| <t> | <t> | |||
| An end-to-end security service that operates in all of the | ||||
| environments where the BP operates is needed. | ||||
| </t> | ||||
| <section anchor="sup_sec_svc" numbered="true" toc="default"> | ||||
| <name>Supported Security Services</name> | ||||
| <t> | ||||
| BPSec provides integrity and confidentiality | BPSec provides integrity and confidentiality | |||
| services for BP bundles, as defined in this section. | services for BP bundles, as defined in this section. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Integrity services ensure that changes to target data | Integrity services ensure that changes to target data | |||
| within a bundle can be discovered. Data changes | within a bundle can be discovered. Data changes | |||
| may be caused by processing errors, environmental conditions, | may be caused by processing errors, environmental conditions, | |||
| or intentional manipulation. In the context of BPSec, integrity | or intentional manipulation. In the context of BPSec, integrity | |||
| services apply to plain text in the bundle. | services apply to plaintext in the bundle. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| Confidentiality services ensure that target data is unintelligible | Confidentiality services ensure that target data is unintelligible | |||
| to nodes in the DTN, except for authorized nodes possessing | to nodes in DTN, except for authorized nodes possessing | |||
| special information. This generally means producing cipher text from | special information. Generally, this means producing ciphertext from | |||
| plain text and generating authentication information for that | plaintext and generating authentication information for that | |||
| cipher text. Confidentiality, in this context, applies | ciphertext. In this context, confidentiality applies | |||
| to the contents of target data and does not extend to hiding | to the contents of target data and does not extend to hiding | |||
| the fact that confidentiality exists in the bundle. | the fact that confidentiality exists in the bundle. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| 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: | |||
| <list style="numbers"> | </t> | |||
| <t> | <ol spacing="normal" type="1"><li> | |||
| The term "hop-by-hop" is ambiguous in a BP overlay, as nodes | The term "hop-by-hop" is ambiguous in a BP overlay, as nodes | |||
| that are adjacent in the overlay may not be adjacent in | that are adjacent in the overlay may not be adjacent in | |||
| physical connectivity. This condition is difficult or | physical connectivity. This condition is difficult or | |||
| impossible to detect and therefore hop-by-hop authentication is | impossible to detect; therefore, hop-by-hop authentication is | |||
| difficult or impossible to enforce. | difficult or impossible to enforce. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| Hop-by-hop authentication cannot be deployed in a network if adja cent | Hop-by-hop authentication cannot be deployed in a network if adja cent | |||
| nodes in the network have incompatible security capabilities. | nodes in the network have incompatible security capabilities. | |||
| </t> | </li> | |||
| </list> | </ol> | |||
| </t> | </section> | |||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Specification Scope</name> | ||||
| <section title="Specification Scope"> | <t> | |||
| <t> | ||||
| 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 | This includes the data specification for representing these | |||
| services as BP extension blocks, and the rules for adding, | services as BP extension blocks and the rules for adding, | |||
| removing, and processing these blocks at various points during | removing, and processing these blocks at various points during | |||
| the bundle's traversal of the DTN. | the bundle's traversal of a delay-tolerant network. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| BPSec addresses only the security of data traveling over the | BPSec addresses only the security of data traveling over the | |||
| DTN, not the underlying DTN itself. Furthermore, while the BPSec | DTN, not the underlying DTN itself. Furthermore, while the BPSec | |||
| protocol can provide security-at-rest in a store-carry-forward | protocol can provide security-at-rest in a store-carry-forward | |||
| network, it does not address threats which share computing resources | network, it does not address threats that share computing resources | |||
| with the DTN and/or BPSec software implementations. These threats | with the DTN and/or BPSec software implementations. These threats | |||
| may be malicious software or compromised libraries which intend | may be malicious software or compromised libraries that intend | |||
| to intercept data or recover cryptographic material. Here, it is | to intercept data or recover cryptographic material. Here, it is | |||
| the responsibility of the BPSec implementer to ensure that any | the responsibility of the BPSec implementer to ensure that any | |||
| cryptographic material, including shared secret or private keys, | cryptographic material, including shared secrets or private keys, | |||
| is protected against access within both memory and storage devices. | is protected against access within both memory and storage devices. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | Completely trusted networks are extremely uncommon. Among | |||
| Completely trusted networks are extremely | untrusted networks, different networking conditions and | |||
| uncommon. Amongst untrusted networks, different networking conditions a | operational considerations require security mechanisms of | |||
| nd | varying strengths. | |||
| operational considerations require varying strengths of security | Mandating a single security context, which is a set of assumptions, | |||
| mechanism. Mandating a single security context may result in too much s | algorithms, configurations, and policies used to implement security | |||
| ecurity | services, may result in too much security for some networks and too | |||
| for some networks and too little security in others. It is expected tha | little security in others. Default security contexts are | |||
| t separate | defined in <xref target="RFC9173" format="default"/> to provide basic securit | |||
| documents define different security contexts for use in different netwo | y services for | |||
| rks. | interoperability testing and for operational use on the terrestrial | |||
| A set of default security contexts are defined in (<xref target="I-D.ie | Internet. It is expected that separate documents will define | |||
| tf-dtn-bpsec-default-sc"/>) | different security contexts for use in different networks. | |||
| and provide basic security services for interoperability | </t> | |||
| testing and for operational use on the terrestrial Internet. | <t> | |||
| </t> | ||||
| <t> | ||||
| This specification addresses neither the fitness of | This specification addresses neither the fitness of | |||
| externally-defined cryptographic methods nor the security of | externally defined cryptographic methods nor the security of | |||
| their implementation. | their implementation. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| This specification does not address the implementation of | This specification does not address the implementation of | |||
| security policy and does not provide a security policy for the | security policies and does not provide a security policy for the | |||
| BPSec. Similar to cipher suites, security policies are based on | BPSec. Similar to cipher suites, security policies are based on | |||
| the nature and capabilities of individual networks and network | the nature and capabilities of individual networks and network | |||
| operational concepts. This specification does provide policy | operational concepts. This specification does provide policy considerat | |||
| considerations when building a security policy. | ions that | |||
| </t> | can be taken into account when building a security policy. | |||
| </t> | ||||
| <t> | <t> | |||
| With the exception of the Bundle Protocol, this specification | With the exception of the Bundle Protocol, this specification | |||
| does not address how to combine the BPSec security blocks with | does not address how to combine the BPSec security blocks with | |||
| other protocols, other BP extension blocks, or other best | other protocols, other BP extension blocks, or other best | |||
| practices to achieve security in any particular network | practices to achieve security in any particular network | |||
| implementation. | implementation. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section anchor="reldoc" toc="default" numbered="true"> | |||
| <name>Related Documents</name> | ||||
| <section anchor="reldoc" title="Related Documents" toc="default"> | <t> | |||
| <t> | ||||
| This document is best read and understood within the context of | This document is best read and understood within the context of | |||
| the following other DTN documents: | the following other DTN documents: | |||
| </t> | </t> | |||
| <ul> | ||||
| <t> | <li>"<xref target="RFC4838" format="title"/>" <xref target="RFC4838" fo | |||
| "Delay-Tolerant Networking Architecture" <xref target="RFC4838"/> | rmat="default"/> | |||
| defines the architecture for DTNs and identifies certain security | defines the architecture for DTN and identifies certain security | |||
| assumptions made by existing Internet protocols that are not valid in | assumptions made by existing Internet protocols that are not valid in | |||
| a DTN. | DTN. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | "<xref target="RFC9171" format="title"/>" <xref target="RFC9171" format | |||
| The Bundle Protocol <xref target="I-D.ietf-dtn-bpbis"/> defines | ="default"/> defines | |||
| the format and processing of bundles, defines the extension | the format and processing of bundles, the extension | |||
| block format used to represent BPSec security blocks, and defines | block format used to represent BPSec security blocks, and | |||
| the canonical block structure used by this specification. | the canonical block structure used by this specification. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | "<xref target="RFC8949" format="title"/>" <xref target="RFC8949" format | |||
| The Concise Binary Object Representation (CBOR) format <xref target="RF | ="default"/> | |||
| C8949"/> | ||||
| defines a data format that allows for small code size, fairly small | defines a data format that allows for small code size, fairly small | |||
| message size, and extensibility without version negotiation. The | message size, and extensibility without version negotiation. The | |||
| block-specific-data associated with BPSec security blocks are encoded | block-type-specific data associated with BPSec security blocks is encod ed | |||
| in this data format. | in this data format. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | "<xref target="RFC6257" format="title"/>" <xref target="RFC6257" format | |||
| The Bundle Security Protocol <xref target="RFC6257"/> and | ="default"/> | |||
| Streamlined Bundle Security Protocol | introduces the | |||
| <xref target="I-D.birrane-dtn-sbsp"/> documents introduced the | concept of using BP extension blocks for security services | |||
| concepts of using BP extension blocks for security services | in DTN. BPSec is a continuation and refinement of this | |||
| in a DTN. The BPSec is a continuation and refinement of these | document. | |||
| documents. | </li> | |||
| </t> | </ul> | |||
| </section> | </section> | |||
| <section anchor="term" toc="default" numbered="true"> | ||||
| <section anchor="term" title="Terminology" toc="default"> | <name>Terminology</name> | |||
| <t> | <t> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14 | |||
| NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | >REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| "MAY", and "OPTIONAL" in this document are to be interpreted as | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<b | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> w | cp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| hen, and only when, they | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document ar | |||
| e to be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119" format="default"/> <xre | ||||
| f target="RFC8174" format="default"/> when, and only when, they | ||||
| appear in all capitals, as shown here. | appear in all capitals, as shown here. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | This section defines terminology that either is unique to the BPSec or | |||
| This section defines terminology either unique to the BPSec or | is necessary for understanding the concepts defined in | |||
| otherwise necessary for understanding the concepts defined in | ||||
| this specification. | this specification. | |||
| <list style="symbols"> | </t> | |||
| <dl spacing="normal"> | ||||
| <t> | <dt>Bundle Destination:</dt><dd>the Bundle Protocol Agent (BPA) | |||
| Bundle Destination - the node which receives a bundle and deliver | that receives a bundle and delivers the payload of the bundle | |||
| s | to an Application Agent. Also, an endpoint comprising the | |||
| the payload of the bundle to an application. Also, the Node ID of | node(s) at which the bundle is to be delivered. The bundle | |||
| the Bundle Protocol Agent (BPA) receiving the bundle. The bundle | destination acts as the security acceptor for every security | |||
| destination acts as | target in every security block in every bundle it receives. | |||
| the security acceptor for every security target in every | </dd> | |||
| security block in every bundle it receives. | <dt>Bundle Source:</dt><dd>the BPA that originates a | |||
| </t> | bundle. Also, any node ID of the node of which the BPA is a | |||
| component. | ||||
| <t> | </dd> | |||
| Bundle Source - the node which originates a bundle. Also, the | <dt>Cipher Suite:</dt><dd>a set of one or more algorithms | |||
| Node ID of the BPA originating the bundle. | providing integrity and/or confidentiality services. Cipher | |||
| </t> | suites may define user parameters (e.g., secret keys to | |||
| use), but they do not provide values for those parameters. | ||||
| <t> | </dd> | |||
| Cipher Suite - a set of one or more algorithms providing | <dt>Forwarder:</dt><dd>any BPA that transmits a bundle in | |||
| integrity and/or confidentiality services. Cipher suites may defi | DTN. Also, any node ID of the node of which the BPA that | |||
| ne | sent the bundle on its most recent hop is a component. | |||
| user parameters (e.g. secret keys to use) but do not provide valu | </dd> | |||
| es for | <dt>Intermediate Receiver, Waypoint, or Next | |||
| those parameters. | Hop:</dt><dd>any BPA that receives a bundle from a | |||
| </t> | forwarder that is not the bundle destination. Also, any node | |||
| ID of the node of which the BPA is a component. | ||||
| <t> | </dd> | |||
| Forwarder - any node that transmits a bundle in the DTN. | <dt>Path:</dt><dd>the ordered sequence of nodes through | |||
| Also, the Node ID of the BPA that sent | which a bundle passes on its way from source to | |||
| the bundle on its most recent hop. | destination. The path is not necessarily known in advance by | |||
| </t> | the bundle or any BPAs in DTN. | |||
| </dd> | ||||
| <t> | <dt>Security Acceptor:</dt><dd>a BPA that processes | |||
| Intermediate Receiver, Waypoint, or Next Hop - any node | and dispositions one or more security blocks in a bundle. | |||
| that receives a bundle from a Forwarder that is not the | Security acceptors act as the endpoint of a security service | |||
| Bundle Destination. Also, the Node ID of the BPA at any such node | represented in a security block. They remove the security | |||
| . | blocks they act upon as part of processing and disposition. | |||
| </t> | Also, any node ID of the node of which the BPA is a component. | |||
| </dd> | ||||
| <t> | <dt>Security Block:</dt><dd>a BPSec extension block in a | |||
| Path - the ordered sequence of nodes through which a bundle | bundle. | |||
| passes on its way from Source to Destination. The path is not | </dd> | |||
| necessarily known in advance by the bundle or any BPAs in the | <dt>Security Context:</dt><dd>the set of assumptions, | |||
| DTN. | algorithms, configurations, and policies used to implement | |||
| </t> | security services. | |||
| </dd> | ||||
| <t> | <dt>Security Operation:</dt><dd>the application of a given | |||
| Security Acceptor - a bundle node that processes and dispositions | security service to a security target, notated as | |||
| one or more | OP(security service, security target). For example, | |||
| security blocks in a bundle. Security acceptors act as the endpoi | OP(bcb-confidentiality, payload). Every security operation | |||
| nt of a security | in a bundle <bcp14>MUST</bcp14> be unique, meaning that a | |||
| service represented in a security block. They remove the security | given security service can only be applied to a security | |||
| blocks they act | target once in a bundle. A security operation is implemented | |||
| upon as part of processing and disposition. Also, the Node ID of | by a security block. | |||
| that node. | </dd> | |||
| </t> | <dt>Security Service:</dt><dd>a process that gives some | |||
| protection to a security target. For example, this | ||||
| <t> | specification defines security services for plaintext | |||
| Security Block - a BPSec extension block in a bundle. | integrity (bib-integrity) and authenticated plaintext | |||
| </t> | confidentiality with additional authenticated data | |||
| (bcb-confidentiality). | ||||
| <t> | </dd> | |||
| Security Context - the set of assumptions, algorithms, | <dt>Security Source:</dt><dd>a BPA that adds a | |||
| configurations and policies used to implement security services. | security block to a bundle. Also, any node ID of the node | |||
| </t> | of which the BPA is a component. | |||
| </dd> | ||||
| <t> | <dt>Security Target:</dt><dd>the block within a bundle that | |||
| Security Operation - the application of a given security service | receives a security service as part of a security operation. | |||
| to a security target, notated as OP(security service, | </dd> | |||
| security target). For example, OP(bcb-confidentiality, payload). | <dt>Security Verifier:</dt><dd>a BPA that verifies | |||
| Every security operation in a bundle MUST be unique, meaning | the data integrity of one or more security blocks in a bundle. | |||
| that a given security service can only be applied to a security | Unlike security acceptors, security verifiers do not act as | |||
| target once in a bundle. A security operation is | the endpoint of a security service, and they do not remove | |||
| implemented by a security block. | verified security blocks. Also, any node ID of the node of | |||
| </t> | which the BPA is a component. | |||
| </dd> | ||||
| <t> | </dl> | |||
| Security Service - a process that gives some | </section> | |||
| protection to a security target. For example, this specification | </section> | |||
| defines security | <section numbered="true" toc="default"> | |||
| services for plain text integrity (bib-integrity), and authentica | <name>Design Decisions</name> | |||
| ted | <t> | |||
| plain text confidentiality with additional authenticated data (bc | The application of security services in DTN is a complex endeavor | |||
| b-confidentiality). | ||||
| </t> | ||||
| <t> | ||||
| Security Source - a bundle node that adds a security block to a | ||||
| bundle. Also, the Node ID of that node. | ||||
| </t> | ||||
| <t> | ||||
| Security Target - the block within a bundle that | ||||
| receives a security service as part of a security operation. | ||||
| </t> | ||||
| <t> | ||||
| Security Verifier - a bundle node that verifies the correctness o | ||||
| f | ||||
| one or more security blocks in a bundle. Unlike security acceptor | ||||
| s, | ||||
| security verifiers do not act as the endpoint of a security servi | ||||
| ce and do | ||||
| not remove verified security blocks. Also, the Node ID of that no | ||||
| de. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section title="Design Decisions"> | ||||
| <t> | ||||
| The application of security services in a DTN is a complex endeavor | ||||
| that must consider physical properties of the network (such as connectivit y and | that must consider physical properties of the network (such as connectivit y and | |||
| propagation times), policies at | propagation times), policies at | |||
| each node, application security requirements, and current and future | each node, application security requirements, and current and future | |||
| threat environments. This section | threat environments. This section | |||
| identifies those desirable properties that guide design decisions for | identifies those desirable properties that guide design decisions for | |||
| this specification and are necessary for understanding the format and | this specification and that are necessary for understanding the format and | |||
| behavior of the BPSec protocol. | behavior of the BPSec protocol. | |||
| </t> | </t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Block-Level Granularity"> | <name>Block-Level Granularity</name> | |||
| <t> | ||||
| <t> | ||||
| Security services within this specification must allow different | Security services within this specification must allow different | |||
| blocks within a bundle to have different security services | blocks within a bundle to have different security services | |||
| applied to them. | applied to them. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| Blocks within a bundle represent different types of information. The | Blocks within a bundle represent different types of information. The | |||
| primary block contains identification and routing information. The | primary block contains identification and routing information. The | |||
| payload block carries application data. Extension blocks carry a | payload block carries application data. Extension blocks carry a | |||
| variety of data that may augment or annotate the payload, or | variety of data that may augment or annotate the payload or that | |||
| otherwise provide information necessary for the proper processing | otherwise provide information necessary for the proper processing | |||
| of a bundle along a path. Therefore, applying a single level and | of a bundle along a path. Therefore, applying a single level and | |||
| type of security across an entire bundle | type of security across an entire bundle | |||
| fails to recognize that blocks in a bundle represent different | fails to recognize that blocks in a bundle represent different | |||
| types of information with different security needs. | types of information with different security needs. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| For example, a payload block might be encrypted to | For example, a payload block might be encrypted to | |||
| protect its contents and an extension block containing | protect its contents and an extension block containing | |||
| summary information related to the payload might be integrity | summary information related to the payload might be integrity | |||
| signed but unencrypted to provide waypoints access | signed but unencrypted to provide waypoints access | |||
| to payload-related data without providing access to the payload. | to payload-related data without providing access to the payload. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Multiple Security Sources</name> | ||||
| <section title="Multiple Security Sources"> | <t> | |||
| A bundle can have multiple security blocks, and these blocks can | ||||
| <t> | have different security sources. BPSec implementations <bcp14>MUST | |||
| A bundle can have multiple security blocks and these blocks can | NOT</bcp14> assume that all blocks in a bundle have the same security | |||
| have different security sources. BPSec implementations MUST | ||||
| NOT assume that all blocks in a bundle have the same security | ||||
| operations applied to them. | operations applied to them. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| 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 | at any time during its existence in DTN. When a waypoint | |||
| adds a new extension block to a bundle, that extension block | adds a new extension block to a bundle, that extension block | |||
| MAY have security services applied to it by that waypoint. Similarly, | <bcp14>MAY</bcp14> have security services applied to it by that waypoin | |||
| a waypoint MAY add a security service to an existing | t. Similarly, | |||
| a waypoint <bcp14>MAY</bcp14> add a security service to an existing | ||||
| block, consistent with its security policy. | block, consistent with its security policy. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| 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) | is the security source for that service. The security block(s) | |||
| which represent that service in the bundle may need to record this | that represent that service in the bundle may need to record this | |||
| security source as the bundle destination might need this information | security source, as the bundle destination might need this information | |||
| for processing. | for processing. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| 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 t | |||
| he bundle and | ||||
| choose to apply a confidentiality service. In this case, the | choose to apply a confidentiality service. In this case, the | |||
| integrity security source is the bundle source and the | integrity security source is the bundle source and the | |||
| confidentiality security source is the waypoint node. | confidentiality security source is the waypoint node. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| 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 that the bundle | |||
| will reach the bundle destination prior to reaching a security | will reach the bundle destination prior to reaching a security | |||
| acceptor. In cases where this may be a practical problem, it is | acceptor. In cases where this may be a practical problem, it is | |||
| recommended that solutions such as bundle encapsulation can be | recommended that solutions such as bundle encapsulation be | |||
| used to ensure that a bundle be delivered to a security acceptor | used to ensure that a bundle be delivered to a security acceptor | |||
| prior to being delivered to the bundle destination. Generally, | prior to being delivered to the bundle destination. Generally, | |||
| if a bundle reaches a waypoint that has the appropriate configuration | if a bundle reaches a waypoint that has the appropriate configuration | |||
| and policy to act as a security acceptor for a security service in | and policy to act as a security acceptor for a security service in | |||
| the bundle, then the waypoint should act as that security acceptor. | the bundle, then the waypoint should act as that security acceptor. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Mixed Security Policy</name> | ||||
| <section title="Mixed Security Policy"> | <t> | |||
| The security policy enforced by nodes in the delay-tolerant network may | ||||
| <t> | differ. | |||
| The security policy enforced by nodes in the DTN may differ. | </t> | |||
| </t> | <t> | |||
| Some waypoints will have security policies that require the waypoint | ||||
| <t> | to evaluate security services even if the waypoint is neither the | |||
| Some waypoints will have security policies that require | bundle destination nor the final intended acceptor of the service. | |||
| evaluating security services even if they are not the bundle | ||||
| destination or the final intended acceptor of the service. | ||||
| For example, a waypoint could choose to | For example, a waypoint could choose to | |||
| verify an integrity service even though the waypoint is not | verify an integrity service even though the waypoint is not | |||
| the bundle destination and the integrity service will be needed | the bundle destination and the integrity service will be needed | |||
| by other nodes along the bundle's path. | by other nodes along the bundle's path. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| Some waypoints will determine, through policy, that they are the | Some waypoints will determine, through policy, that they are the | |||
| intended recipient of the security service and terminate the | 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 | it should verify and remove a particular integrity service or | |||
| attempt to decrypt a confidentiality service, before forwarding the | attempt to decrypt a confidentiality service, before forwarding the | |||
| bundle along its path. | bundle along its path. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| Some waypoints could understand security blocks but refuse to | Some waypoints could understand security blocks but refuse to | |||
| process them unless they are the bundle destination. | process them unless they are the bundle destination. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>User-Defined Security Contexts</name> | ||||
| <section title="User-Defined Security Contexts"> | <t> | |||
| <t> | A security context is the set of assumptions, algorithms, configuration | |||
| A security context is the union of security algorithms (cipher | s, | |||
| suites), policies associated with the use of those algorithms, and | and policies used to implement security services. Different contexts may s | |||
| configuration values. Different contexts may specify different | pecify different | |||
| algorithms, different polices, or different configuration values used | algorithms, different polices, or different configuration values used | |||
| in the implementation of their security services. BPSec provides | in the implementation of their security services. BPSec provides | |||
| a mechanism to define security contexts. Users may select from | a mechanism to define security contexts. Users may select from | |||
| registered security contexts and customize those contexts through | registered security contexts and customize those contexts through | |||
| security context parameters. | security context parameters. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| For example, some users might prefer a | For example, some users might prefer a | |||
| SHA2 hash function for integrity whereas other users might prefer a | SHA2 hash function for integrity, whereas other users might prefer a | |||
| SHA3 hash function. Providing either separate security contexts or a si ngle, | SHA3 hash function. Providing either separate security contexts or a si ngle, | |||
| 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 | the desired cipher suite, policy, and configuration when populating | |||
| a security block. | a security block. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Deterministic Processing"> | <name>Deterministic Processing</name> | |||
| <t> | <t> | |||
| Whenever a node determines that it must process more than one | Whenever a node determines that it must process more than one | |||
| security block in a received bundle (either because the policy | security block in a received bundle (either because the policy | |||
| at a waypoint states that it should process security blocks or | at a waypoint states that it should process security blocks or | |||
| because the node is the bundle destination) the order in which | because the node is the bundle destination), the order in which | |||
| security blocks are processed must be deterministic. All nodes | security blocks are processed must be deterministic. All nodes | |||
| must impose this same deterministic processing order for all | must impose this same deterministic processing order for all | |||
| security blocks. This specification provides | security blocks. This specification provides | |||
| determinism in the application and evaluation of security | determinism in the application and evaluation of security | |||
| services, even when doing so results in a loss of flexibility. | services, even when doing so results in a loss of flexibility. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section anchor="sec_blocks" numbered="true" toc="default"> | |||
| <name>Security Blocks</name> | ||||
| <section anchor="sec_blocks" title="Security Blocks"> | <section anchor="sec_blocks_def" numbered="true" toc="default"> | |||
| <name>Block Definitions</name> | ||||
| <section anchor="sec_blocks_def" title="Block Definitions"> | <t> | |||
| <t> | ||||
| 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). | |||
| <list> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| The BIB is used to ensure the integrity of its plain text | <li> | |||
| security target(s). The integrity information in the BIB MAY be | The BIB is used to ensure the integrity of its plaintext | |||
| security target(s). The integrity information in the BIB <bcp14>M | ||||
| AY</bcp14> be | ||||
| verified by any node along the bundle path from the BIB | verified by any node along the bundle path from the BIB | |||
| security source to the bundle destination. Waypoints add or remov e BIBs from bundles in accordance with | security source to the bundle destination. Waypoints add or remov e BIBs from bundles in accordance with | |||
| their security policy. BIBs are never used for integrity protecti on | their security policy. BIBs are never used for integrity protecti on | |||
| of the cipher text provided by a BCB. Because security policy at | of the ciphertext provided by a BCB. Because security policy at | |||
| BPSec nodes may differ regarding integrity verification, BIBs do not | BPSec nodes may differ regarding integrity verification, BIBs do not | |||
| guarantee hop-by-hop authentication, as discussed in <xref target | guarantee hop-by-hop authentication, as discussed in <xref target | |||
| ="sup_sec_svc"/>. | ="sup_sec_svc" format="default"/>. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | The BCB indicates that the security target or targets have been | |||
| The BCB indicates that the security target(s) 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. The BCB is decrypted by security accept or | content while in transit. As a matter of security policy, the BCB is decrypted by security acceptor | |||
| nodes in the network, up to and including the bundle | nodes in the network, up to and including the bundle | |||
| destination, as a matter of security policy. BCBs additionally | destination. BCBs additionally | |||
| provide integrity protection mechanisms for the cipher text they | provide integrity-protection mechanisms for the ciphertext they | |||
| generate. | generate. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | </section> | |||
| </section> | <section anchor="sec_blocks_uni" toc="default" numbered="true"> | |||
| <name>Uniqueness</name> | ||||
| <section anchor="sec_blocks_uni" title="Uniqueness" toc="default"> | <t> | |||
| Security operations in a bundle <bcp14>MUST</bcp14> be unique; the same | ||||
| <t> | security | |||
| Security operations in a bundle MUST be unique; the same security | service <bcp14>MUST NOT</bcp14> be applied to a security target more th | |||
| service MUST NOT be applied to a security target more than once in a | an 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 cannot | block, this means that multiple security blocks of the same type cannot | |||
| share the same security targets. A new security block MUST NOT be added | share the same security targets. A new security block <bcp14>MUST NOT</ | |||
| to a bundle if a pre-existing security block of the same type is | bcp14> 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 block. | already defined for the security target of the new security block. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| This uniqueness requirement ensures that there is no ambiguity related | This uniqueness requirement ensures that there is no ambiguity related | |||
| to the order in which security blocks are processed or how security pol icy | to the order in which security blocks are processed or how security pol icy | |||
| can be specified to require certain security services be present in a | can be specified to require certain security services be present in a | |||
| bundle. | bundle. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| Using the notation OP(service, target), several examples illustrate | Using the notation OP(service, target), several examples illustrate | |||
| this uniqueness requirement. | this uniqueness requirement. | |||
| <list style="symbols"> | </t> | |||
| <t> | <dl spacing="normal"> | |||
| Signing the payload twice: The two operations OP(bib-integrity, | <dt>Signing the payload twice:</dt><dd>The two operations OP(bib-integ | |||
| payload) and OP(bib-integrity, payload) are redundant and MUST NO | rity, | |||
| T | payload) and OP(bib-integrity, payload) are redundant and <bcp14> | |||
| MUST NOT</bcp14> | ||||
| both be present in the same bundle at the same time. | both be present in the same bundle at the same time. | |||
| </t> | </dd> | |||
| <dt>Signing different blocks:</dt><dd>The two operations | ||||
| <t> | OP(bib-integrity, payload) and OP(bib-integrity, | |||
| Signing different blocks: The two operations OP(bib-integrity, | extension_block_1) are not redundant and both may be present | |||
| payload) and OP(bib-integrity, extension_block_1) are not redunda | in the same bundle at the same time. Similarly, the two | |||
| nt | operations OP(bib-integrity, extension_block_1) and | |||
| and both may be present in the same bundle at the same time. | OP(bib-integrity, extension_block_2) are also not redundant | |||
| Similarly, the two operations OP(bib-integrity, extension_block_1 | and may both be present in the bundle at the same time. | |||
| ) | </dd> | |||
| and OP(bib-integrity, extension_block_2) are also not redundant a | <dt>Different services on same block:</dt><dd>The two | |||
| nd | operations OP(bib-integrity, payload) and | |||
| may both be present in the bundle at the same time. | OP(bcb-confidentiality, payload) are not inherently | |||
| </t> | redundant and may both be present in the bundle at the same | |||
| <t> | time, pursuant to other processing rules in this | |||
| Different Services on same block: The two operations | specification. | |||
| OP(bib-integrity, payload) and OP(bcb-confidentiality, payload) a | </dd> | |||
| re not | <dt>Different services from different block | |||
| inherently redundant and may both be present in the bundle at | types:</dt><dd>The notation OP(service, target) refers | |||
| the same time, pursuant to other processing rules in this | specifically to a security block, as the security block is | |||
| specification. | the embodiment of a security service applied to a security | |||
| </t> | target in a bundle. Were some Other Security Block (OSB) to | |||
| <t> | be defined providing an integrity service, then the | |||
| Different services from different block types: The notation | operations OP(bib-integrity, target) and OP(osb-integrity, | |||
| OP(service, target) refers specifically to a security block, as t | target) <bcp14>MAY</bcp14> both be present in the same | |||
| he | bundle if so allowed by the definition of the OSB, as | |||
| security block is the embodiment of a security service applied to | discussed in <xref target="Extensions" format="default"/>. | |||
| a security | </dd> | |||
| target in a bundle. Were some Other Security Block (OSB) to be de | </dl> | |||
| fined | <t> | |||
| providing an integrity service, then the operations OP(bib-integr | ||||
| ity, target) | ||||
| and OP(osb-integrity, target) MAY both be present in the same bun | ||||
| dle if so allowed | ||||
| by the definition of the OSB, as discussed in <xref target="Exten | ||||
| sions"/>. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| NOTES: | NOTES: | |||
| <list style="bullets"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| A security block may be removed from a bundle as part of security | <li> | |||
| processing | A security block may be removed from a bundle as part | |||
| at a waypoint node with a new security block being added to the b | of security processing at a waypoint node with a new | |||
| undle by that | security block being added to the bundle by that | |||
| node. In this case, conflicting security blocks never co-exist in | node. In this case, conflicting security blocks never | |||
| the bundle at the same | coexist in the bundle at the same time and the | |||
| time and the uniqueness requirement is not violated. | uniqueness requirement is not violated. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | A ciphertext integrity-protection mechanism (such as associated | |||
| A cipher text integrity mechanism (such as associated authenticat | authenticated data) calculated by a cipher suite and | |||
| ed data) calculated | transported in a BCB is considered part of the | |||
| by a cipher suite and transported in a BCB is considered part of | confidentiality service; therefore, it is unique from the | |||
| the confidentiality | plaintext integrity service provided by a BIB. | |||
| service and, therefore, unique from the plain text integrity serv | </li> | |||
| ice provided by a BIB. | <li> | |||
| </t> | The security blocks defined in this specification (BIB | |||
| and BCB) are designed with the intention that the BPA | ||||
| <t> | adding these blocks is the authoritative source of the | |||
| The security blocks defined in this specification (BIB and BCB) a | security service. If a BPA adds a BIB on a security | |||
| re designed with | target, then the BIB is expected to be the | |||
| the intention that the BPA adding these blocks is the authoritati | authoritative source of integrity for that security | |||
| ve source of the | target. If a BPA adds a BCB to a security target, then | |||
| security service. If a BPA adds a BIB on a security target, then | the BCB is expected to be the authoritative source of | |||
| the BIB is expected | confidentiality for that security target. More complex | |||
| to be the authoritative source of integrity for that security tar | scenarios, such as having multiple nodes in a network | |||
| get. If a BPA adds | sign the same security target, can be accommodated | |||
| a BCB to a security target, then the BCB is expected to be the au | using the definition of custom security contexts (see <xref | |||
| thoritative source | target="sec_ctx" format="default"/>) and/or the | |||
| of confidentiality for that security target. More complex scenari | definition of OSBs (see <xref | |||
| os, such as | target="Extensions" format="default"/>). | |||
| having multiple nodes in a network sign the same security target, | </li> | |||
| can be | </ul> | |||
| accommodated using the definition of custom security contexts | </section> | |||
| (<xref target="sec_ctx"/>) and/or the definition of other securit | <section anchor="sec_blocks_mult" toc="default" numbered="true"> | |||
| y blocks (<xref target="Extensions"/>). | <name>Target Multiplicity</name> | |||
| </t> | <t> | |||
| A single security block <bcp14>MAY</bcp14> represent | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="sec_blocks_mult" title="Target Multiplicity" toc="default"> | ||||
| <t> | ||||
| A single security block MAY represent | ||||
| multiple security operations as a way of reducing the overall number | multiple security operations as a way of reducing the overall number | |||
| of security blocks present in a bundle. In these circumstances, | of security blocks present in a bundle. In these circumstances, | |||
| reducing the number of security blocks in the bundle reduces the | reducing the number of security blocks in the bundle reduces the | |||
| amount of redundant information in the bundle. | amount of redundant information in the bundle. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| A set of security operations can be represented by a single security | A set of security operations can be represented by a single security | |||
| block when all of the following conditions are true. | block when all of the following conditions are true. | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| <li> | ||||
| The security operations apply the same security service. For | The security operations apply the same security service. For | |||
| example, they are all integrity operations or all | example, they are all integrity operations or all | |||
| confidentiality operations. | confidentiality operations. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| The security context parameters for the | The security context parameters for the | |||
| security operations are identical. | security operations are identical. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| The security source for the security operations is the same, | The security source for the security operations is the same, | |||
| meaning the set of operations are being added by the | meaning the set of operations are being added by the | |||
| same node. | same node. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| No security operations have the same security target, as that | No security operations have the same security target, as that | |||
| would violate the need for security operations to be unique. | would violate the need for security operations to be unique. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| None of the security operations conflict with security | None of the security operations conflict with security | |||
| operations already present in the bundle. | operations already present in the bundle. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | <t> | |||
| <t> | ||||
| When representing multiple security operations in a single security | When representing multiple security operations in a single security | |||
| block, the information that is common across all operations is | block, the information that is common across all operations is | |||
| represented once in the security block, and the information which is | represented once in the security block; the information that is | |||
| different (e.g., the security targets) are represented individually. | different (e.g., the security targets) is represented individually. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| It is RECOMMENDED that if a node processes any security operation in | If a node processes any security operation in a security block, it is < | |||
| a security block that it process all security operations in the | bcp14>RECOMMENDED</bcp14> that it process all | |||
| security block. This allows security sources to assert that the set of | security operations in the security block. This allows | |||
| security operations in a security block are expected to be processed | security sources to assert that the set of security | |||
| by the same security acceptor. However, the determination | operations in a security block are expected to be processed | |||
| of whether a node actually is a security acceptor or not is a matter | by the same security acceptor. However, the determination of | |||
| of the policy of the node itself. In cases where a receiving node | whether a node actually is a security acceptor or not is a | |||
| determines that it is the security acceptor of only a subset of the | matter of the policy of the node itself. In cases where a | |||
| security operations in a security block, the node may choose to only | receiving node determines that it is the security acceptor of | |||
| process that subset of security operations. | only a subset of the security operations in a security block, | |||
| </t> | the node may choose to only process that subset of security | |||
| </section> | operations. | |||
| </t> | ||||
| <section anchor="sec_blocks_tgtid" title="Target Identification"> | </section> | |||
| <t> | <section anchor="sec_blocks_tgtid" numbered="true" toc="default"> | |||
| <name>Target Identification</name> | ||||
| <t> | ||||
| 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 <xref target="I-D.ietf-dtn-bpbis"/> | extension block header from <xref target="RFC9171" format="default"/> | |||
| provides a "Block Number" field suitable for this purpose. Therefore, | provides a "block number" field suitable for this purpose. Therefore, | |||
| a security target in a security block MUST be represented as the | a security target in a security block <bcp14>MUST</bcp14> be represente | |||
| Block Number of the target block. | d as the | |||
| </t> | block number of the target block. | |||
| </section> | </t> | |||
| </section> | ||||
| <section anchor="sec_blocks_rep" title="Block Representation" toc="default"> | <section anchor="sec_blocks_rep" toc="default" numbered="true"> | |||
| <t> | <name>Block Representation</name> | |||
| <t> | ||||
| Each security block uses the Canonical Bundle Block Format as | Each security block uses the Canonical Bundle Block Format as | |||
| defined in <xref target="I-D.ietf-dtn-bpbis"/>. That is, each | defined in <xref target="RFC9171" format="default"/>. That is, each | |||
| security block is comprised of the following elements: | security block is comprised of the following elements: | |||
| <list style="symbols"> | </t> | |||
| <t>block type code</t> | <ul spacing="compact"> | |||
| <t>block number </t> | <li>block type code</li> | |||
| <t>block processing control flags</t> | <li>block number </li> | |||
| <t>CRC type</t> | <li>block processing control flags</li> | |||
| <t>block-type-specific-data</t> | <li>cyclic redundancy check (CRC) type</li> | |||
| <t>CRC field (if present)</t> | <li>block-type-specific data</li> | |||
| </list> | <li>CRC field (if present)</li> | |||
| </t> | </ul> | |||
| <t> | ||||
| <t> | ||||
| 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. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="sec_blocks_asb" numbered="true" toc="default"> | ||||
| <section anchor="sec_blocks_asb" title="Abstract Security Block"> | <name>Abstract Security Block</name> | |||
| <t> | <t> | |||
| The structure of the security-specific portions of a security block | The structure of the security-specific portions of a security block | |||
| is identical for both the BIB and BCB Block Types. Therefore, this | is identical for both the BIB and BCB block types. Therefore, this | |||
| section defines an Abstract Security Block (ASB) data structure and | section defines an Abstract Security Block (ASB) data structure and | |||
| discusses the definition, processing, and other constraints for using | discusses its definition, its processing, and other constraints for usi ng | |||
| this structure. An ASB is never directly instantiated within a | this structure. An ASB is never directly instantiated within a | |||
| bundle, it is only a mechanism for discussing the common aspects of | bundle, it is only a mechanism for discussing the common aspects of | |||
| BIB and BCB security blocks. | BIB and BCB security blocks. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | The fields of the ASB <bcp14>SHALL</bcp14> be as follows, | |||
| The fields of the ASB SHALL be as follows, listed in the order in | listed in the order in which they must appear. The encoding | |||
| which they must appear. The encoding of these fields MUST be in | of these fields <bcp14>MUST</bcp14> be in accordance with the | |||
| accordance with the canonical forms provided in <xref target="CanonBund | canonical forms provided in <xref target="CanonBundle" | |||
| le"/>. | format="default"/>. | |||
| <list style="hanging" hangIndent="6"> | ||||
| <t hangText="Security Targets:"> <vspace/> | ||||
| This field identifies the block(s) targeted by the security | ||||
| operation(s) represented by this security block. Each target | ||||
| block is represented by its unique Block Number. This field | ||||
| SHALL be represented by a CBOR array of data items. Each target | ||||
| within this CBOR array SHALL be represented by a CBOR unsigned | ||||
| integer. This array MUST have at least 1 entry and each entry | ||||
| MUST represent the Block Number of a block that exists in the | ||||
| bundle. There MUST NOT be duplicate entries in this array. The | ||||
| order of elements in this list has no semantic meaning outside of | ||||
| the context of this block. Within the block, the ordering of | ||||
| targets must match the ordering of results associated with | ||||
| these targets. | ||||
| </t> | ||||
| <t hangText="Security Context Id:"> <vspace/> | ||||
| This field identifies the security context used to implement | ||||
| the security service represented by this block and applied to | ||||
| each security target. This field SHALL be represented by a CBOR | ||||
| unsigned integer. The values for this Id should come from the | ||||
| registry defined in <xref target="SecCtx"/> | ||||
| </t> | ||||
| <t hangText="Security Context Flags:"> <vspace/> | ||||
| This field identifies which optional fields are present in the | ||||
| security block. This field SHALL be represented as a CBOR | ||||
| unsigned integer whose contents shall be | ||||
| interpreted as a 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 security block. The association of bits to | ||||
| security block data is defined as follows. | ||||
| <list style="hanging" hangIndent="7"> | </t> | |||
| <t hangText="Bit 0"> (the least-significant bit, 0x01): Securi | <dl newline="true" spacing="normal" indent="6"> | |||
| ty Context | <dt>Security Targets:</dt> | |||
| Parameters Present Flag. </t> | <dd> | |||
| <t hangText="Bit >0">Reserved </t> | This field identifies the block(s) targeted by the | |||
| </list> | security operation(s) represented by this security | |||
| block. Each target block is represented by its unique | ||||
| block number. This field <bcp14>SHALL</bcp14> be | ||||
| represented by a Concise Binary Object Representation | ||||
| (CBOR) array of data items. Each target within this | ||||
| CBOR array <bcp14>SHALL</bcp14> be represented by a | ||||
| CBOR unsigned integer. This array <bcp14>MUST</bcp14> | ||||
| have at least one entry and each entry | ||||
| <bcp14>MUST</bcp14> represent the block number of a | ||||
| block that exists in the bundle. There <bcp14>MUST | ||||
| NOT</bcp14> be duplicate entries in this array. The | ||||
| order of elements in this list has no semantic meaning | ||||
| outside of the context of this block. Within the block, | ||||
| the ordering of targets must match the ordering of | ||||
| results associated with these targets. | ||||
| </dd> | ||||
| <dt>Security Context Id:</dt> | ||||
| <dd> | ||||
| This field identifies the security context used to | ||||
| implement the security service represented by this | ||||
| block and applied to each security target. This field | ||||
| <bcp14>SHALL</bcp14> be represented by a CBOR unsigned | ||||
| integer. The values for this Id should come from the | ||||
| registry defined in <xref target="SecCtx" | ||||
| format="default"/>. | ||||
| </dd> | ||||
| <dt>Security Context Flags:</dt> | ||||
| <dd> | ||||
| <t> | ||||
| This field identifies which optional fields are present | ||||
| in the security block. This field <bcp14>SHALL</bcp14> | ||||
| be represented as a CBOR unsigned integer whose | ||||
| contents shall be interpreted as a 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 | ||||
| security block. The association of bits to security | ||||
| block data is defined as follows. | ||||
| Implementations MUST set reserved bits to 0 when writing this | ||||
| field and MUST ignore the values of reserved bits when reading th | ||||
| is | ||||
| field. For unreserved bits, a value of 1 indicates that the asso | ||||
| ciated | ||||
| security block field MUST be included in the security block. A | ||||
| value of 0 indicates that the associated security block field | ||||
| MUST NOT be in the security block. | ||||
| </t> | </t> | |||
| <dl newline="false" spacing="normal" indent="10"> | ||||
| <dt>Bit 0</dt> | ||||
| <dd> (the least-significant bit, 0x01): "Security context | ||||
| parameters present" flag. </dd> | ||||
| <dt>Bit >0</dt> | ||||
| <dd>Reserved </dd> | ||||
| </dl> | ||||
| <t> | ||||
| <t hangText="Security Source:"> <vspace/> | Implementations <bcp14>MUST</bcp14> set reserved bits | |||
| This field identifies the Endpoint that inserted the security | to 0 when writing this field and <bcp14>MUST</bcp14> | |||
| block in the bundle. This field SHALL be | ignore the values of reserved bits when reading this | |||
| represented by a CBOR array in accordance with | field. For unreserved bits, a value of 1 indicates | |||
| <xref target="I-D.ietf-dtn-bpbis"/> rules for | that the associated security block field | |||
| representing Endpoint Identifiers (EIDs). | <bcp14>MUST</bcp14> be included in the security | |||
| block. A value of 0 indicates that the associated | ||||
| security block field <bcp14>MUST NOT</bcp14> be in the | ||||
| security block. | ||||
| </t> | </t> | |||
| </dd> | ||||
| <t hangText="Security Context Parameters (Optional):"> <vspace/> | <dt>Security Source:</dt> | |||
| <dd> | ||||
| This field identifies the BPA that inserted the security block | ||||
| in the bundle. Also, any node ID of the node of which the BPA | ||||
| is a component. This field <bcp14>SHALL</bcp14> be | ||||
| represented by a CBOR array in accordance with the rules in | ||||
| <xref target="RFC9171" format="default"/> for | ||||
| representing endpoint IDs (EIDs). | ||||
| </dd> | ||||
| <dt>Security Context Parameters (Optional):</dt> | ||||
| <dd> | ||||
| <t> | ||||
| This field captures one or more security context parameters | This field captures one or more security context parameters | |||
| that should be used when processing | that should be used when processing | |||
| the security service described by this security block. This | the security service described by this security block. This | |||
| field SHALL be represented by a CBOR array. Each entry in this | field <bcp14>SHALL</bcp14> be represented by a CBOR array. Each entry in this | |||
| array is a single security context parameter. A single | array is a single security context parameter. A single | |||
| parameter SHALL also be represented as a CBOR array comprising | parameter <bcp14>SHALL</bcp14> also be represented as a CBOR arra | |||
| a 2-tuple of the id and value of the parameter, as follows. | y comprising | |||
| a 2-tuple of the Id and value of the parameter, as follows. | ||||
| <list style="symbols"> | </t> | |||
| <t> | <dl spacing="normal"> | |||
| Parameter Id. This field identifies which | <dt>Parameter Id:</dt><dd>This field identifies which | |||
| parameter is being specified. This field SHALL be | parameter is being specified. This field <bcp14>SHALL</bcp1 | |||
| 4> be | ||||
| represented as a CBOR unsigned integer. Parameter Ids | represented as a CBOR unsigned integer. Parameter Ids | |||
| are selected as described in <xref target="parmresult"/>. | are selected as described in <xref target="parmresult" form | |||
| </t> | at="default"/>. | |||
| <t> | </dd> | |||
| Parameter Value. This field captures the value | <dt>Parameter Value:</dt><dd>This field captures the value | |||
| associated with this parameter. This field SHALL be | associated with this parameter. This field <bcp14>SHALL</bc | |||
| p14> be | ||||
| represented by the applicable CBOR representation of the | represented by the applicable CBOR representation of the | |||
| parameter, in accordance with <xref target="parmresult"/>. | parameter, in accordance with <xref target="parmresult" for | |||
| </t> | mat="default"/>. | |||
| </list> | </dd> | |||
| <vspace/><vspace/> | </dl> | |||
| <t> | ||||
| The logical layout of the parameters array is | The logical layout of the parameters array is | |||
| illustrated in <xref target="parms_tbl"/>. | illustrated in <xref target="parms_tbl" format="default"/>. | |||
| <figure anchor="parms_tbl" title="Security Context Parameters"> | ||||
| <artwork align="center">
<!-- | ||||
| -->+----------------+----------------+ +--------------- | ||||
| -+
<!-- | ||||
| -->| Parameter 1 | Parameter 2 | ... | Parameter N | ||||
| |
<!-- | ||||
| -->+------+---------+------+---------+ +------+-------- | ||||
| -+
<!-- | ||||
| -->| Id | Value | Id | Value | | Id | Value | ||||
| |
<!-- | ||||
| -->+------+---------+------+---------+ +------+-------- | ||||
| -+ | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | </t> | |||
| <figure anchor="parms_tbl"> | ||||
| <name>Security Context Parameters</name> | ||||
| <artwork align="center" name="" type="" alt=""> | ||||
| +----------------+----------------+ +----------------+ | ||||
| | Parameter 1 | Parameter 2 | ... | Parameter N | | ||||
| +------+---------+------+---------+ +------+---------+ | ||||
| | Id | Value | Id | Value | | Id | Value | | ||||
| +------+---------+------+---------+ +------+---------+</artwork> | ||||
| </figure> | ||||
| </dd> | ||||
| <t hangText="Security Results:"> <vspace/> | <dt>Security Results:</dt> | |||
| <dd> | ||||
| <t> | ||||
| This field captures the results of applying a security service | This field captures the results of applying a security service | |||
| to the security targets of the security block. This field SHALL | to the security targets of the security block. This field <bcp14> SHALL</bcp14> | |||
| be represented as a CBOR array of target results. Each entry in | be represented as a CBOR array of target results. Each entry in | |||
| this array represents the set of security results for a | this array represents the set of security results for a | |||
| specific security target. The target results MUST be ordered | specific security target. The target results <bcp14>MUST</bcp14> be ordered | |||
| identically to the Security Targets field of the security block. | identically to the Security Targets field of the security block. | |||
| This means that the first set of target results in this array | This means that the first set of target results in this array | |||
| corresponds to the first entry in the Security Targets field of | corresponds to the first entry in the Security Targets field of | |||
| the security block, and so on. There MUST be one entry in this | the security block, and so on. There <bcp14>MUST</bcp14> be one e ntry in this | |||
| array for each entry in the Security Targets field of the | array for each entry in the Security Targets field of the | |||
| security block. | security block. | |||
| <vspace/> <vspace/> | </t> | |||
| <t> | ||||
| 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 a nd a result value, | |||
| defined as follows. | defined as follows. | |||
| <list style="symbols"> | </t> | |||
| <t> | <dl spacing="normal"> | |||
| Result Id. This field identifies which security result is | <dt>Result Id:</dt><dd>This field identifies which security result | |||
| is | ||||
| being specified. Some security results capture the | being specified. Some security results capture the | |||
| primary output of a cipher suite. Other security results | primary output of a cipher suite. Other security results | |||
| contain additional annotative information from cipher | contain additional annotative information from cipher | |||
| suite processing. This field SHALL be represented as a | suite processing. This field <bcp14>SHALL</bcp14> be repres ented as a | |||
| CBOR unsigned integer. Security result Ids will be as | CBOR unsigned integer. Security result Ids will be as | |||
| specified in <xref target="parmresult"/>. | specified in <xref target="parmresult" format="default"/>. | |||
| </t> | </dd> | |||
| <t> | <dt>Result Value:</dt><dd>This field captures the value associated | |||
| Result Value. This field captures the value associated | with the result. This field <bcp14>SHALL</bcp14> be represe | |||
| with the result. This field SHALL be represented by the | nted by the | |||
| applicable CBOR representation of the result value, in | applicable CBOR representation of the result value, in | |||
| accordance with <xref target="parmresult"/>. | accordance with <xref target="parmresult" format="default"/ | |||
| </t> | >. | |||
| </list> | </dd> | |||
| </dl> | ||||
| <t> | ||||
| The logical layout of the security results array is illustrated | The logical layout of the security results array is illustrated | |||
| in <xref target="res_tbl"/>. In this figure there are N | in <xref target="res_tbl" format="default"/>. In this figure, the re are N | |||
| security targets for this security block. The first security | security targets for this security block. The first security | |||
| target contains M results and the Nth security target contains | target contains M results and the Nth security target contains | |||
| K results. | K results. | |||
| <figure anchor="res_tbl" title="Security Results"> | ||||
| <artwork align="center">
<!-- | ||||
| -->+------------------------------+ +------------------ | ||||
| ------------+
<!-- | ||||
| -->| Target 1 | | Target | ||||
| N |
<!-- | ||||
| -->+------------+----+------------+ +------------------ | ||||
| ------------+
<!-- | ||||
| -->| Result 1 | | Result M | ... | Result 1 | | | ||||
| Result K |
<!-- | ||||
| -->+----+-------+ .. +----+-------+ +----+-------+ .. + | ||||
| ----+-------+
<!-- | ||||
| -->| Id | Value | | Id | Value | | Id | Value | | | ||||
| Id | Value |
<!-- | ||||
| -->+----+-------+ +----+-------+ +----+-------+ + | ||||
| ----+-------+ | ||||
| </artwork> | ||||
| </figure> | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="BIB" title="Block Integrity Block" toc="default"> | ||||
| <t> | ||||
| A BIB is a bundle extension block with the following characteristics. | ||||
| <list> | ||||
| <t> | ||||
| The Block Type Code value is as specified in | ||||
| <xref target="BlockType"/>. | ||||
| </t> | </t> | |||
| <figure anchor="res_tbl"> | ||||
| <name>Security Results</name> | ||||
| <artwork align="center" name="" type="" alt=""> | ||||
| +--------------------------+ +---------------------------+ | ||||
| | Target 1 | | Target N | | ||||
| +----------+----+----------+ +---------------------------+ | ||||
| | Result 1 | | Result M | ... | Result 1 | | Result K | | ||||
| +----+-----+ .. +----+-----+ +---+------+ .. +----+------+ | ||||
| | Id |Value| | Id |Value| | Id |Value| | Id | Value| | ||||
| +----+-----+ +----+-----+ +----+-----+ +----+------+</artwork> | ||||
| </figure> | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="BIB" toc="default" numbered="true"> | ||||
| <name>Block Integrity Block</name> | ||||
| <t> | ||||
| A BIB is a BP extension block with the following characteristics. | ||||
| <t> | </t> | |||
| The block-type-specific-data field follows the structure of the | <ul spacing="normal"> | |||
| <li> | ||||
| The block type code value is as specified in | ||||
| <xref target="BlockType" format="default"/>. | ||||
| </li> | ||||
| <li> | ||||
| The block-type-specific data field follows the structure of the | ||||
| ASB. | ASB. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | A security target listed in the Security Targets field <bcp14>MUS | |||
| A security target listed in the Security Targets field MUST NOT | T NOT</bcp14> | |||
| reference a security block defined in this specification (e.g., | reference a security block defined in this specification (e.g., | |||
| a BIB or a BCB). | a BIB or a BCB). | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | The security context <bcp14>MUST</bcp14> utilize an authenticatio | |||
| The Security Context MUST utilize an authentication mechanism or | n mechanism or | |||
| an error detection mechanism. | an error detection mechanism. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | <t> | |||
| <t> | ||||
| Notes: | Notes: | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| Designers SHOULD carefully consider the effect of setting flags t | <li> | |||
| hat either discard the | Designers <bcp14>SHOULD</bcp14> carefully consider the effect of | |||
| setting flags that either discard the | ||||
| block or delete the bundle in the event that this block cannot | block or delete the bundle in the event that this block cannot | |||
| be processed. | be processed. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | ||||
| 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 <bcp14>RECOMMENDED</bcp14> that users wishing t | |||
| multiple integrity mechanisms for the same target define a | o support | |||
| multiple integrity-protection mechanisms for the same target defi | ||||
| ne a | ||||
| multi-result security context. Such a context could generate | multi-result security context. Such a context could generate | |||
| multiple security results for the same security target using diff erent | multiple security results for the same security target using diff erent | |||
| integrity-protection mechanisms or different configurations for t he | integrity-protection mechanisms or different configurations for t he | |||
| same integrity-protection mechanism. | same integrity-protection mechanism. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | A BIB is used to verify the plaintext integrity of its security | |||
| A BIB is used to verify the plain text integrity of its security | target. However, a single BIB <bcp14>MAY</bcp14> include security | |||
| target. However, a single BIB MAY include security results for | 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 blo cks | needed relationship between the BIB security target and other blo cks | |||
| in the bundle (such as the primary block). | in the bundle (such as the primary block). | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | Security information <bcp14>MAY</bcp14> be checked at any hop on | |||
| Security information MAY be checked at any hop on the | the | |||
| way to the bundle destination that has access to the required key ing | way to the bundle destination that has access to the required key ing | |||
| information, in accordance with <xref target="interact"/>. | information, in accordance with <xref target="interact" format="d | |||
| </t> | efault"/>. | |||
| </li> | ||||
| </list> | </ul> | |||
| </t> | </section> | |||
| </section> | <section anchor="BCB" toc="default" numbered="true"> | |||
| <name>Block Confidentiality Block</name> | ||||
| <section anchor="BCB" title="Block Confidentiality Block" toc="default"> | <t> | |||
| <t> | A BCB is a BP extension block with the following characteristics. | |||
| A BCB is a bundle extension block with the following characteristics. | ||||
| <list> | ||||
| <t> | ||||
| The Block Type Code value is as specified in | ||||
| <xref target="BlockType"/>. | ||||
| </t> | ||||
| <t> | ||||
| The Block Processing Control flags value can be set to whatever | ||||
| values are required by local policy with the following exceptions | ||||
| . | ||||
| BCB blocks MUST have the "block must be replicated in every fragm | ||||
| ent" 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 "bl | ||||
| ock must | ||||
| be removed from bundle if it can't be processed" flag set. Removi | ||||
| ng a BCB from | ||||
| a bundle without decrypting its security targets removes informat | ||||
| ion from | ||||
| the bundle necessary for their later decryption. | ||||
| </t> | ||||
| <t> | </t> | |||
| The block-type-specific-data fields follow the structure of the | <ul spacing="normal"> | |||
| <li> | ||||
| The block type code value is as specified in | ||||
| <xref target="BlockType" format="default"/>. | ||||
| </li> | ||||
| <li><t> | ||||
| The block processing control flags value can be set to | ||||
| whatever values are required by local policy with the | ||||
| following exceptions: </t> | ||||
| <ul> | ||||
| <li> | ||||
| BCBs <bcp14>MUST</bcp14> | ||||
| 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. </li> | ||||
| <li> | ||||
| BCBs <bcp14>MUST | ||||
| NOT</bcp14> 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. | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li> | ||||
| The block-type-specific data fields follow the structure of the | ||||
| ASB. | ASB. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | A security target listed in the Security Targets field | |||
| A security target listed in the Security Targets field can | can reference the payload block, a non-security | |||
| reference the payload block, a non-security extension block, | extension block, or a BIB. A BCB <bcp14>MUST | |||
| or a BIB. A BCB MUST NOT include another BCB as a security | NOT</bcp14> include another BCB as a security target. A | |||
| target. A BCB MUST NOT target the primary block. A BCB MUST | BCB <bcp14>MUST NOT</bcp14> target the primary block. A | |||
| NOT target a BIB block unless it shares a security target | BCB <bcp14>MUST NOT</bcp14> target a BIB unless | |||
| with that BIB block. | it shares a security target with that BIB. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | Any security context used by a BCB <bcp14>MUST</bcp14> utilize a | |||
| Any Security Context used by a BCB MUST utilize a confidentiality | confidentiality | |||
| cipher that provides authenticated encryption with | cipher that provides authenticated encryption with | |||
| associated data (AEAD). | associated data (AEAD). | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | ||||
| Additional information created by a cipher suite (such as | Additional information created by a cipher suite (such as | |||
| an authentication tag) can be placed either in a | an authentication tag) can be placed either in a | |||
| security result field or in the generated cipher text. The | security result field or in the generated ciphertext. The | |||
| determination of where to place this information is a function of the | determination of where to place this information is a function of the | |||
| cipher suite and security context used. | cipher suite and security context used. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | <t> | |||
| <t> | ||||
| 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. | |||
| </t> | </t> | |||
| <t>Notes: | ||||
| <t>Notes: | </t> | |||
| <list style="symbols"> | <ul spacing="normal"> | |||
| <t> | <li> | |||
| It is RECOMMENDED that designers carefully | It is <bcp14>RECOMMENDED</bcp14> that designers carefully | |||
| consider the effect of setting flags that delete the bundle in | consider the effect of setting flags that delete the bundle in | |||
| the event that this block cannot be processed. | the event that this block cannot be processed. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| 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 | setting of such flags should be an implementation/policy | |||
| decision for the encrypting node. | decision for the encrypting node. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | </section> | |||
| </section> | <section anchor="interact" toc="default" numbered="true"> | |||
| <name>Block Interactions</name> | ||||
| <section anchor="interact" title="Block Interactions" toc="default"> | <t> | |||
| <t> | ||||
| The security block types defined in this specification are | The security block types defined in this specification are | |||
| designed to be as independent as possible. However, there are some | designed to be as independent as possible. | |||
| cases where security blocks may share a security target creating | However, there are some cases where security blocks may share a | |||
| processing dependencies. | security target; this sharing creates processing dependencies. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | If a BCB and a BIB share a security target, an undesirable | |||
| If a security target of a BCB is also a security target of a BIB, | condition occurs: a waypoint would be unable to validate the BIB | |||
| an undesirable condition occurs where a waypoint would | because the shared security target has been encrypted by the BCB. | |||
| be unable to validate the BIB because one of its security target's | To address this situation, the | |||
| contents have been encrypted by a BCB. To address this situation the | following processing rules <bcp14>MUST</bcp14> be followed: | |||
| following processing rules MUST be followed. | </t> | |||
| </t> | <ul spacing="normal"> | |||
| <li> | ||||
| <t> | When adding a BCB to a bundle, if some (or all) of the | |||
| <list style="symbols"> | security targets of the BCB match all of the | |||
| <t> | security targets of an existing BIB, then the existing | |||
| When adding a BCB to a bundle, if some (or all) of the security | BIB <bcp14>MUST</bcp14> also be encrypted. This can be | |||
| targets of the BCB also match all of the security targets of | accomplished either by adding a new BCB that targets | |||
| an existing BIB, then the existing BIB MUST also be encrypted. | the existing BIB or by adding the BIB to the list of | |||
| This can be accomplished by either adding a new BCB that | security targets for the BCB. Deciding which way to | |||
| targets the existing BIB, or by adding the BIB to | represent this situation is a matter of security | |||
| the list of security targets for the BCB. Deciding which way | policy. | |||
| to represent this situation is a matter of security policy. | </li> | |||
| </t> | <li> | |||
| <t> | When adding a BCB to a bundle, if some (or all) of the | |||
| When adding a BCB to a bundle, if some (or all) of the security | security targets of the BCB match some (but not all) of | |||
| targets of the BCB match some (but not all) of the security | the security targets of a BIB, then that BIB | |||
| targets of a BIB then that BIB MUST be altered in the following | <bcp14>MUST</bcp14> be altered in the following | |||
| way. Any security results in the BIB associated with the BCB | way. Any security results in the BIB associated with | |||
| security targets MUST be removed from the BIB and placed in | the BCB security targets <bcp14>MUST</bcp14> be removed | |||
| a new BIB. This newly created BIB MUST then be encrypted. | from the BIB and placed in a new BIB. This newly | |||
| The encryption of the new BIB can be accomplished by | created BIB <bcp14>MUST</bcp14> then be encrypted. The | |||
| either adding a new BCB that targets the new BIB, or by | encryption of the new BIB can be accomplished either by | |||
| adding the new BIB to the list of security targets for the BCB. | adding a new BCB that targets the new BIB or by adding | |||
| Deciding which way to represent this situation is a matter of | the new BIB to the list of security targets for the | |||
| security policy. | BCB. Deciding which way to represent this situation is | |||
| </t> | a matter of security policy. | |||
| </li> | ||||
| <t> | <li> | |||
| A BIB MUST NOT be added for a security target that is already | A BIB <bcp14>MUST NOT</bcp14> be added for a security | |||
| the security target of a BCB as this would cause | target that is already the security target of a BCB as | |||
| ambiguity in block processing order. | this would cause ambiguity in block processing order. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | A BIB integrity value <bcp14>MUST NOT</bcp14> be | |||
| A BIB integrity value MUST NOT be checked if the BIB is the | checked if the BIB is the security target of an | |||
| security target of an existing BCB. In this case, the BIB | existing BCB. In this case, the BIB data is encrypted. | |||
| data is encrypted. | </li> | |||
| </t> | <li> | |||
| <t> | A BIB integrity value <bcp14>MUST NOT</bcp14> be | |||
| A BIB integrity value MUST NOT be checked if the security | checked if the security target associated with that | |||
| target associated with that value is also the security target of | value is also the security target of a BCB. In such a | |||
| a BCB. In such | case, the security target data contains ciphertext as | |||
| a case, the security target data contains cipher text as it has | it has been encrypted. | |||
| been encrypted. | </li> | |||
| </t> | <li> | |||
| <t> | As mentioned in <xref target="BIB" format="default"/>, | |||
| As mentioned in <xref target="BIB"/>, a BIB MUST NOT have a | a BIB <bcp14>MUST NOT</bcp14> have a BCB as its | |||
| BCB as its security target. | security target. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | <t> | |||
| These restrictions on block interactions impose a necessary | ||||
| <t> | ordering when applying security operations within a | |||
| These restrictions on block interactions impose a necessary ordering | bundle. Specifically, for a given security target, BIBs | |||
| when applying security operations within a bundle. Specifically, for | <bcp14>MUST</bcp14> be added before BCBs. This ordering | |||
| a given security target, BIBs MUST be added before BCBs. This | <bcp14>MUST</bcp14> be preserved in cases where the current | |||
| ordering MUST be preserved in cases where the current BPA is adding | BPA is adding all of the security blocks for the bundle or | |||
| all of the security blocks for the bundle or whether the BPA is a | where the BPA is a waypoint adding new security blocks to a | |||
| waypoint adding new security blocks to a bundle that already contains | bundle that already contains security blocks. | |||
| security blocks. | </t> | |||
| </t> | <t> | |||
| <t> | In cases where a security source wishes to calculate both a | |||
| In cases where a security source wishes to | plaintext integrity-protection mechanism and encrypt a security target, | |||
| calculate both a plain text integrity mechanism and encrypt a | a BCB with a security context that generates an | |||
| security target, a BCB with a security context that generates an integr | integrity-protection mechanism as one or more additional | |||
| ity-protection mechanism | security results <bcp14>MUST</bcp14> be used instead of | |||
| as one or more additional security results MUST be used instead of | adding both a BIB and then a BCB for the security target at | |||
| adding both a BIB and then a BCB for the security target at the | the security source. | |||
| security source. | </t> | |||
| </t> | </section> | |||
| </section> | <section anchor="parmresult" numbered="true" toc="default"> | |||
| <name>Parameter and Result Identification</name> | ||||
| <section anchor="parmresult" title="Parameter and Result Identification"> | <t> | |||
| <t> | Each security context <bcp14>MUST</bcp14> define its own | |||
| Each security context MUST define its own context parameters and result | context parameters and results. Each defined parameter and | |||
| s. | result is represented as the tuple of an identifier and a | |||
| Each defined parameter and result is represented as the tuple of an | value. Identifiers are always represented as a CBOR unsigned | |||
| identifier and a value. Identifiers are always represented as a CBOR | integer. The CBOR encoding of values is as defined by the | |||
| unsigned integer. The CBOR encoding of values is as defined by the | ||||
| security context specification. | security context specification. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Identifiers MUST be unique for a given security context but do not need | Identifiers <bcp14>MUST</bcp14> be unique for a given | |||
| to be unique amongst all security contexts. | security context but do not need to be unique amongst all | |||
| </t> | security contexts. | |||
| <t> | </t> | |||
| An example of a security context can be found at <xref target="I-D.ietf | <t> | |||
| -dtn-bpsec-default-sc"/>. | An example of a security context can be found in <xref | |||
| </t> | target="RFC9173" format="default"/>. | |||
| </section> | </t> | |||
| </section> | ||||
| <section anchor="bsp_example" title="BSP Block Examples" toc="default"> | <section anchor="bsp_example" toc="default" numbered="true"> | |||
| <t> | <name>BPSec Block Examples</name> | |||
| <t> | ||||
| This section provides two examples of BPSec blocks applied to | This section provides two examples of BPSec blocks applied to | |||
| a bundle. In the first example, a single node adds several | bundles. In the first example, a single node adds several | |||
| security operations to a bundle. In the second example, a waypoint | security operations to a bundle. In the second example, a | |||
| node received the bundle created in the first example and adds | waypoint node received the bundle created in the first | |||
| additional security operations. In both examples, the first column | example and adds additional security operations. In both | |||
| represents blocks within a bundle and the second column represents | examples, the first column represents blocks within a bundle | |||
| the Block Number for the block, using the terminology B1...Bn for the | and the second column represents the block number for the | |||
| purpose of illustration. | block, using the terminology B1...Bn for the purpose of | |||
| </t> | illustration. | |||
| </t> | ||||
| <section title="Example 1: Constructing a Bundle with Security"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Example 1: Constructing a Bundle with Security</name> | |||
| In this example a bundle has four non-security-related blocks: the | <t> | |||
| primary block (B1), two extension blocks (B4,B5), and a payload | In this example, a bundle has four non-security-related | |||
| block (B6). The bundle source wishes to provide an integrity | blocks: the primary block (B1), two extension blocks | |||
| signature of the plain text associated with the primary block, the | (B4, B5), and a payload block (B6). The bundle source | |||
| second extension block, and the payload. The bundle source also | wishes to provide an integrity signature of the plaintext | |||
| wishes to provide confidentiality for the first extension block. | associated with the primary block, the second extension | |||
| The resultant bundle is illustrated in <xref target="bsp_ex1"/> and | block, and the payload. The bundle source also wishes to | |||
| the security actions are described below. | provide confidentiality for the first extension block. | |||
| The resultant bundle is illustrated in <xref | ||||
| <figure anchor="bsp_ex1" title="Security at Bundle Creation"> | target="bsp_ex1" format="default"/> and the security | |||
| <artwork align="center">
<!-- | actions are described below. | |||
| --> Block in Bundle ID
<!-- | </t> | |||
| -->+==========================================+====+
<!-- | <figure anchor="bsp_ex1"> | |||
| -->| Primary Block | B1 |
<!-- | <name>Security at Bundle Creation</name> | |||
| -->+------------------------------------------+----+
<!-- | <artwork align="center" name="" type="" alt=""> | |||
| -->| BIB | B2 |
<!-- | Block in Bundle ID | |||
| -->| OP(bib-integrity, targets=B1, B5, B6) | |
<!-- | +==========================================+====+ | |||
| -->+------------------------------------------+----+
<!-- | | Primary Block | B1 | | |||
| -->| BCB | B3 |
<!-- | +------------------------------------------+----+ | |||
| -->| OP(bcb-confidentiality, target=B4) | |
<!-- | | BIB | B2 | | |||
| -->+------------------------------------------+----+
<!-- | | OP(bib-integrity, targets = B1, B5, B6)| | | |||
| -->| Extension Block (encrypted) | B4 |
<!-- | +------------------------------------------+----+ | |||
| -->+------------------------------------------+----+
<!-- | | BCB | B3 | | |||
| -->| Extension Block | B5 |
<!-- | | OP(bcb-confidentiality, target = B4) | | | |||
| -->+------------------------------------------+----+
<!-- | +------------------------------------------+----+ | |||
| -->| Payload Block | B6 |
<!-- | | Extension Block (encrypted) | B4 | | |||
| -->+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| </artwork> | | Extension Block | B5 | | |||
| </figure> | +------------------------------------------+----+ | |||
| </t> | | Payload Block | B6 | | |||
| <t> | +------------------------------------------+----+</artwork> | |||
| </figure> | ||||
| <t> | ||||
| 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. | |||
| <list style="symbols"> | </t> | |||
| <ul spacing="normal"> | ||||
| <t> | <li> | |||
| 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-speci | primary block (B1), the canonical form of the block-type-speci | |||
| fic-data field | fic data field | |||
| of the second extension block (B5) and the canonical form of t | of the second extension block (B5), and the canonical form of | |||
| he | the | |||
| payload block (B6). This is accomplished by a single BIB (B2) | payload block (B6). This is accomplished by a single BIB (B2) | |||
| with multiple targets. A single BIB is used in this case | 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 | context, and security context parameters. Had this not been | |||
| the case, multiple BIBs could have been added instead. | the case, multiple BIBs could have been added instead. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | ||||
| 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-speci | accomplished by a BCB (B3). Once applied, the block-type-speci | |||
| fic-data | fic data | |||
| field of extension block B4 is encrypted. The BCB MUST | field of extension block B4 is encrypted. The BCB <bcp14>MUST< | |||
| hold an authentication tag for the cipher text either | /bcp14> | |||
| in the cipher text that now populates the first extension | hold an authentication tag for the ciphertext either | |||
| in the ciphertext that now populates the first extension | ||||
| block or as a security result in the BCB itself, depending | block or as a security result in the BCB itself, depending | |||
| on which security context is used to form the BCB. A plain tex t | on which security context is used to form the BCB. A plaintext | |||
| integrity signature may also exist as a security result in | integrity signature may also exist as a security result in | |||
| the BCB if one is provided by the selected confidentiality | the BCB if one is provided by the selected confidentiality | |||
| security context. | security context. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | </section> | |||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Example 2: Adding More Security at a New Node</name> | ||||
| <section title="Example 2: Adding More Security At A New Node"> | <t> | |||
| <t> | Consider that the bundle as it is illustrated in <xref | |||
| Consider that the bundle as it is illustrated in | target="bsp_ex1" format="default"/> is now received by a | |||
| <xref target="bsp_ex1"/> is now received by a waypoint node that | waypoint node that wishes to encrypt the second extension | |||
| wishes to encrypt the second extension block and the bundle payload. | block and the bundle payload. The waypoint security | |||
| The waypoint security policy is to allow existing BIBs for these | policy is to allow existing BIBs for these blocks to | |||
| blocks to persist, as they may be required as part of the security | persist, as they may be required as part of the security | |||
| policy at the bundle destination. | policy at the bundle destination. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The resultant bundle is illustrated in <xref target="bsp_ex2"/> | The resultant bundle is illustrated in <xref target="bsp_ex2" format | |||
| ="default"/> | ||||
| and the security actions are described below. Note that block IDs | and the security actions are described below. Note that block IDs | |||
| provided here are ordered solely for the purpose of this example | provided here are ordered solely for the purpose of this example | |||
| and not meant to impose an ordering for block creation. The | and are not meant to impose an ordering for block creation. The | |||
| ordering of blocks added to a bundle MUST always be in compliance | ordering of blocks added to a bundle <bcp14>MUST</bcp14> always be i | |||
| with <xref target="I-D.ietf-dtn-bpbis"/>. | n compliance | |||
| with <xref target="RFC9171" format="default"/>. | ||||
| <figure anchor="bsp_ex2" title="Security At Bundle Forwarding"> | </t> | |||
| <artwork align="center">
<!-- | <figure anchor="bsp_ex2"> | |||
| --> Block in Bundle ID
<!-- | <name>Security at Bundle Forwarding</name> | |||
| -->+==========================================+====+
<!-- | <artwork align="center" name="" type="" alt=""> | |||
| -->| Primary Block | B1 |
<!-- | Block in Bundle ID | |||
| -->+------------------------------------------+----+
<!-- | +==========================================+====+ | |||
| -->| BIB | B2 |
<!-- | | Primary Block | B1 | | |||
| -->| OP(bib-integrity, targets=B1) | |
<!-- | +------------------------------------------+----+ | |||
| -->+------------------------------------------+----+
<!-- | | BIB | B2 | | |||
| -->| BIB (encrypted) | B7 |
<!-- | | OP(bib-integrity, target = B1) | | | |||
| -->| OP(bib-integrity, targets=B5, B6) | |
<!-- | +------------------------------------------+----+ | |||
| -->+------------------------------------------+----+
<!-- | | BIB (encrypted) | B7 | | |||
| -->| BCB | B8 |
<!-- | | OP(bib-integrity, targets = B5, B6) | | | |||
| -->| OP(bcb-confidentiality,targets=B5,B6,B7) | |
<!-- | +------------------------------------------+----+ | |||
| -->+------------------------------------------+----+
<!-- | | BCB | B8 | | |||
| -->| BCB | B3 |
<!-- | |OP(bcb-confidentiality,targets = B5,B6,B7)| | | |||
| -->| OP(bcb-confidentiality, target=B4) | |
<!-- | +------------------------------------------+----+ | |||
| -->+------------------------------------------+----+
<!-- | | BCB | B3 | | |||
| -->| Extension Block (encrypted) | B4 |
<!-- | | OP(bcb-confidentiality, target = B4) | | | |||
| -->+------------------------------------------+----+
<!-- | +------------------------------------------+----+ | |||
| -->| Extension Block (encrypted) | B5 |
<!-- | | Extension Block (encrypted) | B4 | | |||
| -->+------------------------------------------+----+
<!-- | +------------------------------------------+----+ | |||
| -->| Payload Block (encrypted) | B6 |
<!-- | | Extension Block (encrypted) | B5 | | |||
| -->+------------------------------------------+----+ | +------------------------------------------+----+ | |||
| </artwork> | | Payload Block (encrypted) | B6 | | |||
| </figure> | +------------------------------------------+----+</artwork> | |||
| </t> | </figure> | |||
| <t> | <t> | |||
| 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. | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| <li> | ||||
| Since the waypoint node wishes to encrypt the | Since the waypoint node wishes to encrypt the | |||
| block-type-specific-data field of blocks B5 and B6, | block-type-specific data field of blocks B5 and B6, | |||
| it MUST also encrypt the block-type-specific-data field of | it <bcp14>MUST</bcp14> also encrypt the block-type-specific da | |||
| the BIBs providing plain text integrity | ta field of | |||
| the BIBs providing plaintext integrity | ||||
| over those blocks. However, BIB B2 could not be encrypted | over those blocks. However, BIB B2 could not be encrypted | |||
| in its entirety because it also held a signature for the | in its entirety because it also held a signature for the | |||
| primary block (B1). Therefore, a new BIB (B7) is created and | primary block (B1). Therefore, a new BIB (B7) is created and | |||
| security results associated with B5 and B6 are moved out | security results associated with B5 and B6 are moved out | |||
| of BIB B2 and into BIB B7. | of BIB B2 and into BIB B7. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| Now that there is no longer confusion of which plain text | Now that there is no longer confusion about which plaintext | |||
| integrity signatures must be encrypted, a BCB is added to the | integrity signatures must be encrypted, a BCB is added to the | |||
| bundle with the security targets being the second extension | bundle with the security targets being the second extension | |||
| block (B5) and the payload (B6) as well as the newly created | block (B5) and the payload (B6) as well as the newly created | |||
| BIB holding their plain text integrity signatures (B7). A | BIB holding their plaintext integrity signatures (B7). A | |||
| single new BCB is used in this case because all three | single new BCB is used in this case because all three | |||
| targets share a security source, security context, and | targets share a security source, security context, and | |||
| security context parameters. Had this not been the case, | security context parameters. Had this not been the case, | |||
| multiple BCBs could have been added instead. | multiple BCBs could have been added instead. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="CanonBundle" toc="default" numbered="true"> | ||||
| </section> | <name>Canonical Forms</name> | |||
| <t> | ||||
| <section anchor="CanonBundle" title="Canonical Forms" toc="default"> | ||||
| <t> | ||||
| Security services require consistency and determinism in how information | Security services require consistency and determinism in how information | |||
| is presented to cipher suites at security sources, verifiers, and acceptor s. | is presented to cipher suites at security sources, verifiers, and acceptor s. | |||
| For example, integrity services require that the same target | For example, integrity services require that the same target | |||
| information (e.g., the same bits in the same order) is provided to the | information (e.g., the same bits in the same order) is provided to the | |||
| cipher suite when generating an original signature and when validating a | cipher suite when generating an original signature and when validating a | |||
| signature. Canonicalization algorithms transcode the contents of a securit y | signature. Canonicalization algorithms transcode the contents of a securit y | |||
| target into a canonical form. | target into a canonical form. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| 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 are | 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 same even | unchanged, then the canonical form of that target will be the same even | |||
| if the encoding of those values for wire transmission is different. | if the encoding of those values for wire transmission is different. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| BPSec operates on data fields within bundle blocks | BPSec operates on data fields within bundle blocks | |||
| (e.g., the block-type-specific-data field). In their canonical form, these | (e.g., the block-type-specific data field). In their canonical form, these | |||
| fields MUST include their own CBOR encoding and MUST NOT include any | fields <bcp14>MUST</bcp14> include their own CBOR encoding and <bcp14>MUST | |||
| NOT</bcp14> include any | ||||
| other encapsulating CBOR encoding. | other encapsulating CBOR encoding. | |||
| For example, the canonical form of the block-type-specific-data field | For example, the canonical form of the block-type-specific data field | |||
| is a CBOR byte string existing within the CBOR array containing the fields of | is a CBOR byte string existing within the CBOR array containing the fields of | |||
| the extension block. The entire CBOR byte string is considered the canonic al | the extension block. The entire CBOR byte string is considered the canonic al | |||
| block-type-specific-data field. The CBOR array | block-type-specific data field. The CBOR array | |||
| framing is not considered part of the field. | framing is not considered part of the field. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | The canonical form of the primary block is as specified in <xref target="R | |||
| The canonical form of the primary block is as specified in <xref target="I | FC9171" format="default"/> with | |||
| -D.ietf-dtn-bpbis"/> with | ||||
| the following constraint. | the following constraint. | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| CBOR values from the primary block MUST be canonicalized using the r | <li> | |||
| ules for Deterministically Encoded CBOR, | CBOR values from the primary block <bcp14>MUST</bcp14> be canonicali | |||
| as specified in <xref target="RFC8949"/>. | zed using the rules for Deterministically Encoded CBOR, | |||
| </t> | as specified in <xref target="RFC8949" format="default"/>. | |||
| </list> | </li> | |||
| </t> | </ul> | |||
| <t> | ||||
| <t> | ||||
| 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 <xref target="I-D.ietf-dtn-bpbis"/> with | canonicalized as specified in <xref target="RFC9171" format="default"/> wi th | |||
| the following constraints. | the following constraints. | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| CBOR values from the non-primary block MUST be canonicalized using t | <li> | |||
| he rules for Deterministically Encoded CBOR, | CBOR values from the non-primary block <bcp14>MUST</bcp14> be canoni | |||
| as specified in <xref target="RFC8949"/>. | calized using the rules for Deterministically Encoded CBOR, | |||
| </t> | as specified in <xref target="RFC8949" format="default"/>. | |||
| <t> | </li> | |||
| Only the block-type-specific-data field may be provided to a cipher | <li> | |||
| suite for | Only the block-type-specific data field may be provided to a cipher | |||
| encryption as part of a confidentiality security service. Other fiel | suite for | |||
| ds within a non-primary-block | encryption as part of a confidentiality security service. Other fiel | |||
| MUST NOT be encrypted or decrypted and MUST NOT be included in the c | ds within a non-primary block | |||
| anonical form used by the | <bcp14>MUST NOT</bcp14> be encrypted or decrypted and <bcp14>MUST NO | |||
| cipher suite for encryption and decryption. These other fields MAY h | T</bcp14> be included in the canonical form used by the | |||
| ave an integrity protection | cipher suite for encryption and decryption. | |||
| mechanism applied to them by treating them as associated authenticat | An integrity-protection mechanism <bcp14>MAY</bcp14> be applied to these o | |||
| ed data. | ther | |||
| </t> | fields as supported by the security context. For example, these | |||
| <t> | fields might be treated as associated authenticated data. | |||
| Reserved and unassigned flags in the block processing control flags | </li> | |||
| field MUST be set to 0 in | <li> | |||
| Reserved and unassigned flags in the block processing control flags | ||||
| field <bcp14>MUST</bcp14> be set to 0 in | ||||
| a canonical form as it is not known if those flags will change in tr ansit. | a canonical form as it is not known if those flags will change in tr ansit. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | <t> | |||
| Security contexts <bcp14>MAY</bcp14> define their own canonicalization alg | ||||
| <t> | orithms and require the use of those algorithms | |||
| Security contexts MAY define their own canonicalization algorithms and req | ||||
| uire the use of those algorithms | ||||
| over the ones provided in this specification. In the event of conflicting canonicalization algorithms, algorithms | over the ones provided in this specification. In the event of conflicting canonicalization algorithms, algorithms | |||
| defined in a security context take precedence over this specification when constructing canonical forms for that | defined in a security context take precedence over this specification when constructing canonical forms for that | |||
| security context. | security context. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="SecProc" toc="default" numbered="true"> | ||||
| <section anchor="SecProc" title="Security Processing" toc="default"> | <name>Security Processing</name> | |||
| <t> | ||||
| This section describes the security aspects of bundle processing. | ||||
| </t> | ||||
| <section anchor="BundleRX" title="Bundles Received from Other Nodes"> | ||||
| <t> | <t> | |||
| This section describes the security aspects of bundle processing. | ||||
| </t> | ||||
| <section anchor="BundleRX" numbered="true" toc="default"> | ||||
| <name>Bundles Received from Other Nodes</name> | ||||
| <t> | ||||
| Security blocks must be processed in a specific order when received | Security blocks must be processed in a specific order when received | |||
| by a BP node. The processing order is as follows. | by a BP node. The processing order is as follows. | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| When BIBs and BCBs share a security target, BCBs MUST be | <li> | |||
| When BIBs and BCBs share a security target, BCBs <bcp14>MUST</bcp | ||||
| 14> be | ||||
| evaluated first and BIBs second. | evaluated first and BIBs second. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | <section toc="default" numbered="true"> | |||
| <name>Receiving BCBs</name> | ||||
| <section title="Receiving BCBs" toc="default"> | <t> | |||
| <t> | If a received bundle contains a BCB, the receiving node <bcp14>MUST< | |||
| If a received bundle contains a BCB, the receiving node MUST | /bcp14> | |||
| determine whether it is the security acceptor for any of | determine whether it is the security acceptor for any of | |||
| the security operations in the BCB. If so, the node MUST | the security operations in the BCB. If so, the node <bcp14>MUST</bcp 14> | |||
| process those operations and remove any operation-specific | process those operations and remove any operation-specific | |||
| information from the BCB prior to delivering data to an application at the node | information from the BCB prior to delivering data to an application at the node | |||
| or forwarding the bundle. If processing a security operation fails, | or forwarding the bundle. If processing a security operation fails, | |||
| the target SHALL be processed according to the security policy. | the target <bcp14>SHALL</bcp14> be processed according to the securi | |||
| A bundle status report indicating the failure MAY be generated. | ty policy. | |||
| A bundle status report indicating the failure <bcp14>MAY</bcp14> be | ||||
| generated. | ||||
| When all security operations for a BCB have been removed from | When all security operations for a BCB have been removed from | |||
| the BCB, the BCB MUST be removed from the bundle. | the BCB, the BCB <bcp14>MUST</bcp14> be removed from the bundle. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | If the receiving node is the destination of the bundle, | |||
| If the receiving node is the destination of the bundle, the node | the node <bcp14>MUST</bcp14> decrypt any BCBs remaining in | |||
| MUST decrypt any BCBs remaining in the bundle. If the receiving | the bundle. If the receiving node is not the destination | |||
| node is not the destination of the bundle, the node MUST process | of the bundle, the node <bcp14>MUST</bcp14> process the | |||
| the BCB if directed to do so as a matter of security policy. | BCB if directed to do so as a matter of security policy. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | If the security policy of a node specifies that a node | |||
| If the security policy of a node specifies that a | should have applied confidentiality to a specific security | |||
| node should have applied confidentiality to a specific security | target and no such BCB is present in the bundle, then the | |||
| target and no such BCB is present in the bundle, then the node | node <bcp14>MUST</bcp14> process this security target in | |||
| MUST process this security target in accordance with the security | accordance with the security policy. It is | |||
| policy. It is RECOMMENDED that the node remove the security target | <bcp14>RECOMMENDED</bcp14> that the node remove the | |||
| from the bundle because the confidentiality (and possibly the integr | security target from the bundle because the | |||
| ity) | confidentiality (and possibly the integrity) of the | |||
| of the security target cannot be guaranteed. If the removed security | security target cannot be guaranteed. If the removed | |||
| target | security target is the payload block, the bundle | |||
| is the payload block, the bundle MUST be discarded. | <bcp14>MUST</bcp14> be discarded. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | If an encrypted payload block cannot be decrypted (i.e., | |||
| If an encrypted payload block cannot be decrypted (i.e., the | the ciphertext cannot be authenticated), then the bundle | |||
| cipher text cannot be authenticated), then the bundle MUST be | <bcp14>MUST</bcp14> be discarded and processed no | |||
| discarded and processed no further. If an encrypted security | further. If an encrypted security target other than the | |||
| target other than the payload block cannot be decrypted then the | payload block cannot be decrypted, then the associated | |||
| associated security target and all security blocks associated with | security target and all security blocks associated with | |||
| that target MUST be discarded and processed no further. In both | that target <bcp14>MUST</bcp14> be discarded and processed | |||
| cases, requested status reports (see | no further. In both cases, requested status reports (see | |||
| <xref target="I-D.ietf-dtn-bpbis"/>) MAY be generated to reflect | <xref target="RFC9171" format="default"/>) | |||
| bundle or block deletion. | <bcp14>MAY</bcp14> be generated to reflect bundle or block | |||
| </t> | deletion. | |||
| </t> | ||||
| <t> | <t> | |||
| When a BCB is decrypted, the recovered plain text for each | When a BCB is decrypted, the recovered plaintext for each | |||
| security target MUST replace the cipher text in each of the | security target <bcp14>MUST</bcp14> replace the ciphertext in each o | |||
| security targets' block-type-specific-data fields. If the | f the | |||
| plain text is of different size than the cipher text, the CBOR byte | security targets' block-type-specific data fields. If the | |||
| string framing of this field must be updated to ensure this field | plaintext is of a different size than the ciphertext, the framing of | |||
| remains a valid CBOR byte string. The length of the recovered plain | the CBOR byte | |||
| text is known by the decrypting security context. | string of this field must be updated to ensure this field | |||
| </t> | remains a valid CBOR byte string. The length of the recovered plaint | |||
| ext | ||||
| <t> | is known by the decrypting security context. | |||
| </t> | ||||
| <t> | ||||
| If a BCB contains multiple security operations, each operation proce ssed | If a BCB contains multiple security operations, each operation proce ssed | |||
| by the node MUST be treated as if the security operation | by the node <bcp14>MUST</bcp14> be treated as if the security operat ion | |||
| has been represented by a single BCB with a single | has been represented by a single BCB with a single | |||
| security operation for the purposes of report generation and policy | security operation for the purposes of report generation and policy | |||
| processing. | processing. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section toc="default" numbered="true"> | |||
| <name>Receiving BIBs</name> | ||||
| <section title="Receiving BIBs" toc="default"> | <t> | |||
| If a received bundle contains a BIB, the receiving node | ||||
| <t> | <bcp14>MUST</bcp14> determine whether it is the security | |||
| If a received bundle contains a BIB, the receiving node MUST | acceptor for any of the security operations in the BIB. If | |||
| determine whether it is the security acceptor for any of | so, the node <bcp14>MUST</bcp14> process those operations | |||
| the security operations in the BIB. If so, the node MUST process | and remove any operation-specific information from the BIB | |||
| those operations and remove any operation-specific information | prior to delivering data to an application at the node or | |||
| from the BIB prior to delivering data to an application at the node | forwarding the bundle. If processing a security operation | |||
| or forwarding the bundle. If processing a security operation fails, | fails, the target <bcp14>SHALL</bcp14> be processed | |||
| the target SHALL be processed according to the security policy. A | according to the security policy. A bundle status report | |||
| bundle status report indicating the failure MAY be generated. When | indicating the failure <bcp14>MAY</bcp14> be | |||
| all security operations for a BIB have been removed from the BIB, | generated. When all security operations for a BIB have | |||
| the BIB MUST be removed from the bundle. | been removed from the BIB, the BIB <bcp14>MUST</bcp14> be | |||
| </t> | removed from the bundle. | |||
| </t> | ||||
| <t> | <t> | |||
| A BIB MUST NOT be processed if the security target of the BIB is | A BIB <bcp14>MUST NOT</bcp14> be processed if the security | |||
| also the security target of a BCB in the bundle. Given the order of | target of the BIB is also the security target of a BCB in | |||
| operations mandated by this specification, when both a BIB and a | the bundle. Given the order of operations mandated by this | |||
| BCB share a security target, it means that the security target | specification, when both a BIB and a BCB share a security | |||
| must have been encrypted after it was integrity signed and, | target, it means that the security target must have been | |||
| therefore, the BIB cannot be verified until the security target | encrypted after it was integrity signed; therefore, the | |||
| has been decrypted by processing the BCB. | BIB cannot be verified until the security target has been | |||
| </t> | decrypted by processing the BCB. | |||
| </t> | ||||
| <t> | <t> | |||
| If the security policy of a node specifies that a | If the security policy of a node specifies that a node | |||
| node should have applied integrity to a specific security target | should have applied integrity to a specific security | |||
| and no such BIB is present in the bundle, then the node MUST | target and no such BIB is present in the bundle, then the | |||
| process this security target in accordance with the security | node <bcp14>MUST</bcp14> process this security target in | |||
| policy. It is RECOMMENDED that the node remove the security | accordance with the security policy. It is | |||
| target from the bundle if the security target is not the | <bcp14>RECOMMENDED</bcp14> that the node remove the | |||
| payload or primary block. If the security target is | security target from the bundle if the security target is | |||
| the payload or primary block, the bundle MAY be | not the payload or primary block. If the security target | |||
| discarded. This action can occur at any node that has the | is the payload or primary block, the bundle | |||
| ability to verify an integrity signature, not just the bundle destin | <bcp14>MAY</bcp14> be discarded. This action can occur at | |||
| ation. | any node that has the ability to verify an integrity | |||
| </t> | signature, not just the bundle destination. | |||
| </t> | ||||
| <t> | <t> | |||
| If a receiving node is not the security acceptor of a security | If a receiving node is not the security acceptor of a | |||
| operation in a BIB it MAY attempt to verify the security operation | security operation in a BIB, it <bcp14>MAY</bcp14> attempt | |||
| anyway to prevent forwarding corrupt data. If the verification fails | to verify the security operation anyway to prevent | |||
| , the | forwarding corrupt data. If the verification fails, the | |||
| node SHALL process the security target in accordance to local | node <bcp14>SHALL</bcp14> process the security target in | |||
| security policy. It is RECOMMENDED that if a payload integrity | accordance with local security policy. | |||
| check fails at a waypoint that it is processed in the same way as | If a payload integrity check fails at a waypoint, it is | |||
| if the check fails at the bundle destination. If the check passes, t | <bcp14>RECOMMENDED</bcp14> that it be processed in the | |||
| he | same way as a failure of a payload | |||
| node MUST NOT remove the security operation from the BIB prior to fo | integrity check at the bundle destination. If | |||
| rwarding. | the check passes, the node <bcp14>MUST NOT</bcp14> remove | |||
| </t> | the security operation from the BIB prior to forwarding. | |||
| </t> | ||||
| <t> | <t> | |||
| If a BIB contains multiple security operations, each operation proce ssed | If a BIB contains multiple security operations, each operation proce ssed | |||
| by the node MUST be treated as if the security operation | by the node <bcp14>MUST</bcp14> be treated as if the security operat ion | |||
| has been represented by a single BIB with a single | has been represented by a single BIB with a single | |||
| security operation for the purposes of report generation and policy | security operation for the purposes of report generation and policy | |||
| processing. | processing. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="FragRe" numbered="true" toc="default"> | |||
| <name>Bundle Fragmentation and Reassembly</name> | ||||
| <section anchor="FragRe" title="Bundle Fragmentation and Reassembly"> | <t> | |||
| <t> | ||||
| 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 <xref target="I-D.ietf-dtn-bpbis"/> MUST be | rules described in <xref target="RFC9171" format="default"/> <bcp14>MUS T</bcp14> be | |||
| followed. As defined there and summarized here for completeness, only | followed. As defined there and summarized here for completeness, only | |||
| the payload block can be fragmented; security blocks, like all | the payload block can be fragmented; security blocks, like all | |||
| extension blocks, can never be fragmented. | extension blocks, can never be fragmented. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | 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 <bcp14>MUST NOT</bc | |||
| added to a bundle if the "Bundle is a Fragment" flag is set in the | p14> be | |||
| Bundle Processing Control Flags field. | added to a bundle if the "Bundle is a fragment" flag is set in the | |||
| </t> | bundle processing control flags field. | |||
| </t> | ||||
| <t> | <t> | |||
| Security processing in the presence of payload block fragmentation may | Security processing in the presence of payload-block fragmentation may | |||
| be handled by other mechanisms outside of the BPSec protocol or | 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 | mechanism. A node should apply any confidentiality | |||
| protection prior to performing any fragmentation. | protection prior to performing any fragmentation. | |||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="KeyMgmt" toc="default" numbered="true"> | ||||
| <name>Key Management</name> | ||||
| <t> | ||||
| There exists a myriad of ways to establish, communicate, and | ||||
| otherwise manage key information in DTN. Certain DTN | ||||
| deployments might follow established protocols for key | ||||
| management, whereas other DTN deployments might require new and | ||||
| novel approaches. BPSec assumes that key management is handled | ||||
| as a separate part of network management; this specification | ||||
| neither defines nor requires a specific strategy for key management. | ||||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | <section anchor="PolCons" toc="default" numbered="true"> | |||
| <name>Security Policy Considerations</name> | ||||
| <section anchor="KeyMgmt" title="Key Management" toc="default"> | <t> | |||
| <t> | ||||
| There exist a myriad of ways to establish, communicate, and otherwise | ||||
| manage key information in a DTN. Certain DTN deployments might follow | ||||
| established protocols for key management whereas other DTN deployments | ||||
| might require new and novel approaches. BPSec assumes that key | ||||
| management is handled as a separate part of network management and this | ||||
| specification neither defines nor requires a specific key management | ||||
| strategy. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="PolCons" title="Security Policy Considerations" toc="default"> | ||||
| <t> | ||||
| When implementing BPSec, several policy decisions must be | When implementing BPSec, several policy decisions must be | |||
| considered. This section describes key policies that affect the | considered. This section describes key policies that affect the | |||
| generation, forwarding, and receipt of bundles that are secured using | generation, forwarding, and receipt of bundles that are secured using | |||
| this specification. No single set of policy decisions is envisioned to | this specification. No single set of policy decisions is envisioned to | |||
| work for all secure DTN deployments. | work for all secure DTN deployments. | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| <li> | ||||
| If a bundle is received that contains combinations of | If a bundle is received that contains combinations of | |||
| security operations that are disallowed by this specification the BP | security operations that are disallowed by this | |||
| A must | specification, the BPA must determine how to handle the | |||
| determine how to handle the bundle. The bundle may be discarded, | bundle: the bundle may be discarded, the block affected by | |||
| the block affected by the security operation may be discarded, or | the security operation may be discarded, or one security | |||
| one security operation may be favored over another. | operation may be favored over another. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | ||||
| BPAs in the network must understand what security operations they | BPAs in the network must understand what security operations they | |||
| should apply to bundles. This decision may be based on the source | should apply to bundles. This decision may be based on the source | |||
| of the bundle, the destination of the bundle, or some other | of the bundle, the destination of the bundle, or some other | |||
| information related to the bundle. | information related to the bundle. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | If a waypoint has been configured to add a security | |||
| If a waypoint has been configured to add a | operation to a bundle, and the received bundle already has | |||
| security operation to a bundle, and the received bundle already has | the security operation applied, then the receiver must | |||
| the security operation applied, then the receiver must understand | understand what to do. The receiver may discard the | |||
| what to do. The receiver may discard the bundle, discard the | bundle, discard the security target and associated BPSec | |||
| security target and associated BPSec blocks, replace the | blocks, replace the security operation, or take some other | |||
| security operation, or some other action. | action. | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | It is <bcp14>RECOMMENDED</bcp14> that security operations | |||
| It is RECOMMENDED that security operations be applied to every | be applied to every block in a bundle and that the default | |||
| block in a bundle and that the default behavior of a bundle agent is | behavior of a BPA be to use the security services | |||
| to use the security services defined in this specification. Designer | defined in this specification. Designers should only | |||
| s | deviate from the use of security operations when the | |||
| should only deviate from the use of security operations when the dev | deviation can be justified -- such as when doing so causes | |||
| iation | downstream errors when processing blocks whose contents | |||
| can be justified - such as when doing so causes | must be inspected or changed at one or more hops along the | |||
| downstream errors when processing blocks whose contents must be | path. | |||
| inspected or changed at one or more hops along the path. | </li> | |||
| </t> | <li> | |||
| BCB security contexts can alter the size of extension | ||||
| <t> | blocks and the payload block. Security policy | |||
| BCB security contexts can alter the size of extension blocks and the | <bcp14>SHOULD</bcp14> consider how changes to the size of | |||
| payload block. Security policy SHOULD consider how changes to the si | a block could negatively effect bundle processing (e.g., | |||
| ze | calculating storage needs and scheduling transmission | |||
| of a block could negatively effect bundle processing (e.g., | times). | |||
| calculating storage needs and scheduling transmission times). | </li> | |||
| </t> | <li> | |||
| <t> | ||||
| <t> | ||||
| 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. | |||
| <list style="numbers"> | </t> | |||
| <t> | <ol spacing="normal" type="1"><li> | |||
| At the time of encryption, a security context can be | At the time of encryption, a security context can be | |||
| selected which computes a plain text integrity-protection mech anism | selected that computes a plaintext integrity-protection mechan ism | |||
| that is included as a security context result field. | that is included as a security context result field. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| The encrypted block may be replicated as a new block with | The encrypted block may be replicated as a new block with | |||
| a new block number and given integrity protection. | a new block number and may be given integrity protection. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| An encapsulation scheme may be applied to encapsulate the | 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 | target of a BCB and may therefore be the security target of | |||
| a BIB. | a BIB. | |||
| </t> | </li> | |||
| </list> | </ol> | |||
| </t> | </li> | |||
| <li> | ||||
| <t> | Security policy <bcp14>SHOULD</bcp14> address whether cipher | |||
| Security policy SHOULD address whether cipher | suites whose ciphertext is larger than the initial | |||
| suites whose cipher text is larger than the initial | plaintext are permitted and, if so, for what types of blocks. | |||
| plain text are permitted and, if so, for what types of blocks. | ||||
| Changing the size of a block may cause processing difficulties for | Changing the size of a block may cause processing difficulties for | |||
| networks that calculate block offsets into bundles or predict | networks that calculate block offsets into bundles or predict | |||
| transmission times or storage availability as a function of bundle | transmission times or storage availability as a function of bundle | |||
| size. In other cases, changing the size of a payload as part of | size. In other cases, changing the size of a payload as part of | |||
| encryption has no significant impact. | encryption has no significant impact. | |||
| </t> | </li> | |||
| </list> | </ul> | |||
| </t> | <section anchor="ReasonCodes" numbered="true" toc="default"> | |||
| <section anchor="ReasonCodes" title="Security Reason Codes"> | <name>Security Reason Codes</name> | |||
| <t> | <t> | |||
| Bundle protocol agents (BPAs) must process blocks and bundles in | BPAs must process blocks and bundles in | |||
| accordance with both BP policy and BPSec policy. The decision to | accordance with both BP policy and BPSec policy. The decision to | |||
| receive, forward, deliver, or delete a bundle may be communicated to | receive, forward, deliver, or delete a bundle may be communicated to | |||
| the report-to address of the bundle, in the form of a status report, | the report-to address of the bundle in the form of a status report, | |||
| as a method of tracking the progress of the bundle through the | as a method of tracking the progress of the bundle through the | |||
| network. The status report for a bundle may be augmented with a | network. The status report for a bundle may be augmented with a | |||
| "reason code" explaining why the particular action was taken on the | "reason code" explaining why the particular action was taken on the | |||
| bundle. | bundle. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| 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-related | security processing of a bundle. The communication of security-related | |||
| status reports might reduce the security of a network if these reports | status reports might reduce the security of a network if these reports | |||
| are intercepted by unintended recipients. BPSec policy SHOULD specify | are intercepted by unintended recipients. BPSec policy <bcp14>SHOULD</b cp14> specify | |||
| the conditions in which sending security reason codes are appropriate. | the conditions in which sending security reason codes are appropriate. | |||
| Examples of appropriate conditions for the use of security reason codes | Examples of appropriate conditions for the use of security reason codes | |||
| could include the following. | could include the following. | |||
| <list style="symbols"> | </t> | |||
| <t> | <ul spacing="normal"> | |||
| When the report-to address is verified as unchanged from the bund | <li> | |||
| le source. | When the report-to address is verified as unchanged | |||
| This can occur by placing an appropriate BIB on the bundle primar | from the bundle source. This can occur by placing an | |||
| y | appropriate BIB on the bundle primary block. | |||
| block. | </li> | |||
| </t> | <li> | |||
| <t> | When the block containing a status report with a | |||
| When the block containing a status report with a security reason | security reason code is encrypted by a BCB. | |||
| code | </li> | |||
| is encrypted by a BCB. | <li> | |||
| </t> | When a status report containing a security reason code | |||
| <t> | is only sent for security issues relating to bundles | |||
| When a status report containing a security reason code is only se | and/or blocks associated with non-operational user data | |||
| nt for | or test data. | |||
| security issues relating to bundles and/or blocks associated | </li> | |||
| with non-operational user data or otherwise with test data. | <li> | |||
| </t> | When a status report containing a security reason code | |||
| <t> | is only sent for security issues associated with | |||
| When a status report containing a security reason code is only se | non-operational security contexts, or security contexts | |||
| nt for | using non-operational configurations, such as test | |||
| security issues associated with non-operational security contexts | keys. | |||
| , or | </li> | |||
| security contexts using non-operational configurations, such as t | </ul> | |||
| est keys. | <t> | |||
| </t> | Security reason codes are assigned in accordance with <xref | |||
| </list> | target="secreasoncode" format="default"/> and are as | |||
| </t> | described below. | |||
| <t> | ||||
| Security reason codes are assigned in accordance with | ||||
| <xref target="secreasoncode"/> and are as described below. | ||||
| <list style="hanging" hangIndent="6"> | ||||
| <t hangText="Missing Security Operation:"> <vspace/> | ||||
| This reason code indicates that a bundle was missing one or | ||||
| more required security operations. This reason code is typically | ||||
| used by a security verifier or security acceptor. | ||||
| </t> | ||||
| <t hangText="Unknown Security Operation:"> <vspace/> | ||||
| This reason code indicates that one or more security operations | ||||
| present in a bundle cannot be understood by the security verifier | ||||
| or | ||||
| security acceptor for the operation. For example, this reason co | ||||
| de may be used if | ||||
| a security block references an unknown security context identifie | ||||
| r | ||||
| or security context parameter. This reason code should not be use | ||||
| d | ||||
| for security operations for which the node is not a security veri | ||||
| fier | ||||
| or security acceptor; there is no requirement that all nodes in | ||||
| a network understand all security contexts, security context | ||||
| parameters, and security services for every bundle in a network. | ||||
| </t> | ||||
| <t hangText="Unexpected Security Operation:"> <vspace/> | </t> | |||
| <dl newline="true" spacing="normal" indent="6"> | ||||
| <dt>Missing security operation:</dt> | ||||
| <dd> | ||||
| This reason code indicates that a bundle was missing | ||||
| one or more required security operations. This reason | ||||
| code is typically used by a security verifier or | ||||
| security acceptor. | ||||
| </dd> | ||||
| <dt>Unknown security operation:</dt> | ||||
| <dd> | ||||
| This reason code indicates that one or more security | ||||
| operations present in a bundle cannot be understood by | ||||
| the security verifier or security acceptor for the | ||||
| operation. For example, this reason code may be used | ||||
| if a security block references an unknown security | ||||
| context identifier or security context parameter. This | ||||
| reason code should not be used for security operations | ||||
| for which the node is not a security verifier or | ||||
| security acceptor; there is no requirement that all | ||||
| nodes in a network understand all security contexts, | ||||
| security context parameters, and security services for | ||||
| every bundle in a network. | ||||
| </dd> | ||||
| <dt>Unexpected security operation:</dt> | ||||
| <dd> | ||||
| This reason code indicates that a receiving node is neither a | This reason code indicates that a receiving node is neither a | |||
| security verifier nor a security acceptor for at least one | security verifier nor a security acceptor for at least one | |||
| security operation in a bundle. This reason code should not | security operation in a bundle. This reason code should not | |||
| be seen as an error condition; not every node is a security | be seen as an error condition: not every node is a security | |||
| verifier or security acceptor for every security operation in | verifier or security acceptor for every security operation in | |||
| every bundle. In certain networks, this reason code may be | every bundle. In certain networks, this reason code may be | |||
| useful in identifying misconfigurations of security policy. | useful in identifying misconfigurations of security policy. | |||
| </t> | </dd> | |||
| <dt>Failed security operation:</dt> | ||||
| <t hangText="Failed Security Operation:"> <vspace/> | <dd> | |||
| This reason code indicates that one or more security operations i | This reason code indicates that one or more security | |||
| n | operations in a bundle failed to process as expected | |||
| a bundle failed to process as expected for reasons other than | for reasons other than misconfiguration. This may occur | |||
| misconfiguration. This may occur when a security-source is unable | when a security-source is unable to add a security | |||
| to add a | block to a bundle. This may occur if the target of a | |||
| security block to a bundle. This may occur if the target of a se | security operation fails to verify using the defined | |||
| curity | security context at a security verifier. This may also | |||
| operation fails to verify using the defined security context at a | occur if a security operation fails to be processed | |||
| security verifier. | without error at a security acceptor. | |||
| This may also occur if a security operation fails to be processed | </dd> | |||
| without error at | <dt>Conflicting security operation:</dt> | |||
| a security acceptor. | <dd> | |||
| </t> | This reason code indicates that two or more security | |||
| operations in a bundle are not conformant with the | ||||
| <t hangText="Conflicting Security Operations:"> <vspace/> | BPSec specification and that security processing was | |||
| This reason code indicates that two or more security operations i | unable to proceed because of a BPSec protocol | |||
| n a bundle | violation. | |||
| are not conformant with the BPSec specification and that security | </dd> | |||
| processing | </dl> | |||
| was unable to proceed because of a BPSec protocol violation. | </section> | |||
| </t> | </section> | |||
| </list> | <section anchor="SecCons" toc="default" numbered="true"> | |||
| </t> | <name>Security Considerations</name> | |||
| </section> | ||||
| </section> | ||||
| <section anchor="SecCons" title="Security Considerations" toc="default"> | ||||
| <t> | ||||
| Given the nature of DTN applications, it is | ||||
| expected that bundles may traverse a variety of environments and devices | ||||
| which each pose unique security risks and requirements on the | ||||
| implementation of security within BPSec. For these reasons, it is | ||||
| important to introduce key threat models and describe the roles and | ||||
| responsibilities of the BPSec protocol in protecting the confidentiality | ||||
| and integrity of the data against those threats. This section provides | ||||
| additional discussion on security threats that BPSec will face and | ||||
| describes how BPSec security mechanisms operate to mitigate these | ||||
| threats. | ||||
| </t> | ||||
| <t> | ||||
| The threat model described here is assumed to have a set of capabilities | ||||
| identical to those described by the Internet Threat Model in | ||||
| <xref target="RFC3552"/>, but the BPSec threat model is scoped to | ||||
| illustrate threats specific to BPSec operating within DTN environments | ||||
| and therefore focuses on on-path-attackers (OPAs). In doing | ||||
| so, it is assumed that the DTN (or significant portions of the DTN) are | ||||
| completely under the control of an attacker. | ||||
| </t> | ||||
| <section anchor="SecConsAttack" title="Attacker Capabilities and Objectives"> | ||||
| <t> | ||||
| BPSec was designed to protect against OPA threats which may have access | ||||
| to a | ||||
| bundle during transit from its source, Alice, to its destination, Bob. | ||||
| An OPA node, | ||||
| Olive, is a non-cooperative node operating on the DTN between Alice and | ||||
| Bob that | ||||
| has the ability to receive bundles, examine bundles, modify bundles, fo | ||||
| rward bundles, | ||||
| and generate bundles at will in order to compromise the confidentiality | ||||
| or integrity | ||||
| of data within the DTN. There are three classes of OPA nodes which are | ||||
| differentiated based | ||||
| on their access to cryptographic material: | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Unprivileged Node: Olive has not been provisioned within the secu | ||||
| re environment and | ||||
| only has access to cryptographic material which has been publicly | ||||
| -shared. | ||||
| </t> | ||||
| <t> | ||||
| Legitimate Node: Olive is within the secure environment and there | ||||
| fore has | ||||
| access to cryptographic material which has been provisioned to Ol | ||||
| ive (i.e., K_M) | ||||
| as well as material which has been publicly-shared. | ||||
| </t> | ||||
| <t> | ||||
| Privileged Node: Olive is a privileged node within the secure env | ||||
| ironment | ||||
| and therefore has access to cryptographic material which has been | ||||
| provisioned to | ||||
| Olive, Alice and/or Bob (i.e. K_M, K_A, and/or K_B) as well as ma | ||||
| terial which | ||||
| has been publicly-shared. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | <t> | |||
| If Olive is operating as a privileged node, this is tantamount to compr | Given the nature of DTN applications, it is expected that | |||
| omise; | bundles may traverse a variety of environments and devices that | |||
| BPSec does not provide mechanisms to detect or remove Olive from the DT | each pose unique security risks and requirements on the | |||
| N or | implementation of security within BPSec. For this reason, it | |||
| BPSec secure environment. It is up to the BPSec implementer or the und | is important to introduce key threat models and describe the | |||
| erlying | roles and responsibilities of the BPSec protocol in protecting | |||
| cryptographic mechanisms to provide appropriate capabilities if they ar | the confidentiality and integrity of the data against those | |||
| e needed. | threats. This section provides additional discussion on security | |||
| It should also be noted that if the implementation of BPSec uses a sing | threats that BPSec will face and describes how BPSec security | |||
| le set of | mechanisms operate to mitigate these threats. | |||
| shared cryptographic material for all nodes, a legitimate node is equiv | ||||
| alent to a | ||||
| privileged node because K_M == K_A == K_B. For this reason, sharing cry | ||||
| ptographic | ||||
| material in this way is not recommended. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| A special case of the legitimate node is when Olive is either Alice or | The threat model described here is assumed to have a set of | |||
| Bob | capabilities identical to those described by the Internet Threat | |||
| (i.e., K_M == K_A or K_M == K_B). In this case, Olive is able to imper | Model in <xref target="RFC3552" format="default"/>, but the | |||
| sonate | BPSec threat model is scoped to illustrate threats specific to | |||
| traffic as either Alice or Bob, respectively, which means that traffic | BPSec operating within DTN environments; therefore, it focuses on | |||
| to and from that node can be | on-path attackers (OPAs). In doing so, it is assumed that the | |||
| decrypted and encrypted, respectively. Additionally, messages may be s | delay-tolerant network (or significant portions of the delay-tolerant netw | |||
| igned as | ork) are completely under | |||
| originating from one of the endpoints. | the control of an attacker. | |||
| </t> | </t> | |||
| </section> | <section anchor="SecConsAttack" numbered="true" toc="default"> | |||
| <name>Attacker Capabilities and Objectives</name> | ||||
| <section anchor="SecConsBehave" title="Attacker Behaviors and BPSec Mitigatio | <t> | |||
| ns" toc="default"> | BPSec was designed to protect against OPA threats that may | |||
| have access to a bundle during transit from its source, | ||||
| <section title="Eavesdropping Attacks" toc="default"> | Alice, to its destination, Bob. | |||
| <t> | An OPA node, Olive, is a | |||
| Once Olive has received a bundle, she is able to examine the content | noncooperative node operating on the delay-tolerant network between Ali | |||
| s of that | ce and | |||
| bundle and attempt to recover any protected data or cryptographic ke | Bob that has the ability to receive bundles, examine bundles, | |||
| ying material | modify bundles, forward bundles, and generate bundles at will | |||
| from the blocks contained within. The protection mechanism that BPS | in order to compromise the confidentiality or integrity of | |||
| ec provides against | data within the delay-tolerant network. There are three classes of OPA | |||
| this action is the BCB, which encrypts the contents of its security | nodes | |||
| target, providing | that are differentiated based on their access to | |||
| confidentiality of the data. Of course, it should be assumed that O | cryptographic material: | |||
| live is able to | ||||
| attempt offline recovery of encrypted data, so the cryptographic mec | ||||
| hanisms selected | ||||
| to protect the data should provide a suitable level of protection. | ||||
| </t> | ||||
| <t> | ||||
| When evaluating the risk of eavesdropping attacks, it is important t | ||||
| o consider the lifetime | ||||
| of bundles on a DTN. Depending on the network, bundles may persist | ||||
| for days or even years. | ||||
| Long-lived bundles imply that the data exists in the network for a l | ||||
| onger period of time and, | ||||
| thus, there may be more opportunities to capture those bundles. Addi | ||||
| tionally, bundles that | ||||
| are long-lived imply that the information stored within them may rem | ||||
| ain relevant and sensitive | ||||
| for long enough that, once captured, there is sufficient time to cra | ||||
| ck encryption associated | ||||
| with the bundle. If a bundle does persist on the network for years a | ||||
| nd the cipher suite used for a BCB provides inadequate protection, Olive may be | ||||
| able to recover the protected data either before that bundle reaches its intende | ||||
| d destination or before the information in the bundle is no longer considered se | ||||
| nsitive. | ||||
| </t> | ||||
| <t> | ||||
| NOTE: Olive is not limited by the bundle lifetime and may retain a g | ||||
| iven bundle indefinitely. | ||||
| </t> | ||||
| <t> | ||||
| NOTE: Irrespective of whether BPSec is used, traffic analysis will b | ||||
| e possible. | ||||
| </t> | ||||
| </section> | ||||
| <section title="Modification Attacks" toc="default"> | ||||
| <t> | ||||
| As a node participating in the DTN between Alice and Bob, Olive will | ||||
| also be | ||||
| able to modify the received bundle, including non-BPSec data such as | ||||
| the primary | ||||
| block, payload blocks, or block processing control flags as defined | ||||
| in <xref target="I-D.ietf-dtn-bpbis"/>. Olive | ||||
| will be able to undertake activities which include modification of d | ||||
| ata within the blocks, | ||||
| replacement of blocks, addition of blocks, or removal of blocks. Wi | ||||
| thin BPSec, both the BIB | ||||
| and BCB provide integrity protection mechanisms to detect or prevent | ||||
| data manipulation | ||||
| attempts by Olive. | ||||
| </t> | ||||
| <t> | ||||
| The BIB provides that protection to another block which is its secur | ||||
| ity target. The | ||||
| cryptographic mechanisms used to generate the BIB should be strong a | ||||
| gainst collision attacks | ||||
| and Olive should not have access to the cryptographic material used | ||||
| by the originating node | ||||
| to generate the BIB (e.g., K_A). If both of these conditions are tr | ||||
| ue, Olive will be unable | ||||
| to modify the security target or the BIB and lead Bob to validate th | ||||
| e security target as | ||||
| originating from Alice. | ||||
| </t> | ||||
| <t> | ||||
| Since BPSec security operations are implemented by placing blocks in | ||||
| a bundle, there | ||||
| is no in-band mechanism for detecting or correcting certain cases wh | ||||
| ere Olive removes | ||||
| blocks from a bundle. If Olive removes a BCB, but keeps the security | ||||
| target, the | ||||
| security target remains encrypted and there is a possibility that th | ||||
| ere may no longer be | ||||
| sufficient information to decrypt the block at its destination. If | ||||
| Olive removes both a | ||||
| BCB (or BIB) and its security target there is no evidence left in th | ||||
| e bundle of the security | ||||
| operation. Similarly, if Olive removes the BIB but not the security | ||||
| target there is | ||||
| no evidence left in the bundle of the security operation. In each o | ||||
| f these cases, the | ||||
| implementation of BPSec must be combined with policy configuration a | ||||
| t endpoints in the | ||||
| network which describe the expected and required security operations | ||||
| that must be applied | ||||
| on transmission and are expected to be present on receipt. This or | ||||
| other similar | ||||
| out-of-band information is required to correct for removal of securi | ||||
| ty information in the | ||||
| bundle. | ||||
| </t> | ||||
| <t> | ||||
| A limitation of the BIB may exist within the implementation of BIB v | ||||
| alidation at the destination | ||||
| node. If Olive is a legitimate node within the DTN, the BIB generat | ||||
| ed by Alice with K_A can be | ||||
| replaced with a new BIB generated with K_M and forwarded to Bob. If | ||||
| Bob is only validating | ||||
| that the BIB was generated by a legitimate user, Bob will acknowledg | ||||
| e the message as originating | ||||
| from Olive instead of Alice. Validating a BIB indicates only that th | ||||
| e BIB was generated | ||||
| by a holder of the relevant key; it does not provide any guarantee t | ||||
| hat the bundle or block was created by the same entity. In order to provide veri | ||||
| fiable integrity checks BCB should require | ||||
| an encryption scheme that is Indistinguishable under adaptive Chosen | ||||
| Ciphertext Attack (IND-CCA2) secure. Such an encryption scheme | ||||
| will guard against signature substitution attempts by Olive. In this | ||||
| case, Alice creates a BIB | ||||
| with the protected data block as the security target and then | ||||
| creates a BCB with both the BIB and protected data block as its secu | ||||
| rity targets. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="SecConsTopAtck" title="Topology Attacks" toc="default"> | ||||
| <t> | ||||
| If Olive is in a OPA position within the DTN, she is able to influe | ||||
| nce how any | ||||
| bundles that come to her may pass through the network. Upon receivi | ||||
| ng and processing a | ||||
| bundle that must be routed elsewhere in the network, Olive has three | ||||
| options as to how | ||||
| to proceed: not forward the bundle, forward the bundle as intended, | ||||
| or forward the bundle | ||||
| to one or more specific nodes within the network. | ||||
| </t> | ||||
| <t> | ||||
| Attacks that involve re-routing the packets throughout the network a | ||||
| re essentially a special | ||||
| case of the modification attacks described in this section where the | ||||
| attacker is modifying | ||||
| fields within the primary block of the bundle. Given that BPSec can | ||||
| not encrypt the contents | ||||
| of the primary block, alternate methods must be used to prevent this | ||||
| situation. These methods | ||||
| may include requiring BIBs for primary blocks, using encapsulation, | ||||
| or otherwise strategically | ||||
| manipulating primary block data. The specifics of any such mitigatio | ||||
| n technique | ||||
| are specific to the implementation of the deploying network and outs | ||||
| ide of the scope of this | ||||
| document. | ||||
| </t> | ||||
| <t> | </t> | |||
| Furthermore, routing rules and policies may be useful in enforcing p | <dl spacing="normal"> | |||
| articular traffic flows | <dt>Unprivileged Node:</dt><dd>Olive has not been provisioned | |||
| to prevent topology attacks. While these rules and policies may uti | within the secure environment and only has access to | |||
| lize some features | cryptographic material that has been publicly shared. | |||
| provided by BPSec, their definition is beyond the scope of this spec | </dd> | |||
| ification. | <dt>Legitimate Node:</dt><dd>Olive is within the secure environment; | |||
| </t> | therefore, Olive has access to cryptographic material | |||
| that has been provisioned to Olive (i.e., K<sub>M</sub>) as well | ||||
| as material that has been publicly shared. | ||||
| </dd> | ||||
| <dt>Privileged Node:</dt><dd>Olive is a privileged node within the | ||||
| secure environment; therefore, Olive has access to | ||||
| cryptographic material that has been provisioned to | ||||
| Olive, Alice, and/or Bob (i.e., K<sub>M</sub>, K<sub>A</sub>, and | ||||
| /or K<sub>B</sub>) as | ||||
| well as material that has been publicly shared. | ||||
| </dd> | ||||
| </dl> | ||||
| <t> | ||||
| If Olive is operating as a privileged node, this is | ||||
| tantamount to compromise; BPSec does not provide mechanisms | ||||
| to detect or remove Olive from the delay-tolerant network or BPSec secu | ||||
| re | ||||
| environment. It is up to the BPSec implementer or the | ||||
| underlying cryptographic mechanisms to provide appropriate | ||||
| capabilities if they are needed. It should also be noted | ||||
| that if the implementation of BPSec uses a single set of | ||||
| shared cryptographic material for all nodes, a legitimate | ||||
| node is equivalent to a privileged node because K<sub>M</sub> == K<sub> | ||||
| A</sub> == | ||||
| K<sub>B</sub>. For this reason, sharing cryptographic material in this | ||||
| way is not recommended. | ||||
| </t> | ||||
| <t> | ||||
| A special case of the legitimate node is when Olive is either | ||||
| Alice or Bob (i.e., K<sub>M</sub> == K<sub>A</sub> or K<sub>M</sub> == | ||||
| K<sub>B</sub>). In this case, | ||||
| Olive is able to impersonate traffic as either Alice or Bob, | ||||
| respectively, which means that traffic to and from that node | ||||
| can be decrypted and encrypted, respectively. Additionally, | ||||
| messages may be signed as originating from one of the | ||||
| endpoints. | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="SecConsBehave" toc="default" numbered="true"> | ||||
| <section title="Message Injection" toc="default"> | <name>Attacker Behaviors and BPSec Mitigations</name> | |||
| <t> | <section toc="default" numbered="true"> | |||
| Olive is also able to generate new bundles and transmit them into th | <name>Eavesdropping Attacks</name> | |||
| e DTN at will. | <t> | |||
| These bundles may either be copies or slight modifications of previo | Once Olive has received a bundle, she is able to examine | |||
| usly-observed bundles | the contents of that bundle and attempt to recover any | |||
| (i.e., a replay attack) or entirely new bundles generated based on t | protected data or cryptographic keying material from the | |||
| he Bundle Protocol, | blocks contained within. The protection mechanism that | |||
| BPSec, or other bundle-related protocols. With these attacks Olive' | BPSec provides against this action is the BCB, which | |||
| s objectives may | encrypts the contents of its security target, providing | |||
| vary, but may be targeting either the bundle protocol or application | confidentiality of the data. Of course, it should be | |||
| -layer protocols conveyed | assumed that Olive is able to attempt offline recovery of | |||
| by the bundle protocol. The target could also be the storage and com | encrypted data, so the cryptographic mechanisms selected | |||
| pute of the nodes running | to protect the data should provide a suitable level of | |||
| the bundle or application layer protocols (e.g., a denial of service | protection. | |||
| to flood on the | </t> | |||
| storage of the store-and-forward mechanism; or compute which would p | <t> | |||
| rocess the packets and | When evaluating the risk of eavesdropping attacks, it is | |||
| perhaps prevent other activities). | important to consider the lifetime of bundles on DTN. | |||
| </t> | Depending on the network, bundles may persist for days or | |||
| even years. Long-lived bundles imply that the data exists | ||||
| <t> | in the network for a longer period of time and, thus, | |||
| BPSec relies on cipher suite capabilities to prevent replay or forge | there may be more opportunities to capture those | |||
| d message attacks. | bundles. Additionally, the implication is that long-lived bundles st | |||
| A BCB used with appropriate cryptographic mechanisms may provide rep | ore information within that remains relevant and sensitive for long enough that, | |||
| lay protection | once | |||
| under certain circumstances. Alternatively, | captured, there is sufficient time to crack encryption | |||
| application data itself may be augmented to include mechanisms to as | associated with the bundle. If a bundle does persist on | |||
| sert data uniqueness | the network for years and the cipher suite used for a BCB | |||
| and then protected with a BIB, a BCB, or both along with other block | provides inadequate protection, Olive may be able to | |||
| data. In | recover the protected data either before that bundle | |||
| such a case, the receiving node would be able to validate the unique | reaches its intended destination or before the information | |||
| ness of the data. | in the bundle is no longer considered sensitive. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| For example, a BIB may be used to validate the integrity of a bundle | NOTE: Olive is not limited by the bundle lifetime and may | |||
| 's primary block, | retain a given bundle indefinitely. | |||
| which includes a timestamp and lifetime for the bundle. If a bundle | </t> | |||
| is replayed outside | <t> | |||
| of its lifetime, then the replay attack will fail as the bundle will | NOTE: Irrespective of whether BPSec is used, traffic | |||
| be discarded. Similarly, additional blocks such as the Bundle Age may be signed | analysis will be possible. | |||
| and validated to identify replay attacks. Finally, security context parameters | </t> | |||
| within BIB and BCB blocks may include anti-replay mechanisms such as | </section> | |||
| session identifiers, nonces, and dynamic passwords as supported by network char | <section toc="default" numbered="true"> | |||
| acteristics. | <name>Modification Attacks</name> | |||
| </t> | <t> | |||
| As a node participating in the delay-tolerant network between Alice | ||||
| and Bob, | ||||
| Olive will also be able to modify the received bundle, | ||||
| including non-BPSec data such as the primary block, | ||||
| payload blocks, or block processing control flags as | ||||
| defined in <xref target="RFC9171" format="default"/>. | ||||
| Olive will be able to undertake activities including | ||||
| modification of data within the blocks, replacement of | ||||
| blocks, addition of blocks, or removal of blocks. Within | ||||
| BPSec, both the BIB and BCB provide integrity-protection | ||||
| mechanisms to detect or prevent data manipulation attempts | ||||
| by Olive. | ||||
| </t> | ||||
| <t> | ||||
| The BIB provides that protection to another block that is | ||||
| its security target. The cryptographic mechanisms used to | ||||
| generate the BIB should be strong against collision | ||||
| attacks, and Olive should not have access to the | ||||
| cryptographic material used by the originating node to | ||||
| generate the BIB (e.g., K<sub>A</sub>). If both of these conditions | ||||
| are true, Olive will be unable to modify the security | ||||
| target or the BIB, and thus she cannot lead Bob to validate the secu | ||||
| rity | ||||
| target as originating from Alice. | ||||
| </t> | ||||
| <t> | ||||
| Since BPSec security operations are implemented by placing | ||||
| blocks in a bundle, there is no in-band mechanism for | ||||
| detecting or correcting certain cases where Olive removes | ||||
| blocks from a bundle. If Olive removes a BCB, but keeps | ||||
| the security target, the security target remains encrypted | ||||
| and there is a possibility that there may no longer be | ||||
| sufficient information to decrypt the block at its | ||||
| destination. If Olive removes both a BCB (or BIB) and its | ||||
| security target, there is no evidence left in the bundle of | ||||
| the security operation. Similarly, if Olive removes the | ||||
| BIB, but not the security target, there is no evidence left | ||||
| in the bundle of the security operation. In each of these | ||||
| cases, the implementation of BPSec must be combined with | ||||
| policy configuration at endpoints in the network that | ||||
| describe the expected and required security operations | ||||
| that must be applied on transmission and that are expected to | ||||
| be present on receipt. This or other similar out-of-band | ||||
| information is required to correct for removal of security | ||||
| information in the bundle. | ||||
| </t> | ||||
| <t> | ||||
| A limitation of the BIB may exist within the | ||||
| implementation of BIB validation at the destination node. | ||||
| If Olive is a legitimate node within the delay-tolerant network, the | ||||
| BIB | ||||
| generated by Alice with K<sub>A</sub> can be replaced with a new BIB | ||||
| generated with K<sub>M</sub> and forwarded to Bob. If Bob is only | ||||
| validating that the BIB was generated by a legitimate | ||||
| user, Bob will acknowledge the message as originating from | ||||
| Olive instead of Alice. Validating a BIB indicates only | ||||
| that the BIB was generated by a holder of the relevant | ||||
| key; it does not provide any guarantee that the bundle or | ||||
| block was created by the same entity. In order to provide | ||||
| verifiable integrity checks, the BCB should require an | ||||
| encryption scheme that is Indistinguishable under adaptive | ||||
| Chosen Ciphertext Attack (IND-CCA2) secure. Such an | ||||
| encryption scheme will guard against signature | ||||
| substitution attempts by Olive. In this case, Alice | ||||
| creates a BIB with the protected data block as the | ||||
| security target and then creates a BCB with both the BIB | ||||
| and protected data block as its security targets. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="SecConsTopAtck" toc="default" numbered="true"> | ||||
| <name>Topology Attacks</name> | ||||
| <t> | ||||
| If Olive is in an OPA position within the delay-tolerant network, s | ||||
| he is able | ||||
| to influence how any bundles that come to her may pass | ||||
| through the network. Upon receiving and processing a | ||||
| bundle that must be routed elsewhere in the network, | ||||
| Olive has three options as to how to proceed: not forward | ||||
| the bundle, forward the bundle as intended, or forward | ||||
| the bundle to one or more specific nodes within the | ||||
| network. | ||||
| </t> | ||||
| <t> | ||||
| Attacks that involve rerouting the bundles throughout the | ||||
| network are essentially a special case of the modification | ||||
| attacks described in this section, one where the attacker is | ||||
| modifying fields within the primary block of the bundle. | ||||
| Given that BPSec cannot encrypt the contents of the | ||||
| primary block, alternate methods must be used to prevent | ||||
| this situation. These methods may include requiring BIBs | ||||
| for primary blocks, using encapsulation, or otherwise | ||||
| strategically manipulating primary block data. The | ||||
| details of any such mitigation technique are specific to | ||||
| the implementation of the deploying network and are outside of | ||||
| the scope of this document. | ||||
| </t> | ||||
| <t> | ||||
| Furthermore, routing rules and policies may be useful in | ||||
| enforcing particular traffic flows to prevent topology | ||||
| attacks. While these rules and policies may utilize some | ||||
| features provided by BPSec, their definition is beyond the | ||||
| scope of this specification. | ||||
| </t> | ||||
| </section> | ||||
| <section toc="default" numbered="true"> | ||||
| <name>Message Injection</name> | ||||
| <t> | ||||
| Olive is also able to generate new bundles and transmit | ||||
| them into the delay-tolerant network at will. | ||||
| These bundles may be either 1) | ||||
| copies or slight modifications of previously observed | ||||
| bundles (i.e., a replay attack) or 2) entirely new bundles | ||||
| generated based on the Bundle Protocol, BPSec, or other | ||||
| bundle-related protocols. With these attacks, Olive's | ||||
| objectives may vary, but may be targeting either the | ||||
| Bundle Protocol or application-layer protocols conveyed by | ||||
| the Bundle Protocol. The target could also be the storage | ||||
| and computing capabilities of the nodes running the bundle or | ||||
| application-layer protocols (e.g., a denial of service to | ||||
| flood on the storage of the store-and-forward mechanism or | ||||
| a computation that would process the bundles and perhaps | ||||
| prevent other activities). | ||||
| </t> | ||||
| <t> | ||||
| BPSec relies on cipher suite capabilities to prevent | ||||
| replay or forged message attacks. A BCB used with | ||||
| appropriate cryptographic mechanisms may provide replay | ||||
| protection under certain circumstances. Alternatively, | ||||
| application data itself may be augmented to include | ||||
| 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 receiving node would be able to validate | ||||
| the uniqueness of the data. | ||||
| </t> | ||||
| <t> | ||||
| For example, a BIB may be used to validate the integrity | ||||
| of a bundle's primary block, which includes a timestamp | ||||
| and lifetime for the bundle. If a bundle is replayed | ||||
| outside of its lifetime, then the replay attack will fail | ||||
| as the bundle will be discarded. Similarly, additional | ||||
| blocks, such as the Bundle Age, may be signed and validated | ||||
| to identify replay attacks. Finally, security context | ||||
| parameters within BIBs and BCBs may include | ||||
| anti-replay mechanisms such as session identifiers, | ||||
| nonces, and dynamic passwords as supported by network | ||||
| characteristics. | ||||
| </t> | ||||
| </section> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | <section anchor="sec_ctx" numbered="true" toc="default"> | |||
| <name>Security Context Considerations</name> | ||||
| <section anchor="sec_ctx" title="Security Context Considerations"> | <section numbered="true" toc="default"> | |||
| <section title="Mandating Security Contexts"> | <name>Mandating Security Contexts</name> | |||
| <t> | <t> | |||
| Because of the diversity of networking scenarios and node capabilities | Because of the diversity of networking scenarios and node | |||
| that may utilize BPSec there is a risk that a single security context m | capabilities that may utilize BPSec, there is a risk that a | |||
| andated | single security context mandated for every possible BPSec | |||
| for every possible BPSec implementation is not feasible. For example, a | implementation is not feasible. For example, a security | |||
| security context | context appropriate for a resource-constrained node with | |||
| appropriate for a resource-constrained node with limited | limited connectivity may be inappropriate for use in a | |||
| connectivity may be inappropriate for use in a well-resourced, well | well-resourced, well-connected node. | |||
| connected node. | </t> | |||
| </t> | <t> | |||
| <t> | This does not mean that the use of BPSec in a particular | |||
| This does not mean that the use of BPSec in a particular network is | network is meant to happen without security contexts for | |||
| meant to be used without security contexts for interoperability and | interoperability and default behavior. Network designers must | |||
| default behavior. Network designers must identify the minimal set of | identify the minimal set of security contexts necessary for | |||
| security contexts necessary for functions in their network. For example | functions in their network. For example, a default set of | |||
| , | security contexts could be created for use over the | |||
| a default set of security contexts could be created for use over the | terrestrial Internet, and they could be required by any BPSec implement | |||
| terrestrial Internet and required by any BPSec implementation communica | ation | |||
| ting | communicating over the terrestrial Internet. | |||
| over the terrestrial Internet. | </t> | |||
| </t> | <t> | |||
| <t> | To ensure interoperability among various implementations, all | |||
| To ensure interoperability among various implementations, all BPSec imp | BPSec implementations <bcp14>MUST</bcp14> support at least | |||
| lementations | the current, mandatory security context(s) defined in IETF Standards Tr | |||
| MUST support at least the current IETF standards-track mandatory securi | ack | |||
| ty context(s). | RFCs. As of this writing, that BP mandatory security | |||
| As of this writing, that BCP mandatory security context is specified in | context is specified in <xref target="RFC9173" | |||
| <xref target="I-D.ietf-dtn-bpsec-default-sc"/>, | format="default"/>, but the mandatory security context(s) | |||
| but the mandatory security context(s) might change over time in accorda | might change over time in accordance with usual IETF | |||
| nce with usual IETF processes. | processes. Such changes are likely to occur in the future | |||
| Such changes are likely to occur in the future if/when flaws are discov | if/when flaws are discovered in the applicable cryptographic | |||
| ered in the applicable cryptographic | ||||
| algorithms, for example. | algorithms, for example. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | Additionally, BPSec implementations need to support the | |||
| Additionally, BPsec implementations need to support the security contex | security contexts that are required by the BP | |||
| ts which are specified and/or used | networks in which they are deployed. | |||
| by the BP networks in which they are deployed. | </t> | |||
| </t> | <t> | |||
| <t> | If a node serves as a gateway between two or more networks, | |||
| If a node serves as a gateway amongst two or more networks, the BPSec i | the BPSec implementation at that node needs to support the | |||
| mplementation at that node needs | union of security contexts mandated in those networks. | |||
| to support the union of security contexts mandated in those networks. | </t> | |||
| </t> | <t> | |||
| <t> | BPSec has been designed to allow for a diversity of security | |||
| BPSec has been designed to allow for a diversity of security contexts | contexts and for new contexts to be defined over time. The | |||
| and for new contexts to be defined over time. The use of different secu | use of different security contexts does not change the BPSec | |||
| rity contexts | protocol itself, and the definition of new security contexts | |||
| does not change the BPSec protocol itself and the definition of new sec | <bcp14>MUST</bcp14> adhere to the requirements of such | |||
| urity contexts | contexts as presented in this section and generally in this | |||
| MUST adhere to the requirements of such contexts as presented in this s | specification. | |||
| ection and | </t> | |||
| generally in this specification. | <t> | |||
| </t> | Implementers should monitor the state of security context | |||
| <t> | specifications to check for future updates and replacement. | |||
| Implementors should monitor the state of security context specification | </t> | |||
| s to check | </section> | |||
| for future updates and replacement. | <section numbered="true" toc="default"> | |||
| </t> | <name>Identification and Configuration</name> | |||
| </section> | <t> | |||
| Security blocks uniquely identify the security context to be | ||||
| <section title="Identification and Configuration"> | used in the processing of their security services. The | |||
| <t> | security context for a security block <bcp14>MUST</bcp14> be | |||
| Security blocks uniquely identify the security context to be used in th | uniquely identifiable and <bcp14>MAY</bcp14> use parameters | |||
| e | for customization. | |||
| processing of their security services. The security context for a secur | </t> | |||
| ity | <t> | |||
| block MUST be uniquely identifiable and MAY use parameters for customiz | To reduce the number of security contexts used in a network, | |||
| ation. | security context designers should make security contexts | |||
| </t> | customizable through the definition of security context | |||
| parameters. For example, a single security context could be | ||||
| <t> | associated with a single cipher suite and security context | |||
| To reduce the number of security contexts used in a network, security c | parameters could be used to configure the use of this | |||
| ontext | security context with different key lengths and different key | |||
| designers should make security contexts customizable through the defini | management options without needing to define separate | |||
| tion of | ||||
| security context parameters. For example, a single security context cou | ||||
| ld be | ||||
| associated with a single cipher suite and security context parameters c | ||||
| ould be | ||||
| used to configure the use of this security context with different key l | ||||
| engths | ||||
| and different key management options without needing to define separate | ||||
| security contexts for each possible option. | security contexts for each possible option. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | A single security context may be used in the application of | |||
| A single security context may be used in the application of more than o | more than one security service. This means that a security | |||
| ne | context identifier <bcp14>MAY</bcp14> be used with a BIB, | |||
| security service. This means that a security context identifier MAY be | with a BCB, or with any other BPSec-compliant security block. | |||
| used with a BIB, with a BCB, or with any other BPSec-compliant security | The definition of a security context <bcp14>MUST</bcp14> | |||
| block. | identify which security services may be used with the | |||
| The definition of a security context MUST identify which security servi | security context, how security context parameters are | |||
| ces may | interpreted as a function of the security operation being | |||
| be used with the security context, how security context parameters are | supported, and which security results are produced for each | |||
| interpreted | security service. | |||
| as a function of the security operation being supported, and which secu | </t> | |||
| rity | <t> | |||
| results are produced for each security service. | Network operators must determine the number, type, and | |||
| </t> | configuration of security contexts in a system. Networks with | |||
| rapidly changing configurations may define relatively few | ||||
| <t> | security contexts with each context customized with multiple | |||
| Network operators must determine the number, type, and configuration | parameters. For networks with more stability, or an increased | |||
| of security contexts in a system. Networks with rapidly changing | need for confidentiality, a larger number of contexts can be | |||
| configurations may define relatively few security contexts with each | defined with each context supporting few, if any, parameters. | |||
| context customized with multiple parameters. For networks with more | </t> | |||
| stability, or an increased need for confidentiality, a larger number | ||||
| of contexts can be defined with each context supporting few, if any, | ||||
| parameters. | ||||
| </t> | ||||
| <texttable align="center" anchor="sec_ctx_ex"> | ||||
| <preamble> | ||||
| Security Context Examples | ||||
| </preamble> | ||||
| <ttcol align="center">Context Type</ttcol> | ||||
| <ttcol align="center">Parameters</ttcol> | ||||
| <ttcol align="center">Definition</ttcol> | ||||
| <c>Key Exchange AES</c> | ||||
| <c>Encrypted Key, IV</c> | ||||
| <c>AES-GCM-256 cipher suite with provided ephemeral key encrypted with | ||||
| a predetermined key encryption key and clear text initialization vector.</c> | ||||
| <c>Pre-shared Key AES</c> | ||||
| <c>IV</c> | ||||
| <c>AES-GCM-256 cipher suite with predetermined key and predetermined | ||||
| key rotation policy.</c> | ||||
| <c>Out of Band AES</c> | ||||
| <c>None</c> | ||||
| <c>AES-GCM-256 cipher suite with all info predetermined.</c> | ||||
| </texttable> | ||||
| </section> | ||||
| <section title="Authorship"> | <table align="center" anchor="sec_ctx_ex"> | |||
| <t> | <name>Security Context Examples</name> | |||
| <thead> | ||||
| <tr> | ||||
| <th align="center">Context Type</th> | ||||
| <th align="center">Parameters</th> | ||||
| <th align="center">Definition</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="center">Key Exchange AES</td> | ||||
| <td align="center">Encrypted Key, IV</td> | ||||
| <td align="center">AES-GCM-256 cipher suite with | ||||
| provided ephemeral key encrypted with a predetermined | ||||
| key encryption key and cleartext initialization | ||||
| vector.</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">Pre-Shared Key AES</td> | ||||
| <td align="center">IV</td> | ||||
| <td align="center">AES-GCM-256 cipher suite with | ||||
| predetermined key and predetermined key-rotation | ||||
| policy.</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">Out-of-Band AES</td> | ||||
| <td align="center">None</td> | ||||
| <td align="center">AES-GCM-256 cipher suite with all | ||||
| info predetermined.</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Authorship</name> | ||||
| <t> | ||||
| Developers or implementers should consider the diverse | Developers or implementers should consider the diverse | |||
| performance and conditions of networks on which the Bundle Protocol | performance and conditions of networks on which the Bundle | |||
| (and therefore BPSec) will operate. Specifically, the delay and | Protocol (and, therefore, BPSec) will operate. Specifically, | |||
| capacity of delay-tolerant networks can vary substantially. Developers | the delay and capacity of DTNs can vary | |||
| should consider these conditions to better describe | substantially. Developers should consider these conditions to | |||
| the conditions when those contexts will operate or exhibit | better describe the conditions in which those contexts will | |||
| vulnerability, and selection of these contexts for implementation | operate or exhibit vulnerability, and selection of these | |||
| should be made with consideration for this reality. There are key | contexts for implementation should be made with consideration | |||
| differences that may limit the opportunity for a security context to le | for this reality. There are key differences that may limit | |||
| verage existing | the opportunity for a security context to leverage existing | |||
| cipher suites and technologies that have been developed for use in | cipher suites and technologies that have been developed for | |||
| traditional, more reliable networks: | use in more reliable networks: | |||
| <list style="symbols"> | </t> | |||
| <t> | <dl spacing="normal"> | |||
| Data Lifetime: Depending on the application environment, | <dt>Data Lifetime:</dt><dd>Depending on the application environment, | |||
| bundles may persist on the network for extended periods of | bundles may persist on the network for extended periods of | |||
| time, perhaps even years. Cryptographic algorithms should be | time, perhaps even years. Cryptographic algorithms should be | |||
| selected to ensure protection of data against attacks for a | selected to ensure protection of data against attacks for a | |||
| length of time reasonable for the application. | length of time reasonable for the application. | |||
| </t> | </dd> | |||
| <dt>One-Way Traffic:</dt><dd>Depending on the application | ||||
| <t> | environment, it is possible that only a one-way connection | |||
| One-Way Traffic: Depending on the application environment, it | may exist between two endpoints, or if a two-way connection | |||
| is possible that only a one-way connection may exist between | does exist, the round-trip time may be extremely large. This | |||
| two endpoints, or if a two-way connection does exist, the round- | may limit the utility of session key generation mechanisms, | |||
| trip time may be extremely large. This may limit the utility | such as Diffie-Hellman, as a two-way handshake may not be | |||
| of session key generation mechanisms, such as Diffie-Hellman, | feasible or reliable. | |||
| as a two-way handshake may not be feasible or reliable. | </dd> | |||
| </t> | <dt>Opportunistic Access:</dt><dd>Depending on the application environ | |||
| ment, | ||||
| <t> | ||||
| Opportunistic Access: Depending on the application environment, | ||||
| a given endpoint may not be guaranteed to be accessible within | a given endpoint may not be guaranteed to be accessible within | |||
| a certain amount of time. This may make asymmetric | a certain amount of time. This may make asymmetric | |||
| cryptographic architectures which rely on a key distribution | cryptographic architectures that rely on a key distribution | |||
| center or other trust center impractical under certain | center or other trust center impractical under certain | |||
| conditions. | conditions. | |||
| </t> | </dd> | |||
| </list> | </dl> | |||
| </t> | <t> | |||
| <t> | ||||
| When developing security contexts for use with BPSec, the following | When developing security contexts for use with BPSec, the following | |||
| information SHOULD be considered for inclusion in these specifications. | information <bcp14>SHOULD</bcp14> be considered for inclusion in these sp ecifications. | |||
| <list style="symbols"> | </t> | |||
| <t> | <dl spacing="normal"> | |||
| Security Context Parameters. Security contexts MUST define | <dt>Security Context Parameters:</dt><dd>Security contexts | |||
| their parameter Ids, the data types of those parameters, and | <bcp14>MUST</bcp14> define their parameter Ids, the data | |||
| their CBOR encoding. | types of those parameters, and their CBOR encoding. | |||
| </t> | </dd> | |||
| <t> | <dt>Security Results:</dt><dd>Security contexts | |||
| Security Results. Security contexts MUST define their security | <bcp14>MUST</bcp14> define their security result Ids, the | |||
| result Ids, the data types of those results, and their CBOR | data types of those results, and their CBOR encoding. | |||
| encoding. | </dd> | |||
| </t> | <dt>New Canonicalizations:</dt><dd>Security contexts may | |||
| <t> | define new canonicalization algorithms as necessary.</dd> | |||
| New Canonicalizations. Security contexts may define new | ||||
| canonicalization algorithms as necessary. | <dt>Ciphertext Size:</dt><dd><t>Security contexts | |||
| <bcp14>MUST</bcp14> state whether their associated cipher | ||||
| suites generate ciphertext (to include any authentication | ||||
| information) that is of a different size than the input | ||||
| plaintext. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Cipher-Text Size. Security contexts MUST state whether their | ||||
| associated cipher suites generate cipher text (to include any | ||||
| authentication information) that is of a different size than | ||||
| the input plain text. | ||||
| <vspace blankLines="1"/> | ||||
| If a security context does not wish to alter the size of the | If a security context does not wish to alter the size of the | |||
| plain text it should place overflow bytes and authentication tags | plaintext, it should place overflow bytes and authentication tags | |||
| in security result fields. | in security result fields. | |||
| </t> | </t> | |||
| <t> | </dd> | |||
| Block Header Information. Security contexts SHOULD include block | <dt>Block Header Information:</dt><dd>Security contexts | |||
| header information that is considered to be immutable for the | <bcp14>SHOULD</bcp14> include block header information that | |||
| block. This information MAY include the block type code, block nu | is considered to be immutable for the block. This | |||
| mber, | information <bcp14>MAY</bcp14> include the block type code, | |||
| CRC Type and CRC field (if present or if missing and unlikely to | block number, CRC type, and CRC field (if present or if | |||
| be | missing and unlikely to be added later), and possibly | |||
| added later), and possibly certain block processing control flags | certain block processing control flags. Designers should | |||
| . | input these fields as additional data for integrity | |||
| Designers should input these fields as additional data for integr | protection when these fields are expected to remain | |||
| ity | unchanged over the path the block will take from the | |||
| protection when these fields are expected to remain unchanged ove | security source to the security acceptor. Security contexts | |||
| r the | considering block header information <bcp14>MUST</bcp14> | |||
| path the block will take from the security source to the security | describe expected behavior when these fields fail their | |||
| acceptor. | integrity verification. | |||
| Security contexts considering block header information MUST descr | </dd> | |||
| ibe | <dt>Handling CRC Fields:</dt><dd>Security contexts may | |||
| expected behavior when these fields fail their integrity verifica | include algorithms that alter the contexts of their security | |||
| tion. | target block, such as the case when encrypting the | |||
| </t> | block-type-specific data of a target block as part of a BCB | |||
| <t> | confidentiality service. Security context specifications | |||
| Handling CRC Fields. Security contexts may include algorithms tha | <bcp14>SHOULD</bcp14> address how preexisting CRC type and | |||
| t alter the | CRC value fields be handled. For example, a BCB security | |||
| contexts of their security target block, such as the case when | context could remove the plaintext CRC value from its | |||
| encrypting the block-type-specific data of a target block as part | target upon encryption and replace or recalculate the value | |||
| oF | upon decryption. | |||
| a BCB confidentiality service. Security context specifications SH | </dd> | |||
| OULD | </dl> | |||
| address how preexisting CRC-Type and CRC-Value fields be handled. | </section> | |||
| For | </section> | |||
| example, a BCB security context could remove the plain-text CRC v | <section anchor="Extensions" toc="default" numbered="true"> | |||
| alue from | <name>Defining Other Security Blocks</name> | |||
| its target upon encryption and replace or recalculate the value u | <t> | |||
| pon decryption. | Other Security Blocks (OSBs) may be defined and used in addition to the | |||
| </t> | security blocks identified in this specification. | |||
| </list> | BIB, BCB, and any future OSBs can coexist within a bundle and can be | |||
| </t> | considered in conformance with BPSec if all of the following requirements | |||
| </section> | ||||
| </section> | ||||
| <section anchor="Extensions" title="Defining Other Security Blocks" toc="default | ||||
| "> | ||||
| <t> | ||||
| Other security blocks (OSBs) may be defined and used in addition to the | ||||
| security blocks identified in this specification. Both the usage of | ||||
| BIB, BCB, and any future OSBs can co-exist within a bundle and can be | ||||
| considered in conformance with BPSec if each of the following requirements | ||||
| are met by any future identified security blocks. | are met by any future identified security blocks. | |||
| </t> | ||||
| <list style="symbols"> | <ul spacing="normal"> | |||
| <t> | <li> | |||
| Other security blocks (OSBs) MUST NOT reuse any enumerations | OSBs <bcp14>MUST NOT</bcp14> reuse any enumerations | |||
| identified in this specification, to include the block type codes | identified in this specification, to include the block type codes | |||
| for BIB and BCB. | for BIB and BCB. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| An OSB definition MUST state whether it can be the target of a BIB | An OSB definition <bcp14>MUST</bcp14> state whether it can | |||
| or a BCB. The definition MUST also state whether the OSB can target | be the target of a BIB or a BCB. The definition | |||
| <bcp14>MUST</bcp14> also state whether the OSB can target | ||||
| a BIB or a BCB. | a BIB or a BCB. | |||
| </t> | </li> | |||
| <t> | <li> | |||
| An OSB definition MUST provide a deterministic processing order in | An OSB definition <bcp14>MUST</bcp14> provide a | |||
| the event that a bundle is received containing BIBs, BCBs, and OSBs. | deterministic processing order in the event that a bundle | |||
| This processing order MUST NOT alter the BIB and BCB processing | is received containing BIBs, BCBs, and OSBs. This | |||
| orders identified in this specification. | processing order <bcp14>MUST NOT</bcp14> alter the BIB and | |||
| </t> | BCB processing orders identified in this specification. | |||
| </li> | ||||
| <t> | <li> | |||
| An OSB definition MUST provide a canonicalization algorithm if the | An OSB definition <bcp14>MUST</bcp14> provide a | |||
| default non-primary-block canonicalization algorithm cannot be used | canonicalization algorithm if the default algorithm for | |||
| to generate a deterministic input for a cipher suite. This | non-primary-block canonicalization cannot be | |||
| requirement can be waived if the OSB is defined so as to never be | used to generate a deterministic input for a cipher | |||
| the security target of a BIB or a BCB. | suite. This requirement can be waived if the OSB is | |||
| </t> | defined so as to never be the security target of a BIB or | |||
| a BCB. | ||||
| <t> | </li> | |||
| An OSB definition MUST NOT require any behavior of a BPSEC-BPA that | <li> | |||
| is in conflict with the behavior identified in this specification. | An OSB definition <bcp14>MUST NOT</bcp14> require any | |||
| In particular, the security processing requirements imposed by this | behavior of a BPSec BPA that is in conflict with the | |||
| specification must be consistent across all BPSEC-BPAs in a network. | behavior identified in this specification. In particular, | |||
| </t> | the security processing requirements imposed by this | |||
| specification must be consistent across all BPSec BPAs in | ||||
| <t> | a network. | |||
| The behavior of an OSB when dealing with fragmentation must be speci | </li> | |||
| fied | <li> | |||
| and MUST NOT lead to ambiguous processing states. In particular, an | The behavior of an OSB when dealing with fragmentation | |||
| OSB definition should address how to receive and process an OSB in a | must be specified and <bcp14>MUST NOT</bcp14> lead to | |||
| bundle fragment that may or may not also contain its security target | ambiguous processing states. In particular, an OSB | |||
| . | definition should address how to receive and process an | |||
| An OSB definition should also address whether an OSB may be added to | OSB in a bundle fragment that may or may not also contain | |||
| a | its security target. An OSB definition should also | |||
| bundle marked as a fragment. | address whether an OSB may be added to a bundle marked as | |||
| </t> | a fragment. | |||
| </list> | </li> | |||
| </t> | </ul> | |||
| <t> | ||||
| Additionally, policy considerations for the management, monitoring, and | ||||
| configuration associated with blocks SHOULD be included in any OSB definit | ||||
| ion. | ||||
| </t> | ||||
| <t> | ||||
| NOTE: The burden of showing compliance with processing rules is placed upo | ||||
| n | ||||
| the specifications defining new security blocks and the identification of | ||||
| such blocks | ||||
| shall not, alone, require maintenance of this specification. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="IANA" title="IANA Considerations" toc="default"> | ||||
| <t> | ||||
| This specification includes fields requiring registries managed by | ||||
| IANA. | ||||
| </t> | ||||
| <section anchor="BlockType" title="Bundle Block Types" toc="default"> | ||||
| <t> | <t> | |||
| This specification allocates two block types from the existing | Additionally, policy considerations for the management, | |||
| "Bundle Block Types" registry defined in <xref target="RFC6255"/>. | monitoring, and configuration associated with blocks | |||
| <bcp14>SHOULD</bcp14> be included in any OSB definition. | ||||
| </t> | </t> | |||
| <texttable align="center" anchor="iana_table"> | ||||
| <preamble> | ||||
| Additional Entries for the Bundle Block-Type Codes Registry: | ||||
| </preamble> | ||||
| <ttcol align="center">Value</ttcol> | ||||
| <ttcol align="center">Description</ttcol> | ||||
| <ttcol align="center">Reference</ttcol> | ||||
| <c>TBA</c> | ||||
| <c>Block Integrity Block</c> | ||||
| <c>This document</c> | ||||
| <c>TBA</c> | ||||
| <c>Block Confidentiality Block</c> | ||||
| <c>This document</c> | ||||
| </texttable> | ||||
| <t> | <t> | |||
| The Bundle Block Types namespace notes whether a block type is | NOTE: The burden of showing compliance with processing rules is | |||
| meant for use in BP version 6, BP version 7, or both. The two block ty | placed upon the specifications defining new security blocks, and | |||
| pes | the identification of such blocks shall not, alone, require | |||
| defined in this specification are meant for use with BP version 7. | maintenance of this specification. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section anchor="IANA" toc="default" numbered="true"> | |||
| <name>IANA Considerations</name> | ||||
| <section anchor="secreasoncode" title="Bundle Status Report Reason Codes"> | ||||
| <t> | <t> | |||
| This specification allocates five reason codes from the existing | This specification includes fields that require registries managed by | |||
| "Bundle Status Report Reason Codes" registry defined in <xref target="R | IANA. | |||
| FC6255"/>. | ||||
| </t> | </t> | |||
| <section anchor="BlockType" toc="default" numbered="true"> | ||||
| <name>Bundle Block Types</name> | ||||
| <t> | ||||
| This specification allocates two block types from the | ||||
| existing "Bundle Block Types" registry defined in <xref | ||||
| target="RFC6255" format="default"/>. | ||||
| </t> | ||||
| <texttable align="center"> | <table align="center" anchor="iana_table"> | |||
| <preamble> | <name> Additional Entries for the "Bundle Block Types" Registry</name> | |||
| Additional Entries for the Bundle Status Report Reason Codes Registr | <thead> | |||
| y: | <tr> | |||
| </preamble> | <th align="center">Value</th> | |||
| <th align="center">Description</th> | ||||
| <ttcol align="center">BP Version</ttcol> | <th align="center">Reference</th> | |||
| <ttcol align="center">Value</ttcol> | </tr> | |||
| <ttcol align="center">Description</ttcol> | </thead> | |||
| <ttcol align="center">Reference</ttcol> | <tbody> | |||
| <tr> | ||||
| <c>7</c> | <td align="center">11</td> | |||
| <c>TBD</c> | <td align="center">Block Integrity</td> | |||
| <c>Missing Security Operation</c> | <td align="center">This document</td> | |||
| <c>This document, Section <xref target="ReasonCodes"/> </c> | </tr> | |||
| <tr> | ||||
| <c>7</c> | <td align="center">12</td> | |||
| <c>TBD</c> | <td align="center">Block Confidentiality</td> | |||
| <c>Unknown Security Operation</c> | <td align="center">This document</td> | |||
| <c>This document, Section <xref target="ReasonCodes"/></c> | </tr> | |||
| </tbody> | ||||
| <c>7</c> | </table> | |||
| <c>TBD</c> | <t> | |||
| <c>Unexpected Security Operation</c> | The "Bundle Block Types" registry notes whether a block type is | |||
| <c>This document, Section <xref target="ReasonCodes"/></c> | meant for use in BP version 6, BP version 7 (BPv7), or both. The two b | |||
| lock types | ||||
| <c>7</c> | defined in this specification are meant for use with BPv7. | |||
| <c>TBD</c> | </t> | |||
| <c>Failed Security Operation</c> | </section> | |||
| <c>This document, Section <xref target="ReasonCodes"/></c> | <section anchor="secreasoncode" numbered="true" toc="default"> | |||
| <name>Bundle Status Report Reason Codes</name> | ||||
| <c>7</c> | <t> | |||
| <c>TBD</c> | This specification allocates five reason codes from the | |||
| <c>Conflicting Security Operation</c> | existing "Bundle Status Report Reason Codes" registry defined | |||
| <c>This document, Section <xref target="ReasonCodes"/></c> | in <xref target="RFC6255" format="default"/>. | |||
| </t> | ||||
| </texttable> | <table align="center"> | |||
| </section> | <name> Additional Entries for the "Bundle Status Report Reason Codes" R | |||
| egistry</name> | ||||
| <section anchor="SecCtx" title="Security Context Identifiers"> | <thead> | |||
| <tr> | ||||
| <t> | <th align="center">BP Version</th> | |||
| <th align="center">Value</th> | ||||
| <th align="center">Description</th> | ||||
| <th align="center">Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="center">7</td> | ||||
| <td align="center">12</td> | ||||
| <td align="center">Missing security operation</td> | ||||
| <td align="center">This document, <xref target="ReasonCodes" forma | ||||
| t="default"/> </td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">7</td> | ||||
| <td align="center">13</td> | ||||
| <td align="center">Unknown security operation</td> | ||||
| <td align="center">This document, <xref target="ReasonCodes" forma | ||||
| t="default"/></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">7</td> | ||||
| <td align="center">14</td> | ||||
| <td align="center">Unexpected security operation</td> | ||||
| <td align="center">This document, <xref target="ReasonCodes" forma | ||||
| t="default"/></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">7</td> | ||||
| <td align="center">15</td> | ||||
| <td align="center">Failed security operation</td> | ||||
| <td align="center">This document, <xref target="ReasonCodes" forma | ||||
| t="default"/></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="center">7</td> | ||||
| <td align="center">16</td> | ||||
| <td align="center">Conflicting security operation</td> | ||||
| <td align="center">This document, <xref target="ReasonCodes" forma | ||||
| t="default"/></td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="SecCtx" numbered="true" toc="default"> | ||||
| <name>Security Context Identifiers</name> | ||||
| <t> | ||||
| BPSec has a Security Context Identifier field for which | BPSec has a Security Context Identifier field for which | |||
| IANA is requested to create and maintain a new registry | IANA has created a new registry | |||
| named "BPSec Security Context Identifiers". Initial values | named "BPSec Security Context Identifiers". Initial values | |||
| for this registry are given below. | for this registry are given below. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | The registration policy for this registry is Specification | |||
| The registration policy for this registry is: Specification | Required (see <xref target="RFC8126" format="default"/>). | |||
| Required. | </t> | |||
| </t> | <t> | |||
| The value range: signed 16-bit integer. | ||||
| <t> | </t> | |||
| The value range is: signed 16-bit integer. | <table align="center" anchor="sec_ctx_table"> | |||
| </t> | <name>"BPSec Security Context Identifier" Registry</name> | |||
| <thead> | ||||
| <texttable align="center" anchor="sec_ctx_table"> | <tr> | |||
| <preamble> | <th align="center">Value</th> | |||
| BPSec Security Context Identifier Registry | <th align="center">Description</th> | |||
| </preamble> | <th align="center">Reference</th> | |||
| </tr> | ||||
| <ttcol align="center">Value</ttcol> | </thead> | |||
| <ttcol align="center">Description</ttcol> | <tbody> | |||
| <ttcol align="center">Reference</ttcol> | <tr> | |||
| <td align="center">< 0 </td> | ||||
| <c>< 0 </c> | <td align="center">Reserved</td> | |||
| <c>Reserved</c> | <td align="center">This document</td> | |||
| <c>This document</c> | </tr> | |||
| <tr> | ||||
| <c>0</c> | <td align="center">0</td> | |||
| <c>Reserved</c> | <td align="center">Reserved</td> | |||
| <c>This document</c> | <td align="center">This document</td> | |||
| </texttable> | </tr> | |||
| </tbody> | ||||
| <t> | </table> | |||
| <t> | ||||
| Negative security context identifiers are reserved for local/site-speci fic uses. | Negative security context identifiers are reserved for local/site-speci fic uses. | |||
| The use of 0 as a security context identifier is for non-operational te | The use of 0 as a security context identifier is for nonoperational tes | |||
| sting purposes only. | ting purposes only. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| </section> | </middle> | |||
| <back> | ||||
| </middle> | ||||
| <back> | ||||
| <references title="Normative References"> | ||||
| &RFC3552; | ||||
| &RFC8174; | ||||
| &RFC2119; | ||||
| &RFC8949; | ||||
| &RFC6255; | ||||
| <?rfc include="reference.I-D.draft-ietf-dtn-bpbis-31"?> | ||||
| <reference anchor="I-D.ietf-dtn-bpsec-default-sc"> | ||||
| <front> | ||||
| <title> BPSec Default Security Contexts </title> | ||||
| <author initials="E." surname="Birrane"> | ||||
| </author> | ||||
| <date month="February" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-bpsec-default-sc-0 | ||||
| 1"/> | ||||
| </reference> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| &RFC4838; | <references> | |||
| &RFC6257; | <name>References</name> | |||
| <references> | ||||
| <name>Normative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3552.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2119.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8949.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6255.xml"/> | ||||
| <?rfc include="reference.I-D.draft-birrane-dtn-sbsp-01"?> | <reference anchor='RFC9171' target='https://www.rfc-editor.org/info/rfc9171'> | |||
| <front> | ||||
| <title>Bundle Protocol Version 7</title> | ||||
| <author initials='S' surname='Burleigh' fullname='Scott Burleigh'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='K' surname='Fall' fullname='Kevin Fall'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='E' surname='Birrane, III' fullname='Edward J. Birrane, III'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='January' year='2022' /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9171"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9171"/> | ||||
| </reference> | ||||
| </references> | <reference anchor='RFC9173' target='https://www.rfc-editor.org/info/rfc9173'> | |||
| <front> | ||||
| <title>Default Security Contexts for Bundle Protocol Security (BPSec)</title> | ||||
| <author initials='E' surname='Birrane, III' fullname='Edward J. Birrane, III'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author fullname="Alex White" initials="A." surname="White"> | ||||
| <organization /> | ||||
| </author> | ||||
| <author fullname="Sarah Heiner" initials="S." surname="Heiner"> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='January' year='2022' /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9173"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9173"/> | ||||
| </reference> | ||||
| <section anchor="contr" title="Acknowledgements" toc="default"> | </references> | |||
| <t>The following participants contributed technical material, use cases, | <references> | |||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4838.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6257.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8126.xml"/> | ||||
| </references> | ||||
| </references> | ||||
| <section anchor="contr" toc="default" numbered="false"> | ||||
| <name>Acknowledgments</name> | ||||
| <t>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: <contact fullname="Scott Burleigh"/> of the IPNGROUP, <con | |||
| Angela Hennessy of the Laboratory for Telecommunications | tact fullname="Angela Hennessy"/> of the Laboratory for Telecommunications | |||
| Sciences, and Amy Alford, Angela Dalton, and Cherita Corbett of the Johns | Sciences, <contact fullname="Amy Alford"/> and <contact fullname="Cherita | |||
| Hopkins | Corbett"/> of the Johns Hopkins | |||
| University Applied Physics Laboratory.</t> | University Applied Physics Laboratory (JHU/APL), and <contact fullname="An | |||
| </section> | gela Dalton"/> of AMD Research.</t> | |||
| </back> | <t>Additionally, Benjamin Kaduk of Akamai Technologies provided a detailed | |||
| technical review that resulted in a stronger and more precise specification. < | ||||
| /t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 238 change blocks. | ||||
| 2243 lines changed or deleted | 2148 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/ | ||||