summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8995.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8995.txt')
-rw-r--r--doc/rfc/rfc8995.txt5730
1 files changed, 5730 insertions, 0 deletions
diff --git a/doc/rfc/rfc8995.txt b/doc/rfc/rfc8995.txt
new file mode 100644
index 0000000..24ac99a
--- /dev/null
+++ b/doc/rfc/rfc8995.txt
@@ -0,0 +1,5730 @@
+
+
+
+
+Internet Engineering Task Force (IETF) M. Pritikin
+Request for Comments: 8995 Cisco
+Category: Standards Track M. Richardson
+ISSN: 2070-1721 Sandelman Software Works
+ T. Eckert
+ Futurewei USA
+ M. Behringer
+
+ K. Watsen
+ Watsen Networks
+ May 2021
+
+
+ Bootstrapping Remote Secure Key Infrastructure (BRSKI)
+
+Abstract
+
+ This document specifies automated bootstrapping of an Autonomic
+ Control Plane. To do this, a Secure Key Infrastructure is
+ bootstrapped. This is done using manufacturer-installed X.509
+ certificates, in combination with a manufacturer's authorizing
+ service, both online and offline. We call this process the
+ Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol.
+ Bootstrapping a new device can occur when using a routable address
+ and a cloud service, only link-local connectivity, or limited/
+ disconnected networks. Support for deployment models with less
+ stringent security requirements is included. Bootstrapping is
+ complete when the cryptographic identity of the new key
+ infrastructure is successfully deployed to the device. The
+ established secure connection can be used to deploy a locally issued
+ certificate to the device as well.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8995.
+
+Copyright Notice
+
+ Copyright (c) 2021 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 1.1. Prior Bootstrapping Approaches
+ 1.2. Terminology
+ 1.3. Scope of Solution
+ 1.3.1. Support Environment
+ 1.3.2. Constrained Environments
+ 1.3.3. Network Access Controls
+ 1.3.4. Bootstrapping is Not Booting
+ 1.4. Leveraging the New Key Infrastructure / Next Steps
+ 1.5. Requirements for Autonomic Networking Infrastructure (ANI)
+ Devices
+ 2. Architectural Overview
+ 2.1. Behavior of a Pledge
+ 2.2. Secure Imprinting Using Vouchers
+ 2.3. Initial Device Identifier
+ 2.3.1. Identification of the Pledge
+ 2.3.2. MASA URI Extension
+ 2.4. Protocol Flow
+ 2.5. Architectural Components
+ 2.5.1. Pledge
+ 2.5.2. Join Proxy
+ 2.5.3. Domain Registrar
+ 2.5.4. Manufacturer Service
+ 2.5.5. Public Key Infrastructure (PKI)
+ 2.6. Certificate Time Validation
+ 2.6.1. Lack of Real-Time Clock
+ 2.6.2. Infinite Lifetime of IDevID
+ 2.7. Cloud Registrar
+ 2.8. Determining the MASA to Contact
+ 3. Voucher-Request Artifact
+ 3.1. Nonceless Voucher-Requests
+ 3.2. Tree Diagram
+ 3.3. Examples
+ 3.4. YANG Module
+ 4. Proxying Details (Pledge -- Proxy -- Registrar)
+ 4.1. Pledge Discovery of Proxy
+ 4.1.1. Proxy GRASP Announcements
+ 4.2. CoAP Connection to Registrar
+ 4.3. Proxy Discovery and Communication of Registrar
+ 5. Protocol Details (Pledge -- Registrar -- MASA)
+ 5.1. BRSKI-EST TLS Establishment Details
+ 5.2. Pledge Requests Voucher from the Registrar
+ 5.3. Registrar Authorization of Pledge
+ 5.4. BRSKI-MASA TLS Establishment Details
+ 5.4.1. MASA Authentication of Customer Registrar
+ 5.5. Registrar Requests Voucher from MASA
+ 5.5.1. MASA Renewal of Expired Vouchers
+ 5.5.2. MASA Pinning of Registrar
+ 5.5.3. MASA Check of the Voucher-Request Signature
+ 5.5.4. MASA Verification of the Domain Registrar
+ 5.5.5. MASA Verification of the Pledge
+ 'prior-signed-voucher-request'
+ 5.5.6. MASA Nonce Handling
+ 5.6. MASA and Registrar Voucher Response
+ 5.6.1. Pledge Voucher Verification
+ 5.6.2. Pledge Authentication of Provisional TLS Connection
+ 5.7. Pledge BRSKI Status Telemetry
+ 5.8. Registrar Audit-Log Request
+ 5.8.1. MASA Audit-Log Response
+ 5.8.2. Calculation of domainID
+ 5.8.3. Registrar Audit-Log Verification
+ 5.9. EST Integration for PKI Bootstrapping
+ 5.9.1. EST Distribution of CA Certificates
+ 5.9.2. EST CSR Attributes
+ 5.9.3. EST Client Certificate Request
+ 5.9.4. Enrollment Status Telemetry
+ 5.9.5. Multiple Certificates
+ 5.9.6. EST over CoAP
+ 6. Clarification of Transfer-Encoding
+ 7. Reduced Security Operational Modes
+ 7.1. Trust Model
+ 7.2. Pledge Security Reductions
+ 7.3. Registrar Security Reductions
+ 7.4. MASA Security Reductions
+ 7.4.1. Issuing Nonceless Vouchers
+ 7.4.2. Trusting Owners on First Use
+ 7.4.3. Updating or Extending Voucher Trust Anchors
+ 8. IANA Considerations
+ 8.1. The IETF XML Registry
+ 8.2. YANG Module Names Registry
+ 8.3. BRSKI Well-Known Considerations
+ 8.3.1. BRSKI .well-known Registration
+ 8.3.2. BRSKI .well-known Registry
+ 8.4. PKIX Registry
+ 8.5. Pledge BRSKI Status Telemetry
+ 8.6. DNS Service Names
+ 8.7. GRASP Objective Names
+ 9. Applicability to the Autonomic Control Plane (ACP)
+ 9.1. Operational Requirements
+ 9.1.1. MASA Operational Requirements
+ 9.1.2. Domain Owner Operational Requirements
+ 9.1.3. Device Operational Requirements
+ 10. Privacy Considerations
+ 10.1. MASA Audit-Log
+ 10.2. What BRSKI-EST Reveals
+ 10.3. What BRSKI-MASA Reveals to the Manufacturer
+ 10.4. Manufacturers and Used or Stolen Equipment
+ 10.5. Manufacturers and Grey Market Equipment
+ 10.6. Some Mitigations for Meddling by Manufacturers
+ 10.7. Death of a Manufacturer
+ 11. Security Considerations
+ 11.1. Denial of Service (DoS) against MASA
+ 11.2. DomainID Must Be Resistant to Second-Preimage Attacks
+ 11.3. Availability of Good Random Numbers
+ 11.4. Freshness in Voucher-Requests
+ 11.5. Trusting Manufacturers
+ 11.6. Manufacturer Maintenance of Trust Anchors
+ 11.6.1. Compromise of Manufacturer IDevID Signing Keys
+ 11.6.2. Compromise of MASA Signing Keys
+ 11.6.3. Compromise of MASA Web Service
+ 11.7. YANG Module Security Considerations
+ 12. References
+ 12.1. Normative References
+ 12.2. Informative References
+ Appendix A. IPv4 and Non-ANI Operations
+ A.1. IPv4 Link-Local Addresses
+ A.2. Use of DHCPv4
+ Appendix B. mDNS / DNS-SD Proxy Discovery Options
+ Appendix C. Example Vouchers
+ C.1. Keys Involved
+ C.1.1. Manufacturer Certification Authority for IDevID
+ Signatures
+ C.1.2. MASA Key Pair for Voucher Signatures
+ C.1.3. Registrar Certification Authority
+ C.1.4. Registrar Key Pair
+ C.1.5. Pledge Key Pair
+ C.2. Example Process
+ C.2.1. Pledge to Registrar
+ C.2.2. Registrar to MASA
+ C.2.3. MASA to Registrar
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ The Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol
+ provides a solution for secure zero-touch (automated) bootstrap of
+ new (unconfigured) devices that are called "pledges" in this
+ document. Pledges have an Initial Device Identifier (IDevID)
+ installed in them at the factory.
+
+ "BRSKI", pronounced like "brewski", is a colloquial term for beer in
+ Canada and parts of the Midwestern United States [brewski].
+
+ This document primarily provides for the needs of the ISP and
+ enterprise-focused Autonomic Networking Integrated Model and Approach
+ (ANIMA) Autonomic Control Plane (ACP) [RFC8994]. This bootstrap
+ process satisfies the requirement of making all operations secure by
+ default per Section 3.3 of [RFC7575]. Other users of the BRSKI
+ protocol will need to provide separate applicability statements that
+ include privacy and security considerations appropriate to that
+ deployment. Section 9 explains the detailed applicability for this
+ ACP usage.
+
+ The BRSKI protocol requires a significant amount of communication
+ between manufacturer and owner: in its default modes, it provides a
+ cryptographic transfer of control to the initial owner. In its
+ strongest modes, it leverages sales channel information to identify
+ the owner in advance. Resale of devices is possible, provided that
+ the manufacturer is willing to authorize the transfer. Mechanisms to
+ enable transfers of ownership without manufacturer authorization are
+ not included in this version of the protocol, but it could be
+ designed into future versions.
+
+ This document describes how a pledge discovers (or are discovered by)
+ an element of the network domain that it will belong to and that will
+ perform its bootstrap. This element (device) is called the
+ "registrar". Before any other operation, the pledge and registrar
+ need to establish mutual trust:
+
+ 1. Registrar authenticating the pledge: "Who is this device? What
+ is its identity?"
+
+ 2. Registrar authorizing the pledge: "Is it mine? Do I want it?
+ What are the chances it has been compromised?"
+
+ 3. Pledge authenticating the registrar: "What is this registrar's
+ identity?"
+
+ 4. Pledge authorizing the registrar: "Should I join this network?"
+
+ This document details protocols and messages to answer the above
+ questions. It uses a TLS connection and a PKIX-shaped (X.509v3)
+ certificate (an IEEE 802.1AR IDevID [IDevID]) of the pledge to answer
+ points 1 and 2. It uses a new artifact called a "voucher" that the
+ registrar receives from a Manufacturer Authorized Signing Authority
+ (MASA) and passes it to the pledge to answer points 3 and 4.
+
+ A proxy provides very limited connectivity between the pledge and the
+ registrar.
+
+ The syntactic details of vouchers are described in detail in
+ [RFC8366]. This document details automated protocol mechanisms to
+ obtain vouchers, including the definition of a "voucher-request"
+ message that is a minor extension to the voucher format (see
+ Section 3) as defined by [RFC8366].
+
+ BRSKI results in the pledge storing an X.509 root certificate
+ sufficient for verifying the registrar identity. In the process, a
+ TLS connection is established that can be directly used for
+ Enrollment over Secure Transport (EST). In effect, BRSKI provides an
+ automated mechanism for "Bootstrap Distribution of CA Certificates"
+ described in [RFC7030], Section 4.1.1, wherein the pledge "MUST [...]
+ engage a human user to authorize the CA certificate using out-of-band
+ data". With BRSKI, the pledge now can automate this process using
+ the voucher. Integration with a complete EST enrollment is optional
+ but trivial.
+
+ BRSKI is agile enough to support bootstrapping alternative key
+ infrastructures, such as a symmetric key solution, but no such system
+ is described in this document.
+
+1.1. Prior Bootstrapping Approaches
+
+ To literally "pull yourself up by the bootstraps" is an impossible
+ action. Similarly, the secure establishment of a key infrastructure
+ without external help is also an impossibility. Today, it is
+ commonly accepted that the initial connections between nodes are
+ insecure, until key distribution is complete, or that domain-specific
+ keying material (often pre-shared keys, including mechanisms like
+ Subscriber Identification Module (SIM) cards) is pre-provisioned on
+ each new device in a costly and non-scalable manner. Existing
+ automated mechanisms are known as non-secured "Trust on First Use
+ (TOFU)" [RFC7435], "resurrecting duckling"
+ [Stajano99theresurrecting], or "pre-staging".
+
+ Another prior approach has been to try and minimize user actions
+ during bootstrapping, but not eliminate all user actions. The
+ original EST protocol [RFC7030] does reduce user actions during
+ bootstrapping but does not provide solutions for how the following
+ protocol steps can be made autonomic (not involving user actions):
+
+ * using the Implicit Trust Anchor (TA) [RFC7030] database to
+ authenticate an owner-specific service (not an autonomic solution
+ because the URL must be securely distributed),
+
+ * engaging a human user to authorize the CA certificate using out-
+ of-band data (not an autonomic solution because the human user is
+ involved),
+
+ * using a configured Explicit TA database (not an autonomic solution
+ because the distribution of an explicit TA database is not
+ autonomic), and
+
+ * using a certificate-less TLS mutual authentication method (not an
+ autonomic solution because the distribution of symmetric key
+ material is not autonomic).
+
+ These "touch" methods do not meet the requirements for zero-touch.
+
+ There are "call home" technologies where the pledge first establishes
+ a connection to a well-known manufacturer service using a common
+ client-server authentication model. After mutual authentication,
+ appropriate credentials to authenticate the target domain are
+ transferred to the pledge. This creates several problems and
+ limitations:
+
+ * the pledge requires real-time connectivity to the manufacturer
+ service,
+
+ * the domain identity is exposed to the manufacturer service (this
+ is a privacy concern), and
+
+ * the manufacturer is responsible for making the authorization
+ decisions (this is a liability concern).
+
+ BRSKI addresses these issues by defining extensions to the EST
+ protocol for the automated distribution of vouchers.
+
+1.2. Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+ The following terms are defined for clarity:
+
+ ANI: The Autonomic Networking Infrastructure as defined by
+ [RFC8993]. Section 9 details specific requirements for pledges,
+ proxies, and registrars when they are part of an ANI.
+
+ Circuit Proxy: A stateful implementation of the Join Proxy. This is
+ the assumed type of proxy.
+
+ drop-ship: The physical distribution of equipment containing the
+ "factory default" configuration to a final destination. In zero-
+ touch scenarios, there is no staging or preconfiguration during
+ drop-ship.
+
+ Domain: The set of entities that share a common local trust anchor.
+ This includes the proxy, registrar, domain CA, management
+ components, and any existing entity that is already a member of
+ the domain.
+
+ Domain CA: The domain Certification Authority (CA) provides
+ certification functionalities to the domain. At a minimum, it
+ provides certification functionalities to a registrar and manages
+ the private key that defines the domain. Optionally, it certifies
+ all elements.
+
+ domainID: The domain IDentity is a unique value based upon the
+ registrar's CA certificate. Section 5.8.2 specifies how it is
+ calculated.
+
+ enrollment: The process where a device presents key material to a
+ network and acquires a network-specific identity. For example,
+ when a certificate signing request is presented to a CA, and a
+ certificate is obtained in response.
+
+ IDevID: An Initial Device Identifier X.509 certificate installed by
+ the vendor on new equipment. This is a term from 802.1AR
+ [IDevID].
+
+ imprint: The process where a device obtains the cryptographic key
+ material to identify and trust future interactions with a network.
+ This term is taken from Konrad Lorenz's work in biology with new
+ ducklings: during a critical period, the duckling would assume
+ that anything that looks like a mother duck is in fact their
+ mother. An equivalent for a device is to obtain the fingerprint
+ of the network's root CA certificate. A device that imprints on
+ an attacker suffers a similar fate to a duckling that imprints on
+ a hungry wolf. Securely imprinting is a primary focus of this
+ document [imprinting]. The analogy to Lorenz's work was first
+ noted in [Stajano99theresurrecting].
+
+ IPIP Proxy: A stateless proxy alternative.
+
+ Join Proxy: A domain entity that helps the pledge join the domain.
+ A Join Proxy facilitates communication for devices that find
+ themselves in an environment where they are not provided
+ connectivity until after they are validated as members of the
+ domain. For simplicity, this document sometimes uses the term of
+ "proxy" to indicate the Join Proxy. The pledge is unaware that
+ they are communicating with a proxy rather than directly with a
+ registrar.
+
+ Join Registrar (and Coordinator): A representative of the domain
+ that is configured, perhaps autonomically, to decide whether a new
+ device is allowed to join the domain. The administrator of the
+ domain interfaces with a "Join Registrar (and Coordinator)" to
+ control this process. Typically, a Join Registrar is "inside" its
+ domain. For simplicity, this document often refers to this as
+ just "registrar". Within [RFC8993], it is referred to as the
+ "Join Registrar Autonomic Service Agent (ASA)". Other communities
+ use the abbreviation "JRC".
+
+ LDevID: A Local Device Identifier X.509 certificate installed by the
+ owner of the equipment. This is a term from 802.1AR [IDevID].
+
+ manufacturer: The term manufacturer is used throughout this document
+ as the entity that created the device. This is typically the
+ original equipment manufacturer (OEM), but in more complex
+ situations, it could be a value added retailer (VAR), or possibly
+ even a systems integrator. In general, a goal of BRSKI is to
+ eliminate small distinctions between different sales channels.
+ The reason for this is that it permits a single device, with a
+ uniform firmware load, to be shipped directly to all customers.
+ This eliminates costs for the manufacturer. This also reduces the
+ number of products supported in the field, increasing the chance
+ that firmware will be more up to date.
+
+ MASA Audit-Log: An anonymized list of previous owners maintained by
+ the MASA on a per-device (per-pledge) basis, as described in
+ Section 5.8.1.
+
+ MASA Service: A third-party MASA service on the global Internet.
+ The MASA signs vouchers. It also provides a repository for audit-
+ log information of privacy-protected bootstrapping events. It
+ does not track ownership.
+
+ nonced: A voucher (or request) that contains a nonce (the normal
+ case).
+
+ nonceless: A voucher (or request) that does not contain a nonce and
+ either relies upon accurate clocks for expiration or does not
+ expire.
+
+ offline: When an architectural component cannot perform real-time
+ communications with a peer, due to either network connectivity or
+ the peer being turned off, the operation is said to be occurring
+ offline.
+
+ Ownership Tracker: An Ownership Tracker service on the global
+ Internet. The Ownership Tracker uses business processes to
+ accurately track ownership of all devices shipped against domains
+ that have purchased them. Although optional, this component
+ allows vendors to provide additional value in cases where their
+ sales and distribution channels allow for accurate tracking of
+ such ownership. Tracking information about ownership is indicated
+ in vouchers, as described in [RFC8366].
+
+ Pledge: The prospective (unconfigured) device, which has an identity
+ installed at the factory.
+
+ (Public) Key Infrastructure: The collection of systems and processes
+ that sustains the activities of a public key system. The
+ registrar acts as a "Registration Authority"; see [RFC5280] and
+ Section 7 of [RFC5272].
+
+ TOFU: Trust on First Use. Used similarly to how it is described in
+ [RFC7435]. This is where a pledge device makes no security
+ decisions but rather simply trusts the first registrar it is
+ contacted by. This is also known as the "resurrecting duckling"
+ model.
+
+ Voucher: A signed artifact from the MASA that indicates the
+ cryptographic identity of the registrar it should trust to a
+ pledge. There are different types of vouchers depending on how
+ that trust is asserted. Multiple voucher types are defined in
+ [RFC8366].
+
+1.3. Scope of Solution
+
+1.3.1. Support Environment
+
+ This solution (BRSKI) can support large router platforms with multi-
+ gigabit inter-connections, mounted in controlled access data centers.
+ But this solution is not exclusive to large equipment: it is intended
+ to scale to thousands of devices located in hostile environments,
+ such as ISP-provided Customer Premises Equipment (CPE) devices that
+ are drop-shipped to the end user. The situation where an order is
+ fulfilled from a distributed warehouse from a common stock and
+ shipped directly to the target location at the request of a domain
+ owner is explicitly supported. That stock ("SKU") could be provided
+ to a number of potential domain owners, and the eventual domain owner
+ will not know a priori which device will go to which location.
+
+ The bootstrapping process can take minutes to complete depending on
+ the network infrastructure and device processing speed. The network
+ communication itself is not optimized for speed; for privacy reasons,
+ the discovery process allows for the pledge to avoid announcing its
+ presence through broadcasting.
+
+ Nomadic or mobile devices often need to acquire credentials to access
+ the network at the new location. An example of this is mobile phone
+ roaming among network operators, or even between cell towers. This
+ is usually called "handoff". BRSKI does not provide a low-latency
+ handoff, which is usually a requirement in such situations. For
+ these solutions, BRSKI can be used to create a relationship (an
+ LDevID) with the "home" domain owner. The resulting credentials are
+ then used to provide credentials more appropriate for a low-latency
+ handoff.
+
+1.3.2. Constrained Environments
+
+ Questions have been posed as to whether this solution is suitable in
+ general for Internet of Things (IoT) networks. This depends on the
+ capabilities of the devices in question. The terminology of
+ [RFC7228] is best used to describe the boundaries.
+
+ The solution described in this document is aimed in general at non-
+ constrained (i.e., Class 2+ [RFC7228]) devices operating on a non-
+ challenged network. The entire solution as described here is not
+ intended to be usable as is by constrained devices operating on
+ challenged networks (such as 802.15.4 Low-Power and Lossy Networks
+ (LLNs)).
+
+ Specifically, there are protocol aspects described here that might
+ result in congestion collapse or energy exhaustion of intermediate
+ battery-powered routers in an LLN. Those types of networks should
+ not use this solution. These limitations are predominately related
+ to the large credential and key sizes required for device
+ authentication. Defining symmetric key techniques that meet the
+ operational requirements is out of scope, but the underlying protocol
+ operations (TLS handshake and signing structures) have sufficient
+ algorithm agility to support such techniques when defined.
+
+ The imprint protocol described here could, however, be used by non-
+ energy constrained devices joining a non-constrained network (for
+ instance, smart light bulbs are usually mains powered and use 802.11
+ wireless technology). It could also be used by non-constrained
+ devices across a non-energy constrained, but challenged, network
+ (such as 802.15.4). The certificate contents, and the process by
+ which the four questions above are resolved, do apply to constrained
+ devices. It is simply the actual on-the-wire imprint protocol that
+ could be inappropriate.
+
+1.3.3. Network Access Controls
+
+ This document presumes that network access control has already
+ occurred, is not required, or is integrated by the proxy and
+ registrar in such a way that the device itself does not need to be
+ aware of the details. Although the use of an X.509 IDevID is
+ consistent with IEEE 802.1AR [IDevID], and allows for alignment with
+ 802.1X network access control methods, its use here is for pledge
+ authentication rather than network access control. Integrating this
+ protocol with network access control, perhaps as an Extensible
+ Authentication Protocol (EAP) method (see [RFC3748]), is out of scope
+ for this document.
+
+1.3.4. Bootstrapping is Not Booting
+
+ This document describes "bootstrapping" as the protocol used to
+ obtain a local trust anchor. It is expected that this trust anchor,
+ along with any additional configuration information subsequently
+ installed, is persisted on the device across system restarts
+ ("booting"). Bootstrapping occurs only infrequently such as when a
+ device is transferred to a new owner or has been reset to factory
+ default settings.
+
+1.4. Leveraging the New Key Infrastructure / Next Steps
+
+ As a result of the protocol described herein, bootstrapped devices
+ have the domain CA trust anchor in common. An end-entity (EE)
+ certificate has optionally been issued from the domain CA. This
+ makes it possible to securely deploy functionalities across the
+ domain; for example:
+
+ * Device management
+
+ * Routing authentication
+
+ * Service discovery
+
+ The major intended benefit is the ability to use the credentials
+ deployed by this protocol to secure the Autonomic Control Plane (ACP)
+ [RFC8994].
+
+1.5. Requirements for Autonomic Networking Infrastructure (ANI) Devices
+
+ The BRSKI protocol can be used in a number of environments. Some of
+ the options in this document are the result of requirements that are
+ out of the ANI scope. This section defines the base requirements for
+ ANI devices.
+
+ For devices that intend to become part of an ANI [RFC8993] that
+ includes an Autonomic Control Plane [RFC8994], the BRSKI protocol
+ MUST be implemented.
+
+ The pledge must perform discovery of the proxy as described in
+ Section 4.1 using the Discovery Unsolicited Link-Local (DULL)
+ [RFC8990] M_FLOOD announcements of the GeneRic Autonomic Signaling
+ Protocol (GRASP).
+
+ Upon successfully validating a voucher artifact, a status telemetry
+ MUST be returned; see Section 5.7.
+
+ An ANIMA ANI pledge MUST implement the EST automation extensions
+ described in Section 5.9. They supplement the EST [RFC7030] to
+ better support automated devices that do not have an end user.
+
+ The ANI Join Registrar ASA MUST support all the BRSKI and above-
+ listed EST operations.
+
+ All ANI devices SHOULD support the BRSKI proxy function, using
+ Circuit Proxies over the Autonomic Control Plane (ACP) (see
+ Section 4.3).
+
+2. Architectural Overview
+
+ The logical elements of the bootstrapping framework are described in
+ this section. Figure 1 provides a simplified overview of the
+ components.
+
+ +------------------------+
+ +--------------Drop-Ship----------------| Vendor Service |
+ | +------------------------+
+ | | M anufacturer| |
+ | | A uthorized |Ownership|
+ | | S igning |Tracker |
+ | | A uthority | |
+ | +--------------+---------+
+ | ^
+ | | BRSKI-
+ V | MASA
+ +-------+ ............................................|...
+ | | . | .
+ | | . +------------+ +-----------+ | .
+ | | . | | | | | .
+ |Pledge | . | Join | | Domain <-------+ .
+ | | . | Proxy | | Registrar | .
+ | <-------->............<-------> (PKI RA) | .
+ | | | BRSKI-EST | | .
+ | | . | | +-----+-----+ .
+ |IDevID | . +------------+ | e.g., RFC 7030 .
+ | | . +-----------------+----------+ .
+ | | . | Key Infrastructure | .
+ | | . | (e.g., PKI CA) | .
+ +-------+ . | | .
+ . +----------------------------+ .
+ . .
+ ................................................
+ "Domain" Components
+
+ Figure 1: Architecture Overview
+
+ We assume a multivendor network. In such an environment, there could
+ be a manufacturer service for each manufacturer that supports devices
+ following this document's specification, or an integrator could
+ provide a generic service authorized by multiple manufacturers. It
+ is unlikely that an integrator could provide ownership tracking
+ services for multiple manufacturers due to the required sales channel
+ integrations necessary to track ownership.
+
+ The domain is the managed network infrastructure with a key
+ infrastructure that the pledge is joining. The domain provides
+ initial device connectivity sufficient for bootstrapping through a
+ proxy. The domain registrar authenticates the pledge, makes
+ authorization decisions, and distributes vouchers obtained from the
+ manufacturer service. Optionally, the registrar also acts as a PKI
+ CA.
+
+2.1. Behavior of a Pledge
+
+ The pledge goes through a series of steps, which are outlined here at
+ a high level.
+
+ ------------
+ / Factory \
+ \ default /
+ -----+------
+ |
+ +------v-------+
+ | (1) Discover |
+ +------------> |
+ | +------+-------+
+ | |
+ | +------v-------+
+ | | (2) Identify |
+ ^------------+ |
+ | rejected +------+-------+
+ | |
+ | +------v-------+
+ | | (3) Request |
+ | | Join |
+ | +------+-------+
+ | |
+ | +------v-------+
+ | | (4) Imprint |
+ ^------------+ |
+ | Bad MASA +------+-------+
+ | response | send Voucher Status Telemetry
+ | +------v-------+
+ | | (5) Enroll |<---+ (non-error HTTP codes)
+ ^------------+ |\___/ (e.g., 202 "Retry-After")
+ | Enroll +------+-------+
+ | failure |
+ | -----v------
+ | / Enrolled \
+ ^------------+ |
+ Factory \------------/
+ reset
+
+ Figure 2: Pledge State Diagram
+
+ State descriptions for the pledge are as follows:
+
+ 1. Discover a communication channel to a registrar.
+
+ 2. Identify itself. This is done by presenting an X.509 IDevID
+ credential to the discovered registrar (via the proxy) in a TLS
+ handshake. (The registrar credentials are only provisionally
+ accepted at this time.)
+
+ 3. Request to join the discovered registrar. A unique nonce is
+ included, ensuring that any responses can be associated with this
+ particular bootstrapping attempt.
+
+ 4. Imprint on the registrar. This requires verification of the
+ manufacturer-service-provided voucher. A voucher contains
+ sufficient information for the pledge to complete authentication
+ of a registrar. This document details this step in depth.
+
+ 5. Enroll. After imprint, an authenticated TLS (HTTPS) connection
+ exists between the pledge and registrar. EST [RFC7030] can then
+ be used to obtain a domain certificate from a registrar.
+
+ The pledge is now a member of, and can be managed by, the domain and
+ will only repeat the discovery aspects of bootstrapping if it is
+ returned to factory default settings.
+
+ This specification details integration with EST enrollment so that
+ pledges can optionally obtain a locally issued certificate, although
+ any Representational State Transfer (REST) (see [REST]) interface
+ could be integrated in future work.
+
+2.2. Secure Imprinting Using Vouchers
+
+ A voucher is a cryptographically protected artifact (using a digital
+ signature) to the pledge device authorizing a zero-touch imprint on
+ the registrar domain.
+
+ The format and cryptographic mechanism of vouchers is described in
+ detail in [RFC8366].
+
+ Vouchers provide a flexible mechanism to secure imprinting: the
+ pledge device only imprints when a voucher can be validated. At the
+ lowest security levels, the MASA can indiscriminately issue vouchers
+ and log claims of ownership by domains. At the highest security
+ levels, issuance of vouchers can be integrated with complex sales
+ channel integrations that are beyond the scope of this document. The
+ sales channel integration would verify actual (legal) ownership of
+ the pledge by the domain. This provides the flexibility for a number
+ of use cases via a single common protocol mechanism on the pledge and
+ registrar devices that are to be widely deployed in the field. The
+ MASA services have the flexibility to either leverage the currently
+ defined claim mechanisms or experiment with higher or lower security
+ levels.
+
+ Vouchers provide a signed but non-encrypted communication channel
+ among the pledge, the MASA, and the registrar. The registrar
+ maintains control over the transport and policy decisions, allowing
+ the local security policy of the domain network to be enforced.
+
+2.3. Initial Device Identifier
+
+ Pledge authentication and pledge voucher-request signing is via a
+ PKIX-shaped certificate installed during the manufacturing process.
+ This is the 802.1AR IDevID, and it provides a basis for
+ authenticating the pledge during the protocol exchanges described
+ here. There is no requirement for a common root PKI hierarchy. Each
+ device manufacturer can generate its own root certificate.
+ Specifically, the IDevID enables:
+
+ * Uniquely identifying the pledge by the Distinguished Name (DN) and
+ subjectAltName (SAN) parameters in the IDevID. The unique
+ identification of a pledge in the voucher objects are derived from
+ those parameters as described below. Section 10.3 discusses
+ privacy implications of the identifier.
+
+ * Providing a cryptographic authentication of the pledge to the
+ registrar (see Section 5.3).
+
+ * Securing auto-discovery of the pledge's MASA by the registrar (see
+ Section 2.8).
+
+ * Signing of a voucher-request by the pledge's IDevID (see
+ Section 3).
+
+ * Providing a cryptographic authentication of the pledge to the MASA
+ (see Section 5.5.5).
+
+ Sections 7.2.13 (2009 edition) and 8.10.3 (2018 edition) of [IDevID]
+ discuss keyUsage and extendedKeyUsage extensions in the IDevID
+ certificate. [IDevID] acknowledges that adding restrictions in the
+ certificate limits applicability of these long-lived certificates.
+ This specification emphasizes this point and therefore RECOMMENDS
+ that no key usage restrictions be included. This is consistent with
+ [RFC5280], Section 4.2.1.3, which does not require key usage
+ restrictions for end-entity certificates.
+
+2.3.1. Identification of the Pledge
+
+ In the context of BRSKI, pledges have a 1:1 relationship with a
+ "serial-number". This serial-number is used both in the serial-
+ number field of a voucher or voucher-requests (see Section 3) and in
+ local policies on the registrar or MASA (see Section 5).
+
+ There is a (certificate) serialNumber field defined in [RFC5280],
+ Section 4.1.2.2. In ASN.1, this is referred to as the
+ CertificateSerialNumber. This field is NOT relevant to this
+ specification. Do not confuse this field with the serial-number
+ defined by this document, or by [IDevID] and [RFC4519], Section 2.31.
+
+ The device serial number is defined in Appendix A.1 of [RFC5280] as
+ the X520SerialNumber, with the OID tag id-at-serialNumber.
+
+ The device _serialNumber_ field (X520SerialNumber) is used as follows
+ by the pledge to build the *serial-number* that is placed in the
+ voucher-request. In order to build it, the fields need to be
+ converted into a serial-number of "type string".
+
+ An example of a printable form of the serialNumber field is provided
+ in [RFC4519], Section 2.31 ("WI-3005"). That section further
+ provides equality and syntax attributes.
+
+ Due to the reality of existing device identity provisioning
+ processes, some manufacturers have stored serial-numbers in other
+ fields. Registrars SHOULD be configurable, on a per-manufacturer
+ basis, to look for serial-number equivalents in other fields.
+
+ As explained in Section 5.5, the registrar MUST again extract the
+ serialNumber itself from the pledge's TLS certificate. It can
+ consult the serial-number in the pledge request if there is any
+ possible confusion about the source of the serial-number.
+
+2.3.2. MASA URI Extension
+
+ This document defines a new PKIX non-critical certificate extension
+ to carry the MASA URI. This extension is intended to be used in the
+ IDevID certificate. The URI is represented as described in
+ Section 7.4 of [RFC5280].
+
+ The URI provides the authority information. The BRSKI "/.well-known"
+ tree [RFC8615] is described in Section 5.
+
+ A complete URI MAY be in this extension, including the "scheme",
+ "authority", and "path". The complete URI will typically be used in
+ diagnostic or experimental situations. Typically (and in
+ consideration to constrained systems), this SHOULD be reduced to only
+ the "authority", in which case a scheme of "https://" (see [RFC7230],
+ Section 2.7.3) and a "path" of "/.well-known/brski" is to be assumed.
+
+ The registrar can assume that only the "authority" is present in the
+ extension, if there are no slash ("/") characters in the extension.
+
+ Section 7.4 of [RFC5280] calls out various schemes that MUST be
+ supported, including the Lightweight Directory Access Protocol
+ (LDAP), HTTP, and FTP. However, the registrar MUST use HTTPS for the
+ BRSKI-MASA connection.
+
+ The new extension is identified as follows:
+
+ <CODE BEGINS>
+ MASAURLExtnModule-2016 { iso(1) identified-organization(3) dod(6)
+ internet(1) security(5) mechanisms(5) pkix(7)
+ id-mod(0) id-mod-MASAURLExtn2016(96) }
+
+ DEFINITIONS IMPLICIT TAGS ::= BEGIN
+
+ -- EXPORTS ALL --
+
+ IMPORTS
+ EXTENSION
+ FROM PKIX-CommonTypes-2009
+ { iso(1) identified-organization(3) dod(6) internet(1)
+ security(5) mechanisms(5) pkix(7) id-mod(0)
+ id-mod-pkixCommon-02(57) }
+
+ id-pe FROM PKIX1Explicit-2009
+ { iso(1) identified-organization(3) dod(6) internet(1)
+ security(5) mechanisms(5) pkix(7) id-mod(0)
+ id-mod-pkix1-explicit-02(51) } ;
+
+ MASACertExtensions EXTENSION ::= { ext-MASAURL, ... }
+ ext-MASAURL EXTENSION ::= { SYNTAX MASAURLSyntax
+ IDENTIFIED BY id-pe-masa-url }
+
+ id-pe-masa-url OBJECT IDENTIFIER ::= { id-pe 32 }
+
+ MASAURLSyntax ::= IA5String
+
+ END
+ <CODE ENDS>
+
+ Figure 3: MASAURL ASN.1 Module
+
+ The choice of id-pe is based on guidance found in Section 4.2.2 of
+ [RFC5280]: "These extensions may be used to direct applications to
+ on-line information about the issuer or the subject". The MASA URL
+ is precisely that: online information about the particular subject.
+
+2.4. Protocol Flow
+
+ A representative flow is shown in Figure 4.
+
+ +--------+ +---------+ +------------+ +------------+
+ | Pledge | | Circuit | | Domain | | Vendor |
+ | | | Join | | Registrar | | Service |
+ | | | Proxy | | (JRC) | | (MASA) |
+ +--------+ +---------+ +------------+ +------------+
+ | | | Internet |
+ [discover] | | |
+ |<-RFC 4862 IPv6 addr | | |
+ |<-RFC 3927 IPv4 addr | Appendix A | Legend |
+ |-++++++++++++++++++->| | C - Circuit |
+ | optional: mDNS query| Appendix B | Join Proxy |
+ | RFCs 6763/6762 (+) | | P - Provisional TLS|
+ |<-++++++++++++++++++-| | Connection |
+ | GRASP M_FLOOD | | |
+ | periodic broadcast| | |
+ [identity] | | |
+ |<------------------->C<----------------->| |
+ | TLS via the Join Proxy | |
+ |<--Registrar TLS server authentication---| |
+ [PROVISIONAL accept of server cert] | |
+ P---X.509 client authentication---------->| |
+ [request join] | |
+ P---Voucher-Request(w/nonce for voucher)->| |
+ P /------------------- | |
+ P | [accept device?] |
+ P | [contact vendor] |
+ P | |--Pledge ID-------->|
+ P | |--Domain ID-------->|
+ P | |--optional:nonce--->|
+ P optional: | [extract DomainID]
+ P can occur in advance | [update audit-log]
+ P if nonceless | |
+ P | |<- voucher ---------|
+ P \------------------- | w/nonce if provided|
+ P<------voucher---------------------------| |
+ [imprint] | |
+ |-------voucher status telemetry--------->| |
+ | |<-device audit-log--|
+ | [verify audit-log and voucher] |
+ |<--------------------------------------->| |
+ [enroll] | |
+ | Continue with enrollment using now | |
+ | bidirectionally authenticated TLS | |
+ | session per RFC 7030. | |
+ [enrolled] | |
+
+ Figure 4: Protocol Time Sequence Diagram
+
+ On initial bootstrap, a new device (the pledge) uses a local service
+ auto-discovery (the GeneRic Autonomic Signaling Protocol (GRASP) or
+ Multicast DNS (mDNS)) to locate a Join Proxy. The Join Proxy
+ connects the pledge to a local registrar (the JRC).
+
+ Having found a candidate registrar, the fledgling pledge sends some
+ information about itself to the registrar, including its serial
+ number in the form of a voucher-request and its IDevID certificate as
+ part of the TLS session.
+
+ The registrar can determine whether it expected such a device to
+ appear and locates a MASA. The location of the MASA is usually found
+ in an extension in the IDevID. Having determined that the MASA is
+ suitable, the entire information from the initial voucher-request
+ (including the device's serial number) is transmitted over the
+ Internet in a TLS-protected channel to the manufacturer, along with
+ information about the registrar/owner.
+
+ The manufacturer can then apply policy based on the provided
+ information, as well as other sources of information (such as sales
+ records), to decide whether to approve the claim by the registrar to
+ own the device; if the claim is accepted, a voucher is issued that
+ directs the device to accept its new owner.
+
+ The voucher is returned to the registrar, but not immediately to the
+ device -- the registrar has an opportunity to examine the voucher,
+ the MASA's audit-logs, and other sources of information to determine
+ whether the device has been tampered with and whether the bootstrap
+ should be accepted.
+
+ No filtering of information is possible in the signed voucher, so
+ this is a binary yes-or-no decision. After the registrar has applied
+ any local policy to the voucher, if it accepts the voucher, then the
+ voucher is returned to the pledge for imprinting.
+
+ The voucher also includes a trust anchor that the pledge uses to
+ represent the owner. This is used to successfully bootstrap from an
+ environment where only the manufacturer has built-in trust by the
+ device to an environment where the owner now has a PKI footprint on
+ the device.
+
+ When BRSKI is followed with EST, this single footprint is further
+ leveraged into the full owner's PKI and an LDevID for the device.
+ Subsequent reporting steps provide flows of information to indicate
+ success/failure of the process.
+
+2.5. Architectural Components
+
+2.5.1. Pledge
+
+ The pledge is the device that is attempting to join. It is assumed
+ that the pledge talks to the Join Proxy using link-local network
+ connectivity. In most cases, the pledge has no other connectivity
+ until the pledge completes the enrollment process and receives some
+ kind of network credential.
+
+2.5.2. Join Proxy
+
+ The Join Proxy provides HTTPS connectivity between the pledge and the
+ registrar. A Circuit Proxy mechanism is described in Section 4.
+ Additional mechanisms, including a Constrained Application Protocol
+ (CoAP) mechanism and a stateless IP in IP (IPIP) mechanism, are the
+ subject of future work.
+
+2.5.3. Domain Registrar
+
+ The domain's registrar operates as the BRSKI-MASA client when
+ requesting vouchers from the MASA (see Section 5.4). The registrar
+ operates as the BRSKI-EST server when pledges request vouchers (see
+ Section 5.1). The registrar operates as the BRSKI-EST server
+ "Registration Authority" if the pledge requests an end-entity
+ certificate over the BRSKI-EST connection (see Section 5.9).
+
+ The registrar uses an Implicit Trust Anchor database for
+ authenticating the BRSKI-MASA connection's MASA TLS server
+ certificate. Configuration or distribution of trust anchors is out
+ of scope for this specification.
+
+ The registrar uses a different Implicit Trust Anchor database for
+ authenticating the BRSKI-EST connection's pledge TLS Client
+ Certificate. Configuration or distribution of the BRSKI-EST client
+ trust anchors is out of scope of this specification. Note that the
+ trust anchors in / excluded from the database will affect which
+ manufacturers' devices are acceptable to the registrar as pledges,
+ and they can also be used to limit the set of MASAs that are trusted
+ for enrollment.
+
+2.5.4. Manufacturer Service
+
+ The manufacturer service provides two logically separate functions:
+ the MASA as described in Sections 5.5 and 5.6 and an ownership
+ tracking/auditing function as described in Sections 5.7 and 5.8.
+
+2.5.5. Public Key Infrastructure (PKI)
+
+ The Public Key Infrastructure (PKI) administers certificates for the
+ domain of concern, providing the trust anchor(s) for it and allowing
+ enrollment of pledges with domain certificates.
+
+ The voucher provides a method for the distribution of a single PKI
+ trust anchor (as the "pinned-domain-cert"). A distribution of the
+ full set of current trust anchors is possible using the optional EST
+ integration.
+
+ The domain's registrar acts as a Registration Authority [RFC5272],
+ requesting certificates for pledges from the PKI.
+
+ The expectations of the PKI are unchanged from EST [RFC7030]. This
+ document does not place any additional architectural requirements on
+ the PKI.
+
+2.6. Certificate Time Validation
+
+2.6.1. Lack of Real-Time Clock
+
+ When bootstrapping, many devices do not have knowledge of the current
+ time. Mechanisms such as Network Time Protocols cannot be secured
+ until bootstrapping is complete. Therefore, bootstrapping is defined
+ with a framework that does not require knowledge of the current time.
+ A pledge MAY ignore all time stamps in the voucher and in the
+ certificate validity periods if it does not know the current time.
+
+ The pledge is exposed to dates in the following five places:
+ registrar certificate notBefore, registrar certificate notAfter,
+ voucher created-on, and voucher expires-on. Additionally,
+ Cryptographic Message Syntax (CMS) signatures contain a signingTime.
+
+ A pledge with a real-time clock in which it has confidence MUST check
+ the above time fields in all certificates and signatures that it
+ processes.
+
+ If the voucher contains a nonce, then the pledge MUST confirm the
+ nonce matches the original pledge voucher-request. This ensures the
+ voucher is fresh. See Section 5.2.
+
+2.6.2. Infinite Lifetime of IDevID
+
+ Long-lived pledge certificates "SHOULD be assigned the
+ GeneralizedTime value of 99991231235959Z" for the notAfter field as
+ explained in [RFC5280].
+
+ Some deployed IDevID management systems are not compliant with the
+ 802.1AR requirement for infinite lifetimes and are put in typical <=
+ 3 year certificate lifetimes. Registrars SHOULD be configurable on a
+ per-manufacturer basis to ignore pledge lifetimes when the pledge
+ does not follow the recommendations in [RFC5280].
+
+2.7. Cloud Registrar
+
+ There exist operationally open networks wherein devices gain
+ unauthenticated access to the Internet at large. In these use cases,
+ the management domain for the device needs to be discovered within
+ the larger Internet. The case where a device can boot and get access
+ to a larger Internet is less likely within the ANIMA ACP scope but
+ may be more important in the future. In the ANIMA ACP scope, new
+ devices will be quarantined behind a Join Proxy.
+
+ Additionally, there are some greenfield situations involving an
+ entirely new installation where a device may have some kind of
+ management uplink that it can use (such as via a 3G network, for
+ instance). In such a future situation, the device might use this
+ management interface to learn that it should configure itself to
+ become the local registrar.
+
+ In order to support these scenarios, the pledge MAY contact a well-
+ known URI of a cloud registrar if a local registrar cannot be
+ discovered or if the pledge's target use cases do not include a local
+ registrar.
+
+ If the pledge uses a well-known URI for contacting a cloud registrar,
+ a manufacturer-assigned Implicit Trust Anchor database (see
+ [RFC7030]) MUST be used to authenticate that service as described in
+ [RFC6125]. The use of a DNS-ID for validation is appropriate, and it
+ may include wildcard components on the left-mode side. This is
+ consistent with the human-user configuration of an EST server URI in
+ [RFC7030], which also depends on [RFC6125].
+
+2.8. Determining the MASA to Contact
+
+ The registrar needs to be able to contact a MASA that is trusted by
+ the pledge in order to obtain vouchers.
+
+ The device's IDevID will normally contain the MASA URL as detailed in
+ Section 2.3. This is the RECOMMENDED mechanism.
+
+ In some cases, it can be operationally difficult to ensure the
+ necessary X.509 extensions are in the pledge's IDevID due to the
+ difficulty of aligning current pledge manufacturing with software
+ releases and development; thus, as a final fallback, the registrar
+ MAY be manually configured or distributed with a MASA URL for each
+ manufacturer. Note that the registrar can only select the configured
+ MASA URL based on the trust anchor -- so manufacturers can only
+ leverage this approach if they ensure a single MASA URL works for all
+ pledges associated with each trust anchor.
+
+3. Voucher-Request Artifact
+
+ Voucher-requests are how vouchers are requested. The semantics of
+ the voucher-request are described below, in the YANG module.
+
+ A pledge forms the "pledge voucher-request", signs it with its
+ IDevID, and submits it to the registrar.
+
+ In turn, the registrar forms the "registrar voucher-request", signs
+ it with its registrar key pair, and submits it to the MASA.
+
+ The "proximity-registrar-cert" leaf is used in the pledge voucher-
+ requests. This provides a method for the pledge to assert the
+ registrar's proximity.
+
+ This network proximity results from the following properties in the
+ ACP context: the pledge is connected to the Join Proxy (Section 4)
+ using a link-local IPv6 connection. While the Join Proxy does not
+ participate in any meaningful sense in the cryptography of the TLS
+ connection (such as via a Channel Binding), the registrar can observe
+ that the connection is via the private ACP (ULA) address of the Join
+ Proxy, and it cannot come from outside the ACP. The pledge must
+ therefore be at most one IPv6 link-local hop away from an existing
+ node on the ACP.
+
+ Other users of BRSKI will need to define other kinds of assertions if
+ the network proximity described above does not match their needs.
+
+ The "prior-signed-voucher-request" leaf is used in registrar voucher-
+ requests. If present, it is the signed pledge voucher-request
+ artifact. This provides a method for the registrar to forward the
+ pledge's signed request to the MASA. This completes transmission of
+ the signed proximity-registrar-cert leaf.
+
+ Unless otherwise signaled (outside the voucher-request artifact), the
+ signing structure is as defined for vouchers; see [RFC8366].
+
+3.1. Nonceless Voucher-Requests
+
+ A registrar MAY also retrieve nonceless vouchers by sending nonceless
+ voucher-requests to the MASA in order to obtain vouchers for use when
+ the registrar does not have connectivity to the MASA. No prior-
+ signed-voucher-request leaf would be included. The registrar will
+ also need to know the serial number of the pledge. This document
+ does not provide a mechanism for the registrar to learn that in an
+ automated fashion. Typically, this will be done via the scanning of
+ a bar code or QR code on packaging, or via some sales channel
+ integration.
+
+3.2. Tree Diagram
+
+ The following tree diagram illustrates a high-level view of a
+ voucher-request document. The voucher-request builds upon the
+ voucher artifact described in [RFC8366]. The tree diagram is
+ described in [RFC8340]. Each node in the diagram is fully described
+ by the YANG module in Section 3.4. Please review the YANG module for
+ a detailed description of the voucher-request format.
+
+ module: ietf-voucher-request
+
+ grouping voucher-request-grouping
+ +-- voucher
+ +-- created-on? yang:date-and-time
+ +-- expires-on? yang:date-and-time
+ +-- assertion? enumeration
+ +-- serial-number string
+ +-- idevid-issuer? binary
+ +-- pinned-domain-cert? binary
+ +-- domain-cert-revocation-checks? boolean
+ +-- nonce? binary
+ +-- last-renewal-date? yang:date-and-time
+ +-- prior-signed-voucher-request? binary
+ +-- proximity-registrar-cert? binary
+
+ Figure 5: YANG Tree Diagram for a Voucher-Request
+
+3.3. Examples
+
+ This section provides voucher-request examples for illustration
+ purposes. These examples show JSON prior to CMS wrapping. JSON
+ encoding rules specify that any binary content be base64 encoded
+ ([RFC4648], Section 4). The contents of the (base64) encoded
+ certificates have been elided to save space. For detailed examples,
+ see Appendix C.2. These examples conform to the encoding rules
+ defined in [RFC7951].
+
+ Example (1): The following example illustrates a pledge voucher-
+ request. The assertion leaf is indicated as
+ "proximity", and the registrar's TLS server certificate
+ is included in the proximity-registrar-cert leaf. See
+ Section 5.2.
+
+ {
+ "ietf-voucher-request:voucher": {
+ "assertion": "proximity",
+ "nonce": "62a2e7693d82fcda2624de58fb6722e5",
+ "serial-number" : "JADA123456789",
+ "created-on": "2017-01-01T00:00:00.000Z",
+ "proximity-registrar-cert": "base64encodedvalue=="
+ }
+ }
+
+ Figure 6: JSON Representation of an Example Voucher-Request
+
+ Example (2): The following example illustrates a registrar voucher-
+ request. The prior-signed-voucher-request leaf is
+ populated with the pledge's voucher-request (such as
+ the prior example). The pledge's voucher-request is a
+ binary CMS-signed object. In the JSON encoding used
+ here, it must be base64 encoded. The nonce and
+ assertion have been carried forward from the pledge
+ request to the registrar request. The serial-number is
+ extracted from the pledge's Client Certificate from the
+ TLS connection. See Section 5.5.
+
+ {
+ "ietf-voucher-request:voucher": {
+ "assertion" : "proximity",
+ "nonce": "62a2e7693d82fcda2624de58fb6722e5",
+ "created-on": "2017-01-01T00:00:02.000Z",
+ "idevid-issuer": "base64encodedvalue==",
+ "serial-number": "JADA123456789",
+ "prior-signed-voucher-request": "base64encodedvalue=="
+ }
+ }
+
+ Figure 7: JSON Representation of an Example Prior-Signed Voucher-
+ Request
+
+ Example (3): The following example illustrates a registrar voucher-
+ request. The prior-signed-voucher-request leaf is not
+ populated with the pledge's voucher-request nor is the
+ nonce leaf. This form might be used by a registrar
+ requesting a voucher when the pledge cannot communicate
+ with the registrar (such as when it is powered down or
+ still in packaging) and therefore cannot submit a
+ nonce. This scenario is most useful when the registrar
+ is aware that it will not be able to reach the MASA
+ during deployment. See Section 5.5.
+
+ {
+ "ietf-voucher-request:voucher": {
+ "created-on": "2017-01-01T00:00:02.000Z",
+ "idevid-issuer": "base64encodedvalue==",
+ "serial-number": "JADA123456789"
+ }
+ }
+
+ Figure 8: JSON Representation of an Offline Voucher-Request
+
+3.4. YANG Module
+
+ Following is a YANG module [RFC7950] that formally extends a voucher
+ [RFC8366] into a voucher-request. This YANG module references
+ [ITU.X690].
+
+ <CODE BEGINS> file "ietf-voucher-request@2021-05-20.yang"
+ module ietf-voucher-request {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-voucher-request";
+ prefix vcr;
+
+ import ietf-restconf {
+ prefix rc;
+ description
+ "This import statement is only present to access
+ the yang-data extension defined in RFC 8040.";
+ reference
+ "RFC 8040: RESTCONF Protocol";
+ }
+ import ietf-voucher {
+ prefix vch;
+ description
+ "This module defines the format for a voucher,
+ which is produced by a pledge's manufacturer or
+ delegate (MASA) to securely assign a pledge to
+ an 'owner', so that the pledge may establish a secure
+ connection to the owner's network infrastructure.";
+ reference
+ "RFC 8366: A Voucher Artifact for
+ Bootstrapping Protocols";
+ }
+
+ organization
+ "IETF ANIMA Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/anima/>
+ WG List: <mailto:anima@ietf.org>
+ Author: Kent Watsen
+ <mailto:kent+ietf@watsen.net>
+ Author: Michael H. Behringer
+ <mailto:Michael.H.Behringer@gmail.com>
+ Author: Toerless Eckert
+ <mailto:tte+ietf@cs.fau.de>
+ Author: Max Pritikin
+ <mailto:pritikin@cisco.com>
+ Author: Michael Richardson
+ <mailto:mcr+ietf@sandelman.ca>";
+ description
+ "This module defines the format for a voucher-request.
+ It is a superset of the voucher itself.
+ It provides content to the MASA for consideration
+ during a voucher-request.
+
+ The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+ NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+ 'MAY', and 'OPTIONAL' in this document are to be interpreted as
+ described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+ they appear in all capitals, as shown here.
+
+ Copyright (c) 2021 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8995; see the
+ RFC itself for full legal notices.";
+
+ revision 2021-05-20 {
+ description
+ "Initial version";
+ reference
+ "RFC 8995: Bootstrapping Remote Secure Key Infrastructure
+ (BRSKI)";
+ }
+
+ // Top-level statement
+ rc:yang-data voucher-request-artifact {
+ uses voucher-request-grouping;
+ }
+
+ // Grouping defined for future usage
+
+ grouping voucher-request-grouping {
+ description
+ "Grouping to allow reuse/extensions in future work.";
+ uses vch:voucher-artifact-grouping {
+ refine "voucher/created-on" {
+ mandatory false;
+ }
+ refine "voucher/pinned-domain-cert" {
+ mandatory false;
+ description
+ "A pinned-domain-cert field is not valid in a
+ voucher-request, and any occurrence MUST be ignored.";
+ }
+ refine "voucher/last-renewal-date" {
+ description
+ "A last-renewal-date field is not valid in a
+ voucher-request, and any occurrence MUST be ignored.";
+ }
+ refine "voucher/domain-cert-revocation-checks" {
+ description
+ "The domain-cert-revocation-checks field is not valid in a
+ voucher-request, and any occurrence MUST be ignored.";
+ }
+ refine "voucher/assertion" {
+ mandatory false;
+ description
+ "Any assertion included in registrar voucher-requests
+ SHOULD be ignored by the MASA.";
+ }
+ augment "voucher" {
+ description
+ "Adds leaf nodes appropriate for requesting vouchers.";
+ leaf prior-signed-voucher-request {
+ type binary;
+ description
+ "If it is necessary to change a voucher, or re-sign and
+ forward a voucher that was previously provided along a
+ protocol path, then the previously signed voucher SHOULD
+ be included in this field.
+
+ For example, a pledge might sign a voucher-request
+ with a proximity-registrar-cert, and the registrar
+ then includes it as the prior-signed-voucher-request
+ field. This is a simple mechanism for a chain of
+ trusted parties to change a voucher-request, while
+ maintaining the prior signature information.
+
+ The registrar and MASA MAY examine the prior-signed
+ voucher information for the
+ purposes of policy decisions. For example, this
+ information could be useful to a MASA to determine
+ that both the pledge and registrar agree on proximity
+ assertions. The MASA SHOULD remove all
+ prior-signed-voucher-request information when
+ signing a voucher for imprinting so as to minimize
+ the final voucher size.";
+ }
+ leaf proximity-registrar-cert {
+ type binary;
+ description
+ "An X.509 v3 certificate structure, as specified by
+ RFC 5280, Section 4, encoded using the ASN.1
+ distinguished encoding rules (DER), as specified
+ in ITU X.690.
+
+ The first certificate in the registrar TLS server
+ certificate_list sequence (the end-entity TLS
+ certificate; see RFC 8446) presented by the registrar
+ to the pledge. This MUST be populated in a pledge's
+ voucher-request when a proximity assertion is
+ requested.";
+ reference
+ "ITU X.690: Information Technology - ASN.1 encoding
+ rules: Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER)
+ RFC 5280: Internet X.509 Public Key Infrastructure
+ Certificate and Certificate Revocation List (CRL)
+ Profile
+ RFC 8446: The Transport Layer Security (TLS)
+ Protocol Version 1.3";
+ }
+ }
+ }
+ }
+ }
+ <CODE ENDS>
+
+ Figure 9: YANG Module for Voucher-Request
+
+4. Proxying Details (Pledge -- Proxy -- Registrar)
+
+ This section is normative for uses with an ANIMA ACP. The use of the
+ GRASP mechanism is part of the ACP. Other users of BRSKI will need
+ to define an equivalent proxy mechanism and an equivalent mechanism
+ to configure the proxy.
+
+ The role of the proxy is to facilitate communications. The proxy
+ forwards packets between the pledge and a registrar that has been
+ provisioned to the proxy via full GRASP ACP discovery.
+
+ This section defines a stateful proxy mechanism that is referred to
+ as a "circuit" proxy. This is a form of Application Level Gateway
+ (see [RFC2663], Section 2.9).
+
+ The proxy does not terminate the TLS handshake: it passes streams of
+ bytes onward without examination. A proxy MUST NOT assume any
+ specific TLS version. Please see [RFC8446], Section 9.3 for details
+ on TLS invariants.
+
+ A registrar can directly provide the proxy announcements described
+ below, in which case the announced port can point directly to the
+ registrar itself. In this scenario, the pledge is unaware that there
+ is no proxying occurring. This is useful for registrars that are
+ servicing pledges on directly connected networks.
+
+ As a result of the proxy discovery process in Section 4.1.1, the port
+ number exposed by the proxy does not need to be well known or require
+ an IANA allocation.
+
+ During the discovery of the registrar by the Join Proxy, the Join
+ Proxy will also learn which kinds of proxy mechanisms are available.
+ This will allow the Join Proxy to use the lowest impact mechanism
+ that the Join Proxy and registrar have in common.
+
+ In order to permit the proxy functionality to be implemented on the
+ maximum variety of devices, the chosen mechanism should use the
+ minimum amount of state on the proxy device. While many devices in
+ the ANIMA target space will be rather large routers, the proxy
+ function is likely to be implemented in the control-plane CPU of such
+ a device, with available capabilities for the proxy function similar
+ to many class 2 IoT devices.
+
+ The document [ANIMA-STATE] provides a more extensive analysis and
+ background of the alternative proxy methods.
+
+4.1. Pledge Discovery of Proxy
+
+ The result of discovery is a logical communication with a registrar,
+ through a proxy. The proxy is transparent to the pledge. The
+ communication between the pledge and Join Proxy is over IPv6 link-
+ local addresses.
+
+ To discover the proxy, the pledge performs the following actions:
+
+ 1. MUST: Obtain a local address using IPv6 methods as described in
+ "IPv6 Stateless Address Autoconfiguration" [RFC4862]. Use of
+ temporary addresses [RFC8981] is encouraged. To limit pervasive
+ monitoring [RFC7258], a new temporary address MAY use a short
+ lifetime (that is, set TEMP_PREFERRED_LIFETIME to be short).
+ Pledges will generally prefer use of IPv6 link-local addresses,
+ and discovery of the proxy will be by link-local mechanisms.
+ IPv4 methods are described in Appendix A.
+
+ 2. MUST: Listen for GRASP M_FLOOD [RFC8990] announcements of the
+ objective: "AN_Proxy". See Section 4.1.1 for the details of the
+ objective. The pledge MAY listen concurrently for other sources
+ of information; see Appendix B.
+
+ Once a proxy is discovered, the pledge communicates with a registrar
+ through the proxy using the bootstrapping protocol defined in
+ Section 5.
+
+ While the GRASP M_FLOOD mechanism is passive for the pledge, the non-
+ normative other methods (mDNS and IPv4 methods) described in
+ Appendix B are active. The pledge SHOULD run those methods in
+ parallel with listening for the M_FLOOD. The active methods SHOULD
+ back off by doubling to a maximum of one hour to avoid overloading
+ the network with discovery attempts. Detection of physical link
+ status change (Ethernet carrier, for instance) SHOULD reset the back-
+ off timers.
+
+ The pledge could discover more than one proxy on a given physical
+ interface. The pledge can have a multitude of physical interfaces as
+ well: a Layer 2/3 Ethernet switch may have hundreds of physical
+ ports.
+
+ Each possible proxy offer SHOULD be attempted up to the point where a
+ valid voucher is received: while there are many ways in which the
+ attempt may fail, it does not succeed until the voucher has been
+ validated.
+
+ The connection attempts via a single proxy SHOULD exponentially back
+ off to a maximum of one hour to avoid overloading the network
+ infrastructure. The back-off timer for each MUST be independent of
+ other connection attempts.
+
+ Connection attempts SHOULD be run in parallel to avoid head-of-queue
+ problems wherein an attacker running a fake proxy or registrar could
+ intentionally perform protocol actions slowly. Connection attempts
+ to different proxies SHOULD be sent with an interval of 3 to 5s. The
+ pledge SHOULD continue to listen for additional GRASP M_FLOOD
+ messages during the connection attempts.
+
+ Each connection attempt through a distinct Join Proxy MUST have a
+ unique nonce in the voucher-request.
+
+ Once a connection to a registrar is established (e.g., establishment
+ of a TLS session key), there are expectations of more timely
+ responses; see Section 5.2.
+
+ Once all discovered services are attempted (assuming that none
+ succeeded), the device MUST return to listening for GRASP M_FLOOD.
+ It SHOULD periodically retry any manufacturer-specific mechanisms.
+ The pledge MAY prioritize selection order as appropriate for the
+ anticipated environment.
+
+4.1.1. Proxy GRASP Announcements
+
+ A proxy uses the DULL GRASP M_FLOOD mechanism to announce itself.
+ This announcement can be within the same message as the ACP
+ announcement detailed in [RFC8994].
+
+ The formal Concise Data Definition Language (CDDL) [RFC8610]
+ definition is:
+
+ <CODE BEGINS> file "proxygrasp.cddl"
+ flood-message = [M_FLOOD, session-id, initiator, ttl,
+ +[objective, (locator-option / [])]]
+
+ objective = ["AN_Proxy", objective-flags, loop-count,
+ objective-value]
+
+ ttl = 180000 ; 180,000 ms (3 minutes)
+ initiator = ACP address to contact registrar
+ objective-flags = sync-only ; as in the GRASP spec
+ sync-only = 4 ; M_FLOOD only requires
+ ; synchronization
+ loop-count = 1 ; one hop only
+ objective-value = any ; none
+
+ locator-option = [ O_IPv6_LOCATOR, ipv6-address,
+ transport-proto, port-number ]
+ ipv6-address = the v6 LL of the Proxy
+ $transport-proto /= IPPROTO_TCP ; note that this can be any value
+ ; from the IANA protocol registry,
+ ; as per RFC 8990, Section 2.9.5.1,
+ ; Note 3.
+ port-number = selected by Proxy
+ <CODE ENDS>
+
+ Figure 10: CDDL Definition of Proxy Discovery Message
+
+ Here is an example M_FLOOD announcing a proxy at fe80::1, on TCP port
+ 4443.
+
+ [M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000,
+ [["AN_Proxy", 4, 1, ""],
+ [O_IPv6_LOCATOR,
+ h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]]]
+
+ Figure 11: Example of Proxy Discovery Message
+
+ On a small network, the registrar MAY include the GRASP M_FLOOD
+ announcements to locally connected networks.
+
+ The $transport-proto above indicates the method that the pledge-
+ proxy-registrar will use. The TCP method described here is
+ mandatory, and other proxy methods, such as CoAP methods not defined
+ in this document, are optional. Other methods MUST NOT be enabled
+ unless the Join Registrar ASA indicates support for them in its own
+ announcement.
+
+4.2. CoAP Connection to Registrar
+
+ The use of CoAP to connect from pledge to registrar is out of scope
+ for this document and is described in future work. See
+ [ANIMA-CONSTRAINED-VOUCHER].
+
+4.3. Proxy Discovery and Communication of Registrar
+
+ The registrar SHOULD announce itself so that proxies can find it and
+ determine what kind of connections can be terminated.
+
+ The registrar announces itself using GRASP M_FLOOD messages, with the
+ "AN_join_registrar" objective, within the ACP instance. A registrar
+ may announce any convenient port number, including use of stock port
+ 443. ANI proxies MUST support GRASP discovery of registrars.
+
+ The M_FLOOD is formatted as follows:
+
+ [M_FLOOD, 51804321, h'fda379a6f6ee00000200000064000001', 180000,
+ [["AN_join_registrar", 4, 255, "EST-TLS"],
+ [O_IPv6_LOCATOR,
+ h'fda379a6f6ee00000200000064000001', IPPROTO_TCP, 8443]]]
+
+ Figure 12: An Example of a Registrar Announcement Message
+
+ The formal CDDL definition is:
+
+ <CODE BEGINS> file "jrcgrasp.cddl"
+ flood-message = [M_FLOOD, session-id, initiator, ttl,
+ +[objective, (locator-option / [])]]
+
+ objective = ["AN_join_registrar", objective-flags, loop-count,
+ objective-value]
+
+ initiator = ACP address to contact registrar
+ objective-flags = sync-only ; as in the GRASP spec
+ sync-only = 4 ; M_FLOOD only requires
+ ; synchronization
+ loop-count = 255 ; mandatory maximum
+ objective-value = text ; name of the (list of) supported
+ ; protocols: "EST-TLS" for RFC 7030.
+ <CODE ENDS>
+
+ Figure 13: CDDL Definition for Registrar Announcement Message
+
+ The M_FLOOD message MUST be sent periodically. The default period
+ SHOULD be 60 seconds, and the value SHOULD be operator configurable
+ but SHOULD NOT be smaller than 60 seconds. The frequency of sending
+ MUST be such that the aggregate amount of periodic M_FLOODs from all
+ flooding sources causes only negligible traffic across the ACP.
+
+ Here are some examples of locators for illustrative purposes. Only
+ the first one ($transport-protocol = 6, TCP) is defined in this
+ document and is mandatory to implement.
+
+ locator1 = [O_IPv6_LOCATOR, fd45:1345::6789, 6, 443]
+ locator2 = [O_IPv6_LOCATOR, fd45:1345::6789, 17, 5683]
+ locator3 = [O_IPv6_LOCATOR, fe80::1234, 41, nil]
+
+ A protocol of 6 indicates that TCP proxying on the indicated port is
+ desired.
+
+ Registrars MUST announce the set of protocols that they support, and
+ they MUST support TCP traffic.
+
+ Registrars MUST accept HTTPS/EST traffic on the TCP ports indicated.
+
+ Registrars MUST support the ANI TLS Circuit Proxy and therefore BRSKI
+ across HTTPS/TLS native across the ACP.
+
+ In the ANI, the ACP-secured instance of GRASP [RFC8990] MUST be used
+ for discovery of ANI registrar ACP addresses and ports by ANI
+ proxies. Therefore, the TCP leg of the proxy connection between the
+ ANI proxy and ANI registrar also runs across the ACP.
+
+5. Protocol Details (Pledge -- Registrar -- MASA)
+
+ The pledge MUST initiate BRSKI after boot if it is unconfigured. The
+ pledge MUST NOT automatically initiate BRSKI if it has been
+ configured or is in the process of being configured.
+
+ BRSKI is described as extensions to EST [RFC7030]. The goal of these
+ extensions is to reduce the number of TLS connections and crypto
+ operations required on the pledge. The registrar implements the
+ BRSKI REST interface within the "/.well-known/brski" URI tree and
+ implements the existing EST URIs as described in EST [RFC7030],
+ Section 3.2.2. The communication channel between the pledge and the
+ registrar is referred to as "BRSKI-EST" (see Figure 1).
+
+ The communication channel between the registrar and MASA is a new
+ communication channel, similar to EST, within the newly registered
+ "/.well-known/brski" tree. For clarity, this channel is referred to
+ as "BRSKI-MASA" (see Figure 1).
+
+ The MASA URI is "https://" authority "/.well-known/brski".
+
+ BRSKI uses existing CMS message formats for existing EST operations.
+ BRSKI uses JSON [RFC8259] for all new operations defined here and for
+ voucher formats. In all places where a binary value must be carried
+ in a JSON string, a base64 format ([RFC4648], Section 4) is to be
+ used, as per [RFC7951], Section 6.6.
+
+ While EST ([RFC7030], Section 3.2) does not insist upon use of HTTP
+ persistent connections ([RFC7230], Section 6.3), BRSKI-EST
+ connections SHOULD use persistent connections. The intention of this
+ guidance is to ensure the provisional TLS state occurs only once, and
+ that the subsequent resolution of the provision state is not subject
+ to a Man-in-the-Middle (MITM) attack during a critical phase.
+
+ If non-persistent connections are used, then both the pledge and the
+ registrar MUST remember the certificates that have been seen and also
+ sent for the first connection. They MUST check each subsequent
+ connection for the same certificates, and each end MUST use the same
+ certificates as well. This places a difficult restriction on rolling
+ certificates on the registrar.
+
+ Summarized automation extensions for the BRSKI-EST flow are:
+
+ * The pledge either attempts concurrent connections via each
+ discovered proxy or times out quickly and tries connections in
+ series, as explained at the end of Section 5.1.
+
+ * The pledge provisionally accepts the registrar certificate during
+ the TLS handshake as detailed in Section 5.1.
+
+ * The pledge requests a voucher using the new REST calls described
+ below. This voucher is then validated.
+
+ * The pledge completes authentication of the server certificate as
+ detailed in Section 5.6.1. This moves the BRSKI-EST TLS
+ connection out of the provisional state.
+
+ * Mandatory bootstrap steps conclude with voucher status telemetry
+ (see Section 5.7).
+
+ The BRSKI-EST TLS connection can now be used for EST enrollment.
+
+ The extensions for a registrar (equivalent to an EST server) are:
+
+ * Client authentication is automated using IDevID as per the EST
+ certificate-based client authentication. The subject field's DN
+ encoding MUST include the "serialNumber" attribute with the
+ device's unique serial number as explained in Section 2.3.1.
+
+ * The registrar requests and validates the voucher from the MASA.
+
+ * The registrar forwards the voucher to the pledge when requested.
+
+ * The registrar performs log verifications (described in
+ Section 5.8.3) in addition to local authorization checks before
+ accepting optional pledge device enrollment requests.
+
+5.1. BRSKI-EST TLS Establishment Details
+
+ The pledge establishes the TLS connection with the registrar through
+ the Circuit Proxy (see Section 4), but the TLS handshake is with the
+ registrar. The BRSKI-EST pledge is the TLS client, and the BRSKI-EST
+ registrar is the TLS server. All security associations established
+ are between the pledge and the registrar regardless of proxy
+ operations.
+
+ Use of TLS 1.3 (or newer) is encouraged. TLS 1.2 or newer is
+ REQUIRED on the pledge side. TLS 1.3 (or newer) SHOULD be available
+ on the registrar server interface, and the registrar client
+ interface, but TLS 1.2 MAY be used. TLS 1.3 (or newer) SHOULD be
+ available on the MASA server interface, but TLS 1.2 MAY be used.
+
+ Establishment of the BRSKI-EST TLS connection is as specified in
+ "Bootstrap Distribution of CA Certificates" (Section 4.1.1) of
+ [RFC7030], wherein the client is authenticated with the IDevID
+ certificate, and the EST server (the registrar) is provisionally
+ authenticated with an unverified server certificate. Configuration
+ or distribution of the trust anchor database used for validating the
+ IDevID certificate is out of scope of this specification. Note that
+ the trust anchors in / excluded from the database will affect which
+ manufacturers' devices are acceptable to the registrar as pledges and
+ can also be used to limit the set of MASAs that are trusted for
+ enrollment.
+
+ The signature in the certificate MUST be validated even if a signing
+ key cannot (yet) be validated. The certificate (or chain) MUST be
+ retained for later validation.
+
+ A self-signed certificate for the registrar is acceptable as the
+ voucher can validate it upon successful enrollment.
+
+ The pledge performs input validation of all data received until a
+ voucher is verified as specified in Section 5.6.1 and the TLS
+ connection leaves the provisional state. Until these operations are
+ complete, the pledge could be communicating with an attacker.
+
+ The pledge code needs to be written with the assumption that all data
+ is being transmitted at this point to an unauthenticated peer, and
+ that received data, while inside a TLS connection, MUST be considered
+ untrusted. This particularly applies to HTTP headers and CMS
+ structures that make up the voucher.
+
+ A pledge that can connect to multiple registrars concurrently SHOULD
+ do so. Some devices may be unable to do so for lack of threading, or
+ resource issues. Concurrent connections defeat attempts by a
+ malicious proxy from causing a TCP Slowloris-like attack (see
+ [slowloris]).
+
+ A pledge that cannot maintain as many connections as there are
+ eligible proxies will need to rotate among the various choices,
+ terminating connections that do not appear to be making progress. If
+ no connection is making progress after 5 seconds, then the pledge
+ SHOULD drop the oldest connection and go on to a different proxy: the
+ proxy that has been communicated with least recently. If there were
+ no other proxies discovered, the pledge MAY continue to wait, as long
+ as it is concurrently listening for new proxy announcements.
+
+5.2. Pledge Requests Voucher from the Registrar
+
+ When the pledge bootstraps, it makes a request for a voucher from a
+ registrar.
+
+ This is done with an HTTPS POST using the operation path value of
+ "/.well-known/brski/requestvoucher".
+
+ The pledge voucher-request Content-Type is as follows.
+
+ application/voucher-cms+json: [RFC8366] defines a "YANG-defined JSON
+ document that has been signed using a Cryptographic Message Syntax
+ (CMS) structure", and the voucher-request described in Section 3
+ is created in the same way. The media type is the same as defined
+ in [RFC8366]. This is also used for the pledge voucher-request.
+ The pledge MUST sign the request using the credentials in
+ Section 2.3.
+
+ Registrar implementations SHOULD anticipate future media types but,
+ of course, will simply fail the request if those types are not yet
+ known.
+
+ The pledge SHOULD include an "Accept" header field (see [RFC7231],
+ Section 5.3.2) indicating the acceptable media type for the voucher
+ response. The "application/voucher-cms+json" media type is defined
+ in [RFC8366], but constrained voucher formats are expected in the
+ future. Registrars and MASA are expected to be flexible in what they
+ accept.
+
+ The pledge populates the voucher-request fields as follows:
+
+ created-on: Pledges that have a real-time clock are RECOMMENDED to
+ populate this field with the current date and time in yang:date-
+ and-time format. This provides additional information to the
+ MASA. Pledges that have no real-time clocks MAY omit this field.
+
+ nonce: The pledge voucher-request MUST contain a cryptographically
+ strong random or pseudo-random number nonce (see [RFC4086],
+ Section 6.2). As the nonce is usually generated very early in the
+ boot sequence, there is a concern that the same nonce might be
+ generated across multiple boots, or after a factory reset.
+ Different nonces MUST be generated for each bootstrapping attempt,
+ whether in series or concurrently. The freshness of this nonce
+ mitigates against the lack of a real-time clock as explained in
+ Section 2.6.1.
+
+ assertion: The pledge indicates support for the mechanism described
+ in this document, by putting the value "proximity" in the voucher-
+ request, and MUST include the proximity-registrar-cert field
+ (below).
+
+ proximity-registrar-cert: In a pledge voucher-request, this is the
+ first certificate in the TLS server "certificate_list" sequence
+ (see [RFC8446], Section 4.4.2) presented by the registrar to the
+ pledge. That is, it is the end-entity certificate. This MUST be
+ populated in a pledge voucher-request.
+
+ serial-number: The serial number of the pledge is included in the
+ voucher-request from the pledge. This value is included as a
+ sanity check only, but it is not to be forwarded by the registrar
+ as described in Section 5.5.
+
+ All other fields MAY be omitted in the pledge voucher-request.
+
+ See an example JSON payload of a pledge voucher-request in
+ Section 3.3, Example 1.
+
+ The registrar confirms that the assertion is "proximity" and that
+ pinned proximity-registrar-cert is the registrar's certificate. If
+ this validation fails, then there is an on-path attacker (MITM), and
+ the connection MUST be closed after the returning of an HTTP 401
+ error code.
+
+5.3. Registrar Authorization of Pledge
+
+ In a fully automated network, all devices must be securely identified
+ and authorized to join the domain.
+
+ A registrar accepts or declines a request to join the domain, based
+ on the authenticated identity presented. For different networks,
+ examples of automated acceptance may include the allowance of:
+
+ * any device of a specific type (as determined by the X.509 IDevID),
+
+ * any device from a specific vendor (as determined by the X.509
+ IDevID),
+
+ * a specific device from a vendor (as determined by the X.509
+ IDevID) against a domain acceptlist. (The mechanism for checking
+ a shared acceptlist potentially used by multiple registrars is out
+ of scope.)
+
+ If validation fails, the registrar SHOULD respond with the HTTP 404
+ error code. If the voucher-request is in an unknown format, then an
+ HTTP 406 error code is more appropriate. A situation that could be
+ resolved with administrative action (such as adding a vendor to an
+ acceptlist) MAY be responded to with a 403 HTTP error code.
+
+ If authorization is successful, the registrar obtains a voucher from
+ the MASA service (see Section 5.5) and returns that MASA-signed
+ voucher to the pledge as described in Section 5.6.
+
+5.4. BRSKI-MASA TLS Establishment Details
+
+ The BRSKI-MASA TLS connection is a "normal" TLS connection
+ appropriate for HTTPS REST interfaces. The registrar initiates the
+ connection and uses the MASA URL that is obtained as described in
+ Section 2.8. The mechanisms in [RFC6125] SHOULD be used in
+ authentication of the MASA using a DNS-ID that matches that which is
+ found in the IDevID. Registrars MAY include a mechanism to override
+ the MASA URL on a manufacturer-by-manufacturer basis, and within that
+ override, it is appropriate to provide alternate anchors. This will
+ typically be used by some vendors to establish explicit (or private)
+ trust anchors for validating their MASA that is part of a sales
+ channel integration.
+
+ Use of TLS 1.3 (or newer) is encouraged. TLS 1.2 or newer is
+ REQUIRED. TLS 1.3 (or newer) SHOULD be available.
+
+ As described in [RFC7030], the MASA and the registrars SHOULD be
+ prepared to support TLS Client Certificate authentication and/or HTTP
+ Basic, Digest, or Salted Challenge Response Authentication Mechanism
+ (SCRAM) authentication. This connection MAY also have no client
+ authentication at all.
+
+ Registrars SHOULD permit trust anchors to be preconfigured on a per-
+ vendor (MASA) basis. Registrars SHOULD include the ability to
+ configure a TLS Client Certificate on a per-MASA basis, or to use no
+ Client Certificate. Registrars SHOULD also permit HTTP Basic and
+ Digest authentication to be configured.
+
+ The authentication of the BRSKI-MASA connection does not change the
+ voucher-request process, as voucher-requests are already signed by
+ the registrar. Instead, this authentication provides access control
+ to the audit-log as described in Section 5.8.
+
+ Implementers are advised that contacting the MASA establishes a
+ secured API connection with a web service, and that there are a
+ number of authentication models being explored within the industry.
+ Registrars are RECOMMENDED to fail gracefully and generate useful
+ administrative notifications or logs in the advent of unexpected HTTP
+ 401 (Unauthorized) responses from the MASA.
+
+5.4.1. MASA Authentication of Customer Registrar
+
+ Providing per-customer options requires the customer's registrar to
+ be uniquely identified. This can be done by any stateless method
+ that HTTPS supports such as HTTP Basic or Digest authentication (that
+ is using a password), but the use of TLS Client Certificate
+ authentication is RECOMMENDED.
+
+ Stateful methods involving API tokens, or HTTP Cookies, are not
+ recommended.
+
+ It is expected that the setup and configuration of per-customer
+ Client Certificates is done as part of a sales ordering process.
+
+ The use of public PKI (i.e., WebPKI) end-entity certificates to
+ identify the registrar is reasonable, and if done universally, this
+ would permit a MASA to identify a customer's registrar simply by a
+ Fully Qualified Domain Name (FQDN).
+
+ The use of DANE records in DNSSEC-signed zones would also permit use
+ of a FQDN to identify customer registrars.
+
+ A third (and simplest, but least flexible) mechanism would be for the
+ MASA to simply store the registrar's certificate pinned in a
+ database.
+
+ A MASA without any supply-chain integration can simply accept
+ registrars without any authentication or on a blind TOFU basis as
+ described in Section 7.4.2.
+
+ This document does not make a specific recommendation on how the MASA
+ authenticates the registrar as there are likely different tradeoffs
+ in different environments and product values. Even within the ANIMA
+ ACP applicability, there is a significant difference between supply-
+ chain logistics for $100 CPE devices and $100,000 core routers.
+
+5.5. Registrar Requests Voucher from MASA
+
+ When a registrar receives a pledge voucher-request, it in turn
+ submits a registrar voucher-request to the MASA service via an HTTPS
+ interface [RFC7231].
+
+ This is done with an HTTP POST using the operation path value of
+ "/.well-known/brski/requestvoucher".
+
+ The voucher media type "application/voucher-cms+json" is defined in
+ [RFC8366] and is also used for the registrar voucher-request. It is
+ a JSON document that has been signed using a CMS structure. The
+ registrar MUST sign the registrar voucher-request.
+
+ MASA implementations SHOULD anticipate future media ntypes but, of
+ course, will simply fail the request if those types are not yet
+ known.
+
+ The voucher-request CMS object includes some number of certificates
+ that are input to the MASA as it populates the pinned-domain-cert.
+ As [RFC8366] is quite flexible in what may be put into the pinned-
+ domain-cert, the MASA needs some signal as to what certificate would
+ be effective to populate the field with: it may range from the end-
+ entity certificate that the registrar uses to the entire private
+ Enterprise CA certificate. More-specific certificates result in a
+ tighter binding of the voucher to the domain, while less-specific
+ certificates result in more flexibility in how the domain is
+ represented by certificates.
+
+ A registrar that is seeking a nonceless voucher for later offline use
+ benefits from a less-specific certificate, as it permits the actual
+ key pair used by a future registrar to be determined by the pinned
+ CA.
+
+ In some cases, a less-specific certificate, such as a public WebPKI
+ CA, could be too open and could permit any entity issued a
+ certificate by that authority to assume ownership of a device that
+ has a voucher pinned. Future work may provide a solution to pin both
+ a certificate and a name that would reduce such risk of malicious
+ ownership assertions.
+
+ The registrar SHOULD request a voucher with the most specificity
+ consistent with the mode that it is operating in. In order to do
+ this, when the registrar prepares the CMS structure for the signed
+ voucher-request, it SHOULD include only certificates that are a part
+ of the chain that it wishes the MASA to pin. This MAY be as small as
+ only the end-entity certificate (with id-kp-cmcRA set) that it uses
+ as its TLS server certificate, or it MAY be the entire chain,
+ including the domain CA.
+
+ The registrar SHOULD include an "Accept" header field (see [RFC7231],
+ Section 5.3.2) indicating the response media types that are
+ acceptable. This list SHOULD be the entire list presented to the
+ registrar in the pledge's original request (see Section 5.2), but it
+ MAY be a subset. The MASA is expected to be flexible in what it
+ accepts.
+
+ The registrar populates the voucher-request fields as follows:
+
+ created-on: The registrar SHOULD populate this field with the
+ current date and time when the voucher-request is formed. This
+ field provides additional information to the MASA.
+
+ nonce: This value, if present, is copied from the pledge voucher-
+ request. The registrar voucher-request MAY omit the nonce as per
+ Section 3.1.
+
+ serial-number: The serial number of the pledge the registrar would
+ like a voucher for. The registrar determines this value by
+ parsing the authenticated pledge IDevID certificate; see
+ Section 2.3. The registrar MUST verify that the serial-number
+ field it parsed matches the serial-number field the pledge
+ provided in its voucher-request. This provides a sanity check
+ useful for detecting error conditions and logging. The registrar
+ MUST NOT simply copy the serial-number field from a pledge
+ voucher-request as that field is claimed but not certified.
+
+ idevid-issuer: The Issuer value from the pledge IDevID certificate
+ is included to ensure unique interpretation of the serial-number.
+ In the case of a nonceless (offline) voucher-request, an
+ appropriate value needs to be configured from the same out-of-band
+ source as the serial-number.
+
+ prior-signed-voucher-request: The signed pledge voucher-request
+ SHOULD be included in the registrar voucher-request. The entire
+ CMS-signed structure is to be included and base64 encoded for
+ transport in the JSON structure.
+
+ A nonceless registrar voucher-request MAY be submitted to the MASA.
+ Doing so allows the registrar to request a voucher when the pledge is
+ offline, or when the registrar anticipates not being able to connect
+ to the MASA while the pledge is being deployed. Some use cases
+ require the registrar to learn the appropriate IDevID serialNumber
+ field and appropriate "Accept" header field values from the physical
+ device labeling or from the sales channel (which is out of scope for
+ this document).
+
+ All other fields MAY be omitted in the registrar voucher-request.
+
+ The proximity-registrar-cert field MUST NOT be present in the
+ registrar voucher-request.
+
+ See example JSON payloads of registrar voucher-requests in
+ Section 3.3, Examples 2 through 4.
+
+ The MASA verifies that the registrar voucher-request is internally
+ consistent but does not necessarily authenticate the registrar
+ certificate since the registrar MAY be unknown to the MASA in
+ advance. The MASA performs the actions and validation checks
+ described in the following subsections before issuing a voucher.
+
+5.5.1. MASA Renewal of Expired Vouchers
+
+ As described in [RFC8366], vouchers are normally short lived to avoid
+ revocation issues. If the request is for a previous (expired)
+ voucher using the same registrar (that is, a registrar with the same
+ domain CA), then the request for a renewed voucher SHOULD be
+ automatically authorized. The MASA has sufficient information to
+ determine this by examining the request, the registrar
+ authentication, and the existing audit-log. The issuance of a
+ renewed voucher is logged as detailed in Section 5.6.
+
+ To inform the MASA that existing vouchers are not to be renewed, one
+ can update or revoke the registrar credentials used to authorize the
+ request (see Sections 5.5.4 and 5.5.3). More flexible methods will
+ likely involve sales channel integration and authorizations (details
+ are out of scope of this document).
+
+5.5.2. MASA Pinning of Registrar
+
+ A certificate chain is extracted from the registrar's signed CMS
+ container. This chain may be as short as a single end-entity
+ certificate, up to the entire registrar certificate chain, including
+ the domain CA certificate, as specified in Section 5.5.
+
+ If the domain's CA is unknown to the MASA, then it is considered a
+ temporary trust anchor for the rest of the steps in this section.
+ The intention is not to authenticate the message as having come from
+ a fully validated origin but to establish the consistency of the
+ domain PKI.
+
+ The MASA MAY use the certificate in the chain that is farthest from
+ the end-entity certificate of the registrar, as determined by MASA
+ policy. A MASA MAY have a local policy in which it only pins the
+ end-entity certificate. This is consistent with [RFC8366]. Details
+ of the policy will typically depend upon the degree of supply-chain
+ integration and the mechanism used by the registrar to authenticate.
+ Such a policy would also determine how the MASA will respond to a
+ request for a nonceless voucher.
+
+5.5.3. MASA Check of the Voucher-Request Signature
+
+ As described in Section 5.5.2, the MASA has extracted the registrar's
+ domain CA. This is used to validate the CMS signature [RFC5652] on
+ the voucher-request.
+
+ Normal PKIX revocation checking is assumed during voucher-request
+ signature validation. This CA certificate MAY have Certificate
+ Revocation List (CRL) distribution points or Online Certificate
+ Status Protocol (OCSP) information [RFC6960]. If they are present,
+ the MASA MUST be able to reach the relevant servers belonging to the
+ registrar's domain CA to perform the revocation checks.
+
+ The use of OCSP Stapling is preferred.
+
+5.5.4. MASA Verification of the Domain Registrar
+
+ The MASA MUST verify that the registrar voucher-request is signed by
+ a registrar. This is confirmed by verifying that the id-kp-cmcRA
+ extended key usage extension field (as detailed in EST [RFC7030],
+ Section 3.6.1) exists in the certificate of the entity that signed
+ the registrar voucher-request. This verification is only a
+ consistency check to ensure that the unauthenticated domain CA
+ intended the voucher-request signer to be a registrar. Performing
+ this check provides value to the domain PKI by assuring the domain
+ administrator that the MASA service will only respect claims from
+ authorized registration authorities of the domain.
+
+ Even when a domain CA is authenticated to the MASA, and there is
+ strong sales channel integration to understand who the legitimate
+ owner is, the above id-kp-cmcRA check prevents arbitrary end-entity
+ certificates (such as an LDevID certificate) from having vouchers
+ issued against them.
+
+ Other cases of inappropriate voucher issuance are detected by
+ examination of the audit-log.
+
+ If a nonceless voucher-request is submitted, the MASA MUST
+ authenticate the registrar either as described in EST (see Sections
+ 3.2.3 and 3.3.2 of [RFC7030]) or by validating the registrar's
+ certificate used to sign the registrar voucher-request using a
+ configured trust anchor. Any of these methods reduce the risk of
+ DDoS attacks and provide an authenticated identity as an input to
+ sales channel integration and authorizations (details are out of
+ scope of this document).
+
+ In the nonced case, validation of the registrar's identity (via TLS
+ Client Certificate or HTTP authentication) MAY be omitted if the MASA
+ knows that the device policy is to accept audit-only vouchers.
+
+5.5.5. MASA Verification of the Pledge 'prior-signed-voucher-request'
+
+ The MASA MAY verify that the registrar voucher-request includes the
+ prior-signed-voucher-request field. If so, the prior-signed-voucher-
+ request MUST include a proximity-registrar-cert that is consistent
+ with the certificate used to sign the registrar voucher-request.
+ Additionally, the voucher-request serial-number leaf MUST match the
+ pledge serial-number that the MASA extracts from the signing
+ certificate of the prior-signed-voucher-request. The consistency
+ check described above entails checking that the proximity-registrar-
+ cert Subject Public Key Info (SPKI) Fingerprint exists within the
+ registrar voucher-request CMS signature's certificate chain. This is
+ substantially the same as the pin validation described in [RFC7469],
+ Section 2.6.
+
+ If these checks succeed, the MASA updates the voucher and audit-log
+ assertion leafs with the "proximity" assertion, as defined by
+ [RFC8366], Section 5.3.
+
+5.5.6. MASA Nonce Handling
+
+ The MASA does not verify the nonce itself. If the registrar voucher-
+ request contains a nonce, and the prior-signed-voucher-request
+ exists, then the MASA MUST verify that the nonce is consistent.
+ (Recall from above that the voucher-request might not contain a
+ nonce; see Sections 5.5 and 5.5.4.)
+
+ The MASA populates the audit-log with the nonce that was verified.
+ If a nonceless voucher is issued, then the audit-log is to be
+ populated with the JSON value "null".
+
+5.6. MASA and Registrar Voucher Response
+
+ The MASA voucher response to the registrar is forwarded without
+ changes to the pledge; therefore, this section applies to both the
+ MASA and the registrar. The HTTP signaling described applies to both
+ the MASA and registrar responses.
+
+ When a voucher-request arrives at the registrar, if it has a cached
+ response from the MASA for the corresponding registrar voucher-
+ request, that cached response can be used according to local policy;
+ otherwise, the registrar constructs a new registrar voucher-request
+ and sends it to the MASA.
+
+ Registrar evaluation of the voucher itself is purely for transparency
+ and audit purposes to further inform log verification (see
+ Section 5.8.3); therefore, a registrar could accept future voucher
+ formats that are opaque to the registrar.
+
+ If the voucher-request is successful, the server (a MASA responding
+ to a registrar or a registrar responding to a pledge) response MUST
+ contain an HTTP 200 response code. The server MUST answer with a
+ suitable 4xx or 5xx HTTP [RFC7230] error code when a problem occurs.
+ In this case, the response data from the MASA MUST be a plain text
+ human-readable (UTF-8) error message containing explanatory
+ information describing why the request was rejected.
+
+ The registrar MAY respond with an HTTP 202 ("the request has been
+ accepted for processing, but the processing has not been completed")
+ as described in EST [RFC7030], Section 4.2.3, wherein the client
+ "MUST wait at least the specified "retry-after" time before repeating
+ the same request" (also see [RFC7231], Section 6.6.4). The pledge is
+ RECOMMENDED to provide local feedback (blinked LED, etc.) during this
+ wait cycle if mechanisms for this are available. To prevent an
+ attacker registrar from significantly delaying bootstrapping, the
+ pledge MUST limit the Retry-After time to 60 seconds. Ideally, the
+ pledge would keep track of the appropriate Retry-After header field
+ values for any number of outstanding registrars, but this would
+ involve a state table on the pledge. Instead, the pledge MAY ignore
+ the exact Retry-After value in favor of a single hard-coded value (a
+ registrar that is unable to complete the transaction after the first
+ 60 seconds has another chance a minute later). A pledge SHOULD be
+ willing to maintain a 202 retry-state for up to 4 days, which is
+ longer than a long weekend, after which time the enrollment attempt
+ fails, and the pledge returns to Discovery state. This allows time
+ for an alert to get from the registrar to a human operator who can
+ make a decision as to whether or not to proceed with the enrollment.
+
+ A pledge that retries a request after receiving a 202 message MUST
+ resend the same voucher-request. It MUST NOT sign a new voucher-
+ request each time, and in particular, it MUST NOT change the nonce
+ value.
+
+ In order to avoid infinite redirect loops, which a malicious
+ registrar might do in order to keep the pledge from discovering the
+ correct registrar, the pledge MUST NOT follow more than one
+ redirection (3xx code) to another web origin. EST supports
+ redirection but requires user input; this change allows the pledge to
+ follow a single redirection without a user interaction.
+
+ A 403 (Forbidden) response is appropriate if the voucher-request is
+ not signed correctly or is stale or if the pledge has another
+ outstanding voucher that cannot be overridden.
+
+ A 404 (Not Found) response is appropriate when the request is for a
+ device that is not known to the MASA.
+
+ A 406 (Not Acceptable) response is appropriate if a voucher of the
+ desired type or that uses the desired algorithms (as indicated by the
+ "Accept" header fields and algorithms used in the signature) cannot
+ be issued as such because the MASA knows the pledge cannot process
+ that type. The registrar SHOULD use this response if it determines
+ the pledge is unacceptable due to inventory control, MASA audit-logs,
+ or any other reason.
+
+ A 415 (Unsupported Media Type) response is appropriate for a request
+ that has a voucher-request or "Accept" value that is not understood.
+
+ The voucher response format is as indicated in the submitted "Accept"
+ header fields or based on the MASA's prior understanding of proper
+ format for this pledge. Only the "application/voucher-cms+json"
+ media type [RFC8366] is defined at this time. The syntactic details
+ of vouchers are described in detail in [RFC8366]. Figure 14 shows a
+ sample of the contents of a voucher.
+
+ {
+ "ietf-voucher:voucher": {
+ "nonce": "62a2e7693d82fcda2624de58fb6722e5",
+ "assertion": "logged",
+ "pinned-domain-cert": "base64encodedvalue==",
+ "serial-number": "JADA123456789"
+ }
+ }
+
+ Figure 14: An Example Voucher
+
+ The MASA populates the voucher fields as follows:
+
+ nonce: The nonce from the pledge if available. See Section 5.5.6.
+
+ assertion: The method used to verify the relationship between the
+ pledge and registrar. See Section 5.5.5.
+
+ pinned-domain-cert: A certificate; see Section 5.5.2. This figure
+ is illustrative; for an example, see Appendix C.2 where an end-
+ entity certificate is used.
+
+ serial-number: The serial-number as provided in the voucher-request.
+ Also see Section 5.5.5.
+
+ domain-cert-revocation-checks: Set as appropriate for the pledge's
+ capabilities and as documented in [RFC8366]. The MASA MAY set
+ this field to "false" since setting it to "true" would require
+ that revocation information be available to the pledge, and this
+ document does not make normative requirements for [RFC6961],
+ Section 4.4.2.1 of [RFC8446], or equivalent integrations.
+
+ expires-on: This is set for nonceless vouchers. The MASA ensures
+ the voucher lifetime is consistent with any revocation or pinned-
+ domain-cert consistency checks the pledge might perform. See
+ Section 2.6.1. There are three times to consider: (a) a
+ configured voucher lifetime in the MASA, (b) the expiry time for
+ the registrar's certificate, and (c) any CRL lifetime. The
+ expires-on field SHOULD be before the earliest of these three
+ values. Typically, (b) will be some significant time in the
+ future, but (c) will typically be short (on the order of a week or
+ less). The RECOMMENDED period for (a) is on the order of 20
+ minutes, so it will typically determine the life span of the
+ resulting voucher. 20 minutes is sufficient time to reach the
+ post-provisional state in the pledge, at which point there is an
+ established trust relationship between the pledge and registrar.
+ The subsequent operations can take as long as required from that
+ point onwards. The lifetime of the voucher has no impact on the
+ life span of the ownership relationship.
+
+ Whenever a voucher is issued, the MASA MUST update the audit-log
+ sufficiently to generate the response as described in Section 5.8.1.
+ The internal state requirements to maintain the audit-log are out of
+ scope.
+
+5.6.1. Pledge Voucher Verification
+
+ The pledge MUST verify the voucher signature using the manufacturer-
+ installed trust anchor(s) associated with the manufacturer's MASA
+ (this is likely included in the pledge's firmware). Management of
+ the manufacturer-installed trust anchor(s) is out of scope of this
+ document; this protocol does not update this trust anchor(s).
+
+ The pledge MUST verify that the serial-number field of the signed
+ voucher matches the pledge's own serial-number.
+
+ The pledge MUST verify the nonce information in the voucher. If
+ present, the nonce in the voucher must match the nonce the pledge
+ submitted to the registrar; vouchers with no nonce can also be
+ accepted (according to local policy; see Section 7.2).
+
+ The pledge MUST be prepared to parse and fail gracefully from a
+ voucher response that does not contain a pinned-domain-cert field.
+ Such a thing indicates a failure to enroll in this domain, and the
+ pledge MUST attempt joining with other available Join Proxies.
+
+ The pledge MUST be prepared to ignore additional fields that it does
+ not recognize.
+
+5.6.2. Pledge Authentication of Provisional TLS Connection
+
+ Following the process described in [RFC8366], the pledge should
+ consider the public key from the pinned-domain-cert as the sole
+ temporary trust anchor.
+
+ The pledge then evaluates the TLS server certificate chain that it
+ received when the TLS connection was formed using this trust anchor.
+ It is possible that the public key in the pinned-domain-cert directly
+ matches the public key in the end-entity certificate provided by the
+ TLS server.
+
+ If a registrar's credentials cannot be verified using the pinned-
+ domain-cert trust anchor from the voucher, then the TLS connection is
+ discarded, and the pledge abandons attempts to bootstrap with this
+ discovered registrar. The pledge SHOULD send voucher status
+ telemetry (described below) before closing the TLS connection. The
+ pledge MUST attempt to enroll using any other proxies it has found.
+ It SHOULD return to the same proxy again after unsuccessful attempts
+ with other proxies. Attempts should be made at repeated intervals
+ according to the back-off timer described earlier. Attempts SHOULD
+ be repeated as failure may be the result of a temporary inconsistency
+ (an inconsistently rolled registrar key, or some other
+ misconfiguration). The inconsistency could also be the result of an
+ active MITM attack on the EST connection.
+
+ The registrar MUST use a certificate that chains to the pinned-
+ domain-cert as its TLS server certificate.
+
+ The pledge's PKIX path validation of a registrar certificate's
+ validity period information is as described in Section 2.6.1. Once
+ the PKIX path validation is successful, the TLS connection is no
+ longer provisional.
+
+ The pinned-domain-cert MAY be installed as a trust anchor for future
+ operations such as enrollment (e.g., as recommended per [RFC7030]) or
+ trust anchor management or raw protocols that do not need full PKI-
+ based key management. It can be used to authenticate any dynamically
+ discovered EST server that contains the id-kp-cmcRA extended key
+ usage extension as detailed in EST (see [RFC7030], Section 3.6.1);
+ but to reduce system complexity, the pledge SHOULD avoid additional
+ discovery operations. Instead, the pledge SHOULD communicate
+ directly with the registrar as the EST server. The pinned-domain-
+ cert is not a complete distribution of the CA certificate response,
+ as described in [RFC7030], Section 4.1.3, which is an additional
+ justification for the recommendation to proceed with EST key
+ management operations. Once a full CA certificate response is
+ obtained, it is more authoritative for the domain than the limited
+ pinned-domain-cert response.
+
+5.7. Pledge BRSKI Status Telemetry
+
+ The domain is expected to provide indications to the system
+ administrators concerning device life-cycle status. To facilitate
+ this, it needs telemetry information concerning the device's status.
+
+ The pledge MUST indicate its pledge status regarding the voucher. It
+ does this by sending a status message to the registrar.
+
+ The posted data media type: application/json
+
+ The client sends an HTTP POST to the server at the URI ".well-
+ known/brski/voucher_status".
+
+ The format and semantics described below are for version 1. A
+ version field is included to permit significant changes to this
+ feedback in the future. A registrar that receives a status message
+ with a version larger than it knows about SHOULD log the contents and
+ alert a human.
+
+ The status field indicates if the voucher was acceptable. Boolean
+ values are acceptable, where "true" indicates the voucher was
+ acceptable.
+
+ If the voucher was not acceptable, the Reason string indicates why.
+ In a failure case, this message may be sent to an unauthenticated,
+ potentially malicious registrar; therefore, the Reason string SHOULD
+ NOT provide information beneficial to an attacker. The operational
+ benefit of this telemetry information is balanced against the
+ operational costs of not recording that a voucher was ignored by a
+ client that the registrar expected was going to continue joining the
+ domain.
+
+ The reason-context attribute is an arbitrary JSON object (literal
+ value or hash of values) that provides additional information
+ specific to this pledge. The contents of this field are not subject
+ to standardization.
+
+ The version and status fields MUST be present. The Reason field
+ SHOULD be present whenever the status field is false. The Reason-
+ Context field is optional. In the case of a SUCCESS, the Reason
+ string MAY be omitted.
+
+ The keys to this JSON object are case sensitive and MUST be
+ lowercase. Figure 16 shows an example JSON.
+
+ <CODE BEGINS> file "voucherstatus.cddl"
+ voucherstatus-post = {
+ "version": uint,
+ "status": bool,
+ ? "reason": text,
+ ? "reason-context" : { $$arbitrary-map }
+ }
+ }
+ <CODE ENDS>
+
+ Figure 15: CDDL for Voucher Status POST
+
+ {
+ "version": 1,
+ "status":false,
+ "reason":"Informative human-readable message",
+ "reason-context": { "additional" : "JSON" }
+ }
+
+ Figure 16: Example Status Telemetry
+
+ The server SHOULD respond with an HTTP 200 but MAY simply fail with
+ an HTTP 404 error. The client ignores any response. The server
+ SHOULD capture this telemetry information within the server logs.
+
+ Additional standard JSON fields in this POST MAY be added; see
+ Section 8.5. A server that sees unknown fields should log them, but
+ otherwise ignore them.
+
+5.8. Registrar Audit-Log Request
+
+ After receiving the pledge status telemetry (see Section 5.7), the
+ registrar SHOULD request the MASA audit-log from the MASA service.
+
+ This is done with an HTTP POST using the operation path value of
+ "/.well-known/brski/requestauditlog".
+
+ The registrar SHOULD HTTP POST the same registrar voucher-request as
+ it did when requesting a voucher (using the same Content-Type). It
+ is posted to the /requestauditlog URI instead. The idevid-issuer and
+ serial-number informs the MASA which log is requested, so the
+ appropriate log can be prepared for the response. Using the same
+ media type and message minimizes cryptographic and message
+ operations, although it results in additional network traffic. The
+ relying MASA implementation MAY leverage internal state to associate
+ this request with the original, and by now already validated,
+ voucher-request so as to avoid an extra crypto validation.
+
+ A registrar MAY request logs at future times. If the registrar
+ generates a new request, then the MASA is forced to perform the
+ additional cryptographic operations to verify the new request.
+
+ A MASA that receives a request for a device that does not exist, or
+ for which the requesting owner was never an owner, returns an HTTP
+ 404 ("Not found") code.
+
+ It is reasonable for a registrar, that the MASA does not believe to
+ be the current owner, to request the audit-log. There are probably
+ reasons for this, which are hard to predict in advance. For
+ instance, such a registrar may not be aware that the device has been
+ resold; it may be that the device has been resold inappropriately,
+ and this is how the original owner will learn of the occurrence. It
+ is also possible that the device legitimately spends time in two
+ different networks.
+
+ Rather than returning the audit-log as a response to the POST (with a
+ return code 200), the MASA MAY instead return a 201 ("Created")
+ response ([RFC7231], Sections 6.3.2 and 7.1), with the URL to the
+ prepared (and idempotent, therefore cachable) audit response in the
+ "Location" header field.
+
+ In order to avoid enumeration of device audit-logs, a MASA that
+ returns URLs SHOULD take care to make the returned URL unguessable.
+ [W3C.capability-urls] provides very good additional guidance. For
+ instance, rather than returning URLs containing a database number
+ such as https://example.com/auditlog/1234 or the Extended Unique
+ Identifier (EUI) of the device such https://example.com/
+ auditlog/10-00-00-11-22-33, the MASA SHOULD return a randomly
+ generated value (a "slug" in web parlance). The value is used to
+ find the relevant database entry.
+
+ A MASA that returns a code 200 MAY also include a "Location" header
+ for future reference by the registrar.
+
+5.8.1. MASA Audit-Log Response
+
+ A log data file is returned consisting of all log entries associated
+ with the device selected by the IDevID presented in the request. The
+ audit-log may be abridged by removal of old or repeated values as
+ explained below. The returned data is in JSON format [RFC8259], and
+ the Content-Type SHOULD be "application/json".
+
+ The following CDDL [RFC8610] explains the structure of the JSON
+ format audit-log response:
+
+ <CODE BEGINS> file "auditlog.cddl"
+ audit-log-response = {
+ "version": uint,
+ "events": [ + event ]
+ "truncation": {
+ ? "nonced duplicates": uint,
+ ? "nonceless duplicates": uint,
+ ? "arbitrary": uint,
+ }
+ }
+
+ event = {
+ "date": text,
+ "domainID": text,
+ "nonce": text / null,
+ "assertion": "verified" / "logged" / "proximity",
+ ? "truncated": uint,
+ }
+ <CODE ENDS>
+
+ Figure 17: CDDL for Audit-Log Response
+
+ An example:
+
+ {
+ "version":"1",
+ "events":[
+ {
+ "date":"2019-05-15T17:25:55.644-04:00",
+ "domainID":"BduJhdHPpfhQLyponf48JzXSGZ8=",
+ "nonce":"VOUFT-WwrEv0NuAQEHoV7Q",
+ "assertion":"proximity",
+ "truncated":"0"
+ },
+ {
+ "date":"2017-05-15T17:25:55.644-04:00",
+ "domainID":"BduJhdHPpfhQLyponf48JzXSGZ8=",
+ "nonce":"f4G6Vi1t8nKo/FieCVgpBg==",
+ "assertion":"proximity"
+ }
+ ],
+ "truncation": {
+ "nonced duplicates": "0",
+ "nonceless duplicates": "1",
+ "arbitrary": "2"
+ }
+ }
+
+ Figure 18: Example of an Audit-Log Response
+
+ The domainID is a binary SubjectKeyIdentifier value calculated
+ according to Section 5.8.2. It is encoded once in base64 in order to
+ be transported in this JSON container.
+
+ The date is formatted per [RFC3339], which is consistent with typical
+ JavaScript usage of JSON.
+
+ The truncation structure MAY be omitted if all values are zero. Any
+ counter missing from the truncation structure is assumed to be zero.
+
+ The nonce is a string, as provided in the voucher-request, and is
+ used in the voucher. If no nonce was placed in the resulting
+ voucher, then a value of null SHOULD be used in preference to
+ omitting the entry. While the nonce is often created as a
+ base64-encoded random series of bytes, this should not be assumed.
+
+ Distribution of a large log is less than ideal. This structure can
+ be optimized as follows: nonced or nonceless entries for the same
+ domainID MAY be abridged from the log leaving only the single most
+ recent nonced or nonceless entry for that domainID. In the case of
+ truncation, the "event" truncation value SHOULD contain a count of
+ the number of events for this domainID that were omitted. The log
+ SHOULD NOT be further reduced, but an operational situation could
+ exist where maintaining the full log is not possible. In such
+ situations, the log MAY be arbitrarily abridged for length, with the
+ number of removed entries indicated as "arbitrary".
+
+ If the truncation count exceeds 1024, then the MASA MAY use this
+ value without further incrementing it.
+
+ A log where duplicate entries for the same domain have been omitted
+ ("nonced duplicates" and/or "nonceless duplicates") could still be
+ acceptable for informed decisions. A log that has had "arbitrary"
+ truncations is less acceptable, but manufacturer transparency is
+ better than hidden truncations.
+
+ A registrar that sees a version value greater than 1 indicates an
+ audit-log format that has been enhanced with additional information.
+ No information will be removed in future versions; should an
+ incompatible change be desired in the future, then a new HTTP
+ endpoint will be used.
+
+ This document specifies a simple log format as provided by the MASA
+ service to the registrar. This format could be improved by
+ distributed consensus technologies that integrate vouchers with
+ technologies such as block-chain or hash trees or optimized logging
+ approaches. Doing so is out of the scope of this document but is an
+ anticipated improvement for future work. As such, the registrar
+ SHOULD anticipate new kinds of responses and SHOULD provide operator
+ controls to indicate how to process unknown responses.
+
+5.8.2. Calculation of domainID
+
+ The domainID is a binary value (a BIT STRING) that uniquely
+ identifies a registrar by the pinned-domain-cert.
+
+ If the pinned-domain-cert certificate includes the
+ SubjectKeyIdentifier ([RFC5280], Section 4.2.1.2), then it is used as
+ the domainID. If not, the SPKI Fingerprint as described in
+ [RFC7469], Section 2.4 is used. This value needs to be calculated by
+ both the MASA (to populate the audit-log) and the registrar (to
+ recognize itself in the audit-log).
+
+ [RFC5280], Section 4.2.1.2 does not mandate that the
+ SubjectKeyIdentifier extension be present in non-CA certificates. It
+ is RECOMMENDED that registrar certificates (even if self-signed)
+ always include the SubjectKeyIdentifier to be used as a domainID.
+
+ The domainID is determined from the certificate chain associated with
+ the pinned-domain-cert and is used to update the audit-log.
+
+5.8.3. Registrar Audit-Log Verification
+
+ Each time the MASA issues a voucher, it appends details of the
+ assignment to an internal audit-log for that device. The internal
+ audit-log is processed when responding to requests for details as
+ described in Section 5.8. The contents of the audit-log can express
+ a variety of trust levels, and this section explains what kind of
+ trust a registrar can derive from the entries.
+
+ While the audit-log provides a list of vouchers that were issued by
+ the MASA, the vouchers are issued in response to voucher-requests,
+ and it is the content of the voucher-requests that determines how
+ meaningful the audit-log entries are.
+
+ A registrar SHOULD use the log information to make an informed
+ decision regarding the continued bootstrapping of the pledge. The
+ exact policy is out of scope of this document as it depends on the
+ security requirements within the registrar domain. Equipment that is
+ purchased preowned can be expected to have an extensive history. The
+ following discussion is provided to help explain the value of each
+ log element:
+
+ date: The date field provides the registrar an opportunity to divide
+ the log around known events such as the purchase date. Depending
+ on the context known to the registrar or administrator, events
+ before/after certain dates can have different levels of
+ importance. For example, for equipment that is expected to be
+ new, and thus has no history, it would be a surprise to find prior
+ entries.
+
+ domainID: If the log includes an unexpected domainID, then the
+ pledge could have imprinted on an unexpected domain. The
+ registrar can be expected to use a variety of techniques to define
+ "unexpected" ranging from acceptlists of prior domains to anomaly
+ detection (e.g., "this device was previously bound to a different
+ domain than any other device deployed"). Log entries can also be
+ compared against local history logs in search of discrepancies
+ (e.g., "this device was re-deployed some number of times
+ internally, but the external audit-log shows additional re-
+ deployments our internal logs are unaware of").
+
+ nonce: Nonceless entries mean the logged domainID could
+ theoretically trigger a reset of the pledge and then take over
+ management by using the existing nonceless voucher.
+
+ assertion: The assertion leaf in the voucher and audit-log indicates
+ why the MASA issued the voucher. A "verified" entry means that
+ the MASA issued the associated voucher as a result of positive
+ verification of ownership. However, this entry does not indicate
+ whether or not the pledge was actually deployed in the prior
+ domain. A "logged" assertion informs the registrar that the prior
+ vouchers were issued with minimal verification. A "proximity"
+ assertion assures the registrar that the pledge was truly
+ communicating with the prior domain and thus provides assurance
+ that the prior domain really has deployed the pledge.
+
+ A relatively simple policy is to acceptlist known (internal or
+ external) domainIDs and require all vouchers to have a nonce. An
+ alternative is to require that all nonceless vouchers be from a
+ subset (e.g., only internal) of domainIDs. If the policy is
+ violated, a simple action is to revoke any locally issued credentials
+ for the pledge in question or to refuse to forward the voucher. The
+ registrar MUST then refuse any EST actions and SHOULD inform a human
+ via a log. A registrar MAY be configured to ignore (i.e., override
+ the above policy) the history of the device, but it is RECOMMENDED
+ that this only be configured if hardware-assisted (i.e., Transport
+ Performance Metrics (TPM) anchored) Network Endpoint Assessment (NEA)
+ [RFC5209] is supported.
+
+5.9. EST Integration for PKI Bootstrapping
+
+ The pledge SHOULD follow the BRSKI operations with EST enrollment
+ operations including "CA Certificates Request", "CSR Attributes
+ Request", and "Client Certificate Request" or "Server-Side Key
+ Generation", etc. This is a relatively seamless integration since
+ BRSKI API calls provide an automated alternative to the manual
+ bootstrapping method described in [RFC7030]. As noted above, use of
+ HTTP-persistent connections simplifies the pledge state machine.
+
+ Although EST allows clients to obtain multiple certificates by
+ sending multiple Certificate Signing Requests (CSRs), BRSKI does not
+ support this mechanism directly. This is because BRSKI pledges MUST
+ use the CSR Attributes request ([RFC7030], Section 4.5). The
+ registrar MUST validate the CSR against the expected attributes.
+ This implies that client requests will "look the same" and therefore
+ result in a single logical certificate being issued even if the
+ client were to make multiple requests. Registrars MAY contain more
+ complex logic, but doing so is out of scope of this specification.
+ BRSKI does not signal any enhancement or restriction to this
+ capability.
+
+5.9.1. EST Distribution of CA Certificates
+
+ The pledge SHOULD request the full EST Distribution of CA certificate
+ messages; see [RFC7030], Section 4.1.
+
+ This ensures that the pledge has the complete set of current CA
+ certificates beyond the pinned-domain-cert (see Section 5.6.2 for a
+ discussion of the limitations inherent in having a single certificate
+ instead of a full CA certificate response). Although these
+ limitations are acceptable during initial bootstrapping, they are not
+ appropriate for ongoing PKIX end-entity certificate validation.
+
+5.9.2. EST CSR Attributes
+
+ Automated bootstrapping occurs without local administrative
+ configuration of the pledge. In some deployments, it is plausible
+ that the pledge generates a certificate request containing only
+ identity information known to the pledge (essentially the X.509
+ IDevID information) and ultimately receives a certificate containing
+ domain-specific identity information. Conceptually, the CA has
+ complete control over all fields issued in the end-entity
+ certificate. Realistically, this is operationally difficult with the
+ current status of PKI CA deployments, where the CSR is submitted to
+ the CA via a number of non-standard protocols. Even with all
+ standardized protocols used, it could operationally be problematic to
+ expect that service-specific certificate fields can be created by a
+ CA that is likely operated by a group that has no insight into
+ different network services/protocols used. For example, the CA could
+ even be outsourced.
+
+ To alleviate these operational difficulties, the pledge MUST request
+ the EST "CSR Attributes" from the EST server, and the EST server
+ needs to be able to reply with the attributes necessary for use of
+ the certificate in its intended protocols/services. This approach
+ allows for minimal CA integrations, and instead, the local
+ infrastructure (EST server) informs the pledge of the proper fields
+ to include in the generated CSR (such as rfc822Name). This approach
+ is beneficial to automated bootstrapping in the widest number of
+ environments.
+
+ In networks using the BRSKI enrolled certificate to authenticate the
+ ACP, the EST CSR Attributes MUST include the ACP domain information
+ fields defined in [RFC8994], Section 6.2.2.
+
+ The registrar MUST also confirm that the resulting CSR is formatted
+ as indicated before forwarding the request to a CA. If the registrar
+ is communicating with the CA using a protocol such as full
+ Certificate Management over CMS (CMC), which provides mechanisms to
+ override the CSR Attributes, then these mechanisms MAY be used even
+ if the client ignores the guidance for the CSR Attributes.
+
+5.9.3. EST Client Certificate Request
+
+ The pledge MUST request a new Client Certificate; see [RFC7030],
+ Section 4.2.
+
+5.9.4. Enrollment Status Telemetry
+
+ For automated bootstrapping of devices, the administrative elements
+ that provide bootstrapping also provide indications to the system
+ administrators concerning device life-cycle status. This might
+ include information concerning attempted bootstrapping messages seen
+ by the client. The MASA provides logs and the status of credential
+ enrollment. Since an end user is assumed per [RFC7030], a final
+ success indication back to the server is not included. This is
+ insufficient for automated use cases.
+
+ The client MUST send an indicator to the registrar about its
+ enrollment status. It does this by using an HTTP POST of a JSON
+ dictionary with the attributes described below to the new EST
+ endpoint at "/.well-known/brski/enrollstatus".
+
+ When indicating a successful enrollment, the client SHOULD first re-
+ establish the EST TLS session using the newly obtained credentials.
+ TLS 1.3 supports doing this in-band, but TLS 1.2 does not. The
+ client SHOULD therefore always close the existing TLS connection and
+ start a new one, using the same Join Proxy.
+
+ In the case of a failed enrollment, the client MUST send the
+ telemetry information over the same TLS connection that was used for
+ the enrollment attempt, with a Reason string indicating why the most
+ recent enrollment failed. (For failed attempts, the TLS connection
+ is the most reliable way to correlate server-side information with
+ what the client provides.)
+
+ The version and status fields MUST be present. The Reason field
+ SHOULD be present whenever the status field is false. In the case of
+ a SUCCESS, the Reason string MAY be omitted.
+
+ The reason-context attribute is an arbitrary JSON object (literal
+ value or hash of values) that provides additional information
+ specific to the failure to unroll from this pledge. The contents of
+ this field are not subject to standardization. This is represented
+ by the group-socket "$$arbitrary-map" in the CDDL.
+
+ <CODE BEGINS> file "enrollstatus.cddl"
+ enrollstatus-post = {
+ "version": uint,
+ "status": bool,
+ ? "reason": text,
+ ? "reason-context" : { $$arbitrary-map }
+ }
+ }
+ <CODE ENDS>
+
+ Figure 19: CDDL for Enrollment Status POST
+
+ An example status report can be seen below. It is sent with the
+ media type: application/json
+
+ {
+ "version": 1,
+ "status":true,
+ "reason":"Informative human readable message",
+ "reason-context": { "additional" : "JSON" }
+ }
+
+ Figure 20: Example of Enrollment Status POST
+
+ The server SHOULD respond with an HTTP 200 but MAY simply fail with
+ an HTTP 404 error.
+
+ Within the server logs, the server MUST capture if this message was
+ received over a TLS session with a matching Client Certificate.
+
+5.9.5. Multiple Certificates
+
+ Pledges that require multiple certificates could establish direct EST
+ connections to the registrar.
+
+5.9.6. EST over CoAP
+
+ This document describes extensions to EST for the purpose of
+ bootstrapping remote key infrastructures. Bootstrapping is relevant
+ for CoAP enrollment discussions as well. The definition of EST and
+ BRSKI over CoAP is not discussed within this document beyond ensuring
+ proxy support for CoAP operations. Instead, it is anticipated that a
+ definition of CoAP mappings will occur in subsequent documents such
+ as [ACE-COAP-EST] and that CoAP mappings for BRSKI will be discussed
+ either there or in future work.
+
+6. Clarification of Transfer-Encoding
+
+ [RFC7030] defines endpoints to include a "Content-Transfer-Encoding"
+ heading and payloads to be base64-encoded DER [RFC4648].
+
+ When used within BRSKI, the original EST endpoints remain base64
+ encoded [RFC7030] (as clarified by [RFC8951]), but the new BRSKI
+ endpoints that send and receive binary artifacts (specifically,
+ "/.well-known/brski/requestvoucher") are binary. That is, no
+ encoding is used.
+
+ In the BRSKI context, the EST "Content-Transfer-Encoding" header
+ field SHOULD be ignored if present. This header field does not need
+ to be included.
+
+7. Reduced Security Operational Modes
+
+ A common requirement of bootstrapping is to support less secure
+ operational modes for support-specific use cases. This section
+ suggests a range of mechanisms that would alter the security
+ assurance of BRSKI to accommodate alternative deployment
+ architectures and mitigate life-cycle management issues identified in
+ Section 10. They are presented here as informative (non-normative)
+ design guidance for future standardization activities. Section 9
+ provides standardization applicability statements for the ANIMA ACP.
+ Other users would expect that subsets of these mechanisms could be
+ profiled with accompanying applicability statements similar to the
+ one described in Section 9.
+
+ This section is considered non-normative in the generality of the
+ protocol. Use of the suggested mechanisms here MUST be detailed in
+ specific profiles of BRSKI, such as in Section 9.
+
+7.1. Trust Model
+
+ This section explains the trust relationships detailed in
+ Section 2.4:
+
+ +--------+ +---------+ +------------+ +------------+
+ | Pledge | | Join | | Domain | |Manufacturer|
+ | | | Proxy | | Registrar | | Service |
+ | | | | | | | (Internet) |
+ +--------+ +---------+ +------------+ +------------+
+
+ Figure 21: Elements of BRSKI Trust Model
+
+ Pledge: The pledge could be compromised and provide an attack vector
+ for malware. The entity is trusted to only imprint using secure
+ methods described in this document. Additional endpoint
+ assessment techniques are RECOMMENDED but are out of scope of this
+ document.
+
+ Join Proxy: Provides proxy functionalities but is not involved in
+ security considerations.
+
+ Registrar: When interacting with a MASA, a registrar makes all
+ decisions. For Ownership Audit Vouchers (see [RFC8366]), the
+ registrar is provided an opportunity to accept MASA decisions.
+
+ Vendor Service, MASA: This form of manufacturer service is trusted
+ to accurately log all claim attempts and to provide authoritative
+ log information to registrars. The MASA does not know which
+ devices are associated with which domains. These claims could be
+ strengthened by using cryptographic log techniques to provide
+ append only, cryptographic assured, publicly auditable logs.
+
+ Vendor Service, Ownership Validation: This form of manufacturer
+ service is trusted to accurately know which device is owned by
+ which domain.
+
+7.2. Pledge Security Reductions
+
+ The following is a list of alternative behaviors that the pledge can
+ be programmed to implement. These behaviors are not mutually
+ exclusive, nor are they dependent upon each other. Some of these
+ methods enable offline and emergency (touch-based) deployment use
+ cases. Normative language is used as these behaviors are referenced
+ in later sections in a normative fashion.
+
+ 1. The pledge MUST accept nonceless vouchers. This allows for a use
+ case where the registrar cannot connect to the MASA at the
+ deployment time. Logging and validity periods address the
+ security considerations of supporting these use cases.
+
+ 2. Many devices already support "trust on first use" for physical
+ interfaces such as console ports. This document does not change
+ that reality. Devices supporting this protocol MUST NOT support
+ "trust on first use" on network interfaces. This is because
+ "trust on first use" over network interfaces would undermine the
+ logging based security protections provided by this
+ specification.
+
+ 3. The pledge MAY have an operational mode where it skips voucher
+ validation one time, for example, if a physical button is
+ depressed during the bootstrapping operation. This can be useful
+ if the manufacturer service is unavailable. This behavior SHOULD
+ be available via local configuration or physical presence methods
+ (such as use of a serial/craft console) to ensure new entities
+ can always be deployed even when autonomic methods fail. This
+ allows for unsecured imprint.
+
+ 4. A craft/serial console could include a command such as "est-
+ enroll [2001:db8:0:1]:443" that begins the EST process from the
+ point after the voucher is validated. This process SHOULD
+ include server certificate verification using an on-screen
+ fingerprint.
+
+ It is RECOMMENDED that "trust on first use" or any method of skipping
+ voucher validation (including use of a craft serial console) only be
+ available if hardware-assisted Network Endpoint Assessment (NEA)
+ [RFC5209] is supported. This recommendation ensures that domain
+ network monitoring can detect inappropriate use of offline or
+ emergency deployment procedures when voucher-based bootstrapping is
+ not used.
+
+7.3. Registrar Security Reductions
+
+ A registrar can choose to accept devices using less secure methods.
+ They MUST NOT be the default behavior. These methods may be
+ acceptable in situations where threat models indicate that low
+ security is adequate. This includes situations where security
+ decisions are being made by the local administrator:
+
+ 1. A registrar MAY choose to accept all devices, or all devices of a
+ particular type. The administrator could make this choice in
+ cases where it is operationally difficult to configure the
+ registrar with the unique identifier of each new device expected.
+
+ 2. A registrar MAY choose to accept devices that claim a unique
+ identity without the benefit of authenticating that claimed
+ identity. This could occur when the pledge does not include an
+ X.509 IDevID factory-installed credential. New entities without
+ an X.509 IDevID credential MAY form the request per Section 5.2
+ using the format per Section 5.5 to ensure the pledge's serial
+ number information is provided to the registrar (this includes
+ the IDevID AuthorityKeyIdentifier value, which would be
+ statically configured on the pledge). The pledge MAY refuse to
+ provide a TLS Client Certificate (as one is not available). The
+ pledge SHOULD support HTTP-based or certificate-less TLS
+ authentication as described in EST [RFC7030], Section 3.3.2. A
+ registrar MUST NOT accept unauthenticated new entities unless it
+ has been configured to do so by an administrator that has
+ verified that only expected new entities can communicate with a
+ registrar (presumably via a physically secured perimeter.)
+
+ 3. A registrar MAY submit a nonceless voucher-request to the MASA
+ service (by not including a nonce in the voucher-request). The
+ resulting vouchers can then be stored by the registrar until they
+ are needed during bootstrapping operations. This is for use
+ cases where the target network is protected by an air gap and
+ therefore cannot contact the MASA service during pledge
+ deployment.
+
+ 4. A registrar MAY ignore unrecognized nonceless log entries. This
+ could occur when used equipment is purchased with a valid history
+ of being deployed in air gap networks that required offline
+ vouchers.
+
+ 5. A registrar MAY accept voucher formats of future types that
+ cannot be parsed by the registrar. This reduces the registrar's
+ visibility into the exact voucher contents but does not change
+ the protocol operations.
+
+7.4. MASA Security Reductions
+
+ Lower security modes chosen by the MASA service affect all device
+ deployments unless the lower security behavior is tied to specific
+ device identities. The modes described below can be applied to
+ specific devices via knowledge of what devices were sold. They can
+ also be bound to specific customers (independent of the device
+ identity) by authenticating the customer's registrar.
+
+7.4.1. Issuing Nonceless Vouchers
+
+ A MASA has the option of not including a nonce in the voucher and/or
+ not requiring one to be present in the voucher-request. This results
+ in distribution of a voucher that may never expire and, in effect,
+ makes the specified domain an always trusted entity to the pledge
+ during any subsequent bootstrapping attempts. The log information
+ captures when a nonceless voucher is issued so that the registrar can
+ make appropriate security decisions when a pledge joins the domain.
+ Nonceless vouchers are useful to support use cases where registrars
+ might not be online during actual device deployment.
+
+ While a nonceless voucher may include an expiry date, a typical use
+ for a nonceless voucher is for it to be long lived. If the device
+ can be trusted to have an accurate clock (the MASA will know), then a
+ nonceless voucher CAN be issued with a limited lifetime.
+
+ A more typical case for a nonceless voucher is for use with offline
+ onboarding scenarios where it is not possible to pass a fresh
+ voucher-request to the MASA. The use of a long-lived voucher also
+ eliminates concern about the availability of the MASA many years in
+ the future. Thus, many nonceless vouchers will have no expiry dates.
+
+ Thus, the long-lived nonceless voucher does not require proof that
+ the device is online. Issuing such a thing is only accepted when the
+ registrar is authenticated by the MASA and the MASA is authorized to
+ provide this functionality to this customer. The MASA is RECOMMENDED
+ to use this functionality only in concert with an enhanced level of
+ ownership tracking, the details of which are out of scope for this
+ document.
+
+ If the pledge device is known to have a real-time clock that is set
+ from the factory, use of a voucher validity period is RECOMMENDED.
+
+7.4.2. Trusting Owners on First Use
+
+ A MASA has the option of not verifying ownership before responding
+ with a voucher. This is expected to be a common operational model
+ because doing so relieves the manufacturer providing MASA services
+ from having to track ownership during shipping and throughout the
+ supply chain, and it allows for a very low overhead MASA service. A
+ registrar uses the audit-log information as an in-depth defense
+ strategy to ensure that this does not occur unexpectedly (for
+ example, when purchasing new equipment, the registrar would throw an
+ error if any audit-log information is reported). The MASA SHOULD
+ verify the prior-signed-voucher-request information for pledges that
+ support that functionality. This provides a proof-of-proximity check
+ that reduces the need for ownership verification. The proof-of-
+ proximity comes from the assumption that the pledge and Join Proxy
+ are on the same link-local connection.
+
+ A MASA that practices TOFU for registrar identity may wish to
+ annotate the origin of the connection by IP address or netblock and
+ restrict future use of that identity from other locations. A MASA
+ that does this SHOULD take care to not create nuisance situations for
+ itself when a customer has multiple registrars or uses outgoing IPv4-
+ to-IPv4 NAT (NAT44) connections that change frequently.
+
+7.4.3. Updating or Extending Voucher Trust Anchors
+
+ This section deals with two problems: A MASA that is no longer
+ available due to a failed business and a MASA that is uncooperative
+ to a secondary sale.
+
+ A manufacturer could offer a management mechanism that allows the
+ list of voucher verification trust anchors to be extended.
+ [YANG-KEYSTORE] describes one such interface that could be
+ implemented using YANG. Pretty much any configuration mechanism used
+ today could be extended to provide the needed additional update. A
+ manufacturer could even decide to install the domain CA trust anchors
+ received during the EST "cacerts" step as voucher verification
+ anchors. Some additional signals will be needed to clearly identify
+ which keys have voucher validation authority from among those signed
+ by the domain CA. This is future work.
+
+ With the above change to the list of anchors, vouchers can be issued
+ by an alternate MASA. This could be the previous owner (the seller)
+ or some other trusted third party who is mediating the sale. If it
+ is a third party, the seller would need to take steps to introduce
+ the third-party configuration to the device prior to disconnection.
+ The third party (e.g., a wholesaler of used equipment) could,
+ however, use a mechanism described in Section 7.2 to take control of
+ the device after receiving it physically. This would permit the
+ third party to act as the MASA for future onboarding actions. As the
+ IDevID certificate probably cannot be replaced, the new owner's
+ registrar would have to support an override of the MASA URL.
+
+ To be useful for resale or other transfers of ownership, one of two
+ situations will need to occur. The simplest is that the device is
+ not put through any kind of factory default/reset before going
+ through onboarding again. Some other secure, physical signal would
+ be needed to initiate it. This is most suitable for redeploying a
+ device within the same enterprise. This would entail having previous
+ configuration in the system until entirely replaced by the new owner,
+ and it represents some level of risk.
+
+ For the second scenario, there would need to be two levels of factory
+ reset. One would take the system back entirely to manufacturer
+ state, including removing any added trust anchors, and the other
+ (more commonly used) one would just restore the configuration back to
+ a known default without erasing trust anchors. This weaker factory
+ reset might leave valuable credentials on the device, and this may be
+ unacceptable to some owners.
+
+ As a third option, the manufacturer's trust anchors could be entirely
+ overwritten with local trust anchors. A factory default would never
+ restore those anchors. This option comes with a lot of power but is
+ also a lot of responsibility: if access to the private part of the
+ new anchors are lost, the manufacturer may be unable to help.
+
+8. IANA Considerations
+
+ Per this document, IANA has completed the following actions.
+
+8.1. The IETF XML Registry
+
+ This document registers a URI in the "IETF XML Registry" [RFC3688].
+ IANA has registered the following:
+
+ URI: urn:ietf:params:xml:ns:yang:ietf-voucher-request
+ Registrant Contact: The ANIMA WG of the IETF.
+ XML: N/A; the requested URI is an XML namespace.
+
+8.2. YANG Module Names Registry
+
+ This document registers a YANG module in the "YANG Module Names"
+ registry [RFC6020]. IANA has registered the following:
+
+ Name: ietf-voucher-request
+ Namespace: urn:ietf:params:xml:ns:yang:ietf-voucher-request
+ Prefix: vch
+ Reference: RFC 8995
+
+8.3. BRSKI Well-Known Considerations
+
+8.3.1. BRSKI .well-known Registration
+
+ To the "Well-Known URIs" registry at
+ https://www.iana.org/assignments/well-known-uris/, this document
+ registers the well-known name "brski" with the following filled-in
+ template from [RFC8615]:
+
+ URI Suffix: brski
+ Change Controller: IETF
+
+ IANA has changed the registration of "est" to now only include
+ [RFC7030] and no longer this document. Earlier draft versions of
+ this document used "/.well-known/est" rather than "/.well-known/
+ brski".
+
+8.3.2. BRSKI .well-known Registry
+
+ IANA has created a new registry entitled: "BRSKI Well-Known URIs".
+ The registry has three columns: URI, Description, and Reference. New
+ items can be added using the Specification Required [RFC8126]
+ process. The initial contents of this registry are:
+
+ +=================+==========================+===========+
+ | URI | Description | Reference |
+ +=================+==========================+===========+
+ | requestvoucher | pledge to registrar, and | RFC 8995 |
+ | | from registrar to MASA | |
+ +-----------------+--------------------------+-----------+
+ | voucher_status | pledge to registrar | RFC 8995 |
+ +-----------------+--------------------------+-----------+
+ | requestauditlog | registrar to MASA | RFC 8995 |
+ +-----------------+--------------------------+-----------+
+ | enrollstatus | pledge to registrar | RFC 8995 |
+ +-----------------+--------------------------+-----------+
+
+ Table 1: BRSKI Well-Known URIs
+
+8.4. PKIX Registry
+
+ IANA has registered the following:
+
+ a number for id-mod-MASAURLExtn2016(96) from the pkix(7) id-mod(0)
+ Registry.
+
+ IANA has assigned a number from the id-pe registry (Structure of
+ Management Information (SMI) Security for PKIX Certificate Extension)
+ for id-pe-masa-url with the value 32, resulting in an OID of
+ 1.3.6.1.5.5.7.1.32.
+
+8.5. Pledge BRSKI Status Telemetry
+
+ IANA has created a new registry entitled "BRSKI Parameters" and has
+ created, within that registry, a table called: "Pledge BRSKI Status
+ Telemetry Attributes". New items can be added using the
+ Specification Required process. The following items are in the
+ initial registration, with this document (see Section 5.7) as the
+ reference:
+
+ * version
+
+ * Status
+
+ * Reason
+
+ * reason-context
+
+8.6. DNS Service Names
+
+ IANA has registered the following service names:
+
+ Service Name: brski-proxy
+ Transport Protocol(s): tcp
+ Assignee: IESG <iesg@ietf.org>
+ Contact: IESG <iesg@ietf.org>
+ Description: The Bootstrapping Remote Secure Key Infrastructure
+ Proxy
+ Reference: RFC 8995
+
+ Service Name: brski-registrar
+ Transport Protocol(s): tcp
+ Assignee: IESG <iesg@ietf.org>
+ Contact: IESG <iesg@ietf.org>
+ Description: The Bootstrapping Remote Secure Key Infrastructure
+ Registrar
+ Reference: RFC 8995
+
+8.7. GRASP Objective Names
+
+ IANA has registered the following GRASP Objective Names:
+
+ IANA has registered the value "AN_Proxy" (without quotes) to the
+ "GRASP Objective Names" table in the GRASP Parameter registry. The
+ specification for this value is Section 4.1.1 of this document.
+
+ The IANA has registered the value "AN_join_registrar" (without
+ quotes) to the "GRASP Objective Names" table in the GRASP Parameter
+ registry. The specification for this value is Section 4.3 of this
+ document.
+
+9. Applicability to the Autonomic Control Plane (ACP)
+
+ This document provides a solution to the requirements for secure
+ bootstrapping as defined in "Using an Autonomic Control Plane for
+ Stable Connectivity of Network Operations, Administration, and
+ Maintenance (OAM)" [RFC8368], "A Reference Model for Autonomic
+ Networking" [RFC8993], and specifically "An Autonomic Control Plane
+ (ACP)" [RFC8994]; see Sections 3.2 ("Secure Bootstrap over an
+ Unconfigured Network") and 6.2 ("ACP Domain, Certificate, and
+ Network").
+
+ The protocol described in this document has appeal in a number of
+ other non-ANIMA use cases. Such uses of the protocol will be
+ deployed into other environments with different tradeoffs of privacy,
+ security, reliability, and autonomy from manufacturers. As such,
+ those use cases will need to provide their own applicability
+ statements and will need to address unique privacy and security
+ considerations for the environments in which they are used.
+
+ The ACP that is bootstrapped by the BRSKI protocol is typically used
+ in medium to large Internet service provider organizations.
+ Equivalent enterprises that have significant Layer 3 router
+ connectivity also will find significant benefit, particularly if the
+ enterprise has many sites. (A network consisting of primarily Layer
+ 2 is not excluded, but the adjacencies that the ACP will create and
+ maintain will not reflect the topology until all devices participate
+ in the ACP.)
+
+ In the ACP, the Join Proxy is found to be proximal because
+ communication between the pledge and the Join Proxy is exclusively on
+ IPv6 link-local addresses. The proximity of the Join Proxy to the
+ registrar is validated by the registrar using ANI ACP IPv6 ULAs.
+ ULAs are not routable over the Internet, so as long as the Join Proxy
+ is operating correctly, the proximity assertion is satisfied. Other
+ uses of BRSKI will need similar analysis if they use proximity
+ assertions.
+
+ As specified in the ANIMA charter, this work "focuses on
+ professionally-managed networks." Such a network has an operator and
+ can do things like install, configure, and operate the registrar
+ function. The operator makes purchasing decisions and is aware of
+ what manufacturers it expects to see on its network.
+
+ Such an operator is also capable of performing bootstrapping of a
+ device using a serial console (craft console). The zero-touch
+ mechanism presented in this and the ACP document [RFC8994] represents
+ a significant efficiency: in particular, it reduces the need to put
+ senior experts on airplanes to configure devices in person.
+
+ As the technology evolves, there is recognition that not every
+ situation may work out, and occasionally a human may still have to
+ visit. Given this, some mechanisms are presented in Section 7.2.
+ The manufacturer MUST provide at least one of the one-touch
+ mechanisms described that permit enrollment to proceed without the
+ availability of any manufacturer server (such as the MASA).
+
+ The BRSKI protocol is going into environments where there have
+ already been quite a number of vendor proprietary management systems.
+ Those are not expected to go away quickly but rather to leverage the
+ secure credentials that are provisioned by BRSKI. The connectivity
+ requirements of the said management systems are provided by the ACP.
+
+9.1. Operational Requirements
+
+ This section collects operational requirements based upon the three
+ roles involved in BRSKI: the MASA, the (domain) owner, and the
+ device. It should be recognized that the manufacturer may be
+ involved in two roles, as it creates the software/firmware for the
+ device and may also be the operator of the MASA.
+
+ The requirements in this section are presented using BCP 14 language
+ [RFC2119] [RFC8174]. These do not represent new normative
+ statements, just a review of a few such things in one place by role.
+ They also apply specifically to the ANIMA ACP use case. Other use
+ cases likely have similar, but MAY have different, requirements.
+
+9.1.1. MASA Operational Requirements
+
+ The manufacturer MUST arrange for an online service called the MASA
+ to be available. It MUST be available at the URL that is encoded in
+ the IDevID certificate extensions described in Section 2.3.2.
+
+ The online service MUST have access to a private key with which to
+ sign voucher artifacts [RFC8366]. The public key, certificate, or
+ certificate chain MUST be built into the device as part of the
+ firmware.
+
+ It is RECOMMENDED that the manufacturer arrange for this signing key
+ (or keys) to be escrowed according to typical software source code
+ escrow practices [softwareescrow].
+
+ The MASA accepts voucher-requests from domain owners according to an
+ operational practice appropriate for the device. This can range from
+ any domain owner (first-come first-served, on a TOFU-like basis), to
+ full sales channel integration where domain owners need to be
+ positively identified by TLS pinned Client Certificates or an HTTP
+ authentication process. The MASA creates signed voucher artifacts
+ according to its internally defined policies.
+
+ The MASA MUST operate an audit-log for devices that is accessible.
+ The audit-log is designed to be easily cacheable, and the MASA MAY
+ find it useful to put this content on a Content Delivery Network
+ (CDN).
+
+9.1.2. Domain Owner Operational Requirements
+
+ The domain owner MUST operate an EST [RFC7030] server with the
+ extensions described in this document. This is the JRC or registrar.
+ This JRC/EST server MUST announce itself using GRASP within the ACP.
+ This EST server will typically reside with the Network Operations
+ Center for the organization.
+
+ The domain owner MAY operate an internal CA that is separate from the
+ EST server, or it MAY combine all activities into a single device.
+ The determination of the architecture depends upon the scale and
+ resiliency requirements of the organization. Multiple JRC instances
+ MAY be announced into the ACP from multiple locations to achieve an
+ appropriate level of redundancy.
+
+ In order to recognize which devices and which manufacturers are
+ welcome on the domain owner's network, the domain owner SHOULD
+ maintain an acceptlist of manufacturers. This MAY extend to
+ integration with purchasing departments to know the serial numbers of
+ devices.
+
+ The domain owner SHOULD use the resulting overlay ACP network to
+ manage devices, replacing legacy out-of-band mechanisms.
+
+ The domain owner SHOULD operate one or more EST servers that can be
+ used to renew the domain certificates (LDevIDs), which are deployed
+ to devices. These servers MAY be the same as the JRC or MAY be a
+ distinct set of devices, as appropriate for resiliency.
+
+ The organization MUST take appropriate precautions against loss of
+ access to the CA private key. Hardware security modules and/or
+ secret splitting are appropriate.
+
+9.1.3. Device Operational Requirements
+
+ Devices MUST come with built-in trust anchors that permit the device
+ to validate vouchers from the MASA.
+
+ Devices MUST come with (unique, per-device) IDevID certificates that
+ include their serial numbers and the MASA URL extension.
+
+ Devices are expected to find Join Proxies using GRASP, and then
+ connect to the JRC using the protocol described in this document.
+
+ Once a domain owner has been validated with the voucher, devices are
+ expected to enroll into the domain using EST. Devices are then
+ expected to form ACPs using IPsec over IPv6 link-local addresses as
+ described in [RFC8994].
+
+ Once a device has been enrolled, it SHOULD listen for the address of
+ the JRC using GRASP, and it SHOULD enable itself as a Join Proxy and
+ announce itself on all links/interfaces using GRASP DULL.
+
+ Devices are expected to renew their certificates before they expire.
+
+10. Privacy Considerations
+
+10.1. MASA Audit-Log
+
+ The MASA audit-log includes the domainID for each domain a voucher
+ has been issued to. This information is closely related to the
+ actual domain identity. A MASA may need additional defenses against
+ Denial-of-Service attacks (Section 11.1), and this may involve
+ collecting additional (unspecified here) information. This could
+ provide sufficient information for the MASA service to build a
+ detailed understanding of the devices that have been provisioned
+ within a domain.
+
+ There are a number of design choices that mitigate this risk. The
+ domain can maintain some privacy since it has not necessarily been
+ authenticated and is not authoritatively bound to the supply chain.
+
+ Additionally, the domainID captures only the unauthenticated subject
+ key identifier of the domain. A privacy-sensitive domain could
+ theoretically generate a new domainID for each device being deployed.
+ Similarly, a privacy-sensitive domain would likely purchase devices
+ that support proximity assertions from a manufacturer that does not
+ require sales channel integrations. This would result in a
+ significant level of privacy while maintaining the security
+ characteristics provided by the registrar-based audit-log inspection.
+
+10.2. What BRSKI-EST Reveals
+
+ During the provisional phase of the BRSKI-EST connection between the
+ pledge and the registrar, each party reveals its certificates to each
+ other. For the pledge, this includes the serialNumber attribute, the
+ MASA URL, and the identity that signed the IDevID certificate.
+
+ TLS 1.2 reveals the certificate identities to on-path observers,
+ including the Join Proxy.
+
+ TLS 1.3 reveals the certificate identities only to the end parties,
+ but as the connection is provisional; an on-path attacker (MITM) can
+ see the certificates. This includes not just malicious attackers but
+ also registrars that are visible to the pledge but are not part of
+ the intended domain.
+
+ The certificate of the registrar is rather arbitrary from the point
+ of view of the BRSKI protocol. As no validations [RFC6125] are
+ expected to be done, the contents could be easily pseudonymized. Any
+ device that can see a Join Proxy would be able to connect to the
+ registrar and learn the identity of the network in question. Even if
+ the contents of the certificate are pseudonymized, it would be
+ possible to correlate different connections in different locations
+ that belong to the same entity. This is unlikely to present a
+ significant privacy concern to ANIMA ACP uses of BRSKI, but it may be
+ a concern to other users of BRSKI.
+
+ The certificate of the pledge could be revealed by a malicious Join
+ Proxy that performed a MITM attack on the provisional TLS connection.
+ Such an attacker would be able to reveal the identity of the pledge
+ to third parties if it chose to do so.
+
+ Research into a mechanism to do multistep, multiparty authenticated
+ key agreement, incorporating some kind of zero-knowledge proof, would
+ be valuable. Such a mechanism would ideally avoid disclosing
+ identities until the pledge, registrar, and MASA agree to the
+ transaction. Such a mechanism would need to discover the location of
+ the MASA without knowing the identity of the pledge or the identity
+ of the MASA. This part of the problem may be unsolvable.
+
+10.3. What BRSKI-MASA Reveals to the Manufacturer
+
+ With consumer-oriented devices, the "call-home" mechanism in IoT
+ devices raises significant privacy concerns. See [livingwithIoT] and
+ [IoTstrangeThings] for exemplars. The ACP usage of BRSKI is not
+ targeted at individual usage of IoT devices but rather at the
+ enterprise and ISP creation of networks in a zero-touch fashion where
+ the "call-home" represents a different class of privacy and life-
+ cycle management concerns.
+
+ It needs to be reiterated that the BRSKI-MASA mechanism only occurs
+ once during the commissioning of the device. It is well defined, and
+ although encrypted with TLS, it could in theory be made auditable as
+ the contents are well defined. This connection does not occur when
+ the device powers on or is restarted for normal routines. (It is
+ conceivable, but remarkably unusual, that a device could be forced to
+ go through a full factory reset during an exceptional firmware update
+ situation, after which enrollment would have to be repeated, and a
+ new connection would occur.)
+
+ The BRSKI call-home mechanism is mediated via the owner's registrar,
+ and the information that is transmitted is directly auditable by the
+ device owner. This is in stark contrast to many "call-home"
+ protocols where the device autonomously calls home and uses an
+ undocumented protocol.
+
+ While the contents of the signed part of the pledge voucher-request
+ cannot be changed, they are not encrypted at the registrar. The
+ ability to audit the messages by the owner of the network is a
+ mechanism to defend against exfiltration of data by a nefarious
+ pledge. Both are, to reiterate, encrypted by TLS while in transit.
+
+ The BRSKI-MASA exchange reveals the following information to the
+ manufacturer:
+
+ * the identity of the device being enrolled. This is revealed by
+ transmission of a signed voucher-request containing the serial-
+ number. The manufacturer can usually link the serial number to a
+ device model.
+
+ * an identity of the domain owner in the form of the domain trust
+ anchor. However, this is not a global PKI-anchored name within
+ the WebPKI, so this identity could be pseudonymous. If there is
+ sales channel integration, then the MASA will have authenticated
+ the domain owner, via either a pinned certificate or perhaps
+ another HTTP authentication method, as per Section 5.5.4.
+
+ * the time the device is activated.
+
+ * the IP address of the domain owner's registrar. For ISPs and
+ enterprises, the IP address provides very clear geolocation of the
+ owner. No amount of IP address privacy extensions [RFC8981] can
+ do anything about this, as a simple whois lookup likely identifies
+ the ISP or enterprise from the upper bits anyway. A passive
+ attacker who observes the connection definitely may conclude that
+ the given enterprise/ISP is a customer of the particular equipment
+ vendor. The precise model that is being enrolled will remain
+ private.
+
+ Based upon the above information, the manufacturer is able to track a
+ specific device from pseudonymous domain identity to the next
+ pseudonymous domain identity. If there is sales-channel integration,
+ then the identities are not pseudonymous.
+
+ The manufacturer knows the IP address of the registrar, but it cannot
+ see the IP address of the device itself. The manufacturer cannot
+ track the device to a detailed physical or network location, only to
+ the location of the registrar. That is likely to be at the
+ enterprise or ISP's headquarters.
+
+ The above situation is to be distinguished from a residential/
+ individual person who registers a device from a manufacturer.
+ Individuals do not tend to have multiple offices, and their registrar
+ is likely on the same network as the device. A manufacturer that
+ sells switching/routing products to enterprises should hardly be
+ surprised if additional purchases of switching/routing products are
+ made. Deviations from a historical trend or an established baseline
+ would, however, be notable.
+
+ The situation is not improved by the enterprise/ISP using
+ anonymization services such as Tor [Dingledine], as a TLS 1.2
+ connection will reveal the ClientCertificate used, clearly
+ identifying the enterprise/ISP involved. TLS 1.3 is better in this
+ regard, but an active attacker can still discover the parties
+ involved by performing a MITM attack on the first attempt (breaking/
+ killing it with a TCP reset (RST)), and then letting subsequent
+ connection pass through.
+
+ A manufacturer could attempt to mix the BRSKI-MASA traffic in with
+ general traffic on their site by hosting the MASA behind the same
+ (set) of load balancers that the company's normal marketing site is
+ hosted behind. This makes a lot of sense from a straight capacity
+ planning point of view as the same set of services (and the same set
+ of Distributed Denial-of-Service mitigations) may be used.
+ Unfortunately, as the BRSKI-MASA connections include TLS
+ ClientCertificate exchanges, this may easily be observed in TLS 1.2,
+ and a traffic analysis may reveal it even in TLS 1.3. This does not
+ make such a plan irrelevant. There may be other organizational
+ reasons to keep the marketing site (which is often subject to
+ frequent redesigns, outsourcing, etc.) separate from the MASA, which
+ may need to operate reliably for decades.
+
+10.4. Manufacturers and Used or Stolen Equipment
+
+ As explained above, the manufacturer receives information each time a
+ device that is in factory-default mode does a zero-touch bootstrap
+ and attempts to enroll into a domain owner's registrar.
+
+ The manufacturer is therefore in a position to decline to issue a
+ voucher if it detects that the new owner is not the same as the
+ previous owner.
+
+ 1. This can be seen as a feature if the equipment is believed to
+ have been stolen. If the legitimate owner notifies the
+ manufacturer of the theft, then when the new owner brings the
+ device up, if they use the zero-touch mechanism, the new
+ (illegitimate) owner reveals their location and identity.
+
+ 2. In the case of used equipment, the initial owner could inform the
+ manufacturer of the sale, or the manufacturer may just permit
+ resales unless told otherwise. In which case, the transfer of
+ ownership simply occurs.
+
+ 3. A manufacturer could, however, decide not to issue a new voucher
+ in response to a transfer of ownership. This is essentially the
+ same as the stolen case, with the manufacturer having decided
+ that the sale was not legitimate.
+
+ 4. There is a fourth case, if the manufacturer is providing
+ protection against stolen devices. The manufacturer then has a
+ responsibility to protect the legitimate owner against fraudulent
+ claims that the equipment was stolen. In the absence of such
+ manufacturer protection, such a claim would cause the
+ manufacturer to refuse to issue a new voucher. Should the device
+ go through a deep factory reset (for instance, replacement of a
+ damaged main board component), the device would not bootstrap.
+
+ 5. Finally, there is a fifth case: the manufacturer has decided to
+ end-of-line the device, or the owner has not paid a yearly
+ support amount, and the manufacturer refuses to issue new
+ vouchers at that point. This last case is not new to the
+ industry: many license systems are already deployed that have a
+ significantly worse effect.
+
+ This section has outlined five situations in which a manufacturer
+ could use the voucher system to enforce what are clearly license
+ terms. A manufacturer that attempted to enforce license terms via
+ vouchers would find it rather ineffective as the terms would only be
+ enforced when the device is enrolled, and this is not (to repeat) a
+ daily or even monthly occurrence.
+
+10.5. Manufacturers and Grey Market Equipment
+
+ Manufacturers of devices often sell different products into different
+ regional markets. Which product is available in which market can be
+ driven by price differentials, support issues (some markets may
+ require manuals and tech support to be done in the local language),
+ and government export regulation (such as whether strong crypto is
+ permitted to be exported or permitted to be used in a particular
+ market). When a domain owner obtains a device from a different
+ market (they can be new) and transfers it to a different location,
+ this is called a Grey Market.
+
+ A manufacturer could decide not to issue a voucher to an enterprise/
+ ISP based upon their location. There are a number of ways that this
+ could be determined: from the geolocation of the registrar, from
+ sales channel knowledge about the customer, and from what products
+ are available or unavailable in that market. If the device has a
+ GPS, the coordinates of the device could even be placed into an
+ extension of the voucher.
+
+ The above actions are not illegal, and not new. Many manufacturers
+ have shipped crypto-weak (exportable) versions of firmware as the
+ default on equipment for decades. The first task of an enterprise/
+ ISP has always been to login to a manufacturer system, show one's
+ "entitlement" (country information, proof that support payments have
+ been made), and receive either a new updated firmware or a license
+ key that will activate the correct firmware.
+
+ BRSKI permits the above process to be automated (in an autonomic
+ fashion) and therefore perhaps encourages this kind of
+ differentiation by reducing the cost of doing it.
+
+ An issue that manufacturers will need to deal with in the above
+ automated process is when a device is shipped to one country with one
+ set of rules (or laws or entitlements), but the domain registry is in
+ another one. Which rules apply is something that will have to be
+ worked out: the manufacturer could believe they are dealing with Grey
+ Market equipment when they are simply dealing with a global
+ enterprise.
+
+10.6. Some Mitigations for Meddling by Manufacturers
+
+ The most obvious mitigation is not to buy the product. Pick
+ manufacturers that are up front about their policies and who do not
+ change them gratuitously.
+
+ Section 7.4.3 describes some ways in which a manufacturer could
+ provide a mechanism to manage the trust anchors and built-in
+ certificates (IDevID) as an extension. There are a variety of
+ mechanisms, and some may take a substantial amount of work to get
+ exactly correct. These mechanisms do not change the flow of the
+ protocol described here but rather allow the starting trust
+ assumptions to be changed. This is an area for future
+ standardization work.
+
+ Replacement of the voucher validation anchors (usually pointing to
+ the original manufacturer's MASA) with those of the new owner permits
+ the new owner to issue vouchers to subsequent owners. This would be
+ done by having the selling (old) owner run a MASA.
+
+ The BRSKI protocol depends upon a trust anchor and an identity on the
+ device. Management of these entities facilitates a few new
+ operational modes without making any changes to the BRSKI protocol.
+ Those modes include: offline modes where the domain owner operates an
+ internal MASA for all devices, resell modes where the first domain
+ owner becomes the MASA for the next (resold-to) domain owner, and
+ services where an aggregator acquires a large variety of devices and
+ then acts as a pseudonymized MASA for a variety of devices from a
+ variety of manufacturers.
+
+ Although replacement of the IDevID is not required for all modes
+ described above, a manufacturer could support such a thing. Some may
+ wish to consider replacement of the IDevID as an indication that the
+ device's warranty is terminated. For others, the privacy
+ requirements of some deployments might consider this a standard
+ operating practice.
+
+ As discussed at the end of Section 5.8.1, new work could be done to
+ use a distributed consensus technology for the audit-log. This would
+ permit the audit-log to continue to be useful, even when there is a
+ chain of MASA due to changes of ownership.
+
+10.7. Death of a Manufacturer
+
+ A common concern has been that a manufacturer could go out of
+ business, leaving owners of devices unable to get new vouchers for
+ existing products. Said products might have been previously deployed
+ but need to be reinitialized, used, or kept in a warehouse as long-
+ term spares.
+
+ The MASA was named the Manufacturer *Authorized* Signing Authority to
+ emphasize that it need not be the manufacturer itself that performs
+ this. It is anticipated that specialist service providers will come
+ to exist that deal with the creation of vouchers in much the same way
+ that many companies have outsourced email, advertising, and
+ janitorial services.
+
+ Further, it is expected that as part of any service agreement, the
+ manufacturer would arrange to escrow appropriate private keys such
+ that a MASA service could be provided by a third party. This has
+ routinely been done for source code for decades.
+
+11. Security Considerations
+
+ This document details a protocol for bootstrapping that balances
+ operational concerns against security concerns. As detailed in the
+ introduction, and touched on again in Section 7, the protocol allows
+ for reduced security modes. These attempt to deliver additional
+ control to the local administrator and owner in cases where less
+ security provides operational benefits. This section goes into more
+ detail about a variety of specific considerations.
+
+ To facilitate logging and administrative oversight, in addition to
+ triggering registrar verification of MASA logs, the pledge reports on
+ the voucher parsing status to the registrar. In the case of a
+ failure, this information is informative to a potentially malicious
+ registrar. This is mandated anyway because of the operational
+ benefits of an informed administrator in cases where the failure is
+ indicative of a problem. The registrar is RECOMMENDED to verify MASA
+ logs if voucher status telemetry is not received.
+
+ To facilitate truly limited clients, EST requires that the client
+ MUST support a client authentication model (see [RFC7030],
+ Section 3.3.2); Section 7 updates these requirements by stating that
+ the registrar MAY choose to accept devices that fail cryptographic
+ authentication. This reflects current (poor) practices in shipping
+ devices without a cryptographic identity that are NOT RECOMMENDED.
+
+ During the provisional period of the connection, the pledge MUST
+ treat all HTTP header and content data as untrusted data. HTTP
+ libraries are regularly exposed to non-secured HTTP traffic: mature
+ libraries should not have any problems.
+
+ Pledges might chose to engage in protocol operations with multiple
+ discovered registrars in parallel. As noted above, they will only do
+ so with distinct nonce values, but the end result could be multiple
+ vouchers issued from the MASA if all registrars attempt to claim the
+ device. This is not a failure, and the pledge chooses whichever
+ voucher to accept based on internal logic. The registrars verifying
+ log information will see multiple entries and take this into account
+ for their analytic purposes.
+
+11.1. Denial of Service (DoS) against MASA
+
+ There are use cases where the MASA could be unavailable or
+ uncooperative to the registrar. They include active DoS attacks,
+ planned and unplanned network partitions, changes to MASA policy, or
+ other instances where MASA policy rejects a claim. These introduce
+ an operational risk to the registrar owner in that MASA behavior
+ might limit the ability to bootstrap a pledge device. For example,
+ this might be an issue during disaster recovery. This risk can be
+ mitigated by registrars that request and maintain long-term copies of
+ "nonceless" vouchers. In that way, they are guaranteed to be able to
+ bootstrap their devices.
+
+ The issuance of nonceless vouchers themselves creates a security
+ concern. If the registrar of a previous domain can intercept
+ protocol communications, then it can use a previously issued
+ nonceless voucher to establish management control of a pledge device
+ even after having sold it. This risk is mitigated by recording the
+ issuance of such vouchers in the MASA audit-log that is verified by
+ the subsequent registrar and by pledges only bootstrapping when in a
+ factory default state. This reflects a balance between enabling MASA
+ independence during future bootstrapping and the security of
+ bootstrapping itself. Registrar control over requesting and auditing
+ nonceless vouchers allows device owners to choose an appropriate
+ balance.
+
+ The MASA is exposed to DoS attacks wherein attackers claim an
+ unbounded number of devices. Ensuring a registrar is representative
+ of a valid manufacturer customer, even without validating ownership
+ of specific pledge devices, helps to mitigate this. Pledge
+ signatures on the pledge voucher-request, as forwarded by the
+ registrar in the prior-signed-voucher-request field of the registrar
+ voucher-request, significantly reduce this risk by ensuring the MASA
+ can confirm proximity between the pledge and the registrar making the
+ request. Supply-chain integration ("know your customer") is an
+ additional step that MASA providers and device vendors can explore.
+
+11.2. DomainID Must Be Resistant to Second-Preimage Attacks
+
+ The domainID is used as the reference in the audit-log to the domain.
+ The domainID is expected to be calculated by a hash that is resistant
+ to a second-preimage attack. Such an attack would allow a second
+ registrar to create audit-log entries that are fake.
+
+11.3. Availability of Good Random Numbers
+
+ The nonce used by the pledge in the voucher-request SHOULD be
+ generated by a Strong Cryptographic Sequence ([RFC4086],
+ Section 6.2). TLS has a similar requirement.
+
+ In particular, implementations should pay attention to the advance in
+ [RFC4086]; see Sections 3 and, in particular, 3.4. The random seed
+ used by a device at boot MUST be unique across all devices and all
+ bootstraps. Resetting a device to factory default state does not
+ obviate this requirement.
+
+11.4. Freshness in Voucher-Requests
+
+ A concern has been raised that the pledge voucher-request should
+ contain some content (a nonce) provided by the registrar and/or MASA
+ in order for those actors to verify that the pledge voucher-request
+ is fresh.
+
+ There are a number of operational problems with getting a nonce from
+ the MASA to the pledge. It is somewhat easier to collect a random
+ value from the registrar, but as the registrar is not yet vouched
+ for, such a registrar nonce has little value. There are privacy and
+ logistical challenges to addressing these operational issues, so if
+ such a thing were to be considered, it would have to provide some
+ clear value. This section examines the impacts of not having a fresh
+ pledge voucher-request.
+
+ Because the registrar authenticates the pledge, a full MITM attack is
+ not possible, despite the provisional TLS authentication by the
+ pledge (see Section 5.) Instead, we examine the case of a fake
+ registrar (Rm) that communicates with the pledge in parallel or in
+ close-time proximity with the intended registrar. (This scenario is
+ intentionally supported as described in Section 4.1.)
+
+ The fake registrar (Rm) can obtain a voucher signed by the MASA
+ either directly or through arbitrary intermediaries. Assuming that
+ the MASA accepts the registrar voucher-request (because either the Rm
+ is collaborating with a legitimate registrar according to supply-
+ chain information or the MASA is in audit-log only mode), then a
+ voucher linking the pledge to the registrar Rm is issued.
+
+ Such a voucher, when passed back to the pledge, would link the pledge
+ to registrar Rm and permit the pledge to end the provisional state.
+ It now trusts the Rm and, if it has any security vulnerabilities
+ leverageable by an Rm with full administrative control, can be
+ assumed to be a threat against the intended registrar.
+
+ This flow is mitigated by the intended registrar verifying the audit-
+ logs available from the MASA as described in Section 5.8. The Rm
+ might chose to collect a voucher-request but wait until after the
+ intended registrar completes the authorization process before
+ submitting it. This pledge voucher-request would be "stale" in that
+ it has a nonce that no longer matches the internal state of the
+ pledge. In order to successfully use any resulting voucher, the Rm
+ would need to remove the stale nonce or anticipate the pledge's
+ future nonce state. Reducing the possibility of this is why the
+ pledge is mandated to generate a strong random or pseudo-random
+ number nonce.
+
+ Additionally, in order to successfully use the resulting voucher, the
+ Rm would have to attack the pledge and return it to a bootstrapping-
+ enabled state. This would require wiping the pledge of current
+ configuration and triggering a rebootstrapping of the pledge. This
+ is no more likely than simply taking control of the pledge directly,
+ but if this is a consideration, it is RECOMMENDED that the target
+ network take the following steps:
+
+ * Ongoing network monitoring for unexpected bootstrapping attempts
+ by pledges.
+
+ * Retrieval and examination of MASA log information upon the
+ occurrence of any such unexpected events. The Rm will be listed
+ in the logs along with nonce information for analysis.
+
+11.5. Trusting Manufacturers
+
+ The BRSKI extensions to EST permit a new pledge to be completely
+ configured with domain-specific trust anchors. The link from built-
+ in manufacturer-provided trust anchors to domain-specific trust
+ anchors is mediated by the signed voucher artifact.
+
+ If the manufacturer's IDevID signing key is not properly validated,
+ then there is a risk that the network will accept a pledge that
+ should not be a member of the network. As the address of the
+ manufacturer's MASA is provided in the IDevID using the extension
+ from Section 2.3, the malicious pledge will have no problem
+ collaborating with its MASA to produce a completely valid voucher.
+
+ BRSKI does not, however, fundamentally change the trust model from
+ domain owner to manufacturer. Assuming that the pledge used its
+ IDevID with EST [RFC7030] and BRSKI, the domain (registrar) still
+ needs to trust the manufacturer.
+
+ Establishing this trust between domain and manufacturer is outside
+ the scope of BRSKI. There are a number of mechanisms that can be
+ adopted including:
+
+ * Manually configuring each manufacturer's trust anchor.
+
+ * A TOFU mechanism. A human would be queried upon seeing a
+ manufacturer's trust anchor for the first time, and then the trust
+ anchor would be installed to the trusted store. There are risks
+ with this; even if the key to name mapping is validated using
+ something like the WebPKI, there remains the possibility that the
+ name is a look alike: e.g., dem0.example. vs. demO.example.
+
+ * scanning the trust anchor from a QR code that came with the
+ packaging (this is really a manual TOFU mechanism).
+
+ * some sales integration processing where trust anchors are provided
+ as part of the sales process, probably included in a digital
+ packing "slip", or a sales invoice.
+
+ * consortium membership, where all manufacturers of a particular
+ device category (e.g, a light bulb or a cable modem) are signed by
+ a CA specifically for this. This is done by CableLabs today. It
+ is used for authentication and authorization as part of
+ [docsisroot] and [TR069].
+
+ The existing WebPKI provides a reasonable anchor between manufacturer
+ name and public key. It authenticates the key. It does not provide
+ a reasonable authorization for the manufacturer, so it is not
+ directly usable on its own.
+
+11.6. Manufacturer Maintenance of Trust Anchors
+
+ BRSKI depends upon the manufacturer building in trust anchors to the
+ pledge device. The voucher artifact that is signed by the MASA will
+ be validated by the pledge using that anchor. This implies that the
+ manufacturer needs to maintain access to a signing key that the
+ pledge can validate.
+
+ The manufacturer will need to maintain the ability to make signatures
+ that can be validated for the lifetime that the device could be
+ onboarded. Whether this onboarding lifetime is less than the device
+ lifetime depends upon how the device is used. An inventory of
+ devices kept in a warehouse as spares might not be onboarded for many
+ decades.
+
+ There are good cryptographic hygiene reasons why a manufacturer would
+ not want to maintain access to a private key for many decades. A
+ manufacturer in that situation can leverage a long-term CA anchor,
+ built-in to the pledge, and then a certificate chain may be
+ incorporated using the normal CMS certificate set. This may increase
+ the size of the voucher artifacts, but that is not a significant
+ issue in non-constrained environments.
+
+ There are a few other operational variations that manufacturers could
+ consider. For instance, there is no reason that every device need
+ have the same set of trust anchors preinstalled. Devices built in
+ different factories, or on different days, or in any other
+ consideration, could have different trust anchors built in, and the
+ record of which batch the device is in would be recorded in the asset
+ database. The manufacturer would then know which anchor to sign an
+ artifact against.
+
+ Aside from the concern about long-term access to private keys, a
+ major limiting factor for the shelf life of many devices will be the
+ age of the cryptographic algorithms included. A device produced in
+ 2019 will have hardware and software capable of validating algorithms
+ common in 2019 and will have no defense against attacks (both quantum
+ and von Neumann brute-force attacks) that have not yet been invented.
+ This concern is orthogonal to the concern about access to private
+ keys, but this concern likely dominates and limits the life span of a
+ device in a warehouse. If any update to the firmware to support new
+ cryptographic mechanisms were possible (while the device was in a
+ warehouse), updates to trust anchors would also be done at the same
+ time.
+
+ The set of standard operating procedures for maintaining high-value
+ private keys is well documented. For instance, the WebPKI provides a
+ number of options for audits in [cabforumaudit], and the DNSSEC root
+ operations are well documented in [dnssecroot].
+
+ It is not clear if manufacturers will take this level of precaution,
+ or how strong the economic incentives are to maintain an appropriate
+ level of security.
+
+ The next section examines the risk due to a compromised manufacturer
+ IDevID signing key. This is followed by examination of the risk due
+ to a compromised MASA key. The third section below examines the
+ situation where a MASA web server itself is under attacker control,
+ but the MASA signing key itself is safe in a not-directly connected
+ hardware module.
+
+11.6.1. Compromise of Manufacturer IDevID Signing Keys
+
+ An attacker that has access to the key that the manufacturer uses to
+ sign IDevID certificates can create counterfeit devices. Such
+ devices can claim to be from a particular manufacturer but can be
+ entirely different devices: Trojan horses in effect.
+
+ As the attacker controls the MASA URL in the certificate, the
+ registrar can be convinced to talk to the attacker's MASA. The
+ registrar does not need to be in any kind of promiscuous mode to be
+ vulnerable.
+
+ In addition to creating fake devices, the attacker may also be able
+ to issue revocations for existing certificates if the IDevID
+ certificate process relies upon CRL lists that are distributed.
+
+ There does not otherwise seem to be any risk from this compromise to
+ devices that are already deployed or that are sitting locally in
+ boxes waiting for deployment (local spares). The issue is that
+ operators will be unable to trust devices that have been in an
+ uncontrolled warehouse as they do not know if those are real devices.
+
+11.6.2. Compromise of MASA Signing Keys
+
+ There are two periods of time in which to consider: when the MASA key
+ has fallen into the hands of an attacker and after the MASA
+ recognizes that the key has been compromised.
+
+11.6.2.1. Attacker Opportunities with a Compromised MASA Key
+
+ An attacker that has access to the MASA signing key could create
+ vouchers. These vouchers could be for existing deployed devices or
+ for devices that are still in a warehouse. In order to exploit these
+ vouchers, two things need to occur: the device has to go through a
+ factory default boot cycle, and the registrar has to be convinced to
+ contact the attacker's MASA.
+
+ If the attacker controls a registrar that is visible to the device,
+ then there is no difficulty in delivery of the false voucher. A
+ possible practical example of an attack like this would be in a data
+ center, at an ISP peering point (whether a public IX or a private
+ peering point). In such a situation, there are already cables
+ attached to the equipment that lead to other devices (the peers at
+ the IX), and through those links, the false voucher could be
+ delivered. The difficult part would be to put the device through a
+ factory reset. This might be accomplished through social engineering
+ of data center staff. Most locked cages have ventilation holes, and
+ possibly a long "paperclip" could reach through to depress a factory
+ reset button. Once such a piece of ISP equipment has been
+ compromised, it could be used to compromise equipment that it was
+ connected to (through long haul links even), assuming that those
+ pieces of equipment could also be forced through a factory reset.
+
+ The above scenario seems rather unlikely as it requires some element
+ of physical access; but if there was a remote exploit that did not
+ cause a direct breach, but rather a fault that resulted in a factory
+ reset, this could provide a reasonable path.
+
+ The above deals with ANI uses of BRSKI. For cases where IEEE 802.11
+ or 802.15.4 is involved, the need to connect directly to the device
+ is eliminated, but the need to do a factory reset is not. Physical
+ possession of the device is not required as above, provided that
+ there is some way to force a factory reset. With some consumer
+ devices that have low overall implementation quality, end users might
+ be familiar with the need to reset the device regularly.
+
+ The authors are unable to come up with an attack scenario where a
+ compromised voucher signature enables an attacker to introduce a
+ compromised pledge into an existing operator's network. This is the
+ case because the operator controls the communication between
+ registrar and MASA, and there is no opportunity to introduce the fake
+ voucher through that conduit.
+
+11.6.2.2. Risks after Key Compromise is Known
+
+ Once the operator of the MASA realizes that the voucher signing key
+ has been compromised, it has to do a few things.
+
+ First, it MUST issue a firmware update to all devices that had that
+ key as a trust anchor, such that they will no longer trust vouchers
+ from that key. This will affect devices in the field that are
+ operating, but those devices, being in operation, are not performing
+ onboarding operations, so this is not a critical patch.
+
+ Devices in boxes (in warehouses) are vulnerable and remain vulnerable
+ until patched. An operator would be prudent to unbox the devices,
+ onboard them in a safe environment, and then perform firmware
+ updates. This does not have to be done by the end-operator; it could
+ be done by a distributor that stores the spares. A recommended
+ practice for high-value devices (which typically have a <4hr service
+ window) may be to validate the device operation on a regular basis
+ anyway.
+
+ If the onboarding process includes attestations about firmware
+ versions, then through that process, the operator would be advised to
+ upgrade the firmware before going into production. Unfortunately,
+ this does not help against situations where the attacker operates
+ their own registrar (as listed above).
+
+ The need for short-lived vouchers is explained in [RFC8366],
+ Section 6.1. The nonce guarantees freshness, and the short-lived
+ nature of the voucher means that the window to deliver a fake voucher
+ is very short. A nonceless, long-lived voucher would be the only
+ option for the attacker, and devices in the warehouse would be
+ vulnerable to such a thing.
+
+ A key operational recommendation is for manufacturers to sign
+ nonceless, long-lived vouchers with a different key than what is used
+ to sign short-lived vouchers. That key needs significantly better
+ protection. If both keys come from a common trust-anchor (the
+ manufacturer's CA), then a compromise of the manufacturer's CA would
+ compromise both keys. Such a compromise of the manufacturer's CA
+ likely compromises all keys outlined in this section.
+
+11.6.3. Compromise of MASA Web Service
+
+ An attacker that takes over the MASA web service can inflict a number
+ of attacks. The most obvious one is simply to take the database
+ listing of customers and devices and sell the data to other attackers
+ who will now know where to find potentially vulnerable devices.
+
+ The second most obvious thing that the attacker can do is to kill the
+ service, or make it operate unreliably, making customers frustrated.
+ This could have a serious effect on the ability to deploy new
+ services by customers and would be a significant issue during
+ disaster recovery.
+
+ While the compromise of the MASA web service may lead to the
+ compromise of the MASA voucher signing key, if the signing occurs
+ offboard (such as in a hardware signing module (HSM)), then the key
+ may well be safe, but control over it resides with the attacker.
+
+ Such an attacker can issue vouchers for any device presently in
+ service. Said device still needs to be convinced to go through a
+ factory reset process before an attack.
+
+ If the attacker has access to a key that is trusted for long-lived
+ nonceless vouchers, then they could issue vouchers for devices that
+ are not yet in service. This attack may be very hard to verify as it
+ would involve doing firmware updates on every device in warehouses (a
+ potentially ruinously expensive process); a manufacturer might be
+ reluctant to admit this possibility.
+
+11.7. YANG Module Security Considerations
+
+ As described in Section 7.4 (Security Considerations) of [RFC8366],
+ the YANG module specified in this document defines the schema for
+ data that is subsequently encapsulated by a CMS signed-data content
+ type, as described in Section 5 of [RFC5652]. As such, all of the
+ YANG-modeled data is protected from modification.
+
+ The use of YANG to define data structures, via the "yang-data"
+ statement, is relatively new and distinct from the traditional use of
+ YANG to define an API accessed by network management protocols such
+ as NETCONF [RFC6241] and RESTCONF [RFC8040]. For this reason, these
+ guidelines do not follow the template described by Section 3.7 of
+ [RFC8407].
+
+12. References
+
+12.1. Normative References
+
+ [IDevID] IEEE, "IEEE Standard for Local and metropolitan area
+ networks - Secure Device Identity", IEEE 802.1AR,
+ <https://1.ieee802.org/security/802-1ar>.
+
+ [ITU.X690] ITU-T, "Information Technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER), Canonical
+ Encoding Rules (CER) and Distinguished Encoding Rules
+ (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1:2015,
+ August 2015, <https://www.itu.int/rec/T-REC-X.690>.
+
+ [REST] Fielding, R.F., "Architectural Styles and the Design of
+ Network-based Software Architectures", 2000,
+ <http://www.ics.uci.edu/~fielding/pubs/dissertation/
+ fielding_dissertation.pdf>.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
+ Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
+ <https://www.rfc-editor.org/info/rfc3339>.
+
+ [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
+ DOI 10.17487/RFC3688, January 2004,
+ <https://www.rfc-editor.org/info/rfc3688>.
+
+ [RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H.
+ Levkowetz, Ed., "Extensible Authentication Protocol
+ (EAP)", RFC 3748, DOI 10.17487/RFC3748, June 2004,
+ <https://www.rfc-editor.org/info/rfc3748>.
+
+ [RFC3927] Cheshire, S., Aboba, B., and E. Guttman, "Dynamic
+ Configuration of IPv4 Link-Local Addresses", RFC 3927,
+ DOI 10.17487/RFC3927, May 2005,
+ <https://www.rfc-editor.org/info/rfc3927>.
+
+ [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker,
+ "Randomness Requirements for Security", BCP 106, RFC 4086,
+ DOI 10.17487/RFC4086, June 2005,
+ <https://www.rfc-editor.org/info/rfc4086>.
+
+ [RFC4519] Sciberras, A., Ed., "Lightweight Directory Access Protocol
+ (LDAP): Schema for User Applications", RFC 4519,
+ DOI 10.17487/RFC4519, June 2006,
+ <https://www.rfc-editor.org/info/rfc4519>.
+
+ [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
+ Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
+ <https://www.rfc-editor.org/info/rfc4648>.
+
+ [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
+ Address Autoconfiguration", RFC 4862,
+ DOI 10.17487/RFC4862, September 2007,
+ <https://www.rfc-editor.org/info/rfc4862>.
+
+ [RFC5272] Schaad, J. and M. Myers, "Certificate Management over CMS
+ (CMC)", RFC 5272, DOI 10.17487/RFC5272, June 2008,
+ <https://www.rfc-editor.org/info/rfc5272>.
+
+ [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
+ Housley, R., and W. Polk, "Internet X.509 Public Key
+ Infrastructure Certificate and Certificate Revocation List
+ (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
+ <https://www.rfc-editor.org/info/rfc5280>.
+
+ [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70,
+ RFC 5652, DOI 10.17487/RFC5652, September 2009,
+ <https://www.rfc-editor.org/info/rfc5652>.
+
+ [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
+ the Network Configuration Protocol (NETCONF)", RFC 6020,
+ DOI 10.17487/RFC6020, October 2010,
+ <https://www.rfc-editor.org/info/rfc6020>.
+
+ [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and
+ Verification of Domain-Based Application Service Identity
+ within Internet Public Key Infrastructure Using X.509
+ (PKIX) Certificates in the Context of Transport Layer
+ Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March
+ 2011, <https://www.rfc-editor.org/info/rfc6125>.
+
+ [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
+ and A. Bierman, Ed., "Network Configuration Protocol
+ (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
+ <https://www.rfc-editor.org/info/rfc6241>.
+
+ [RFC6762] Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762,
+ DOI 10.17487/RFC6762, February 2013,
+ <https://www.rfc-editor.org/info/rfc6762>.
+
+ [RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service
+ Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013,
+ <https://www.rfc-editor.org/info/rfc6763>.
+
+ [RFC7030] Pritikin, M., Ed., Yee, P., Ed., and D. Harkins, Ed.,
+ "Enrollment over Secure Transport", RFC 7030,
+ DOI 10.17487/RFC7030, October 2013,
+ <https://www.rfc-editor.org/info/rfc7030>.
+
+ [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
+ Protocol (HTTP/1.1): Message Syntax and Routing",
+ RFC 7230, DOI 10.17487/RFC7230, June 2014,
+ <https://www.rfc-editor.org/info/rfc7230>.
+
+ [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
+ Protocol (HTTP/1.1): Semantics and Content", RFC 7231,
+ DOI 10.17487/RFC7231, June 2014,
+ <https://www.rfc-editor.org/info/rfc7231>.
+
+ [RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning
+ Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April
+ 2015, <https://www.rfc-editor.org/info/rfc7469>.
+
+ [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
+ RFC 7950, DOI 10.17487/RFC7950, August 2016,
+ <https://www.rfc-editor.org/info/rfc7950>.
+
+ [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG",
+ RFC 7951, DOI 10.17487/RFC7951, August 2016,
+ <https://www.rfc-editor.org/info/rfc7951>.
+
+ [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
+ Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
+ <https://www.rfc-editor.org/info/rfc8040>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
+ Interchange Format", STD 90, RFC 8259,
+ DOI 10.17487/RFC8259, December 2017,
+ <https://www.rfc-editor.org/info/rfc8259>.
+
+ [RFC8366] Watsen, K., Richardson, M., Pritikin, M., and T. Eckert,
+ "A Voucher Artifact for Bootstrapping Protocols",
+ RFC 8366, DOI 10.17487/RFC8366, May 2018,
+ <https://www.rfc-editor.org/info/rfc8366>.
+
+ [RFC8368] Eckert, T., Ed. and M. Behringer, "Using an Autonomic
+ Control Plane for Stable Connectivity of Network
+ Operations, Administration, and Maintenance (OAM)",
+ RFC 8368, DOI 10.17487/RFC8368, May 2018,
+ <https://www.rfc-editor.org/info/rfc8368>.
+
+ [RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of
+ Documents Containing YANG Data Models", BCP 216, RFC 8407,
+ DOI 10.17487/RFC8407, October 2018,
+ <https://www.rfc-editor.org/info/rfc8407>.
+
+ [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
+ Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
+ <https://www.rfc-editor.org/info/rfc8446>.
+
+ [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data
+ Definition Language (CDDL): A Notational Convention to
+ Express Concise Binary Object Representation (CBOR) and
+ JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610,
+ June 2019, <https://www.rfc-editor.org/info/rfc8610>.
+
+ [RFC8951] Richardson, M., Werner, T., and W. Pan, "Clarification of
+ Enrollment over Secure Transport (EST): Transfer Encodings
+ and ASN.1", RFC 8951, DOI 10.17487/RFC8951, November 2020,
+ <https://www.rfc-editor.org/info/rfc8951>.
+
+ [RFC8981] Gont, F., Krishnan, S., Narten, T., and R. Draves,
+ "Temporary Address Extensions for Stateless Address
+ Autoconfiguration in IPv6", RFC 8981,
+ DOI 10.17487/RFC8981, February 2021,
+ <https://www.rfc-editor.org/info/rfc8981>.
+
+ [RFC8990] Bormann, C., Carpenter, B., Ed., and B. Liu, Ed., "GeneRic
+ Autonomic Signaling Protocol (GRASP)", RFC 8990,
+ DOI 10.17487/RFC8990, May 2021,
+ <https://www.rfc-editor.org/rfc/rfc8990>.
+
+ [RFC8994] Eckert, T., Ed., Behringer, M., Ed., and S. Bjarnason, "An
+ Autonomic Control Plane (ACP)", RFC 8994,
+ DOI 10.17487/RFC8994, May 2021,
+ <https://www.rfc-editor.org/rfc/rfc8994>.
+
+12.2. Informative References
+
+ [ACE-COAP-EST]
+ van der Stok, P., Kampanakis, P., Richardson, M., and S.
+ Raza, "EST over secure CoAP (EST-coaps)", Work in
+ Progress, Internet-Draft, draft-ietf-ace-coap-est-18, 6
+ January 2020,
+ <https://tools.ietf.org/html/draft-ietf-ace-coap-est-18>.
+
+ [ANIMA-CONSTRAINED-VOUCHER]
+ Richardson, M., van der Stok, P., Kampanakis, P., and E.
+ Dijk, "Constrained Voucher Artifacts for Bootstrapping
+ Protocols", Work in Progress, Internet-Draft, draft-ietf-
+ anima-constrained-voucher-10, 21 February 2021,
+ <https://tools.ietf.org/html/draft-ietf-anima-constrained-
+ voucher-10>.
+
+ [ANIMA-STATE]
+ Richardson, M., "Considerations for stateful vs stateless
+ join router in ANIMA bootstrap", Work in Progress,
+ Internet-Draft, draft-richardson-anima-state-for-
+ joinrouter-03, 22 September 2020,
+ <https://tools.ietf.org/html/draft-richardson-anima-state-
+ for-joinrouter-03>.
+
+ [brewski] Urban Dictionary, "brewski", March 2003,
+ <https://www.urbandictionary.com/define.php?term=brewski>.
+
+ [cabforumaudit]
+ CA/Browser Forum, "Information for Auditors and
+ Assessors", August 2019, <https://cabforum.org/
+ information-for-auditors-and-assessors/>.
+
+ [Dingledine]
+ Dingledine, R., Mathewson, N., and P. Syverson, "Tor: The
+ Second-Generation Onion Router", August 2004,
+ <https://svn-archive.torproject.org/svn/projects/design-
+ paper/tor-design.pdf>.
+
+ [dnssecroot]
+ "DNSSEC Practice Statement for the Root Zone ZSK
+ Operator", December 2017,
+ <https://www.iana.org/dnssec/procedures/zsk-operator/dps-
+ zsk-operator-v2.1.pdf>.
+
+ [docsisroot]
+ "CableLabs Digital Certificate Issuance Service", February
+ 2018, <https://www.cablelabs.com/resources/digital-
+ certificate-issuance-service/>.
+
+ [imprinting]
+ Wikipedia, "Imprinting (psychology)", January 2021,
+ <https://en.wikipedia.org/w/
+ index.php?title=Imprinting_(psychology)&=999211441>.
+
+ [IoTstrangeThings]
+ ESET, "IoT of toys stranger than fiction: Cybersecurity
+ and data privacy update", March 2017,
+ <https://www.welivesecurity.com/2017/03/03/internet-of-
+ things-security-privacy-iot-update/>.
+
+ [livingwithIoT]
+ Silicon Republic, "What is it actually like to live in a
+ house filled with IoT devices?", February 2018,
+ <https://www.siliconrepublic.com/machines/iot-smart-
+ devices-reality>.
+
+ [minerva] Richardson, M., "Minerva reference implementation for
+ BRSKI", 2020, <https://minerva.sandelman.ca/>.
+
+ [minervagithub]
+ "ANIMA Minerva toolkit",
+ <https://github.com/ANIMAgus-minerva>.
+
+ [openssl] OpenSSL, "OpenSSL X509 Utility", September 2019,
+ <https://www.openssl.org/docs/man1.1.1/man1/openssl-
+ x509.html/>.
+
+ [RFC2131] Droms, R., "Dynamic Host Configuration Protocol",
+ RFC 2131, DOI 10.17487/RFC2131, March 1997,
+ <https://www.rfc-editor.org/info/rfc2131>.
+
+ [RFC2663] Srisuresh, P. and M. Holdrege, "IP Network Address
+ Translator (NAT) Terminology and Considerations",
+ RFC 2663, DOI 10.17487/RFC2663, August 1999,
+ <https://www.rfc-editor.org/info/rfc2663>.
+
+ [RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, K., and J.
+ Tardo, "Network Endpoint Assessment (NEA): Overview and
+ Requirements", RFC 5209, DOI 10.17487/RFC5209, June 2008,
+ <https://www.rfc-editor.org/info/rfc5209>.
+
+ [RFC6960] Santesson, S., Myers, M., Ankney, R., Malpani, A.,
+ Galperin, S., and C. Adams, "X.509 Internet Public Key
+ Infrastructure Online Certificate Status Protocol - OCSP",
+ RFC 6960, DOI 10.17487/RFC6960, June 2013,
+ <https://www.rfc-editor.org/info/rfc6960>.
+
+ [RFC6961] Pettersen, Y., "The Transport Layer Security (TLS)
+ Multiple Certificate Status Request Extension", RFC 6961,
+ DOI 10.17487/RFC6961, June 2013,
+ <https://www.rfc-editor.org/info/rfc6961>.
+
+ [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for
+ Constrained-Node Networks", RFC 7228,
+ DOI 10.17487/RFC7228, May 2014,
+ <https://www.rfc-editor.org/info/rfc7228>.
+
+ [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an
+ Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May
+ 2014, <https://www.rfc-editor.org/info/rfc7258>.
+
+ [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection
+ Most of the Time", RFC 7435, DOI 10.17487/RFC7435,
+ December 2014, <https://www.rfc-editor.org/info/rfc7435>.
+
+ [RFC7575] Behringer, M., Pritikin, M., Bjarnason, S., Clemm, A.,
+ Carpenter, B., Jiang, S., and L. Ciavaglia, "Autonomic
+ Networking: Definitions and Design Goals", RFC 7575,
+ DOI 10.17487/RFC7575, June 2015,
+ <https://www.rfc-editor.org/info/rfc7575>.
+
+ [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
+ Writing an IANA Considerations Section in RFCs", BCP 26,
+ RFC 8126, DOI 10.17487/RFC8126, June 2017,
+ <https://www.rfc-editor.org/info/rfc8126>.
+
+ [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
+ BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
+ <https://www.rfc-editor.org/info/rfc8340>.
+
+ [RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers
+ (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019,
+ <https://www.rfc-editor.org/info/rfc8615>.
+
+ [RFC8993] Behringer, M., Ed., Carpenter, B., Eckert, T., Ciavaglia,
+ L., and J. Nobre, "A Reference Model for Autonomic
+ Networking", RFC 8993, DOI 10.17487/RFC8993, May 2021,
+ <https://www.rfc-editor.org/info/rfc8993>.
+
+ [slowloris]
+ Wikipedia, "Slowloris (computer security)", January 2021,
+ <https://en.wikipedia.org/w/index.php?title=Slowloris_(com
+ puter_security)&oldid=1001473290/>.
+
+ [softwareescrow]
+ Wikipedia, "Source code escrow", March 2020,
+ <https://en.wikipedia.org/w/
+ index.php?title=Source_code_escrow&oldid=948073074>.
+
+ [Stajano99theresurrecting]
+ Stajano, F. and R. Anderson, "The Resurrecting Duckling:
+ Security Issues for Ad-hoc Wireless Networks", 1999,
+ <https://www.cl.cam.ac.uk/~fms27/papers/1999-StajanoAnd-
+ duckling.pdf>.
+
+ [TR069] Broadband Forum, "CPE WAN Management Protocol", TR-069,
+ Issue 1, Amendment 6, March 2018, <https://www.broadband-
+ forum.org/download/TR-069_Amendment-6.pdf>.
+
+ [W3C.capability-urls]
+ Tennison, J., "Good Practices for Capability URLs", W3C
+ First Public Working Draft, World Wide Web Consortium WD
+ WD-capability-urls-20140218, February 2014,
+ <https://www.w3.org/TR/2014/WD-capability-urls>.
+
+ [YANG-KEYSTORE]
+ Watsen, K., "A YANG Data Model for a Keystore", Work in
+ Progress, Internet-Draft, draft-ietf-netconf-keystore-22,
+ 18 May 2021, <https://tools.ietf.org/html/draft-ietf-
+ netconf-keystore-22>.
+
+Appendix A. IPv4 and Non-ANI Operations
+
+ The specification of BRSKI in Section 4 intentionally covers only the
+ mechanisms for an IPv6 pledge using link-local addresses. This
+ section describes non-normative extensions that can be used in other
+ environments.
+
+A.1. IPv4 Link-Local Addresses
+
+ Instead of an IPv6 link-local address, an IPv4 address may be
+ generated using "Dynamic Configuration of IPv4 Link-Local Addresses"
+ [RFC3927].
+
+ In the case where an IPv4 link-local address is formed, the bootstrap
+ process would continue, as in an IPv6 case, by looking for a
+ (circuit) proxy.
+
+A.2. Use of DHCPv4
+
+ The pledge MAY obtain an IP address via DHCP ([RFC2131]. The DHCP-
+ provided parameters for the Domain Name System can be used to perform
+ DNS operations if all local discovery attempts fail.
+
+Appendix B. mDNS / DNS-SD Proxy Discovery Options
+
+ Pledge discovery of the proxy (Section 4.1) MAY be performed with
+ DNS-based Service Discovery [RFC6763] over Multicast DNS [RFC6762] to
+ discover the proxy at "_brski-proxy._tcp.local.".
+
+ Proxy discovery of the registrar (Section 4.3) MAY be performed with
+ DNS-based Service Discovery over Multicast DNS to discover registrars
+ by searching for the service "_brski-registrar._tcp.local.".
+
+ To prevent unacceptable levels of network traffic, when using mDNS,
+ the congestion avoidance mechanisms specified in [RFC6762], Section 7
+ MUST be followed. The pledge SHOULD listen for an unsolicited
+ broadcast response as described in [RFC6762]. This allows devices to
+ avoid announcing their presence via mDNS broadcasts and instead
+ silently join a network by watching for periodic unsolicited
+ broadcast responses.
+
+ Discovery of the registrar MAY also be performed with DNS-based
+ Service Discovery by searching for the service "_brski-
+ registrar._tcp.example.com". In this case, the domain "example.com"
+ is discovered as described in [RFC6763], Section 11 (Appendix A.2 of
+ this document suggests the use of DHCP parameters).
+
+ If no local proxy or registrar service is located using the GRASP
+ mechanisms or the above-mentioned DNS-based Service Discovery
+ methods, the pledge MAY contact a well-known manufacturer-provided
+ bootstrapping server by performing a DNS lookup using a well-known
+ URI such as "brski-registrar.manufacturer.example.com". The details
+ of the URI are manufacturer specific. Manufacturers that leverage
+ this method on the pledge are responsible for providing the registrar
+ service. Also see Section 2.7.
+
+ The current DNS services returned during each query are maintained
+ until bootstrapping is completed. If bootstrapping fails and the
+ pledge returns to the Discovery state, it picks up where it left off
+ and continues attempting bootstrapping. For example, if the first
+ Multicast DNS _bootstrapks._tcp.local response doesn't work, then the
+ second and third responses are tried. If these fail, the pledge
+ moves on to normal DNS-based Service Discovery.
+
+Appendix C. Example Vouchers
+
+ Three entities are involved in a voucher: the MASA issues (signs) it,
+ the registrar's public key is mentioned in it, and the pledge
+ validates it. In order to provide reproducible examples, the public
+ and private keys for an example MASA and registrar are listed first.
+
+ The keys come from an open source reference implementation of BRSKI,
+ called "Minerva" [minerva]. It is available on GitHub
+ [minervagithub]. The keys presented here are used in the unit and
+ integration tests. The MASA code is called "highway", the registrar
+ code is called "fountain", and the example client is called "reach".
+
+ The public key components of each are presented as base64
+ certificates and are decoded by openssl's x509 utility so that the
+ extensions can be seen. This was version 1.1.1c of the library and
+ utility of [openssl].
+
+C.1. Keys Involved
+
+ The manufacturer has a CA that signs the pledge's IDevID. In
+ addition, the Manufacturer's signing authority (the MASA) signs the
+ vouchers, and that certificate must distributed to the devices at
+ manufacturing time so that vouchers can be validated.
+
+C.1.1. Manufacturer Certification Authority for IDevID Signatures
+
+ This private key is the CA that signs IDevID certificates:
+
+ <CODE BEGINS> file "vendor.key"
+ -----BEGIN EC PRIVATE KEY-----
+ MIGkAgEBBDCAYkoLW1IEA5SKKhMMdkTK7sJxk5ybKqYq9Yr5aR7tNwqXyLGS7z8G
+ 8S4w/UJ58BqgBwYFK4EEACKhZANiAAQu5/yktJbFLjMC87h7b+yTreFuF8GwewKH
+ L4mS0r0dVAQubqDUQcTrjvpXrXCpTojiLCzgp8fzkcUDkZ9LD/M90LDipiLNIOkP
+ juF8QkoAbT8pMrY83MS8y76wZ7AalNQ=
+ -----END EC PRIVATE KEY-----
+ <CODE ENDS>
+
+ This public key validates IDevID certificates:
+
+ file: examples/vendor.key
+
+ <CODE BEGINS> file "vendor.cert"
+ Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 1216069925 (0x487bc125)
+ Signature Algorithm: ecdsa-with-SHA256
+ Issuer: CN = highway-test.example.com CA
+ Validity
+ Not Before: Apr 13 20:34:24 2021 GMT
+ Not After : Apr 13 20:34:24 2023 GMT
+ Subject: CN = highway-test.example.com CA
+ Subject Public Key Info:
+ Public Key Algorithm: id-ecPublicKey
+ Public-Key: (384 bit)
+ pub:
+ 04:2e:e7:fc:a4:b4:96:c5:2e:33:02:f3:b8:7b:6f:
+ ec:93:ad:e1:6e:17:c1:b0:7b:02:87:2f:89:92:d2:
+ bd:1d:54:04:2e:6e:a0:d4:41:c4:eb:8e:fa:57:ad:
+ 70:a9:4e:88:e2:2c:2c:e0:a7:c7:f3:91:c5:03:91:
+ 9f:4b:0f:f3:3d:d0:b0:e2:a6:22:cd:20:e9:0f:8e:
+ e1:7c:42:4a:00:6d:3f:29:32:b6:3c:dc:c4:bc:cb:
+ be:b0:67:b0:1a:94:d4
+ ASN1 OID: secp384r1
+ NIST CURVE: P-384
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:TRUE
+ X509v3 Key Usage: critical
+ Certificate Sign, CRL Sign
+ X509v3 Subject Key Identifier:
+ 5E:0C:A9:52:5A:8C:DF:A9:0F:03:14:E9:96:F1:80:76:
+ 8C:53:8A:08
+ X509v3 Authority Key Identifier:
+ keyid:5E:0C:A9:52:5A:8C:DF:A9:0F:03:14:E9:96:F1:
+ 80:76:8C:53:8A:08
+
+ Signature Algorithm: ecdsa-with-SHA256
+ 30:64:02:30:60:37:a0:66:89:80:27:e1:0d:e5:43:9a:62:f1:
+ 02:bc:0f:72:6d:a9:e9:cb:84:a5:c6:44:d3:41:9e:5d:ce:7d:
+ 46:16:6e:15:de:f7:cc:e8:3e:61:f9:03:7c:20:c4:b7:02:30:
+ 7f:e9:f3:12:bb:06:c6:24:00:2b:41:aa:21:6b:d8:25:ed:81:
+ 07:11:ef:66:8f:06:bf:c8:be:f0:58:74:24:45:39:4d:04:fc:
+ 31:69:6f:cf:db:fe:61:7b:c3:24:31:ff
+ -----BEGIN CERTIFICATE-----
+ MIIB3TCCAWSgAwIBAgIESHvBJTAKBggqhkjOPQQDAjAmMSQwIgYDVQQDDBtoaWdo
+ d2F5LXRlc3QuZXhhbXBsZS5jb20gQ0EwHhcNMjEwNDEzMjAzNDI0WhcNMjMwNDEz
+ MjAzNDI0WjAmMSQwIgYDVQQDDBtoaWdod2F5LXRlc3QuZXhhbXBsZS5jb20gQ0Ew
+ djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQu5/yktJbFLjMC87h7b+yTreFuF8GwewKH
+ L4mS0r0dVAQubqDUQcTrjvpXrXCpTojiLCzgp8fzkcUDkZ9LD/M90LDipiLNIOkP
+ juF8QkoAbT8pMrY83MS8y76wZ7AalNSjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYD
+ VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBReDKlSWozfqQ8DFOmW8YB2jFOKCDAfBgNV
+ HSMEGDAWgBReDKlSWozfqQ8DFOmW8YB2jFOKCDAKBggqhkjOPQQDAgNnADBkAjBg
+ N6BmiYAn4Q3lQ5pi8QK8D3JtqenLhKXGRNNBnl3OfUYWbhXe98zoPmH5A3wgxLcC
+ MH/p8xK7BsYkACtBqiFr2CXtgQcR72aPBr/IvvBYdCRFOU0E/DFpb8/b/mF7wyQx
+ /w==
+ -----END CERTIFICATE-----
+ <CODE ENDS>
+
+C.1.2. MASA Key Pair for Voucher Signatures
+
+ The MASA is the Manufacturer Authorized Signing Authority. This key
+ pair signs vouchers. An example TLS certificate (see Section 5.4)
+ HTTP authentication is not provided as it is a common form.
+
+ This private key signs the vouchers that are presented below:
+
+ <CODE BEGINS> file "masa.key"
+ -----BEGIN EC PRIVATE KEY-----
+ MHcCAQEEIFhdd0eDdzip67kXx72K+KHGJQYJHNy8pkiLJ6CcvxMGoAoGCCqGSM49
+ AwEHoUQDQgAEqgQVo0S54kT4yfkbBxumdHOcHrpsqbOpMKmiMln3oB1HAW25MJV+
+ gqi4tMFfSJ0iEwt8kszfWXK4rLgJS2mnpQ==
+ -----END EC PRIVATE KEY-----
+ <CODE ENDS>
+
+ This public key validates vouchers, and it has been signed by the CA
+ above:
+
+ file: examples/masa.key
+
+ <CODE BEGINS> file "masa.cert"
+ Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 193399345 (0xb870a31)
+ Signature Algorithm: ecdsa-with-SHA256
+ Issuer: CN = highway-test.example.com CA
+ Validity
+ Not Before: Apr 13 21:40:16 2021 GMT
+ Not After : Apr 13 21:40:16 2023 GMT
+ Subject: CN = highway-test.example.com MASA
+ Subject Public Key Info:
+ Public Key Algorithm: id-ecPublicKey
+ Public-Key: (256 bit)
+ pub:
+ 04:aa:04:15:a3:44:b9:e2:44:f8:c9:f9:1b:07:1b:
+ a6:74:73:9c:1e:ba:6c:a9:b3:a9:30:a9:a2:32:59:
+ f7:a0:1d:47:01:6d:b9:30:95:7e:82:a8:b8:b4:c1:
+ 5f:48:9d:22:13:0b:7c:92:cc:df:59:72:b8:ac:b8:
+ 09:4b:69:a7:a5
+ ASN1 OID: prime256v1
+ NIST CURVE: P-256
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:FALSE
+ Signature Algorithm: ecdsa-with-SHA256
+ 30:66:02:31:00:ae:cb:61:2d:d4:5c:8d:6e:86:aa:0b:06:1d:
+ c6:d3:60:ba:32:73:36:25:d3:23:85:49:87:1c:ce:94:23:79:
+ 1a:9e:41:55:24:1d:15:22:a1:48:bb:0a:c0:ab:3c:13:73:02:
+ 31:00:86:3c:67:b3:95:a2:e2:e5:f9:ad:f9:1d:9c:c1:34:32:
+ 78:f5:cf:ea:d5:47:03:9f:00:bf:d0:59:cb:51:c2:98:04:81:
+ 24:8a:51:13:50:b1:75:b2:2f:9d:a8:b4:f4:b9
+ -----BEGIN CERTIFICATE-----
+ MIIBcDCB9qADAgECAgQLhwoxMAoGCCqGSM49BAMCMCYxJDAiBgNVBAMMG2hpZ2h3
+ YXktdGVzdC5leGFtcGxlLmNvbSBDQTAeFw0yMTA0MTMyMTQwMTZaFw0yMzA0MTMy
+ MTQwMTZaMCgxJjAkBgNVBAMMHWhpZ2h3YXktdGVzdC5leGFtcGxlLmNvbSBNQVNB
+ MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqgQVo0S54kT4yfkbBxumdHOcHrps
+ qbOpMKmiMln3oB1HAW25MJV+gqi4tMFfSJ0iEwt8kszfWXK4rLgJS2mnpaMQMA4w
+ DAYDVR0TAQH/BAIwADAKBggqhkjOPQQDAgNpADBmAjEArsthLdRcjW6GqgsGHcbT
+ YLoyczYl0yOFSYcczpQjeRqeQVUkHRUioUi7CsCrPBNzAjEAhjxns5Wi4uX5rfkd
+ nME0Mnj1z+rVRwOfAL/QWctRwpgEgSSKURNQsXWyL52otPS5
+ -----END CERTIFICATE-----
+ <CODE ENDS>
+
+C.1.3. Registrar Certification Authority
+
+ This CA enrolls the pledge once it is authorized, and it also signs
+ the registrar's certificate.
+
+ <CODE BEGINS> file "ownerca_secp384r1.key"
+ -----BEGIN EC PRIVATE KEY-----
+ MIGkAgEBBDCHnLI0MSOLf8XndiZqoZdqblcPR5YSoPGhPOuFxWy1gFi9HbWv8b/R
+ EGdRgGEVSjKgBwYFK4EEACKhZANiAAQbf1m6F8MavGaNjGzgw/oxcQ9l9iKRvbdW
+ gAfb37h6pUVNeYpGlxlZljGxj2l9Mr48yD5bY7VG9qjVb5v5wPPTuRQ/ckdRpHbd
+ 0vC/9cqPMAF/+MJf0/UgA0SLi/IHbLQ=
+ -----END EC PRIVATE KEY-----
+ <CODE ENDS>
+
+ The public key is indicated in a pledge voucher-request to show
+ proximity.
+
+ file: examples/ownerca_secp384r1.key
+
+ <CODE BEGINS> file "ownerca_secp384r1.cert"
+ Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 694879833 (0x296b0659)
+ Signature Algorithm: ecdsa-with-SHA256
+ Issuer: DC = ca, DC = sandelman,
+ CN = fountain-test.example.com Unstrung Fountain Root CA
+ Validity
+ Not Before: Feb 25 21:31:45 2020 GMT
+ Not After : Feb 24 21:31:45 2022 GMT
+ Subject: DC = ca, DC = sandelman,
+ CN = fountain-test.example.com Unstrung Fountain Root CA
+ Subject Public Key Info:
+ Public Key Algorithm: id-ecPublicKey
+ Public-Key: (384 bit)
+ pub:
+ 04:1b:7f:59:ba:17:c3:1a:bc:66:8d:8c:6c:e0:c3:
+ fa:31:71:0f:65:f6:22:91:bd:b7:56:80:07:db:df:
+ b8:7a:a5:45:4d:79:8a:46:97:19:59:96:31:b1:8f:
+ 69:7d:32:be:3c:c8:3e:5b:63:b5:46:f6:a8:d5:6f:
+ 9b:f9:c0:f3:d3:b9:14:3f:72:47:51:a4:76:dd:d2:
+ f0:bf:f5:ca:8f:30:01:7f:f8:c2:5f:d3:f5:20:03:
+ 44:8b:8b:f2:07:6c:b4
+ ASN1 OID: secp384r1
+ NIST CURVE: P-384
+ X509v3 extensions:
+ X509v3 Basic Constraints: critical
+ CA:TRUE
+ X509v3 Key Usage: critical
+ Certificate Sign, CRL Sign
+ X509v3 Subject Key Identifier:
+ B9:A5:F6:CB:11:E1:07:A4:49:2C:A7:08:C6:7C:10:BC:
+ 87:B3:74:26
+ X509v3 Authority Key Identifier:
+ keyid:B9:A5:F6:CB:11:E1:07:A4:49:2C:A7:08:C6:7C:
+ 10:BC:87:B3:74:26
+
+ Signature Algorithm: ecdsa-with-SHA256
+ 30:64:02:30:20:83:06:ce:8d:98:a4:54:7a:66:4c:4a:3a:70:
+ c2:52:36:5a:52:8d:59:7d:20:9b:2a:69:14:58:87:38:d8:55:
+ 79:dd:fd:29:38:95:1e:91:93:76:b4:f5:66:29:44:b4:02:30:
+ 6f:38:f9:af:12:ed:30:d5:85:29:7c:b1:16:58:bd:67:91:43:
+ c4:0d:30:f9:d8:1c:ac:2f:06:dd:bc:d5:06:42:2c:84:a2:04:
+ ea:02:a4:5f:17:51:26:fb:d9:2f:d2:5c
+ -----BEGIN CERTIFICATE-----
+ MIICazCCAfKgAwIBAgIEKWsGWTAKBggqhkjOPQQDAjBtMRIwEAYKCZImiZPyLGQB
+ GRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZWxtYW4xPDA6BgNVBAMMM2ZvdW50
+ YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zdHJ1bmcgRm91bnRhaW4gUm9vdCBDQTAe
+ Fw0yMDAyMjUyMTMxNDVaFw0yMjAyMjQyMTMxNDVaMG0xEjAQBgoJkiaJk/IsZAEZ
+ FgJjYTEZMBcGCgmSJomT8ixkARkWCXNhbmRlbG1hbjE8MDoGA1UEAwwzZm91bnRh
+ aW4tdGVzdC5leGFtcGxlLmNvbSBVbnN0cnVuZyBGb3VudGFpbiBSb290IENBMHYw
+ EAYHKoZIzj0CAQYFK4EEACIDYgAEG39ZuhfDGrxmjYxs4MP6MXEPZfYikb23VoAH
+ 29+4eqVFTXmKRpcZWZYxsY9pfTK+PMg+W2O1Rvao1W+b+cDz07kUP3JHUaR23dLw
+ v/XKjzABf/jCX9P1IANEi4vyB2y0o2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
+ DwEB/wQEAwIBBjAdBgNVHQ4EFgQUuaX2yxHhB6RJLKcIxnwQvIezdCYwHwYDVR0j
+ BBgwFoAUuaX2yxHhB6RJLKcIxnwQvIezdCYwCgYIKoZIzj0EAwIDZwAwZAIwIIMG
+ zo2YpFR6ZkxKOnDCUjZaUo1ZfSCbKmkUWIc42FV53f0pOJUekZN2tPVmKUS0AjBv
+ OPmvEu0w1YUpfLEWWL1nkUPEDTD52BysLwbdvNUGQiyEogTqAqRfF1Em+9kv0lw=
+ -----END CERTIFICATE-----
+ <CODE ENDS>
+
+C.1.4. Registrar Key Pair
+
+ The registrar is the representative of the domain owner. This key
+ signs registrar voucher-requests and terminates the TLS connection
+ from the pledge.
+
+ <CODE BEGINS> file "jrc_prime256v1.key"
+ -----BEGIN EC PRIVATE KEY-----
+ MHcCAQEEIFZodk+PC5Mu24+ra0sbOjKzan+dW5rvDAR7YuJUOC1YoAoGCCqGSM49
+ AwEHoUQDQgAElmVQcjS6n+Xd5l/28IFv6UiegQwSBztGj5dkK2MAjQIPV8l8lH+E
+ jLIOYdbJiI0VtEIf1/Jqt+TOBfinTNOLOg==
+ -----END EC PRIVATE KEY-----
+ <CODE ENDS>
+
+ The public key is indicated in a pledge voucher-request to show
+ proximity.
+
+ <CODE BEGINS> file "jrc_prime256v1.cert"
+ Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 1066965842 (0x3f989b52)
+ Signature Algorithm: ecdsa-with-SHA256
+ Issuer: DC = ca, DC = sandelman,
+ CN = fountain-test.example.com Unstrung Fountain Root CA
+ Validity
+ Not Before: Feb 25 21:31:54 2020 GMT
+ Not After : Feb 24 21:31:54 2022 GMT
+ Subject: DC = ca, DC = sandelman,
+ CN = fountain-test.example.com
+ Subject Public Key Info:
+ Public Key Algorithm: id-ecPublicKey
+ Public-Key: (256 bit)
+ pub:
+ 04:96:65:50:72:34:ba:9f:e5:dd:e6:5f:f6:f0:81:
+ 6f:e9:48:9e:81:0c:12:07:3b:46:8f:97:64:2b:63:
+ 00:8d:02:0f:57:c9:7c:94:7f:84:8c:b2:0e:61:d6:
+ c9:88:8d:15:b4:42:1f:d7:f2:6a:b7:e4:ce:05:f8:
+ a7:4c:d3:8b:3a
+ ASN1 OID: prime256v1
+ NIST CURVE: P-256
+ X509v3 extensions:
+ X509v3 Extended Key Usage: critical
+ CMC Registration Authority
+ X509v3 Key Usage: critical
+ Digital Signature
+ Signature Algorithm: ecdsa-with-SHA256
+ 30:65:02:30:66:4f:60:4c:55:48:1e:96:07:f8:dd:1f:b9:c8:
+ 12:8d:45:36:87:9b:23:c0:bc:bb:f1:cb:3d:26:15:56:6f:5f:
+ 1f:bf:d5:1c:0e:6a:09:af:1b:76:97:99:19:23:fd:7e:02:31:
+ 00:bc:ac:c3:41:b0:ba:0d:af:52:f9:9c:6e:7a:7f:00:1d:23:
+ c8:62:01:61:bc:4b:c5:c0:47:99:35:0a:0c:77:61:44:01:4a:
+ 07:52:70:57:00:75:ff:be:07:0e:98:cb:e5
+ -----BEGIN CERTIFICATE-----
+ MIIB/DCCAYKgAwIBAgIEP5ibUjAKBggqhkjOPQQDAjBtMRIwEAYKCZImiZPyLGQB
+ GRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZWxtYW4xPDA6BgNVBAMMM2ZvdW50
+ YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zdHJ1bmcgRm91bnRhaW4gUm9vdCBDQTAe
+ Fw0yMDAyMjUyMTMxNTRaFw0yMjAyMjQyMTMxNTRaMFMxEjAQBgoJkiaJk/IsZAEZ
+ FgJjYTEZMBcGCgmSJomT8ixkARkWCXNhbmRlbG1hbjEiMCAGA1UEAwwZZm91bnRh
+ aW4tdGVzdC5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJZl
+ UHI0up/l3eZf9vCBb+lInoEMEgc7Ro+XZCtjAI0CD1fJfJR/hIyyDmHWyYiNFbRC
+ H9fyarfkzgX4p0zTizqjKjAoMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMcMA4GA1Ud
+ DwEB/wQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjBmT2BMVUgelgf43R+5yBKNRTaH
+ myPAvLvxyz0mFVZvXx+/1RwOagmvG3aXmRkj/X4CMQC8rMNBsLoNr1L5nG56fwAd
+ I8hiAWG8S8XAR5k1Cgx3YUQBSgdScFcAdf++Bw6Yy+U=
+ -----END CERTIFICATE-----
+ <CODE ENDS>
+
+C.1.5. Pledge Key Pair
+
+ The pledge has an IDevID key pair built in at manufacturing time:
+
+ <CODE BEGINS> file "idevid_00-D0-E5-F2-00-02.key"
+ -----BEGIN EC PRIVATE KEY-----
+ MHcCAQEEIBHNh6r8QRevRuo+tEmBJeFjQKf6bpFA/9NGoltv+9sNoAoGCCqGSM49
+ AwEHoUQDQgAEA6N1Q4ezfMAKmoecrfb0OBMc1AyEH+BATkF58FsTSyBxs0SbSWLx
+ FjDOuwB9gLGn2TsTUJumJ6VPw5Z/TP4hJw==
+ -----END EC PRIVATE KEY-----
+ <CODE ENDS>
+
+ The certificate is used by the registrar to find the MASA.
+
+ <CODE BEGINS> file "idevid_00-D0-E5-F2-00-02.cert"
+ Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 521731815 (0x1f18fee7)
+ Signature Algorithm: ecdsa-with-SHA256
+ Issuer: CN = highway-test.example.com CA
+ Validity
+ Not Before: Apr 27 18:29:30 2021 GMT
+ Not After : Dec 31 00:00:00 2999 GMT
+ Subject: serialNumber = 00-D0-E5-F2-00-02
+ Subject Public Key Info:
+ Public Key Algorithm: id-ecPublicKey
+ Public-Key: (256 bit)
+ pub:
+ 04:03:a3:75:43:87:b3:7c:c0:0a:9a:87:9c:ad:f6:
+ f4:38:13:1c:d4:0c:84:1f:e0:40:4e:41:79:f0:5b:
+ 13:4b:20:71:b3:44:9b:49:62:f1:16:30:ce:bb:00:
+ 7d:80:b1:a7:d9:3b:13:50:9b:a6:27:a5:4f:c3:96:
+ 7f:4c:fe:21:27
+ ASN1 OID: prime256v1
+ NIST CURVE: P-256
+ X509v3 extensions:
+ X509v3 Subject Key Identifier:
+ 45:88:CC:96:96:00:64:37:B0:BA:23:65:64:64:54:08:
+ 06:6C:56:AD
+ X509v3 Basic Constraints:
+ CA:FALSE
+ 1.3.6.1.5.5.7.1.32:
+ ..highway-test.example.com:9443
+ Signature Algorithm: ecdsa-with-SHA256
+ 30:65:02:30:62:2a:db:be:34:f7:1b:cb:85:de:26:8e:43:00:
+ f9:0d:88:c8:77:a8:dd:3c:08:40:54:bc:ec:3d:b6:dc:70:2b:
+ c3:7f:ca:19:21:9a:a0:ab:c5:51:8e:aa:df:36:de:8b:02:31:
+ 00:b2:5d:59:f8:47:c7:ed:03:97:a8:c0:c7:a8:81:fa:a8:86:
+ ed:67:64:37:51:7a:6e:9c:a3:82:4d:6d:ad:bc:f3:35:9e:9d:
+ 6a:a2:6d:7f:7f:25:1c:03:ef:f0:ba:9b:71
+ -----BEGIN CERTIFICATE-----
+ MIIBrzCCATWgAwIBAgIEHxj+5zAKBggqhkjOPQQDAjAmMSQwIgYDVQQDDBtoaWdo
+ d2F5LXRlc3QuZXhhbXBsZS5jb20gQ0EwIBcNMjEwNDI3MTgyOTMwWhgPMjk5OTEy
+ MzEwMDAwMDBaMBwxGjAYBgNVBAUTETAwLUQwLUU1LUYyLTAwLTAyMFkwEwYHKoZI
+ zj0CAQYIKoZIzj0DAQcDQgAEA6N1Q4ezfMAKmoecrfb0OBMc1AyEH+BATkF58FsT
+ SyBxs0SbSWLxFjDOuwB9gLGn2TsTUJumJ6VPw5Z/TP4hJ6NZMFcwHQYDVR0OBBYE
+ FEWIzJaWAGQ3sLojZWRkVAgGbFatMAkGA1UdEwQCMAAwKwYIKwYBBQUHASAEHxYd
+ aGlnaHdheS10ZXN0LmV4YW1wbGUuY29tOjk0NDMwCgYIKoZIzj0EAwIDaAAwZQIw
+ YirbvjT3G8uF3iaOQwD5DYjId6jdPAhAVLzsPbbccCvDf8oZIZqgq8VRjqrfNt6L
+ AjEAsl1Z+EfH7QOXqMDHqIH6qIbtZ2Q3UXpunKOCTW2tvPM1np1qom1/fyUcA+/w
+ uptx
+ -----END CERTIFICATE-----
+ <CODE ENDS>
+
+C.2. Example Process
+
+ The JSON examples below are wrapped at 60 columns. This results in
+ strings that have newlines in them, which makes them invalid JSON as
+ is. The strings would otherwise be too long, so they need to be
+ unwrapped before processing.
+
+ For readability, the output of the asn1parse has been truncated at 68
+ columns rather than wrapped.
+
+C.2.1. Pledge to Registrar
+
+ As described in Section 5.2, the pledge will sign a pledge voucher-
+ request containing the registrar's public key in the proximity-
+ registrar-cert field. The base64 has been wrapped at 60 characters
+ for presentation reasons.
+
+ <CODE BEGINS> file "vr_00-D0-E5-F2-00-02.b64"
+ MIIGcAYJKoZIhvcNAQcCoIIGYTCCBl0CAQExDTALBglghkgBZQMEAgEwggOJBgkqhkiG
+ 9w0BBwGgggN6BIIDdnsiaWV0Zi12b3VjaGVyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3Nl
+ cnRpb24iOiJwcm94aW1pdHkiLCJjcmVhdGVkLW9uIjoiMjAyMS0wNC0xM1QxNzo0Mzoy
+ My43NDctMDQ6MDAiLCJzZXJpYWwtbnVtYmVyIjoiMDAtRDAtRTUtRjItMDAtMDIiLCJu
+ b25jZSI6Ii1fWEU5eks5cThMbDFxeWxNdExLZWciLCJwcm94aW1pdHktcmVnaXN0cmFy
+ LWNlcnQiOiJNSUlCL0RDQ0FZS2dBd0lCQWdJRVA1aWJVakFLQmdncWhrak9QUVFEQWpC
+ dE1SSXdFQVlLQ1pJbWlaUHlMR1FCR1JZQ1kyRXhHVEFYQmdvSmtpYUprL0lzWkFFWkZn
+ bHpZVzVrWld4dFlXNHhQREE2QmdOVkJBTU1NMlp2ZFc1MFlXbHVMWFJsYzNRdVpYaGhi
+ WEJzWlM1amIyMGdWVzV6ZEhKMWJtY2dSbTkxYm5SaGFXNGdVbTl2ZENCRFFUQWVGdzB5
+ TURBeU1qVXlNVE14TlRSYUZ3MHlNakF5TWpReU1UTXhOVFJhTUZNeEVqQVFCZ29Ka2lh
+ SmsvSXNaQUVaRmdKallURVpNQmNHQ2dtU0pvbVQ4aXhrQVJrV0NYTmhibVJsYkcxaGJq
+ RWlNQ0FHQTFVRUF3d1pabTkxYm5SaGFXNHRkR1Z6ZEM1bGVHRnRjR3hsTG1OdmJUQlpN
+ Qk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKWmxVSEkwdXAvbDNlWmY5dkNC
+ YitsSW5vRU1FZ2M3Um8rWFpDdGpBSTBDRDFmSmZKUi9oSXl5RG1IV3lZaU5GYlJDSDlm
+ eWFyZmt6Z1g0cDB6VGl6cWpLakFvTUJZR0ExVWRKUUVCL3dRTU1Bb0dDQ3NHQVFVRkJ3
+ TWNNQTRHQTFVZER3RUIvd1FFQXdJSGdEQUtCZ2dxaGtqT1BRUURBZ05vQURCbEFqQm1U
+ MkJNVlVnZWxnZjQzUis1eUJLTlJUYUhteVBBdkx2eHl6MG1GVlp2WHgrLzFSd09hZ212
+ RzNhWG1Sa2ovWDRDTVFDOHJNTkJzTG9OcjFMNW5HNTZmd0FkSThoaUFXRzhTOFhBUjVr
+ MUNneDNZVVFCU2dkU2NGY0FkZisrQnc2WXkrVT0ifX2gggGyMIIBrjCCATWgAwIBAgIE
+ DYOv2TAKBggqhkjOPQQDAjAmMSQwIgYDVQQDDBtoaWdod2F5LXRlc3QuZXhhbXBsZS5j
+ b20gQ0EwIBcNMjEwNDEzMjAzNzM5WhgPMjk5OTEyMzEwMDAwMDBaMBwxGjAYBgNVBAUM
+ ETAwLUQwLUU1LUYyLTAwLTAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEA6N1Q4ez
+ fMAKmoecrfb0OBMc1AyEH+BATkF58FsTSyBxs0SbSWLxFjDOuwB9gLGn2TsTUJumJ6VP
+ w5Z/TP4hJ6NZMFcwHQYDVR0OBBYEFEWIzJaWAGQ3sLojZWRkVAgGbFatMAkGA1UdEwQC
+ MAAwKwYIKwYBBQUHASAEHxYdaGlnaHdheS10ZXN0LmV4YW1wbGUuY29tOjk0NDMwCgYI
+ KoZIzj0EAwIDZwAwZAIwTmlG8sXkKGNbwbKQcYMapFbmSbnHHURFUoFuRqvbgYX7FlXp
+ BczfwF2kllNuujigAjAow1kc4r55EmiH+OMEXjBNlWlBSZC5QuJjEf0Jsmxssc+pucjO
+ J4ShqnexMEy7bjAxggEEMIIBAAIBATAuMCYxJDAiBgNVBAMMG2hpZ2h3YXktdGVzdC5l
+ eGFtcGxlLmNvbSBDQQIEDYOv2TALBglghkgBZQMEAgGgaTAYBgkqhkiG9w0BCQMxCwYJ
+ KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMTA0MTMyMTQzMjNaMC8GCSqGSIb3DQEJ
+ BDEiBCBJwhyYibIjeqeR3bOaLURzMlGrc3F2X+kvJ1errtoCtTAKBggqhkjOPQQDAgRH
+ MEUCIQCmYuCE61HFQXH/E16GDOCsVquDtgr+Q/6/Du/9QkzA7gIgf7MFhAIPW2PNwRa2
+ vZFQAKXUbimkiHKzXBA8md0VHbU=
+ <CODE ENDS>
+
+ The ASN1 decoding of the artifact:
+
+ file: examples/vr_00-D0-E5-F2-00-02.b64
+
+ 0:d=0 hl=4 l=1648 cons: SEQUENCE
+ 4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData
+ 15:d=1 hl=4 l=1633 cons: cont [ 0 ]
+ 19:d=2 hl=4 l=1629 cons: SEQUENCE
+ 23:d=3 hl=2 l= 1 prim: INTEGER :01
+ 26:d=3 hl=2 l= 13 cons: SET
+ 28:d=4 hl=2 l= 11 cons: SEQUENCE
+ 30:d=5 hl=2 l= 9 prim: OBJECT :sha256
+ 41:d=3 hl=4 l= 905 cons: SEQUENCE
+ 45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data
+ 56:d=4 hl=4 l= 890 cons: cont [ 0 ]
+ 60:d=5 hl=4 l= 886 prim: OCTET STRING :{"ietf-voucher-request:v
+ 950:d=3 hl=4 l= 434 cons: cont [ 0 ]
+ 954:d=4 hl=4 l= 430 cons: SEQUENCE
+ 958:d=5 hl=4 l= 309 cons: SEQUENCE
+ 962:d=6 hl=2 l= 3 cons: cont [ 0 ]
+ 964:d=7 hl=2 l= 1 prim: INTEGER :02
+ 967:d=6 hl=2 l= 4 prim: INTEGER :0D83AFD9
+ 973:d=6 hl=2 l= 10 cons: SEQUENCE
+ 975:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 985:d=6 hl=2 l= 38 cons: SEQUENCE
+ 987:d=7 hl=2 l= 36 cons: SET
+ 989:d=8 hl=2 l= 34 cons: SEQUENCE
+ 991:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 996:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com
+ 1025:d=6 hl=2 l= 32 cons: SEQUENCE
+ 1027:d=7 hl=2 l= 13 prim: UTCTIME :210413203739Z
+ 1042:d=7 hl=2 l= 15 prim: GENERALIZEDTIME :29991231000000Z
+ 1059:d=6 hl=2 l= 28 cons: SEQUENCE
+ 1061:d=7 hl=2 l= 26 cons: SET
+ 1063:d=8 hl=2 l= 24 cons: SEQUENCE
+ 1065:d=9 hl=2 l= 3 prim: OBJECT :serialNumber
+ 1070:d=9 hl=2 l= 17 prim: UTF8STRING :00-D0-E5-F2-00-02
+ 1089:d=6 hl=2 l= 89 cons: SEQUENCE
+ 1091:d=7 hl=2 l= 19 cons: SEQUENCE
+ 1093:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey
+ 1102:d=8 hl=2 l= 8 prim: OBJECT :prime256v1
+ 1112:d=7 hl=2 l= 66 prim: BIT STRING
+ 1180:d=6 hl=2 l= 89 cons: cont [ 3 ]
+ 1182:d=7 hl=2 l= 87 cons: SEQUENCE
+ 1184:d=8 hl=2 l= 29 cons: SEQUENCE
+ 1186:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Ident
+ 1191:d=9 hl=2 l= 22 prim: OCTET STRING [HEX DUMP]:04144588CC9696
+ 1215:d=8 hl=2 l= 9 cons: SEQUENCE
+ 1217:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints
+ 1222:d=9 hl=2 l= 2 prim: OCTET STRING [HEX DUMP]:3000
+ 1226:d=8 hl=2 l= 43 cons: SEQUENCE
+ 1228:d=9 hl=2 l= 8 prim: OBJECT :1.3.6.1.5.5.7.1.32
+ 1238:d=9 hl=2 l= 31 prim: OCTET STRING [HEX DUMP]:161D6869676877
+ 1271:d=5 hl=2 l= 10 cons: SEQUENCE
+ 1273:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 1283:d=5 hl=2 l= 103 prim: BIT STRING
+ 1388:d=3 hl=4 l= 260 cons: SET
+ 1392:d=4 hl=4 l= 256 cons: SEQUENCE
+ 1396:d=5 hl=2 l= 1 prim: INTEGER :01
+ 1399:d=5 hl=2 l= 46 cons: SEQUENCE
+ 1401:d=6 hl=2 l= 38 cons: SEQUENCE
+ 1403:d=7 hl=2 l= 36 cons: SET
+ 1405:d=8 hl=2 l= 34 cons: SEQUENCE
+ 1407:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 1412:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com
+ 1441:d=6 hl=2 l= 4 prim: INTEGER :0D83AFD9
+ 1447:d=5 hl=2 l= 11 cons: SEQUENCE
+ 1449:d=6 hl=2 l= 9 prim: OBJECT :sha256
+ 1460:d=5 hl=2 l= 105 cons: cont [ 0 ]
+ 1462:d=6 hl=2 l= 24 cons: SEQUENCE
+ 1464:d=7 hl=2 l= 9 prim: OBJECT :contentType
+ 1475:d=7 hl=2 l= 11 cons: SET
+ 1477:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data
+ 1488:d=6 hl=2 l= 28 cons: SEQUENCE
+ 1490:d=7 hl=2 l= 9 prim: OBJECT :signingTime
+ 1501:d=7 hl=2 l= 15 cons: SET
+ 1503:d=8 hl=2 l= 13 prim: UTCTIME :210413214323Z
+ 1518:d=6 hl=2 l= 47 cons: SEQUENCE
+ 1520:d=7 hl=2 l= 9 prim: OBJECT :messageDigest
+ 1531:d=7 hl=2 l= 34 cons: SET
+ 1533:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:49C21C9889B223
+ 1567:d=5 hl=2 l= 10 cons: SEQUENCE
+ 1569:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 1579:d=5 hl=2 l= 71 prim: OCTET STRING [HEX DUMP]:3045022100A662
+
+ The JSON contained in the voucher-request:
+
+ {"ietf-voucher-request:voucher":{"assertion":"proximity","cr
+ eated-on":"2021-04-13T17:43:23.747-04:00","serial-number":"0
+ 0-D0-E5-F2-00-02","nonce":"-_XE9zK9q8Ll1qylMtLKeg","proximit
+ y-registrar-cert":"MIIB/DCCAYKgAwIBAgIEP5ibUjAKBggqhkjOPQQDA
+ jBtMRIwEAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZ
+ WxtYW4xPDA6BgNVBAMMM2ZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zd
+ HJ1bmcgRm91bnRhaW4gUm9vdCBDQTAeFw0yMDAyMjUyMTMxNTRaFw0yMjAyM
+ jQyMTMxNTRaMFMxEjAQBgoJkiaJk/IsZAEZFgJjYTEZMBcGCgmSJomT8ixkA
+ RkWCXNhbmRlbG1hbjEiMCAGA1UEAwwZZm91bnRhaW4tdGVzdC5leGFtcGxlL
+ mNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJZlUHI0up/l3eZf9vCBb
+ +lInoEMEgc7Ro+XZCtjAI0CD1fJfJR/hIyyDmHWyYiNFbRCH9fyarfkzgX4p
+ 0zTizqjKjAoMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMcMA4GA1UdDwEB/wQEA
+ wIHgDAKBggqhkjOPQQDAgNoADBlAjBmT2BMVUgelgf43R+5yBKNRTaHmyPAv
+ Lvxyz0mFVZvXx+/1RwOagmvG3aXmRkj/X4CMQC8rMNBsLoNr1L5nG56fwAdI
+ 8hiAWG8S8XAR5k1Cgx3YUQBSgdScFcAdf++Bw6Yy+U="}}
+
+C.2.2. Registrar to MASA
+
+ As described in Section 5.5, the registrar will sign a registrar
+ voucher-request and will include the pledge's voucher-request in the
+ prior-signed-voucher-request.
+
+ <CODE BEGINS> file "parboiled_vr_00-D0-E5-F2-00-02.b64"
+ MIIPYwYJKoZIhvcNAQcCoIIPVDCCD1ACAQExDTALBglghkgBZQMEAgEwggl4BgkqhkiG
+ 9w0BBwGggglpBIIJZXsiaWV0Zi12b3VjaGVyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3Nl
+ cnRpb24iOiJwcm94aW1pdHkiLCJjcmVhdGVkLW9uIjoiMjAyMS0wNC0xM1QyMTo0Mzoy
+ My43ODdaIiwic2VyaWFsLW51bWJlciI6IjAwLUQwLUU1LUYyLTAwLTAyIiwibm9uY2Ui
+ OiItX1hFOXpLOXE4TGwxcXlsTXRMS2VnIiwicHJpb3Itc2lnbmVkLXZvdWNoZXItcmVx
+ dWVzdCI6Ik1JSUdjQVlKS29aSWh2Y05BUWNDb0lJR1lUQ0NCbDBDQVFFeERUQUxCZ2xn
+ aGtnQlpRTUVBZ0V3Z2dPSkJna3Foa2lHOXcwQkJ3R2dnZ042QklJRGRuc2lhV1YwWmkx
+ MmIzVmphR1Z5TFhKbGNYVmxjM1E2ZG05MVkyaGxjaUk2ZXlKaGMzTmxjblJwYjI0aU9p
+ SndjbTk0YVcxcGRIa2lMQ0pqY21WaGRHVmtMVzl1SWpvaU1qQXlNUzB3TkMweE0xUXhO
+ em8wTXpveU15NDNORGN0TURRNk1EQWlMQ0p6WlhKcFlXd3RiblZ0WW1WeUlqb2lNREF0
+ UkRBdFJUVXRSakl0TURBdE1ESWlMQ0p1YjI1alpTSTZJaTFmV0VVNWVrczVjVGhNYkRG
+ eGVXeE5kRXhMWldjaUxDSndjbTk0YVcxcGRIa3RjbVZuYVhOMGNtRnlMV05sY25RaU9p
+ Sk5TVWxDTDBSRFEwRlpTMmRCZDBsQ1FXZEpSVkExYVdKVmFrRkxRbWRuY1docmFrOVFV
+ VkZFUVdwQ2RFMVNTWGRGUVZsTFExcEpiV2xhVUhsTVIxRkNSMUpaUTFreVJYaEhWRUZZ
+ UW1kdlNtdHBZVXByTDBseldrRkZXa1puYkhwWlZ6VnJXbGQ0ZEZsWE5IaFFSRUUyUW1k
+ T1ZrSkJUVTFOTWxwMlpGYzFNRmxYYkhWTVdGSnNZek5SZFZwWWFHaGlXRUp6V2xNMWFt
+ SXlNR2RXVnpWNlpFaEtNV0p0WTJkU2JUa3hZbTVTYUdGWE5HZFZiVGwyWkVOQ1JGRlVR
+ V1ZHZHpCNVRVUkJlVTFxVlhsTlZFMTRUbFJTWVVaM01IbE5ha0Y1VFdwUmVVMVVUWGhP
+ VkZKaFRVWk5lRVZxUVZGQ1oyOUthMmxoU21zdlNYTmFRVVZhUm1kS2FsbFVSVnBOUW1O
+ SFEyZHRVMHB2YlZRNGFYaHJRVkpyVjBOWVRtaGliVkpzWWtjeGFHSnFSV2xOUTBGSFFU
+ RlZSVUYzZDFwYWJUa3hZbTVTYUdGWE5IUmtSMVo2WkVNMWJHVkhSblJqUjNoc1RHMU9k
+ bUpVUWxwTlFrMUhRbmx4UjFOTk5EbEJaMFZIUTBOeFIxTk5ORGxCZDBWSVFUQkpRVUpL
+ V214VlNFa3dkWEF2YkRObFdtWTVka05DWWl0c1NXNXZSVTFGWjJNM1VtOHJXRnBEZEdw
+ QlNUQkRSREZtU21aS1VpOW9TWGw1UkcxSVYzbFphVTVHWWxKRFNEbG1lV0Z5Wm10Nlox
+ ZzBjREI2VkdsNmNXcExha0Z2VFVKWlIwRXhWV1JLVVVWQ0wzZFJUVTFCYjBkRFEzTkhR
+ VkZWUmtKM1RXTk5RVFJIUVRGVlpFUjNSVUl2ZDFGRlFYZEpTR2RFUVV0Q1oyZHhhR3Rx
+ VDFCUlVVUkJaMDV2UVVSQ2JFRnFRbTFVTWtKTlZsVm5aV3huWmpRelVpczFlVUpMVGxK
+ VVlVaHRlVkJCZGt4MmVIbDZNRzFHVmxwMldIZ3JMekZTZDA5aFoyMTJSek5oV0cxU2Ey
+ b3ZXRFJEVFZGRE9ISk5Ua0p6VEc5T2NqRk1OVzVITlRabWQwRmtTVGhvYVVGWFJ6aFRP
+ RmhCVWpWck1VTm5lRE5aVlZGQ1UyZGtVMk5HWTBGa1ppc3JRbmMyV1hrclZUMGlmWDJn
+ Z2dHeU1JSUJyakNDQVRXZ0F3SUJBZ0lFRFlPdjJUQUtCZ2dxaGtqT1BRUURBakFtTVNR
+ d0lnWURWUVFEREJ0b2FXZG9kMkY1TFhSbGMzUXVaWGhoYlhCc1pTNWpiMjBnUTBFd0lC
+ Y05NakV3TkRFek1qQXpOek01V2hnUE1qazVPVEV5TXpFd01EQXdNREJhTUJ3eEdqQVlC
+ Z05WQkFVTUVUQXdMVVF3TFVVMUxVWXlMVEF3TFRBeU1Ga3dFd1lIS29aSXpqMENBUVlJ
+ S29aSXpqMERBUWNEUWdBRUE2TjFRNGV6Zk1BS21vZWNyZmIwT0JNYzFBeUVIK0JBVGtG
+ NThGc1RTeUJ4czBTYlNXTHhGakRPdXdCOWdMR24yVHNUVUp1bUo2VlB3NVovVFA0aEo2
+ TlpNRmN3SFFZRFZSME9CQllFRkVXSXpKYVdBR1Ezc0xvalpXUmtWQWdHYkZhdE1Ba0dB
+ MVVkRXdRQ01BQXdLd1lJS3dZQkJRVUhBU0FFSHhZZGFHbG5hSGRoZVMxMFpYTjBMbVY0
+ WVcxd2JHVXVZMjl0T2prME5ETXdDZ1lJS29aSXpqMEVBd0lEWndBd1pBSXdUbWxHOHNY
+ a0tHTmJ3YktRY1lNYXBGYm1TYm5ISFVSRlVvRnVScXZiZ1lYN0ZsWHBCY3pmd0Yya2xs
+ TnV1amlnQWpBb3cxa2M0cjU1RW1pSCtPTUVYakJObFdsQlNaQzVRdUpqRWYwSnNteHNz
+ YytwdWNqT0o0U2hxbmV4TUV5N2JqQXhnZ0VFTUlJQkFBSUJBVEF1TUNZeEpEQWlCZ05W
+ QkFNTUcyaHBaMmgzWVhrdGRHVnpkQzVsZUdGdGNHeGxMbU52YlNCRFFRSUVEWU92MlRB
+ TEJnbGdoa2dCWlFNRUFnR2dhVEFZQmdrcWhraUc5dzBCQ1FNeEN3WUpLb1pJaHZjTkFR
+ Y0JNQndHQ1NxR1NJYjNEUUVKQlRFUEZ3MHlNVEEwTVRNeU1UUXpNak5hTUM4R0NTcUdT
+ SWIzRFFFSkJERWlCQ0JKd2h5WWliSWplcWVSM2JPYUxVUnpNbEdyYzNGMlgra3ZKMWVy
+ cnRvQ3RUQUtCZ2dxaGtqT1BRUURBZ1JITUVVQ0lRQ21ZdUNFNjFIRlFYSC9FMTZHRE9D
+ c1ZxdUR0Z3IrUS82L0R1LzlRa3pBN2dJZ2Y3TUZoQUlQVzJQTndSYTJ2WkZRQUtYVWJp
+ bWtpSEt6WEJBOG1kMFZIYlU9In19oIIEbzCCAfwwggGCoAMCAQICBD+Ym1IwCgYIKoZI
+ zj0EAwIwbTESMBAGCgmSJomT8ixkARkWAmNhMRkwFwYKCZImiZPyLGQBGRYJc2FuZGVs
+ bWFuMTwwOgYDVQQDDDNmb3VudGFpbi10ZXN0LmV4YW1wbGUuY29tIFVuc3RydW5nIEZv
+ dW50YWluIFJvb3QgQ0EwHhcNMjAwMjI1MjEzMTU0WhcNMjIwMjI0MjEzMTU0WjBTMRIw
+ EAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZWxtYW4xIjAgBgNV
+ BAMMGWZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMB
+ BwNCAASWZVByNLqf5d3mX/bwgW/pSJ6BDBIHO0aPl2QrYwCNAg9XyXyUf4SMsg5h1smI
+ jRW0Qh/X8mq35M4F+KdM04s6oyowKDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDHDAOBgNV
+ HQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDaAAwZQIwZk9gTFVIHpYH+N0fucgSjUU2h5sj
+ wLy78cs9JhVWb18fv9UcDmoJrxt2l5kZI/1+AjEAvKzDQbC6Da9S+Zxuen8AHSPIYgFh
+ vEvFwEeZNQoMd2FEAUoHUnBXAHX/vgcOmMvlMIICazCCAfKgAwIBAgIEKWsGWTAKBggq
+ hkjOPQQDAjBtMRIwEAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5k
+ ZWxtYW4xPDA6BgNVBAMMM2ZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zdHJ1bmcg
+ Rm91bnRhaW4gUm9vdCBDQTAeFw0yMDAyMjUyMTMxNDVaFw0yMjAyMjQyMTMxNDVaMG0x
+ EjAQBgoJkiaJk/IsZAEZFgJjYTEZMBcGCgmSJomT8ixkARkWCXNhbmRlbG1hbjE8MDoG
+ A1UEAwwzZm91bnRhaW4tdGVzdC5leGFtcGxlLmNvbSBVbnN0cnVuZyBGb3VudGFpbiBS
+ b290IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEG39ZuhfDGrxmjYxs4MP6MXEPZfYi
+ kb23VoAH29+4eqVFTXmKRpcZWZYxsY9pfTK+PMg+W2O1Rvao1W+b+cDz07kUP3JHUaR2
+ 3dLwv/XKjzABf/jCX9P1IANEi4vyB2y0o2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
+ DwEB/wQEAwIBBjAdBgNVHQ4EFgQUuaX2yxHhB6RJLKcIxnwQvIezdCYwHwYDVR0jBBgw
+ FoAUuaX2yxHhB6RJLKcIxnwQvIezdCYwCgYIKoZIzj0EAwIDZwAwZAIwIIMGzo2YpFR6
+ ZkxKOnDCUjZaUo1ZfSCbKmkUWIc42FV53f0pOJUekZN2tPVmKUS0AjBvOPmvEu0w1YUp
+ fLEWWL1nkUPEDTD52BysLwbdvNUGQiyEogTqAqRfF1Em+9kv0lwxggFLMIIBRwIBATB1
+ MG0xEjAQBgoJkiaJk/IsZAEZFgJjYTEZMBcGCgmSJomT8ixkARkWCXNhbmRlbG1hbjE8
+ MDoGA1UEAwwzZm91bnRhaW4tdGVzdC5leGFtcGxlLmNvbSBVbnN0cnVuZyBGb3VudGFp
+ biBSb290IENBAgQ/mJtSMAsGCWCGSAFlAwQCAaBpMBgGCSqGSIb3DQEJAzELBgkqhkiG
+ 9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIxMDQxMzIxNDMyM1owLwYJKoZIhvcNAQkEMSIE
+ IEnOrdWjlG70K74IhCJ7UXi+wPS+r2C8DFEqjabGP+G8MAoGCCqGSM49BAMCBEcwRQIh
+ AMhO3M+tSWb2wKTBOXPArN+XvjSzAhaQA/uLj3qhPwi/AiBDDthf6mjMuirqXE0yjMif
+ C2UY9oNUFF9Nl0wEQpBBAA==
+ <CODE ENDS>
+
+ The ASN1 decoding of the artifact:
+
+ file: examples/parboiled_vr_00_D0-E5-02-00-2D.b64
+
+ 0:d=0 hl=4 l=3939 cons: SEQUENCE
+ 4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData
+ 15:d=1 hl=4 l=3924 cons: cont [ 0 ]
+ 19:d=2 hl=4 l=3920 cons: SEQUENCE
+ 23:d=3 hl=2 l= 1 prim: INTEGER :01
+ 26:d=3 hl=2 l= 13 cons: SET
+ 28:d=4 hl=2 l= 11 cons: SEQUENCE
+ 30:d=5 hl=2 l= 9 prim: OBJECT :sha256
+ 41:d=3 hl=4 l=2424 cons: SEQUENCE
+ 45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data
+ 56:d=4 hl=4 l=2409 cons: cont [ 0 ]
+ 60:d=5 hl=4 l=2405 prim: OCTET STRING :{"ietf-voucher-request:v
+ 2469:d=3 hl=4 l=1135 cons: cont [ 0 ]
+ 2473:d=4 hl=4 l= 508 cons: SEQUENCE
+ 2477:d=5 hl=4 l= 386 cons: SEQUENCE
+ 2481:d=6 hl=2 l= 3 cons: cont [ 0 ]
+ 2483:d=7 hl=2 l= 1 prim: INTEGER :02
+ 2486:d=6 hl=2 l= 4 prim: INTEGER :3F989B52
+ 2492:d=6 hl=2 l= 10 cons: SEQUENCE
+ 2494:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 2504:d=6 hl=2 l= 109 cons: SEQUENCE
+ 2506:d=7 hl=2 l= 18 cons: SET
+ 2508:d=8 hl=2 l= 16 cons: SEQUENCE
+ 2510:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 2522:d=9 hl=2 l= 2 prim: IA5STRING :ca
+ 2526:d=7 hl=2 l= 25 cons: SET
+ 2528:d=8 hl=2 l= 23 cons: SEQUENCE
+ 2530:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 2542:d=9 hl=2 l= 9 prim: IA5STRING :sandelman
+ 2553:d=7 hl=2 l= 60 cons: SET
+ 2555:d=8 hl=2 l= 58 cons: SEQUENCE
+ 2557:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 2562:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co
+ 2615:d=6 hl=2 l= 30 cons: SEQUENCE
+ 2617:d=7 hl=2 l= 13 prim: UTCTIME :200225213154Z
+ 2632:d=7 hl=2 l= 13 prim: UTCTIME :220224213154Z
+ 2647:d=6 hl=2 l= 83 cons: SEQUENCE
+ 2649:d=7 hl=2 l= 18 cons: SET
+ 2651:d=8 hl=2 l= 16 cons: SEQUENCE
+ 2653:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 2665:d=9 hl=2 l= 2 prim: IA5STRING :ca
+ 2669:d=7 hl=2 l= 25 cons: SET
+ 2671:d=8 hl=2 l= 23 cons: SEQUENCE
+ 2673:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 2685:d=9 hl=2 l= 9 prim: IA5STRING :sandelman
+ 2696:d=7 hl=2 l= 34 cons: SET
+ 2698:d=8 hl=2 l= 32 cons: SEQUENCE
+ 2700:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 2705:d=9 hl=2 l= 25 prim: UTF8STRING :fountain-test.example.co
+ 2732:d=6 hl=2 l= 89 cons: SEQUENCE
+ 2734:d=7 hl=2 l= 19 cons: SEQUENCE
+ 2736:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey
+ 2745:d=8 hl=2 l= 8 prim: OBJECT :prime256v1
+ 2755:d=7 hl=2 l= 66 prim: BIT STRING
+ 2823:d=6 hl=2 l= 42 cons: cont [ 3 ]
+ 2825:d=7 hl=2 l= 40 cons: SEQUENCE
+ 2827:d=8 hl=2 l= 22 cons: SEQUENCE
+ 2829:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Extended Key Usag
+ 2834:d=9 hl=2 l= 1 prim: BOOLEAN :255
+ 2837:d=9 hl=2 l= 12 prim: OCTET STRING [HEX DUMP]:300A06082B0601
+ 2851:d=8 hl=2 l= 14 cons: SEQUENCE
+ 2853:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Key Usage
+ 2858:d=9 hl=2 l= 1 prim: BOOLEAN :255
+ 2861:d=9 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:03020780
+ 2867:d=5 hl=2 l= 10 cons: SEQUENCE
+ 2869:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 2879:d=5 hl=2 l= 104 prim: BIT STRING
+ 2985:d=4 hl=4 l= 619 cons: SEQUENCE
+ 2989:d=5 hl=4 l= 498 cons: SEQUENCE
+ 2993:d=6 hl=2 l= 3 cons: cont [ 0 ]
+ 2995:d=7 hl=2 l= 1 prim: INTEGER :02
+ 2998:d=6 hl=2 l= 4 prim: INTEGER :296B0659
+ 3004:d=6 hl=2 l= 10 cons: SEQUENCE
+ 3006:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 3016:d=6 hl=2 l= 109 cons: SEQUENCE
+ 3018:d=7 hl=2 l= 18 cons: SET
+ 3020:d=8 hl=2 l= 16 cons: SEQUENCE
+ 3022:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 3034:d=9 hl=2 l= 2 prim: IA5STRING :ca
+ 3038:d=7 hl=2 l= 25 cons: SET
+ 3040:d=8 hl=2 l= 23 cons: SEQUENCE
+ 3042:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 3054:d=9 hl=2 l= 9 prim: IA5STRING :sandelman
+ 3065:d=7 hl=2 l= 60 cons: SET
+ 3067:d=8 hl=2 l= 58 cons: SEQUENCE
+ 3069:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 3074:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co
+ 3127:d=6 hl=2 l= 30 cons: SEQUENCE
+ 3129:d=7 hl=2 l= 13 prim: UTCTIME :200225213145Z
+ 3144:d=7 hl=2 l= 13 prim: UTCTIME :220224213145Z
+ 3159:d=6 hl=2 l= 109 cons: SEQUENCE
+ 3161:d=7 hl=2 l= 18 cons: SET
+ 3163:d=8 hl=2 l= 16 cons: SEQUENCE
+ 3165:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 3177:d=9 hl=2 l= 2 prim: IA5STRING :ca
+ 3181:d=7 hl=2 l= 25 cons: SET
+ 3183:d=8 hl=2 l= 23 cons: SEQUENCE
+ 3185:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 3197:d=9 hl=2 l= 9 prim: IA5STRING :sandelman
+ 3208:d=7 hl=2 l= 60 cons: SET
+ 3210:d=8 hl=2 l= 58 cons: SEQUENCE
+ 3212:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 3217:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co
+ 3270:d=6 hl=2 l= 118 cons: SEQUENCE
+ 3272:d=7 hl=2 l= 16 cons: SEQUENCE
+ 3274:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey
+ 3283:d=8 hl=2 l= 5 prim: OBJECT :secp384r1
+ 3290:d=7 hl=2 l= 98 prim: BIT STRING
+ 3390:d=6 hl=2 l= 99 cons: cont [ 3 ]
+ 3392:d=7 hl=2 l= 97 cons: SEQUENCE
+ 3394:d=8 hl=2 l= 15 cons: SEQUENCE
+ 3396:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints
+ 3401:d=9 hl=2 l= 1 prim: BOOLEAN :255
+ 3404:d=9 hl=2 l= 5 prim: OCTET STRING [HEX DUMP]:30030101FF
+ 3411:d=8 hl=2 l= 14 cons: SEQUENCE
+ 3413:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Key Usage
+ 3418:d=9 hl=2 l= 1 prim: BOOLEAN :255
+ 3421:d=9 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:03020106
+ 3427:d=8 hl=2 l= 29 cons: SEQUENCE
+ 3429:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Ident
+ 3434:d=9 hl=2 l= 22 prim: OCTET STRING [HEX DUMP]:0414B9A5F6CB11
+ 3458:d=8 hl=2 l= 31 cons: SEQUENCE
+ 3460:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Authority Key Ide
+ 3465:d=9 hl=2 l= 24 prim: OCTET STRING [HEX DUMP]:30168014B9A5F6
+ 3491:d=5 hl=2 l= 10 cons: SEQUENCE
+ 3493:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 3503:d=5 hl=2 l= 103 prim: BIT STRING
+ 3608:d=3 hl=4 l= 331 cons: SET
+ 3612:d=4 hl=4 l= 327 cons: SEQUENCE
+ 3616:d=5 hl=2 l= 1 prim: INTEGER :01
+ 3619:d=5 hl=2 l= 117 cons: SEQUENCE
+ 3621:d=6 hl=2 l= 109 cons: SEQUENCE
+ 3623:d=7 hl=2 l= 18 cons: SET
+ 3625:d=8 hl=2 l= 16 cons: SEQUENCE
+ 3627:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 3639:d=9 hl=2 l= 2 prim: IA5STRING :ca
+ 3643:d=7 hl=2 l= 25 cons: SET
+ 3645:d=8 hl=2 l= 23 cons: SEQUENCE
+ 3647:d=9 hl=2 l= 10 prim: OBJECT :domainComponent
+ 3659:d=9 hl=2 l= 9 prim: IA5STRING :sandelman
+ 3670:d=7 hl=2 l= 60 cons: SET
+ 3672:d=8 hl=2 l= 58 cons: SEQUENCE
+ 3674:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 3679:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co
+ 3732:d=6 hl=2 l= 4 prim: INTEGER :3F989B52
+ 3738:d=5 hl=2 l= 11 cons: SEQUENCE
+ 3740:d=6 hl=2 l= 9 prim: OBJECT :sha256
+ 3751:d=5 hl=2 l= 105 cons: cont [ 0 ]
+ 3753:d=6 hl=2 l= 24 cons: SEQUENCE
+ 3755:d=7 hl=2 l= 9 prim: OBJECT :contentType
+ 3766:d=7 hl=2 l= 11 cons: SET
+ 3768:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data
+ 3779:d=6 hl=2 l= 28 cons: SEQUENCE
+ 3781:d=7 hl=2 l= 9 prim: OBJECT :signingTime
+ 3792:d=7 hl=2 l= 15 cons: SET
+ 3794:d=8 hl=2 l= 13 prim: UTCTIME :210413214323Z
+ 3809:d=6 hl=2 l= 47 cons: SEQUENCE
+ 3811:d=7 hl=2 l= 9 prim: OBJECT :messageDigest
+ 3822:d=7 hl=2 l= 34 cons: SET
+ 3824:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:49CEADD5A3946E
+ 3858:d=5 hl=2 l= 10 cons: SEQUENCE
+ 3860:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 3870:d=5 hl=2 l= 71 prim: OCTET STRING [HEX DUMP]:3045022100C84E
+
+ The JSON contained in the voucher-request. Note that the previous
+ voucher-request is in the prior-signed-voucher-request attribute.
+
+ {"ietf-voucher-request:voucher":{"assertion":"proximity","cr
+ eated-on":"2021-04-13T21:43:23.787Z","serial-number":"00-D0-
+ E5-F2-00-02","nonce":"-_XE9zK9q8Ll1qylMtLKeg","prior-signed-
+ voucher-request":"MIIGcAYJKoZIhvcNAQcCoIIGYTCCBl0CAQExDTALBg
+ lghkgBZQMEAgEwggOJBgkqhkiG9w0BBwGgggN6BIIDdnsiaWV0Zi12b3VjaG
+ VyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3NlcnRpb24iOiJwcm94aW1pdHkiLC
+ JjcmVhdGVkLW9uIjoiMjAyMS0wNC0xM1QxNzo0MzoyMy43NDctMDQ6MDAiLC
+ JzZXJpYWwtbnVtYmVyIjoiMDAtRDAtRTUtRjItMDAtMDIiLCJub25jZSI6Ii
+ 1fWEU5eks5cThMbDFxeWxNdExLZWciLCJwcm94aW1pdHktcmVnaXN0cmFyLW
+ NlcnQiOiJNSUlCL0RDQ0FZS2dBd0lCQWdJRVA1aWJVakFLQmdncWhrak9QUV
+ FEQWpCdE1SSXdFQVlLQ1pJbWlaUHlMR1FCR1JZQ1kyRXhHVEFYQmdvSmtpYU
+ prL0lzWkFFWkZnbHpZVzVrWld4dFlXNHhQREE2QmdOVkJBTU1NMlp2ZFc1MF
+ lXbHVMWFJsYzNRdVpYaGhiWEJzWlM1amIyMGdWVzV6ZEhKMWJtY2dSbTkxYm
+ 5SaGFXNGdVbTl2ZENCRFFUQWVGdzB5TURBeU1qVXlNVE14TlRSYUZ3MHlNak
+ F5TWpReU1UTXhOVFJhTUZNeEVqQVFCZ29Ka2lhSmsvSXNaQUVaRmdKallURV
+ pNQmNHQ2dtU0pvbVQ4aXhrQVJrV0NYTmhibVJsYkcxaGJqRWlNQ0FHQTFVRU
+ F3d1pabTkxYm5SaGFXNHRkR1Z6ZEM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQn
+ lxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKWmxVSEkwdXAvbDNlWmY5dk
+ NCYitsSW5vRU1FZ2M3Um8rWFpDdGpBSTBDRDFmSmZKUi9oSXl5RG1IV3lZaU
+ 5GYlJDSDlmeWFyZmt6Z1g0cDB6VGl6cWpLakFvTUJZR0ExVWRKUUVCL3dRTU
+ 1Bb0dDQ3NHQVFVRkJ3TWNNQTRHQTFVZER3RUIvd1FFQXdJSGdEQUtCZ2dxaG
+ tqT1BRUURBZ05vQURCbEFqQm1UMkJNVlVnZWxnZjQzUis1eUJLTlJUYUhteV
+ BBdkx2eHl6MG1GVlp2WHgrLzFSd09hZ212RzNhWG1Sa2ovWDRDTVFDOHJNTk
+ JzTG9OcjFMNW5HNTZmd0FkSThoaUFXRzhTOFhBUjVrMUNneDNZVVFCU2dkU2
+ NGY0FkZisrQnc2WXkrVT0ifX2gggGyMIIBrjCCATWgAwIBAgIEDYOv2TAKBg
+ gqhkjOPQQDAjAmMSQwIgYDVQQDDBtoaWdod2F5LXRlc3QuZXhhbXBsZS5jb2
+ 0gQ0EwIBcNMjEwNDEzMjAzNzM5WhgPMjk5OTEyMzEwMDAwMDBaMBwxGjAYBg
+ NVBAUMETAwLUQwLUU1LUYyLTAwLTAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQ
+ cDQgAEA6N1Q4ezfMAKmoecrfb0OBMc1AyEH+BATkF58FsTSyBxs0SbSWLxFj
+ DOuwB9gLGn2TsTUJumJ6VPw5Z/TP4hJ6NZMFcwHQYDVR0OBBYEFEWIzJaWAG
+ Q3sLojZWRkVAgGbFatMAkGA1UdEwQCMAAwKwYIKwYBBQUHASAEHxYdaGlnaH
+ dheS10ZXN0LmV4YW1wbGUuY29tOjk0NDMwCgYIKoZIzj0EAwIDZwAwZAIwTm
+ lG8sXkKGNbwbKQcYMapFbmSbnHHURFUoFuRqvbgYX7FlXpBczfwF2kllNuuj
+ igAjAow1kc4r55EmiH+OMEXjBNlWlBSZC5QuJjEf0Jsmxssc+pucjOJ4Shqn
+ exMEy7bjAxggEEMIIBAAIBATAuMCYxJDAiBgNVBAMMG2hpZ2h3YXktdGVzdC
+ 5leGFtcGxlLmNvbSBDQQIEDYOv2TALBglghkgBZQMEAgGgaTAYBgkqhkiG9w
+ 0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMTA0MTMyMTQzMj
+ NaMC8GCSqGSIb3DQEJBDEiBCBJwhyYibIjeqeR3bOaLURzMlGrc3F2X+kvJ1
+ errtoCtTAKBggqhkjOPQQDAgRHMEUCIQCmYuCE61HFQXH/E16GDOCsVquDtg
+ r+Q/6/Du/9QkzA7gIgf7MFhAIPW2PNwRa2vZFQAKXUbimkiHKzXBA8md0VHb
+ U="}}
+
+C.2.3. MASA to Registrar
+
+ The MASA will return a voucher to the registrar, which is to be
+ relayed to the pledge.
+
+ <CODE BEGINS> file "voucher_00-D0-E5-F2-00-02.b64"
+ MIIGIgYJKoZIhvcNAQcCoIIGEzCCBg8CAQExDTALBglghkgBZQMEAgEwggN4BgkqhkiG
+ 9w0BBwGgggNpBIIDZXsiaWV0Zi12b3VjaGVyOnZvdWNoZXIiOnsiYXNzZXJ0aW9uIjoi
+ bG9nZ2VkIiwiY3JlYXRlZC1vbiI6IjIwMjEtMDQtMTNUMTc6NDM6MjQuNTg5LTA0OjAw
+ Iiwic2VyaWFsLW51bWJlciI6IjAwLUQwLUU1LUYyLTAwLTAyIiwibm9uY2UiOiItX1hF
+ OXpLOXE4TGwxcXlsTXRMS2VnIiwicGlubmVkLWRvbWFpbi1jZXJ0IjoiTUlJQi9EQ0NB
+ WUtnQXdJQkFnSUVQNWliVWpBS0JnZ3Foa2pPUFFRREFqQnRNUkl3RUFZS0NaSW1pWlB5
+ TEdRQkdSWUNZMkV4R1RBWEJnb0praWFKay9Jc1pBRVpGZ2x6WVc1a1pXeHRZVzR4UERB
+ NkJnTlZCQU1NTTJadmRXNTBZV2x1TFhSbGMzUXVaWGhoYlhCc1pTNWpiMjBnVlc1emRI
+ SjFibWNnUm05MWJuUmhhVzRnVW05dmRDQkRRVEFlRncweU1EQXlNalV5TVRNeE5UUmFG
+ dzB5TWpBeU1qUXlNVE14TlRSYU1GTXhFakFRQmdvSmtpYUprL0lzWkFFWkZnSmpZVEVa
+ TUJjR0NnbVNKb21UOGl4a0FSa1dDWE5oYm1SbGJHMWhiakVpTUNBR0ExVUVBd3daWm05
+ MWJuUmhhVzR0ZEdWemRDNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0ND
+ cUdTTTQ5QXdFSEEwSUFCSlpsVUhJMHVwL2wzZVpmOXZDQmIrbElub0VNRWdjN1JvK1ha
+ Q3RqQUkwQ0QxZkpmSlIvaEl5eURtSFd5WWlORmJSQ0g5ZnlhcmZremdYNHAwelRpenFq
+ S2pBb01CWUdBMVVkSlFFQi93UU1NQW9HQ0NzR0FRVUZCd01jTUE0R0ExVWREd0VCL3dR
+ RUF3SUhnREFLQmdncWhrak9QUVFEQWdOb0FEQmxBakJtVDJCTVZVZ2VsZ2Y0M1IrNXlC
+ S05SVGFIbXlQQXZMdnh5ejBtRlZadlh4Ky8xUndPYWdtdkczYVhtUmtqL1g0Q01RQzhy
+ TU5Cc0xvTnIxTDVuRzU2ZndBZEk4aGlBV0c4UzhYQVI1azFDZ3gzWVVRQlNnZFNjRmNB
+ ZGYrK0J3Nll5K1U9In19oIIBdDCCAXAwgfagAwIBAgIEC4cKMTAKBggqhkjOPQQDAjAm
+ MSQwIgYDVQQDDBtoaWdod2F5LXRlc3QuZXhhbXBsZS5jb20gQ0EwHhcNMjEwNDEzMjE0
+ MDE2WhcNMjMwNDEzMjE0MDE2WjAoMSYwJAYDVQQDDB1oaWdod2F5LXRlc3QuZXhhbXBs
+ ZS5jb20gTUFTQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKoEFaNEueJE+Mn5Gwcb
+ pnRznB66bKmzqTCpojJZ96AdRwFtuTCVfoKouLTBX0idIhMLfJLM31lyuKy4CUtpp6Wj
+ EDAOMAwGA1UdEwEB/wQCMAAwCgYIKoZIzj0EAwIDaQAwZgIxAK7LYS3UXI1uhqoLBh3G
+ 02C6MnM2JdMjhUmHHM6UI3kankFVJB0VIqFIuwrAqzwTcwIxAIY8Z7OVouLl+a35HZzB
+ NDJ49c/q1UcDnwC/0FnLUcKYBIEkilETULF1si+dqLT0uTGCAQUwggEBAgEBMC4wJjEk
+ MCIGA1UEAwwbaGlnaHdheS10ZXN0LmV4YW1wbGUuY29tIENBAgQLhwoxMAsGCWCGSAFl
+ AwQCAaBpMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIx
+ MDQxMzIxNDMyNFowLwYJKoZIhvcNAQkEMSIEIFUUjg4WYVO+MpX122Qfk/7zm/G6/B59
+ HD/xrVR0lGIjMAoGCCqGSM49BAMCBEgwRgIhAOhUfxbH2dwpB2BrTDcsYSjRkCCk/WE6
+ Mdt+y4z5KD9IAiEAphwdIUb40A0noNIUpH7N2lTyAFZgyn1lNHTteY9DmYI=
+ <CODE ENDS>
+
+ The ASN1 decoding of the artifact:
+
+ file: examples/voucher_00-D0-E5-F2-00-02.b64
+
+ 0:d=0 hl=4 l=1570 cons: SEQUENCE
+ 4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData
+ 15:d=1 hl=4 l=1555 cons: cont [ 0 ]
+ 19:d=2 hl=4 l=1551 cons: SEQUENCE
+ 23:d=3 hl=2 l= 1 prim: INTEGER :01
+ 26:d=3 hl=2 l= 13 cons: SET
+ 28:d=4 hl=2 l= 11 cons: SEQUENCE
+ 30:d=5 hl=2 l= 9 prim: OBJECT :sha256
+ 41:d=3 hl=4 l= 888 cons: SEQUENCE
+ 45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data
+ 56:d=4 hl=4 l= 873 cons: cont [ 0 ]
+ 60:d=5 hl=4 l= 869 prim: OCTET STRING :{"ietf-voucher:voucher":
+ 933:d=3 hl=4 l= 372 cons: cont [ 0 ]
+ 937:d=4 hl=4 l= 368 cons: SEQUENCE
+ 941:d=5 hl=3 l= 246 cons: SEQUENCE
+ 944:d=6 hl=2 l= 3 cons: cont [ 0 ]
+ 946:d=7 hl=2 l= 1 prim: INTEGER :02
+ 949:d=6 hl=2 l= 4 prim: INTEGER :0B870A31
+ 955:d=6 hl=2 l= 10 cons: SEQUENCE
+ 957:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 967:d=6 hl=2 l= 38 cons: SEQUENCE
+ 969:d=7 hl=2 l= 36 cons: SET
+ 971:d=8 hl=2 l= 34 cons: SEQUENCE
+ 973:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 978:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com
+ 1007:d=6 hl=2 l= 30 cons: SEQUENCE
+ 1009:d=7 hl=2 l= 13 prim: UTCTIME :210413214016Z
+ 1024:d=7 hl=2 l= 13 prim: UTCTIME :230413214016Z
+ 1039:d=6 hl=2 l= 40 cons: SEQUENCE
+ 1041:d=7 hl=2 l= 38 cons: SET
+ 1043:d=8 hl=2 l= 36 cons: SEQUENCE
+ 1045:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 1050:d=9 hl=2 l= 29 prim: UTF8STRING :highway-test.example.com
+ 1081:d=6 hl=2 l= 89 cons: SEQUENCE
+ 1083:d=7 hl=2 l= 19 cons: SEQUENCE
+ 1085:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey
+ 1094:d=8 hl=2 l= 8 prim: OBJECT :prime256v1
+ 1104:d=7 hl=2 l= 66 prim: BIT STRING
+ 1172:d=6 hl=2 l= 16 cons: cont [ 3 ]
+ 1174:d=7 hl=2 l= 14 cons: SEQUENCE
+ 1176:d=8 hl=2 l= 12 cons: SEQUENCE
+ 1178:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints
+ 1183:d=9 hl=2 l= 1 prim: BOOLEAN :255
+ 1186:d=9 hl=2 l= 2 prim: OCTET STRING [HEX DUMP]:3000
+ 1190:d=5 hl=2 l= 10 cons: SEQUENCE
+ 1192:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 1202:d=5 hl=2 l= 105 prim: BIT STRING
+ 1309:d=3 hl=4 l= 261 cons: SET
+ 1313:d=4 hl=4 l= 257 cons: SEQUENCE
+ 1317:d=5 hl=2 l= 1 prim: INTEGER :01
+ 1320:d=5 hl=2 l= 46 cons: SEQUENCE
+ 1322:d=6 hl=2 l= 38 cons: SEQUENCE
+ 1324:d=7 hl=2 l= 36 cons: SET
+ 1326:d=8 hl=2 l= 34 cons: SEQUENCE
+ 1328:d=9 hl=2 l= 3 prim: OBJECT :commonName
+ 1333:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com
+ 1362:d=6 hl=2 l= 4 prim: INTEGER :0B870A31
+ 1368:d=5 hl=2 l= 11 cons: SEQUENCE
+ 1370:d=6 hl=2 l= 9 prim: OBJECT :sha256
+ 1381:d=5 hl=2 l= 105 cons: cont [ 0 ]
+ 1383:d=6 hl=2 l= 24 cons: SEQUENCE
+ 1385:d=7 hl=2 l= 9 prim: OBJECT :contentType
+ 1396:d=7 hl=2 l= 11 cons: SET
+ 1398:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data
+ 1409:d=6 hl=2 l= 28 cons: SEQUENCE
+ 1411:d=7 hl=2 l= 9 prim: OBJECT :signingTime
+ 1422:d=7 hl=2 l= 15 cons: SET
+ 1424:d=8 hl=2 l= 13 prim: UTCTIME :210413214324Z
+ 1439:d=6 hl=2 l= 47 cons: SEQUENCE
+ 1441:d=7 hl=2 l= 9 prim: OBJECT :messageDigest
+ 1452:d=7 hl=2 l= 34 cons: SET
+ 1454:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:55148E0E166153
+ 1488:d=5 hl=2 l= 10 cons: SEQUENCE
+ 1490:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
+ 1500:d=5 hl=2 l= 72 prim: OCTET STRING [HEX DUMP]:3046022100E854
+
+
+Acknowledgements
+
+ We would like to thank the various reviewers for their input, in
+ particular William Atwood, Brian Carpenter, Fuyu Eleven, Eliot Lear,
+ Sergey Kasatkin, Anoop Kumar, Tom Petch, Markus Stenberg, Peter van
+ der Stok, and Thomas Werner.
+
+ Significant reviews were done by Jari Arkko, Christian Huitema, and
+ Russ Housley.
+
+ Henk Birkholz contributed the CDDL for the audit-log response.
+
+ This document started its life as a two-page idea from Steinthor
+ Bjarnason.
+
+ In addition, significant review comments were provided by many IESG
+ members, including Adam Roach, Alexey Melnikov, Alissa Cooper,
+ Benjamin Kaduk, Éric Vyncke, Roman Danyliw, and Magnus Westerlund.
+
+Authors' Addresses
+
+ Max Pritikin
+ Cisco
+
+ Email: pritikin@cisco.com
+
+
+ Michael C. Richardson
+ Sandelman Software Works
+
+ Email: mcr+ietf@sandelman.ca
+ URI: http://www.sandelman.ca/
+
+
+ Toerless Eckert
+ Futurewei Technologies Inc. USA
+ 2330 Central Expy
+ Santa Clara, CA 95050
+ United States of America
+
+ Email: tte+ietf@cs.fau.de
+
+
+ Michael H. Behringer
+
+ Email: Michael.H.Behringer@gmail.com
+
+
+ Kent Watsen
+ Watsen Networks
+
+ Email: kent+ietf@watsen.net