Ccsds Bundle Protocol Security Specification: Draft Recommendation For Space Data System Standards
Ccsds Bundle Protocol Security Specification: Draft Recommendation For Space Data System Standards
CCSDS BUNDLE
PROTOCOL SECURITY
SPECIFICATION
CCSDS 734.5-R-2
RED BOOK
September 2023
Draft Recommendation for
Space Data System Standards
CCSDS BUNDLE
PROTOCOL SECURITY
SPECIFICATION
CCSDS 734.5-R-2
RED BOOK
September 2023
DRAFT CCSDS RECOMMENDED STANDARD FOR BUNDLE PROTOCOL SECURITY
AUTHORITY
This document has been approved for publication by the Management Council of the
Consultative Committee for Space Data Systems (CCSDS) and represents the consensus
technical agreement of the participating CCSDS Member Agencies. The procedure for
review and authorization of CCSDS documents is detailed in Organization and Processes for
the Consultative Committee for Space Data Systems (CCSDS A02.1-Y-4), and the record of
Agency participation in the authorization of this document can be obtained from the CCSDS
Secretariat at the email address below.
CCSDS Secretariat
National Aeronautics and Space Administration
Washington, DC, USA
Email: [email protected]
STATEMENT OF INTENT
(WHEN THIS RECOMMENDED STANDARD IS FINALIZED, IT WILL CONTAIN
THE FOLLOWING STATEMENT OF INTENT:)
The Consultative Committee for Space Data Systems (CCSDS) is an organization officially
established by the management of its members. The Committee meets periodically to address
data systems problems that are common to all participants, and to formulate sound technical
solutions to these problems. Inasmuch as participation in the CCSDS is completely
voluntary, the results of Committee actions are termed Recommended Standards and are
not considered binding on any Agency.
This Recommended Standard is issued by, and represents the consensus of, the CCSDS
members. Endorsement of this Recommendation is entirely voluntary. Endorsement,
however, indicates the following understandings:
o Whenever a member establishes a CCSDS-related standard, this standard will be in
accord with the relevant Recommended Standard. Establishing such a standard
does not preclude other provisions which a member may develop.
o Whenever a member establishes a CCSDS-related standard, that member will
provide other CCSDS members with the following information:
-- The standard itself.
-- The anticipated date of initial operational capability.
-- The anticipated duration of operational service.
o Specific service arrangements shall be made via memoranda of agreement. Neither
this Recommended Standard nor any ensuing standard is a substitute for a
memorandum of agreement.
No later than five years from its date of issuance, this Recommended Standard will be
reviewed by the CCSDS to determine whether it should: (1) remain in effect without change;
(2) be changed to reflect the impact of new technologies, new requirements, or new
directions; or (3) be retired or canceled.
FOREWORD
Through the process of normal evolution, it is expected that expansion, deletion, or
modification of this document may occur. This Recommended Standard is therefore subject
to CCSDS document management and change control procedures, which are defined in the
Organization and Processes for the Consultative Committee for Space Data Systems
(CCSDS A02.1-Y-4). Current versions of CCSDS documents are maintained at the CCSDS
Web site:
http://www.ccsds.org/
Questions relating to the contents or status of this document should be sent to the CCSDS
Secretariat at the email address indicated on page i.
At time of publication, the active Member and Observer Agencies of the CCSDS were:
Member Agencies
– Agenzia Spaziale Italiana (ASI)/Italy.
– Canadian Space Agency (CSA)/Canada.
– Centre National d’Etudes Spatiales (CNES)/France.
– China National Space Administration (CNSA)/People’s Republic of China.
– Deutsches Zentrum für Luft- und Raumfahrt (DLR)/Germany.
– European Space Agency (ESA)/Europe.
– Federal Space Agency (FSA)/Russian Federation.
– Instituto Nacional de Pesquisas Espaciais (INPE)/Brazil.
– Japan Aerospace Exploration Agency (JAXA)/Japan.
– National Aeronautics and Space Administration (NASA)/USA.
– UK Space Agency/United Kingdom.
Observer Agencies
– Austrian Space Agency (ASA)/Austria.
– Belgian Science Policy Office (BELSPO)/Belgium.
– Central Research Institute of Machine Building (TsNIIMash)/Russian Federation.
– China Satellite Launch and Tracking Control General, Beijing Institute of Tracking and
Telecommunications Technology (CLTC/BITTT)/China.
– Chinese Academy of Sciences (CAS)/China.
– China Academy of Space Technology (CAST)/China.
– Commonwealth Scientific and Industrial Research Organization (CSIRO)/Australia.
– Danish National Space Center (DNSC)/Denmark.
– Departamento de Ciência e Tecnologia Aeroespacial (DCTA)/Brazil.
– Electronics and Telecommunications Research Institute (ETRI)/Korea.
– European Organization for the Exploitation of Meteorological Satellites (EUMETSAT)/Europe.
– European Telecommunications Satellite Organization (EUTELSAT)/Europe.
– Geo-Informatics and Space Technology Development Agency (GISTDA)/Thailand.
– Hellenic National Space Committee (HNSC)/Greece.
– Hellenic Space Agency (HSA)/Greece.
– Indian Space Research Organization (ISRO)/India.
– Institute of Space Research (IKI)/Russian Federation.
– Korea Aerospace Research Institute (KARI)/Korea.
– Ministry of Communications (MOC)/Israel.
– Mohammed Bin Rashid Space Centre (MBRSC)/United Arab Emirates.
– National Institute of Information and Communications Technology (NICT)/Japan.
– National Oceanic and Atmospheric Administration (NOAA)/USA.
– National Space Agency of the Republic of Kazakhstan (NSARK)/Kazakhstan.
– National Space Organization (NSPO)/Chinese Taipei.
– Naval Center for Space Technology (NCST)/USA.
– Netherlands Space Office (NSO)/The Netherlands.
– Research Institute for Particle & Nuclear Physics (KFKI)/Hungary.
– Scientific and Technological Research Council of Turkey (TUBITAK)/Turkey.
– South African National Space Agency (SANSA)/Republic of South Africa.
– Space and Upper Atmosphere Research Commission (SUPARCO)/Pakistan.
– Swedish Space Corporation (SSC)/Sweden.
– Swiss Space Office (SSO)/Switzerland.
– United States Geological Survey (USGS)/USA.
PREFACE
This document is a draft CCSDS Recommended Standard. Its ‘Red Book’ status indicates that
the CCSDS believes the document to be technically mature and has released it for formal
review by appropriate technical organizations. As such, its technical contents are not stable,
and several iterations of it may occur in response to comments received during the review
process.
Implementers are cautioned not to fabricate any final equipment in accordance with this
document’s technical content.
Recipients of this draft are invited to submit, with their comments, notification of any
relevant patent rights of which they are aware and to provide supporting documentation.
DOCUMENT CONTROL
CCSDS CCSDS Streamlined Bundle Security March 2018 Original draft issue,
734.5-R-1 Protocol Specification, Draft superseded
Recommended Standard, Issue 1
CONTENTS
Section Page
CONTENTS (continued)
Section Page
Figure
Table
1 INTRODUCTION
1.1 PURPOSE
This document defines a Recommended Standard for the CCSDS Bundle Protocol Security
Protocol (BPSec), based on the Bundle Protocol Security Protocol of RFC 9172
(reference [1]). BPSec defines Bundle Protocol version 7 (RFC 9171) (reference [2])
extension blocks with associated procedures that may be used with BPv7 bundles. These
extension blocks provide a structured method for applying data integrity, authenticity, and/or
confidentiality to blocks within a bundle.
1.2 SCOPE
This Recommended Standard does not mandate the operational use of any particular
cryptographic algorithm with BPSec. Reference [E3] provides a listing of algorithms
recommended by CCSDS and those algorithms should be preferred by security contexts
defined by CCSDS; any organization should conduct a risk assessment before choosing to
substitute other algorithms.
The protocol specified here applies only to the Bundle Protocol version 7 and does not
interact with other CCSDS protocols. BPSec applies to the Session and Presentation Layers
of the Open Systems Interconnection (OSI) model as it relates to the Bundle Protocol.
1.3 APPLICABILITY
This Recommended Standard applies to the creation of Agency standards and for secure data
communications over space networks between CCSDS Agencies in cross-support situations.
The Recommended Standard includes comprehensive specification of the service for inter-
Agency cross support. It is neither a specification of, nor a design for, real systems that may
be implemented for existing or future missions.
The Recommended Standard specified in this document is to be invoked through the normal
standards programs of each CCSDS Agency and is applicable to those missions for which
interoperability and cross support based on capabilities described in this Recommended
Standard is anticipated. Where mandatory capabilities are clearly indicated in sections of the
Recommended Standard, they must be implemented when this document is used as a basis
for interoperability and cross support. Where options are allowed or implied, implementation
of these options is subject to specific bilateral cross-support agreements between the
Agencies involved.
BPv7 requires that inter-bundle security services (as opposed to the security services
provided by overlying application protocols or underlying convergence-layer protocols) be
provided in accordance with the BPSec Recommended Standard. BPv7 also requires that
any BPv7 Agent (BPA) which sources, cryptographically verifies, and/or accepts a bundle
must implement support for the BPSec Recommended Standard. The use of BPSec for any
particular transmission of BPv7 bundles is optional for CCSDS missions.
1.4 RATIONALE
Comments in the form of notes and figures have been inserted to clarify the specifications.
1.6 DEFINITIONS
This subsection provides references to terms and definitions necessary for understanding this
Recommended Standard. Additional terms and definitions related to this Recommended
Standard can be found in references [1], [2], [3], [4], and [5].
In particular, this document follows RFC 9172 in that it defines an integrity security
operation. Depending on the mechanism used to provide integrity, such operations may also
provide authenticity. In some cases the input data to an encryption function may itself be
encrypted. This is referred to as superencryption.
1.7 NOMENCLATURE
The following conventions apply for the normative specifications in this Recommended
Standard:
a) the words ‘shall’ and ‘must’ imply a binding and verifiable specification;
b) the word ‘should’ implies an optional, but desirable, specification;
c) the word ‘may’ implies an optional specification;
d) the words ‘is’, ‘are’, and ‘will’ imply statements of fact.
NOTE – These conventions do not imply constraints on diction in text that is clearly
informative in nature.
In the normative sections of this document, informative text is set off from the normative
specifications either in notes or under one of the following subsection headings:
– Overview;
– Background;
– Rationale;
– Discussion.
1.8 REFERENCES
The following publications contain provisions which, through reference in this text,
constitute provisions of this document. At the time of publication, the editions indicated
were valid. All publications are subject to revision, and users of this document are
encouraged to investigate the possibility of applying the most recent editions of the
publications indicated below. The CCSDS Secretariat maintains a register of currently valid
CCSDS publications.
[1] E. Birrane and K. McKeever. Bundle Protocol Security (BPSec). RFC 9172. Reston,
Virginia: ISOC, January 2022.
[2] S. Burleigh, K. Fall, and E. Birrane. Bundle Protocol Version 7. RFC 9171. Reston,
Virginia: ISOC, January 2022.
[3] Information Security Glossary of Terms. Issue 2. Recommendation for Space Data
System Practices (Magenta Book), CCSDS 350.8-M-2. Washington, D.C.: CCSDS,
February 2020.
[5] R. Shirey. Internet Security Glossary. Version 2. RFC 4949. Reston, Virginia: ISOC,
August 2007.
[6] Space Missions Key Management Concept. Issue 1. Report Concerning Space Data
System Standards (Green Book), CCSDS 350.6-G-1. Washington, D.C.: CCSDS,
November 2011.
[7] Symmetric Key Management. Issue 2. Draft Recommendation for Space Data System
Practices (Red Book), CCSDS 354.0-R-2. Washington, D.C.: CCSDS, February 2022.
[8] E. Birrane, A. White, and S. Heiner. Default Security Contexts for Bundle Protocol
Security (BPSec). RFC 9173. Reston, Virginia: ISOC, January 2022.
[9] C. Bormann and P. Hoffman. Concise Binary Object Representation (CBOR). STD 94.
Reston, Virginia: ISOC, December 2020.
2 OVERVIEW
2.1 SECURITY NEEDS FOR BUNDLE PROTOCOL VERSION 7
The Bundle Protocol (BP) provides end-to-end communications across many networking
environments, including Delay/Disruption Tolerant Networks (DTNs). The BPv7
specification refers to a DTN as ‘a networking architecture providing communications in
and/or through highly stressed environments’ (reference [2]). In this context, the term ‘highly
stressed environment’ can refer to multiple challenging conditions including intermittent
connectivity, large and/or variable delays, asymmetric data rates, and high bit error rates.
Whether deployed in a DTN or some other networking environment, ‘BP may be viewed as
sitting at the Application Layer of some number of constituent networks, forming a store-
carry-forward overlay network’ (reference [2]).
Networks may be untrusted for a variety of reasons. Different nodes in a network may cross
multiple administrative boundaries (such as on the Internet) such that not every
administrative entity is given the same level of trust. Within a given administrative boundary
such as an enterprise intranet, nodes may have different physical or logical access controls
and policies which may affect trust. Similarly, individual nodes may incorporate components
(convergence layers, virtual machines, open source libraries) with differing levels of trust.
The stressed nature of certain networks where BP may be deployed may impose constraints
that break or otherwise impede the use of usual transport security mechanisms. BPSec
specifies unique security features inherent in securing a store-and-forward-based transport
protocol, including protecting data at rest, preventing unauthorized consumption of critical
resources such as storage space, and operating without regular contact with a centralized
security oracle (such as a certificate authority).
Because transport security mechanisms that require multiple handshakes may not be feasible
in the environments where BP functions, new end-to-end security services that can secure
bundles in all DTN environments are needed.
2.2.1 GENERAL
BPSec is a protocol by which space missions can apply security services to individual blocks
that make up a BPv7 bundle. BPSec data units are codified as extension blocks within the BP
and exist only in the context of a bundle.
BPSec provides two security services for blocks within a BPv7 bundle:
a) Bundle Integrity Block (bib-integrity). This service specifies an integrity mechanism
over the block-type-specific data of a target block. This service also supports the
inclusion of additional data beyond the plaintext of the block-type-specific data of the
target block. Integrity mechanisms (absent confidentiality mechanisms) detect
changes resulting from processing errors, environmental conditions, or intentional
manipulation. With appropriate mechanisms such as digital-signature-based
authentication, integrity can also provide data authentication/authenticity.
b) Bundle Confidentiality Block (bcb-confidentiality). This service specifies
authenticated confidentiality over the plaintext block-type-specific data of a target
block. This service also supports the inclusion of additional authenticated data beyond
the plaintext of the block-type-specific data of the target block.
The specifics of a security association are often negotiated and maintained as state at the
endpoints. As a result, endpoints can use a security parameters index (an integer), which,
together with the destination IP address and security protocol, uniquely identifies a single
(active) security association.
RFC 9172 uses the term ‘security context’ to refer to the set of assumptions, algorithms,
configurations, and policies used to implement security services. One of the main differences
between security contexts and security associations is that with security contexts, the
specifics needed to invoke the security services (the assumptions, algorithms, configurations
and policies) may be predefined so that no negotiated state is required at the endpoints.
Security contexts:
– are parameterizable; for instance, a single security context might be configurable to,
for example:
• allow the use of different cipher suites/key lengths (signaled as part of the block
containing the security operation),
• specify a set of ‘scope’ flags specifying which parts of the target Bundle Block
are to be covered by the security operation (e.g., to block-type-specific data only,
to include the header of the target block),
• include an optional parameter that is the encrypted version of a symmetric key
used to encrypt block context;
– include configuration and policy information; for example:
• specify what actions should be taken if particular security measures are not
present in the bundle or fail acceptance,
• specify which blocks should be included in outbound bundles to particular next
hops (e.g., previous-hop-block).
For example, one mission may use a 256-bit Advanced Encryption Standard (AES) cipher
suite for confidentiality with a negotiated Security Association IDentifier (SAID) (similar to
the security parameters index in IPsec). In this case, at most the SAID must be communicated
in the bundles that use confidentiality to process security at a security acceptor. Another
mission may use the same 256-bit AES cipher without the ability to negotiate (or sustain) a
security association. In this case, cipher suite parameters (possibly included a wrapped key)
may be encoded with a symmetric key and included in the security block. In both cases, the
same cipher suite is used, but the security context surrounding the cipher suite is very
different.
BPSec security blocks identify the security context used in the handling of cryptographic
materials associated with the security operations represented by these blocks. Different
security contexts can be used for different bundles and for different security operations
within a single bundle. The application of a given security context to a security operation is
defined by BPA local node policy on the security source.
BPSec security services can be applied to individual blocks within a bundle, providing fine-
grained security in a bundle.
Blocks in a bundle may carry different types of information. Payload blocks carry application
data. Extension blocks may carry network information, annotative information related to the
payload, or special processing instructions for the bundle itself. This combination of
network-focused, bundle-focused, and application-data-focused information often requires
different security services with different shared secrets (keys), different policies, and
different accesses.
BPSec specifies the application of a security service to a specific target block within a
bundle. This operation is notated as OP(service, target). For example, applying the of bib-
integrity service to a bundle’s primary block would be notated as:
BPSec requires that all security operations in a bundle be unique. This means that the same
security service cannot be applied to the same target block multiple times. Such a situation
would create ambiguity in the order of operation of verifying integrity and cases where some
integrity mechanisms succeed and others fail verification.
BPSec security services (such as bib-integrity) use security contexts to define cipher suites,
parameters, and results. It is possible to define a security context which would calculate
multiple integrity results over a single target block. In this case, there is still a single
operation, OP(bib-integrity, target block), with that operation carrying multiple security
results from the generating security context. This avoids the ambiguity of having multiple
security services, because this single security service generates all integrity results at the
same time, processes all integrity results at the same time, and provides a single mechanism
to dispose multiple integrity results that pass/fail verifications.
Security operations for a particular target block are instantiated in a bundle by their inclusion
in a security block. Every security block contains at least one, and possible many, security
operations.
When multiple security operations share certain common attributes (e.g., the same security
source, security service, and parameters) they may be aggregated into a single security block.
In this case, there is a one-to-many relationship between a security block and the security
operations it carries.
The relationship between security blocks and target blocks is illustrated in figure 2-1. The
figure illustrates a bundle containing six blocks: the required primary and payload block and
four extension blocks. Security block (1) provides a security service for target block (1) and
security block (2) provides a security service for target block (2).
BPSec defines three functions associated with the processing of security operations within
security blocks:
– the security source;
– security verifier;
– and security acceptor.
These roles are defined per security operation. This means that different security operations
in the same bundle might have different security sources, verifiers, and acceptors.
The security source of a security operation is the BPA that added the security block. The
source is identified as the Node ID of the BPA. Security sources must ensure that security
operations in a security block would not violate any constraints imposed by BPSec. When a
security block contains multiple security operations, all operations share the same security
source.
The security verifier of a security operation is one or more BPAs that verify a security
operation as a bundle transits through the BPA. If the verification succeeds, the security
blocks remains in the bundle. If the verification fails, the security block and bundle will be
processed in accordance with the local BPA security policy.
A given BPA might be identified as a security verifier for some, but not all, of the security
operations in a security block. For example, if a security block contains two security
operations: OP(bib-integrity, primary block) and OP(bib-integrity, payload block), a BPA
might be configured as the security verifier for the integrity results over the primary block
but not the payload block.
A common use of security verifiers is to verify the integrity and/or authenticity of blocks in a
bundle prior to its delivery to its destination. Detecting corrupted data quickly (and removing
corrupted bundles early) helps reduce congestion and resource utilization within the network.
The security acceptor of a security operation refers to the single BPA that both verifies and
removes a security operation from a bundle. When the last security operation is removed
from a security block, the security block is removed from the bundle.
A security acceptor does not have to be the bundle destination. Security operations may be
terminated prior to a bundle’s reaching a destination, particularly when some security results
are processed at administrative boundaries in a network.
The bundle destination is considered to be the default security acceptor for any security
operations remaining in a bundle when it reaches its destination.
Figure 2-2 illustrates the operational concepts associated with BPSec, where BN denotes a
‘bundle node’. Bundles are created at BN1 and BN2 and received by BN2 and BN3. The
BPAs at these nodes serve as the security source, verifier, and acceptor. A BPA may perform
multiple functions as shown by BN2, which acts as the security source for Bundle 3, security
verifier for Bundle 2, and security acceptor for Bundle 1.
Each security service is added for a target block by a security source and removed by a
security acceptor. Some bundles may encounter security verifiers in transit such as Bundle 2
at BN2.
Bundle 3
Bundle 2 Bundle 2
Bundle 1
BP BP BP
Figure 2-3 illustrates the operations of a security source, verifier, and acceptor on an integrity
security block.
At step 1, the security source identifies a target block in the bundle. By policy, integrity must
be applied before the bundle is transmitted. At step 2, the security source computes an
integrity result and adds it to the bundle in the form of a BPSec block.
Steps 3 and 4 occur at a security verifier. In step 3, the node is identified as the security block
security verifier. The security verifier verifies the integrity of the target of the security block
at step 4.
Steps 5, 6, and 7 occur at the security acceptor. Step 5 identifies the node as the security
block’s security acceptor. The integrity of the target block is verified in step 6. The security
block is removed from the bundle in step 7.
Security Source Bundle Protocol Agent Security Verifier Bundle Protocol Agent Security Acceptor Bundle Protocol Agent
2 4 6
Security Services Primary Block Security Services Primary Block Security Services
…
…
…
…
…
…
Bundle Processing Payload Block Bundle Processing Payload Block Bundle Processing Payload Block
1 3 5
2.3.1 OVERVIEW
This subsection describes those features of BPSec that distinguish it from security
mechanisms in existing network architectures (such as the Internet).
2.3.2 GENERAL
BPSec provides security services to assure the confidentiality, integrity, and/or authenticity
of the contents of blocks in a bundle. Specifically, BPSec provides the following capabilities:
– Security blocks may be added to a bundle by the source BPA or downstream BPAs.
– Security blocks may be modified or removed from a bundle by security verifiers and
security acceptors.
– A security block may represent either a collection of data integrity or a collection of
confidentiality security operations.
2.3.3 AUTHENTICATION
BPSec can provide authentication via a combination of BPSec block types and the security
context(s) in which they are used. Authentication can be applied to a single target block or to
some set of cryptographically bound target blocks. There are four mechanisms for
authenticating data provided by BPSec, as follows.
First, BPSec provides a mechanism for signature-based authentication of target block plaintext
through the application of a Block Integrity Block (BIB), which calculates a security result over
the contents of a target block. The calculated security result is defined by the security context
being applied. For example, a security context might specify that the BIB security result be
calculated as a SHA-2 signature combined with a keyed hash over the block-type-specific data
field of the target block. The authenticity of the target block could be assessed by a receiving
node by locally calculating the security result using a key associated with the expected
information source. If the computed result matches the result in the BIB, there is evidence that
the target block was both unchanged and created by the expected information source.
Third, BPSec provides a mechanism for authentication of information within BIB and BCB
blocks. Each BPSec security block contains a series of security context parameters, and
individual security contexts both define these parameters and define ways in which these
parameters must be authenticated. For example, if a security context defines a session key as
a parameter carried in a BIB or BCB, it may also specify that the session key be wrapped
using a long-term key encryption key using a specific key wrapping algorithm.
Fourth, by providing block-level granularity and the ability to define security contexts,
BPSec allows for the authentication of multiple blocks in a bundle (or the bundle itself)
through combinations of the above capabilities. For example, a signature-based integrity
check over the Primary Block (which includes the source and destination of the bundle) may
authenticate that a bundle should be processed by a BPA because the bundle was sourced by
an authorized bundle source. Alternatively, individual target blocks may include the Primary
Block (or other blocks) as part of their Additional Authenticated Data (AAD) in either
integrity or confidentiality operations. This effectively binds a given target block to a given
bundle and prevents blocks from being taken out of one bundle and included in another.
Finally, the security context mechanism defined by BPSec allows for the specification of
non-signature-based authentication mechanisms. It is conceivable that multi-factor
authentication mechanisms or non-signature based mechanisms can be applied to bundles and
associated behavior can be captured in a custom security context. This is possible because the
BIB and BCB blocks defined by BPSec carry security context parameters and security
context results, but how that information is used at a BPA is given by the behavior of the
individual security context.
BPSec provides the ability to secure individual target blocks. This requirement is derived
from the BPv7 feature allowing extension blocks containing different types of information.
Some blocks carry information about the bundle itself. Other blocks carry application data or
annotations related to the application data. Yet other blocks might carry information relevant
to the state of the network itself. Block-level granularity allows multiple security services to
be applied to blocks with the level(s) of security the target blocks require.
This is a unique provision because blocks might be added to a bundle after the bundle
creation and may need security applied.
BPv7 allows extension blocks to be added to a bundle at any node. A downstream node may
add a security block to a bundle, in which case that node is the security source for the added
security block.
The topology of a DTN might evolve over the lifetime of a bundle such that different nodes
along a bundle path have different security capabilities and roles from those that existed at
the time of bundle creation. Therefore the determination of which BPAs have which security
roles is made as part of the configuration of the BPA.
BPSec ensures that the creation, verification, and acceptance of security services within a bundle
always produce deterministic results. To accomplish this, BPSec imposes a strict ordering of
operations and restricts features or feature combinations that could endanger this ordering.
This document adopts the Bundle Protocol Security Protocol as specified in Internet RFC
9172 (reference [1]), with the constraints and exceptions specific in section 3 of this
document.
3.2.2 SCIs approved by CCSDS are those that are listed in the CCSDS approved security
contexts registry.
NOTES
1 IANA assigns BPSec Security Context Identifiers using the registry located at:
https://www.iana.org/assignments/bundle/bundle.xhtml#bpsec-security-context. This registry
is expected to include a range of context identifiers to be assigned and managed by SANA.
2 Wherever possible, missions are expected to use security contexts that are either
approved by the CCSDS or otherwise allocated from the SANA-assigned portion of
the BPSec Security Context Identifiers registry.
Security contexts approved by the CCSDS shall support CCSDS-approved key management
mechanisms.
NOTE – Key management mechanisms may be specified separately from the definition of
a security context in cases where multiple security contexts might use the same
key management mechanisms (such as exchanging keys) or in cases where
missions may choose to employ different mechanisms based on considerations
outside of the scope of the security context itself.
The specification and management of security policy on BPAs is necessary but outside the
scope of this document.
3.5.1 The recommendations of this document require the creation of a BPSec Approved
Security Contexts SANA registry. New entries require an approved CCSDS document
specifying the IANA-assigned Security Context Identifier.
NOTE – As indicated in 3.2.2, IANA assigns BPSec Security Context Identifiers using the
registry located at:
https://www.iana.org/assignments/bundle/bundle.xhtml#bpsec-security-context.
This registry is expected to include a range of context identifiers to be assigned
and managed by SANA.
3.5.2 Security contexts that CCSDS defines for space missions must be registered with
IANA.
The definitions of these functions are logical and do not presuppose any specific BPA,
security context definition, or cipher suite implementation. Function behaviors do not
presuppose any configuration approach, policy approach, or method for generating
cryptographic material.
This specification allows for the concurrent execution of these functions such that one
function can be started prior to completion of some other function, regardless of whether
these functions operate on different blocks within a bundle or different bundles within the
BPA.
The parameters for these functions are documented in an abstract sense and specify the
information passed between the BPA entity that calls the function and the BPSec entity that
executes the function. The way in which a specific implementation makes this information
available is not constrained by this specification. In addition to the parameters specified in
this section, an implementation may provide other parameters on the function interface (e.g.,
parameters for controlling the service, monitoring performance, diagnosis, and so on).
c) VerifyBIB.request;
d) VerifyBCB.request;
e) AcceptBIB.request;
f) AcceptBCB.request.
The Target Bundle parameter shall consist of the bundle containing one or more blocks for
which a BPSec service is being requested. The calling BPA must be the BPA identified as the
security source for security blocks being added.
The Target Block Identifiers parameter shall uniquely identify the target block(s) within the
target bundle being used by the ApplyBIB or ApplyBCB functions.
4.4.3.1 Modified bundles shall be returned as results of security operations that add or
remove security blocks from bundles.
4.4.3.2 The Modified Bundle parameter shall contain a copy of the target bundle that
includes any changes made by the BPSec service.
The New BIB Block Identifier paramter shall contain the block ID of the BIB block added as
a result of an ApplyBIB.request.
The New BCB Block Identifier paramenter shall contain the block ID of the BCB block
added as a result of an ApplyBCB.request.
4.4.6.1 The Security Context Identifier parameter shall identify the security context used to
generate cryptographic material associated with the ApplyBIB and ApplyBCB functions.
4.4.6.2 In the context of ApplyBCB, this parameter must reference an AEAD cipher suite.
4.4.7.1 The Security Context Parameters parameter shall consist of a set of parameters
associated with the security context identified by the Security Context Identifier.
4.4.7.2 These parameters must be provided as inputs to the algorithms used to produce
cryptographic material for the bundle.
NOTE – In addition to being input to the suite of algorithms, some of these parameters
may also be recorded in the BPSec security blocks added to the bundle for use by
downstream security verifiers and security acceptors.
4.4.8.1 The Local Security Context Parameters parameter shall consist of the information
configured at a security verifier BPA for the security context specified in the security block
identified in the Security Block parameter.
4.4.8.2 These local security context parameters must be provided as inputs to the security
context used to verify the integrity or confidentiality of the target block.
NOTE – The security block’s security context parameters and Local Security Context
Parameters may provide conflicting values for the same parameter. When such
conflicts exist, local node policy must specify how conflicts are resolved.
The Security Source parameter shall consist of the Endpoint IDentifier (EID) of the node that
is inserting the security block into the bundle.
The Verification Block Identifiers parameter shall uniquely identify the block(s) within the
target bundle being used by the VerifyBIB or VerifyBCB functions.
The Verification Result parameter shall indicate whether the verification operations passed or
failed.
NOTE – The verification result may include ancillary information such as error codes.
4.5.1 OVERVIEW
A security block is added to a bundle by the BPA serving as the security source for that
block. Each security block may contain one or more related security operations, with each
security operation applied to a different target block in the bundle. The BPSec defines two
security blocks: BIB and BCB, and these blocks are added to a bundle using two functions:
ApplyBIB and ApplyBCB.
4.5.2 ApplyBIB.request
4.5.2.1 Function
4.5.2.1.1 The ApplyBIB.request primitive shall be used to apply a BIB integrity operation
to one or more target blocks in a bundle.
4.5.2.1.2 All blocks that are targets of the BIB operation must be present in the target
bundle before invoking ApplyBIB.request.
4.5.2.2 Semantics
This function shall be invoked on a BPA when local security policy determines that the BPA
is the security source of a bib-integrity service for one or more target blocks in the bundle.
4.5.2.4.1 When invoked, this function shall provide all input parameters to the selected
security context, capture the results generated by the security context, and insert the results
into the target bundle in the form of a new security block.
4.5.2.4.2 The modified target bundle (with the new BIB block) shall be returned to the
caller in the ApplyBIB.indication.
4.5.2.5 ApplyBCB.request
4.5.2.6 Function
4.5.2.6.1 The ApplyBCB.request primitive shall be used to apply a BCB integrity operation
to one or more target blocks in a bundle.
4.5.2.6.2 All blocks that are targets of the BCB operation must be present in the target
bundle before invoking ApplyBCB.request.
4.5.2.7 Semantics
This function shall be invoked on a BPA when local security policy determines that the BPA
is the security source of a bcb-confidentiality service for one or more target blocks in the
bundle.
4.5.2.9.1 When invoked, this function shall provide all input parameters to the selected
security context, capture the results generated by the security context, and insert these results
into the bundle in the form of a new security block.
4.5.2.9.2 When the ApplyBCB Function has completed the processing, it shall return the
modified bundle with the new BCB block and any other changes via the
ApplyBCB.indication.
4.5.3 ApplyBIB.indication
4.5.3.1 Function
The ApplyBIB.indication primitive shall be used to provide the BPA the contents of the
bundle after the requested BIB security operation has been applied.
4.5.3.2 Semantics
ApplyBIB.indication shall be generated by the BPSec service once the requested BIB
security operation has been applied to the target bundle and the contents of the modified
bundle have been computed.
On receipt of ApplyBIB.indication, the BPA shall replace the original bundle with the
modified bundle.
4.5.4 ApplyBCB.indication
4.5.4.1 Function
The ApplyBCB.indication primitive shall be used to provide the BPA the contents of the
bundle after the requested BCB security operation has been applied.
4.5.4.2 Semantics
ApplyBCB.indication shall be generated by the BPSec service once the requested BCB
security operation has been applied to the target bundle and the contents of the modified
bundle have been computed.
On receipt of ApplyBCB.indication shall replace the original bundle with the modified
bundle.
4.5.5 VerifyBIB.request
4.5.5.1 Function
4.5.5.2 Semantics
4.5.6 VerifyBCB.request
4.5.6.1 Function
4.5.6.2 Semantics
4.5.7 VerifyBIB.indication
4.5.7.1 Function
4.5.7.2 Semantics
4.5.8 VerifyBCB.indication
4.5.8.1 Function
4.5.8.2 Semantics
4.5.9 AcceptBIB.request
4.5.9.1 Function
The AcceptBIB.request primitive shall be used by a security acceptor to verify the integrity
of security operations within the BIB for which the BPA is configured as a security acceptor.
4.5.9.2 Semantics
When invoked, AcceptBIB provides all input parameters to the selected security context,
captures the results generated by the security context, determines if the confidentiality
verification succeeded, and generates an AcceptBIB.indication.
4.5.10 AcceptBCB.request
4.5.10.1 Function
The AcceptBCB.request primitive shall be used by a security acceptor to verify the integrity
of security operations within the BCB for which the BPA is configured as a security
acceptor.
4.5.10.2 Semantics
When invoked, AcceptBCB.request provides all input parameters to the selected security
context, captures the results generated by the security context, determines if the
confidentiality verification succeeded, and generates an AcceptBCB.indication. If the
verification succeeded, the AcceptBCB.indication shall include decrypted versions of any
encrypted blocks.
4.5.11 AcceptBIB.indication
4.5.11.1 Function
4.5.11.2 Semantics
4.5.11.2.2 The modified bundle shall be such that accepted security operations are removed
from the BIB.
4.5.11.2.3 If all security operations are removed from a BIB, that the BIB shall be removed
from the bundle.
4.5.12 AcceptBCB.indication
4.5.12.1 Function
4.5.12.2 Semantics
4.5.12.2.2 Accepted security operations shall be removed from the BCB and, if all security
operations are removed from a BCB, the BCB will be removed from the bundle.
4.5.12.2.3 The target blocks of the confidentiality service shall be modified based on
whether confidentiality was successfully removed.
4.5.12.2.4 If confidentiality removal was successful, the ciphertext contents of the target
blocks shall be replaced by the plaintext outputs from the security context.
4.5.12.2.5 If confidentiality removal was not successful, the target block shall be removed
from the bundle.
ANNEX A
IMPLEMENTATION CONFORMANCE
STATEMENT PROFORMA
(NORMATIVE)
A1 INTRODUCTION
A1.1 OVERVIEW
This annex provides the ICS Requirements List (RL) for an implementation of BPSec for
CCSDS. The ICS for an implementation is generated by completing the RL in accordance
with the instructions below. An implementation claiming conformance must satisfy the
mandatory requirements referenced in the RL.
The RL consists of information in tabular form. The status of features is indicated using the
abbreviations and conventions described below.
Item Column
The item column contains sequential numbers for items in the table.
Feature Column
The feature column contains a brief descriptive name for a feature. It implicitly means ‘Is this
feature supported by the implementation?’
Status Column
The support column is to be used by the implementer to state whether a feature is supported
by entering Y, N, or N/A, indicating:
Y Yes, supported by the implementation.
N No, not supported by the implementation.
N/A Not applicable.
The support column should also be used, when appropriate, to enter values supported for a
given capability.
Implementation Name
Implementation Version
Special Configuration
Other Information
Supplier
Contact Point for Queries
Implementation Name(s) and Versions
Other information necessary for full
identification, for example, name(s) and
version(s) for machines and/or operating
systems;
System Name(s)
CCSDS 734.5-R-2
Have any exceptions been required? Yes [ ] No [ ]
ANNEX B
(NORMATIVE)
B1 OVERVIEW
A default set of BPSec security contexts that can be used for integrity and confidentiality
security operations has been defined in RFC 9173 (reference [8]).
For the purposes of CCSDS interoperability testing, implementations shall use security
contexts defined in reference [8].
Missions are not required to implement the security contexts defined in reference [8].
NOTE – CCSDS intends to define a set of security contexts for space missions; those
documents will state whether implementation of those contexts by missions is
mandatory or not.
ANNEX C
(INFORMATIVE)
C1 SECURITY CONSIDERATIONS
Malicious nodes may examine the contents of a bundle and attempt to recover protected data
or cryptographic keying material from the blocks contained within. The BPSec BCB protects
against this action by enciphering the contents of its target block thereby providing data
privacy via a confidentiality service.
Malicious nodes may continue to examine bundles offline in an attempt to recover encrypted
data. The security contexts used by the BCB should be selected to provide suitable protection
over the useful lifetime of the information being protected.
To provide verifiable integrity checks, the security contexts used by the BCB should utilize
encryption schemes that are ‘indistinguishable under adaptive chosen ciphertext attack’
(IND-CCA2) secure. Such schemes guard against signature substitution.
Malicious nodes may modify blocks within a bundle, to include replacing existing blocks,
adding new blocks, and removing blocks. BPSec can detect these activities using both the
BIB and BCB blocks, depending on whether plaintext or ciphertext integrity is required.
The integrity mechanisms used by the BIB and BCB should be strong against collision
attacks and malicious nodes should be prevented from accessing the cryptographic material
used by the security source. If these conditions can be met, malicious nodes will be unable to
modify the target block without being detected.
BPSec does not support an in-bundle mechanism to detect (or correct) cases where a
malicious node removes a block from a bundle. If a target block is removed, then any
security block associated with that target block will fail to validate. If a security block is
removed from the bundle, some other policy must be in place at the security verifier or
security acceptor to note that a security block was expected to exist in the bundle.
The implementation of BPSec must be combined with a policy configuration at BPAs which
describes the expected and required security operations that must be applied to, or expected
to be present for, blocks in bundles processed by the BPA.
No mechanisms are defined in this specification to verify or assist with the verification of
availability of resources.
No mechanisms are defined in this specification to audit or assist with the auditing of
resource usage by the protocol.
Malicious actors might attempt to disrupt network operations in a number of ways, including
but not limited to:
– injecting bundles with malicious or intentionally incorrect information in their
payloads;
– injecting bundles with intentionally malformed structure;
– replaying previously transmitted bundles;
– adding, removing, or modifying blocks to/from/in bundles;
– flooding the network with garbage traffic (denial-of-service attack).
(See reference [E1] for a fuller description of potential threats against space missions.)
If BPSec is not used, bundle delivery must rely on security measures provided by the
convergence layer adapter(s) and/or lower layers. For space applications these alternative
security measures may be non-existent or shared across a large group of applications and
application domains.
The consequence of not using BPSec is that bundle exchange has to rely on security
mechanisms either at the Data Link Layer or the Application Layer. Data Link Layer
security might be present on some links and not on others.
C2 SANA CONSIDERATIONS
In addition to the required SANA action identified in 3.5.1, SANA is requested to update the
CCSDS Abbreviations Registry (OID: 1.3.112.4.14) with the terms found in annex F.
C3 PATENT CONSIDERATIONS
There are no known patents covering Bundle Protocol Security as described in this document
and its normative references.
ANNEX D
(INFORMATIVE)
D1 OVERVIEW
Managed parameters are those parameters provided by management rather than being included
in the on-the-wire BPSec protocol. Because BP bundles may be stored in a network for
extended periods of time, parameters that identify the state of the network must be provided by
management as part of the policy or technical configuration of BPAs in the network.
This annex contains a set of suggested management parameters for BPSec implementations to
support. A future normative CCSDS document will provide a BPSec application data model in
the context of the BP network management framework currently under development.
D2 MANAGED PARAMETERS
The managed parameters listed in table D-1 are relevant to the overall configuration of a
BPSec implementation.
NOTES
1 The detailed specification of some managed parameters must occur in the context of a
specific security context. Such detail is not provided here.
2 These parameters are defined in an abstract sense, and are not intended to imply any
particular implementation of a management system.
The information elements described in table D-2 below are relevant to the operational state of
a BPSec instance. How such values are managed and/or requested/conveyed by any
particular network management system is not defined here.
Future normative books on security contexts will provide the managed parameters for those
specific security context definitions.
NOTE – Security context managed parameters are those parameters associated with the
security context of a BPSec block, but managed and provided by the BPAs
comprising the security source, security verifier (as appropriate) and security
acceptor of the security block as part of their local security context parameters.
ANNEX E
INFORMATIVE REFERENCES
(INFORMATIVE)
[E1] Security Threats against Space Missions. Issue 3. Report Concerning Space Data
System Standards (Green Book), CCSDS 350.1-G-3. Washington, D.C.: CCSDS,
February 2022.
[E2] The Application of Security to CCSDS Protocols. Issue 3. Report Concerning Space
Data System Standards (Green Book), CCSDS 350.0-G-3. Washington, D.C.: CCSDS,
March 2019.
[E3] CCSDS Cryptographic Algorithms. Issue 2. Recommendation for Space Data System
Standards (Blue Book), CCSDS 352.0-B-2. Washington, D.C.: CCSDS, August 2019.
ANNEX F
ABBREVIATIONS
(INFORMATIVE)
Term Meaning
AAD Additional Authenticated Data
AEAD Authenticated Encryption with Associated Data
BCB Block confidentiality block
BIB Block integrity block
BN Bundle Node
BP Bundle Protocol
BPA Bundle Protocol agent
BPSec Bundle Protocol Security
DTN Delay-Tolerant Networking
EID endpoint identifier
IANA Internet Assigned Numbers Authority
ICS Implementation Conformance Statement
ID Identifier
IETF Internet Engineering Task Force
IP Internet Protocol
IV initialization vector
OP Operation
OPA on path attacker
OSI Open Systems Interconnect
RFC Request for Comments
RL requirements list
SANA Space Assigned Numbers Authority
SCI security context identifier