rfc8995.original | rfc8995.txt | |||
---|---|---|---|---|
ANIMA WG M. Pritikin | Internet Engineering Task Force (IETF) M. Pritikin | |||
Internet-Draft Cisco | Request for Comments: 8995 Cisco | |||
Intended status: Standards Track M. Richardson | Category: Standards Track M. Richardson | |||
Expires: 15 May 2021 Sandelman | ISSN: 2070-1721 Sandelman Software Works | |||
T.T.E. Eckert | T. Eckert | |||
Futurewei USA | Futurewei USA | |||
M.H. Behringer | M. Behringer | |||
K.W. Watsen | K. Watsen | |||
Watsen Networks | Watsen Networks | |||
11 November 2020 | May 2021 | |||
Bootstrapping Remote Secure Key Infrastructures (BRSKI) | Bootstrapping Remote Secure Key Infrastructure (BRSKI) | |||
draft-ietf-anima-bootstrapping-keyinfra-45 | ||||
Abstract | Abstract | |||
This document specifies automated bootstrapping of an Autonomic | This document specifies automated bootstrapping of an Autonomic | |||
Control Plane. To do this a Secure Key Infrastructure is | Control Plane. To do this, a Secure Key Infrastructure is | |||
bootstrapped. This is done using manufacturer-installed X.509 | bootstrapped. This is done using manufacturer-installed X.509 | |||
certificates, in combination with a manufacturer's authorizing | certificates, in combination with a manufacturer's authorizing | |||
service, both online and offline. We call this process the | service, both online and offline. We call this process the | |||
Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. | Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. | |||
Bootstrapping a new device can occur using a routable address and a | Bootstrapping a new device can occur when using a routable address | |||
cloud service, or using only link-local connectivity, or on limited/ | and a cloud service, only link-local connectivity, or limited/ | |||
disconnected networks. Support for deployment models with less | disconnected networks. Support for deployment models with less | |||
stringent security requirements is included. Bootstrapping is | stringent security requirements is included. Bootstrapping is | |||
complete when the cryptographic identity of the new key | complete when the cryptographic identity of the new key | |||
infrastructure is successfully deployed to the device. The | infrastructure is successfully deployed to the device. The | |||
established secure connection can be used to deploy a locally issued | established secure connection can be used to deploy a locally issued | |||
certificate to the device as well. | certificate to the device as well. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | This document is a product of the Internet Engineering Task Force | |||
Task Force (IETF). Note that other groups may also distribute | (IETF). It represents the consensus of the IETF community. It has | |||
working documents as Internet-Drafts. The list of current Internet- | received public review and has been approved for publication by the | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | Information about the current status of this document, any errata, | |||
and may be updated, replaced, or obsoleted by other documents at any | and how to provide feedback on it may be obtained at | |||
time. It is inappropriate to use Internet-Drafts as reference | https://www.rfc-editor.org/info/rfc8995. | |||
material or to cite them other than as "work in progress." | ||||
This Internet-Draft will expire on 15 May 2021. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
as described in Section 4.e of the Trust Legal Provisions and are | include Simplified BSD License text as described in Section 4.e of | |||
provided without warranty as described in the Simplified BSD License. | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1. Introduction | |||
1.1. Prior Bootstrapping Approaches . . . . . . . . . . . . . 6 | 1.1. Prior Bootstrapping Approaches | |||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 8 | 1.2. Terminology | |||
1.3. Scope of solution . . . . . . . . . . . . . . . . . . . . 11 | 1.3. Scope of Solution | |||
1.3.1. Support environment . . . . . . . . . . . . . . . . . 11 | 1.3.1. Support Environment | |||
1.3.2. Constrained environments . . . . . . . . . . . . . . 11 | 1.3.2. Constrained Environments | |||
1.3.3. Network Access Controls . . . . . . . . . . . . . . . 12 | 1.3.3. Network Access Controls | |||
1.3.4. Bootstrapping is not Booting . . . . . . . . . . . . 12 | 1.3.4. Bootstrapping is Not Booting | |||
1.4. Leveraging the new key infrastructure / next steps . . . 12 | 1.4. Leveraging the New Key Infrastructure / Next Steps | |||
1.5. Requirements for Autonomic Network Infrastructure (ANI) | 1.5. Requirements for Autonomic Networking Infrastructure (ANI) | |||
devices . . . . . . . . . . . . . . . . . . . . . . . . . 13 | Devices | |||
2. Architectural Overview . . . . . . . . . . . . . . . . . . . 13 | 2. Architectural Overview | |||
2.1. Behavior of a Pledge . . . . . . . . . . . . . . . . . . 15 | 2.1. Behavior of a Pledge | |||
2.2. Secure Imprinting using Vouchers . . . . . . . . . . . . 16 | 2.2. Secure Imprinting Using Vouchers | |||
2.3. Initial Device Identifier . . . . . . . . . . . . . . . . 17 | 2.3. Initial Device Identifier | |||
2.3.1. Identification of the Pledge . . . . . . . . . . . . 18 | 2.3.1. Identification of the Pledge | |||
2.3.2. MASA URI extension . . . . . . . . . . . . . . . . . 19 | 2.3.2. MASA URI Extension | |||
2.4. Protocol Flow . . . . . . . . . . . . . . . . . . . . . . 20 | 2.4. Protocol Flow | |||
2.5. Architectural Components . . . . . . . . . . . . . . . . 23 | 2.5. Architectural Components | |||
2.5.1. Pledge . . . . . . . . . . . . . . . . . . . . . . . 23 | 2.5.1. Pledge | |||
2.5.2. Join Proxy . . . . . . . . . . . . . . . . . . . . . 23 | 2.5.2. Join Proxy | |||
2.5.3. Domain Registrar . . . . . . . . . . . . . . . . . . 23 | 2.5.3. Domain Registrar | |||
2.5.4. Manufacturer Service . . . . . . . . . . . . . . . . 23 | 2.5.4. Manufacturer Service | |||
2.5.5. Public Key Infrastructure (PKI) . . . . . . . . . . . 24 | 2.5.5. Public Key Infrastructure (PKI) | |||
2.6. Certificate Time Validation . . . . . . . . . . . . . . . 24 | 2.6. Certificate Time Validation | |||
2.6.1. Lack of realtime clock . . . . . . . . . . . . . . . 24 | 2.6.1. Lack of Real-Time Clock | |||
2.6.2. Infinite Lifetime of IDevID . . . . . . . . . . . . . 24 | 2.6.2. Infinite Lifetime of IDevID | |||
2.7. Cloud Registrar . . . . . . . . . . . . . . . . . . . . . 25 | 2.7. Cloud Registrar | |||
2.8. Determining the MASA to contact . . . . . . . . . . . . . 25 | 2.8. Determining the MASA to Contact | |||
3. Voucher-Request artifact . . . . . . . . . . . . . . . . . . 26 | 3. Voucher-Request Artifact | |||
3.1. Nonceless Voucher Requests . . . . . . . . . . . . . . . 27 | 3.1. Nonceless Voucher-Requests | |||
3.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 27 | 3.2. Tree Diagram | |||
3.3. Examples . . . . . . . . . . . . . . . . . . . . . . . . 27 | 3.3. Examples | |||
3.4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 29 | 3.4. YANG Module | |||
4. Proxying details (Pledge - Proxy - Registrar) . . . . . . . . 33 | 4. Proxying Details (Pledge -- Proxy -- Registrar) | |||
4.1. Pledge discovery of Proxy . . . . . . . . . . . . . . . . 34 | 4.1. Pledge Discovery of Proxy | |||
4.1.1. Proxy GRASP announcements . . . . . . . . . . . . . . 35 | 4.1.1. Proxy GRASP Announcements | |||
4.2. CoAP connection to Registrar . . . . . . . . . . . . . . 37 | 4.2. CoAP Connection to Registrar | |||
4.3. Proxy discovery and communication of Registrar . . . . . 37 | 4.3. Proxy Discovery and Communication of Registrar | |||
5. Protocol Details (Pledge - Registrar - MASA) . . . . . . . . 38 | 5. Protocol Details (Pledge -- Registrar -- MASA) | |||
5.1. BRSKI-EST TLS establishment details . . . . . . . . . . . 40 | 5.1. BRSKI-EST TLS Establishment Details | |||
5.2. Pledge Requests Voucher from the Registrar . . . . . . . 41 | 5.2. Pledge Requests Voucher from the Registrar | |||
5.3. Registrar Authorization of Pledge . . . . . . . . . . . . 43 | 5.3. Registrar Authorization of Pledge | |||
5.4. BRSKI-MASA TLS establishment details . . . . . . . . . . 43 | 5.4. BRSKI-MASA TLS Establishment Details | |||
5.4.1. MASA authentication of customer Registrar . . . . . . 44 | 5.4.1. MASA Authentication of Customer Registrar | |||
5.5. Registrar Requests Voucher from MASA . . . . . . . . . . 45 | 5.5. Registrar Requests Voucher from MASA | |||
5.5.1. MASA renewal of expired vouchers . . . . . . . . . . 47 | 5.5.1. MASA Renewal of Expired Vouchers | |||
5.5.2. MASA pinning of registrar . . . . . . . . . . . . . . 48 | 5.5.2. MASA Pinning of Registrar | |||
5.5.3. MASA checking of voucher request signature . . . . . 48 | 5.5.3. MASA Check of the Voucher-Request Signature | |||
5.5.4. MASA verification of domain registrar . . . . . . . . 49 | 5.5.4. MASA Verification of the Domain Registrar | |||
5.5.5. MASA verification of pledge | 5.5.5. MASA Verification of the Pledge | |||
prior-signed-voucher-request . . . . . . . . . . . . 50 | 'prior-signed-voucher-request' | |||
5.5.6. MASA nonce handling . . . . . . . . . . . . . . . . . 50 | 5.5.6. MASA Nonce Handling | |||
5.6. MASA and Registrar Voucher Response . . . . . . . . . . . 50 | 5.6. MASA and Registrar Voucher Response | |||
5.6.1. Pledge voucher verification . . . . . . . . . . . . . 53 | 5.6.1. Pledge Voucher Verification | |||
5.6.2. Pledge authentication of provisional TLS | 5.6.2. Pledge Authentication of Provisional TLS Connection | |||
connection . . . . . . . . . . . . . . . . . . . . . 54 | 5.7. Pledge BRSKI Status Telemetry | |||
5.7. Pledge BRSKI Status Telemetry . . . . . . . . . . . . . . 55 | 5.8. Registrar Audit-Log Request | |||
5.8. Registrar audit-log request . . . . . . . . . . . . . . . 56 | 5.8.1. MASA Audit-Log Response | |||
5.8.1. MASA audit log response . . . . . . . . . . . . . . . 58 | 5.8.2. Calculation of domainID | |||
5.8.2. Calculation of domainID . . . . . . . . . . . . . . . 60 | 5.8.3. Registrar Audit-Log Verification | |||
5.8.3. Registrar audit log verification . . . . . . . . . . 61 | 5.9. EST Integration for PKI Bootstrapping | |||
5.9. EST Integration for PKI bootstrapping . . . . . . . . . . 62 | 5.9.1. EST Distribution of CA Certificates | |||
5.9.1. EST Distribution of CA Certificates . . . . . . . . . 63 | 5.9.2. EST CSR Attributes | |||
5.9.2. EST CSR Attributes . . . . . . . . . . . . . . . . . 63 | 5.9.3. EST Client Certificate Request | |||
5.9.3. EST Client Certificate Request . . . . . . . . . . . 64 | 5.9.4. Enrollment Status Telemetry | |||
5.9.4. Enrollment Status Telemetry . . . . . . . . . . . . . 64 | 5.9.5. Multiple Certificates | |||
5.9.5. Multiple certificates . . . . . . . . . . . . . . . . 65 | 5.9.6. EST over CoAP | |||
5.9.6. EST over CoAP . . . . . . . . . . . . . . . . . . . . 66 | 6. Clarification of Transfer-Encoding | |||
6. Clarification of transfer-encoding . . . . . . . . . . . . . 66 | 7. Reduced Security Operational Modes | |||
7. Reduced security operational modes . . . . . . . . . . . . . 66 | 7.1. Trust Model | |||
7.1. Trust Model . . . . . . . . . . . . . . . . . . . . . . . 66 | 7.2. Pledge Security Reductions | |||
7.2. Pledge security reductions . . . . . . . . . . . . . . . 67 | 7.3. Registrar Security Reductions | |||
7.3. Registrar security reductions . . . . . . . . . . . . . . 68 | 7.4. MASA Security Reductions | |||
7.4. MASA security reductions . . . . . . . . . . . . . . . . 69 | 7.4.1. Issuing Nonceless Vouchers | |||
7.4.1. Issuing Nonceless vouchers . . . . . . . . . . . . . 69 | 7.4.2. Trusting Owners on First Use | |||
7.4.2. Trusting Owners on First Use . . . . . . . . . . . . 70 | 7.4.3. Updating or Extending Voucher Trust Anchors | |||
7.4.3. Updating or extending voucher trust anchors . . . . . 71 | 8. IANA Considerations | |||
8.1. The IETF XML Registry | ||||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 72 | 8.2. YANG Module Names Registry | |||
8.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 72 | 8.3. BRSKI Well-Known Considerations | |||
8.2. YANG Module Names Registry . . . . . . . . . . . . . . . 72 | 8.3.1. BRSKI .well-known Registration | |||
8.3. BRSKI well-known considerations . . . . . . . . . . . . . 72 | 8.3.2. BRSKI .well-known Registry | |||
8.3.1. BRSKI .well-known registration . . . . . . . . . . . 72 | 8.4. PKIX Registry | |||
8.3.2. BRSKI .well-known registry . . . . . . . . . . . . . 73 | 8.5. Pledge BRSKI Status Telemetry | |||
8.4. PKIX Registry . . . . . . . . . . . . . . . . . . . . . . 73 | 8.6. DNS Service Names | |||
8.5. Pledge BRSKI Status Telemetry . . . . . . . . . . . . . . 73 | 8.7. GRASP Objective Names | |||
8.6. DNS Service Names . . . . . . . . . . . . . . . . . . . . 74 | 9. Applicability to the Autonomic Control Plane (ACP) | |||
8.7. GRASP Objective Names . . . . . . . . . . . . . . . . . . 74 | 9.1. Operational Requirements | |||
9. Applicability to the Autonomic Control Plane (ACP) . . . . . 74 | 9.1.1. MASA Operational Requirements | |||
9.1. Operational Requirements . . . . . . . . . . . . . . . . 76 | 9.1.2. Domain Owner Operational Requirements | |||
9.1.1. MASA Operational Requirements . . . . . . . . . . . . 76 | 9.1.3. Device Operational Requirements | |||
9.1.2. Domain Owner Operational Requirements . . . . . . . . 77 | 10. Privacy Considerations | |||
9.1.3. Device Operational Requirements . . . . . . . . . . . 77 | 10.1. MASA Audit-Log | |||
10. Privacy Considerations . . . . . . . . . . . . . . . . . . . 78 | 10.2. What BRSKI-EST Reveals | |||
10.1. MASA audit log . . . . . . . . . . . . . . . . . . . . . 78 | 10.3. What BRSKI-MASA Reveals to the Manufacturer | |||
10.2. What BRSKI-EST reveals . . . . . . . . . . . . . . . . . 78 | 10.4. Manufacturers and Used or Stolen Equipment | |||
10.3. What BRSKI-MASA reveals to the manufacturer . . . . . . 79 | 10.5. Manufacturers and Grey Market Equipment | |||
10.4. Manufacturers and Used or Stolen Equipment . . . . . . . 81 | 10.6. Some Mitigations for Meddling by Manufacturers | |||
10.5. Manufacturers and Grey market equipment . . . . . . . . 83 | 10.7. Death of a Manufacturer | |||
10.6. Some mitigations for meddling by manufacturers . . . . . 83 | 11. Security Considerations | |||
10.7. Death of a manufacturer . . . . . . . . . . . . . . . . 84 | 11.1. Denial of Service (DoS) against MASA | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 85 | 11.2. DomainID Must Be Resistant to Second-Preimage Attacks | |||
11.1. Denial of Service (DoS) against MASA . . . . . . . . . . 86 | 11.3. Availability of Good Random Numbers | |||
11.2. DomainID must be resistant to second-preimage attacks . 86 | 11.4. Freshness in Voucher-Requests | |||
11.3. Availability of good random numbers . . . . . . . . . . 87 | 11.5. Trusting Manufacturers | |||
11.4. Freshness in Voucher-Requests . . . . . . . . . . . . . 87 | 11.6. Manufacturer Maintenance of Trust Anchors | |||
11.5. Trusting manufacturers . . . . . . . . . . . . . . . . . 88 | 11.6.1. Compromise of Manufacturer IDevID Signing Keys | |||
11.6. Manufacturer Maintenance of trust anchors . . . . . . . 89 | 11.6.2. Compromise of MASA Signing Keys | |||
11.6.1. Compromise of Manufacturer IDevID signing keys . . . 91 | 11.6.3. Compromise of MASA Web Service | |||
11.6.2. Compromise of MASA signing keys . . . . . . . . . . 91 | 11.7. YANG Module Security Considerations | |||
11.6.3. Compromise of MASA web service . . . . . . . . . . . 93 | 12. References | |||
11.7. YANG Module Security Considerations . . . . . . . . . . 94 | 12.1. Normative References | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 94 | 12.2. Informative References | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 94 | Appendix A. IPv4 and Non-ANI Operations | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 94 | A.1. IPv4 Link-Local Addresses | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 98 | A.2. Use of DHCPv4 | |||
Appendix A. IPv4 and non-ANI operations . . . . . . . . . . . . 102 | Appendix B. mDNS / DNS-SD Proxy Discovery Options | |||
A.1. IPv4 Link Local addresses . . . . . . . . . . . . . . . . 102 | Appendix C. Example Vouchers | |||
A.2. Use of DHCPv4 . . . . . . . . . . . . . . . . . . . . . . 102 | C.1. Keys Involved | |||
Appendix B. mDNS / DNSSD proxy discovery options . . . . . . . . 102 | C.1.1. Manufacturer Certification Authority for IDevID | |||
Appendix C. Example Vouchers . . . . . . . . . . . . . . . . . . 103 | Signatures | |||
C.1. Keys involved . . . . . . . . . . . . . . . . . . . . . . 103 | C.1.2. MASA Key Pair for Voucher Signatures | |||
C.1.1. Manufacturer Certificate Authority for IDevID | C.1.3. Registrar Certification Authority | |||
signatures . . . . . . . . . . . . . . . . . . . . . 104 | C.1.4. Registrar Key Pair | |||
C.1.2. MASA key pair for voucher signatures . . . . . . . . 105 | C.1.5. Pledge Key Pair | |||
C.1.3. Registrar Certificate Authority . . . . . . . . . . . 107 | C.2. Example Process | |||
C.1.4. Registrar key pair . . . . . . . . . . . . . . . . . 108 | C.2.1. Pledge to Registrar | |||
C.1.5. Pledge key pair . . . . . . . . . . . . . . . . . . . 110 | C.2.2. Registrar to MASA | |||
C.2. Example process . . . . . . . . . . . . . . . . . . . . . 111 | C.2.3. MASA to Registrar | |||
C.2.1. Pledge to Registrar . . . . . . . . . . . . . . . . . 111 | Acknowledgements | |||
C.2.2. Registrar to MASA . . . . . . . . . . . . . . . . . . 115 | Authors' Addresses | |||
C.2.3. MASA to Registrar . . . . . . . . . . . . . . . . . . 121 | ||||
Appendix D. Additional References . . . . . . . . . . . . . . . 125 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 125 | ||||
1. Introduction | 1. Introduction | |||
The Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol | The Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol | |||
provides a solution for secure zero-touch (automated) bootstrap of | provides a solution for secure zero-touch (automated) bootstrap of | |||
new (unconfigured) devices that are called pledges in this document. | new (unconfigured) devices that are called "pledges" in this | |||
Pledges have an IDevID installed in them at the factory. | document. Pledges have an Initial Device Identifier (IDevID) | |||
installed in them at the factory. | ||||
"BRSKI" is pronounced like "brewski", a colloquial term for beer in | "BRSKI", pronounced like "brewski", is a colloquial term for beer in | |||
Canada and parts of the US-midwest. [brewski] | Canada and parts of the Midwestern United States [brewski]. | |||
This document primarily provides for the needs of the ISP and | This document primarily provides for the needs of the ISP and | |||
Enterprise focused ANIMA Autonomic Control Plane (ACP) | enterprise-focused Autonomic Networking Integrated Model and Approach | |||
[I-D.ietf-anima-autonomic-control-plane]. This bootstrap process | (ANIMA) Autonomic Control Plane (ACP) [RFC8994]. This bootstrap | |||
satisfies the [RFC7575] requirements of section 3.3 of making all | process satisfies the requirement of making all operations secure by | |||
operations secure by default. Other users of the BRSKI protocol will | default per Section 3.3 of [RFC7575]. Other users of the BRSKI | |||
need to provide separate applicability statements that include | protocol will need to provide separate applicability statements that | |||
privacy and security considerations appropriate to that deployment. | include privacy and security considerations appropriate to that | |||
Section 9 explains the detailed applicability for this the ACP usage. | deployment. Section 9 explains the detailed applicability for this | |||
ACP usage. | ||||
The BRSKI protocol requires a significant amount of communication | The BRSKI protocol requires a significant amount of communication | |||
between manufacturer and owner: in its default modes it provides a | between manufacturer and owner: in its default modes, it provides a | |||
cryptographic transfer of control to the initial owner. In its | cryptographic transfer of control to the initial owner. In its | |||
strongest modes, it leverages sales channel information to identify | strongest modes, it leverages sales channel information to identify | |||
the owner in advance. Resale of devices is possible, provided that | the owner in advance. Resale of devices is possible, provided that | |||
the manufacturer is willing to authorize the transfer. Mechanisms to | the manufacturer is willing to authorize the transfer. Mechanisms to | |||
enable transfers of ownership without manufacturer authorization are | enable transfers of ownership without manufacturer authorization are | |||
not included in this version of the protocol, but could be designed | not included in this version of the protocol, but it could be | |||
into future versions. | designed into future versions. | |||
This document describes how pledges discover (or are discovered by) | This document describes how a pledge discovers (or are discovered by) | |||
an element of the network domain to which the pledge belongs that | an element of the network domain that it will belong to and that will | |||
will perform the bootstrap. This element (device) is called the | perform its bootstrap. This element (device) is called the | |||
registrar. Before any other operation, pledge and registrar need to | "registrar". Before any other operation, the pledge and registrar | |||
establish mutual trust: | need to establish mutual trust: | |||
1. Registrar authenticating the pledge: "Who is this device? What | 1. Registrar authenticating the pledge: "Who is this device? What | |||
is its identity?" | is its identity?" | |||
2. Registrar authorizing the pledge: "Is it mine? Do I want it? | 2. Registrar authorizing the pledge: "Is it mine? Do I want it? | |||
What are the chances it has been compromised?" | What are the chances it has been compromised?" | |||
3. Pledge authenticating the registrar: "What is this registrar's | 3. Pledge authenticating the registrar: "What is this registrar's | |||
identity?" | identity?" | |||
4. Pledge authorizing the registrar: "Should I join this network?" | 4. Pledge authorizing the registrar: "Should I join this network?" | |||
This document details protocols and messages to answer the above | This document details protocols and messages to answer the above | |||
questions. It uses a TLS connection and an PKIX-shaped (X.509v3) | questions. It uses a TLS connection and a PKIX-shaped (X.509v3) | |||
certificate (an IEEE 802.1AR [IDevID] IDevID) of the pledge to answer | 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 | points 1 and 2. It uses a new artifact called a "voucher" that the | |||
registrar receives from a "Manufacturer Authorized Signing Authority" | registrar receives from a Manufacturer Authorized Signing Authority | |||
(MASA) and passes to the pledge to answer points 3 and 4. | (MASA) and passes it to the pledge to answer points 3 and 4. | |||
A proxy provides very limited connectivity between the pledge and the | A proxy provides very limited connectivity between the pledge and the | |||
registrar. | registrar. | |||
The syntactic details of vouchers are described in detail in | The syntactic details of vouchers are described in detail in | |||
[RFC8366]. This document details automated protocol mechanisms to | [RFC8366]. This document details automated protocol mechanisms to | |||
obtain vouchers, including the definition of a 'voucher-request' | obtain vouchers, including the definition of a "voucher-request" | |||
message that is a minor extension to the voucher format (see | message that is a minor extension to the voucher format (see | |||
Section 3) defined by [RFC8366]. | Section 3) as defined by [RFC8366]. | |||
BRSKI results in the pledge storing an X.509 root certificate | BRSKI results in the pledge storing an X.509 root certificate | |||
sufficient for verifying the registrar identity. In the process a | sufficient for verifying the registrar identity. In the process, a | |||
TLS connection is established that can be directly used for | TLS connection is established that can be directly used for | |||
Enrollment over Secure Transport (EST). In effect BRSKI provides an | Enrollment over Secure Transport (EST). In effect, BRSKI provides an | |||
automated mechanism for the "Bootstrap Distribution of CA | automated mechanism for "Bootstrap Distribution of CA Certificates" | |||
Certificates" described in [RFC7030] Section 4.1.1 wherein the pledge | described in [RFC7030], Section 4.1.1, wherein the pledge "MUST [...] | |||
"MUST [...] engage a human user to authorize the CA certificate using | engage a human user to authorize the CA certificate using out-of-band | |||
out-of-band" information. With BRSKI the pledge now can automate | data". With BRSKI, the pledge now can automate this process using | |||
this process using the voucher. Integration with a complete EST | the voucher. Integration with a complete EST enrollment is optional | |||
enrollment is optional but trivial. | but trivial. | |||
BRSKI is agile enough to support bootstrapping alternative key | BRSKI is agile enough to support bootstrapping alternative key | |||
infrastructures, such as a symmetric key solutions, but no such | infrastructures, such as a symmetric key solution, but no such system | |||
system is described in this document. | is described in this document. | |||
1.1. Prior Bootstrapping Approaches | 1.1. Prior Bootstrapping Approaches | |||
To literally "pull yourself up by the bootstraps" is an impossible | To literally "pull yourself up by the bootstraps" is an impossible | |||
action. Similarly the secure establishment of a key infrastructure | action. Similarly, the secure establishment of a key infrastructure | |||
without external help is also an impossibility. Today it is commonly | without external help is also an impossibility. Today, it is | |||
accepted that the initial connections between nodes are insecure, | commonly accepted that the initial connections between nodes are | |||
until key distribution is complete, or that domain-specific keying | insecure, until key distribution is complete, or that domain-specific | |||
material (often pre-shared keys, including mechanisms like SIM cards) | keying material (often pre-shared keys, including mechanisms like | |||
is pre-provisioned on each new device in a costly and non-scalable | Subscriber Identification Module (SIM) cards) is pre-provisioned on | |||
manner. Existing automated mechanisms are known as non-secured | each new device in a costly and non-scalable manner. Existing | |||
'Trust on First Use' (TOFU) [RFC7435], 'resurrecting duckling' | automated mechanisms are known as non-secured "Trust on First Use | |||
[Stajano99theresurrecting] or 'pre-staging'. | (TOFU)" [RFC7435], "resurrecting duckling" | |||
[Stajano99theresurrecting], or "pre-staging". | ||||
Another prior approach has been to try and minimize user actions | Another prior approach has been to try and minimize user actions | |||
during bootstrapping, but not eliminate all user-actions. The | during bootstrapping, but not eliminate all user actions. The | |||
original EST protocol [RFC7030] does reduce user actions during | original EST protocol [RFC7030] does reduce user actions during | |||
bootstrap but does not provide solutions for how the following | bootstrapping but does not provide solutions for how the following | |||
protocol steps can be made autonomic (not involving user actions): | protocol steps can be made autonomic (not involving user actions): | |||
* using the Implicit Trust Anchor [RFC7030] database to authenticate | * using the Implicit Trust Anchor (TA) [RFC7030] database to | |||
an owner specific service (not an autonomic solution because the | authenticate an owner-specific service (not an autonomic solution | |||
URL must be securely distributed), | because the URL must be securely distributed), | |||
* engaging a human user to authorize the CA certificate using out- | * engaging a human user to authorize the CA certificate using out- | |||
of-band data (not an autonomic solution because the human user is | of-band data (not an autonomic solution because the human user is | |||
involved), | involved), | |||
* using a configured Explicit TA database (not an autonomic solution | * using a configured Explicit TA database (not an autonomic solution | |||
because the distribution of an explicit TA database is not | because the distribution of an explicit TA database is not | |||
autonomic), | autonomic), and | |||
* and using a Certificate-Less TLS mutual authentication method (not | * using a certificate-less TLS mutual authentication method (not an | |||
an autonomic solution because the distribution of symmetric key | autonomic solution because the distribution of symmetric key | |||
material is not autonomic). | material is not autonomic). | |||
These "touch" methods do not meet the requirements for zero-touch. | These "touch" methods do not meet the requirements for zero-touch. | |||
There are "call home" technologies where the pledge first establishes | There are "call home" technologies where the pledge first establishes | |||
a connection to a well known manufacturer service using a common | a connection to a well-known manufacturer service using a common | |||
client-server authentication model. After mutual authentication, | client-server authentication model. After mutual authentication, | |||
appropriate credentials to authenticate the target domain are | appropriate credentials to authenticate the target domain are | |||
transferred to the pledge. This creates several problems and | transferred to the pledge. This creates several problems and | |||
limitations: | limitations: | |||
* the pledge requires realtime connectivity to the manufacturer | * the pledge requires real-time connectivity to the manufacturer | |||
service, | service, | |||
* the domain identity is exposed to the manufacturer service (this | * the domain identity is exposed to the manufacturer service (this | |||
is a privacy concern), | is a privacy concern), and | |||
* the manufacturer is responsible for making the authorization | * the manufacturer is responsible for making the authorization | |||
decisions (this is a liability concern), | decisions (this is a liability concern). | |||
BRSKI addresses these issues by defining extensions to the EST | BRSKI addresses these issues by defining extensions to the EST | |||
protocol for the automated distribution of vouchers. | protocol for the automated distribution of vouchers. | |||
1.2. Terminology | 1.2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
The following terms are defined for clarity: | The following terms are defined for clarity: | |||
ANI: The Autonomic Network Infrastructure as defined by | ANI: The Autonomic Networking Infrastructure as defined by | |||
[I-D.ietf-anima-reference-model]. Section 9 details specific | [RFC8993]. Section 9 details specific requirements for pledges, | |||
requirements for pledges, proxies and registrars when they are | proxies, and registrars when they are part of an ANI. | |||
part of an ANI. | ||||
Circuit Proxy: A stateful implementation of the join proxy. This is | Circuit Proxy: A stateful implementation of the Join Proxy. This is | |||
the assumed type of proxy. | the assumed type of proxy. | |||
drop-ship: The physical distribution of equipment containing the | drop-ship: The physical distribution of equipment containing the | |||
"factory default" configuration to a final destination. In zero- | "factory default" configuration to a final destination. In zero- | |||
touch scenarios there is no staging or pre-configuration during | touch scenarios, there is no staging or preconfiguration during | |||
drop-ship. | drop-ship. | |||
Domain: The set of entities that share a common local trust anchor. | Domain: The set of entities that share a common local trust anchor. | |||
This includes the proxy, registrar, Domain Certificate Authority, | This includes the proxy, registrar, domain CA, management | |||
Management components and any existing entity that is already a | components, and any existing entity that is already a member of | |||
member of the domain. | the domain. | |||
domainID: The domain IDentity is a unique value based upon the | ||||
Registrar CA's certificate. Section 5.8.2 specifies how it is | ||||
calculated. | ||||
Domain CA: The domain Certification Authority (CA) provides | Domain CA: The domain Certification Authority (CA) provides | |||
certification functionalities to the domain. At a minimum it | certification functionalities to the domain. At a minimum, it | |||
provides certification functionalities to a registrar and manages | provides certification functionalities to a registrar and manages | |||
the private key that defines the domain. Optionally, it certifies | the private key that defines the domain. Optionally, it certifies | |||
all elements. | 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 | enrollment: The process where a device presents key material to a | |||
network and acquires a network-specific identity. For example | network and acquires a network-specific identity. For example, | |||
when a certificate signing request is presented to a certification | when a certificate signing request is presented to a CA, and a | |||
authority and a certificate is obtained in response. | 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 | imprint: The process where a device obtains the cryptographic key | |||
material to identify and trust future interactions with a network. | material to identify and trust future interactions with a network. | |||
This term is taken from Konrad Lorenz's work in biology with new | This term is taken from Konrad Lorenz's work in biology with new | |||
ducklings: during a critical period, the duckling would assume | ducklings: during a critical period, the duckling would assume | |||
that anything that looks like a mother duck is in fact their | that anything that looks like a mother duck is in fact their | |||
mother. An equivalent for a device is to obtain the fingerprint | mother. An equivalent for a device is to obtain the fingerprint | |||
of the network's root certification authority certificate. A | of the network's root CA certificate. A device that imprints on | |||
device that imprints on an attacker suffers a similar fate to a | an attacker suffers a similar fate to a duckling that imprints on | |||
duckling that imprints on a hungry wolf. Securely imprinting is a | a hungry wolf. Securely imprinting is a primary focus of this | |||
primary focus of this document [imprinting]. The analogy to | document [imprinting]. The analogy to Lorenz's work was first | |||
Lorenz's work was first noted in [Stajano99theresurrecting]. | noted in [Stajano99theresurrecting]. | |||
IDevID: An Initial Device Identity X.509 certificate installed by | ||||
the vendor on new equipment. This is a term from 802.1AR [IDevID] | ||||
IPIP Proxy: A stateless proxy alternative. | IPIP Proxy: A stateless proxy alternative. | |||
Join Proxy: A domain entity that helps the pledge join the domain. | Join Proxy: A domain entity that helps the pledge join the domain. | |||
A join proxy facilitates communication for devices that find | A Join Proxy facilitates communication for devices that find | |||
themselves in an environment where they are not provided | themselves in an environment where they are not provided | |||
connectivity until after they are validated as members of the | connectivity until after they are validated as members of the | |||
domain. For simplicity this document sometimes uses the term of | domain. For simplicity, this document sometimes uses the term of | |||
'proxy' to indicate the join proxy. The pledge is unaware that | "proxy" to indicate the Join Proxy. The pledge is unaware that | |||
they are communicating with a proxy rather than directly with a | they are communicating with a proxy rather than directly with a | |||
registrar. | registrar. | |||
Join Registrar (and Coordinator): A representative of the domain | Join Registrar (and Coordinator): A representative of the domain | |||
that is configured, perhaps autonomically, to decide whether a new | that is configured, perhaps autonomically, to decide whether a new | |||
device is allowed to join the domain. The administrator of the | device is allowed to join the domain. The administrator of the | |||
domain interfaces with a "join registrar (and coordinator)" to | domain interfaces with a "Join Registrar (and Coordinator)" to | |||
control this process. Typically a join registrar is "inside" its | control this process. Typically, a Join Registrar is "inside" its | |||
domain. For simplicity this document often refers to this as just | domain. For simplicity, this document often refers to this as | |||
"registrar". Within [I-D.ietf-anima-reference-model] this is | just "registrar". Within [RFC8993], it is referred to as the | |||
referred to as the "join registrar autonomic service agent". | "Join Registrar Autonomic Service Agent (ASA)". Other communities | |||
Other communities use the abbreviation "JRC". | use the abbreviation "JRC". | |||
LDevID: A Local Device Identity X.509 certificate installed by the | LDevID: A Local Device Identifier X.509 certificate installed by the | |||
owner of the equipment. This is a term from 802.1AR [IDevID] | owner of the equipment. This is a term from 802.1AR [IDevID]. | |||
manufacturer: the term manufacturer is used throughout this document | manufacturer: The term manufacturer is used throughout this document | |||
to be the entity that created the device. This is typically the | as the entity that created the device. This is typically the | |||
"original equipment manufacturer" or OEM, but in more complex | original equipment manufacturer (OEM), but in more complex | |||
situations it could be a "value added retailer" (VAR), or possibly | situations, it could be a value added retailer (VAR), or possibly | |||
even a systems integrator. In general, it a goal of BRSKI to | even a systems integrator. In general, a goal of BRSKI is to | |||
eliminate small distinctions between different sales channels. | eliminate small distinctions between different sales channels. | |||
The reason for this is that it permits a single device, with a | The reason for this is that it permits a single device, with a | |||
uniform firmware load, to be shipped directly to all customers. | uniform firmware load, to be shipped directly to all customers. | |||
This eliminates costs for the manufacturer. This also reduces the | This eliminates costs for the manufacturer. This also reduces the | |||
number of products supported in the field increasing the chance | number of products supported in the field, increasing the chance | |||
that firmware will be more up to date. | that firmware will be more up to date. | |||
MASA Audit-Log: An anonymized list of previous owners maintained by | MASA Audit-Log: An anonymized list of previous owners maintained by | |||
the MASA on a per device (per pledge) basis. Described in | the MASA on a per-device (per-pledge) basis, as described in | |||
Section 5.8.1. | Section 5.8.1. | |||
MASA Service: A third-party Manufacturer Authorized Signing | MASA Service: A third-party MASA service on the global Internet. | |||
Authority (MASA) service on the global Internet. The MASA signs | The MASA signs vouchers. It also provides a repository for audit- | |||
vouchers. It also provides a repository for audit-log information | log information of privacy-protected bootstrapping events. It | |||
of privacy protected bootstrapping events. It does not track | does not track ownership. | |||
ownership. | ||||
nonced: a voucher (or request) that contains a nonce (the normal | nonced: A voucher (or request) that contains a nonce (the normal | |||
case). | case). | |||
nonceless: a voucher (or request) that does not contain a nonce, | nonceless: A voucher (or request) that does not contain a nonce and | |||
relying upon accurate clocks for expiration, or which does not | either relies upon accurate clocks for expiration or does not | |||
expire. | expire. | |||
offline: When an architectural component cannot perform realtime | offline: When an architectural component cannot perform real-time | |||
communications with a peer, either due to network connectivity or | communications with a peer, due to either network connectivity or | |||
because the peer is turned off, the operation is said to be | the peer being turned off, the operation is said to be occurring | |||
occurring offline. | offline. | |||
Ownership Tracker: An Ownership Tracker service on the global | Ownership Tracker: An Ownership Tracker service on the global | |||
Internet. The Ownership Tracker uses business processes to | Internet. The Ownership Tracker uses business processes to | |||
accurately track ownership of all devices shipped against domains | accurately track ownership of all devices shipped against domains | |||
that have purchased them. Although optional, this component | that have purchased them. Although optional, this component | |||
allows vendors to provide additional value in cases where their | allows vendors to provide additional value in cases where their | |||
sales and distribution channels allow for accurate tracking of | sales and distribution channels allow for accurate tracking of | |||
such ownership. Ownership tracking information is indicated in | such ownership. Tracking information about ownership is indicated | |||
vouchers as described in [RFC8366] | in vouchers, as described in [RFC8366]. | |||
Pledge: The prospective (unconfigured) device, which has an identity | Pledge: The prospective (unconfigured) device, which has an identity | |||
installed at the factory. | installed at the factory. | |||
(Public) Key Infrastructure: The collection of systems and processes | (Public) Key Infrastructure: The collection of systems and processes | |||
that sustain the activities of a public key system. The registrar | that sustains the activities of a public key system. The | |||
acts as an [RFC5280] and [RFC5272] (see section 7) "Registration | registrar acts as a "Registration Authority"; see [RFC5280] and | |||
Authority". | Section 7 of [RFC5272]. | |||
TOFU: Trust on First Use. Used similarly to [RFC7435]. This is | TOFU: Trust on First Use. Used similarly to how it is described in | |||
where a pledge device makes no security decisions but rather | [RFC7435]. This is where a pledge device makes no security | |||
simply trusts the first registrar it is contacted by. This is | decisions but rather simply trusts the first registrar it is | |||
also known as the "resurrecting duckling" model. | contacted by. This is also known as the "resurrecting duckling" | |||
model. | ||||
Voucher: A signed artifact from the MASA that indicates to a pledge | Voucher: A signed artifact from the MASA that indicates the | |||
the cryptographic identity of the registrar it should trust. | cryptographic identity of the registrar it should trust to a | |||
There are different types of vouchers depending on how that trust | pledge. There are different types of vouchers depending on how | |||
is asserted. Multiple voucher types are defined in [RFC8366] | that trust is asserted. Multiple voucher types are defined in | |||
[RFC8366]. | ||||
1.3. Scope of solution | 1.3. Scope of Solution | |||
1.3.1. Support environment | 1.3.1. Support Environment | |||
This solution (BRSKI) can support large router platforms with multi- | This solution (BRSKI) can support large router platforms with multi- | |||
gigabit inter-connections, mounted in controlled access data centers. | gigabit inter-connections, mounted in controlled access data centers. | |||
But this solution is not exclusive to large equipment: it is intended | But this solution is not exclusive to large equipment: it is intended | |||
to scale to thousands of devices located in hostile environments, | to scale to thousands of devices located in hostile environments, | |||
such as ISP provided CPE devices which are drop-shipped to the end | such as ISP-provided Customer Premises Equipment (CPE) devices that | |||
user. The situation where an order is fulfilled from distributed | are drop-shipped to the end user. The situation where an order is | |||
warehouse from a common stock and shipped directly to the target | fulfilled from a distributed warehouse from a common stock and | |||
location at the request of a domain owner is explicitly supported. | shipped directly to the target location at the request of a domain | |||
That stock ("SKU") could be provided to a number of potential domain | owner is explicitly supported. That stock ("SKU") could be provided | |||
owners, and the eventual domain owner will not know a-priori which | to a number of potential domain owners, and the eventual domain owner | |||
device will go to which location. | will not know a priori which device will go to which location. | |||
The bootstrapping process can take minutes to complete depending on | The bootstrapping process can take minutes to complete depending on | |||
the network infrastructure and device processing speed. The network | the network infrastructure and device processing speed. The network | |||
communication itself is not optimized for speed; for privacy reasons, | communication itself is not optimized for speed; for privacy reasons, | |||
the discovery process allows for the pledge to avoid announcing its | the discovery process allows for the pledge to avoid announcing its | |||
presence through broadcasting. | presence through broadcasting. | |||
Nomadic or mobile devices often need to acquire credentials to access | Nomadic or mobile devices often need to acquire credentials to access | |||
the network at the new location. An example of this is mobile phone | the network at the new location. An example of this is mobile phone | |||
roaming among network operators, or even between cell towers. This | roaming among network operators, or even between cell towers. This | |||
is usually called handoff. BRSKI does not provide a low-latency | is usually called "handoff". BRSKI does not provide a low-latency | |||
handoff which is usually a requirement in such situations. For these | handoff, which is usually a requirement in such situations. For | |||
solutions BRSKI can be used to create a relationship (an LDevID) with | these solutions, BRSKI can be used to create a relationship (an | |||
the "home" domain owner. The resulting credentials are then used to | LDevID) with the "home" domain owner. The resulting credentials are | |||
provide credentials more appropriate for a low-latency handoff. | then used to provide credentials more appropriate for a low-latency | |||
handoff. | ||||
1.3.2. Constrained environments | 1.3.2. Constrained Environments | |||
Questions have been posed as to whether this solution is suitable in | Questions have been posed as to whether this solution is suitable in | |||
general for Internet of Things (IoT) networks. This depends on the | general for Internet of Things (IoT) networks. This depends on the | |||
capabilities of the devices in question. The terminology of | capabilities of the devices in question. The terminology of | |||
[RFC7228] is best used to describe the boundaries. | [RFC7228] is best used to describe the boundaries. | |||
The solution described in this document is aimed in general at non- | The solution described in this document is aimed in general at non- | |||
constrained (i.e., class 2+ [RFC7228]) devices operating on a non- | constrained (i.e., Class 2+ [RFC7228]) devices operating on a non- | |||
Challenged network. The entire solution as described here is not | challenged network. The entire solution as described here is not | |||
intended to be useable as-is by constrained devices operating on | intended to be usable as is by constrained devices operating on | |||
challenged networks (such as 802.15.4 Low-power Lossy Networks | challenged networks (such as 802.15.4 Low-Power and Lossy Networks | |||
(LLN)s). | (LLNs)). | |||
Specifically, there are protocol aspects described here that might | Specifically, there are protocol aspects described here that might | |||
result in congestion collapse or energy-exhaustion of intermediate | result in congestion collapse or energy exhaustion of intermediate | |||
battery powered routers in an LLN. Those types of networks should | battery-powered routers in an LLN. Those types of networks should | |||
not use this solution. These limitations are predominately related | not use this solution. These limitations are predominately related | |||
to the large credential and key sizes required for device | to the large credential and key sizes required for device | |||
authentication. Defining symmetric key techniques that meet the | authentication. Defining symmetric key techniques that meet the | |||
operational requirements is out-of-scope but the underlying protocol | operational requirements is out of scope, but the underlying protocol | |||
operations (TLS handshake and signing structures) have sufficient | operations (TLS handshake and signing structures) have sufficient | |||
algorithm agility to support such techniques when defined. | algorithm agility to support such techniques when defined. | |||
The imprint protocol described here could, however, be used by non- | The imprint protocol described here could, however, be used by non- | |||
energy constrained devices joining a non-constrained network (for | energy constrained devices joining a non-constrained network (for | |||
instance, smart light bulbs are usually mains powered, and speak | instance, smart light bulbs are usually mains powered and use 802.11 | |||
802.11). It could also be used by non-constrained devices across a | wireless technology). It could also be used by non-constrained | |||
non-energy constrained, but challenged network (such as 802.15.4). | devices across a non-energy constrained, but challenged, network | |||
The certificate contents, and the process by which the four questions | (such as 802.15.4). The certificate contents, and the process by | |||
above are resolved do apply to constrained devices. It is simply the | which the four questions above are resolved, do apply to constrained | |||
actual on-the-wire imprint protocol that could be inappropriate. | devices. It is simply the actual on-the-wire imprint protocol that | |||
could be inappropriate. | ||||
1.3.3. Network Access Controls | 1.3.3. Network Access Controls | |||
This document presumes that network access control has either already | This document presumes that network access control has already | |||
occurred, is not required, or is integrated by the proxy and | 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 | 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 Initial Device | aware of the details. Although the use of an X.509 IDevID is | |||
Identity is consistent with IEEE 802.1AR [IDevID], and allows for | consistent with IEEE 802.1AR [IDevID], and allows for alignment with | |||
alignment with 802.1X network access control methods, its use here is | 802.1X network access control methods, its use here is for pledge | |||
for pledge authentication rather than network access control. | authentication rather than network access control. Integrating this | |||
Integrating this protocol with network access control, perhaps as an | protocol with network access control, perhaps as an Extensible | |||
Extensible Authentication Protocol (EAP) method (see [RFC3748]), is | Authentication Protocol (EAP) method (see [RFC3748]), is out of scope | |||
out-of-scope. | for this document. | |||
1.3.4. Bootstrapping is not Booting | 1.3.4. Bootstrapping is Not Booting | |||
This document describes "bootstrapping" as the protocol used to | This document describes "bootstrapping" as the protocol used to | |||
obtain a local trust anchor. It is expected that this trust anchor, | obtain a local trust anchor. It is expected that this trust anchor, | |||
along with any additional configuration information subsequently | along with any additional configuration information subsequently | |||
installed, is persisted on the device across system restarts | installed, is persisted on the device across system restarts | |||
("booting"). Bootstrapping occurs only infrequently such as when a | ("booting"). Bootstrapping occurs only infrequently such as when a | |||
device is transferred to a new owner or has been reset to factory | device is transferred to a new owner or has been reset to factory | |||
default settings. | default settings. | |||
1.4. Leveraging the new key infrastructure / next steps | 1.4. Leveraging the New Key Infrastructure / Next Steps | |||
As a result of the protocol described herein, the bootstrapped | As a result of the protocol described herein, bootstrapped devices | |||
devices have the Domain CA trust anchor in common. An end entity | have the domain CA trust anchor in common. An end-entity (EE) | |||
certificate has optionally been issued from the Domain CA. This | certificate has optionally been issued from the domain CA. This | |||
makes it possible to securely deploy functionalities across the | makes it possible to securely deploy functionalities across the | |||
domain, e.g: | domain; for example: | |||
* Device management. | * Device management | |||
* Routing authentication. | * Routing authentication | |||
* Service discovery. | * Service discovery | |||
The major intended benefit is that it possible to use the credentials | The major intended benefit is the ability to use the credentials | |||
deployed by this protocol to secure the Autonomic Control Plane (ACP) | deployed by this protocol to secure the Autonomic Control Plane (ACP) | |||
([I-D.ietf-anima-autonomic-control-plane]). | [RFC8994]. | |||
1.5. Requirements for Autonomic Network Infrastructure (ANI) devices | 1.5. Requirements for Autonomic Networking Infrastructure (ANI) Devices | |||
The BRSKI protocol can be used in a number of environments. Some of | 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 | the options in this document are the result of requirements that are | |||
out of the ANI scope. This section defines the base requirements for | out of the ANI scope. This section defines the base requirements for | |||
ANI devices. | ANI devices. | |||
For devices that intend to become part of an Autonomic Network | For devices that intend to become part of an ANI [RFC8993] that | |||
Infrastructure (ANI) ([I-D.ietf-anima-reference-model]) that includes | includes an Autonomic Control Plane [RFC8994], the BRSKI protocol | |||
an Autonomic Control Plane | MUST be implemented. | |||
([I-D.ietf-anima-autonomic-control-plane]), the BRSKI protocol MUST | ||||
be implemented. | ||||
The pledge must perform discovery of the proxy as described in | The pledge must perform discovery of the proxy as described in | |||
Section 4.1 using Generic Autonomic Signaling Protocol (GRASP)'s DULL | Section 4.1 using the Discovery Unsolicited Link-Local (DULL) | |||
[I-D.ietf-anima-grasp] M_FLOOD announcements. | [RFC8990] M_FLOOD announcements of the GeneRic Autonomic Signaling | |||
Protocol (GRASP). | ||||
Upon successfully validating a voucher artifact, a status telemetry | Upon successfully validating a voucher artifact, a status telemetry | |||
MUST be returned. See Section 5.7. | MUST be returned; see Section 5.7. | |||
An ANIMA ANI pledge MUST implement the EST automation extensions | An ANIMA ANI pledge MUST implement the EST automation extensions | |||
described in Section 5.9. They supplement the [RFC7030] EST to | described in Section 5.9. They supplement the EST [RFC7030] to | |||
better support automated devices that do not have an end user. | better support automated devices that do not have an end user. | |||
The ANI Join Registrar Autonomic Service Agent (ASA) MUST support all | The ANI Join Registrar ASA MUST support all the BRSKI and above- | |||
the BRSKI and above listed EST operations. | listed EST operations. | |||
All ANI devices SHOULD support the BRSKI proxy function, using | All ANI devices SHOULD support the BRSKI proxy function, using | |||
circuit proxies over the ACP. (See Section 4.3) | Circuit Proxies over the Autonomic Control Plane (ACP) (see | |||
Section 4.3). | ||||
2. Architectural Overview | 2. Architectural Overview | |||
The logical elements of the bootstrapping framework are described in | The logical elements of the bootstrapping framework are described in | |||
this section. Figure 1 provides a simplified overview of the | this section. Figure 1 provides a simplified overview of the | |||
components. | components. | |||
+------------------------+ | +------------------------+ | |||
+--------------Drop Ship----------------| Vendor Service | | +--------------Drop-Ship----------------| Vendor Service | | |||
| +------------------------+ | | +------------------------+ | |||
| | M anufacturer| | | | | M anufacturer| | | |||
| | A uthorized |Ownership| | | | A uthorized |Ownership| | |||
| | S igning |Tracker | | | | S igning |Tracker | | |||
| | A uthority | | | | | A uthority | | | |||
| +--------------+---------+ | | +--------------+---------+ | |||
| ^ | | ^ | |||
| | BRSKI- | | | BRSKI- | |||
V | MASA | V | MASA | |||
+-------+ ............................................|... | +-------+ ............................................|... | |||
| | . | . | | | . | . | |||
| | . +------------+ +-----------+ | . | | | . +------------+ +-----------+ | . | |||
| | . | | | | | . | | | . | | | | | . | |||
|Pledge | . | Join | | Domain <-------+ . | |Pledge | . | Join | | Domain <-------+ . | |||
| | . | Proxy | | Registrar | . | | | . | Proxy | | Registrar | . | |||
| <-------->............<-------> (PKI RA) | . | | <-------->............<-------> (PKI RA) | . | |||
| | | BRSKI-EST | | . | | | | BRSKI-EST | | . | |||
| | . | | +-----+-----+ . | | | . | | +-----+-----+ . | |||
|IDevID | . +------------+ | e.g. RFC7030 . | |IDevID | . +------------+ | e.g., RFC 7030 . | |||
| | . +-----------------+----------+ . | | | . +-----------------+----------+ . | |||
| | . | Key Infrastructure | . | | | . | Key Infrastructure | . | |||
| | . | (e.g., PKI Certificate | . | | | . | (e.g., PKI CA) | . | |||
+-------+ . | Authority) | . | +-------+ . | | . | |||
. +----------------------------+ . | . +----------------------------+ . | |||
. . | . . | |||
................................................ | ................................................ | |||
"Domain" components | "Domain" Components | |||
Figure 1: Architecture Overview | Figure 1: Architecture Overview | |||
We assume a multi-vendor network. In such an environment there could | We assume a multivendor network. In such an environment, there could | |||
be a Manufacturer Service for each manufacturer that supports devices | be a manufacturer service for each manufacturer that supports devices | |||
following this document's specification, or an integrator could | following this document's specification, or an integrator could | |||
provide a generic service authorized by multiple manufacturers. It | provide a generic service authorized by multiple manufacturers. It | |||
is unlikely that an integrator could provide Ownership Tracking | is unlikely that an integrator could provide ownership tracking | |||
services for multiple manufacturers due to the required sales channel | services for multiple manufacturers due to the required sales channel | |||
integrations necessary to track ownership. | integrations necessary to track ownership. | |||
The domain is the managed network infrastructure with a Key | The domain is the managed network infrastructure with a key | |||
Infrastructure the pledge is joining. The domain provides initial | infrastructure that the pledge is joining. The domain provides | |||
device connectivity sufficient for bootstrapping through a proxy. | initial device connectivity sufficient for bootstrapping through a | |||
The domain registrar authenticates the pledge, makes authorization | proxy. The domain registrar authenticates the pledge, makes | |||
decisions, and distributes vouchers obtained from the Manufacturer | authorization decisions, and distributes vouchers obtained from the | |||
Service. Optionally the registrar also acts as a PKI Certification | manufacturer service. Optionally, the registrar also acts as a PKI | |||
Authority. | CA. | |||
2.1. Behavior of a Pledge | 2.1. Behavior of a Pledge | |||
The pledge goes through a series of steps, which are outlined here at | The pledge goes through a series of steps, which are outlined here at | |||
a high level. | a high level. | |||
------------ | ------------ | |||
/ Factory \ | / Factory \ | |||
\ default / | \ default / | |||
-----+------ | -----+------ | |||
skipping to change at page 15, line 36 ¶ | skipping to change at line 699 ¶ | |||
| | (3) Request | | | | (3) Request | | |||
| | Join | | | | Join | | |||
| +------+-------+ | | +------+-------+ | |||
| | | | | | |||
| +------v-------+ | | +------v-------+ | |||
| | (4) Imprint | | | | (4) Imprint | | |||
^------------+ | | ^------------+ | | |||
| Bad MASA +------+-------+ | | Bad MASA +------+-------+ | |||
| response | send Voucher Status Telemetry | | response | send Voucher Status Telemetry | |||
| +------v-------+ | | +------v-------+ | |||
| | (5) Enroll |<---+ (non-error HTTP codes ) | | | (5) Enroll |<---+ (non-error HTTP codes) | |||
^------------+ |\___/ (e.g. 202 'Retry-After') | ^------------+ |\___/ (e.g., 202 "Retry-After") | |||
| Enroll +------+-------+ | | Enroll +------+-------+ | |||
| Failure | | | failure | | |||
| -----v------ | | -----v------ | |||
| / Enrolled \ | | / Enrolled \ | |||
^------------+ | | ^------------+ | | |||
Factory \------------/ | Factory \------------/ | |||
reset | reset | |||
Figure 2: Pledge State Diagram | Figure 2: Pledge State Diagram | |||
State descriptions for the pledge are as follows: | State descriptions for the pledge are as follows: | |||
1. Discover a communication channel to a registrar. | 1. Discover a communication channel to a registrar. | |||
2. Identify itself. This is done by presenting an X.509 IDevID | 2. Identify itself. This is done by presenting an X.509 IDevID | |||
credential to the discovered registrar (via the proxy) in a TLS | credential to the discovered registrar (via the proxy) in a TLS | |||
handshake. (The registrar credentials are only provisionally | handshake. (The registrar credentials are only provisionally | |||
accepted at this time). | accepted at this time.) | |||
3. Request to join the discovered registrar. A unique nonce is | 3. Request to join the discovered registrar. A unique nonce is | |||
included ensuring that any responses can be associated with this | included, ensuring that any responses can be associated with this | |||
particular bootstrapping attempt. | particular bootstrapping attempt. | |||
4. Imprint on the registrar. This requires verification of the | 4. Imprint on the registrar. This requires verification of the | |||
manufacturer-service-provided voucher. A voucher contains | manufacturer-service-provided voucher. A voucher contains | |||
sufficient information for the pledge to complete authentication | sufficient information for the pledge to complete authentication | |||
of a registrar. This document details this step in depth. | of a registrar. This document details this step in depth. | |||
5. Enroll. After imprint an authenticated TLS (HTTPS) connection | 5. Enroll. After imprint, an authenticated TLS (HTTPS) connection | |||
exists between pledge and registrar. Enrollment over Secure | exists between the pledge and registrar. EST [RFC7030] can then | |||
Transport (EST) [RFC7030] can then be used to obtain a domain | be used to obtain a domain certificate from a registrar. | |||
certificate from a registrar. | ||||
The pledge is now a member of, and can be managed by, the domain and | 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 | will only repeat the discovery aspects of bootstrapping if it is | |||
returned to factory default settings. | returned to factory default settings. | |||
This specification details integration with EST enrollment so that | This specification details integration with EST enrollment so that | |||
pledges can optionally obtain a locally issued certificate, although | pledges can optionally obtain a locally issued certificate, although | |||
any Representational State Transfer (REST) (see [REST]) interface | any Representational State Transfer (REST) (see [REST]) interface | |||
could be integrated in future work. | could be integrated in future work. | |||
2.2. Secure Imprinting using Vouchers | 2.2. Secure Imprinting Using Vouchers | |||
A voucher is a cryptographically protected artifact (using a digital | A voucher is a cryptographically protected artifact (using a digital | |||
signature) to the pledge device authorizing a zero-touch imprint on | signature) to the pledge device authorizing a zero-touch imprint on | |||
the registrar domain. | the registrar domain. | |||
The format and cryptographic mechanism of vouchers is described in | The format and cryptographic mechanism of vouchers is described in | |||
detail in [RFC8366]. | detail in [RFC8366]. | |||
Vouchers provide a flexible mechanism to secure imprinting: the | Vouchers provide a flexible mechanism to secure imprinting: the | |||
pledge device only imprints when a voucher can be validated. At the | pledge device only imprints when a voucher can be validated. At the | |||
lowest security levels the MASA can indiscriminately issue vouchers | lowest security levels, the MASA can indiscriminately issue vouchers | |||
and log claims of ownership by domains. At the highest security | and log claims of ownership by domains. At the highest security | |||
levels issuance of vouchers can be integrated with complex sales | levels, issuance of vouchers can be integrated with complex sales | |||
channel integrations that are beyond the scope of this document. The | channel integrations that are beyond the scope of this document. The | |||
sales channel integration would verify actual (legal) ownership of | sales channel integration would verify actual (legal) ownership of | |||
the pledge by the domain. This provides the flexibility for a number | 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 | 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 | registrar devices that are to be widely deployed in the field. The | |||
MASA services have the flexibility to leverage either the currently | MASA services have the flexibility to either leverage the currently | |||
defined claim mechanisms or to experiment with higher or lower | defined claim mechanisms or experiment with higher or lower security | |||
security levels. | levels. | |||
Vouchers provide a signed but non-encrypted communication channel | Vouchers provide a signed but non-encrypted communication channel | |||
among the pledge, the MASA, and the registrar. The registrar | among the pledge, the MASA, and the registrar. The registrar | |||
maintains control over the transport and policy decisions, allowing | maintains control over the transport and policy decisions, allowing | |||
the local security policy of the domain network to be enforced. | the local security policy of the domain network to be enforced. | |||
2.3. Initial Device Identifier | 2.3. Initial Device Identifier | |||
Pledge authentication and pledge voucher-request signing is via a | Pledge authentication and pledge voucher-request signing is via a | |||
PKIX-shaped certificate installed during the manufacturing process. | PKIX-shaped certificate installed during the manufacturing process. | |||
This is the 802.1AR Initial Device Identifier (IDevID), and it | This is the 802.1AR IDevID, and it provides a basis for | |||
provides a basis for authenticating the pledge during the protocol | authenticating the pledge during the protocol exchanges described | |||
exchanges described here. There is no requirement for a common root | here. There is no requirement for a common root PKI hierarchy. Each | |||
PKI hierarchy. Each device manufacturer can generate its own root | device manufacturer can generate its own root certificate. | |||
certificate. Specifically, the IDevID enables: | Specifically, the IDevID enables: | |||
1. Uniquely identifying the pledge by the Distinguished Name (DN) | * Uniquely identifying the pledge by the Distinguished Name (DN) and | |||
and subjectAltName (SAN) parameters in the IDevID. The unique | subjectAltName (SAN) parameters in the IDevID. The unique | |||
identification of a pledge in the voucher objects are derived | identification of a pledge in the voucher objects are derived from | |||
from those parameters as described below. Section 10.3 discusses | those parameters as described below. Section 10.3 discusses | |||
privacy implications of the identifier. | privacy implications of the identifier. | |||
2. Provides a cryptographic authentication of the pledge to the | * Providing a cryptographic authentication of the pledge to the | |||
Registrar (see Section 5.3). | registrar (see Section 5.3). | |||
3. Secure auto-discovery of the pledge's MASA by the registrar (see | * Securing auto-discovery of the pledge's MASA by the registrar (see | |||
Section 2.8). | Section 2.8). | |||
4. Signing of voucher-request by the pledge's IDevID (see | * Signing of a voucher-request by the pledge's IDevID (see | |||
Section 3). | Section 3). | |||
5. Provides a cryptographic authentication of the pledge to the MASA | * Providing a cryptographic authentication of the pledge to the MASA | |||
(see Section 5.5.5). | (see Section 5.5.5). | |||
Section 7.2.13 (2009 edition) and section 8.10.3 (2018 edition) of | Sections 7.2.13 (2009 edition) and 8.10.3 (2018 edition) of [IDevID] | |||
[IDevID] discusses keyUsage and extendedKeyUsage extensions in the | discuss keyUsage and extendedKeyUsage extensions in the IDevID | |||
IDevID certificate. [IDevID] acknowledges that adding restrictions | certificate. [IDevID] acknowledges that adding restrictions in the | |||
in the certificate limits applicability of these long-lived | certificate limits applicability of these long-lived certificates. | |||
certificates. This specification emphasizes this point, and | This specification emphasizes this point and therefore RECOMMENDS | |||
therefore RECOMMENDS that no key usage restrictions be included. | that no key usage restrictions be included. This is consistent with | |||
This is consistent with [RFC5280] section 4.2.1.3, which does not | [RFC5280], Section 4.2.1.3, which does not require key usage | |||
require key usage restrictions for end entity certificates. | restrictions for end-entity certificates. | |||
2.3.1. Identification of the Pledge | 2.3.1. Identification of the Pledge | |||
In the context of BRSKI, pledges have a 1:1 relationship with a | In the context of BRSKI, pledges have a 1:1 relationship with a | |||
"serial-number". This serial-number is used both in the "serial- | "serial-number". This serial-number is used both in the serial- | |||
number" field of voucher or voucher-requests (see Section 3) and in | number field of a voucher or voucher-requests (see Section 3) and in | |||
local policies on registrar or MASA (see Section 5). | local policies on the registrar or MASA (see Section 5). | |||
There is a (certificate) serialNumber field is defined in [RFC5280] | There is a (certificate) serialNumber field defined in [RFC5280], | |||
section 4.1.2.2. In the ASN.1, this is referred to as the | Section 4.1.2.2. In ASN.1, this is referred to as the | |||
CertificateSerialNumber. This field is NOT relevant to this | CertificateSerialNumber. This field is NOT relevant to this | |||
specification. Do not confuse this field with the "serial-number" | specification. Do not confuse this field with the serial-number | |||
defined by this document, or by [IDevID] and [RFC4519] section 2.31. | defined by this document, or by [IDevID] and [RFC4519], Section 2.31. | |||
The device serial number is defined in [RFC5280] section A.1 and A.2 | The device serial number is defined in Appendix A.1 of [RFC5280] as | |||
as the X520SerialNumber, with the OID tag id-at-serialNumber. | the X520SerialNumber, with the OID tag id-at-serialNumber. | |||
The device serial number field (X520SerialNumber) is used as follows | The device _serialNumber_ field (X520SerialNumber) is used as follows | |||
by the pledge to build the "serial-number" that is placed in the | 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 | voucher-request. In order to build it, the fields need to be | |||
converted into a serial-number of "type string". | converted into a serial-number of "type string". | |||
An example of a printable form of the "serialNumber" field is | An example of a printable form of the serialNumber field is provided | |||
provided in [RFC4519] section 2.31 ("WI-3005"). That section further | in [RFC4519], Section 2.31 ("WI-3005"). That section further | |||
provides equality and syntax attributes. | provides equality and syntax attributes. | |||
Due to the reality of existing device identity provisioning | Due to the reality of existing device identity provisioning | |||
processes, some manufacturers have stored serial-numbers in other | processes, some manufacturers have stored serial-numbers in other | |||
fields. Registrar's SHOULD be configurable, on a per-manufacturer | fields. Registrars SHOULD be configurable, on a per-manufacturer | |||
basis, to look for serial-number equivalents in other fields. | basis, to look for serial-number equivalents in other fields. | |||
As explained in Section 5.5 the Registrar MUST extract the serial- | As explained in Section 5.5, the registrar MUST again extract the | |||
number again itself from the pledge's TLS certificate. It can | serialNumber itself from the pledge's TLS certificate. It can | |||
consult the serial-number in the pledge-request if there are any | consult the serial-number in the pledge request if there is any | |||
possible confusion about the source of the serial-number. | possible confusion about the source of the serial-number. | |||
2.3.2. MASA URI extension | 2.3.2. MASA URI Extension | |||
This document defines a new PKIX non-critical certificate 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 | to carry the MASA URI. This extension is intended to be used in the | |||
IDevID certificate. The URI is represented as described in | IDevID certificate. The URI is represented as described in | |||
Section 7.4 of [RFC5280]. | Section 7.4 of [RFC5280]. | |||
The URI provides the authority information. The BRSKI "/.well-known" | The URI provides the authority information. The BRSKI "/.well-known" | |||
tree ([RFC5785]) is described in Section 5. | tree [RFC8615] is described in Section 5. | |||
A complete URI MAY be in this extension, including the 'scheme', | A complete URI MAY be in this extension, including the "scheme", | |||
'authority', and 'path', The complete URI will typically be used in | "authority", and "path". The complete URI will typically be used in | |||
diagnostic or experimental situations. Typically, (and in | diagnostic or experimental situations. Typically (and in | |||
consideration to constrained systems), this SHOULD be reduced to only | consideration to constrained systems), this SHOULD be reduced to only | |||
the 'authority', in which case a scheme of "https://" ([RFC7230] | the "authority", in which case a scheme of "https://" (see [RFC7230], | |||
section 2.7.3) and 'path' of "/.well-known/brski" is to be assumed. | 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 | The registrar can assume that only the "authority" is present in the | |||
extension, if there are no slash ("/") characters in the extension. | extension, if there are no slash ("/") characters in the extension. | |||
Section 7.4 of [RFC5280] calls out various schemes that MUST be | Section 7.4 of [RFC5280] calls out various schemes that MUST be | |||
supported, including LDAP, HTTP and FTP. However, the registrar MUST | supported, including the Lightweight Directory Access Protocol | |||
use HTTPS for the BRSKI-MASA connection. | (LDAP), HTTP, and FTP. However, the registrar MUST use HTTPS for the | |||
BRSKI-MASA connection. | ||||
The new extension is identified as follows: | The new extension is identified as follows: | |||
<CODE BEGINS> | <CODE BEGINS> | |||
MASAURLExtnModule-2016 { iso(1) identified-organization(3) dod(6) | MASAURLExtnModule-2016 { iso(1) identified-organization(3) dod(6) | |||
internet(1) security(5) mechanisms(5) pkix(7) | internet(1) security(5) mechanisms(5) pkix(7) | |||
id-mod(0) id-mod-MASAURLExtn2016(TBD) } | id-mod(0) id-mod-MASAURLExtn2016(96) } | |||
DEFINITIONS IMPLICIT TAGS ::= BEGIN | DEFINITIONS IMPLICIT TAGS ::= BEGIN | |||
-- EXPORTS ALL -- | -- EXPORTS ALL -- | |||
IMPORTS | IMPORTS | |||
EXTENSION | EXTENSION | |||
FROM PKIX-CommonTypes-2009 | FROM PKIX-CommonTypes-2009 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
skipping to change at page 20, line 30 ¶ | skipping to change at line 894 ¶ | |||
id-pe FROM PKIX1Explicit-2009 | id-pe FROM PKIX1Explicit-2009 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-pkix1-explicit-02(51) } ; | id-mod-pkix1-explicit-02(51) } ; | |||
MASACertExtensions EXTENSION ::= { ext-MASAURL, ... } | MASACertExtensions EXTENSION ::= { ext-MASAURL, ... } | |||
ext-MASAURL EXTENSION ::= { SYNTAX MASAURLSyntax | ext-MASAURL EXTENSION ::= { SYNTAX MASAURLSyntax | |||
IDENTIFIED BY id-pe-masa-url } | IDENTIFIED BY id-pe-masa-url } | |||
id-pe-masa-url OBJECT IDENTIFIER ::= { id-pe TBD } | id-pe-masa-url OBJECT IDENTIFIER ::= { id-pe 32 } | |||
MASAURLSyntax ::= IA5String | MASAURLSyntax ::= IA5String | |||
END | END | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 3: MASAURL ASN.1 Module | Figure 3: MASAURL ASN.1 Module | |||
The choice of id-pe is based on guidance found in Section 4.2.2 of | 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 | [RFC5280]: "These extensions may be used to direct applications to | |||
on-line information about the issuer or the subject". The MASA URL | on-line information about the issuer or the subject". The MASA URL | |||
is precisely that: online information about the particular subject. | is precisely that: online information about the particular subject. | |||
2.4. Protocol Flow | 2.4. Protocol Flow | |||
A representative flow is shown in Figure 4 | A representative flow is shown in Figure 4. | |||
+--------+ +---------+ +------------+ +------------+ | +--------+ +---------+ +------------+ +------------+ | |||
| Pledge | | Circuit | | Domain | | Vendor | | | Pledge | | Circuit | | Domain | | Vendor | | |||
| | | Join | | Registrar | | Service | | | | | Join | | Registrar | | Service | | |||
| | | Proxy | | (JRC) | | (MASA) | | | | | Proxy | | (JRC) | | (MASA) | | |||
+--------+ +---------+ +------------+ +------------+ | +--------+ +---------+ +------------+ +------------+ | |||
| | | Internet | | | | | Internet | | |||
[discover] | | | | [discover] | | | | |||
|<-RFC4862 IPv6 addr | | | | |<-RFC 4862 IPv6 addr | | | | |||
|<-RFC3927 IPv4 addr | Appendix A | Legend | | |<-RFC 3927 IPv4 addr | Appendix A | Legend | | |||
|-++++++++++++++++++->| | C - circuit | | |-++++++++++++++++++->| | C - Circuit | | |||
| optional: mDNS query| Appendix B | join proxy | | | optional: mDNS query| Appendix B | Join Proxy | | |||
| RFC6763/RFC6762 (+) | | P - provisional | | | RFCs 6763/6762 (+) | | P - Provisional TLS| | |||
|<-++++++++++++++++++-| | TLS connection | | |<-++++++++++++++++++-| | Connection | | |||
| GRASP M_FLOOD | | | | | GRASP M_FLOOD | | | | |||
| periodic broadcast| | | | | periodic broadcast| | | | |||
[identity] | | | | [identity] | | | | |||
|<------------------->C<----------------->| | | |<------------------->C<----------------->| | | |||
| TLS via the Join Proxy | | | | TLS via the Join Proxy | | | |||
|<--Registrar TLS server authentication---| | | |<--Registrar TLS server authentication---| | | |||
[PROVISIONAL accept of server cert] | | | [PROVISIONAL accept of server cert] | | | |||
P---X.509 client authentication---------->| | | P---X.509 client authentication---------->| | | |||
[request join] | | | [request join] | | | |||
P---Voucher Request(w/nonce for voucher)->| | | P---Voucher-Request(w/nonce for voucher)->| | | |||
P /------------------- | | | P /------------------- | | | |||
P | [accept device?] | | P | [accept device?] | | |||
P | [contact Vendor] | | P | [contact vendor] | | |||
P | |--Pledge ID-------->| | P | |--Pledge ID-------->| | |||
P | |--Domain ID-------->| | P | |--Domain ID-------->| | |||
P | |--optional:nonce--->| | P | |--optional:nonce--->| | |||
P optional: | [extract DomainID] | P optional: | [extract DomainID] | |||
P can occur in advance | [update audit log] | P can occur in advance | [update audit-log] | |||
P if nonceleess | | | P if nonceless | | | |||
P | |<- voucher ---------| | P | |<- voucher ---------| | |||
P \------------------- | w/nonce if provided| | P \------------------- | w/nonce if provided| | |||
P<------voucher---------------------------| | | P<------voucher---------------------------| | | |||
[imprint] | | | [imprint] | | | |||
|-------voucher status telemetry--------->| | | |-------voucher status telemetry--------->| | | |||
| |<-device audit log--| | | |<-device audit-log--| | |||
| [verify audit log and voucher] | | | [verify audit-log and voucher] | | |||
|<--------------------------------------->| | | |<--------------------------------------->| | | |||
[enroll] | | | [enroll] | | | |||
| Continue with RFC7030 enrollment | | | | Continue with enrollment using now | | | |||
| using now bidirectionally authenticated | | | | bidirectionally authenticated TLS | | | |||
| TLS session. | | | | session per RFC 7030. | | | |||
[enrolled] | | | [enrolled] | | | |||
Figure 4: Protocol Time Sequence Diagram | Figure 4: Protocol Time Sequence Diagram | |||
On initial bootstrap, a new device (the pledge) uses a local service | On initial bootstrap, a new device (the pledge) uses a local service | |||
autodiscovery (GRASP or mDNS) to locate a join proxy. The join proxy | 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). | connects the pledge to a local registrar (the JRC). | |||
Having found a candidate registrar, the fledgling pledge sends some | Having found a candidate registrar, the fledgling pledge sends some | |||
information about itself to the registrar, including its serial | information about itself to the registrar, including its serial | |||
number in the form of a voucher request and its device identity | number in the form of a voucher-request and its IDevID certificate as | |||
certificate (IDevID) as part of the TLS session. | part of the TLS session. | |||
The registrar can determine whether it expected such a device to | The registrar can determine whether it expected such a device to | |||
appear, and locates a MASA. The location of the MASA is usually | appear and locates a MASA. The location of the MASA is usually found | |||
found in an extension in the IDevID. Having determined that the MASA | in an extension in the IDevID. Having determined that the MASA is | |||
is suitable, the entire information from the initial voucher request | suitable, the entire information from the initial voucher-request | |||
(including device serial number) is transmitted over the internet in | (including the device's serial number) is transmitted over the | |||
a TLS protected channel to the manufacturer, along with information | Internet in a TLS-protected channel to the manufacturer, along with | |||
about the registrar/owner. | information about the registrar/owner. | |||
The manufacturer can then apply policy based on the provided | The manufacturer can then apply policy based on the provided | |||
information, as well as other sources of information (such as sales | information, as well as other sources of information (such as sales | |||
records), to decide whether to approve the claim by the registrar to | 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 | own the device; if the claim is accepted, a voucher is issued that | |||
directs the device to accept its new owner. | directs the device to accept its new owner. | |||
The voucher is returned to the registrar, but not immediately to the | The voucher is returned to the registrar, but not immediately to the | |||
device -- the registrar has an opportunity to examine the voucher, | device -- the registrar has an opportunity to examine the voucher, | |||
the MASA's audit-logs, and other sources of information to determine | the MASA's audit-logs, and other sources of information to determine | |||
whether the device has been tampered with, and whether the bootstrap | whether the device has been tampered with and whether the bootstrap | |||
should be accepted. | should be accepted. | |||
No filtering of information is possible in the signed voucher, so | No filtering of information is possible in the signed voucher, so | |||
this is a binary yes-or-no decision. If the registrar accepts the | this is a binary yes-or-no decision. After the registrar has applied | |||
voucher as a proper one for its device, the voucher is returned to | any local policy to the voucher, if it accepts the voucher, then the | |||
the pledge for imprinting. | voucher is returned to the pledge for imprinting. | |||
The voucher also includes a trust anchor that the pledge uses as | The voucher also includes a trust anchor that the pledge uses to | |||
representing the owner. This is used to successfully bootstrap from | represent the owner. This is used to successfully bootstrap from an | |||
an environment where only the manufacturer has built-in trust by the | environment where only the manufacturer has built-in trust by the | |||
device into an environment where the owner now has a PKI footprint on | device to an environment where the owner now has a PKI footprint on | |||
the device. | the device. | |||
When BRSKI is followed with EST this single footprint is further | When BRSKI is followed with EST, this single footprint is further | |||
leveraged into the full owner's PKI and a LDevID for the device. | leveraged into the full owner's PKI and an LDevID for the device. | |||
Subsequent reporting steps provide flows of information to indicate | Subsequent reporting steps provide flows of information to indicate | |||
success/failure of the process. | success/failure of the process. | |||
2.5. Architectural Components | 2.5. Architectural Components | |||
2.5.1. Pledge | 2.5.1. Pledge | |||
The pledge is the device that is attempting to join. The pledge is | The pledge is the device that is attempting to join. It is assumed | |||
assumed to talk to the Join Proxy using link-local network | that the pledge talks to the Join Proxy using link-local network | |||
connectivity. In most cases, the pledge has no other connectivity | connectivity. In most cases, the pledge has no other connectivity | |||
until the pledge completes the enrollment process and receives some | until the pledge completes the enrollment process and receives some | |||
kind of network credential. | kind of network credential. | |||
2.5.2. Join Proxy | 2.5.2. Join Proxy | |||
The join proxy provides HTTPS connectivity between the pledge and the | The Join Proxy provides HTTPS connectivity between the pledge and the | |||
registrar. A circuit proxy mechanism is described in Section 4. | registrar. A Circuit Proxy mechanism is described in Section 4. | |||
Additional mechanisms, including a CoAP mechanism and a stateless | Additional mechanisms, including a Constrained Application Protocol | |||
IPIP mechanism are the subject of future work. | (CoAP) mechanism and a stateless IP in IP (IPIP) mechanism, are the | |||
subject of future work. | ||||
2.5.3. Domain Registrar | 2.5.3. Domain Registrar | |||
The domain's registrar operates as the BRSKI-MASA client when | The domain's registrar operates as the BRSKI-MASA client when | |||
requesting vouchers from the MASA (see Section 5.4). The registrar | requesting vouchers from the MASA (see Section 5.4). The registrar | |||
operates as the BRSKI-EST server when pledges request vouchers (see | operates as the BRSKI-EST server when pledges request vouchers (see | |||
Section 5.1). The registrar operates as the BRSKI-EST server | Section 5.1). The registrar operates as the BRSKI-EST server | |||
"Registration Authority" if the pledge requests an end entity | "Registration Authority" if the pledge requests an end-entity | |||
certificate over the BRSKI-EST connection (see Section 5.9). | certificate over the BRSKI-EST connection (see Section 5.9). | |||
The registrar uses an Implicit Trust Anchor database for | The registrar uses an Implicit Trust Anchor database for | |||
authenticating the BRSKI-MASA connection's MASA TLS Server | authenticating the BRSKI-MASA connection's MASA TLS server | |||
Certificate. Configuration or distribution of trust anchors is out- | certificate. Configuration or distribution of trust anchors is out | |||
of-scope for this specification. | of scope for this specification. | |||
The registrar uses a different Implicit Trust Anchor database for | The registrar uses a different Implicit Trust Anchor database for | |||
authenticating the BRSKI-EST connection's Pledge TLS Client | authenticating the BRSKI-EST connection's pledge TLS Client | |||
Certificate. Configuration or distribution of the BRSKI-EST client | Certificate. Configuration or distribution of the BRSKI-EST client | |||
trust anchors is out-of-scope of this specification. Note that the | trust anchors is out of scope of this specification. Note that the | |||
trust anchors in/excluded from the database will affect which | trust anchors in / excluded from the database will affect which | |||
manufacturers' devices are acceptable to the registrar as pledges, | manufacturers' devices are acceptable to the registrar as pledges, | |||
and can also be used to limit the set of MASAs that are trusted for | and they can also be used to limit the set of MASAs that are trusted | |||
enrollment. | for enrollment. | |||
2.5.4. Manufacturer Service | 2.5.4. Manufacturer Service | |||
The Manufacturer Service provides two logically separate functions: | The manufacturer service provides two logically separate functions: | |||
the Manufacturer Authorized Signing Authority (MASA) described in | the MASA as described in Sections 5.5 and 5.6 and an ownership | |||
Section 5.5 and Section 5.6, and an ownership tracking/auditing | tracking/auditing function as described in Sections 5.7 and 5.8. | |||
function described in Section 5.7 and Section 5.8. | ||||
2.5.5. Public Key Infrastructure (PKI) | 2.5.5. Public Key Infrastructure (PKI) | |||
The Public Key Infrastructure (PKI) administers certificates for the | The Public Key Infrastructure (PKI) administers certificates for the | |||
domain of concern, providing the trust anchor(s) for it and allowing | domain of concern, providing the trust anchor(s) for it and allowing | |||
enrollment of pledges with domain certificates. | enrollment of pledges with domain certificates. | |||
The voucher provides a method for the distribution of a single PKI | The voucher provides a method for the distribution of a single PKI | |||
trust anchor (as the "pinned-domain-cert"). A distribution of the | trust anchor (as the "pinned-domain-cert"). A distribution of the | |||
full set of current trust anchors is possible using the optional EST | full set of current trust anchors is possible using the optional EST | |||
integration. | integration. | |||
The domain's registrar acts as an [RFC5272] Registration Authority, | The domain's registrar acts as a Registration Authority [RFC5272], | |||
requesting certificates for pledges from the Key Infrastructure. | requesting certificates for pledges from the PKI. | |||
The expectations of the PKI are unchanged from EST [RFC7030]. This | The expectations of the PKI are unchanged from EST [RFC7030]. This | |||
document does not place any additional architectural requirements on | document does not place any additional architectural requirements on | |||
the Public Key Infrastructure. | the PKI. | |||
2.6. Certificate Time Validation | 2.6. Certificate Time Validation | |||
2.6.1. Lack of realtime clock | 2.6.1. Lack of Real-Time Clock | |||
Many devices when bootstrapping do not have knowledge of the current | When bootstrapping, many devices do not have knowledge of the current | |||
time. Mechanisms such as Network Time Protocols cannot be secured | time. Mechanisms such as Network Time Protocols cannot be secured | |||
until bootstrapping is complete. Therefore bootstrapping is defined | until bootstrapping is complete. Therefore, bootstrapping is defined | |||
with a framework that does not require knowledge of the current time. | 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 | A pledge MAY ignore all time stamps in the voucher and in the | |||
certificate validity periods if it does not know the current time. | certificate validity periods if it does not know the current time. | |||
The pledge is exposed to dates in the following five places: | The pledge is exposed to dates in the following five places: | |||
registrar certificate notBefore, registrar certificate notAfter, | registrar certificate notBefore, registrar certificate notAfter, | |||
voucher created-on, and voucher expires-on. Additionally, CMS | voucher created-on, and voucher expires-on. Additionally, | |||
signatures contain a signingTime. | Cryptographic Message Syntax (CMS) signatures contain a signingTime. | |||
A pledge with a real time clock in which it has confidence, MUST | A pledge with a real-time clock in which it has confidence MUST check | |||
check the above time fields in all certificates and signatures that | the above time fields in all certificates and signatures that it | |||
it processes. | processes. | |||
If the voucher contains a nonce then the pledge MUST confirm the | If the voucher contains a nonce, then the pledge MUST confirm the | |||
nonce matches the original pledge voucher-request. This ensures the | nonce matches the original pledge voucher-request. This ensures the | |||
voucher is fresh. See Section 5.2. | voucher is fresh. See Section 5.2. | |||
2.6.2. Infinite Lifetime of IDevID | 2.6.2. Infinite Lifetime of IDevID | |||
[RFC5280] explains that long lived pledge certificates "SHOULD be | Long-lived pledge certificates "SHOULD be assigned the | |||
assigned the GeneralizedTime value of 99991231235959Z" for the | GeneralizedTime value of 99991231235959Z" for the notAfter field as | |||
notAfter field. | explained in [RFC5280]. | |||
Some deployed IDevID management systems are not compliant with the | Some deployed IDevID management systems are not compliant with the | |||
802.1AR requirement for infinite lifetimes, and put in typical <= 3 | 802.1AR requirement for infinite lifetimes and are put in typical <= | |||
year certificate lifetimes. Registrars SHOULD be configurable on a | 3 year certificate lifetimes. Registrars SHOULD be configurable on a | |||
per-manufacturer basis to ignore pledge lifetimes when the pledge did | per-manufacturer basis to ignore pledge lifetimes when the pledge | |||
not follow the RFC5280 recommendations. | does not follow the recommendations in [RFC5280]. | |||
2.7. Cloud Registrar | 2.7. Cloud Registrar | |||
There exist operationally open networks wherein devices gain | There exist operationally open networks wherein devices gain | |||
unauthenticated access to the Internet at large. In these use cases | unauthenticated access to the Internet at large. In these use cases, | |||
the management domain for the device needs to be discovered within | the management domain for the device needs to be discovered within | |||
the larger Internet. The case where a device can boot and get access | the larger Internet. The case where a device can boot and get access | |||
to larger Internet are less likely within the ANIMA ACP scope but may | to a larger Internet is less likely within the ANIMA ACP scope but | |||
be more important in the future. In the ANIMA ACP scope, new devices | may be more important in the future. In the ANIMA ACP scope, new | |||
will be quarantined behind a Join Proxy. | devices will be quarantined behind a Join Proxy. | |||
There are additionally some greenfield situations involving an | Additionally, there are some greenfield situations involving an | |||
entirely new installation where a device may have some kind of | entirely new installation where a device may have some kind of | |||
management uplink that it can use (such as via 3G network for | management uplink that it can use (such as via a 3G network, for | |||
instance). In such a future situation, the device might use this | instance). In such a future situation, the device might use this | |||
management interface to learn that it should configure itself to | management interface to learn that it should configure itself to | |||
become the local registrar. | become the local registrar. | |||
In order to support these scenarios, the pledge MAY contact a well | In order to support these scenarios, the pledge MAY contact a well- | |||
known URI of a cloud registrar if a local registrar cannot be | 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 | discovered or if the pledge's target use cases do not include a local | |||
registrar. | registrar. | |||
If the pledge uses a well known URI for contacting a cloud registrar | If the pledge uses a well-known URI for contacting a cloud registrar, | |||
a manufacturer-assigned Implicit Trust Anchor database (see | a manufacturer-assigned Implicit Trust Anchor database (see | |||
[RFC7030]) MUST be used to authenticate that service as described in | [RFC7030]) MUST be used to authenticate that service as described in | |||
[RFC6125]. The use of a DNS-ID for validation is appropriate, and it | [RFC6125]. The use of a DNS-ID for validation is appropriate, and it | |||
may include wildcard components on the left-mode side. This is | may include wildcard components on the left-mode side. This is | |||
consistent with the human user configuration of an EST server URI in | consistent with the human-user configuration of an EST server URI in | |||
[RFC7030] which also depends on RFC6125. | [RFC7030], which also depends on [RFC6125]. | |||
2.8. Determining the MASA to contact | 2.8. Determining the MASA to Contact | |||
The registrar needs to be able to contact a MASA that is trusted by | The registrar needs to be able to contact a MASA that is trusted by | |||
the pledge in order to obtain vouchers. There are three mechanisms | the pledge in order to obtain vouchers. | |||
described: | ||||
The device's Initial Device Identifier (IDevID) will normally contain | The device's IDevID will normally contain the MASA URL as detailed in | |||
the MASA URL as detailed in Section 2.3. This is the RECOMMENDED | Section 2.3. This is the RECOMMENDED mechanism. | |||
mechanism. | ||||
It can be operationally difficult to ensure the necessary X.509 | In some cases, it can be operationally difficult to ensure the | |||
extensions are in the pledge's IDevID due to the difficulty of | necessary X.509 extensions are in the pledge's IDevID due to the | |||
aligning current pledge manufacturing with software releases and | difficulty of aligning current pledge manufacturing with software | |||
development. As a final fallback the registrar MAY be manually | releases and development; thus, as a final fallback, the registrar | |||
configured or distributed with a MASA URL for each manufacturer. | MAY be manually configured or distributed with a MASA URL for each | |||
Note that the registrar can only select the configured MASA URL based | manufacturer. Note that the registrar can only select the configured | |||
on the trust anchor -- so manufacturers can only leverage this | MASA URL based on the trust anchor -- so manufacturers can only | |||
approach if they ensure a single MASA URL works for all pledges | leverage this approach if they ensure a single MASA URL works for all | |||
associated with each trust anchor. | pledges associated with each trust anchor. | |||
3. Voucher-Request artifact | 3. Voucher-Request Artifact | |||
Voucher-requests are how vouchers are requested. The semantics of | Voucher-requests are how vouchers are requested. The semantics of | |||
the voucher-request are described below, in the YANG model. | the voucher-request are described below, in the YANG module. | |||
A pledge forms the "pledge voucher-request", signs it with it's | A pledge forms the "pledge voucher-request", signs it with its | |||
IDevID and submits it to the registrar. | IDevID, and submits it to the registrar. | |||
The registrar in turn forms the "registrar voucher-request", signs it | In turn, the registrar forms the "registrar voucher-request", signs | |||
with it's Registrar keypair and submits it to the MASA. | it with its registrar key pair, and submits it to the MASA. | |||
The "proximity-registrar-cert" leaf is used in the pledge voucher- | The "proximity-registrar-cert" leaf is used in the pledge voucher- | |||
requests. This provides a method for the pledge to assert the | requests. This provides a method for the pledge to assert the | |||
registrar's proximity. | registrar's proximity. | |||
This network proximity results from the following properties in the | This network proximity results from the following properties in the | |||
ACP context: the pledge is connected to the Join Proxy (Section 4) | ACP context: the pledge is connected to the Join Proxy (Section 4) | |||
using a Link-Local IPv6 connection. While the Join Proxy does not | using a link-local IPv6 connection. While the Join Proxy does not | |||
participate in any meaningful sense in the cryptography of the TLS | participate in any meaningful sense in the cryptography of the TLS | |||
connection (such as via a Channel Binding), the Registrar can observe | connection (such as via a Channel Binding), the registrar can observe | |||
that the connection is via the private ACP (ULA) address of the join | that the connection is via the private ACP (ULA) address of the Join | |||
proxy, and could not come from outside the ACP. The Pledge must | 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 | therefore be at most one IPv6 link-local hop away from an existing | |||
node on the ACP. | node on the ACP. | |||
Other users of BRSKI will need to define other kinds of assertions if | Other users of BRSKI will need to define other kinds of assertions if | |||
the network proximity described above does not match their needs. | the network proximity described above does not match their needs. | |||
The "prior-signed-voucher-request" leaf is used in registrar voucher- | The "prior-signed-voucher-request" leaf is used in registrar voucher- | |||
requests. If present, it is the signed pledge voucher-request | requests. If present, it is the signed pledge voucher-request | |||
artifact. This provides a method for the registrar to forward the | artifact. This provides a method for the registrar to forward the | |||
pledge's signed request to the MASA. This completes transmission of | pledge's signed request to the MASA. This completes transmission of | |||
the signed "proximity-registrar-cert" leaf. | the signed proximity-registrar-cert leaf. | |||
Unless otherwise signaled (outside the voucher-request artifact), the | Unless otherwise signaled (outside the voucher-request artifact), the | |||
signing structure is as defined for vouchers, see [RFC8366]. | signing structure is as defined for vouchers; see [RFC8366]. | |||
3.1. Nonceless Voucher Requests | 3.1. Nonceless Voucher-Requests | |||
A registrar MAY also retrieve nonceless vouchers by sending nonceless | A registrar MAY also retrieve nonceless vouchers by sending nonceless | |||
voucher-requests to the MASA in order to obtain vouchers for use when | voucher-requests to the MASA in order to obtain vouchers for use when | |||
the registrar does not have connectivity to the MASA. No "prior- | the registrar does not have connectivity to the MASA. No prior- | |||
signed-voucher-request" leaf would be included. The registrar will | signed-voucher-request leaf would be included. The registrar will | |||
also need to know the serial number of the pledge. This document | 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 | does not provide a mechanism for the registrar to learn that in an | |||
automated fashion. Typically this will be done via scanning of bar- | automated fashion. Typically, this will be done via the scanning of | |||
code or QR-code on packaging, or via some sales channel integration. | a bar code or QR code on packaging, or via some sales channel | |||
integration. | ||||
3.2. Tree Diagram | 3.2. Tree Diagram | |||
The following tree diagram illustrates a high-level view of a | The following tree diagram illustrates a high-level view of a | |||
voucher-request document. The voucher-request builds upon the | voucher-request document. The voucher-request builds upon the | |||
voucher artifact described in [RFC8366]. The tree diagram is | voucher artifact described in [RFC8366]. The tree diagram is | |||
described in [RFC8340]. Each node in the diagram is fully described | 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 | by the YANG module in Section 3.4. Please review the YANG module for | |||
a detailed description of the voucher-request format. | a detailed description of the voucher-request format. | |||
module: ietf-voucher-request | module: ietf-voucher-request | |||
grouping voucher-request-grouping | grouping voucher-request-grouping | |||
+-- voucher | +-- voucher | |||
+-- created-on? yang:date-and-time | +-- created-on? yang:date-and-time | |||
+-- expires-on? yang:date-and-time | +-- expires-on? yang:date-and-time | |||
+-- assertion? enumeration | +-- assertion? enumeration | |||
+-- serial-number string | +-- serial-number string | |||
+-- idevid-issuer? binary | +-- idevid-issuer? binary | |||
+-- pinned-domain-cert? binary | +-- pinned-domain-cert? binary | |||
+-- domain-cert-revocation-checks? boolean | +-- domain-cert-revocation-checks? boolean | |||
+-- nonce? binary | +-- nonce? binary | |||
+-- last-renewal-date? yang:date-and-time | +-- last-renewal-date? yang:date-and-time | |||
+-- prior-signed-voucher-request? binary | +-- prior-signed-voucher-request? binary | |||
+-- proximity-registrar-cert? binary | +-- proximity-registrar-cert? binary | |||
Figure 5: YANG Tree diagram for Voucher-Request | Figure 5: YANG Tree Diagram for a Voucher-Request | |||
3.3. Examples | 3.3. Examples | |||
This section provides voucher-request examples for illustration | This section provides voucher-request examples for illustration | |||
purposes. These examples show the JSON prior to CMS wrapping. JSON | purposes. These examples show JSON prior to CMS wrapping. JSON | |||
encoding rules specify that any binary content be base64 encoded | encoding rules specify that any binary content be base64 encoded | |||
([RFC4648] section 4). The contents of the (base64) encoded | ([RFC4648], Section 4). The contents of the (base64) encoded | |||
certificates have been elided to save space. For detailed examples, | certificates have been elided to save space. For detailed examples, | |||
see Appendix C.2. These examples conform to the encoding rules | see Appendix C.2. These examples conform to the encoding rules | |||
defined in [RFC7951]. | defined in [RFC7951]. | |||
Example (1) The following example illustrates a pledge voucher- | Example (1): The following example illustrates a pledge voucher- | |||
request. The assertion leaf is indicated as 'proximity' | request. The assertion leaf is indicated as | |||
and the registrar's TLS server certificate is included | "proximity", and the registrar's TLS server certificate | |||
in the 'proximity-registrar-cert' leaf. See | is included in the proximity-registrar-cert leaf. See | |||
Section 5.2. | Section 5.2. | |||
{ | { | |||
"ietf-voucher-request:voucher": { | "ietf-voucher-request:voucher": { | |||
"assertion": "proximity", | "assertion": "proximity", | |||
"nonce": "62a2e7693d82fcda2624de58fb6722e5", | "nonce": "62a2e7693d82fcda2624de58fb6722e5", | |||
"serial-number" : "JADA123456789", | "serial-number" : "JADA123456789", | |||
"created-on": "2017-01-01T00:00:00.000Z", | "created-on": "2017-01-01T00:00:00.000Z", | |||
"proximity-registrar-cert": "base64encodedvalue==" | "proximity-registrar-cert": "base64encodedvalue==" | |||
} | } | |||
} | } | |||
Figure 6: JSON representation of example Voucher-Request | Figure 6: JSON Representation of an Example Voucher-Request | |||
Example (2) The following example illustrates a registrar voucher- | Example (2): The following example illustrates a registrar voucher- | |||
request. The 'prior-signed-voucher-request' leaf is | request. The prior-signed-voucher-request leaf is | |||
populated with the pledge's voucher-request (such as the | populated with the pledge's voucher-request (such as | |||
prior example). The pledge's voucher-request is a | the prior example). The pledge's voucher-request is a | |||
binary CMS signed object. In the JSON encoding used | binary CMS-signed object. In the JSON encoding used | |||
here it must be base64 encoded. The nonce and assertion | here, it must be base64 encoded. The nonce and | |||
have been carried forward from the pledge request to the | assertion have been carried forward from the pledge | |||
registrar request. The serial-number is extracted from | request to the registrar request. The serial-number is | |||
the pledge's Client Certificate from the TLS connection. | extracted from the pledge's Client Certificate from the | |||
See Section 5.5. | TLS connection. See Section 5.5. | |||
{ | { | |||
"ietf-voucher-request:voucher": { | "ietf-voucher-request:voucher": { | |||
"assertion" : "proximity", | "assertion" : "proximity", | |||
"nonce": "62a2e7693d82fcda2624de58fb6722e5", | "nonce": "62a2e7693d82fcda2624de58fb6722e5", | |||
"created-on": "2017-01-01T00:00:02.000Z", | "created-on": "2017-01-01T00:00:02.000Z", | |||
"idevid-issuer": "base64encodedvalue==", | "idevid-issuer": "base64encodedvalue==", | |||
"serial-number": "JADA123456789", | "serial-number": "JADA123456789", | |||
"prior-signed-voucher-request": "base64encodedvalue==" | "prior-signed-voucher-request": "base64encodedvalue==" | |||
} | } | |||
} | } | |||
Figure 7: JSON representation of example Prior-Signed Voucher-Request | Figure 7: JSON Representation of an Example Prior-Signed Voucher- | |||
Request | ||||
Example (3) The following example illustrates a registrar voucher- | Example (3): The following example illustrates a registrar voucher- | |||
request. The 'prior-signed-voucher-request' leaf is not | request. The prior-signed-voucher-request leaf is not | |||
populated with the pledge's voucher-request nor is the | populated with the pledge's voucher-request nor is the | |||
nonce leaf. This form might be used by a registrar | nonce leaf. This form might be used by a registrar | |||
requesting a voucher when the pledge can not communicate | requesting a voucher when the pledge cannot communicate | |||
with the registrar (such as when it is powered down, or | with the registrar (such as when it is powered down or | |||
still in packaging), and therefore could not submit a | still in packaging) and therefore cannot submit a | |||
nonce. This scenario is most useful when the registrar | nonce. This scenario is most useful when the registrar | |||
is aware that it will not be able to reach the MASA | is aware that it will not be able to reach the MASA | |||
during deployment. See Section 5.5. | during deployment. See Section 5.5. | |||
{ | { | |||
"ietf-voucher-request:voucher": { | "ietf-voucher-request:voucher": { | |||
"created-on": "2017-01-01T00:00:02.000Z", | "created-on": "2017-01-01T00:00:02.000Z", | |||
"idevid-issuer": "base64encodedvalue==", | "idevid-issuer": "base64encodedvalue==", | |||
"serial-number": "JADA123456789" | "serial-number": "JADA123456789" | |||
} | } | |||
} | } | |||
Figure 8: JSON representation of Offline Voucher-Request | Figure 8: JSON Representation of an Offline Voucher-Request | |||
3.4. YANG Module | 3.4. YANG Module | |||
Following is a YANG [RFC7950] module formally extending the [RFC8366] | Following is a YANG module [RFC7950] that formally extends a voucher | |||
voucher into a voucher-request. | [RFC8366] into a voucher-request. This YANG module references | |||
[ITU.X690]. | ||||
<CODE BEGINS> file "ietf-voucher-request@2018-02-14.yang" | <CODE BEGINS> file "ietf-voucher-request@2021-04-10.yang" | |||
module ietf-voucher-request { | module ietf-voucher-request { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-voucher-request"; | ||||
namespace | prefix vcr; | |||
"urn:ietf:params:xml:ns:yang:ietf-voucher-request"; | ||||
prefix "vcr"; | ||||
import ietf-restconf { | import ietf-restconf { | |||
prefix rc; | prefix rc; | |||
description "This import statement is only present to access | description | |||
"This import statement is only present to access | ||||
the yang-data extension defined in RFC 8040."; | the yang-data extension defined in RFC 8040."; | |||
reference "RFC 8040: RESTCONF Protocol"; | reference | |||
"RFC 8040: RESTCONF Protocol"; | ||||
} | } | |||
import ietf-voucher { | import ietf-voucher { | |||
prefix vch; | prefix vch; | |||
description "This module defines the format for a voucher, | description | |||
which is produced by a pledge's manufacturer or | "This module defines the format for a voucher, | |||
delegate (MASA) to securely assign a pledge to | which is produced by a pledge's manufacturer or | |||
an 'owner', so that the pledge may establish a secure | delegate (MASA) to securely assign a pledge to | |||
connection to the owner's network infrastructure"; | an 'owner', so that the pledge may establish a secure | |||
connection to the owner's network infrastructure."; | ||||
reference "RFC 8366: Voucher Artifact for | reference | |||
Bootstrapping Protocols"; | "RFC 8366: A Voucher Artifact for | |||
Bootstrapping Protocols"; | ||||
} | } | |||
organization | organization | |||
"IETF ANIMA Working Group"; | "IETF ANIMA Working Group"; | |||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/wg/anima/> | "WG Web: <https://datatracker.ietf.org/wg/anima/> | |||
WG List: <mailto:anima@ietf.org> | WG List: <mailto:anima@ietf.org> | |||
Author: Kent Watsen | Author: Kent Watsen | |||
<mailto:kent+ietf@watsen.net> | <mailto:kent+ietf@watsen.net> | |||
Author: Michael H. Behringer | Author: Michael H. Behringer | |||
<mailto:Michael.H.Behringer@gmail.com> | <mailto:Michael.H.Behringer@gmail.com> | |||
Author: Toerless Eckert | Author: Toerless Eckert | |||
<mailto:tte+ietf@cs.fau.de> | <mailto:tte+ietf@cs.fau.de> | |||
Author: Max Pritikin | Author: Max Pritikin | |||
<mailto:pritikin@cisco.com> | <mailto:pritikin@cisco.com> | |||
Author: Michael Richardson | Author: Michael Richardson | |||
<mailto:mcr+ietf@sandelman.ca>"; | <mailto:mcr+ietf@sandelman.ca>"; | |||
description | description | |||
"This module defines the format for a voucher request. | "This module defines the format for a voucher-request. | |||
It is a superset of the voucher itself. | It is a superset of the voucher itself. | |||
It provides content to the MASA for consideration | It provides content to the MASA for consideration | |||
during a voucher request. | during a voucher-request. | |||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
Copyright (c) 2019 IETF Trust and the persons identified as | Copyright (c) 2021 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the RFC | This version of this YANG module is part of RFC 8995; see the | |||
itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision "2018-02-14" { | revision 2021-04-10 { | |||
description | description | |||
"Initial version"; | "Initial version"; | |||
reference | reference | |||
"RFC XXXX: Bootstrapping Remote Secure Key Infrastructure"; | "RFC 8995: Bootstrapping Remote Secure Key Infrastructure | |||
(BRSKI)"; | ||||
} | } | |||
// Top-level statement | // Top-level statement | |||
rc:yang-data voucher-request-artifact { | rc:yang-data voucher-request-artifact { | |||
uses voucher-request-grouping; | uses voucher-request-grouping; | |||
} | } | |||
// Grouping defined for future usage | // Grouping defined for future usage | |||
grouping voucher-request-grouping { | grouping voucher-request-grouping { | |||
description | description | |||
"Grouping to allow reuse/extensions in future work."; | "Grouping to allow reuse/extensions in future work."; | |||
uses vch:voucher-artifact-grouping { | uses vch:voucher-artifact-grouping { | |||
refine "voucher/created-on" { | refine "voucher/created-on" { | |||
mandatory false; | mandatory false; | |||
} | } | |||
refine "voucher/pinned-domain-cert" { | refine "voucher/pinned-domain-cert" { | |||
mandatory false; | mandatory false; | |||
description "A pinned-domain-cert field | description | |||
is not valid in a voucher request, and | "A pinned-domain-cert field is not valid in a | |||
any occurrence MUST be ignored"; | voucher-request, and any occurrence MUST be ignored."; | |||
} | } | |||
refine "voucher/last-renewal-date" { | refine "voucher/last-renewal-date" { | |||
description "A last-renewal-date field | description | |||
is not valid in a voucher request, and | "A last-renewal-date field is not valid in a | |||
any occurrence MUST be ignored"; | voucher-request, and any occurrence MUST be ignored."; | |||
} | } | |||
refine "voucher/domain-cert-revocation-checks" { | refine "voucher/domain-cert-revocation-checks" { | |||
description "The domain-cert-revocation-checks field | description | |||
is not valid in a voucher request, and | "The domain-cert-revocation-checks field is not valid in a | |||
any occurrence MUST be ignored"; | voucher-request, and any occurrence MUST be ignored."; | |||
} | } | |||
refine "voucher/assertion" { | refine "voucher/assertion" { | |||
mandatory false; | mandatory false; | |||
description "Any assertion included in registrar voucher | description | |||
requests SHOULD be ignored by the MASA."; | "Any assertion included in registrar voucher-requests | |||
SHOULD be ignored by the MASA."; | ||||
} | } | |||
augment "voucher" { | ||||
augment "voucher" { | ||||
description | description | |||
"Adds leaf nodes appropriate for requesting vouchers."; | "Adds leaf nodes appropriate for requesting vouchers."; | |||
leaf prior-signed-voucher-request { | leaf prior-signed-voucher-request { | |||
type binary; | type binary; | |||
description | description | |||
"If it is necessary to change a voucher, or re-sign and | "If it is necessary to change a voucher, or re-sign and | |||
forward a voucher that was previously provided along a | forward a voucher that was previously provided along a | |||
protocol path, then the previously signed voucher SHOULD | protocol path, then the previously signed voucher SHOULD | |||
be included in this field. | be included in this field. | |||
For example, a pledge might sign a voucher request | For example, a pledge might sign a voucher-request | |||
with a proximity-registrar-cert, and the registrar | with a proximity-registrar-cert, and the registrar | |||
then includes it as the prior-signed-voucher-request | then includes it as the prior-signed-voucher-request | |||
field. This is a simple mechanism for a chain of | field. This is a simple mechanism for a chain of | |||
trusted parties to change a voucher request, while | trusted parties to change a voucher-request, while | |||
maintaining the prior signature information. | maintaining the prior signature information. | |||
The Registrar and MASA MAY examine the prior signed | The registrar and MASA MAY examine the prior-signed | |||
voucher information for the | voucher information for the | |||
purposes of policy decisions. For example this | purposes of policy decisions. For example, this | |||
information could be useful to a MASA to determine | information could be useful to a MASA to determine | |||
that both pledge and registrar agree on proximity | that both the pledge and registrar agree on proximity | |||
assertions. The MASA SHOULD remove all | assertions. The MASA SHOULD remove all | |||
prior-signed-voucher-request information when | prior-signed-voucher-request information when | |||
signing a voucher for imprinting so as to minimize | signing a voucher for imprinting so as to minimize | |||
the final voucher size."; | the final voucher size."; | |||
} | } | |||
leaf proximity-registrar-cert { | leaf proximity-registrar-cert { | |||
type binary; | type binary; | |||
description | description | |||
"An X.509 v3 certificate structure as specified by | "An X.509 v3 certificate structure, as specified by | |||
RFC 5280, Section 4 encoded using the ASN.1 | RFC 5280, Section 4, encoded using the ASN.1 | |||
distinguished encoding rules (DER), as specified | distinguished encoding rules (DER), as specified | |||
in [ITU.X690.1994]. | in ITU X.690. | |||
The first certificate in the Registrar TLS server | The first certificate in the registrar TLS server | |||
certificate_list sequence (the end-entity TLS | certificate_list sequence (the end-entity TLS | |||
certificate, see [RFC8446]) presented by the Registrar | certificate; see RFC 8446) presented by the registrar | |||
to the Pledge. | to the pledge. This MUST be populated in a pledge's | |||
This MUST be populated in a Pledge's voucher request | voucher-request when a proximity assertion is | |||
when a proximity assertion is requested."; | 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> | <CODE ENDS> | |||
Figure 9: YANG module for Voucher-Request | Figure 9: YANG Module for Voucher-Request | |||
4. Proxying details (Pledge - Proxy - Registrar) | 4. Proxying Details (Pledge -- Proxy -- Registrar) | |||
This section is normative for uses with an ANIMA ACP. The use of the | 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 | GRASP mechanism is part of the ACP. Other users of BRSKI will need | |||
to define an equivalent proxy mechanism, and an equivalent mechanism | to define an equivalent proxy mechanism and an equivalent mechanism | |||
to configure the proxy. | to configure the proxy. | |||
The role of the proxy is to facilitate communications. The proxy | The role of the proxy is to facilitate communications. The proxy | |||
forwards packets between the pledge and a registrar that has been | forwards packets between the pledge and a registrar that has been | |||
provisioned to the proxy via full GRASP ACP discovery. | provisioned to the proxy via full GRASP ACP discovery. | |||
This section defines a stateful proxy mechanism which is referred to | This section defines a stateful proxy mechanism that is referred to | |||
as a "circuit" proxy. This is a form of Application Level Gateway | as a "circuit" proxy. This is a form of Application Level Gateway | |||
([RFC2663] section 2.9). | (see [RFC2663], Section 2.9). | |||
The proxy does not terminate the TLS handshake: it passes streams of | The proxy does not terminate the TLS handshake: it passes streams of | |||
bytes onward without examination. A proxy MUST NOT assume any | bytes onward without examination. A proxy MUST NOT assume any | |||
specific TLS version. Please see [RFC8446] section 9.3 for details | specific TLS version. Please see [RFC8446], Section 9.3 for details | |||
on TLS invariants. | on TLS invariants. | |||
A Registrar can directly provide the proxy announcements described | A registrar can directly provide the proxy announcements described | |||
below, in which case the announced port can point directly to the | below, in which case the announced port can point directly to the | |||
Registrar itself. In this scenario the pledge is unaware that there | registrar itself. In this scenario, the pledge is unaware that there | |||
is no proxying occurring. This is useful for Registrars which are | is no proxying occurring. This is useful for registrars that are | |||
servicing pledges on directly connected networks. | servicing pledges on directly connected networks. | |||
As a result of the proxy Discovery process in Section 4.1.1, the port | 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 | number exposed by the proxy does not need to be well known or require | |||
require an IANA allocation. | an IANA allocation. | |||
During the discovery of the Registrar by the Join Proxy, the Join | During the discovery of the registrar by the Join Proxy, the Join | |||
Proxy will also learn which kinds of proxy mechanisms are available. | Proxy will also learn which kinds of proxy mechanisms are available. | |||
This will allow the Join Proxy to use the lowest impact mechanism | This will allow the Join Proxy to use the lowest impact mechanism | |||
which the Join Proxy and Registrar have in common. | that the Join Proxy and registrar have in common. | |||
In order to permit the proxy functionality to be implemented on the | In order to permit the proxy functionality to be implemented on the | |||
maximum variety of devices the chosen mechanism should use the | maximum variety of devices, the chosen mechanism should use the | |||
minimum amount of state on the proxy device. While many devices in | minimum amount of state on the proxy device. While many devices in | |||
the ANIMA target space will be rather large routers, the proxy | the ANIMA target space will be rather large routers, the proxy | |||
function is likely to be implemented in the control plane CPU of such | function is likely to be implemented in the control-plane CPU of such | |||
a device, with available capabilities for the proxy function similar | a device, with available capabilities for the proxy function similar | |||
to many class 2 IoT devices. | to many class 2 IoT devices. | |||
The document [I-D.richardson-anima-state-for-joinrouter] provides a | The document [ANIMA-STATE] provides a more extensive analysis and | |||
more extensive analysis and background of the alternative proxy | background of the alternative proxy methods. | |||
methods. | ||||
4.1. Pledge discovery of Proxy | 4.1. Pledge Discovery of Proxy | |||
The result of discovery is a logical communication with a registrar, | The result of discovery is a logical communication with a registrar, | |||
through a proxy. The proxy is transparent to the pledge. The | through a proxy. The proxy is transparent to the pledge. The | |||
communication between the pledge and Join Proxy is over IPv6 Link- | communication between the pledge and Join Proxy is over IPv6 link- | |||
Local addresses. | local addresses. | |||
To discover the proxy the pledge performs the following actions: | To discover the proxy, the pledge performs the following actions: | |||
1. MUST: Obtains a local address using IPv6 methods as described in | 1. MUST: Obtain a local address using IPv6 methods as described in | |||
[RFC4862] IPv6 Stateless Address AutoConfiguration. Use of | "IPv6 Stateless Address Autoconfiguration" [RFC4862]. Use of | |||
[RFC4941] temporary addresses is encouraged. To limit pervasive | temporary addresses [RFC8981] is encouraged. To limit pervasive | |||
monitoring ( [RFC7258]), a new temporary address MAY use a short | monitoring [RFC7258], a new temporary address MAY use a short | |||
lifetime (that is, set TEMP_PREFERRED_LIFETIME to be short). | lifetime (that is, set TEMP_PREFERRED_LIFETIME to be short). | |||
Pledges will generally prefer use of IPv6 Link-Local addresses, | Pledges will generally prefer use of IPv6 link-local addresses, | |||
and discovery of proxy will be by Link-Local mechanisms. IPv4 | and discovery of the proxy will be by link-local mechanisms. | |||
methods are described in Appendix A | IPv4 methods are described in Appendix A. | |||
2. MUST: Listen for GRASP M_FLOOD ([I-D.ietf-anima-grasp]) | 2. MUST: Listen for GRASP M_FLOOD [RFC8990] announcements of the | |||
announcements of the objective: "AN_Proxy". See section | objective: "AN_Proxy". See Section 4.1.1 for the details of the | |||
Section 4.1.1 for the details of the objective. The pledge MAY | objective. The pledge MAY listen concurrently for other sources | |||
listen concurrently for other sources of information, see | of information; see Appendix B. | |||
Appendix B. | ||||
Once a proxy is discovered the pledge communicates with a registrar | Once a proxy is discovered, the pledge communicates with a registrar | |||
through the proxy using the bootstrapping protocol defined in | through the proxy using the bootstrapping protocol defined in | |||
Section 5. | Section 5. | |||
While the GRASP M_FLOOD mechanism is passive for the pledge, the non- | While the GRASP M_FLOOD mechanism is passive for the pledge, the non- | |||
normative other methods (mDNS, and IPv4 methods) described in | normative other methods (mDNS and IPv4 methods) described in | |||
Appendix B are active. The pledge SHOULD run those methods in | Appendix B are active. The pledge SHOULD run those methods in | |||
parallel with listening to for the M_FLOOD. The active methods | parallel with listening for the M_FLOOD. The active methods SHOULD | |||
SHOULD back-off by doubling to a maximum of one hour to avoid | back off by doubling to a maximum of one hour to avoid overloading | |||
overloading the network with discovery attempts. Detection of change | the network with discovery attempts. Detection of physical link | |||
of physical link status (Ethernet carrier for instance) SHOULD reset | status change (Ethernet carrier, for instance) SHOULD reset the back- | |||
the back off timers. | off timers. | |||
The pledge could discover more than one proxy on a given physical | The pledge could discover more than one proxy on a given physical | |||
interface. The pledge can have a multitude of physical interfaces as | interface. The pledge can have a multitude of physical interfaces as | |||
well: a layer-2/3 Ethernet switch may have hundreds of physical | well: a Layer 2/3 Ethernet switch may have hundreds of physical | |||
ports. | ports. | |||
Each possible proxy offer SHOULD be attempted up to the point where a | 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 | valid voucher is received: while there are many ways in which the | |||
attempt may fail, it does not succeed until the voucher has been | attempt may fail, it does not succeed until the voucher has been | |||
validated. | validated. | |||
The connection attempts via a single proxy SHOULD exponentially back- | The connection attempts via a single proxy SHOULD exponentially back | |||
off to a maximum of one hour to avoid overloading the network | off to a maximum of one hour to avoid overloading the network | |||
infrastructure. The back-off timer for each MUST be independent of | infrastructure. The back-off timer for each MUST be independent of | |||
other connection attempts. | other connection attempts. | |||
Connection attempts SHOULD be run in parallel to avoid head of queue | Connection attempts SHOULD be run in parallel to avoid head-of-queue | |||
problems wherein an attacker running a fake proxy or registrar could | problems wherein an attacker running a fake proxy or registrar could | |||
perform protocol actions intentionally slowly. Connection attempts | intentionally perform protocol actions slowly. Connection attempts | |||
to different proxies SHOULD be sent with an interval of 3 to 5s. The | to different proxies SHOULD be sent with an interval of 3 to 5s. The | |||
pledge SHOULD continue to listen to for additional GRASP M_FLOOD | pledge SHOULD continue to listen for additional GRASP M_FLOOD | |||
messages during the connection attempts. | messages during the connection attempts. | |||
Each connection attempt through a distinct Join Proxy MUST have a | Each connection attempt through a distinct Join Proxy MUST have a | |||
unique nonce in the voucher-request. | unique nonce in the voucher-request. | |||
Once a connection to a registrar is established (e.g. establishment | Once a connection to a registrar is established (e.g., establishment | |||
of a TLS session key) there are expectations of more timely | of a TLS session key), there are expectations of more timely | |||
responses, see Section 5.2. | responses; see Section 5.2. | |||
Once all discovered services are attempted (assuming that none | Once all discovered services are attempted (assuming that none | |||
succeeded) the device MUST return to listening for GRASP M_FLOOD. It | succeeded), the device MUST return to listening for GRASP M_FLOOD. | |||
SHOULD periodically retry any manufacturer-specific mechanisms. The | It SHOULD periodically retry any manufacturer-specific mechanisms. | |||
pledge MAY prioritize selection order as appropriate for the | The pledge MAY prioritize selection order as appropriate for the | |||
anticipated environment. | anticipated environment. | |||
4.1.1. Proxy GRASP announcements | 4.1.1. Proxy GRASP Announcements | |||
A proxy uses the DULL GRASP M_FLOOD mechanism to announce itself. | A proxy uses the DULL GRASP M_FLOOD mechanism to announce itself. | |||
This announcement can be within the same message as the ACP | This announcement can be within the same message as the ACP | |||
announcement detailed in [I-D.ietf-anima-autonomic-control-plane]. | announcement detailed in [RFC8994]. | |||
The formal Concise Data Definition Language (CDDL) [RFC8610] | The formal Concise Data Definition Language (CDDL) [RFC8610] | |||
definition is: | definition is: | |||
<CODE BEGINS> file "proxygrasp.cddl" | <CODE BEGINS> file "proxygrasp.cddl" | |||
flood-message = [M_FLOOD, session-id, initiator, ttl, | flood-message = [M_FLOOD, session-id, initiator, ttl, | |||
+[objective, (locator-option / [])]] | +[objective, (locator-option / [])]] | |||
objective = ["AN_Proxy", objective-flags, loop-count, | objective = ["AN_Proxy", objective-flags, loop-count, | |||
objective-value] | objective-value] | |||
ttl = 180000 ; 180,000 ms (3 minutes) | ttl = 180000 ; 180,000 ms (3 minutes) | |||
initiator = ACP address to contact Registrar | initiator = ACP address to contact registrar | |||
objective-flags = sync-only ; as in GRASP spec | objective-flags = sync-only ; as in the GRASP spec | |||
sync-only = 4 ; M_FLOOD only requires synchronization | sync-only = 4 ; M_FLOOD only requires | |||
; synchronization | ||||
loop-count = 1 ; one hop only | loop-count = 1 ; one hop only | |||
objective-value = any ; none | objective-value = any ; none | |||
locator-option = [ O_IPv6_LOCATOR, ipv6-address, | locator-option = [ O_IPv6_LOCATOR, ipv6-address, | |||
transport-proto, port-number ] | transport-proto, port-number ] | |||
ipv6-address = the v6 LL of the Proxy | ipv6-address = the v6 LL of the Proxy | |||
$transport-proto /= IPPROTO_TCP ; note this can be any value from the | $transport-proto /= IPPROTO_TCP ; note that this can be any value | |||
; IANA protocol registry, as per | ; from the IANA protocol registry, | |||
; [GRASP] section 2.9.5.1, note 3. | ; as per RFC 8990, Section 2.9.5.1, | |||
; Note 3. | ||||
port-number = selected by Proxy | port-number = selected by Proxy | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 10: CDDL definition of Proxy Discovery message | Figure 10: CDDL Definition of Proxy Discovery Message | |||
Here is an example M_FLOOD announcing a proxy at fe80::1, on TCP port | Here is an example M_FLOOD announcing a proxy at fe80::1, on TCP port | |||
4443. | 4443. | |||
[M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000, | [M_FLOOD, 12340815, h'fe800000000000000000000000000001', 180000, | |||
[["AN_Proxy", 4, 1, ""], | [["AN_Proxy", 4, 1, ""], | |||
[O_IPv6_LOCATOR, | [O_IPv6_LOCATOR, | |||
h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]]] | h'fe800000000000000000000000000001', IPPROTO_TCP, 4443]]] | |||
Figure 11: Example of Proxy Discovery message | Figure 11: Example of Proxy Discovery Message | |||
On a small network the Registrar MAY include the GRASP M_FLOOD | On a small network, the registrar MAY include the GRASP M_FLOOD | |||
announcements to locally connected networks. | announcements to locally connected networks. | |||
The $transport-proto above indicates the method that the pledge- | The $transport-proto above indicates the method that the pledge- | |||
proxy-registrar will use. The TCP method described here is | proxy-registrar will use. The TCP method described here is | |||
mandatory, and other proxy methods, such as CoAP methods not defined | mandatory, and other proxy methods, such as CoAP methods not defined | |||
in this document are optional. Other methods MUST NOT be enabled | in this document, are optional. Other methods MUST NOT be enabled | |||
unless the Join Registrar ASA indicates support for them in it's own | unless the Join Registrar ASA indicates support for them in its own | |||
announcement. | announcement. | |||
4.2. CoAP connection to Registrar | 4.2. CoAP Connection to Registrar | |||
The use of CoAP to connect from pledge to registrar is out of scope | The use of CoAP to connect from pledge to registrar is out of scope | |||
for this document, and is described in future work. See | for this document and is described in future work. See | |||
[I-D.ietf-anima-constrained-voucher]. | [ANIMA-CONSTRAINED-VOUCHER]. | |||
4.3. Proxy discovery and communication of Registrar | 4.3. Proxy Discovery and Communication of Registrar | |||
The registrar SHOULD announce itself so that proxies can find it and | The registrar SHOULD announce itself so that proxies can find it and | |||
determine what kind of connections can be terminated. | determine what kind of connections can be terminated. | |||
The registrar announces itself using ACP instance of GRASP using | The registrar announces itself using GRASP M_FLOOD messages, with the | |||
M_FLOOD messages, with the "AN_join_registrar" objective. A | "AN_join_registrar" objective, within the ACP instance. A registrar | |||
registrar may announce any convenient port number, including using a | may announce any convenient port number, including use of stock port | |||
stock port 443. ANI proxies MUST support GRASP discovery of | 443. ANI proxies MUST support GRASP discovery of registrars. | |||
registrars. | ||||
The M_FLOOD is formatted as follows: | The M_FLOOD is formatted as follows: | |||
[M_FLOOD, 51804321, h'fda379a6f6ee00000200000064000001', 180000, | [M_FLOOD, 51804321, h'fda379a6f6ee00000200000064000001', 180000, | |||
[["AN_join_registrar", 4, 255, "EST-TLS"], | [["AN_join_registrar", 4, 255, "EST-TLS"], | |||
[O_IPv6_LOCATOR, | [O_IPv6_LOCATOR, | |||
h'fda379a6f6ee00000200000064000001', IPPROTO_TCP, 8443]]] | h'fda379a6f6ee00000200000064000001', IPPROTO_TCP, 8443]]] | |||
Figure 12: An example of a Registrar announcement message | Figure 12: An Example of a Registrar Announcement Message | |||
The formal CDDL definition is: | The formal CDDL definition is: | |||
<CODE BEGINS> file "jrcgrasp.cddl" | <CODE BEGINS> file "jrcgrasp.cddl" | |||
flood-message = [M_FLOOD, session-id, initiator, ttl, | flood-message = [M_FLOOD, session-id, initiator, ttl, | |||
+[objective, (locator-option / [])]] | +[objective, (locator-option / [])]] | |||
objective = ["AN_join_registrar", objective-flags, loop-count, | objective = ["AN_join_registrar", objective-flags, loop-count, | |||
objective-value] | objective-value] | |||
initiator = ACP address to contact Registrar | initiator = ACP address to contact registrar | |||
objective-flags = sync-only ; as in GRASP spec | objective-flags = sync-only ; as in the GRASP spec | |||
sync-only = 4 ; M_FLOOD only requires synchronization | sync-only = 4 ; M_FLOOD only requires | |||
; synchronization | ||||
loop-count = 255 ; mandatory maximum | loop-count = 255 ; mandatory maximum | |||
objective-value = text ; name of the (list of) of supported | objective-value = text ; name of the (list of) supported | |||
; protocols: "EST-TLS" for RFC7030. | ; protocols: "EST-TLS" for RFC 7030. | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 13: CDDL definition for Registrar announcement message | Figure 13: CDDL Definition for Registrar Announcement Message | |||
The M_FLOOD message MUST be sent periodically. The default period | The M_FLOOD message MUST be sent periodically. The default period | |||
SHOULD be 60 seconds, the value SHOULD be operator configurable but | SHOULD be 60 seconds, and the value SHOULD be operator configurable | |||
SHOULD NOT be smaller than 60 seconds. The frequency of sending MUST | but SHOULD NOT be smaller than 60 seconds. The frequency of sending | |||
be such that the aggregate amount of periodic M_FLOODs from all | MUST be such that the aggregate amount of periodic M_FLOODs from all | |||
flooding sources cause only negligible traffic across the ACP. | flooding sources causes only negligible traffic across the ACP. | |||
Here are some examples of locators for illustrative purposes. Only | Here are some examples of locators for illustrative purposes. Only | |||
the first one ($transport-protocol = 6, TCP) is defined in this | the first one ($transport-protocol = 6, TCP) is defined in this | |||
document and is mandatory to implement. | document and is mandatory to implement. | |||
locator1 = [O_IPv6_LOCATOR, fd45:1345::6789, 6, 443] | locator1 = [O_IPv6_LOCATOR, fd45:1345::6789, 6, 443] | |||
locator2 = [O_IPv6_LOCATOR, fd45:1345::6789, 17, 5683] | locator2 = [O_IPv6_LOCATOR, fd45:1345::6789, 17, 5683] | |||
locator3 = [O_IPv6_LOCATOR, fe80::1234, 41, nil] | locator3 = [O_IPv6_LOCATOR, fe80::1234, 41, nil] | |||
A protocol of 6 indicates that TCP proxying on the indicated port is | A protocol of 6 indicates that TCP proxying on the indicated port is | |||
desired. | desired. | |||
Registrars MUST announce the set of protocols that they support. | Registrars MUST announce the set of protocols that they support, and | |||
They MUST support TCP traffic. | they MUST support TCP traffic. | |||
Registrars MUST accept HTTPS/EST traffic on the TCP ports indicated. | Registrars MUST accept HTTPS/EST traffic on the TCP ports indicated. | |||
Registrars MUST support ANI TLS circuit proxy and therefore BRSKI | Registrars MUST support the ANI TLS Circuit Proxy and therefore BRSKI | |||
across HTTPS/TLS native across the ACP. | across HTTPS/TLS native across the ACP. | |||
In the ANI, the Autonomic Control Plane (ACP) secured instance of | In the ANI, the ACP-secured instance of GRASP [RFC8990] MUST be used | |||
GRASP ([I-D.ietf-anima-grasp]) MUST be used for discovery of ANI | for discovery of ANI registrar ACP addresses and ports by ANI | |||
registrar ACP addresses and ports by ANI proxies. The TCP leg of the | proxies. Therefore, the TCP leg of the proxy connection between the | |||
proxy connection between ANI proxy and ANI registrar therefore also | ANI proxy and ANI registrar also runs across the ACP. | |||
runs across the ACP. | ||||
5. Protocol Details (Pledge - Registrar - MASA) | 5. Protocol Details (Pledge -- Registrar -- MASA) | |||
The pledge MUST initiate BRSKI after boot if it is unconfigured. The | The pledge MUST initiate BRSKI after boot if it is unconfigured. The | |||
pledge MUST NOT automatically initiate BRSKI if it has been | pledge MUST NOT automatically initiate BRSKI if it has been | |||
configured or is in the process of being configured. | configured or is in the process of being configured. | |||
BRSKI is described as extensions to EST [RFC7030]. The goal of these | BRSKI is described as extensions to EST [RFC7030]. The goal of these | |||
extensions is to reduce the number of TLS connections and crypto | extensions is to reduce the number of TLS connections and crypto | |||
operations required on the pledge. The registrar implements the | operations required on the pledge. The registrar implements the | |||
BRSKI REST interface within the "/.well-known/brski" URI tree, as | BRSKI REST interface within the "/.well-known/brski" URI tree and | |||
well as implementing the existing EST URIs as described in EST | implements the existing EST URIs as described in EST [RFC7030], | |||
[RFC7030] section 3.2.2. The communication channel between the | Section 3.2.2. The communication channel between the pledge and the | |||
pledge and the registrar is referred to as "BRSKI-EST" (see | registrar is referred to as "BRSKI-EST" (see Figure 1). | |||
Figure 1). | ||||
The communication channel between the registrar and MASA is a new | The communication channel between the registrar and MASA is a new | |||
communication channel, similar to EST, within the newly registred | communication channel, similar to EST, within the newly registered | |||
"/.well-known/brski" tree. For clarity this channel is referred to | "/.well-known/brski" tree. For clarity, this channel is referred to | |||
as "BRSKI-MASA". (See Figure 1). | as "BRSKI-MASA" (see Figure 1). | |||
The MASA URI is "https://" authority "/.well-known/brski". | The MASA URI is "https://" authority "/.well-known/brski". | |||
BRSKI uses existing CMS message formats for existing EST operations. | BRSKI uses existing CMS message formats for existing EST operations. | |||
BRSKI uses JSON [RFC8259] for all new operations defined here, and | BRSKI uses JSON [RFC8259] for all new operations defined here and for | |||
voucher formats. In all places where a binary value must be carried | voucher formats. In all places where a binary value must be carried | |||
in a JSON string, the use of base64 format ([RFC4648] section 4) is | in a JSON string, a base64 format ([RFC4648], Section 4) is to be | |||
to be used, as per [RFC7951] section 6.6. | used, as per [RFC7951], Section 6.6. | |||
While EST section 3.2 does not insist upon use of HTTP persistent | While EST ([RFC7030], Section 3.2) does not insist upon use of HTTP | |||
connections ([RFC7230] section 6.3), BRSKI-EST connections SHOULD use | persistent connections ([RFC7230], Section 6.3), BRSKI-EST | |||
persistent connections. The intention of this guidance is to ensure | connections SHOULD use persistent connections. The intention of this | |||
the provisional TLS state occurs only once, and that the subsequent | guidance is to ensure the provisional TLS state occurs only once, and | |||
resolution of the provision state is not subject to a MITM attack | that the subsequent resolution of the provision state is not subject | |||
during a critical phase. | to a Man-in-the-Middle (MITM) attack during a critical phase. | |||
If non-persistent connections are used, then both the pledge and the | If non-persistent connections are used, then both the pledge and the | |||
registrar MUST remember the certificates seen, and also sent for the | registrar MUST remember the certificates that have been seen and also | |||
first connection. They MUST check each subsequent connections for | sent for the first connection. They MUST check each subsequent | |||
the same certificates, and each end MUST use the same certificates as | connection for the same certificates, and each end MUST use the same | |||
well. This places a difficult restriction on rolling certificates on | certificates as well. This places a difficult restriction on rolling | |||
the Registrar. | certificates on the registrar. | |||
Summarized automation extensions for the BRSKI-EST flow are: | Summarized automation extensions for the BRSKI-EST flow are: | |||
* The pledge either attempts concurrent connections via each | * The pledge either attempts concurrent connections via each | |||
discovered proxy, or it times out quickly and tries connections in | discovered proxy or times out quickly and tries connections in | |||
series, as explained at the end of Section 5.1. | series, as explained at the end of Section 5.1. | |||
* The pledge provisionally accepts the registrar certificate during | * The pledge provisionally accepts the registrar certificate during | |||
the TLS handshake as detailed in Section 5.1. | the TLS handshake as detailed in Section 5.1. | |||
* The pledge requests a voucher using the new REST calls described | * The pledge requests a voucher using the new REST calls described | |||
below. This voucher is then validated. | below. This voucher is then validated. | |||
* The pledge completes authentication of the server certificate as | * The pledge completes authentication of the server certificate as | |||
detailed in Section 5.6.1. This moves the BRSKI-EST TLS | detailed in Section 5.6.1. This moves the BRSKI-EST TLS | |||
connection out of the provisional state. | connection out of the provisional state. | |||
* Mandatory bootstrap steps conclude with voucher status telemetry | * Mandatory bootstrap steps conclude with voucher status telemetry | |||
(see Section 5.7). | (see Section 5.7). | |||
The BRSKI-EST TLS connection can now be used for EST enrollment. | The BRSKI-EST TLS connection can now be used for EST enrollment. | |||
The extensions for a registrar (equivalent to EST server) are: | The extensions for a registrar (equivalent to an EST server) are: | |||
* Client authentication is automated using Initial Device Identity | * Client authentication is automated using IDevID as per the EST | |||
(IDevID) as per the EST certificate based client authentication. | certificate-based client authentication. The subject field's DN | |||
The subject field's DN encoding MUST include the "serialNumber" | encoding MUST include the "serialNumber" attribute with the | |||
attribute with the device's unique serial number as explained in | device's unique serial number as explained in Section 2.3.1. | |||
Section 2.3.1 | ||||
* The registrar requests and validates the voucher from the MASA. | * The registrar requests and validates the voucher from the MASA. | |||
* The registrar forwards the voucher to the pledge when requested. | * The registrar forwards the voucher to the pledge when requested. | |||
* The registrar performs log verifications (described in | * The registrar performs log verifications (described in | |||
Section 5.8.3) in addition to local authorization checks before | Section 5.8.3) in addition to local authorization checks before | |||
accepting optional pledge device enrollment requests. | accepting optional pledge device enrollment requests. | |||
5.1. BRSKI-EST TLS establishment details | 5.1. BRSKI-EST TLS Establishment Details | |||
The pledge establishes the TLS connection with the registrar through | The pledge establishes the TLS connection with the registrar through | |||
the circuit proxy (see Section 4) but the TLS handshake is with the | 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. The BRSKI-EST pledge is the TLS client, and the BRSKI-EST | |||
registrar is the TLS server. All security associations established | registrar is the TLS server. All security associations established | |||
are between the pledge and the registrar regardless of proxy | are between the pledge and the registrar regardless of proxy | |||
operations. | operations. | |||
Use of TLS 1.3 (or newer) is encouraged. TLS 1.2 or newer is | 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 | REQUIRED on the pledge side. TLS 1.3 (or newer) SHOULD be available | |||
on the Registrar server interface, and the Registrar client | on the registrar server interface, and the registrar client | |||
interface, but TLS 1.2 MAY be used. TLS 1.3 (or newer) SHOULD be | 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. | available on the MASA server interface, but TLS 1.2 MAY be used. | |||
Establishment of the BRSKI-EST TLS connection is as specified in EST | Establishment of the BRSKI-EST TLS connection is as specified in | |||
[RFC7030] section 4.1.1 "Bootstrap Distribution of CA Certificates" | "Bootstrap Distribution of CA Certificates" (Section 4.1.1) of | |||
[RFC7030] wherein the client is authenticated with the IDevID | [RFC7030], wherein the client is authenticated with the IDevID | |||
certificate, and the EST server (the registrar) is provisionally | certificate, and the EST server (the registrar) is provisionally | |||
authenticated with an unverified server certificate. Configuration | authenticated with an unverified server certificate. Configuration | |||
or distribution of the trust anchor database used for validating the | or distribution of the trust anchor database used for validating the | |||
IDevID certificate is out-of-scope of this specification. Note that | IDevID certificate is out of scope of this specification. Note that | |||
the trust anchors in/excluded from the database will affect which | the trust anchors in / excluded from the database will affect which | |||
manufacturers' devices are acceptable to the registrar as pledges, | manufacturers' devices are acceptable to the registrar as pledges and | |||
and can also be used to limit the set of MASAs that are trusted for | can also be used to limit the set of MASAs that are trusted for | |||
enrollment. | enrollment. | |||
The signature in the certificate MUST be validated even if a signing | The signature in the certificate MUST be validated even if a signing | |||
key can not (yet) be validated. The certificate (or chain) MUST be | key cannot (yet) be validated. The certificate (or chain) MUST be | |||
retained for later validation. | retained for later validation. | |||
A self-signed certificate for the Registrar is acceptable as the | A self-signed certificate for the registrar is acceptable as the | |||
voucher can validate it upon successful enrollment. | voucher can validate it upon successful enrollment. | |||
The pledge performs input validation of all data received until a | The pledge performs input validation of all data received until a | |||
voucher is verified as specified in Section 5.6.1 and the TLS | voucher is verified as specified in Section 5.6.1 and the TLS | |||
connection leaves the provisional state. Until these operations are | connection leaves the provisional state. Until these operations are | |||
complete the pledge could be communicating with an attacker. | complete, the pledge could be communicating with an attacker. | |||
The pledge code needs to be written with the assumption that all data | The pledge code needs to be written with the assumption that all data | |||
is being transmitted at this point to an unauthenticated peer, and | is being transmitted at this point to an unauthenticated peer, and | |||
that received data, while inside a TLS connection, MUST be considered | that received data, while inside a TLS connection, MUST be considered | |||
untrusted. This particularly applies to HTTP headers and CMS | untrusted. This particularly applies to HTTP headers and CMS | |||
structures that make up the voucher. | structures that make up the voucher. | |||
A pledge that can connect to multiple Registrars concurrently SHOULD | 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 | do so. Some devices may be unable to do so for lack of threading, or | |||
resource issues. Concurrent connections defeat attempts by a | resource issues. Concurrent connections defeat attempts by a | |||
malicious proxy from causing a TCP Slowloris-like attack (see | malicious proxy from causing a TCP Slowloris-like attack (see | |||
[slowloris]). | [slowloris]). | |||
A pledge that can not maintain as many connections as there are | A pledge that cannot maintain as many connections as there are | |||
eligible proxies will need to rotate among the various choices, | eligible proxies will need to rotate among the various choices, | |||
terminating connections that do not appear to be making progress. If | terminating connections that do not appear to be making progress. If | |||
no connection is making progress after 5 seconds then the pledge | no connection is making progress after 5 seconds, then the pledge | |||
SHOULD drop the oldest connection and go on to a different proxy: the | SHOULD drop the oldest connection and go on to a different proxy: the | |||
proxy that has been communicated with least recently. If there were | proxy that has been communicated with least recently. If there were | |||
no other proxies discovered, the pledge MAY continue to wait, as long | no other proxies discovered, the pledge MAY continue to wait, as long | |||
as it is concurrently listening for new proxy announcements. | as it is concurrently listening for new proxy announcements. | |||
5.2. Pledge Requests Voucher from the Registrar | 5.2. Pledge Requests Voucher from the Registrar | |||
When the pledge bootstraps it makes a request for a voucher from a | When the pledge bootstraps, it makes a request for a voucher from a | |||
registrar. | registrar. | |||
This is done with an HTTPS POST using the operation path value of | This is done with an HTTPS POST using the operation path value of | |||
"/.well-known/brski/requestvoucher". | "/.well-known/brski/requestvoucher". | |||
The pledge voucher-request Content-Type is: | The pledge voucher-request Content-Type is as follows. | |||
application/voucher-cms+json [RFC8366] defines a "YANG-defined JSON | application/voucher-cms+json: [RFC8366] defines a "YANG-defined JSON | |||
document that has been signed using a CMS structure", and the | document that has been signed using a Cryptographic Message Syntax | |||
voucher-request described in Section 3 is created in the same way. | (CMS) structure", and the voucher-request described in Section 3 | |||
The media type is the same as defined in [RFC8366]. This is also | is created in the same way. The media type is the same as defined | |||
used for the pledge voucher-request. The pledge MUST sign the | in [RFC8366]. This is also used for the pledge voucher-request. | |||
request using the Section 2.3 credential. | The pledge MUST sign the request using the credentials in | |||
Section 2.3. | ||||
Registrar implementations SHOULD anticipate future media types but of | Registrar implementations SHOULD anticipate future media types but, | |||
course will simply fail the request if those types are not yet known. | of course, will simply fail the request if those types are not yet | |||
known. | ||||
The pledge SHOULD include an [RFC7231] section 5.3.2 "Accept" header | The pledge SHOULD include an "Accept" header field (see [RFC7231], | |||
field indicating the acceptable media type for the voucher response. | Section 5.3.2) indicating the acceptable media type for the voucher | |||
The "application/voucher-cms+json" media type is defined in [RFC8366] | response. The "application/voucher-cms+json" media type is defined | |||
but constrained voucher formats are expected in the future. | in [RFC8366], but constrained voucher formats are expected in the | |||
Registrars and MASA are expected to be flexible in what they accept. | future. Registrars and MASA are expected to be flexible in what they | |||
accept. | ||||
The pledge populates the voucher-request fields as follows: | The pledge populates the voucher-request fields as follows: | |||
created-on: Pledges that have a realtime clock are RECOMMENDED to | created-on: Pledges that have a real-time clock are RECOMMENDED to | |||
populate this field with the current date and time in yang:date- | populate this field with the current date and time in yang:date- | |||
and-time format. This provides additional information to the | and-time format. This provides additional information to the | |||
MASA. Pledges that have no real-time clocks MAY omit this field. | MASA. Pledges that have no real-time clocks MAY omit this field. | |||
nonce: The pledge voucher-request MUST contain a cryptographically | nonce: The pledge voucher-request MUST contain a cryptographically | |||
strong random or pseudo-random number nonce (see [RFC4086] section | strong random or pseudo-random number nonce (see [RFC4086], | |||
6.2). As the nonce is usually generated very early in the boot | Section 6.2). As the nonce is usually generated very early in the | |||
sequence there is a concern that the same nonce might generated | boot sequence, there is a concern that the same nonce might be | |||
across multiple boots, or after a factory reset. Different nonces | generated across multiple boots, or after a factory reset. | |||
MUST be generated for each bootstrapping attempt, whether in | Different nonces MUST be generated for each bootstrapping attempt, | |||
series or concurrently. The freshness of this nonce mitigates | whether in series or concurrently. The freshness of this nonce | |||
against the lack of real-time clock as explained in Section 2.6.1. | 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 | assertion: The pledge indicates support for the mechanism described | |||
in this document, by putting the value "proximity" in the voucher- | in this document, by putting the value "proximity" in the voucher- | |||
request, MUST include the "proximity-registrar-cert" field | request, and MUST include the proximity-registrar-cert field | |||
(below). | (below). | |||
proximity-registrar-cert: In a pledge voucher-request this is the | proximity-registrar-cert: In a pledge voucher-request, this is the | |||
first certificate in the TLS server 'certificate_list' sequence | first certificate in the TLS server "certificate_list" sequence | |||
(see [RFC5246]) presented by the registrar to the pledge. That | (see [RFC8446], Section 4.4.2) presented by the registrar to the | |||
is, it is the end-entity certificate. This MUST be populated in a | pledge. That is, it is the end-entity certificate. This MUST be | |||
pledge voucher-request. | populated in a pledge voucher-request. | |||
serial-number The serial number of the pledge is included in the | serial-number: The serial number of the pledge is included in the | |||
voucher-request from the Pledge. This value is included as a | voucher-request from the pledge. This value is included as a | |||
sanity check only, but it is not to be forwarded by the Registrar | sanity check only, but it is not to be forwarded by the registrar | |||
as described in Section 5.5. | as described in Section 5.5. | |||
All other fields MAY be omitted in the pledge voucher-request. | All other fields MAY be omitted in the pledge voucher-request. | |||
An example JSON payload of a pledge voucher-request is in Section 3.3 | See an example JSON payload of a pledge voucher-request in | |||
Example 1. | Section 3.3, Example 1. | |||
The registrar confirms that the assertion is 'proximity' and that | The registrar confirms that the assertion is "proximity" and that | |||
pinned 'proximity-registrar-cert' is the Registrar's certificate. If | pinned proximity-registrar-cert is the registrar's certificate. If | |||
this validation fails, then there is an On-Path Attacker (MITM), and | this validation fails, then there is an on-path attacker (MITM), and | |||
the connection MUST be closed after the returning an HTTP 401 error | the connection MUST be closed after the returning of an HTTP 401 | |||
code. | error code. | |||
5.3. Registrar Authorization of Pledge | 5.3. Registrar Authorization of Pledge | |||
In a fully automated network all devices must be securely identified | In a fully automated network, all devices must be securely identified | |||
and authorized to join the domain. | and authorized to join the domain. | |||
A Registrar accepts or declines a request to join the domain, based | A registrar accepts or declines a request to join the domain, based | |||
on the authenticated identity presented. For different networks, | on the authenticated identity presented. For different networks, | |||
examples of automated acceptance may include: | examples of automated acceptance may include the allowance of: | |||
* allow any device of a specific type (as determined by the X.509 | * any device of a specific type (as determined by the X.509 IDevID), | |||
IDevID), | ||||
* allow any device from a specific vendor (as determined by the | * any device from a specific vendor (as determined by the X.509 | |||
X.509 IDevID), | IDevID), | |||
* allow a specific device from a vendor (as determined by the X.509 | * a specific device from a vendor (as determined by the X.509 | |||
IDevID) against a domain white list. (The mechanism for checking | IDevID) against a domain acceptlist. (The mechanism for checking | |||
a shared white list potentially used by multiple Registrars is out | a shared acceptlist potentially used by multiple registrars is out | |||
of scope). | of scope.) | |||
If validation fails the registrar SHOULD respond with the HTTP 404 | If validation fails, the registrar SHOULD respond with the HTTP 404 | |||
error code. If the voucher-request is in an unknown format, then an | 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 | HTTP 406 error code is more appropriate. A situation that could be | |||
resolved with administrative action (such as adding a vendor to a | resolved with administrative action (such as adding a vendor to an | |||
whitelist) MAY be responded with an 403 HTTP error code. | acceptlist) MAY be responded to with a 403 HTTP error code. | |||
If authorization is successful the registrar obtains a voucher from | If authorization is successful, the registrar obtains a voucher from | |||
the MASA service (see Section 5.5) and returns that MASA signed | the MASA service (see Section 5.5) and returns that MASA-signed | |||
voucher to the pledge as described in Section 5.6. | voucher to the pledge as described in Section 5.6. | |||
5.4. BRSKI-MASA TLS establishment details | 5.4. BRSKI-MASA TLS Establishment Details | |||
The BRSKI-MASA TLS connection is a 'normal' TLS connection | The BRSKI-MASA TLS connection is a "normal" TLS connection | |||
appropriate for HTTPS REST interfaces. The registrar initiates the | appropriate for HTTPS REST interfaces. The registrar initiates the | |||
connection and uses the MASA URL obtained as described in | connection and uses the MASA URL that is obtained as described in | |||
Section 2.8. The mechanisms in [RFC6125] SHOULD be used 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 | authentication of the MASA using a DNS-ID that matches that which is | |||
found in the IDevID. Registrars MAY include a mechanism to override | found in the IDevID. Registrars MAY include a mechanism to override | |||
the MASA URL on a manufacturer-by-manufacturer basis, and within that | the MASA URL on a manufacturer-by-manufacturer basis, and within that | |||
override it is appropriate to provide alternate anchors. This will | override, it is appropriate to provide alternate anchors. This will | |||
typically used by some vendors to establish explicit (or private) | typically be used by some vendors to establish explicit (or private) | |||
trust anchors for validating their MASA that is part of a sales | trust anchors for validating their MASA that is part of a sales | |||
channel integration. | channel integration. | |||
Use of TLS 1.3 (or newer) is encouraged. TLS 1.2 or newer is | Use of TLS 1.3 (or newer) is encouraged. TLS 1.2 or newer is | |||
REQUIRED. TLS 1.3 (or newer) SHOULD be available. | REQUIRED. TLS 1.3 (or newer) SHOULD be available. | |||
As described in [RFC7030], the MASA and the registrars SHOULD be | As described in [RFC7030], the MASA and the registrars SHOULD be | |||
prepared to support TLS client certificate authentication and/or HTTP | prepared to support TLS Client Certificate authentication and/or HTTP | |||
Basic, Digest, or SCRAM authentication. This connection MAY also | Basic, Digest, or Salted Challenge Response Authentication Mechanism | |||
have no client authentication at all. | (SCRAM) authentication. This connection MAY also have no client | |||
authentication at all. | ||||
Registrars SHOULD permit trust anchors to be pre-configured on a per- | Registrars SHOULD permit trust anchors to be preconfigured on a per- | |||
vendor(MASA) basis. Registrars SHOULD include the ability to | vendor (MASA) basis. Registrars SHOULD include the ability to | |||
configure a TLS ClientCertificate on a per-MASA basis, or to use no | configure a TLS Client Certificate on a per-MASA basis, or to use no | |||
client certificate. Registrars SHOULD also permit HTTP Basic and | Client Certificate. Registrars SHOULD also permit HTTP Basic and | |||
Digest authentication to be configured. | Digest authentication to be configured. | |||
The authentication of the BRSKI-MASA connection does not change the | The authentication of the BRSKI-MASA connection does not change the | |||
voucher-request process, as voucher-requests are already signed by | voucher-request process, as voucher-requests are already signed by | |||
the registrar. Instead, this authentication provides access control | the registrar. Instead, this authentication provides access control | |||
to the audit-log as described in Section 5.8. | to the audit-log as described in Section 5.8. | |||
Implementors are advised that contacting the MASA is to establish a | Implementers are advised that contacting the MASA establishes a | |||
secured API connection with a web service and that there are a number | secured API connection with a web service, and that there are a | |||
of authentication models being explored within the industry. | number of authentication models being explored within the industry. | |||
Registrars are RECOMMENDED to fail gracefully and generate useful | Registrars are RECOMMENDED to fail gracefully and generate useful | |||
administrative notifications or logs in the advent of unexpected HTTP | administrative notifications or logs in the advent of unexpected HTTP | |||
401 (Unauthorized) responses from the MASA. | 401 (Unauthorized) responses from the MASA. | |||
5.4.1. MASA authentication of customer Registrar | 5.4.1. MASA Authentication of Customer Registrar | |||
Providing per-customer options requires that the customer's registrar | Providing per-customer options requires the customer's registrar to | |||
be uniquely identified. This can be done by any stateless method | be uniquely identified. This can be done by any stateless method | |||
that HTTPS supports such as with HTTP Basic or Digest authentication | that HTTPS supports such as HTTP Basic or Digest authentication (that | |||
(that is using a password), but the use of TLS Client Certificate | is using a password), but the use of TLS Client Certificate | |||
authentication is RECOMMENDED. | authentication is RECOMMENDED. | |||
Stateful methods involving API tokens, or HTTP Cookies, are not | Stateful methods involving API tokens, or HTTP Cookies, are not | |||
recommended. | recommended. | |||
It is expected that the setup and configuration of per-customer | It is expected that the setup and configuration of per-customer | |||
Client Certificates is done as part of a sales ordering process. | Client Certificates is done as part of a sales ordering process. | |||
The use of public PKI (i.e. WebPKI) End-Entity Certificates to | The use of public PKI (i.e., WebPKI) end-entity certificates to | |||
identify the Registrar is reasonable, and if done universally this | identify the registrar is reasonable, and if done universally, this | |||
would permit a MASA to identify a customers' Registrar simply by a | would permit a MASA to identify a customer's registrar simply by a | |||
FQDN. | Fully Qualified Domain Name (FQDN). | |||
The use of DANE records in DNSSEC signed zones would also permit use | The use of DANE records in DNSSEC-signed zones would also permit use | |||
of a FQDN to identify customer Registrars. | of a FQDN to identify customer registrars. | |||
A third (and simplest, but least flexible) mechanism would be for the | A third (and simplest, but least flexible) mechanism would be for the | |||
MASA to simply store the Registrar's certificate pinned in a | MASA to simply store the registrar's certificate pinned in a | |||
database. | database. | |||
A MASA without any supply chain integration can simply accept | A MASA without any supply-chain integration can simply accept | |||
Registrars without any authentication, or can accept them on a blind | registrars without any authentication or on a blind TOFU basis as | |||
Trust-on-First-Use basis as described in Section 7.4.2. | described in Section 7.4.2. | |||
This document does not make a specific recommendation on how the MASA | This document does not make a specific recommendation on how the MASA | |||
authenticates the Registrar as there are likely different tradeoffs | authenticates the registrar as there are likely different tradeoffs | |||
in different environments and product values. Even within the ANIMA | in different environments and product values. Even within the ANIMA | |||
ACP applicability, there is a significant difference between supply | ACP applicability, there is a significant difference between supply- | |||
chain logistics for $100 CPE devices and $100,000 core routers. | chain logistics for $100 CPE devices and $100,000 core routers. | |||
5.5. Registrar Requests Voucher from MASA | 5.5. Registrar Requests Voucher from MASA | |||
When a registrar receives a pledge voucher-request it in turn submits | When a registrar receives a pledge voucher-request, it in turn | |||
a registrar voucher-request to the MASA service via an HTTPS | submits a registrar voucher-request to the MASA service via an HTTPS | |||
interface ([RFC7231]). | interface [RFC7231]. | |||
This is done with an HTTP POST using the operation path value of | This is done with an HTTP POST using the operation path value of | |||
"/.well-known/brski/requestvoucher". | "/.well-known/brski/requestvoucher". | |||
The voucher media type "application/voucher-cms+json" is defined in | The voucher media type "application/voucher-cms+json" is defined in | |||
[RFC8366] and is also used for the registrar voucher-request. It is | [RFC8366] and is also used for the registrar voucher-request. It is | |||
a JSON document that has been signed using a CMS structure. The | a JSON document that has been signed using a CMS structure. The | |||
registrar MUST sign the registrar voucher-request. | registrar MUST sign the registrar voucher-request. | |||
MASA implementations SHOULD anticipate future media ntypes but of | MASA implementations SHOULD anticipate future media ntypes but, of | |||
course will simply fail the request if those types are not yet known. | course, will simply fail the request if those types are not yet | |||
known. | ||||
The voucher-request CMS object includes some number of certificates | The voucher-request CMS object includes some number of certificates | |||
that are input to the MASA as it populates the 'pinned-domain-cert'. | that are input to the MASA as it populates the pinned-domain-cert. | |||
As the [RFC8366] is quite flexible in what may be put into the | As [RFC8366] is quite flexible in what may be put into the pinned- | |||
'pinned-domain-cert', the MASA needs some signal as to what | domain-cert, the MASA needs some signal as to what certificate would | |||
certificate would be effective to populate the field with: it may | be effective to populate the field with: it may range from the end- | |||
range from the End Entity (EE) Certificate that the Registrar uses, | entity certificate that the registrar uses to the entire private | |||
to the entire private Enterprise CA certificate. More specific | Enterprise CA certificate. More-specific certificates result in a | |||
certificates result in a tighter binding of the voucher to the | tighter binding of the voucher to the domain, while less-specific | |||
domain, while less specific certificates result in more flexibility | certificates result in more flexibility in how the domain is | |||
in how the domain is represented by certificates. | represented by certificates. | |||
A Registrar which is seeking a nonceless voucher for later offline | A registrar that is seeking a nonceless voucher for later offline use | |||
use benefits from a less specific certificate, as it permits the | benefits from a less-specific certificate, as it permits the actual | |||
actual keypair used by a future Registrar to be determined by the | key pair used by a future registrar to be determined by the pinned | |||
pinned certificate authority. | CA. | |||
In some cases, a less specific certificate, such a public WebPKI | In some cases, a less-specific certificate, such as a public WebPKI | |||
certificate authority, could be too open, and could permit any entity | CA, could be too open and could permit any entity issued a | |||
issued a certificate by that authority to assume ownership of a | certificate by that authority to assume ownership of a device that | |||
device that has a voucher pinned. Future work may provide a solution | has a voucher pinned. Future work may provide a solution to pin both | |||
to pin both a certificate and a name that would reduce such risk of | a certificate and a name that would reduce such risk of malicious | |||
malicious ownership assertions. | ownership assertions. | |||
The Registrar SHOULD request a voucher with the most specificity | The registrar SHOULD request a voucher with the most specificity | |||
consistent with the mode that it is operating in. In order to do | consistent with the mode that it is operating in. In order to do | |||
this, when the Registrar prepares the CMS structure for the signed | this, when the registrar prepares the CMS structure for the signed | |||
voucher-request, it SHOULD include only certificates which are part | 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 | 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 | only the end-entity certificate (with id-kp-cmcRA set) that it uses | |||
as it's TLS Server Certificate, or it MAY be the entire chain, | as its TLS server certificate, or it MAY be the entire chain, | |||
including the Domain CA. | including the domain CA. | |||
The Registrar SHOULD include an [RFC7231] section 5.3.2 "Accept" | The registrar SHOULD include an "Accept" header field (see [RFC7231], | |||
header field indicating the response media types that are acceptable. | Section 5.3.2) indicating the response media types that are | |||
This list SHOULD be the entire list presented to the Registrar in the | acceptable. This list SHOULD be the entire list presented to the | |||
Pledge's original request (see Section 5.2) but MAY be a subset. The | registrar in the pledge's original request (see Section 5.2), but it | |||
MASA is expected to be flexible in what it accepts. | MAY be a subset. The MASA is expected to be flexible in what it | |||
accepts. | ||||
The registrar populates the voucher-request fields as follows: | The registrar populates the voucher-request fields as follows: | |||
created-on: The Registrars SHOULD populate this field with the | created-on: The registrar SHOULD populate this field with the | |||
current date and time when the Registrar formed this voucher | current date and time when the voucher-request is formed. This | |||
request. This field provides additional information to the MASA. | field provides additional information to the MASA. | |||
nonce: This value, if present, is copied from the pledge voucher- | nonce: This value, if present, is copied from the pledge voucher- | |||
request. The registrar voucher-request MAY omit the nonce as per | request. The registrar voucher-request MAY omit the nonce as per | |||
Section 3.1. | Section 3.1. | |||
serial-number: The serial number of the pledge the registrar would | serial-number: The serial number of the pledge the registrar would | |||
like a voucher for. The registrar determines this value by | like a voucher for. The registrar determines this value by | |||
parsing the authenticated pledge IDevID certificate. See | parsing the authenticated pledge IDevID certificate; see | |||
Section 2.3. The registrar MUST verify that the serial number | Section 2.3. The registrar MUST verify that the serial-number | |||
field it parsed matches the serial number field the pledge | field it parsed matches the serial-number field the pledge | |||
provided in its voucher-request. This provides a sanity check | provided in its voucher-request. This provides a sanity check | |||
useful for detecting error conditions and logging. The registrar | useful for detecting error conditions and logging. The registrar | |||
MUST NOT simply copy the serial number field from a pledge voucher | MUST NOT simply copy the serial-number field from a pledge | |||
request as that field is claimed but not certified. | voucher-request as that field is claimed but not certified. | |||
idevid-issuer: The Issuer value from the pledge IDevID certificate | idevid-issuer: The Issuer value from the pledge IDevID certificate | |||
is included to ensure unique interpretation of the serial-number. | is included to ensure unique interpretation of the serial-number. | |||
In the case of nonceless (offline) voucher-request, then an | In the case of a nonceless (offline) voucher-request, an | |||
appropriate value needs to be configured from the same out-of-band | appropriate value needs to be configured from the same out-of-band | |||
source as the serial-number. | source as the serial-number. | |||
prior-signed-voucher-request: The signed pledge voucher-request | prior-signed-voucher-request: The signed pledge voucher-request | |||
SHOULD be included in the registrar voucher-request. The entire | SHOULD be included in the registrar voucher-request. The entire | |||
CMS signed structure is to be included, base64 encoded for | CMS-signed structure is to be included and base64 encoded for | |||
transport in the JSON structure. | transport in the JSON structure. | |||
A nonceless registrar voucher-request MAY be submitted to the MASA. | A nonceless registrar voucher-request MAY be submitted to the MASA. | |||
Doing so allows the registrar to request a voucher when the pledge is | Doing so allows the registrar to request a voucher when the pledge is | |||
offline, or when the registrar anticipates not being able to connect | offline, or when the registrar anticipates not being able to connect | |||
to the MASA while the pledge is being deployed. Some use cases | to the MASA while the pledge is being deployed. Some use cases | |||
require the registrar to learn the appropriate IDevID SerialNumber | require the registrar to learn the appropriate IDevID serialNumber | |||
field and appropriate 'Accept header field' values from the physical | field and appropriate "Accept" header field values from the physical | |||
device labeling or from the sales channel (out-of-scope for this | device labeling or from the sales channel (which is out of scope for | |||
document). | this document). | |||
All other fields MAY be omitted in the registrar voucher-request. | All other fields MAY be omitted in the registrar voucher-request. | |||
The "proximity-registrar-cert" field MUST NOT be present in the | The proximity-registrar-cert field MUST NOT be present in the | |||
registrar voucher-request. | registrar voucher-request. | |||
Example JSON payloads of registrar voucher-requests are in | See example JSON payloads of registrar voucher-requests in | |||
Section 3.3 Examples 2 through 4. | Section 3.3, Examples 2 through 4. | |||
The MASA verifies that the registrar voucher-request is internally | The MASA verifies that the registrar voucher-request is internally | |||
consistent but does not necessarily authenticate the registrar | consistent but does not necessarily authenticate the registrar | |||
certificate since the registrar MAY be unknown to the MASA in | certificate since the registrar MAY be unknown to the MASA in | |||
advance. The MASA performs the actions and validation checks | advance. The MASA performs the actions and validation checks | |||
described in the following sub-sections before issuing a voucher. | described in the following subsections before issuing a voucher. | |||
5.5.1. MASA renewal of expired vouchers | 5.5.1. MASA Renewal of Expired Vouchers | |||
As described in [RFC8366] vouchers are normally short lived to avoid | As described in [RFC8366], vouchers are normally short lived to avoid | |||
revocation issues. If the request is for a previous (expired) | revocation issues. If the request is for a previous (expired) | |||
voucher using the same registrar (that is, a Registrar with the same | voucher using the same registrar (that is, a registrar with the same | |||
Domain CA) then the request for a renewed voucher SHOULD be | domain CA), then the request for a renewed voucher SHOULD be | |||
automatically authorized. The MASA has sufficient information to | automatically authorized. The MASA has sufficient information to | |||
determine this by examining the request, the registrar | determine this by examining the request, the registrar | |||
authentication, and the existing audit-log. The issuance of a | authentication, and the existing audit-log. The issuance of a | |||
renewed voucher is logged as detailed in Section 5.6. | renewed voucher is logged as detailed in Section 5.6. | |||
To inform the MASA that existing vouchers are not to be renewed one | To inform the MASA that existing vouchers are not to be renewed, one | |||
can update or revoke the registrar credentials used to authorize the | can update or revoke the registrar credentials used to authorize the | |||
request (see Section 5.5.4 and Section 5.5.3). More flexible methods | request (see Sections 5.5.4 and 5.5.3). More flexible methods will | |||
will likely involve sales channel integration and authorizations | likely involve sales channel integration and authorizations (details | |||
(details are out-of-scope of this document). | are out of scope of this document). | |||
5.5.2. MASA pinning of registrar | 5.5.2. MASA Pinning of Registrar | |||
A certificate chain is extracted from the Registrar's signed CMS | A certificate chain is extracted from the registrar's signed CMS | |||
container. This chain may be as short as a single End-Entity | container. This chain may be as short as a single end-entity | |||
Certificate, up to the entire registrar certificate chain, including | certificate, up to the entire registrar certificate chain, including | |||
the Domain CA certificate, as specified in Section 5.5. | the domain CA certificate, as specified in Section 5.5. | |||
If the domain's CA is unknown to the MASA, then it is to be | If the domain's CA is unknown to the MASA, then it is considered a | |||
considered a temporary trust anchor for the rest of the steps in this | temporary trust anchor for the rest of the steps in this section. | |||
section. The intention is not to authenticate the message as having | The intention is not to authenticate the message as having come from | |||
come from a fully validated origin, but to establish the consistency | a fully validated origin but to establish the consistency of the | |||
of the domain PKI. | domain PKI. | |||
The MASA MAY use the certificate farthest in the chain chain that it | The MASA MAY use the certificate in the chain that is farthest from | |||
received from the Registrar from the end-entity, as determined by | the end-entity certificate of the registrar, as determined by MASA | |||
MASA policy. A MASA MAY have a local policy that it only pins the | policy. A MASA MAY have a local policy in which it only pins the | |||
End-Entity certificate. This is consistent with [RFC8366]. Details | end-entity certificate. This is consistent with [RFC8366]. Details | |||
of the policy will typically depend upon the degree of Supply Chain | of the policy will typically depend upon the degree of supply-chain | |||
Integration, and the mechanism used by the Registrar to authenticate. | integration and the mechanism used by the registrar to authenticate. | |||
Such a policy would also determine how the MASA will respond to a | Such a policy would also determine how the MASA will respond to a | |||
request for a nonceless voucher. | request for a nonceless voucher. | |||
5.5.3. MASA checking of voucher request signature | 5.5.3. MASA Check of the Voucher-Request Signature | |||
As described in Section 5.5.2, the MASA has extracted Registrar's | 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 | domain CA. This is used to validate the CMS signature [RFC5652] on | |||
the voucher-request. | the voucher-request. | |||
Normal PKIX revocation checking is assumed during voucher-request | Normal PKIX revocation checking is assumed during voucher-request | |||
signature validation. This CA certificate MAY have Certificate | signature validation. This CA certificate MAY have Certificate | |||
Revocation List distribution points, or Online Certificate Status | Revocation List (CRL) distribution points or Online Certificate | |||
Protocol (OCSP) information ([RFC6960]). If they are present, the | Status Protocol (OCSP) information [RFC6960]. If they are present, | |||
MASA MUST be able to reach the relevant servers belonging to the | the MASA MUST be able to reach the relevant servers belonging to the | |||
Registrar's domain CA to perform the revocation checks. | registrar's domain CA to perform the revocation checks. | |||
The use of OCSP Stapling is preferred. | The use of OCSP Stapling is preferred. | |||
5.5.4. MASA verification of domain registrar | 5.5.4. MASA Verification of the Domain Registrar | |||
The MASA MUST verify that the registrar voucher-request is signed by | The MASA MUST verify that the registrar voucher-request is signed by | |||
a registrar. This is confirmed by verifying that the id-kp-cmcRA | a registrar. This is confirmed by verifying that the id-kp-cmcRA | |||
extended key usage extension field (as detailed in EST RFC7030 | extended key usage extension field (as detailed in EST [RFC7030], | |||
section 3.6.1) exists in the certificate of the entity that signed | Section 3.6.1) exists in the certificate of the entity that signed | |||
the registrar voucher-request. This verification is only a | the registrar voucher-request. This verification is only a | |||
consistency check that the unauthenticated domain CA intended the | consistency check to ensure that the unauthenticated domain CA | |||
voucher-request signer to be a registrar. Performing this check | intended the voucher-request signer to be a registrar. Performing | |||
provides value to the domain PKI by assuring the domain administrator | this check provides value to the domain PKI by assuring the domain | |||
that the MASA service will only respect claims from authorized | administrator that the MASA service will only respect claims from | |||
Registration Authorities of the domain. | authorized registration authorities of the domain. | |||
Even when a domain CA is authenticated to the MASA, and there is | Even when a domain CA is authenticated to the MASA, and there is | |||
strong sales channel integration to understand who the legitimate | strong sales channel integration to understand who the legitimate | |||
owner is, the above id-kp-cmcRA check prevents arbitrary End-Entity | owner is, the above id-kp-cmcRA check prevents arbitrary end-entity | |||
certificates (such as an LDevID certificate) from having vouchers | certificates (such as an LDevID certificate) from having vouchers | |||
issued against them. | issued against them. | |||
Other cases of inappropriate voucher issuance are detected by | Other cases of inappropriate voucher issuance are detected by | |||
examination of the audit log. | examination of the audit-log. | |||
If a nonceless voucher-request is submitted the MASA MUST | If a nonceless voucher-request is submitted, the MASA MUST | |||
authenticate the registrar as described in either EST [RFC7030] | authenticate the registrar either as described in EST (see Sections | |||
section 3.2.3, section 3.3.2, or by validating the registrar's | 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 | certificate used to sign the registrar voucher-request using a | |||
configured trust anchor. Any of these methods reduce the risk of | configured trust anchor. Any of these methods reduce the risk of | |||
DDoS attacks and provide an authenticated identity as an input to | DDoS attacks and provide an authenticated identity as an input to | |||
sales channel integration and authorizations (details are out-of- | sales channel integration and authorizations (details are out of | |||
scope of this document). | scope of this document). | |||
In the nonced case, validation of the Registrar's identity (via TLS | In the nonced case, validation of the registrar's identity (via TLS | |||
Client Certificate or HTTP authentication) MAY be omitted if the | Client Certificate or HTTP authentication) MAY be omitted if the MASA | |||
device policy is to accept audit-only vouchers. | knows that the device policy is to accept audit-only vouchers. | |||
5.5.5. MASA verification of pledge prior-signed-voucher-request | 5.5.5. MASA Verification of the Pledge 'prior-signed-voucher-request' | |||
The MASA MAY verify that the registrar voucher-request includes the | The MASA MAY verify that the registrar voucher-request includes the | |||
'prior-signed-voucher-request' field. If so the prior-signed- | prior-signed-voucher-request field. If so, the prior-signed-voucher- | |||
voucher-request MUST include a 'proximity-registrar-cert' that is | request MUST include a proximity-registrar-cert that is consistent | |||
consistent with the certificate used to sign the registrar voucher- | with the certificate used to sign the registrar voucher-request. | |||
request. Additionally the voucher-request serial-number leaf MUST | Additionally, the voucher-request serial-number leaf MUST match the | |||
match the pledge serial-number that the MASA extracts from the | pledge serial-number that the MASA extracts from the signing | |||
signing certificate of the prior-signed-voucher-request. The | certificate of the prior-signed-voucher-request. The consistency | |||
consistency check described above is checking that the 'proximity- | check described above entails checking that the proximity-registrar- | |||
registrar-cert' SPKI fingerprint exists within the registrar voucher- | cert Subject Public Key Info (SPKI) Fingerprint exists within the | |||
request CMS signature's certificate chain. This is substantially the | registrar voucher-request CMS signature's certificate chain. This is | |||
same as the pin validation described in in [RFC7469] section 2.6, | substantially the same as the pin validation described in [RFC7469], | |||
paragraph three. | Section 2.6. | |||
If these checks succeed the MASA updates the voucher and audit-log | If these checks succeed, the MASA updates the voucher and audit-log | |||
assertion leafs with the "proximity" assertion, as defined by | assertion leafs with the "proximity" assertion, as defined by | |||
[RFC8366] section 5.3. | [RFC8366], Section 5.3. | |||
5.5.6. MASA nonce handling | 5.5.6. MASA Nonce Handling | |||
The MASA does not verify the nonce itself. If the registrar voucher- | The MASA does not verify the nonce itself. If the registrar voucher- | |||
request contains a nonce, and the prior-signed-voucher-request | request contains a nonce, and the prior-signed-voucher-request | |||
exists, then the MASA MUST verify that the nonce is consistent. | exists, then the MASA MUST verify that the nonce is consistent. | |||
(Recall from above that the voucher-request might not contain a | (Recall from above that the voucher-request might not contain a | |||
nonce, see Section 5.5 and Section 5.5.4). | nonce; see Sections 5.5 and 5.5.4.) | |||
The MASA populates the audit-log with the nonce that was verified. | 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 | If a nonceless voucher is issued, then the audit-log is to be | |||
populated with the JSON value "null". | populated with the JSON value "null". | |||
5.6. MASA and Registrar Voucher Response | 5.6. MASA and Registrar Voucher Response | |||
The MASA voucher response to the registrar is forwarded without | The MASA voucher response to the registrar is forwarded without | |||
changes to the pledge; therefore this section applies to both the | changes to the pledge; therefore, this section applies to both the | |||
MASA and the registrar. The HTTP signaling described applies to both | MASA and the registrar. The HTTP signaling described applies to both | |||
the MASA and registrar responses. | the MASA and registrar responses. | |||
When a voucher request arrives at the registrar, if it has a cached | When a voucher-request arrives at the registrar, if it has a cached | |||
response from the MASA for the corresponding registrar voucher- | response from the MASA for the corresponding registrar voucher- | |||
request, that cached response can be used according to local policy; | request, that cached response can be used according to local policy; | |||
otherwise the registrar constructs a new registrar voucher-request | otherwise, the registrar constructs a new registrar voucher-request | |||
and sends it to the MASA. | and sends it to the MASA. | |||
Registrar evaluation of the voucher itself is purely for transparency | Registrar evaluation of the voucher itself is purely for transparency | |||
and audit purposes to further inform log verification (see | and audit purposes to further inform log verification (see | |||
Section 5.8.3) and therefore a registrar could accept future voucher | Section 5.8.3); therefore, a registrar could accept future voucher | |||
formats that are opaque to the registrar. | formats that are opaque to the registrar. | |||
If the voucher-request is successful, the server (MASA responding to | If the voucher-request is successful, the server (a MASA responding | |||
registrar or registrar responding to pledge) response MUST contain an | to a registrar or a registrar responding to a pledge) response MUST | |||
HTTP 200 response code. The server MUST answer with a suitable 4xx | contain an HTTP 200 response code. The server MUST answer with a | |||
or 5xx HTTP [RFC7230] error code when a problem occurs. In this | suitable 4xx or 5xx HTTP [RFC7230] error code when a problem occurs. | |||
case, the response data from the MASA MUST be a plaintext human- | In this case, the response data from the MASA MUST be a plain text | |||
readable (UTF-8) error message containing explanatory information | human-readable (UTF-8) error message containing explanatory | |||
describing why the request was rejected. | information describing why the request was rejected. | |||
The registrar MAY respond with an HTTP 202 ("the request has been | The registrar MAY respond with an HTTP 202 ("the request has been | |||
accepted for processing, but the processing has not been completed") | accepted for processing, but the processing has not been completed") | |||
as described in EST [RFC7030] section 4.2.3 wherein the client "MUST | as described in EST [RFC7030], Section 4.2.3, wherein the client | |||
wait at least the specified 'Retry-After' time before repeating the | "MUST wait at least the specified "retry-after" time before repeating | |||
same request". (see [RFC7231] section 6.6.4) The pledge is | the same request" (also see [RFC7231], Section 6.6.4). The pledge is | |||
RECOMMENDED to provide local feedback (blinked LED etc) during this | RECOMMENDED to provide local feedback (blinked LED, etc.) during this | |||
wait cycle if mechanisms for this are available. To prevent an | wait cycle if mechanisms for this are available. To prevent an | |||
attacker registrar from significantly delaying bootstrapping the | attacker registrar from significantly delaying bootstrapping, the | |||
pledge MUST limit the 'Retry-After' time to 60 seconds. Ideally the | pledge MUST limit the Retry-After time to 60 seconds. Ideally, the | |||
pledge would keep track of the appropriate Retry-After header field | pledge would keep track of the appropriate Retry-After header field | |||
values for any number of outstanding registrars but this would | values for any number of outstanding registrars, but this would | |||
involve a state table on the pledge. Instead the pledge MAY ignore | 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 | 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 | registrar that is unable to complete the transaction after the first | |||
60 seconds has another chance a minute later). A pledge SHOULD only | 60 seconds has another chance a minute later). A pledge SHOULD be | |||
maintain a 202 retry-state for up to 4 days, which is longer than a | willing to maintain a 202 retry-state for up to 4 days, which is | |||
long weekend, after which time the enrollment attempt fails and the | longer than a long weekend, after which time the enrollment attempt | |||
pledge returns to discovery state. | 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 | A pledge that retries a request after receiving a 202 message MUST | |||
resend the same voucher-request. It MUST NOT sign a new voucher- | resend the same voucher-request. It MUST NOT sign a new voucher- | |||
request each time, and in particular, it MUST NOT change the nonce | request each time, and in particular, it MUST NOT change the nonce | |||
value. | value. | |||
In order to avoid infinite redirect loops, which a malicious | In order to avoid infinite redirect loops, which a malicious | |||
registrar might do in order to keep the pledge from discovering the | registrar might do in order to keep the pledge from discovering the | |||
correct registrar, the pledge MUST NOT follow more than one | correct registrar, the pledge MUST NOT follow more than one | |||
redirection (3xx code) to another web origin. EST supports | redirection (3xx code) to another web origin. EST supports | |||
redirection but requires user input; this change allows the pledge to | redirection but requires user input; this change allows the pledge to | |||
follow a single redirection without a user interaction. | follow a single redirection without a user interaction. | |||
A 403 (Forbidden) response is appropriate if the voucher-request is | A 403 (Forbidden) response is appropriate if the voucher-request is | |||
not signed correctly, stale, or if the pledge has another outstanding | not signed correctly or is stale or if the pledge has another | |||
voucher that cannot be overridden. | outstanding voucher that cannot be overridden. | |||
A 404 (Not Found) response is appropriate when the request is for a | A 404 (Not Found) response is appropriate when the request is for a | |||
device that is not known to the MASA. | device that is not known to the MASA. | |||
A 406 (Not Acceptable) response is appropriate if a voucher of the | A 406 (Not Acceptable) response is appropriate if a voucher of the | |||
desired type or using the desired algorithms (as indicated by the | desired type or that uses the desired algorithms (as indicated by the | |||
Accept: header fields, and algorithms used in the signature) cannot | "Accept" header fields and algorithms used in the signature) cannot | |||
be issued such as because the MASA knows the pledge cannot process | be issued as such because the MASA knows the pledge cannot process | |||
that type. The registrar SHOULD use this response if it determines | that type. The registrar SHOULD use this response if it determines | |||
the pledge is unacceptable due to inventory control, MASA audit-logs, | the pledge is unacceptable due to inventory control, MASA audit-logs, | |||
or any other reason. | or any other reason. | |||
A 415 (Unsupported Media Type) response is appropriate for a request | A 415 (Unsupported Media Type) response is appropriate for a request | |||
that has a voucher-request or Accept: value that is not understood. | that has a voucher-request or "Accept" value that is not understood. | |||
The voucher response format is as indicated in the submitted Accept | The voucher response format is as indicated in the submitted "Accept" | |||
header fields or based on the MASA's prior understanding of proper | header fields or based on the MASA's prior understanding of proper | |||
format for this Pledge. Only the [RFC8366] "application/voucher- | format for this pledge. Only the "application/voucher-cms+json" | |||
cms+json" media type is defined at this time. The syntactic details | media type [RFC8366] is defined at this time. The syntactic details | |||
of vouchers are described in detail in [RFC8366]. Figure 14 shows a | of vouchers are described in detail in [RFC8366]. Figure 14 shows a | |||
sample of the contents of a voucher. | sample of the contents of a voucher. | |||
{ | { | |||
"ietf-voucher:voucher": { | "ietf-voucher:voucher": { | |||
"nonce": "62a2e7693d82fcda2624de58fb6722e5", | "nonce": "62a2e7693d82fcda2624de58fb6722e5", | |||
"assertion": "logged", | "assertion": "logged", | |||
"pinned-domain-cert": "base64encodedvalue==", | "pinned-domain-cert": "base64encodedvalue==", | |||
"serial-number": "JADA123456789" | "serial-number": "JADA123456789" | |||
} | } | |||
} | } | |||
Figure 14: An example voucher | Figure 14: An Example Voucher | |||
The MASA populates the voucher fields as follows: | The MASA populates the voucher fields as follows: | |||
nonce: The nonce from the pledge if available. See Section 5.5.6. | nonce: The nonce from the pledge if available. See Section 5.5.6. | |||
assertion: The method used to verify the relationship between pledge | assertion: The method used to verify the relationship between the | |||
and registrar. See Section 5.5.5. | pledge and registrar. See Section 5.5.5. | |||
pinned-domain-cert: A certificate. See Section 5.5.2. This figure | pinned-domain-cert: A certificate; see Section 5.5.2. This figure | |||
is illustrative, for an example, see Appendix C.2 where an End | is illustrative; for an example, see Appendix C.2 where an end- | |||
Entity certificate is used. | entity certificate is used. | |||
serial-number: The serial-number as provided in the voucher-request. | serial-number: The serial-number as provided in the voucher-request. | |||
Also see Section 5.5.5. | Also see Section 5.5.5. | |||
domain-cert-revocation-checks: Set as appropriate for the pledge's | domain-cert-revocation-checks: Set as appropriate for the pledge's | |||
capabilities and as documented in [RFC8366]. The MASA MAY set | capabilities and as documented in [RFC8366]. The MASA MAY set | |||
this field to 'false' since setting it to 'true' would require | this field to "false" since setting it to "true" would require | |||
that revocation information be available to the pledge and this | that revocation information be available to the pledge, and this | |||
document does not make normative requirements for [RFC6961] or | document does not make normative requirements for [RFC6961], | |||
equivalent integrations. | Section 4.4.2.1 of [RFC8446], or equivalent integrations. | |||
expires-on: This is set for nonceless vouchers. The MASA ensures | expires-on: This is set for nonceless vouchers. The MASA ensures | |||
the voucher lifetime is consistent with any revocation or pinned- | the voucher lifetime is consistent with any revocation or pinned- | |||
domain-cert consistency checks the pledge might perform. See | domain-cert consistency checks the pledge might perform. See | |||
section Section 2.6.1. There are three times to consider: (a) a | Section 2.6.1. There are three times to consider: (a) a | |||
configured voucher lifetime in the MASA, (b) the expiry time for | configured voucher lifetime in the MASA, (b) the expiry time for | |||
the registrar's certificate, (c) any certificate revocation | the registrar's certificate, and (c) any CRL lifetime. The | |||
information (CRL) lifetime. The expires-on field SHOULD be before | expires-on field SHOULD be before the earliest of these three | |||
the earliest of these three values. Typically (b) will be some | values. Typically, (b) will be some significant time in the | |||
significant time in the future, but (c) will typically be short | future, but (c) will typically be short (on the order of a week or | |||
(on the order of a week or less). The RECOMMENDED period for (a) | less). The RECOMMENDED period for (a) is on the order of 20 | |||
is on the order of 20 minutes, so it will typically determine the | minutes, so it will typically determine the life span of the | |||
lifespan of the resulting voucher. 20 minutes is sufficient time | resulting voucher. 20 minutes is sufficient time to reach the | |||
to reach the post-provisional state in the pledge, at which point | post-provisional state in the pledge, at which point there is an | |||
there is an established trust relationship between pledge and | established trust relationship between the pledge and registrar. | |||
registrar. The subsequent operations can take as long as required | The subsequent operations can take as long as required from that | |||
from that point onwards. The lifetime of the voucher has no | point onwards. The lifetime of the voucher has no impact on the | |||
impact on the lifespan of the ownership relationship. | life span of the ownership relationship. | |||
Whenever a voucher is issued the MASA MUST update the audit-log | Whenever a voucher is issued, the MASA MUST update the audit-log | |||
sufficiently to generate the response as described in Section 5.8.1. | sufficiently to generate the response as described in Section 5.8.1. | |||
The internal state requirements to maintain the audit-log are out-of- | The internal state requirements to maintain the audit-log are out of | |||
scope. | scope. | |||
5.6.1. Pledge voucher verification | 5.6.1. Pledge Voucher Verification | |||
The pledge MUST verify the voucher signature using the manufacturer- | The pledge MUST verify the voucher signature using the manufacturer- | |||
installed trust anchor(s) associated with the manufacturer's MASA | installed trust anchor(s) associated with the manufacturer's MASA | |||
(this is likely included in the pledge's firmware). Management of | (this is likely included in the pledge's firmware). Management of | |||
the manufacturer-installed trust anchor(s) is out-of-scope of this | the manufacturer-installed trust anchor(s) is out of scope of this | |||
document; this protocol does not update these trust anchor(s). | document; this protocol does not update this trust anchor(s). | |||
The pledge MUST verify the serial-number field of the signed voucher | The pledge MUST verify that the serial-number field of the signed | |||
matches the pledge's own serial-number. | voucher matches the pledge's own serial-number. | |||
The pledge MUST verify the nonce information in the voucher. If | The pledge MUST verify the nonce information in the voucher. If | |||
present, the nonce in the voucher must match the nonce the pledge | present, the nonce in the voucher must match the nonce the pledge | |||
submitted to the registrar; vouchers with no nonce can also be | submitted to the registrar; vouchers with no nonce can also be | |||
accepted (according to local policy, see Section 7.2) | accepted (according to local policy; see Section 7.2). | |||
The pledge MUST be prepared to parse and fail gracefully from a | The pledge MUST be prepared to parse and fail gracefully from a | |||
voucher response that does not contain a 'pinned-domain-cert' field. | voucher response that does not contain a pinned-domain-cert field. | |||
Such a thing indicates a failure to enroll in this domain, and the | Such a thing indicates a failure to enroll in this domain, and the | |||
pledge MUST attempt joining with other available Join Proxy. | pledge MUST attempt joining with other available Join Proxies. | |||
The pledge MUST be prepared to ignore additional fields that it does | The pledge MUST be prepared to ignore additional fields that it does | |||
not recognize. | not recognize. | |||
5.6.2. Pledge authentication of provisional TLS connection | 5.6.2. Pledge Authentication of Provisional TLS Connection | |||
Following the process described in [RFC8366], the pledge should | Following the process described in [RFC8366], the pledge should | |||
consider the public key from the pinned-domain-cert as the sole | consider the public key from the pinned-domain-cert as the sole | |||
temporary trust anchor. | temporary trust anchor. | |||
The pledge then evaluates the TLS Server Certificate chain that it | The pledge then evaluates the TLS server certificate chain that it | |||
received when the TLS connection was formed using this trust anchor. | received when the TLS connection was formed using this trust anchor. | |||
It is possible that the pinned-domain-cert matches the End-Entity | It is possible that the public key in the pinned-domain-cert directly | |||
Certificate provided in the TLS Server. | 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- | If a registrar's credentials cannot be verified using the pinned- | |||
domain-cert trust anchor from the voucher then the TLS connection is | domain-cert trust anchor from the voucher, then the TLS connection is | |||
immediately discarded and the pledge abandons attempts to bootstrap | discarded, and the pledge abandons attempts to bootstrap with this | |||
with this discovered registrar. The pledge SHOULD send voucher | discovered registrar. The pledge SHOULD send voucher status | |||
status telemetry (described below) before closing the TLS connection. | telemetry (described below) before closing the TLS connection. The | |||
The pledge MUST attempt to enroll using any other proxies it has | pledge MUST attempt to enroll using any other proxies it has found. | |||
found. It SHOULD return to the same proxy again after unsuccessful | It SHOULD return to the same proxy again after unsuccessful attempts | |||
attempts with other proxies. Attempts should be made repeated at | with other proxies. Attempts should be made at repeated intervals | |||
intervals according to the backoff timer described earlier. Attempts | according to the back-off timer described earlier. Attempts SHOULD | |||
SHOULD be repeated as failure may be the result of a temporary | be repeated as failure may be the result of a temporary inconsistency | |||
inconsistency (an inconsistently rolled registrar key, or some other | (an inconsistently rolled registrar key, or some other | |||
mis-configuration). The inconsistency could also be the result an | misconfiguration). The inconsistency could also be the result of an | |||
active MITM attack on the EST connection. | active MITM attack on the EST connection. | |||
The registrar MUST use a certificate that chains to the pinned- | The registrar MUST use a certificate that chains to the pinned- | |||
domain-cert as its TLS server certificate. | domain-cert as its TLS server certificate. | |||
The pledge's PKIX path validation of a registrar certificate's | The pledge's PKIX path validation of a registrar certificate's | |||
validity period information is as described in Section 2.6.1. Once | validity period information is as described in Section 2.6.1. Once | |||
the PKIX path validation is successful the TLS connection is no | the PKIX path validation is successful, the TLS connection is no | |||
longer provisional. | longer provisional. | |||
The pinned-domain-cert MAY be installed as a trust anchor for future | The pinned-domain-cert MAY be installed as a trust anchor for future | |||
operations such as enrollment (e.g. [RFC7030] as recommended) or | operations such as enrollment (e.g., as recommended per [RFC7030]) or | |||
trust anchor management or raw protocols that do not need full PKI | trust anchor management or raw protocols that do not need full PKI- | |||
based key management. It can be used to authenticate any dynamically | based key management. It can be used to authenticate any dynamically | |||
discovered EST server that contain the id-kp-cmcRA extended key usage | discovered EST server that contains the id-kp-cmcRA extended key | |||
extension as detailed in EST RFC7030 section 3.6.1; but to reduce | usage extension as detailed in EST (see [RFC7030], Section 3.6.1); | |||
system complexity the pledge SHOULD avoid additional discovery | but to reduce system complexity, the pledge SHOULD avoid additional | |||
operations. Instead the pledge SHOULD communicate directly with the | discovery operations. Instead, the pledge SHOULD communicate | |||
registrar as the EST server. The 'pinned-domain-cert' is not a | directly with the registrar as the EST server. The pinned-domain- | |||
complete distribution of the [RFC7030] section 4.1.3 CA Certificate | cert is not a complete distribution of the CA certificate response, | |||
Response, which is an additional justification for the recommendation | as described in [RFC7030], Section 4.1.3, which is an additional | |||
to proceed with EST key management operations. Once a full CA | justification for the recommendation to proceed with EST key | |||
Certificate Response is obtained it is more authoritative for the | management operations. Once a full CA certificate response is | |||
domain than the limited 'pinned-domain-cert' response. | obtained, it is more authoritative for the domain than the limited | |||
pinned-domain-cert response. | ||||
5.7. Pledge BRSKI Status Telemetry | 5.7. Pledge BRSKI Status Telemetry | |||
The domain is expected to provide indications to the system | The domain is expected to provide indications to the system | |||
administrators concerning device lifecycle status. To facilitate | administrators concerning device life-cycle status. To facilitate | |||
this it needs telemetry information concerning the device's status. | this, it needs telemetry information concerning the device's status. | |||
The pledge MUST indicate its pledge status regarding the voucher. It | The pledge MUST indicate its pledge status regarding the voucher. It | |||
does this by sending a status message to the Registrar. | does this by sending a status message to the registrar. | |||
The posted data media type: application/json | The posted data media type: application/json | |||
The client sends an HTTP POST to the server at the URI ".well- | The client sends an HTTP POST to the server at the URI ".well- | |||
known/brski/voucher_status". | known/brski/voucher_status". | |||
The format and semantics described below are for version 1. A | The format and semantics described below are for version 1. A | |||
version field is included to permit significant changes to this | version field is included to permit significant changes to this | |||
feedback in the future. A Registrar that receives a status message | feedback in the future. A registrar that receives a status message | |||
with a version larger than it knows about SHOULD log the contents and | with a version larger than it knows about SHOULD log the contents and | |||
alert a human. | alert a human. | |||
The Status field indicates if the voucher was acceptable. Boolean | The status field indicates if the voucher was acceptable. Boolean | |||
values are acceptable, where "true" indicates the voucher was | values are acceptable, where "true" indicates the voucher was | |||
acceptable. | acceptable. | |||
If the voucher was not acceptable the Reason string indicates why. | If the voucher was not acceptable, the Reason string indicates why. | |||
In the failure case this message may be sent to an unauthenticated, | In a failure case, this message may be sent to an unauthenticated, | |||
potentially malicious registrar and therefore the Reason string | potentially malicious registrar; therefore, the Reason string SHOULD | |||
SHOULD NOT provide information beneficial to an attacker. The | NOT provide information beneficial to an attacker. The operational | |||
operational benefit of this telemetry information is balanced against | benefit of this telemetry information is balanced against the | |||
the operational costs of not recording that an voucher was ignored by | operational costs of not recording that a voucher was ignored by a | |||
a client the registrar expected to continue joining the domain. | client that the registrar expected was going to continue joining the | |||
domain. | ||||
The reason-context attribute is an arbitrary JSON object (literal | The reason-context attribute is an arbitrary JSON object (literal | |||
value or hash of values) which provides additional information | value or hash of values) that provides additional information | |||
specific to this pledge. The contents of this field are not subject | specific to this pledge. The contents of this field are not subject | |||
to standardization. | to standardization. | |||
The version and status fields MUST be present. The Reason field | The version and status fields MUST be present. The Reason field | |||
SHOULD be present whenever the status field is false. The Reason- | SHOULD be present whenever the status field is false. The Reason- | |||
Context field is optional. In the case of a SUCCESS the Reason | Context field is optional. In the case of a SUCCESS, the Reason | |||
string MAY be omitted. | string MAY be omitted. | |||
The keys to this JSON object are case-sensitive and MUST be | The keys to this JSON object are case sensitive and MUST be | |||
lowercase. Figure 16 shows an example JSON. | lowercase. Figure 16 shows an example JSON. | |||
<CODE BEGINS> file "voucherstatus.cddl" | <CODE BEGINS> file "voucherstatus.cddl" | |||
voucherstatus-post = { | voucherstatus-post = { | |||
"version": uint, | "version": uint, | |||
"status": bool, | "status": bool, | |||
? "reason": text, | ? "reason": text, | |||
? "reason-context" : { $$arbitrary-map } | ? "reason-context" : { $$arbitrary-map } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 15: CDDL for voucher status POST | Figure 15: CDDL for Voucher Status POST | |||
{ | { | |||
"version": 1, | "version": 1, | |||
"status":false, | "status":false, | |||
"reason":"Informative human readable message", | "reason":"Informative human-readable message", | |||
"reason-context": { "additional" : "JSON" } | "reason-context": { "additional" : "JSON" } | |||
} | } | |||
Figure 16: Example Status Telemetry | Figure 16: Example Status Telemetry | |||
The server SHOULD respond with an HTTP 200 but MAY simply fail with | The server SHOULD respond with an HTTP 200 but MAY simply fail with | |||
an HTTP 404 error. The client ignores any response. Within the | an HTTP 404 error. The client ignores any response. The server | |||
server logs the server SHOULD capture this telemetry information. | SHOULD capture this telemetry information within the server logs. | |||
Additional standard JSON fields in this POST MAY be added, see | Additional standard JSON fields in this POST MAY be added; see | |||
Section 8.5. A server that sees unknown fields should log them, but | Section 8.5. A server that sees unknown fields should log them, but | |||
otherwise ignore them. | otherwise ignore them. | |||
5.8. Registrar audit-log request | 5.8. Registrar Audit-Log Request | |||
After receiving the pledge status telemetry Section 5.7, the | After receiving the pledge status telemetry (see Section 5.7), the | |||
registrar SHOULD request the MASA audit-log from the MASA service. | registrar SHOULD request the MASA audit-log from the MASA service. | |||
This is done with an HTTP POST using the operation path value of | This is done with an HTTP POST using the operation path value of | |||
"/.well-known/brski/requestauditlog". | "/.well-known/brski/requestauditlog". | |||
The registrar SHOULD HTTP POST the same registrar voucher-request as | The registrar SHOULD HTTP POST the same registrar voucher-request as | |||
it did when requesting a voucher (using the same Content-Type). It | it did when requesting a voucher (using the same Content-Type). It | |||
is posted to the /requestauditlog URI instead. The "idevid-issuer" | is posted to the /requestauditlog URI instead. The idevid-issuer and | |||
and "serial-number" informs the MASA which log is requested so the | serial-number informs the MASA which log is requested, so the | |||
appropriate log can be prepared for the response. Using the same | appropriate log can be prepared for the response. Using the same | |||
media type and message minimizes cryptographic and message operations | media type and message minimizes cryptographic and message | |||
although it results in additional network traffic. The relying MASA | operations, although it results in additional network traffic. The | |||
implementation MAY leverage internal state to associate this request | relying MASA implementation MAY leverage internal state to associate | |||
with the original, and by now already validated, voucher-request so | this request with the original, and by now already validated, | |||
as to avoid an extra crypto validation. | voucher-request so as to avoid an extra crypto validation. | |||
A registrar MAY request logs at future times. If the registrar | A registrar MAY request logs at future times. If the registrar | |||
generates a new request then the MASA is forced to perform the | generates a new request, then the MASA is forced to perform the | |||
additional cryptographic operations to verify the new request. | additional cryptographic operations to verify the new request. | |||
A MASA that receives a request for a device that does not exist, or | 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 | for which the requesting owner was never an owner, returns an HTTP | |||
("Not found") code. | 404 ("Not found") code. | |||
It is reasonable for a Registrar, that the MASA does not believe to | 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 | be the current owner, to request the audit-log. There are probably | |||
reasons for this which are hard to predict in advance. For instance, | reasons for this, which are hard to predict in advance. For | |||
such a registrar may not be aware that the device has been resold; it | instance, such a registrar may not be aware that the device has been | |||
may be that the device has been resold inappropriately, and this is | resold; it may be that the device has been resold inappropriately, | |||
how the original owner will learn of the occurance. It is also | and this is how the original owner will learn of the occurrence. It | |||
possible that the device legitimately spends time in two different | is also possible that the device legitimately spends time in two | |||
networks. | different networks. | |||
Rather than returning the audit-log as a response to the POST (with a | 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") | 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 | response ([RFC7231], Sections 6.3.2 and 7.1), with the URL to the | |||
prepared (and idempotent, therefore cachable) audit response in the | prepared (and idempotent, therefore cachable) audit response in the | |||
Location: header field. | "Location" header field. | |||
In order to avoid enumeration of device audit-logs, MASA that return | In order to avoid enumeration of device audit-logs, a MASA that | |||
URLs SHOULD take care to make the returned URL unguessable. | returns URLs SHOULD take care to make the returned URL unguessable. | |||
[W3C.WD-capability-urls-20140218] provides very good additional | [W3C.capability-urls] provides very good additional guidance. For | |||
guidance. For instance, rather than returning URLs containing a | instance, rather than returning URLs containing a database number | |||
database number such as https://example.com/auditlog/1234 or the EUI | such as https://example.com/auditlog/1234 or the Extended Unique | |||
of the device such https://example.com/auditlog/10-00-00-11-22-33, | Identifier (EUI) of the device such https://example.com/ | |||
the MASA SHOULD return a randomly generated value (a "slug" in web | auditlog/10-00-00-11-22-33, the MASA SHOULD return a randomly | |||
parlance). The value is used to find the relevant database entry. | 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 | A MASA that returns a code 200 MAY also include a "Location" header | |||
for future reference by the registrar. | for future reference by the registrar. | |||
5.8.1. MASA audit log response | 5.8.1. MASA Audit-Log Response | |||
A log data file is returned consisting of all log entries associated | A log data file is returned consisting of all log entries associated | |||
with the device selected by the IDevID presented in the request. The | 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 | audit-log may be abridged by removal of old or repeated values as | |||
explained below. The returned data is in JSON format ([RFC8259]), | explained below. The returned data is in JSON format [RFC8259], and | |||
and the Content-Type SHOULD be "application/json". | the Content-Type SHOULD be "application/json". | |||
The following CDDL ([RFC8610]) explains the structure of the JSON | The following CDDL [RFC8610] explains the structure of the JSON | |||
format audit-log response: | format audit-log response: | |||
<CODE BEGINS> file "auditlog.cddl" | <CODE BEGINS> file "auditlog.cddl" | |||
audit-log-response = { | audit-log-response = { | |||
"version": uint, | "version": uint, | |||
"events": [ + event ] | "events": [ + event ] | |||
"truncation": { | "truncation": { | |||
? "nonced duplicates": uint, | ? "nonced duplicates": uint, | |||
? "nonceless duplicates": uint, | ? "nonceless duplicates": uint, | |||
? "arbitrary": uint, | ? "arbitrary": uint, | |||
skipping to change at page 58, line 36 ¶ | skipping to change at line 2652 ¶ | |||
event = { | event = { | |||
"date": text, | "date": text, | |||
"domainID": text, | "domainID": text, | |||
"nonce": text / null, | "nonce": text / null, | |||
"assertion": "verified" / "logged" / "proximity", | "assertion": "verified" / "logged" / "proximity", | |||
? "truncated": uint, | ? "truncated": uint, | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 17: CDDL for audit-log response | Figure 17: CDDL for Audit-Log Response | |||
An example: | An example: | |||
{ | { | |||
"version":"1", | "version":"1", | |||
"events":[ | "events":[ | |||
{ | { | |||
"date":"2019-05-15T17:25:55.644-04:00", | "date":"2019-05-15T17:25:55.644-04:00", | |||
"domainID":"BduJhdHPpfhQLyponf48JzXSGZ8=", | "domainID":"BduJhdHPpfhQLyponf48JzXSGZ8=", | |||
"nonce":"VOUFT-WwrEv0NuAQEHoV7Q", | "nonce":"VOUFT-WwrEv0NuAQEHoV7Q", | |||
skipping to change at page 59, line 29 ¶ | skipping to change at line 2680 ¶ | |||
"assertion":"proximity" | "assertion":"proximity" | |||
} | } | |||
], | ], | |||
"truncation": { | "truncation": { | |||
"nonced duplicates": "0", | "nonced duplicates": "0", | |||
"nonceless duplicates": "1", | "nonceless duplicates": "1", | |||
"arbitrary": "2" | "arbitrary": "2" | |||
} | } | |||
} | } | |||
Figure 18: Example of audit-log response | Figure 18: Example of an Audit-Log Response | |||
The domainID is a binary SubjectKeyIdentifier value calculated | The domainID is a binary SubjectKeyIdentifier value calculated | |||
according to Section 5.8.2. It is encoded once in base64 in order to | according to Section 5.8.2. It is encoded once in base64 in order to | |||
be transported in this JSON container. | be transported in this JSON container. | |||
The date is in [RFC3339] format, which is consistent with typical | The date is formatted per [RFC3339], which is consistent with typical | |||
JavaScript usage of JSON. | JavaScript usage of JSON. | |||
The truncation structure MAY be omitted if all values are zero. Any | The truncation structure MAY be omitted if all values are zero. Any | |||
counter missing from the truncation structure is the be assumed to be | counter missing from the truncation structure is assumed to be zero. | |||
zero. | ||||
The nonce is a string, as provided in the voucher-request, and used | The nonce is a string, as provided in the voucher-request, and is | |||
in the voucher. If no nonce was placed in the resulting voucher, | used in the voucher. If no nonce was placed in the resulting | |||
then a value of null SHOULD be used in preference to omitting the | voucher, then a value of null SHOULD be used in preference to | |||
entry. While the nonce is often created as a base64 encoded random | omitting the entry. While the nonce is often created as a | |||
series of bytes, this should not be assumed. | base64-encoded random series of bytes, this should not be assumed. | |||
Distribution of a large log is less than ideal. This structure can | Distribution of a large log is less than ideal. This structure can | |||
be optimized as follows: Nonced or Nonceless entries for the same | be optimized as follows: nonced or nonceless entries for the same | |||
domainID MAY be abridged from the log leaving only the single most | domainID MAY be abridged from the log leaving only the single most | |||
recent nonced or nonceless entry for that domainID. In the case of | recent nonced or nonceless entry for that domainID. In the case of | |||
truncation the 'event' truncation value SHOULD contain a count of the | truncation, the "event" truncation value SHOULD contain a count of | |||
number of events for this domainID that were omitted. The log SHOULD | the number of events for this domainID that were omitted. The log | |||
NOT be further reduced but there could exist operational situation | SHOULD NOT be further reduced, but an operational situation could | |||
where maintaining the full log is not possible. In such situations | exist where maintaining the full log is not possible. In such | |||
the log MAY be arbitrarily abridged for length, with the number of | situations, the log MAY be arbitrarily abridged for length, with the | |||
removed entries indicated as 'arbitrary'. | number of removed entries indicated as "arbitrary". | |||
If the truncation count exceeds 1024 then the MASA MAY use this value | If the truncation count exceeds 1024, then the MASA MAY use this | |||
without further incrementing it. | value without further incrementing it. | |||
A log where duplicate entries for the same domain have been omitted | A log where duplicate entries for the same domain have been omitted | |||
("nonced duplicates" and/or "nonceless duplicates) could still be | ("nonced duplicates" and/or "nonceless duplicates") could still be | |||
acceptable for informed decisions. A log that has had "arbitrary" | acceptable for informed decisions. A log that has had "arbitrary" | |||
truncations is less acceptable but manufacturer transparency is | truncations is less acceptable, but manufacturer transparency is | |||
better than hidden truncations. | better than hidden truncations. | |||
A registrar that sees a version value greater than 1 indicates an | A registrar that sees a version value greater than 1 indicates an | |||
audit log format that has been enhanced with additional information. | audit-log format that has been enhanced with additional information. | |||
No information will be removed in future versions; should an | No information will be removed in future versions; should an | |||
incompatible change be desired in the future, then a new HTTP end | incompatible change be desired in the future, then a new HTTP | |||
point will be used. | endpoint will be used. | |||
This document specifies a simple log format as provided by the MASA | This document specifies a simple log format as provided by the MASA | |||
service to the registrar. This format could be improved by | service to the registrar. This format could be improved by | |||
distributed consensus technologies that integrate vouchers with | distributed consensus technologies that integrate vouchers with | |||
technologies such as block-chain or hash trees or optimized logging | 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 | approaches. Doing so is out of the scope of this document but is an | |||
anticipated improvement for future work. As such, the registrar | anticipated improvement for future work. As such, the registrar | |||
SHOULD anticipate new kinds of responses, and SHOULD provide operator | SHOULD anticipate new kinds of responses and SHOULD provide operator | |||
controls to indicate how to process unknown responses. | controls to indicate how to process unknown responses. | |||
5.8.2. Calculation of domainID | 5.8.2. Calculation of domainID | |||
The domainID is a binary value (a BIT STRING) that uniquely | The domainID is a binary value (a BIT STRING) that uniquely | |||
identifies a Registrar by the "pinned-domain-cert". | identifies a registrar by the pinned-domain-cert. | |||
If the "pinned-domain-cert" certificate includes the | If the pinned-domain-cert certificate includes the | |||
SubjectKeyIdentifier (Section 4.2.1.2 [RFC5280]), then it is to be | SubjectKeyIdentifier ([RFC5280], Section 4.2.1.2), then it is used as | |||
used as the domainID. If not, the SPKI Fingerprint as described in | the domainID. If not, the SPKI Fingerprint as described in | |||
[RFC7469] section 2.4 is to be used. This value needs to be | [RFC7469], Section 2.4 is used. This value needs to be calculated by | |||
calculated by both MASA (to populate the audit-log), and by the | both the MASA (to populate the audit-log) and the registrar (to | |||
Registrar (to recognize itself in the audit log). | recognize itself in the audit-log). | |||
[RFC5280] section 4.2.1.2 does not mandate that the | [RFC5280], Section 4.2.1.2 does not mandate that the | |||
SubjectKeyIdentifier extension be present in non-CA certificates. It | SubjectKeyIdentifier extension be present in non-CA certificates. It | |||
is RECOMMENDED that Registrar certificates (even if self-signed), | is RECOMMENDED that registrar certificates (even if self-signed) | |||
always include the SubjectKeyIdentifier to be used as a domainID. | always include the SubjectKeyIdentifier to be used as a domainID. | |||
The domainID is determined from the certificate chain associated with | The domainID is determined from the certificate chain associated with | |||
the pinned-domain-cert and is used to update the audit-log. | the pinned-domain-cert and is used to update the audit-log. | |||
5.8.3. Registrar audit log verification | 5.8.3. Registrar Audit-Log Verification | |||
Each time the Manufacturer Authorized Signing Authority (MASA) issues | Each time the MASA issues a voucher, it appends details of the | |||
a voucher, it appends details of the assignment to an internal audit | assignment to an internal audit-log for that device. The internal | |||
log for that device. The internal audit log is processed when | audit-log is processed when responding to requests for details as | |||
responding to requests for details as described in Section 5.8. The | described in Section 5.8. The contents of the audit-log can express | |||
contents of the audit log can express a variety of trust levels, and | a variety of trust levels, and this section explains what kind of | |||
this section explains what kind of trust a registrar can derive from | trust a registrar can derive from the entries. | |||
the entries. | ||||
While the audit log provides a list of vouchers that were issued by | While the audit-log provides a list of vouchers that were issued by | |||
the MASA, the vouchers are issued in response to voucher-requests, | the MASA, the vouchers are issued in response to voucher-requests, | |||
and it is the contents of the voucher-requests which determines how | and it is the content of the voucher-requests that determines how | |||
meaningful the audit log entries are. | meaningful the audit-log entries are. | |||
A registrar SHOULD use the log information to make an informed | A registrar SHOULD use the log information to make an informed | |||
decision regarding the continued bootstrapping of the pledge. The | decision regarding the continued bootstrapping of the pledge. The | |||
exact policy is out of scope of this document as it depends on the | exact policy is out of scope of this document as it depends on the | |||
security requirements within the registrar domain. Equipment that is | security requirements within the registrar domain. Equipment that is | |||
purchased pre-owned can be expected to have an extensive history. | purchased preowned can be expected to have an extensive history. The | |||
The following discussion is provided to help explain the value of | following discussion is provided to help explain the value of each | |||
each log element: | log element: | |||
date: The date field provides the registrar an opportunity to divide | date: The date field provides the registrar an opportunity to divide | |||
the log around known events such as the purchase date. Depending | the log around known events such as the purchase date. Depending | |||
on context known to the registrar or administrator events before/ | on the context known to the registrar or administrator, events | |||
after certain dates can have different levels of importance. For | before/after certain dates can have different levels of | |||
example for equipment that is expected to be new, and thus have no | importance. For example, for equipment that is expected to be | |||
history, it would be a surprise to find prior entries. | 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 | domainID: If the log includes an unexpected domainID, then the | |||
could have imprinted on an unexpected domain. The registrar can | pledge could have imprinted on an unexpected domain. The | |||
be expected to use a variety of techniques to define "unexpected" | registrar can be expected to use a variety of techniques to define | |||
ranging from white lists of prior domains to anomaly detection | "unexpected" ranging from acceptlists of prior domains to anomaly | |||
(e.g. "this device was previously bound to a different domain than | detection (e.g., "this device was previously bound to a different | |||
any other device deployed"). Log entries can also be compared | domain than any other device deployed"). Log entries can also be | |||
against local history logs in search of discrepancies (e.g. "this | compared against local history logs in search of discrepancies | |||
device was re-deployed some number of times internally but the | (e.g., "this device was re-deployed some number of times | |||
external audit log shows additional re-deployments our internal | internally, but the external audit-log shows additional re- | |||
logs are unaware of"). | deployments our internal logs are unaware of"). | |||
nonce: Nonceless entries mean the logged domainID could | nonce: Nonceless entries mean the logged domainID could | |||
theoretically trigger a reset of the pledge and then take over | theoretically trigger a reset of the pledge and then take over | |||
management by using the existing nonceless voucher. | management by using the existing nonceless voucher. | |||
assertion: The assertion leaf in the voucher and audit log indicates | assertion: The assertion leaf in the voucher and audit-log indicates | |||
why the MASA issued the voucher. A "verified" entry means that | why the MASA issued the voucher. A "verified" entry means that | |||
the MASA issued the associated voucher as a result of positive | the MASA issued the associated voucher as a result of positive | |||
verification of ownership. However, this entry does not indicate | verification of ownership. However, this entry does not indicate | |||
whether the pledge was actually deployed in the prior domain, or | whether or not the pledge was actually deployed in the prior | |||
not. A "logged" assertion informs the registrar that the prior | domain. A "logged" assertion informs the registrar that the prior | |||
vouchers were issued with minimal verification. A "proximity" | vouchers were issued with minimal verification. A "proximity" | |||
assertion assures the registrar that the pledge was truly | assertion assures the registrar that the pledge was truly | |||
communicating with the prior domain and thus provides assurance | communicating with the prior domain and thus provides assurance | |||
that the prior domain really has deployed the pledge. | that the prior domain really has deployed the pledge. | |||
A relatively simple policy is to white list known (internal or | A relatively simple policy is to acceptlist known (internal or | |||
external) domainIDs, and require all vouchers to have a nonce. An | external) domainIDs and require all vouchers to have a nonce. An | |||
alternative is to require that all nonceless vouchers be from a | alternative is to require that all nonceless vouchers be from a | |||
subset (e.g. only internal) of domainIDs. If the policy is violated | subset (e.g., only internal) of domainIDs. If the policy is | |||
a simple action is to revoke any locally issued credentials for the | violated, a simple action is to revoke any locally issued credentials | |||
pledge in question or to refuse to forward the voucher. The | 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 | 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 | 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 | the above policy) the history of the device, but it is RECOMMENDED | |||
that this only be configured if hardware assisted (i.e. TPM | that this only be configured if hardware-assisted (i.e., Transport | |||
anchored) Network Endpoint Assessment (NEA) [RFC5209] is supported. | Performance Metrics (TPM) anchored) Network Endpoint Assessment (NEA) | |||
[RFC5209] is supported. | ||||
5.9. EST Integration for PKI bootstrapping | 5.9. EST Integration for PKI Bootstrapping | |||
The pledge SHOULD follow the BRSKI operations with EST enrollment | The pledge SHOULD follow the BRSKI operations with EST enrollment | |||
operations including "CA Certificates Request", "CSR Attributes" and | operations including "CA Certificates Request", "CSR Attributes | |||
"Client Certificate Request" or "Server-Side Key Generation", etc. | Request", and "Client Certificate Request" or "Server-Side Key | |||
This is a relatively seamless integration since BRSKI API calls | Generation", etc. This is a relatively seamless integration since | |||
provide an automated alternative to the manual bootstrapping method | BRSKI API calls provide an automated alternative to the manual | |||
described in [RFC7030]. As noted above, use of HTTP persistent | bootstrapping method described in [RFC7030]. As noted above, use of | |||
connections simplifies the pledge state machine. | HTTP-persistent connections simplifies the pledge state machine. | |||
Although EST allows clients to obtain multiple certificates by | Although EST allows clients to obtain multiple certificates by | |||
sending multiple Certificate Signing Requests (CSR) requests, BRSKI | sending multiple Certificate Signing Requests (CSRs), BRSKI does not | |||
does not support this mechanism directly. This is because BRSKI | support this mechanism directly. This is because BRSKI pledges MUST | |||
pledges MUST use the CSR Attributes request ([RFC7030] section 4.5). | use the CSR Attributes request ([RFC7030], Section 4.5). The | |||
The registrar MUST validate the CSR against the expected attributes. | registrar MUST validate the CSR against the expected attributes. | |||
This implies that client requests will "look the same" and therefore | This implies that client requests will "look the same" and therefore | |||
result in a single logical certificate being issued even if the | result in a single logical certificate being issued even if the | |||
client were to make multiple requests. Registrars MAY contain more | client were to make multiple requests. Registrars MAY contain more | |||
complex logic but doing so is out-of-scope of this specification. | complex logic, but doing so is out of scope of this specification. | |||
BRSKI does not signal any enhancement or restriction to this | BRSKI does not signal any enhancement or restriction to this | |||
capability. | capability. | |||
5.9.1. EST Distribution of CA Certificates | 5.9.1. EST Distribution of CA Certificates | |||
The pledge SHOULD request the full EST Distribution of CA | The pledge SHOULD request the full EST Distribution of CA certificate | |||
Certificates message. See RFC7030, section 4.1. | messages; see [RFC7030], Section 4.1. | |||
This ensures that the pledge has the complete set of current CA | 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 | certificates beyond the pinned-domain-cert (see Section 5.6.2 for a | |||
discussion of the limitations inherent in having a single certificate | discussion of the limitations inherent in having a single certificate | |||
instead of a full CA Certificates response.) Although these | instead of a full CA certificate response). Although these | |||
limitations are acceptable during initial bootstrapping, they are not | limitations are acceptable during initial bootstrapping, they are not | |||
appropriate for ongoing PKIX end entity certificate validation. | appropriate for ongoing PKIX end-entity certificate validation. | |||
5.9.2. EST CSR Attributes | 5.9.2. EST CSR Attributes | |||
Automated bootstrapping occurs without local administrative | Automated bootstrapping occurs without local administrative | |||
configuration of the pledge. In some deployments it is plausible | configuration of the pledge. In some deployments, it is plausible | |||
that the pledge generates a certificate request containing only | that the pledge generates a certificate request containing only | |||
identity information known to the pledge (essentially the X.509 | identity information known to the pledge (essentially the X.509 | |||
IDevID information) and ultimately receives a certificate containing | IDevID information) and ultimately receives a certificate containing | |||
domain specific identity information. Conceptually the CA has | domain-specific identity information. Conceptually, the CA has | |||
complete control over all fields issued in the end entity | complete control over all fields issued in the end-entity | |||
certificate. Realistically this is operationally difficult with the | certificate. Realistically, this is operationally difficult with the | |||
current status of PKI certificate authority deployments, where the | current status of PKI CA deployments, where the CSR is submitted to | |||
CSR is submitted to the CA via a number of non-standard protocols. | the CA via a number of non-standard protocols. Even with all | |||
Even with all standardized protocols used, it could operationally be | standardized protocols used, it could operationally be problematic to | |||
problematic to expect that service specific certificate fields can be | expect that service-specific certificate fields can be created by a | |||
created by a CA that is likely operated by a group that has no | CA that is likely operated by a group that has no insight into | |||
insight into different network services/protocols used. For example, | different network services/protocols used. For example, the CA could | |||
the CA could even be outsourced. | even be outsourced. | |||
To alleviate these operational difficulties, the pledge MUST request | To alleviate these operational difficulties, the pledge MUST request | |||
the EST "CSR Attributes" from the EST server and the EST server needs | the EST "CSR Attributes" from the EST server, and the EST server | |||
to be able to reply with the attributes necessary for use of the | needs to be able to reply with the attributes necessary for use of | |||
certificate in its intended protocols/services. This approach allows | the certificate in its intended protocols/services. This approach | |||
for minimal CA integrations and instead the local infrastructure (EST | allows for minimal CA integrations, and instead, the local | |||
server) informs the pledge of the proper fields to include in the | infrastructure (EST server) informs the pledge of the proper fields | |||
generated CSR (such as rfc822Name). This approach is beneficial to | to include in the generated CSR (such as rfc822Name). This approach | |||
automated bootstrapping in the widest number of environments. | is beneficial to automated bootstrapping in the widest number of | |||
environments. | ||||
In networks using the BRSKI enrolled certificate to authenticate the | In networks using the BRSKI enrolled certificate to authenticate the | |||
ACP (Autonomic Control Plane), the EST CSR attributes MUST include | ACP, the EST CSR Attributes MUST include the ACP domain information | |||
the ACP Domain Information Fields defined in | fields defined in [RFC8994], Section 6.2.2. | |||
[I-D.ietf-anima-autonomic-control-plane] section 6.1.1. | ||||
The registrar MUST also confirm that the resulting CSR is formatted | The registrar MUST also confirm that the resulting CSR is formatted | |||
as indicated before forwarding the request to a CA. If the registrar | as indicated before forwarding the request to a CA. If the registrar | |||
is communicating with the CA using a protocol such as full CMC, which | is communicating with the CA using a protocol such as full | |||
provides mechanisms to override the CSR attributes, then these | Certificate Management over CMS (CMC), which provides mechanisms to | |||
mechanisms MAY be used even if the client ignores CSR Attribute | override the CSR Attributes, then these mechanisms MAY be used even | |||
guidance. | if the client ignores the guidance for the CSR Attributes. | |||
5.9.3. EST Client Certificate Request | 5.9.3. EST Client Certificate Request | |||
The pledge MUST request a new client certificate. See RFC7030, | The pledge MUST request a new Client Certificate; see [RFC7030], | |||
section 4.2. | Section 4.2. | |||
5.9.4. Enrollment Status Telemetry | 5.9.4. Enrollment Status Telemetry | |||
For automated bootstrapping of devices, the administrative elements | For automated bootstrapping of devices, the administrative elements | |||
providing bootstrapping also provide indications to the system | that provide bootstrapping also provide indications to the system | |||
administrators concerning device lifecycle status. This might | administrators concerning device life-cycle status. This might | |||
include information concerning attempted bootstrapping messages seen | include information concerning attempted bootstrapping messages seen | |||
by the client. The MASA provides logs and status of credential | by the client. The MASA provides logs and the status of credential | |||
enrollment. [RFC7030] assumes an end user and therefore does not | enrollment. Since an end user is assumed per [RFC7030], a final | |||
include a final success indication back to the server. This is | success indication back to the server is not included. This is | |||
insufficient for automated use cases. | insufficient for automated use cases. | |||
The client MUST send an indicator to the Registrar about its | The client MUST send an indicator to the registrar about its | |||
enrollment status. It does this by using an HTTP POST of a JSON | enrollment status. It does this by using an HTTP POST of a JSON | |||
dictionary with the of attributes described below to the new EST | dictionary with the attributes described below to the new EST | |||
endpoint at "/.well-known/brski/enrollstatus". (XXX ?) | endpoint at "/.well-known/brski/enrollstatus". | |||
When indicating a successful enrollment the client SHOULD first re- | When indicating a successful enrollment, the client SHOULD first re- | |||
establish the EST TLS session using the newly obtained credentials. | establish the EST TLS session using the newly obtained credentials. | |||
TLS 1.2 supports doing this in-band, but TLS 1.3 does not. The | 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 | client SHOULD therefore always close the existing TLS connection and | |||
start a new one. | start a new one, using the same Join Proxy. | |||
In the case of a failed enrollment, the client MUST send the | In the case of a failed enrollment, the client MUST send the | |||
telemetry information over the same TLS connection that was used for | telemetry information over the same TLS connection that was used for | |||
the enrollment attempt, with a Reason string indicating why the most | the enrollment attempt, with a Reason string indicating why the most | |||
recent enrollment failed. (For failed attempts, the TLS connection | recent enrollment failed. (For failed attempts, the TLS connection | |||
is the most reliable way to correlate server-side information with | is the most reliable way to correlate server-side information with | |||
what the client provides.) | what the client provides.) | |||
The version and status fields MUST be present. The Reason field | The version and status fields MUST be present. The Reason field | |||
SHOULD be present whenever the status field is false. In the case of | SHOULD be present whenever the status field is false. In the case of | |||
a SUCCESS the Reason string MAY be omitted. | a SUCCESS, the Reason string MAY be omitted. | |||
The reason-context attribute is an arbitrary JSON object (literal | The reason-context attribute is an arbitrary JSON object (literal | |||
value or hash of values) which provides additional information | value or hash of values) that provides additional information | |||
specific to the failure to unroll from this pledge. The contents of | specific to the failure to unroll from this pledge. The contents of | |||
this field are not subject to standardization. This is represented | this field are not subject to standardization. This is represented | |||
by the group-socket "$$arbitrary-map" in the CDDL. | by the group-socket "$$arbitrary-map" in the CDDL. | |||
In the case of a SUCCESS the Reason string is omitted. | ||||
<CODE BEGINS> file "enrollstatus.cddl" | <CODE BEGINS> file "enrollstatus.cddl" | |||
enrollstatus-post = { | enrollstatus-post = { | |||
"version": uint, | "version": uint, | |||
"status": bool, | "status": bool, | |||
? "reason": text, | ? "reason": text, | |||
? "reason-context" : { $$arbitrary-map } | ? "reason-context" : { $$arbitrary-map } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 19: CDDL for enrollment status POST | Figure 19: CDDL for Enrollment Status POST | |||
An example status report can be seen below. It is sent with with the | An example status report can be seen below. It is sent with the | |||
media type: application/json | media type: application/json | |||
{ | { | |||
"version": 1, | "version": 1, | |||
"status":true, | "status":true, | |||
"reason":"Informative human readable message", | "reason":"Informative human readable message", | |||
"reason-context": { "additional" : "JSON" } | "reason-context": { "additional" : "JSON" } | |||
} | } | |||
Figure 20: Example of enrollment status POST | Figure 20: Example of Enrollment Status POST | |||
The server SHOULD respond with an HTTP 200 but MAY simply fail with | The server SHOULD respond with an HTTP 200 but MAY simply fail with | |||
an HTTP 404 error. | an HTTP 404 error. | |||
Within the server logs the server MUST capture if this message was | Within the server logs, the server MUST capture if this message was | |||
received over an TLS session with a matching client certificate. | received over a TLS session with a matching Client Certificate. | |||
5.9.5. Multiple certificates | 5.9.5. Multiple Certificates | |||
Pledges that require multiple certificates could establish direct EST | Pledges that require multiple certificates could establish direct EST | |||
connections to the registrar. | connections to the registrar. | |||
5.9.6. EST over CoAP | 5.9.6. EST over CoAP | |||
This document describes extensions to EST for the purposes of | This document describes extensions to EST for the purpose of | |||
bootstrapping of remote key infrastructures. Bootstrapping is | bootstrapping remote key infrastructures. Bootstrapping is relevant | |||
relevant for CoAP enrollment discussions as well. The definition of | for CoAP enrollment discussions as well. The definition of EST and | |||
EST and BRSKI over CoAP is not discussed within this document beyond | BRSKI over CoAP is not discussed within this document beyond ensuring | |||
ensuring proxy support for CoAP operations. Instead it is | proxy support for CoAP operations. Instead, it is anticipated that a | |||
anticipated that a definition of CoAP mappings will occur in | definition of CoAP mappings will occur in subsequent documents such | |||
subsequent documents such as [I-D.ietf-ace-coap-est] and that CoAP | as [ACE-COAP-EST] and that CoAP mappings for BRSKI will be discussed | |||
mappings for BRSKI will be discussed either there or in future work. | either there or in future work. | |||
6. Clarification of transfer-encoding | 6. Clarification of Transfer-Encoding | |||
[RFC7030] defines its endpoints to include a "Content-Transfer- | [RFC7030] defines endpoints to include a "Content-Transfer-Encoding" | |||
Encoding" heading, and the payloads to be [RFC4648] Base64 encoded | heading and payloads to be base64-encoded DER [RFC4648]. | |||
DER. | ||||
When used within BRSKI, the original RFC7030 EST endpoints remain | When used within BRSKI, the original EST endpoints remain base64 | |||
Base64 encoded, but the new BRSKI end points which send and receive | encoded [RFC7030] (as clarified by [RFC8951]), but the new BRSKI | |||
binary artifacts (specifically, "/.well-known/brski/requestvoucher") | endpoints that send and receive binary artifacts (specifically, | |||
are binary. That is, no encoding is used. | "/.well-known/brski/requestvoucher") are binary. That is, no | |||
encoding is used. | ||||
In the BRSKI context, the EST "Content-Transfer-Encoding" header | In the BRSKI context, the EST "Content-Transfer-Encoding" header | |||
field if present, SHOULD be ignored. This header field does not need | field SHOULD be ignored if present. This header field does not need | |||
to be included. | to be included. | |||
7. Reduced security operational modes | 7. Reduced Security Operational Modes | |||
A common requirement of bootstrapping is to support less secure | A common requirement of bootstrapping is to support less secure | |||
operational modes for support specific use cases. This section | operational modes for support-specific use cases. This section | |||
suggests a range of mechanisms that would alter the security | suggests a range of mechanisms that would alter the security | |||
assurance of BRSKI to accommodate alternative deployment | assurance of BRSKI to accommodate alternative deployment | |||
architectures and mitigate lifecycle management issues identified in | architectures and mitigate life-cycle management issues identified in | |||
Section 10. They are presented here as informative (non-normative) | Section 10. They are presented here as informative (non-normative) | |||
design guidance for future standardization activities. Section 9 | design guidance for future standardization activities. Section 9 | |||
provides standardization applicability statements for the ANIMA ACP. | provides standardization applicability statements for the ANIMA ACP. | |||
Other users would be expected that subsets of these mechanisms could | Other users would expect that subsets of these mechanisms could be | |||
be profiled with an accompanying applicability statements similar to | profiled with accompanying applicability statements similar to the | |||
the one described in Section 9. | one described in Section 9. | |||
This section is considered non-normative in the generality of the | This section is considered non-normative in the generality of the | |||
protocol. Use of the suggested mechanisms here MUST be detailed in | protocol. Use of the suggested mechanisms here MUST be detailed in | |||
specific profiles of BRSKI, such as in Section 9. | specific profiles of BRSKI, such as in Section 9. | |||
7.1. Trust Model | 7.1. Trust Model | |||
This section explains the trust relationships detailed in | This section explains the trust relationships detailed in | |||
Section 2.4: | Section 2.4: | |||
+--------+ +---------+ +------------+ +------------+ | +--------+ +---------+ +------------+ +------------+ | |||
| Pledge | | Join | | Domain | |Manufacturer| | | Pledge | | Join | | Domain | |Manufacturer| | |||
| | | Proxy | | Registrar | | Service | | | | | Proxy | | Registrar | | Service | | |||
| | | | | | | (Internet) | | | | | | | | | (Internet) | | |||
+--------+ +---------+ +------------+ +------------+ | +--------+ +---------+ +------------+ +------------+ | |||
Figure 10 | Figure 21: Elements of BRSKI Trust Model | |||
Pledge: The pledge could be compromised and providing an attack | Pledge: The pledge could be compromised and provide an attack vector | |||
vector for malware. The entity is trusted to only imprint using | for malware. The entity is trusted to only imprint using secure | |||
secure methods described in this document. Additional endpoint | methods described in this document. Additional endpoint | |||
assessment techniques are RECOMMENDED but are out-of-scope of this | assessment techniques are RECOMMENDED but are out of scope of this | |||
document. | document. | |||
Join Proxy: Provides proxy functionalities but is not involved in | Join Proxy: Provides proxy functionalities but is not involved in | |||
security considerations. | security considerations. | |||
Registrar: When interacting with a MASA a registrar makes all | Registrar: When interacting with a MASA, a registrar makes all | |||
decisions. For Ownership Audit Vouchers (see [RFC8366]) the | decisions. For Ownership Audit Vouchers (see [RFC8366]), the | |||
registrar is provided an opportunity to accept MASA decisions. | registrar is provided an opportunity to accept MASA decisions. | |||
Vendor Service, MASA: This form of manufacturer service is trusted | Vendor Service, MASA: This form of manufacturer service is trusted | |||
to accurately log all claim attempts and to provide authoritative | to accurately log all claim attempts and to provide authoritative | |||
log information to registrars. The MASA does not know which | log information to registrars. The MASA does not know which | |||
devices are associated with which domains. These claims could be | devices are associated with which domains. These claims could be | |||
strengthened by using cryptographic log techniques to provide | strengthened by using cryptographic log techniques to provide | |||
append only, cryptographic assured, publicly auditable logs. | append only, cryptographic assured, publicly auditable logs. | |||
Vendor Service, Ownership Validation: This form of manufacturer | Vendor Service, Ownership Validation: This form of manufacturer | |||
service is trusted to accurately know which device is owned by | service is trusted to accurately know which device is owned by | |||
which domain. | which domain. | |||
7.2. Pledge security reductions | 7.2. Pledge Security Reductions | |||
The following is a list of alternative behaviours that the pledge can | The following is a list of alternative behaviors that the pledge can | |||
be programmed to implement. These behaviours are not mutually | be programmed to implement. These behaviors are not mutually | |||
exclusive, nor are they dependent upon each other. Some of these | exclusive, nor are they dependent upon each other. Some of these | |||
methods enable offline and emergency (touch based) deployment use | methods enable offline and emergency (touch-based) deployment use | |||
cases. Normative language is used as these behaviours are referenced | cases. Normative language is used as these behaviors are referenced | |||
in later sections in a normative fashion. | in later sections in a normative fashion. | |||
1. The pledge MUST accept nonceless vouchers. This allows for a use | 1. The pledge MUST accept nonceless vouchers. This allows for a use | |||
case where the registrar can not connect to the MASA at the | case where the registrar cannot connect to the MASA at the | |||
deployment time. Logging and validity periods address the | deployment time. Logging and validity periods address the | |||
security considerations of supporting these use cases. | security considerations of supporting these use cases. | |||
2. Many devices already support "trust on first use" for physical | 2. Many devices already support "trust on first use" for physical | |||
interfaces such as console ports. This document does not change | interfaces such as console ports. This document does not change | |||
that reality. Devices supporting this protocol MUST NOT support | that reality. Devices supporting this protocol MUST NOT support | |||
"trust on first use" on network interfaces. This is because | "trust on first use" on network interfaces. This is because | |||
"trust on first use" over network interfaces would undermine the | "trust on first use" over network interfaces would undermine the | |||
logging based security protections provided by this | logging based security protections provided by this | |||
specification. | specification. | |||
3. The pledge MAY have an operational mode where it skips voucher | 3. The pledge MAY have an operational mode where it skips voucher | |||
validation one time. For example if a physical button is | validation one time, for example, if a physical button is | |||
depressed during the bootstrapping operation. This can be useful | depressed during the bootstrapping operation. This can be useful | |||
if the manufacturer service is unavailable. This behavior SHOULD | if the manufacturer service is unavailable. This behavior SHOULD | |||
be available via local configuration or physical presence methods | be available via local configuration or physical presence methods | |||
(such as use of a serial/craft console) to ensure new entities | (such as use of a serial/craft console) to ensure new entities | |||
can always be deployed even when autonomic methods fail. This | can always be deployed even when autonomic methods fail. This | |||
allows for unsecured imprint. | allows for unsecured imprint. | |||
4. A craft/serial console could include a command such as "est- | 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 | enroll [2001:db8:0:1]:443" that begins the EST process from the | |||
point after the voucher is validated. This process SHOULD | point after the voucher is validated. This process SHOULD | |||
include server certificate verification using an on-screen | include server certificate verification using an on-screen | |||
fingerprint. | fingerprint. | |||
It is RECOMMENDED that "trust on first use" or any method of skipping | It is RECOMMENDED that "trust on first use" or any method of skipping | |||
voucher validation (including use of craft serial console) only be | voucher validation (including use of a craft serial console) only be | |||
available if hardware assisted Network Endpoint Assessment (NEA: | available if hardware-assisted Network Endpoint Assessment (NEA) | |||
[RFC5209]) is supported. This recommendation ensures that domain | [RFC5209] is supported. This recommendation ensures that domain | |||
network monitoring can detect inappropriate use of offline or | network monitoring can detect inappropriate use of offline or | |||
emergency deployment procedures when voucher-based bootstrapping is | emergency deployment procedures when voucher-based bootstrapping is | |||
not used. | not used. | |||
7.3. Registrar security reductions | 7.3. Registrar Security Reductions | |||
A registrar can choose to accept devices using less secure methods. | A registrar can choose to accept devices using less secure methods. | |||
They MUST NOT be the default behavior. These methods may be | They MUST NOT be the default behavior. These methods may be | |||
acceptable in situations where threat models indicate that low | acceptable in situations where threat models indicate that low | |||
security is adequate. This includes situations where security | security is adequate. This includes situations where security | |||
decisions are being made by the local administrator: | decisions are being made by the local administrator: | |||
1. A registrar MAY choose to accept all devices, or all devices of a | 1. A registrar MAY choose to accept all devices, or all devices of a | |||
particular type, at the administrator's discretion. This could | particular type. The administrator could make this choice in | |||
occur when informing all registrars of unique identifiers of new | cases where it is operationally difficult to configure the | |||
entities might be operationally difficult. | registrar with the unique identifier of each new device expected. | |||
2. A registrar MAY choose to accept devices that claim a unique | 2. A registrar MAY choose to accept devices that claim a unique | |||
identity without the benefit of authenticating that claimed | identity without the benefit of authenticating that claimed | |||
identity. This could occur when the pledge does not include an | identity. This could occur when the pledge does not include an | |||
X.509 IDevID factory installed credential. New Entities without | X.509 IDevID factory-installed credential. New entities without | |||
an X.509 IDevID credential MAY form the Section 5.2 request using | an X.509 IDevID credential MAY form the request per Section 5.2 | |||
the Section 5.5 format to ensure the pledge's serial number | using the format per Section 5.5 to ensure the pledge's serial | |||
information is provided to the registrar (this includes the | number information is provided to the registrar (this includes | |||
IDevID AuthorityKeyIdentifier value, which would be statically | the IDevID AuthorityKeyIdentifier value, which would be | |||
configured on the pledge.) The pledge MAY refuse to provide a | statically configured on the pledge). The pledge MAY refuse to | |||
TLS client certificate (as one is not available.) The pledge | provide a TLS Client Certificate (as one is not available). The | |||
SHOULD support HTTP-based or certificate-less TLS authentication | pledge SHOULD support HTTP-based or certificate-less TLS | |||
as described in EST RFC7030 section 3.3.2. A registrar MUST NOT | authentication as described in EST [RFC7030], Section 3.3.2. A | |||
accept unauthenticated New Entities unless it has been configured | registrar MUST NOT accept unauthenticated new entities unless it | |||
to do so by an administrator that has verified that only expected | has been configured to do so by an administrator that has | |||
new entities can communicate with a registrar (presumably via a | verified that only expected new entities can communicate with a | |||
physically secured perimeter.) | registrar (presumably via a physically secured perimeter.) | |||
3. A registrar MAY submit a nonceless voucher-requests to the MASA | 3. A registrar MAY submit a nonceless voucher-request to the MASA | |||
service (by not including a nonce in the voucher-request.) The | service (by not including a nonce in the voucher-request). The | |||
resulting vouchers can then be stored by the registrar until they | resulting vouchers can then be stored by the registrar until they | |||
are needed during bootstrapping operations. This is for use | are needed during bootstrapping operations. This is for use | |||
cases where the target network is protected by an air gap and | cases where the target network is protected by an air gap and | |||
therefore cannot contact the MASA service during pledge | therefore cannot contact the MASA service during pledge | |||
deployment. | deployment. | |||
4. A registrar MAY ignore unrecognized nonceless log entries. This | 4. A registrar MAY ignore unrecognized nonceless log entries. This | |||
could occur when used equipment is purchased with a valid history | could occur when used equipment is purchased with a valid history | |||
being deployed in air gap networks that required offline | of being deployed in air gap networks that required offline | |||
vouchers. | vouchers. | |||
5. A registrar MAY accept voucher formats of future types that can | 5. A registrar MAY accept voucher formats of future types that | |||
not be parsed by the Registrar. This reduces the Registrar's | cannot be parsed by the registrar. This reduces the registrar's | |||
visibility into the exact voucher contents but does not change | visibility into the exact voucher contents but does not change | |||
the protocol operations. | the protocol operations. | |||
7.4. MASA security reductions | 7.4. MASA Security Reductions | |||
Lower security modes chosen by the MASA service affect all device | Lower security modes chosen by the MASA service affect all device | |||
deployments unless the lower-security behavior is tied to specific | deployments unless the lower security behavior is tied to specific | |||
device identities. The modes described below can be applied to | device identities. The modes described below can be applied to | |||
specific devices via knowledge of what devices were sold. They can | specific devices via knowledge of what devices were sold. They can | |||
also be bound to specific customers (independent of the device | also be bound to specific customers (independent of the device | |||
identity) by authenticating the customer's Registrar. | identity) by authenticating the customer's registrar. | |||
7.4.1. Issuing Nonceless vouchers | 7.4.1. Issuing Nonceless Vouchers | |||
A MASA has the option of not including a nonce in the voucher, and/or | 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 | not requiring one to be present in the voucher-request. This results | |||
in distribution of a voucher that may never expire and in effect | in distribution of a voucher that may never expire and, in effect, | |||
makes the specified Domain an always trusted entity to the pledge | makes the specified domain an always trusted entity to the pledge | |||
during any subsequent bootstrapping attempts. That a nonceless | during any subsequent bootstrapping attempts. The log information | |||
voucher was issued is captured in the log information so that the | captures when a nonceless voucher is issued so that the registrar can | |||
registrar can make appropriate security decisions when a pledge joins | make appropriate security decisions when a pledge joins the domain. | |||
the Domain. Nonceless vouchers are useful to support use cases where | Nonceless vouchers are useful to support use cases where registrars | |||
registrars might not be online during actual device deployment. | might not be online during actual device deployment. | |||
While a nonceless voucher may include an expiry date, a typical use | 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 | 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 | can be trusted to have an accurate clock (the MASA will know), then a | |||
nonceless voucher CAN be issued with a limited lifetime. | nonceless voucher CAN be issued with a limited lifetime. | |||
A more typical case for a nonceless voucher is for use with offline | A more typical case for a nonceless voucher is for use with offline | |||
onboarding scenarios where it is not possible to pass a fresh | onboarding scenarios where it is not possible to pass a fresh | |||
voucher-request to the MASA. The use of a long-lived voucher also | voucher-request to the MASA. The use of a long-lived voucher also | |||
eliminates concern about the availability of the MASA many years in | eliminates concern about the availability of the MASA many years in | |||
the future. Thus many nonceless vouchers will have no expiry dates. | the future. Thus, many nonceless vouchers will have no expiry dates. | |||
Thus, the long lived nonceless voucher does not require the proof | Thus, the long-lived nonceless voucher does not require proof that | |||
that the device is online. Issuing such a thing is only accepted | the device is online. Issuing such a thing is only accepted when the | |||
when the registrar is authenticated by the MASA and the MASA is | registrar is authenticated by the MASA and the MASA is authorized to | |||
authorized to provide this functionality to this customer. The MASA | provide this functionality to this customer. The MASA is RECOMMENDED | |||
is RECOMMENDED to use this functionality only in concert with an | to use this functionality only in concert with an enhanced level of | |||
enhanced level of ownership tracking, the details of which are out of | ownership tracking, the details of which are out of scope for this | |||
scope for this document. | document. | |||
If the pledge device is known to have a real-time-clock that is set | 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. | from the factory, use of a voucher validity period is RECOMMENDED. | |||
7.4.2. Trusting Owners on First Use | 7.4.2. Trusting Owners on First Use | |||
A MASA has the option of not verifying ownership before responding | A MASA has the option of not verifying ownership before responding | |||
with a voucher. This is expected to be a common operational model | with a voucher. This is expected to be a common operational model | |||
because doing so relieves the manufacturer providing MASA services | because doing so relieves the manufacturer providing MASA services | |||
from having to track ownership during shipping and supply chain and | from having to track ownership during shipping and throughout the | |||
allows for a very low overhead MASA service. A registrar uses the | supply chain, and it allows for a very low overhead MASA service. A | |||
audit log information as a defense in depth strategy to ensure that | registrar uses the audit-log information as an in-depth defense | |||
this does not occur unexpectedly (for example when purchasing new | strategy to ensure that this does not occur unexpectedly (for | |||
equipment the registrar would throw an error if any audit log | example, when purchasing new equipment, the registrar would throw an | |||
information is reported.) The MASA SHOULD verify the 'prior-signed- | error if any audit-log information is reported). The MASA SHOULD | |||
voucher-request' information for pledges that support that | verify the prior-signed-voucher-request information for pledges that | |||
functionality. This provides a proof-of-proximity check that reduces | support that functionality. This provides a proof-of-proximity check | |||
the need for ownership verification. The proof-of-proximity comes | that reduces the need for ownership verification. The proof-of- | |||
from the assumption that the pledge and Join Proxy are on the same | proximity comes from the assumption that the pledge and Join Proxy | |||
link-local connection. | are on the same link-local connection. | |||
A MASA that practices Trust-on-First-Use (TOFU) for Registrar | A MASA that practices TOFU for registrar identity may wish to | |||
identity may wish to annotate the origin of the connection by IP | annotate the origin of the connection by IP address or netblock and | |||
address or netblock, and restrict future use of that identity from | restrict future use of that identity from other locations. A MASA | |||
other locations. A MASA that does this SHOULD take care to not | that does this SHOULD take care to not create nuisance situations for | |||
create nuisance situations for itself when a customer has multiple | itself when a customer has multiple registrars or uses outgoing IPv4- | |||
registrars, or uses outgoing IPv4 NAT44 connections that change | to-IPv4 NAT (NAT44) connections that change frequently. | |||
frequently. | ||||
7.4.3. Updating or extending voucher trust anchors | 7.4.3. Updating or Extending Voucher Trust Anchors | |||
This section deals with the problem of a MASA that is no longer | This section deals with two problems: A MASA that is no longer | |||
available due to a failed business, or the situation where a MASA is | available due to a failed business and a MASA that is uncooperative | |||
uncooperative to a secondary sale. | to a secondary sale. | |||
A manufacturer could offer a management mechanism that allows the | A manufacturer could offer a management mechanism that allows the | |||
list of voucher verification trust anchors to be extended. | list of voucher verification trust anchors to be extended. | |||
[I-D.ietf-netconf-keystore] is one such interface that could be | [YANG-KEYSTORE] describes one such interface that could be | |||
implemented using YANG. Pretty much any configuration mechanism used | implemented using YANG. Pretty much any configuration mechanism used | |||
today could be extended to provide the needed additional update. A | today could be extended to provide the needed additional update. A | |||
manufacturer could even decide to install the domain CA trust anchors | manufacturer could even decide to install the domain CA trust anchors | |||
received during the EST "cacerts" step as voucher verification | received during the EST "cacerts" step as voucher verification | |||
anchors. Some additional signals will be needed to clearly identify | anchors. Some additional signals will be needed to clearly identify | |||
which keys have voucher validation authority from among those signed | which keys have voucher validation authority from among those signed | |||
by the domain CA. This is future work. | by the domain CA. This is future work. | |||
With the above change to the list of anchors, vouchers can be issued | 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), | 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 | or some other trusted third party who is mediating the sale. If it | |||
was a third party, then the seller would need to have taken steps to | is a third party, the seller would need to take steps to introduce | |||
introduce the third party configuration to the device prior | the third-party configuration to the device prior to disconnection. | |||
disconnection. The third party (e.g. a wholesaler of used equipment) | The third party (e.g., a wholesaler of used equipment) could, | |||
could however use a mechanism described in Section 7.2 to take | however, use a mechanism described in Section 7.2 to take control of | |||
control of the device after receiving it physically. This would | the device after receiving it physically. This would permit the | |||
permit the third party to act as the MASA for future onboarding | third party to act as the MASA for future onboarding actions. As the | |||
actions. As the IDevID certificate probably can not be replaced, the | IDevID certificate probably cannot be replaced, the new owner's | |||
new owner's Registrar would have to support an override of the MASA | registrar would have to support an override of the MASA URL. | |||
URL. | ||||
To be useful for resale or other transfers of ownership one of two | 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 | situations will need to occur. The simplest is that the device is | |||
not put through any kind of factory default/reset before going | not put through any kind of factory default/reset before going | |||
through onboarding again. Some other secure, physical signal would | through onboarding again. Some other secure, physical signal would | |||
be needed to initiate it. This is most suitable for redeploying a | be needed to initiate it. This is most suitable for redeploying a | |||
device within the same Enterprise. This would entail having previous | device within the same enterprise. This would entail having previous | |||
configuration in the system until entirely replaced by the new owner, | configuration in the system until entirely replaced by the new owner, | |||
and represents some level of risk. | and it represents some level of risk. | |||
The second mechanism is that there would need to be two levels of | For the second scenario, there would need to be two levels of factory | |||
factory reset. One would take the system back entirely to | reset. One would take the system back entirely to manufacturer | |||
manufacturer state, including removing any added trust anchors, and | state, including removing any added trust anchors, and the other | |||
the second (more commonly used) one would just restore the | (more commonly used) one would just restore the configuration back to | |||
configuration back to a known default without erasing trust anchors. | a known default without erasing trust anchors. This weaker factory | |||
This weaker factory reset might leave valuable credentials on the | reset might leave valuable credentials on the device, and this may be | |||
device and this may be unacceptable to some owners. | unacceptable to some owners. | |||
As a third option, the manufacturer's trust anchors could be entirely | As a third option, the manufacturer's trust anchors could be entirely | |||
overwritten with local trust anchors. A factory default would never | overwritten with local trust anchors. A factory default would never | |||
restore those anchors. This option comes with a lot of power, but | 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 | also a lot of responsibility: if access to the private part of the | |||
new anchors are lost the manufacturer may be unable to help. | new anchors are lost, the manufacturer may be unable to help. | |||
8. IANA Considerations | 8. IANA Considerations | |||
This document requires the following IANA actions: | Per this document, IANA has completed the following actions. | |||
8.1. The IETF XML Registry | 8.1. The IETF XML Registry | |||
This document registers a URI in the "IETF XML Registry" [RFC3688]. | This document registers a URI in the "IETF XML Registry" [RFC3688]. | |||
IANA is asked to register the following: | IANA has registered the following: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-voucher-request | URI: urn:ietf:params:xml:ns:yang:ietf-voucher-request | |||
Registrant Contact: The ANIMA WG of the IETF. | Registrant Contact: The ANIMA WG of the IETF. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
8.2. YANG Module Names Registry | 8.2. YANG Module Names Registry | |||
This document registers a YANG module in the "YANG Module Names" | This document registers a YANG module in the "YANG Module Names" | |||
registry [RFC6020]. IANA is asked to register the following: | registry [RFC6020]. IANA has registered the following: | |||
name: ietf-voucher-request | Name: ietf-voucher-request | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-voucher-request | Namespace: urn:ietf:params:xml:ns:yang:ietf-voucher-request | |||
prefix: vch | Prefix: vch | |||
reference: THIS DOCUMENT | Reference: RFC 8995 | |||
8.3. BRSKI well-known considerations | 8.3. BRSKI Well-Known Considerations | |||
8.3.1. BRSKI .well-known registration | 8.3.1. BRSKI .well-known Registration | |||
To the Well-Known URIs Registry, at: | To the "Well-Known URIs" registry at | |||
"https://www.iana.org/assignments/well-known-uris/well-known- | https://www.iana.org/assignments/well-known-uris/, this document | |||
uris.xhtml", this document registers the well-known name "brski" with | registers the well-known name "brski" with the following filled-in | |||
the following filled-in template from [RFC5785]: | template from [RFC8615]: | |||
URI suffix: brski | URI Suffix: brski | |||
Change Controller: IETF | Change Controller: IETF | |||
IANA is asked to change the registration of "est" to now only include | IANA has changed the registration of "est" to now only include | |||
RFC7030 and no longer this document. Earlier versions of this | [RFC7030] and no longer this document. Earlier draft versions of | |||
document used "/.well-known/est" rather than "/.well-known/brski". | this document used "/.well-known/est" rather than "/.well-known/ | |||
brski". | ||||
8.3.2. BRSKI .well-known registry | 8.3.2. BRSKI .well-known Registry | |||
IANA is requested to create a new Registry entitled: "BRSKI well- | IANA has created a new registry entitled: "BRSKI Well-Known URIs". | |||
known URIs". The registry shall have at least three columns: URI, | The registry has three columns: URI, Description, and Reference. New | |||
description, and reference. New items can be added using the | items can be added using the Specification Required [RFC8126] | |||
Specification Required process. The initial contents of this | process. The initial contents of this registry are: | |||
registry shall be: | ||||
URI document description | +=================+==========================+===========+ | |||
requestvoucher [THISRFC] pledge to registrar, and from registrar to MASA | | URI | Description | Reference | | |||
voucher_status [THISRFC] pledge to registrar | +=================+==========================+===========+ | |||
requestauditlog [THISRFC] registrar to MASA | | requestvoucher | pledge to registrar, and | RFC 8995 | | |||
enrollstatus [THISRFC] pledge to registrar | | | 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 | 8.4. PKIX Registry | |||
IANA is requested to register the following: | IANA has registered the following: | |||
This document requests a number for id-mod-MASAURLExtn2016(TBD) from | a number for id-mod-MASAURLExtn2016(96) from the pkix(7) id-mod(0) | |||
the pkix(7) id-mod(0) Registry. | Registry. | |||
This document has received an early allocation from the id-pe | IANA has assigned a number from the id-pe registry (Structure of | |||
registry (SMI Security for PKIX Certificate Extension) for id-pe- | Management Information (SMI) Security for PKIX Certificate Extension) | |||
masa-url with the value 32, resulting in an OID of | for id-pe-masa-url with the value 32, resulting in an OID of | |||
1.3.6.1.5.5.7.1.32. | 1.3.6.1.5.5.7.1.32. | |||
8.5. Pledge BRSKI Status Telemetry | 8.5. Pledge BRSKI Status Telemetry | |||
IANA is requested to create a new Registry entitled: "BRSKI | IANA has created a new registry entitled "BRSKI Parameters" and has | |||
Parameters", and within that Registry to create a table called: | created, within that registry, a table called: "Pledge BRSKI Status | |||
"Pledge BRSKI Status Telemetry Attributes". New items can be added | Telemetry Attributes". New items can be added using the | |||
using the Specification Required process. The following items are to | Specification Required process. The following items are in the | |||
be in the initial registration, with this document (Section 5.7) as | initial registration, with this document (see Section 5.7) as the | |||
the reference: | reference: | |||
* version | * version | |||
* Status | * Status | |||
* Reason | * Reason | |||
* reason-context | * reason-context | |||
8.6. DNS Service Names | 8.6. DNS Service Names | |||
IANA is requested to register the following Service Names: | IANA has registered the following service names: | |||
Service Name: brski-proxy | Service Name: brski-proxy | |||
Transport Protocol(s): tcp | Transport Protocol(s): tcp | |||
Assignee: IESG <iesg@ietf.org>. | Assignee: IESG <iesg@ietf.org> | |||
Contact: IESG <iesg@ietf.org> | Contact: IESG <iesg@ietf.org> | |||
Description: The Bootstrapping Remote Secure Key | Description: The Bootstrapping Remote Secure Key Infrastructure | |||
Infrastructures Proxy | Proxy | |||
Reference: [This document] | Reference: RFC 8995 | |||
Service Name: brski-registrar | Service Name: brski-registrar | |||
Transport Protocol(s): tcp | Transport Protocol(s): tcp | |||
Assignee: IESG <iesg@ietf.org>. | Assignee: IESG <iesg@ietf.org> | |||
Contact: IESG <iesg@ietf.org> | Contact: IESG <iesg@ietf.org> | |||
Description: The Bootstrapping Remote Secure Key | Description: The Bootstrapping Remote Secure Key Infrastructure | |||
Infrastructures Registrar | Registrar | |||
Reference: [This document] | Reference: RFC 8995 | |||
8.7. GRASP Objective Names | 8.7. GRASP Objective Names | |||
IANA is requested to register the following GRASP Objective Names: | IANA has registered the following GRASP Objective Names: | |||
The IANA is requested to register the value "AN_Proxy" (without | IANA has registered the value "AN_Proxy" (without quotes) to the | |||
quotes) to the GRASP Objectives Names Table in the GRASP Parameter | "GRASP Objective Names" table in the GRASP Parameter registry. The | |||
Registry. The specification for this value is this document, | specification for this value is Section 4.1.1 of this document. | |||
Section 4.1.1. | ||||
The IANA is requested to register the value "AN_join_registrar" | The IANA has registered the value "AN_join_registrar" (without | |||
(without quotes) to the GRASP Objectives Names Table in the GRASP | quotes) to the "GRASP Objective Names" table in the GRASP Parameter | |||
Parameter Registry. The specification for this value is this | registry. The specification for this value is Section 4.3 of this | |||
document, Section 4.3. | document. | |||
9. Applicability to the Autonomic Control Plane (ACP) | 9. Applicability to the Autonomic Control Plane (ACP) | |||
This document provides a solution to the requirements for secure | This document provides a solution to the requirements for secure | |||
bootstrap set out in Using an Autonomic Control Plane for Stable | bootstrapping as defined in "Using an Autonomic Control Plane for | |||
Connectivity of Network Operations, Administration, and Maintenance | Stable Connectivity of Network Operations, Administration, and | |||
[RFC8368], A Reference Model for Autonomic Networking | Maintenance (OAM)" [RFC8368], "A Reference Model for Autonomic | |||
[I-D.ietf-anima-reference-model] and specifically the An Autonomic | Networking" [RFC8993], and specifically "An Autonomic Control Plane | |||
Control Plane (ACP) [I-D.ietf-anima-autonomic-control-plane], section | (ACP)" [RFC8994]; see Sections 3.2 ("Secure Bootstrap over an | |||
3.2 (Secure Bootstrap), and section 6.1 (ACP Domain, Certificate and | Unconfigured Network") and 6.2 ("ACP Domain, Certificate, and | |||
Network). | Network"). | |||
The protocol described in this document has appeal in a number of | The protocol described in this document has appeal in a number of | |||
other non-ANIMA use cases. Such uses of the protocol will be | other non-ANIMA use cases. Such uses of the protocol will be | |||
deploying into other environments with different tradeoffs of | deployed into other environments with different tradeoffs of privacy, | |||
privacy, security, reliability and autonomy from manufacturers. As | security, reliability, and autonomy from manufacturers. As such, | |||
such those use cases will need to provide their own applicability | those use cases will need to provide their own applicability | |||
statements, and will need to address unique privacy and security | statements and will need to address unique privacy and security | |||
considerations for the environments in which they are used. | considerations for the environments in which they are used. | |||
The autonomic control plane (ACP) that is bootstrapped by the BRSKI | The ACP that is bootstrapped by the BRSKI protocol is typically used | |||
protocol is typically used in medium to large Internet Service | in medium to large Internet service provider organizations. | |||
Provider organizations. Equivalent enterprises that have significant | Equivalent enterprises that have significant Layer 3 router | |||
layer-3 router connectivity also will find significant benefit, | connectivity also will find significant benefit, particularly if the | |||
particularly if the Enterprise has many sites. (A network consisting | enterprise has many sites. (A network consisting of primarily Layer | |||
of primarily layer-2 is not excluded, but the adjacencies that the | 2 is not excluded, but the adjacencies that the ACP will create and | |||
ACP will create and maintain will not reflect the topology until all | maintain will not reflect the topology until all devices participate | |||
devices participate in the ACP). | in the ACP.) | |||
In the ACP, the Join Proxy is found to be proximal because | In the ACP, the Join Proxy is found to be proximal because | |||
communication between the pledge and the join proxy is exclusively on | communication between the pledge and the Join Proxy is exclusively on | |||
IPv6 Link-Local addresses. The proximity of the Join Proxy to the | IPv6 link-local addresses. The proximity of the Join Proxy to the | |||
Registrar is validated by the Registrar using ANI ACP IPv6 Unique | registrar is validated by the registrar using ANI ACP IPv6 ULAs. | |||
Local Addresses (ULA). ULAs are not routable over the Internet, so | ULAs are not routable over the Internet, so as long as the Join Proxy | |||
as long as the Join Proxy is operating correctly the proximity | is operating correctly, the proximity assertion is satisfied. Other | |||
asssertion is satisfied. Other uses of BRSKI will need make similar | uses of BRSKI will need similar analysis if they use proximity | |||
analysis if they use proximity assertions. | assertions. | |||
As specified in the ANIMA charter, this work "..focuses on | As specified in the ANIMA charter, this work "focuses on | |||
professionally-managed networks." Such a network has an operator and | professionally-managed networks." Such a network has an operator and | |||
can do things like install, configure and operate the Registrar | can do things like install, configure, and operate the registrar | |||
function. The operator makes purchasing decisions and is aware of | function. The operator makes purchasing decisions and is aware of | |||
what manufacturers it expects to see on its network. | what manufacturers it expects to see on its network. | |||
Such an operator is also capable of performing bootstrapping of a | Such an operator is also capable of performing bootstrapping of a | |||
device using a serial-console (craft console). The zero-touch | device using a serial console (craft console). The zero-touch | |||
mechanism presented in this and the ACP document | mechanism presented in this and the ACP document [RFC8994] represents | |||
[I-D.ietf-anima-autonomic-control-plane] represents a significiant | a significant efficiency: in particular, it reduces the need to put | |||
efficiency: in particular it reduces the need to put senior experts | senior experts on airplanes to configure devices in person. | |||
on airplanes to configure devices in person. | ||||
There is a recognition as the technology evolves that not every | As the technology evolves, there is recognition that not every | |||
situation may work out, and occasionally a human may still have to | situation may work out, and occasionally a human may still have to | |||
visit. In recognition of this, some mechanisms are presented in | visit. Given this, some mechanisms are presented in Section 7.2. | |||
Section 7.2. The manufacturer MUST provide at least one of the one- | The manufacturer MUST provide at least one of the one-touch | |||
touch mechanisms described that permit enrollment to be proceed | mechanisms described that permit enrollment to proceed without the | |||
without availability of any manufacturer server (such as the MASA). | availability of any manufacturer server (such as the MASA). | |||
The BRSKI protocol is going into environments where there have | The BRSKI protocol is going into environments where there have | |||
already been quite a number of vendor proprietary management systems. | already been quite a number of vendor proprietary management systems. | |||
Those are not expected to go away quickly, but rather to leverage the | Those are not expected to go away quickly but rather to leverage the | |||
secure credentials that are provisioned by BRSKI. The connectivity | secure credentials that are provisioned by BRSKI. The connectivity | |||
requirements of said management systems are provided by the ACP. | requirements of the said management systems are provided by the ACP. | |||
9.1. Operational Requirements | 9.1. Operational Requirements | |||
This section collects operational requirements based upon the three | This section collects operational requirements based upon the three | |||
roles involved in BRSKI: The Manufacturer Authorized Signing | roles involved in BRSKI: the MASA, the (domain) owner, and the | |||
Authority (MASA), the (Domain) Owner and the Device. It should be | device. It should be recognized that the manufacturer may be | |||
recognized that the manufacturer may be involved in two roles, as it | involved in two roles, as it creates the software/firmware for the | |||
creates the software/firmware for the device, and also may be the | device and may also be the operator of the MASA. | |||
operator of the MASA. | ||||
The requirements in this section are presented using BCP14 | The requirements in this section are presented using BCP 14 language | |||
([RFC2119], [RFC8174]) language. These do not represent new | [RFC2119] [RFC8174]. These do not represent new normative | |||
normative statements, just a review of a few such things in one place | statements, just a review of a few such things in one place by role. | |||
by role. They also apply specifically to the ANIMA ACP use case. | They also apply specifically to the ANIMA ACP use case. Other use | |||
Other use cases likely have similar, but MAY have different | cases likely have similar, but MAY have different, requirements. | |||
requirements. | ||||
9.1.1. MASA Operational Requirements | 9.1.1. MASA Operational Requirements | |||
The manufacturer MUST arrange for an online service to be available | The manufacturer MUST arrange for an online service called the MASA | |||
called the MASA. It MUST be available at the URL which is encoded in | 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 IDevID certificate extensions described in Section 2.3.2. | |||
The online service MUST have access to a private key with which to | The online service MUST have access to a private key with which to | |||
sign [RFC8366] format voucher artifacts. The public key, | sign voucher artifacts [RFC8366]. The public key, certificate, or | |||
certificate, or certificate chain MUST be built in to the device as | certificate chain MUST be built into the device as part of the | |||
part of the firmware. | firmware. | |||
It is RECOMMENDED that the manufacturer arrange for this signing key | It is RECOMMENDED that the manufacturer arrange for this signing key | |||
(or keys) to be escrowed according to typical software source code | (or keys) to be escrowed according to typical software source code | |||
escrow practices [softwareescrow]. | escrow practices [softwareescrow]. | |||
The MASA accepts voucher requests from Domain Owners according to an | The MASA accepts voucher-requests from domain owners according to an | |||
operational practice appropriate for the device. This can range from | operational practice appropriate for the device. This can range from | |||
any domain owner (first-come first-served, on a TOFU-like basis), to | any domain owner (first-come first-served, on a TOFU-like basis), to | |||
full sales channel integration where Domain Owners need to be | full sales channel integration where domain owners need to be | |||
positively identified by TLS Client Certicate pinned, or HTTP | positively identified by TLS pinned Client Certificates or an HTTP | |||
Authentication process. The MASA creates signed voucher artifacts | authentication process. The MASA creates signed voucher artifacts | |||
according to its internally defined policies. | according to its internally defined policies. | |||
The MASA MUST operate an audit log for devices that is accessible. | 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 | The audit-log is designed to be easily cacheable, and the MASA MAY | |||
find it useful to put this content on a CDN. | find it useful to put this content on a Content Delivery Network | |||
(CDN). | ||||
9.1.2. Domain Owner Operational Requirements | 9.1.2. Domain Owner Operational Requirements | |||
The domain owner MUST operate an EST ([RFC7030]) server with the | The domain owner MUST operate an EST [RFC7030] server with the | |||
extensions described in this document. This is the JRC or Registrar. | extensions described in this document. This is the JRC or registrar. | |||
This JRC/EST server MUST announce itself using GRASP within the ACP. | This JRC/EST server MUST announce itself using GRASP within the ACP. | |||
This EST server will typically reside with the Network Operations | This EST server will typically reside with the Network Operations | |||
Center for the organization. | Center for the organization. | |||
The domain owner MAY operate an internal certificate authority (CA) | The domain owner MAY operate an internal CA that is separate from the | |||
that is seperate from the EST server, or it MAY combine all | EST server, or it MAY combine all activities into a single device. | |||
activities into a single device. The determination of the | The determination of the architecture depends upon the scale and | |||
architecture depends upon the scale and resiliency requirements of | resiliency requirements of the organization. Multiple JRC instances | |||
the organization. Multiple JRC instances MAY be announced into the | MAY be announced into the ACP from multiple locations to achieve an | |||
ACP from multiple locations to achieve an appropriate level of | appropriate level of redundancy. | |||
redundancy. | ||||
In order to recognize which devices and which manufacturers are | In order to recognize which devices and which manufacturers are | |||
welcome on the domain owner's network, the domain owner SHOULD | welcome on the domain owner's network, the domain owner SHOULD | |||
maintain a white list of manufacturers. This MAY extend to | maintain an acceptlist of manufacturers. This MAY extend to | |||
integration with purchasing departments to know the serial numbers of | integration with purchasing departments to know the serial numbers of | |||
devices. | devices. | |||
The domain owner SHOULD use the resulting overlay ACP network to | The domain owner SHOULD use the resulting overlay ACP network to | |||
manage devices, replacing legacy out-of-band mechanisms. | manage devices, replacing legacy out-of-band mechanisms. | |||
The domain owner SHOULD operate one or more EST servers which can be | The domain owner SHOULD operate one or more EST servers that can be | |||
used to renew the domain certificates (LDevIDs) which are deployed to | used to renew the domain certificates (LDevIDs), which are deployed | |||
devices. These servers MAY be the same as the JRC, or MAY be a | to devices. These servers MAY be the same as the JRC or MAY be a | |||
distinct set of devices, as approriate for resiliency. | distinct set of devices, as appropriate for resiliency. | |||
The organization MUST take appropriate precautions against loss of | The organization MUST take appropriate precautions against loss of | |||
access to the certificate authority private key. Hardware security | access to the CA private key. Hardware security modules and/or | |||
modules and/or secret splitting are appropriate. | secret splitting are appropriate. | |||
9.1.3. Device Operational Requirements | 9.1.3. Device Operational Requirements | |||
Devices MUST come with built-in trust anchors that permit the device | Devices MUST come with built-in trust anchors that permit the device | |||
to validate vouchers from the MASA. | to validate vouchers from the MASA. | |||
Device MUST come with (unique, per-device) IDevID certificates that | Devices MUST come with (unique, per-device) IDevID certificates that | |||
include their serial numbers, and the MASA URL extension. | include their serial numbers and the MASA URL extension. | |||
Devices are expected to find Join Proxies using GRASP, and then | Devices are expected to find Join Proxies using GRASP, and then | |||
connect to the JRC using the protocol described in this document. | connect to the JRC using the protocol described in this document. | |||
Once a domain owner has been validated with the voucher, devices are | 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 enroll into the domain using EST. Devices are then | |||
expected to form ACPs using IPsec over IPv6 Link-Local addresses as | expected to form ACPs using IPsec over IPv6 link-local addresses as | |||
described in [I-D.ietf-anima-autonomic-control-plane]. | described in [RFC8994]. | |||
Once a device has been enrolled it SHOULD listen for the address of | 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 | the JRC using GRASP, and it SHOULD enable itself as a Join Proxy and | |||
announce itself on all links/interfaces using GRASP DULL. | announce itself on all links/interfaces using GRASP DULL. | |||
Devices are expected to renew their certificates before they expire. | Devices are expected to renew their certificates before they expire. | |||
10. Privacy Considerations | 10. Privacy Considerations | |||
10.1. MASA audit log | 10.1. MASA Audit-Log | |||
The MASA audit log includes the domainID for each domain a voucher | The MASA audit-log includes the domainID for each domain a voucher | |||
has been issued to. This information is closely related to the | has been issued to. This information is closely related to the | |||
actual domain identity. A MASA may need additional defenses against | actual domain identity. A MASA may need additional defenses against | |||
Denial of Service attacks (Section 11.1), and this may involve | Denial-of-Service attacks (Section 11.1), and this may involve | |||
collecting additional (unspecified here) information. This could | collecting additional (unspecified here) information. This could | |||
provide sufficient information for the MASA service to build a | provide sufficient information for the MASA service to build a | |||
detailed understanding the devices that have been provisioned within | detailed understanding of the devices that have been provisioned | |||
a domain. | within a domain. | |||
There are a number of design choices that mitigate this risk. The | There are a number of design choices that mitigate this risk. The | |||
domain can maintain some privacy since it has not necessarily been | domain can maintain some privacy since it has not necessarily been | |||
authenticated and is not authoritatively bound to the supply chain. | authenticated and is not authoritatively bound to the supply chain. | |||
Additionally the domainID captures only the unauthenticated subject | Additionally, the domainID captures only the unauthenticated subject | |||
key identifier of the domain. A privacy sensitive domain could | key identifier of the domain. A privacy-sensitive domain could | |||
theoretically generate a new domainID for each device being deployed. | theoretically generate a new domainID for each device being deployed. | |||
Similarly a privacy sensitive domain would likely purchase devices | Similarly, a privacy-sensitive domain would likely purchase devices | |||
that support proximity assertions from a manufacturer that does not | that support proximity assertions from a manufacturer that does not | |||
require sales channel integrations. This would result in a | require sales channel integrations. This would result in a | |||
significant level of privacy while maintaining the security | significant level of privacy while maintaining the security | |||
characteristics provided by Registrar based audit log inspection. | characteristics provided by the registrar-based audit-log inspection. | |||
10.2. What BRSKI-EST reveals | 10.2. What BRSKI-EST Reveals | |||
During the provisional phase of the BRSKI-EST connection between the | During the provisional phase of the BRSKI-EST connection between the | |||
Pledge and the Registrar, each party reveals its certificates to each | pledge and the registrar, each party reveals its certificates to each | |||
other. For the Pledge, this includes the serialNumber attribute, the | other. For the pledge, this includes the serialNumber attribute, the | |||
MASA URL, and the identity that signed the IDevID certificate. | MASA URL, and the identity that signed the IDevID certificate. | |||
TLS 1.2 reveals the certificate identities to on-path observers, | TLS 1.2 reveals the certificate identities to on-path observers, | |||
including the Join Proxy. | including the Join Proxy. | |||
TLS 1.3 reveals the certificate identities only to the end parties, | TLS 1.3 reveals the certificate identities only to the end parties, | |||
but as the connection is provisional, an on-path attacker (MTIM) can | but as the connection is provisional; an on-path attacker (MITM) can | |||
see the certificates. This includes not just malicious attackers, | see the certificates. This includes not just malicious attackers but | |||
but also Registrars that are visible to the Pledge, but which are not | also registrars that are visible to the pledge but are not part of | |||
part of the intended domain. | the intended domain. | |||
The certificate of the Registrar is rather arbitrary from the point | The certificate of the registrar is rather arbitrary from the point | |||
of view of the BRSKI protocol. As no [RFC6125] validations are | of view of the BRSKI protocol. As no validations [RFC6125] are | |||
expected to be done, the contents could be easily pseudonymized. Any | 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 | 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 | registrar and learn the identity of the network in question. Even if | |||
the contents of the certificate are pseudonymized, it would be | the contents of the certificate are pseudonymized, it would be | |||
possible to correlate different connections in different locations | possible to correlate different connections in different locations | |||
belong to the same entity. This is unlikely to present a significant | that belong to the same entity. This is unlikely to present a | |||
privacy concern to ANIMA ACP uses of BRSKI, but may be a concern to | significant privacy concern to ANIMA ACP uses of BRSKI, but it may be | |||
other users of BRSKI. | a concern to other users of BRSKI. | |||
The certificate of the Pledge could be revealed by a malicious Join | The certificate of the pledge could be revealed by a malicious Join | |||
Proxy that performed a MITM attack on the provisional TLS connection. | Proxy that performed a MITM attack on the provisional TLS connection. | |||
Such an attacker would be able to reveal the identity of the Pledge | Such an attacker would be able to reveal the identity of the pledge | |||
to third parties if it chose to so. | to third parties if it chose to do so. | |||
Research into a mechanism to do multi-step, multi-party authenticated | Research into a mechanism to do multistep, multiparty authenticated | |||
key agreement, incorporating some kind of zero-knowledge proof would | key agreement, incorporating some kind of zero-knowledge proof, would | |||
be valuable. Such a mechanism would ideally avoid disclosing | be valuable. Such a mechanism would ideally avoid disclosing | |||
identities until pledge, registrar and MASA agree to the transaction. | identities until the pledge, registrar, and MASA agree to the | |||
Such a mechanism would need to discover the location of the MASA | transaction. Such a mechanism would need to discover the location of | |||
without knowing the identity of the pledge, or the identity of the | the MASA without knowing the identity of the pledge or the identity | |||
MASA. This part of the problem may be unsolveable. | of the MASA. This part of the problem may be unsolvable. | |||
10.3. What BRSKI-MASA reveals to the manufacturer | 10.3. What BRSKI-MASA Reveals to the Manufacturer | |||
With consumer-oriented devices, the "call-home" mechanism in IoT | With consumer-oriented devices, the "call-home" mechanism in IoT | |||
devices raises significant privacy concerns. See [livingwithIoT] and | devices raises significant privacy concerns. See [livingwithIoT] and | |||
[IoTstrangeThings] for exemplars. The Autonomic Control Plane (ACP) | [IoTstrangeThings] for exemplars. The ACP usage of BRSKI is not | |||
usage of BRSKI is not targeted at individual usage of IoT devices, | targeted at individual usage of IoT devices but rather at the | |||
but rather at the Enterprise and ISP creation of networks in a zero- | enterprise and ISP creation of networks in a zero-touch fashion where | |||
touch fashion where the "call-home" represents a different class of | the "call-home" represents a different class of privacy and life- | |||
privacy and lifecycle management concerns. | cycle management concerns. | |||
It needs to be re-iterated that the BRSKI-MASA mechanism only occurs | It needs to be reiterated that the BRSKI-MASA mechanism only occurs | |||
once during the commissioning of the device. It is well defined, and | once during the commissioning of the device. It is well defined, and | |||
although encrypted with TLS, it could in theory be made auditable as | although encrypted with TLS, it could in theory be made auditable as | |||
the contents are well defined. This connection does not occur when | the contents are well defined. This connection does not occur when | |||
the device powers on or is restarted for normal routines. (It is | the device powers on or is restarted for normal routines. (It is | |||
conceivable, but remarkably unusual, that a device could be forced to | conceivable, but remarkably unusual, that a device could be forced to | |||
go through a full factory reset during an exceptional firmware update | go through a full factory reset during an exceptional firmware update | |||
situation, after which enrollment would have be repeated, and a new | situation, after which enrollment would have to be repeated, and a | |||
connection would occur) | new connection would occur.) | |||
The BRSKI call-home mechanism is mediated via the owner's Registrar, | The BRSKI call-home mechanism is mediated via the owner's registrar, | |||
and the information that is transmitted is directly auditable by the | and the information that is transmitted is directly auditable by the | |||
device owner. This is in stark contrast to many "call-home" | device owner. This is in stark contrast to many "call-home" | |||
protocols where the device autonomously calls home and uses an | protocols where the device autonomously calls home and uses an | |||
undocumented protocol. | undocumented protocol. | |||
While the contents of the signed part of the pledge voucher request | While the contents of the signed part of the pledge voucher-request | |||
can not be changed, they are not encrypted at the registrar. The | cannot be changed, they are not encrypted at the registrar. The | |||
ability to audit the messages by the owner of the network is a | ability to audit the messages by the owner of the network is a | |||
mechanism to defend against exfiltration of data by a nefarious | mechanism to defend against exfiltration of data by a nefarious | |||
pledge. Both are, to re-iterate, encrypted by TLS while in transit. | pledge. Both are, to reiterate, encrypted by TLS while in transit. | |||
The BRSKI-MASA exchange reveals the following information to the | The BRSKI-MASA exchange reveals the following information to the | |||
manufacturer: | manufacturer: | |||
* the identity of the device being enrolled. This is revealed by | * the identity of the device being enrolled. This is revealed by | |||
transmission of a signed voucher-request containing the serial- | transmission of a signed voucher-request containing the serial- | |||
number. The manufacturer can usually link the serial number to a | number. The manufacturer can usually link the serial number to a | |||
device model. | device model. | |||
* an identity of the domain owner in the form of the domain trust | * an identity of the domain owner in the form of the domain trust | |||
anchor. However, this is not a global PKI anchored name within | anchor. However, this is not a global PKI-anchored name within | |||
the WebPKI, so this identity could be pseudonymous. If there is | the WebPKI, so this identity could be pseudonymous. If there is | |||
sales channel integration, then the MASA will have authenticated | sales channel integration, then the MASA will have authenticated | |||
the domain owner, either via pinned certificate, or perhaps | the domain owner, via either a pinned certificate or perhaps | |||
another HTTP authentication method, as per Section 5.5.4. | another HTTP authentication method, as per Section 5.5.4. | |||
* the time the device is activated, | * the time the device is activated. | |||
* the IP address of the domain Owner's Registrar. For ISPs and | * the IP address of the domain owner's registrar. For ISPs and | |||
Enterprises, the IP address provides very clear geolocation of the | enterprises, the IP address provides very clear geolocation of the | |||
owner. No amount of IP address privacy extensions ([RFC4941]) can | owner. No amount of IP address privacy extensions [RFC8981] can | |||
do anything about this, as a simple whois lookup likely identifies | do anything about this, as a simple whois lookup likely identifies | |||
the ISP or Enterprise from the upper bits anyway. A passive | the ISP or enterprise from the upper bits anyway. A passive | |||
attacker who observes the connection definitely may conclude that | attacker who observes the connection definitely may conclude that | |||
the given enterprise/ISP is a customer of the particular equipment | the given enterprise/ISP is a customer of the particular equipment | |||
vendor. The precise model that is being enrolled will remain | vendor. The precise model that is being enrolled will remain | |||
private. | private. | |||
Based upon the above information, the manufacturer is able to track a | Based upon the above information, the manufacturer is able to track a | |||
specific device from pseudonymous domain identity to the next | specific device from pseudonymous domain identity to the next | |||
pseudonymous domain identity. If there is sales-channel integration, | pseudonymous domain identity. If there is sales-channel integration, | |||
then the identities are not pseudonymous. | then the identities are not pseudonymous. | |||
The manufacturer knows the IP address of the Registrar, but it can | The manufacturer knows the IP address of the registrar, but it cannot | |||
not see the IP address of the device itself. The manufacturer can | see the IP address of the device itself. The manufacturer cannot | |||
not track the device to a detailed physical or network location, only | track the device to a detailed physical or network location, only to | |||
to the location of the Registrar. That is likely to be at the | the location of the registrar. That is likely to be at the | |||
Enterprise or ISPs headquarters. | enterprise or ISP's headquarters. | |||
The above situation is to be distinguished from a residential/ | The above situation is to be distinguished from a residential/ | |||
individual person who registers a device from a manufacturer. | individual person who registers a device from a manufacturer. | |||
Individuals do not tend to have multiple offices, and their registrar | Individuals do not tend to have multiple offices, and their registrar | |||
is likely on the same network as the device. A manufacturer that | is likely on the same network as the device. A manufacturer that | |||
sells switching/routing products to enterprises should hardly be | sells switching/routing products to enterprises should hardly be | |||
surprised if additional purchases switching/routing products are | surprised if additional purchases of switching/routing products are | |||
made. Deviations from a historical trend or an establish baseline | made. Deviations from a historical trend or an established baseline | |||
would, however, be notable. | would, however, be notable. | |||
The situation is not improved by the enterprise/ISP using | The situation is not improved by the enterprise/ISP using | |||
anonymization services such as ToR [Dingledine2004], as a TLS 1.2 | anonymization services such as Tor [Dingledine], as a TLS 1.2 | |||
connection will reveal the ClientCertificate used, clearly | connection will reveal the ClientCertificate used, clearly | |||
identifying the enterprise/ISP involved. TLS 1.3 is better in this | identifying the enterprise/ISP involved. TLS 1.3 is better in this | |||
regard, but an active attacker can still discover the parties | regard, but an active attacker can still discover the parties | |||
involved by performing a Man-In-The-Middle-Attack on the first | involved by performing a MITM attack on the first attempt (breaking/ | |||
attempt (breaking/killing it with a TCP RST), and then letting | killing it with a TCP reset (RST)), and then letting subsequent | |||
subsequent connection pass through. | connection pass through. | |||
A manufacturer could attempt to mix the BRSKI-MASA traffic in with | A manufacturer could attempt to mix the BRSKI-MASA traffic in with | |||
general traffic their site by hosting the MASA behind the same (set) | general traffic on their site by hosting the MASA behind the same | |||
of load balancers that the companies normal marketing site is hosted | (set) of load balancers that the company's normal marketing site is | |||
behind. This makes lots of sense from a straight capacity planning | hosted behind. This makes a lot of sense from a straight capacity | |||
point of view as the same set of services (and the same set of | planning point of view as the same set of services (and the same set | |||
Distributed Denial of Service mitigations) may be used. | of Distributed Denial-of-Service mitigations) may be used. | |||
Unfortunately, as the BRSKI-MASA connections include TLS | Unfortunately, as the BRSKI-MASA connections include TLS | |||
ClientCertificate exchanges, this may easily be observed in TLS 1.2, | 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 | 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 | make such a plan irrelevant. There may be other organizational | |||
reasons to keep the marketing site (which is often subject to | reasons to keep the marketing site (which is often subject to | |||
frequent re-designs, outsourcing, etc.) separate from the MASA, which | frequent redesigns, outsourcing, etc.) separate from the MASA, which | |||
may need to operate reliably for decades. | may need to operate reliably for decades. | |||
10.4. Manufacturers and Used or Stolen Equipment | 10.4. Manufacturers and Used or Stolen Equipment | |||
As explained above, the manufacturer receives information each time | As explained above, the manufacturer receives information each time a | |||
that a device which is in factory-default mode does a zero-touch | device that is in factory-default mode does a zero-touch bootstrap | |||
bootstrap, and attempts to enroll into a domain owner's registrar. | and attempts to enroll into a domain owner's registrar. | |||
The manufacturer is therefore in a position to decline to issue a | 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 | voucher if it detects that the new owner is not the same as the | |||
previous owner. | previous owner. | |||
1. This can be seen as a feature if the equipment is believed to | 1. This can be seen as a feature if the equipment is believed to | |||
have been stolen. If the legitimate owner notifies the | have been stolen. If the legitimate owner notifies the | |||
manufacturer of the theft, then when the new owner brings the | manufacturer of the theft, then when the new owner brings the | |||
device up, if they use the zero-touch mechanism, the new | device up, if they use the zero-touch mechanism, the new | |||
(illegitimate) owner reveals their location and identity. | (illegitimate) owner reveals their location and identity. | |||
2. In the case of Used equipment, the initial owner could inform the | 2. In the case of used equipment, the initial owner could inform the | |||
manufacturer of the sale, or the manufacturer may just permit | manufacturer of the sale, or the manufacturer may just permit | |||
resales unless told otherwise. In which case, the transfer of | resales unless told otherwise. In which case, the transfer of | |||
ownership simply occurs. | ownership simply occurs. | |||
3. A manufacturer could however decide not to issue a new voucher in | 3. A manufacturer could, however, decide not to issue a new voucher | |||
response to a transfer of ownership. This is essentially the | in response to a transfer of ownership. This is essentially the | |||
same as the stolen case, with the manufacturer having decided | same as the stolen case, with the manufacturer having decided | |||
that the sale was not legitimate. | that the sale was not legitimate. | |||
4. There is a fourth case, if the manufacturer is providing | 4. There is a fourth case, if the manufacturer is providing | |||
protection against stolen devices. The manufacturer then has a | protection against stolen devices. The manufacturer then has a | |||
responsibility to protect the legitimate owner against fraudulent | responsibility to protect the legitimate owner against fraudulent | |||
claims that the equipment was stolen. In the absence of such | claims that the equipment was stolen. In the absence of such | |||
manufacturer protection, such a claim would cause the | manufacturer protection, such a claim would cause the | |||
manufacturer to refuse to issue a new voucher. Should the device | manufacturer to refuse to issue a new voucher. Should the device | |||
go through a deep factory reset (for instance, replacement of a | go through a deep factory reset (for instance, replacement of a | |||
damaged main board component, the device would not bootstrap. | damaged main board component), the device would not bootstrap. | |||
5. Finally, there is a fifth case: the manufacturer has decided to | 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 | end-of-line the device, or the owner has not paid a yearly | |||
support amount, and the manufacturer refuses to issue new | support amount, and the manufacturer refuses to issue new | |||
vouchers at that point. This last case is not new to the | vouchers at that point. This last case is not new to the | |||
industry: many license systems are already deployed that have | industry: many license systems are already deployed that have a | |||
significantly worse effect. | significantly worse effect. | |||
This section has outlined five situations in which a manufacturer | This section has outlined five situations in which a manufacturer | |||
could use the voucher system to enforce what are clearly license | could use the voucher system to enforce what are clearly license | |||
terms. A manufacturer that attempted to enforce license terms via | terms. A manufacturer that attempted to enforce license terms via | |||
vouchers would find it rather ineffective as the terms would only be | 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 | enforced when the device is enrolled, and this is not (to repeat) a | |||
daily or even monthly occurrence. | daily or even monthly occurrence. | |||
10.5. Manufacturers and Grey market equipment | 10.5. Manufacturers and Grey Market Equipment | |||
Manufacturers of devices often sell different products into different | Manufacturers of devices often sell different products into different | |||
regional markets. Which product is available in which market can be | regional markets. Which product is available in which market can be | |||
driven by price differentials, support issues (some markets may | driven by price differentials, support issues (some markets may | |||
require manuals and tech-support to be done in the local language), | require manuals and tech support to be done in the local language), | |||
government export regulation (such as whether strong crypto is | and government export regulation (such as whether strong crypto is | |||
permitted to be exported, or permitted to be used in a particular | permitted to be exported or permitted to be used in a particular | |||
market). When an domain owner obtains a device from a different | market). When a domain owner obtains a device from a different | |||
market (they can be new) and transfers it to a different location, | market (they can be new) and transfers it to a different location, | |||
this is called a Grey Market. | this is called a Grey Market. | |||
A manufacturer could decide not to issue a voucher to an enterprise/ | A manufacturer could decide not to issue a voucher to an enterprise/ | |||
ISP based upon their location. There are a number of ways which this | ISP based upon their location. There are a number of ways that this | |||
could be determined: from the geolocation of the registrar, from | could be determined: from the geolocation of the registrar, from | |||
sales channel knowledge about the customer, and what products are | sales channel knowledge about the customer, and from what products | |||
(un-)available in that market. If the device has a GPS the | are available or unavailable in that market. If the device has a | |||
coordinates of the device could even be placed into an extension of | GPS, the coordinates of the device could even be placed into an | |||
the voucher. | extension of the voucher. | |||
The above actions are not illegal, and not new. Many manufacturers | The above actions are not illegal, and not new. Many manufacturers | |||
have shipped crypto-weak (exportable) versions of firmware as the | have shipped crypto-weak (exportable) versions of firmware as the | |||
default on equipment for decades. The first task of an enterprise/ | default on equipment for decades. The first task of an enterprise/ | |||
ISP has always been to login to a manufacturer system, show one's | ISP has always been to login to a manufacturer system, show one's | |||
"entitlement" (country information, proof that support payments have | "entitlement" (country information, proof that support payments have | |||
been made), and receive either a new updated firmware, or a license | been made), and receive either a new updated firmware or a license | |||
key that will activate the correct firmware. | key that will activate the correct firmware. | |||
BRSKI permits the above process to automated (in an autonomic | BRSKI permits the above process to be automated (in an autonomic | |||
fashion), and therefore perhaps encourages this kind of | fashion) and therefore perhaps encourages this kind of | |||
differentiation by reducing the cost of doing it. | differentiation by reducing the cost of doing it. | |||
An issue that manufacturers will need to deal with in the above | 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 | 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 | set of rules (or laws or entitlements), but the domain registry is in | |||
another one. Which rules apply is something will have to be worked | another one. Which rules apply is something that will have to be | |||
out: the manufacturer could come to believe they are dealing with | worked out: the manufacturer could believe they are dealing with Grey | |||
Grey market equipment, when it is simply dealing with a global | Market equipment when they are simply dealing with a global | |||
enterprise. | enterprise. | |||
10.6. Some mitigations for meddling by manufacturers | 10.6. Some Mitigations for Meddling by Manufacturers | |||
The most obvious mitigation is not to buy the product. Pick | The most obvious mitigation is not to buy the product. Pick | |||
manufacturers that are up-front about their policies, who do not | manufacturers that are up front about their policies and who do not | |||
change them gratuitously. | change them gratuitously. | |||
Section 7.4.3 describes some ways in which a manufacturer could | Section 7.4.3 describes some ways in which a manufacturer could | |||
provide a mechanism to manage the trust anchors and built-in | provide a mechanism to manage the trust anchors and built-in | |||
certificates (IDevID) as an extension. There are a variety of | certificates (IDevID) as an extension. There are a variety of | |||
mechanism, and some may take a substantial amount of work to get | mechanisms, and some may take a substantial amount of work to get | |||
exactly correct. These mechanisms do not change the flow of the | exactly correct. These mechanisms do not change the flow of the | |||
protocol described here, but rather allow the starting trust | protocol described here but rather allow the starting trust | |||
assumptions to be changed. This is an area for future | assumptions to be changed. This is an area for future | |||
standardization work. | standardization work. | |||
Replacement of the voucher validation anchors (usually pointing to | Replacement of the voucher validation anchors (usually pointing to | |||
the original manufacturer's MASA) with those of the new owner permits | the original manufacturer's MASA) with those of the new owner permits | |||
the new owner to issue vouchers to subsequent owners. This would be | the new owner to issue vouchers to subsequent owners. This would be | |||
done by having the selling (old) owner to run a MASA. | done by having the selling (old) owner run a MASA. | |||
The BRSKI protocol depends upon a trust anchor on the device and an | The BRSKI protocol depends upon a trust anchor and an identity on the | |||
identity on the device. Management of these entities facilitates a | device. Management of these entities facilitates a few new | |||
few new operational modes without making any changes to the BRSKI | operational modes without making any changes to the BRSKI protocol. | |||
protocol. Those modes include: offline modes where the domain owner | Those modes include: offline modes where the domain owner operates an | |||
operates an internal MASA for all devices, resell modes where the | internal MASA for all devices, resell modes where the first domain | |||
first domain owner becomes the MASA for the next (resold-to) domain | owner becomes the MASA for the next (resold-to) domain owner, and | |||
owner, and services where an aggregator acquires a large variety of | services where an aggregator acquires a large variety of devices and | |||
devices, and then acts as a pseudonymized MASA for a variety of | then acts as a pseudonymized MASA for a variety of devices from a | |||
devices from a variety of manufacturers. | variety of manufacturers. | |||
Although replacement of the IDevID is not required for all modes | Although replacement of the IDevID is not required for all modes | |||
described above, a manufacturers could support such a thing. Some | described above, a manufacturer could support such a thing. Some may | |||
may wish to consider replacement of the IDevID as an indication that | wish to consider replacement of the IDevID as an indication that the | |||
the device's warrantee is terminated. For others, the privacy | device's warranty is terminated. For others, the privacy | |||
requirements of some deployments might consider this a standard | requirements of some deployments might consider this a standard | |||
operating practice. | operating practice. | |||
As discussed at the end of Section 5.8.1, new work could be done to | 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 | 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 | permit the audit-log to continue to be useful, even when there is a | |||
chain of MASA due to changes of ownership. | chain of MASA due to changes of ownership. | |||
10.7. Death of a manufacturer | 10.7. Death of a Manufacturer | |||
A common concern has been that a manufacturer could go out of | A common concern has been that a manufacturer could go out of | |||
business, leaving owners of devices unable to get new vouchers for | business, leaving owners of devices unable to get new vouchers for | |||
existing products. Said products might have been previously | existing products. Said products might have been previously deployed | |||
deployed, but need to be re-initialized, they might have been | but need to be reinitialized, used, or kept in a warehouse as long- | |||
purchased used, or they might have kept in a warehouse as long-term | term spares. | |||
spares. | ||||
The MASA was named the Manufacturer *Authorized* Signing Authority to | The MASA was named the Manufacturer *Authorized* Signing Authority to | |||
emphasize that it need not be the manufacturer itself that performs | emphasize that it need not be the manufacturer itself that performs | |||
this. It is anticipated that specialist service providers will come | this. It is anticipated that specialist service providers will come | |||
to exist that deal with the creation of vouchers in much the same way | to exist that deal with the creation of vouchers in much the same way | |||
that many companies have outsourced email, advertising and janitorial | that many companies have outsourced email, advertising, and | |||
services. | janitorial services. | |||
Further, it is expected that as part of any service agreement that | Further, it is expected that as part of any service agreement, the | |||
the manufacturer would arrange to escrow appropriate private keys | manufacturer would arrange to escrow appropriate private keys such | |||
such that a MASA service could be provided by a third party. This | that a MASA service could be provided by a third party. This has | |||
has routinely been done for source code for decades. | routinely been done for source code for decades. | |||
11. Security Considerations | 11. Security Considerations | |||
This document details a protocol for bootstrapping that balances | This document details a protocol for bootstrapping that balances | |||
operational concerns against security concerns. As detailed in the | operational concerns against security concerns. As detailed in the | |||
introduction, and touched on again in Section 7, the protocol allows | introduction, and touched on again in Section 7, the protocol allows | |||
for reduced security modes. These attempt to deliver additional | for reduced security modes. These attempt to deliver additional | |||
control to the local administrator and owner in cases where less | control to the local administrator and owner in cases where less | |||
security provides operational benefits. This section goes into more | security provides operational benefits. This section goes into more | |||
detail about a variety of specific considerations. | detail about a variety of specific considerations. | |||
To facilitate logging and administrative oversight, in addition to | To facilitate logging and administrative oversight, in addition to | |||
triggering Registrar verification of MASA logs, the pledge reports on | triggering registrar verification of MASA logs, the pledge reports on | |||
voucher parsing status to the registrar. In the case of a failure, | the voucher parsing status to the registrar. In the case of a | |||
this information is informative to a potentially malicious registrar. | failure, this information is informative to a potentially malicious | |||
This is mandated anyway because of the operational benefits of an | registrar. This is mandated anyway because of the operational | |||
informed administrator in cases where the failure is indicative of a | benefits of an informed administrator in cases where the failure is | |||
problem. The registrar is RECOMMENDED to verify MASA logs if voucher | indicative of a problem. The registrar is RECOMMENDED to verify MASA | |||
status telemetry is not received. | logs if voucher status telemetry is not received. | |||
To facilitate truly limited clients EST RFC7030 section 3.3.2 | To facilitate truly limited clients, EST requires that the client | |||
requirements that the client MUST support a client authentication | MUST support a client authentication model (see [RFC7030], | |||
model have been reduced in Section 7 to a statement that the | Section 3.3.2); Section 7 updates these requirements by stating that | |||
registrar "MAY" choose to accept devices that fail cryptographic | the registrar MAY choose to accept devices that fail cryptographic | |||
authentication. This reflects current (poor) practices in shipping | authentication. This reflects current (poor) practices in shipping | |||
devices without a cryptographic identity that are NOT RECOMMENDED. | devices without a cryptographic identity that are NOT RECOMMENDED. | |||
During the provisional period of the connection the pledge MUST treat | During the provisional period of the connection, the pledge MUST | |||
all HTTP header and content data as untrusted data. HTTP libraries | treat all HTTP header and content data as untrusted data. HTTP | |||
are regularly exposed to non-secured HTTP traffic: mature libraries | libraries are regularly exposed to non-secured HTTP traffic: mature | |||
should not have any problems. | libraries should not have any problems. | |||
Pledges might chose to engage in protocol operations with multiple | Pledges might chose to engage in protocol operations with multiple | |||
discovered registrars in parallel. As noted above they will only do | discovered registrars in parallel. As noted above, they will only do | |||
so with distinct nonce values, but the end result could be multiple | so with distinct nonce values, but the end result could be multiple | |||
vouchers issued from the MASA if all registrars attempt to claim the | vouchers issued from the MASA if all registrars attempt to claim the | |||
device. This is not a failure and the pledge choses whichever | device. This is not a failure, and the pledge chooses whichever | |||
voucher to accept based on internal logic. The registrars verifying | voucher to accept based on internal logic. The registrars verifying | |||
log information will see multiple entries and take this into account | log information will see multiple entries and take this into account | |||
for their analytics purposes. | for their analytic purposes. | |||
11.1. Denial of Service (DoS) against MASA | 11.1. Denial of Service (DoS) against MASA | |||
There are uses cases where the MASA could be unavailable or | There are use cases where the MASA could be unavailable or | |||
uncooperative to the Registrar. They include active DoS attacks, | uncooperative to the registrar. They include active DoS attacks, | |||
planned and unplanned network partitions, changes to MASA policy, or | planned and unplanned network partitions, changes to MASA policy, or | |||
other instances where MASA policy rejects a claim. These introduce | other instances where MASA policy rejects a claim. These introduce | |||
an operational risk to the Registrar owner in that MASA behavior | an operational risk to the registrar owner in that MASA behavior | |||
might limit the ability to bootstrap a pledge device. For example | might limit the ability to bootstrap a pledge device. For example, | |||
this might be an issue during disaster recovery. This risk can be | this might be an issue during disaster recovery. This risk can be | |||
mitigated by Registrars that request and maintain long term copies of | mitigated by registrars that request and maintain long-term copies of | |||
"nonceless" vouchers. In that way they are guaranteed to be able to | "nonceless" vouchers. In that way, they are guaranteed to be able to | |||
bootstrap their devices. | bootstrap their devices. | |||
The issuance of nonceless vouchers themselves creates a security | The issuance of nonceless vouchers themselves creates a security | |||
concern. If the Registrar of a previous domain can intercept | concern. If the registrar of a previous domain can intercept | |||
protocol communications then it can use a previously issued nonceless | protocol communications, then it can use a previously issued | |||
voucher to establish management control of a pledge device even after | nonceless voucher to establish management control of a pledge device | |||
having sold it. This risk is mitigated by recording the issuance of | even after having sold it. This risk is mitigated by recording the | |||
such vouchers in the MASA audit log that is verified by the | issuance of such vouchers in the MASA audit-log that is verified by | |||
subsequent Registrar and by Pledges only bootstrapping when in a | the subsequent registrar and by pledges only bootstrapping when in a | |||
factory default state. This reflects a balance between enabling MASA | factory default state. This reflects a balance between enabling MASA | |||
independence during future bootstrapping and the security of | independence during future bootstrapping and the security of | |||
bootstrapping itself. Registrar control over requesting and auditing | bootstrapping itself. Registrar control over requesting and auditing | |||
nonceless vouchers allows device owners to choose an appropriate | nonceless vouchers allows device owners to choose an appropriate | |||
balance. | balance. | |||
The MASA is exposed to DoS attacks wherein attackers claim an | The MASA is exposed to DoS attacks wherein attackers claim an | |||
unbounded number of devices. Ensuring a registrar is representative | unbounded number of devices. Ensuring a registrar is representative | |||
of a valid manufacturer customer, even without validating ownership | of a valid manufacturer customer, even without validating ownership | |||
of specific pledge devices, helps to mitigate this. Pledge | of specific pledge devices, helps to mitigate this. Pledge | |||
signatures on the pledge voucher-request, as forwarded by the | signatures on the pledge voucher-request, as forwarded by the | |||
registrar in the prior-signed-voucher-request field of the registrar | registrar in the prior-signed-voucher-request field of the registrar | |||
voucher-request, significantly reduce this risk by ensuring the MASA | voucher-request, significantly reduce this risk by ensuring the MASA | |||
can confirm proximity between the pledge and the registrar making the | can confirm proximity between the pledge and the registrar making the | |||
request. Supply chain integration ("know your customer") is an | request. Supply-chain integration ("know your customer") is an | |||
additional step that MASA providers and device vendors can explore. | additional step that MASA providers and device vendors can explore. | |||
11.2. DomainID must be resistant to second-preimage attacks | 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 used as the reference in the audit-log to the domain. | |||
The domainID is expected to be calculated by a hash that is resistant | 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 | to a second-preimage attack. Such an attack would allow a second | |||
registrar to create audit log entries that are fake. | registrar to create audit-log entries that are fake. | |||
11.3. Availability of good random numbers | 11.3. Availability of Good Random Numbers | |||
The nonce used by the Pledge in the voucher-request SHOULD be | The nonce used by the pledge in the voucher-request SHOULD be | |||
generated by a Strong Cryptographic Sequence ([RFC4086] section 6.2). | generated by a Strong Cryptographic Sequence ([RFC4086], | |||
TLS has a similar requirement. | Section 6.2). TLS has a similar requirement. | |||
In particular implementations should pay attention to the advance in | In particular, implementations should pay attention to the advance in | |||
[RFC4086] section 3, particularly section 3.4. The random seed used | [RFC4086]; see Sections 3 and, in particular, 3.4. The random seed | |||
by a device at boot MUST be unique across all devices and all | used by a device at boot MUST be unique across all devices and all | |||
bootstraps. Resetting a device to factory default state does not | bootstraps. Resetting a device to factory default state does not | |||
obviate this requirement. | obviate this requirement. | |||
11.4. Freshness in Voucher-Requests | 11.4. Freshness in Voucher-Requests | |||
A concern has been raised that the pledge voucher-request should | A concern has been raised that the pledge voucher-request should | |||
contain some content (a nonce) provided by the registrar and/or MASA | contain some content (a nonce) provided by the registrar and/or MASA | |||
in order for those actors to verify that the pledge voucher-request | in order for those actors to verify that the pledge voucher-request | |||
is fresh. | is fresh. | |||
There are a number of operational problems with getting a nonce from | 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 | 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 | value from the registrar, but as the registrar is not yet vouched | |||
for, such a registrar nonce has little value. There are privacy and | for, such a registrar nonce has little value. There are privacy and | |||
logistical challenges to addressing these operational issues, so if | logistical challenges to addressing these operational issues, so if | |||
such a thing were to be considered, it would have to provide some | 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 | clear value. This section examines the impacts of not having a fresh | |||
pledge voucher-request. | pledge voucher-request. | |||
Because the registrar authenticates the pledge, a full Man-in-the- | Because the registrar authenticates the pledge, a full MITM attack is | |||
Middle attack is not possible, despite the provisional TLS | not possible, despite the provisional TLS authentication by the | |||
authentication by the pledge (see Section 5.) Instead we examine the | pledge (see Section 5.) Instead, we examine the case of a fake | |||
case of a fake registrar (Rm) that communicates with the pledge in | registrar (Rm) that communicates with the pledge in parallel or in | |||
parallel or in close time proximity with the intended registrar. | close-time proximity with the intended registrar. (This scenario is | |||
(This scenario is intentionally supported as described in | intentionally supported as described in Section 4.1.) | |||
Section 4.1.) | ||||
The fake registrar (Rm) can obtain a voucher signed by the MASA | The fake registrar (Rm) can obtain a voucher signed by the MASA | |||
either directly or through arbitrary intermediaries. Assuming that | either directly or through arbitrary intermediaries. Assuming that | |||
the MASA accepts the registrar voucher-request (either because Rm is | the MASA accepts the registrar voucher-request (because either the Rm | |||
collaborating with a legitimate registrar according to supply chain | is collaborating with a legitimate registrar according to supply- | |||
information, or because the MASA is in audit-log only mode), then a | chain information or the MASA is in audit-log only mode), then a | |||
voucher linking the pledge to the registrar Rm is issued. | voucher linking the pledge to the registrar Rm is issued. | |||
Such a voucher, when passed back to the pledge, would link the pledge | Such a voucher, when passed back to the pledge, would link the pledge | |||
to registrar Rm, and would permit the pledge to end the provisional | to registrar Rm and permit the pledge to end the provisional state. | |||
state. It now trusts Rm and, if it has any security vulnerabilities | It now trusts the Rm and, if it has any security vulnerabilities | |||
leveragable by an Rm with full administrative control, can be assumed | leverageable by an Rm with full administrative control, can be | |||
to be a threat against the intended registrar. | assumed to be a threat against the intended registrar. | |||
This flow is mitigated by the intended registrar verifying the audit | This flow is mitigated by the intended registrar verifying the audit- | |||
logs available from the MASA as described in Section 5.8. Rm might | logs available from the MASA as described in Section 5.8. The Rm | |||
chose to collect a voucher-request but wait until after the intended | might chose to collect a voucher-request but wait until after the | |||
registrar completes the authorization process before submitting it. | intended registrar completes the authorization process before | |||
This pledge voucher-request would be 'stale' in that it has a nonce | submitting it. This pledge voucher-request would be "stale" in that | |||
that no longer matches the internal state of the pledge. In order to | it has a nonce that no longer matches the internal state of the | |||
successfully use any resulting voucher the Rm would need to remove | pledge. In order to successfully use any resulting voucher, the Rm | |||
the stale nonce or anticipate the pledge's future nonce state. | would need to remove the stale nonce or anticipate the pledge's | |||
Reducing the possibility of this is why the pledge is mandated to | future nonce state. Reducing the possibility of this is why the | |||
generate a strong random or pseudo-random number nonce. | pledge is mandated to generate a strong random or pseudo-random | |||
number nonce. | ||||
Additionally, in order to successfully use the resulting voucher the | Additionally, in order to successfully use the resulting voucher, the | |||
Rm would have to attack the pledge and return it to a bootstrapping | Rm would have to attack the pledge and return it to a bootstrapping- | |||
enabled state. This would require wiping the pledge of current | enabled state. This would require wiping the pledge of current | |||
configuration and triggering a re-bootstrapping of the pledge. This | configuration and triggering a rebootstrapping of the pledge. This | |||
is no more likely than simply taking control of the pledge directly | is no more likely than simply taking control of the pledge directly, | |||
but if this is a consideration the target network is RECOMMENDED to | but if this is a consideration, it is RECOMMENDED that the target | |||
take the following steps: | network take the following steps: | |||
* Ongoing network monitoring for unexpected bootstrapping attempts | * Ongoing network monitoring for unexpected bootstrapping attempts | |||
by pledges. | by pledges. | |||
* Retrieval and examination of MASA log information upon the | * Retrieval and examination of MASA log information upon the | |||
occurrence of any such unexpected events. Rm will be listed in | occurrence of any such unexpected events. The Rm will be listed | |||
the logs along with nonce information for analysis. | in the logs along with nonce information for analysis. | |||
11.5. Trusting manufacturers | 11.5. Trusting Manufacturers | |||
The BRSKI extensions to EST permit a new pledge to be completely | The BRSKI extensions to EST permit a new pledge to be completely | |||
configured with domain specific trust anchors. The link from built- | configured with domain-specific trust anchors. The link from built- | |||
in manufacturer-provided trust anchors to domain-specific trust | in manufacturer-provided trust anchors to domain-specific trust | |||
anchors is mediated by the signed voucher artifact. | anchors is mediated by the signed voucher artifact. | |||
If the manufacturer's IDevID signing key is not properly validated, | If the manufacturer's IDevID signing key is not properly validated, | |||
then there is a risk that the network will accept a pledge that | 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 | should not be a member of the network. As the address of the | |||
manufacturer's MASA is provided in the IDevID using the extension | manufacturer's MASA is provided in the IDevID using the extension | |||
from Section 2.3, the malicious pledge will have no problem | from Section 2.3, the malicious pledge will have no problem | |||
collaborating with it's MASA to produce a completely valid voucher. | collaborating with its MASA to produce a completely valid voucher. | |||
BRSKI does not, however, fundamentally change the trust model from | BRSKI does not, however, fundamentally change the trust model from | |||
domain owner to manufacturer. Assuming that the pledge used its | domain owner to manufacturer. Assuming that the pledge used its | |||
IDevID with RFC7030 EST and BRSKI, the domain (registrar) still needs | IDevID with EST [RFC7030] and BRSKI, the domain (registrar) still | |||
to trust the manufacturer. | needs to trust the manufacturer. | |||
Establishing this trust between domain and manufacturer is outside | Establishing this trust between domain and manufacturer is outside | |||
the scope of BRSKI. There are a number of mechanisms that can | the scope of BRSKI. There are a number of mechanisms that can be | |||
adopted including: | adopted including: | |||
* Manually configuring each manufacturer's trust anchor. | * Manually configuring each manufacturer's trust anchor. | |||
* A Trust-On-First-Use (TOFU) mechanism. A human would be queried | * A TOFU mechanism. A human would be queried upon seeing a | |||
upon seeing a manufacturer's trust anchor for the first time, and | manufacturer's trust anchor for the first time, and then the trust | |||
then the trust anchor would be installed to the trusted store. | anchor would be installed to the trusted store. There are risks | |||
There are risks with this; even if the key to name mapping is | with this; even if the key to name mapping is validated using | |||
validated using something like the WebPKI, there remains the | something like the WebPKI, there remains the possibility that the | |||
possibility that the name is a look alike: e.g, dem0.example. vs | name is a look alike: e.g., dem0.example. vs. demO.example. | |||
demO.example. | ||||
* scanning the trust anchor from a QR code that came with the | * scanning the trust anchor from a QR code that came with the | |||
packaging (this is really a manual TOFU mechanism) | packaging (this is really a manual TOFU mechanism). | |||
* some sales integration process where trust anchors are provided as | * some sales integration processing where trust anchors are provided | |||
part of the sales process, probably included in a digital packing | as part of the sales process, probably included in a digital | |||
"slip", or a sales invoice. | packing "slip", or a sales invoice. | |||
* consortium membership, where all manufacturers of a particular | * consortium membership, where all manufacturers of a particular | |||
device category (e.g, a light bulb, or a cable-modem) are signed | device category (e.g, a light bulb or a cable modem) are signed by | |||
by an certificate authority specifically for this. This is done | a CA specifically for this. This is done by CableLabs today. It | |||
by CableLabs today. It is used for authentication and | is used for authentication and authorization as part of | |||
authorization as part of TR-79: [docsisroot] and [TR069]. | [docsisroot] and [TR069]. | |||
The existing WebPKI provides a reasonable anchor between manufacturer | The existing WebPKI provides a reasonable anchor between manufacturer | |||
name and public key. It authenticates the key. It does not provide | name and public key. It authenticates the key. It does not provide | |||
a reasonable authorization for the manufacturer, so it is not | a reasonable authorization for the manufacturer, so it is not | |||
directly useable on it's own. | directly usable on its own. | |||
11.6. Manufacturer Maintenance of trust anchors | 11.6. Manufacturer Maintenance of Trust Anchors | |||
BRSKI depends upon the manufacturer building in trust anchors to the | BRSKI depends upon the manufacturer building in trust anchors to the | |||
pledge device. The voucher artifact which is signed by the MASA will | pledge device. The voucher artifact that is signed by the MASA will | |||
be validated by the pledge using that anchor. This implies that the | be validated by the pledge using that anchor. This implies that the | |||
manufacturer needs to maintain access to a signing key that the | manufacturer needs to maintain access to a signing key that the | |||
pledge can validate. | pledge can validate. | |||
The manufacturer will need to maintain the ability to make signatures | The manufacturer will need to maintain the ability to make signatures | |||
that can be validated for the lifetime that the device could be | that can be validated for the lifetime that the device could be | |||
onboarded. Whether this onboarding lifetime is less than the device | onboarded. Whether this onboarding lifetime is less than the device | |||
lifetime depends upon how the device is used. An inventory of | lifetime depends upon how the device is used. An inventory of | |||
devices kept in a warehouse as spares might not be onboarded for many | devices kept in a warehouse as spares might not be onboarded for many | |||
decades. | decades. | |||
There are good cryptographic hygiene reasons why a manufacturer would | There are good cryptographic hygiene reasons why a manufacturer would | |||
not want to maintain access to a private key for many decades. A | not want to maintain access to a private key for many decades. A | |||
manufacturer in that situation can leverage a long-term certificate | manufacturer in that situation can leverage a long-term CA anchor, | |||
authority anchor, built-in to the pledge, and then a certificate | built-in to the pledge, and then a certificate chain may be | |||
chain may be incorporated using the normal CMS certificate set. This | incorporated using the normal CMS certificate set. This may increase | |||
may increase the size of the voucher artifacts, but that is not a | the size of the voucher artifacts, but that is not a significant | |||
significant issues in non-constrained environments. | issue in non-constrained environments. | |||
There are a few other operational variations that manufacturers could | There are a few other operational variations that manufacturers could | |||
consider. For instance, there is no reason that every device need | consider. For instance, there is no reason that every device need | |||
have the same set of trust anchors pre-installed. Devices built in | have the same set of trust anchors preinstalled. Devices built in | |||
different factories, or on different days, or any other consideration | different factories, or on different days, or in any other | |||
could have different trust anchors built in, and the record of which | consideration, could have different trust anchors built in, and the | |||
batch the device is in would be recorded in the asset database. The | record of which batch the device is in would be recorded in the asset | |||
manufacturer would then know which anchor to sign an artifact | database. The manufacturer would then know which anchor to sign an | |||
against. | artifact against. | |||
Aside from the concern about long-term access to private keys, a | 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 | major limiting factor for the shelf life of many devices will be the | |||
age of the cryptographic algorithms included. A device produced in | age of the cryptographic algorithms included. A device produced in | |||
2019 will have hardware and software capable of validating algorithms | 2019 will have hardware and software capable of validating algorithms | |||
common in 2019, and will have no defense against attacks (both | common in 2019 and will have no defense against attacks (both quantum | |||
quantum and von-neuman brute force attacks) which have not yet been | and von Neumann brute-force attacks) that have not yet been invented. | |||
invented. This concern is orthogonal to the concern about access to | This concern is orthogonal to the concern about access to private | |||
private keys, but this concern likely dominates and limits the | keys, but this concern likely dominates and limits the life span of a | |||
lifespan of a device in a warehouse. If any update to firmware to | device in a warehouse. If any update to the firmware to support new | |||
support new cryptographic mechanism were possible (while the device | cryptographic mechanisms were possible (while the device was in a | |||
was in a warehouse), updates to trust anchors would also be done at | warehouse), updates to trust anchors would also be done at the same | |||
the same time. | time. | |||
The set of standard operating procedures for maintaining high value | The set of standard operating procedures for maintaining high-value | |||
private keys is well documented. For instance, the WebPKI provides a | private keys is well documented. For instance, the WebPKI provides a | |||
number of options for audits at [cabforumaudit], and the DNSSEC root | number of options for audits in [cabforumaudit], and the DNSSEC root | |||
operations are well documented at [dnssecroot]. | operations are well documented in [dnssecroot]. | |||
It is not clear if Manufacturers will take this level of precaution, | It is not clear if manufacturers will take this level of precaution, | |||
or how strong the economic incentives are to maintain an appropriate | or how strong the economic incentives are to maintain an appropriate | |||
level of security. | level of security. | |||
This next section examines the risk due to a compromised manufacturer | The next section examines the risk due to a compromised manufacturer | |||
IDevID signing key. This is followed by examination of the risk due | IDevID signing key. This is followed by examination of the risk due | |||
to a compromised MASA key. The third section sections below examines | to a compromised MASA key. The third section below examines the | |||
the situation where MASA web server itself is under attacker control, | situation where a MASA web server itself is under attacker control, | |||
but that the MASA signing key itself is safe in a not-directly | but the MASA signing key itself is safe in a not-directly connected | |||
connected hardware module. | hardware module. | |||
11.6.1. Compromise of Manufacturer IDevID signing keys | 11.6.1. Compromise of Manufacturer IDevID Signing Keys | |||
An attacker that has access to the key that the manufacturer uses to | An attacker that has access to the key that the manufacturer uses to | |||
sign IDevID certificates can create counterfeit devices. Such | sign IDevID certificates can create counterfeit devices. Such | |||
devices can claim to be from a particular manufacturer, but be | devices can claim to be from a particular manufacturer but can be | |||
entirely different devices: Trojan horses in effect. | entirely different devices: Trojan horses in effect. | |||
As the attacker controls the MASA URL in the certificate, the | As the attacker controls the MASA URL in the certificate, the | |||
registrar can be convinced to talk to the attackers' MASA. 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 | registrar does not need to be in any kind of promiscuous mode to be | |||
vulnerable. | vulnerable. | |||
In addition to creating fake devices, the attacker may also be able | In addition to creating fake devices, the attacker may also be able | |||
to issue revocations for existing certificates if the IDevID | to issue revocations for existing certificates if the IDevID | |||
certificate process relies upon CRL lists that are distributed. | certificate process relies upon CRL lists that are distributed. | |||
There does not otherwise seem to be any risk from this compromise to | There does not otherwise seem to be any risk from this compromise to | |||
devices which are already deployed, or which are sitting locally in | devices that are already deployed or that are sitting locally in | |||
boxes waiting for deployment (local spares). The issue is that | boxes waiting for deployment (local spares). The issue is that | |||
operators will be unable to trust devices which have been in an | operators will be unable to trust devices that have been in an | |||
uncontrolled warehouse as they do not know if those are real devices. | uncontrolled warehouse as they do not know if those are real devices. | |||
11.6.2. Compromise of MASA signing keys | 11.6.2. Compromise of MASA Signing Keys | |||
There are two periods of time in which to consider: when the MASA key | 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 | has fallen into the hands of an attacker and after the MASA | |||
recognizes that the key has been compromised. | recognizes that the key has been compromised. | |||
11.6.2.1. Attacker opportunties with compromised MASA key | 11.6.2.1. Attacker Opportunities with a Compromised MASA Key | |||
An attacker that has access to the MASA signing key could create | An attacker that has access to the MASA signing key could create | |||
vouchers. These vouchers could be for existing deployed devices, or | vouchers. These vouchers could be for existing deployed devices or | |||
for devices which are still in a warehouse. In order to exploit | for devices that are still in a warehouse. In order to exploit these | |||
these vouchers two things need to occur: the device has to go through | vouchers, two things need to occur: the device has to go through a | |||
a factory default boot cycle, and the registrar has to be convinced | factory default boot cycle, and the registrar has to be convinced to | |||
to contact the attacker's MASA. | contact the attacker's MASA. | |||
If the attacker controls a Registrar which is visible to the device, | If the attacker controls a registrar that is visible to the device, | |||
then there is no difficulty in delivery of the false voucher. A | 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 | 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 | center, at an ISP peering point (whether a public IX or a private | |||
peering point). In such a situation, there are already cables | peering point). In such a situation, there are already cables | |||
attached to the equipment that lead to other devices (the peers at | attached to the equipment that lead to other devices (the peers at | |||
the IX), and through those links, the false voucher could be | the IX), and through those links, the false voucher could be | |||
delivered. The difficult part would be get the device put through a | delivered. The difficult part would be to put the device through a | |||
factory reset. This might be accomplished through social engineering | factory reset. This might be accomplished through social engineering | |||
of data center staff. Most locked cages have ventilation holes, and | of data center staff. Most locked cages have ventilation holes, and | |||
possibly a long "paperclip" could reach through to depress a factory | possibly a long "paperclip" could reach through to depress a factory | |||
reset button. Once such a piece of ISP equipment has been | reset button. Once such a piece of ISP equipment has been | |||
compromised, it could be used to compromise equipment that was | compromised, it could be used to compromise equipment that it was | |||
connected to (through long haul links even), assuming that those | connected to (through long haul links even), assuming that those | |||
pieces of equipment could also be forced through a factory reset. | pieces of equipment could also be forced through a factory reset. | |||
The above scenario seems rather unlikely as it requires some element | The above scenario seems rather unlikely as it requires some element | |||
of physical access; but were there a remote exploit that did not | 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 | cause a direct breach, but rather a fault that resulted in a factory | |||
reset, this could provide a reasonable path. | reset, this could provide a reasonable path. | |||
The above deals with ANI uses of BRSKI. For cases where 802.11 or | The above deals with ANI uses of BRSKI. For cases where IEEE 802.11 | |||
802.15.4 is involved, the need to connect directly to the device is | or 802.15.4 is involved, the need to connect directly to the device | |||
eliminated, but the need to do a factory reset is not. Physical | is eliminated, but the need to do a factory reset is not. Physical | |||
possession of the device is not required as above, provided that | possession of the device is not required as above, provided that | |||
there is some way to force a factory reset. With some consumers | there is some way to force a factory reset. With some consumer | |||
devices with low overall implementation quality, the end users might | devices that have low overall implementation quality, end users might | |||
be familiar with needing to reset the device regularly. | be familiar with the need to reset the device regularly. | |||
The authors are unable to come up with an attack scenario where a | The authors are unable to come up with an attack scenario where a | |||
compromised voucher signature enables an attacker to introduce a | compromised voucher signature enables an attacker to introduce a | |||
compromised pledge into an existing operator's network. This is the | compromised pledge into an existing operator's network. This is the | |||
case because the operator controls the communication between | case because the operator controls the communication between | |||
Registrar and MASA, and there is no opportunity to introduce the fake | registrar and MASA, and there is no opportunity to introduce the fake | |||
voucher through that conduit. | voucher through that conduit. | |||
11.6.2.2. Risks after key compromise is known | 11.6.2.2. Risks after Key Compromise is Known | |||
Once the operator of the MASA realizes that the voucher signing key | Once the operator of the MASA realizes that the voucher signing key | |||
has been compromised it has to do a few things. | has been compromised, it has to do a few things. | |||
First, it MUST issue a firmware update to all devices that had that | 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 | key as a trust anchor, such that they will no longer trust vouchers | |||
from that key. This will affect devices in the field which are | from that key. This will affect devices in the field that are | |||
operating, but those devices, being in operation, are not performing | operating, but those devices, being in operation, are not performing | |||
onboarding operations, so this is not a critical patch. | onboarding operations, so this is not a critical patch. | |||
Devices in boxes (in warehouses) are vulnerable, and remain | Devices in boxes (in warehouses) are vulnerable and remain vulnerable | |||
vulnerable until patched. An operator would be prudent to unbox the | until patched. An operator would be prudent to unbox the devices, | |||
devices, onboard them in a safe environment, and then perform | onboard them in a safe environment, and then perform firmware | |||
firmware updates. This does not have to be done by the end-operator; | updates. This does not have to be done by the end-operator; it could | |||
it could be done by a distributor that stores the spares. A | be done by a distributor that stores the spares. A recommended | |||
recommended practice for high value devices (which typically have a | practice for high-value devices (which typically have a <4hr service | |||
<4hr service window) may be to validate the device operation on a | window) may be to validate the device operation on a regular basis | |||
regular basis anyway. | anyway. | |||
If the onboarding process includes attestations about firmware | If the onboarding process includes attestations about firmware | |||
versions, then through that process the operator would be advised to | versions, then through that process, the operator would be advised to | |||
upgrade the firmware before going into production. Unfortunately, | upgrade the firmware before going into production. Unfortunately, | |||
this does not help against situations where the attacker operates | this does not help against situations where the attacker operates | |||
their own Registrar (as listed above). | their own registrar (as listed above). | |||
[RFC8366] section 6.1 explains the need for short-lived vouchers. | The need for short-lived vouchers is explained in [RFC8366], | |||
The nonce guarantees freshness, and the short-lived nature of the | Section 6.1. The nonce guarantees freshness, and the short-lived | |||
voucher means that the window to deliver a fake voucher is very | nature of the voucher means that the window to deliver a fake voucher | |||
short. A nonceless, long-lived voucher would be the only option for | is very short. A nonceless, long-lived voucher would be the only | |||
the attacker, and devices in the warehouse would be vulnerable to | option for the attacker, and devices in the warehouse would be | |||
such a thing. | vulnerable to such a thing. | |||
A key operational recommendation is for manufacturers to sign | A key operational recommendation is for manufacturers to sign | |||
nonceless, long-lived vouchers with a different key that they sign | nonceless, long-lived vouchers with a different key than what is used | |||
short-lived vouchers. That key needs significantly better | to sign short-lived vouchers. That key needs significantly better | |||
protection. If both keys come from a common trust-anchor (the | protection. If both keys come from a common trust-anchor (the | |||
manufacturer's CA), then a compromise of the manufacturer's CA would | manufacturer's CA), then a compromise of the manufacturer's CA would | |||
compromise both keys. Such a compromise of the manufacturer's CA | compromise both keys. Such a compromise of the manufacturer's CA | |||
likely compromises all keys outlined in this section. | likely compromises all keys outlined in this section. | |||
11.6.3. Compromise of MASA web service | 11.6.3. Compromise of MASA Web Service | |||
An attacker that takes over the MASA web service has a number of | An attacker that takes over the MASA web service can inflict a number | |||
attacks. The most obvious one is simply to take the database listing | of attacks. The most obvious one is simply to take the database | |||
customers and devices and to sell this data to other attackers who | listing of customers and devices and sell the data to other attackers | |||
will now know where to find potentially vulnerable devices. | who will now know where to find potentially vulnerable devices. | |||
The second most obvious thing that the attacker can do is to kill the | The second most obvious thing that the attacker can do is to kill the | |||
service, or make it operate unreliably, making customers frustrated. | service, or make it operate unreliably, making customers frustrated. | |||
This could have a serious affect on ability to deploy new services by | This could have a serious effect on the ability to deploy new | |||
customers, and would be a significant issue during disaster recovery. | services by customers and would be a significant issue during | |||
disaster recovery. | ||||
While the compromise of the MASA web service may lead to the | While the compromise of the MASA web service may lead to the | |||
compromise of the MASA voucher signing key, if the signing occurs | compromise of the MASA voucher signing key, if the signing occurs | |||
offboard (such as in a hardware signing module, HSM), then the key | offboard (such as in a hardware signing module (HSM)), then the key | |||
may well be safe, but control over it resides with the attacker. | may well be safe, but control over it resides with the attacker. | |||
Such an attacker can issue vouchers for any device presently in | Such an attacker can issue vouchers for any device presently in | |||
service. Said device still needs to be convinced to do through a | service. Said device still needs to be convinced to go through a | |||
factory reset process before an attack. | factory reset process before an attack. | |||
If the attacker has access to a key that is trusted for long-lived | If the attacker has access to a key that is trusted for long-lived | |||
nonceless vouchers, then they could issue vouchers for devices which | nonceless vouchers, then they could issue vouchers for devices that | |||
are not yet in service. This attack may be very hard to verify and | are not yet in service. This attack may be very hard to verify as it | |||
as it would involve doing firmware updates on every device in | would involve doing firmware updates on every device in warehouses (a | |||
warehouses (a potentially ruinously expensive process), a | potentially ruinously expensive process); a manufacturer might be | |||
manufacturer might be reluctant to admit this possibility. | reluctant to admit this possibility. | |||
11.7. YANG Module Security Considerations | 11.7. YANG Module Security Considerations | |||
As described in the Security Considerations section of [RFC8366] | As described in Section 7.4 (Security Considerations) of [RFC8366], | |||
(section 7.4), the YANG module specified in this document defines the | the YANG module specified in this document defines the schema for | |||
schema for data that is subsequently encapsulated by a CMS signed- | data that is subsequently encapsulated by a CMS signed-data content | |||
data content type, as described in Section 5 of [RFC5652]. As such, | type, as described in Section 5 of [RFC5652]. As such, all of the | |||
all of the YANG modeled data is protected from modification. | YANG-modeled data is protected from modification. | |||
The use of YANG to define data structures, via the 'yang-data' | The use of YANG to define data structures, via the "yang-data" | |||
statement, is relatively new and distinct from the traditional use of | statement, is relatively new and distinct from the traditional use of | |||
YANG to define an API accessed by network management protocols such | YANG to define an API accessed by network management protocols such | |||
as NETCONF [RFC6241] and RESTCONF [RFC8040]. For this reason, these | as NETCONF [RFC6241] and RESTCONF [RFC8040]. For this reason, these | |||
guidelines do not follow template described by Section 3.7 of | guidelines do not follow the template described by Section 3.7 of | |||
[RFC8407]. | [RFC8407]. | |||
12. Acknowledgements | 12. References | |||
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 Arko, Christian Huitema and | ||||
Russ Housley. | ||||
Henk Birkholz contributed the CDDL for the audit log response. | ||||
This document started it's life as a two-page idea from Steinthor | ||||
Bjarnason. | ||||
In addition, significant review comments were received by many IESG | ||||
members, including Adam Roach, Alexey Melnikov, Alissa Cooper, | ||||
Benjamin Kaduk, Eric Vyncke, Roman Danyliw, and Magnus Westerlund. | ||||
13. References | ||||
13.1. Normative References | ||||
[I-D.ietf-anima-autonomic-control-plane] | ||||
Eckert, T., Behringer, M., and S. Bjarnason, "An Autonomic | ||||
Control Plane (ACP)", Work in Progress, Internet-Draft, | ||||
draft-ietf-anima-autonomic-control-plane-30, 30 October | ||||
2020, <http://www.ietf.org/internet-drafts/draft-ietf- | ||||
anima-autonomic-control-plane-30.txt>. | ||||
[I-D.ietf-anima-grasp] | 12.1. Normative References | |||
Bormann, C., Carpenter, B., and B. Liu, "A Generic | ||||
Autonomic Signaling Protocol (GRASP)", Work in Progress, | ||||
Internet-Draft, draft-ietf-anima-grasp-15, 13 July 2017, | ||||
<http://www.ietf.org/internet-drafts/draft-ietf-anima- | ||||
grasp-15.txt>. | ||||
[IDevID] "IEEE 802.1AR Secure Device Identifier", December 2009, | [IDevID] IEEE, "IEEE Standard for Local and metropolitan area | |||
<http://standards.ieee.org/findstds/standard/802.1AR- | networks - Secure Device Identity", IEEE 802.1AR, | |||
2009.html>. | <https://1.ieee802.org/security/802-1ar>. | |||
[ITU.X690.1994] | [ITU.X690] ITU-T, "Information Technology - ASN.1 encoding rules: | |||
International Telecommunications Union, "Information | Specification of Basic Encoding Rules (BER), Canonical | |||
Technology - ASN.1 encoding rules: Specification of Basic | Encoding Rules (CER) and Distinguished Encoding Rules | |||
Encoding Rules (BER), Canonical Encoding Rules (CER) and | (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1:2015, | |||
Distinguished Encoding Rules (DER)", ITU-T Recommendation | August 2015, <https://www.itu.int/rec/T-REC-X.690>. | |||
X.690, 1994. | ||||
[REST] Fielding, R.F., "Architectural Styles and the Design of | [REST] Fielding, R.F., "Architectural Styles and the Design of | |||
Network-based Software Architectures", 2000, | Network-based Software Architectures", 2000, | |||
<http://www.ics.uci.edu/~fielding/pubs/dissertation/ | <http://www.ics.uci.edu/~fielding/pubs/dissertation/ | |||
top.htm>. | fielding_dissertation.pdf>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | |||
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | |||
<https://www.rfc-editor.org/info/rfc3339>. | <https://www.rfc-editor.org/info/rfc3339>. | |||
skipping to change at page 96, line 19 ¶ | skipping to change at line 4358 ¶ | |||
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | |||
Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | |||
<https://www.rfc-editor.org/info/rfc4648>. | <https://www.rfc-editor.org/info/rfc4648>. | |||
[RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless | |||
Address Autoconfiguration", RFC 4862, | Address Autoconfiguration", RFC 4862, | |||
DOI 10.17487/RFC4862, September 2007, | DOI 10.17487/RFC4862, September 2007, | |||
<https://www.rfc-editor.org/info/rfc4862>. | <https://www.rfc-editor.org/info/rfc4862>. | |||
[RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy | ||||
Extensions for Stateless Address Autoconfiguration in | ||||
IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007, | ||||
<https://www.rfc-editor.org/info/rfc4941>. | ||||
[RFC5272] Schaad, J. and M. Myers, "Certificate Management over CMS | [RFC5272] Schaad, J. and M. Myers, "Certificate Management over CMS | |||
(CMC)", RFC 5272, DOI 10.17487/RFC5272, June 2008, | (CMC)", RFC 5272, DOI 10.17487/RFC5272, June 2008, | |||
<https://www.rfc-editor.org/info/rfc5272>. | <https://www.rfc-editor.org/info/rfc5272>. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
<https://www.rfc-editor.org/info/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
skipping to change at page 98, line 36 ¶ | skipping to change at line 4463 ¶ | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | |||
Definition Language (CDDL): A Notational Convention to | Definition Language (CDDL): A Notational Convention to | |||
Express Concise Binary Object Representation (CBOR) and | Express Concise Binary Object Representation (CBOR) and | |||
JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | |||
June 2019, <https://www.rfc-editor.org/info/rfc8610>. | June 2019, <https://www.rfc-editor.org/info/rfc8610>. | |||
13.2. Informative References | [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>. | ||||
[brewski] "Urban Dictionary: Brewski", October 2019, | [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>. | <https://www.urbandictionary.com/define.php?term=brewski>. | |||
[cabforumaudit] | [cabforumaudit] | |||
"Information for Auditors and Assessors", August 2019, | CA/Browser Forum, "Information for Auditors and | |||
<https://cabforum.org/information-for-auditors-and- | Assessors", August 2019, <https://cabforum.org/ | |||
assessors/>. | information-for-auditors-and-assessors/>. | |||
[Dingledine2004] | [Dingledine] | |||
Dingledine, R., Mathewson, N., and P. Syverson, "Tor: the | Dingledine, R., Mathewson, N., and P. Syverson, "Tor: The | |||
second-generation onion router", 2004, | Second-Generation Onion Router", August 2004, | |||
<https://spec.torproject.org/tor-spec>. | <https://svn-archive.torproject.org/svn/projects/design- | |||
paper/tor-design.pdf>. | ||||
[dnssecroot] | [dnssecroot] | |||
"DNSSEC Practice Statement for the Root Zone ZSK | "DNSSEC Practice Statement for the Root Zone ZSK | |||
Operator", December 2017, | Operator", December 2017, | |||
<https://www.iana.org/dnssec/dps/zsk-operator/dps-zsk- | <https://www.iana.org/dnssec/procedures/zsk-operator/dps- | |||
operator-v2.0.pdf>. | zsk-operator-v2.1.pdf>. | |||
[docsisroot] | [docsisroot] | |||
"CableLabs Digital Certificate Issuance Service", February | "CableLabs Digital Certificate Issuance Service", February | |||
2018, <https://www.cablelabs.com/resources/digital- | 2018, <https://www.cablelabs.com/resources/digital- | |||
certificate-issuance-service/>. | certificate-issuance-service/>. | |||
[I-D.ietf-ace-coap-est] | ||||
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, <http://www.ietf.org/internet-drafts/draft-ietf-ace- | ||||
coap-est-18.txt>. | ||||
[I-D.ietf-anima-constrained-voucher] | ||||
Richardson, M., Stok, P., and P. Kampanakis, "Constrained | ||||
Voucher Artifacts for Bootstrapping Protocols", Work in | ||||
Progress, Internet-Draft, draft-ietf-anima-constrained- | ||||
voucher-09, 2 November 2020, <http://www.ietf.org/ | ||||
internet-drafts/draft-ietf-anima-constrained-voucher- | ||||
09.txt>. | ||||
[I-D.ietf-anima-reference-model] | ||||
Behringer, M., Carpenter, B., Eckert, T., Ciavaglia, L., | ||||
and J. Nobre, "A Reference Model for Autonomic | ||||
Networking", Work in Progress, Internet-Draft, draft-ietf- | ||||
anima-reference-model-10, 22 November 2018, | ||||
<http://www.ietf.org/internet-drafts/draft-ietf-anima- | ||||
reference-model-10.txt>. | ||||
[I-D.ietf-netconf-keystore] | ||||
Watsen, K., "A YANG Data Model for a Keystore", Work in | ||||
Progress, Internet-Draft, draft-ietf-netconf-keystore-20, | ||||
20 August 2020, <http://www.ietf.org/internet-drafts/ | ||||
draft-ietf-netconf-keystore-20.txt>. | ||||
[I-D.richardson-anima-state-for-joinrouter] | ||||
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, <http://www.ietf.org/ | ||||
internet-drafts/draft-richardson-anima-state-for- | ||||
joinrouter-03.txt>. | ||||
[imprinting] | [imprinting] | |||
"Wikipedia article: Imprinting", July 2015, | Wikipedia, "Imprinting (psychology)", January 2021, | |||
<https://en.wikipedia.org/wiki/Imprinting_(psychology)>. | <https://en.wikipedia.org/w/ | |||
index.php?title=Imprinting_(psychology)&=999211441>. | ||||
[IoTstrangeThings] | [IoTstrangeThings] | |||
"IoT of toys stranger than fiction: Cybersecurity and data | ESET, "IoT of toys stranger than fiction: Cybersecurity | |||
privacy update (accessed 2018-12-02)", March 2017, | and data privacy update", March 2017, | |||
<https://www.welivesecurity.com/2017/03/03/internet-of- | <https://www.welivesecurity.com/2017/03/03/internet-of- | |||
things-security-privacy-iot-update/>. | things-security-privacy-iot-update/>. | |||
[livingwithIoT] | [livingwithIoT] | |||
"What is it actually like to live in a house filled with | Silicon Republic, "What is it actually like to live in a | |||
IoT devices? (accessed 2018-12-02)", February 2018, | house filled with IoT devices?", February 2018, | |||
<https://www.siliconrepublic.com/machines/iot-smart- | <https://www.siliconrepublic.com/machines/iot-smart- | |||
devices-reality>. | devices-reality>. | |||
[minerva] Richardsdon, M., "Minerva reference implementation for | [minerva] Richardson, M., "Minerva reference implementation for | |||
BRSKI", 2020, <https://minerva.sandelman.ca/>. | BRSKI", 2020, <https://minerva.sandelman.ca/>. | |||
[minervagithub] | [minervagithub] | |||
Richardsdon, M., "GITHUB hosting of Minerva reference | "ANIMA Minerva toolkit", | |||
code", 2020, <https://github.com/ANIMAgus-minerva>. | <https://github.com/ANIMAgus-minerva>. | |||
[openssl] "OpenSSL X509 utility", September 2019, | [openssl] OpenSSL, "OpenSSL X509 Utility", September 2019, | |||
<https://www.openssl.org/docs/man1.1.1/man1/openssl- | <https://www.openssl.org/docs/man1.1.1/man1/openssl- | |||
x509.html/>. | 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 | [RFC2663] Srisuresh, P. and M. Holdrege, "IP Network Address | |||
Translator (NAT) Terminology and Considerations", | Translator (NAT) Terminology and Considerations", | |||
RFC 2663, DOI 10.17487/RFC2663, August 1999, | RFC 2663, DOI 10.17487/RFC2663, August 1999, | |||
<https://www.rfc-editor.org/info/rfc2663>. | <https://www.rfc-editor.org/info/rfc2663>. | |||
[RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, K., and J. | [RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, K., and J. | |||
Tardo, "Network Endpoint Assessment (NEA): Overview and | Tardo, "Network Endpoint Assessment (NEA): Overview and | |||
Requirements", RFC 5209, DOI 10.17487/RFC5209, June 2008, | Requirements", RFC 5209, DOI 10.17487/RFC5209, June 2008, | |||
<https://www.rfc-editor.org/info/rfc5209>. | <https://www.rfc-editor.org/info/rfc5209>. | |||
[RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known | ||||
Uniform Resource Identifiers (URIs)", RFC 5785, | ||||
DOI 10.17487/RFC5785, April 2010, | ||||
<https://www.rfc-editor.org/info/rfc5785>. | ||||
[RFC6960] Santesson, S., Myers, M., Ankney, R., Malpani, A., | [RFC6960] Santesson, S., Myers, M., Ankney, R., Malpani, A., | |||
Galperin, S., and C. Adams, "X.509 Internet Public Key | Galperin, S., and C. Adams, "X.509 Internet Public Key | |||
Infrastructure Online Certificate Status Protocol - OCSP", | Infrastructure Online Certificate Status Protocol - OCSP", | |||
RFC 6960, DOI 10.17487/RFC6960, June 2013, | RFC 6960, DOI 10.17487/RFC6960, June 2013, | |||
<https://www.rfc-editor.org/info/rfc6960>. | <https://www.rfc-editor.org/info/rfc6960>. | |||
[RFC6961] Pettersen, Y., "The Transport Layer Security (TLS) | [RFC6961] Pettersen, Y., "The Transport Layer Security (TLS) | |||
Multiple Certificate Status Request Extension", RFC 6961, | Multiple Certificate Status Request Extension", RFC 6961, | |||
DOI 10.17487/RFC6961, June 2013, | DOI 10.17487/RFC6961, June 2013, | |||
<https://www.rfc-editor.org/info/rfc6961>. | <https://www.rfc-editor.org/info/rfc6961>. | |||
skipping to change at page 101, line 29 ¶ | skipping to change at line 4606 ¶ | |||
[RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | |||
Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | |||
December 2014, <https://www.rfc-editor.org/info/rfc7435>. | December 2014, <https://www.rfc-editor.org/info/rfc7435>. | |||
[RFC7575] Behringer, M., Pritikin, M., Bjarnason, S., Clemm, A., | [RFC7575] Behringer, M., Pritikin, M., Bjarnason, S., Clemm, A., | |||
Carpenter, B., Jiang, S., and L. Ciavaglia, "Autonomic | Carpenter, B., Jiang, S., and L. Ciavaglia, "Autonomic | |||
Networking: Definitions and Design Goals", RFC 7575, | Networking: Definitions and Design Goals", RFC 7575, | |||
DOI 10.17487/RFC7575, June 2015, | DOI 10.17487/RFC7575, June 2015, | |||
<https://www.rfc-editor.org/info/rfc7575>. | <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", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8340>. | <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] | [slowloris] | |||
"Slowloris (computer security)", February 2019, | Wikipedia, "Slowloris (computer security)", January 2021, | |||
<https://en.wikipedia.org/wiki/ | <https://en.wikipedia.org/w/index.php?title=Slowloris_(com | |||
Slowloris_(computer_security)/>. | puter_security)&oldid=1001473290/>. | |||
[softwareescrow] | [softwareescrow] | |||
"Wikipedia article: Software Escrow", October 2019, | Wikipedia, "Source code escrow", March 2020, | |||
<https://en.wikipedia.org/wiki/Source_code_escrow>. | <https://en.wikipedia.org/w/ | |||
index.php?title=Source_code_escrow)&oldid=948073074>. | ||||
[Stajano99theresurrecting] | [Stajano99theresurrecting] | |||
Stajano, F. and R. Anderson, "The resurrecting duckling: | Stajano, F. and R. Anderson, "The Resurrecting Duckling: | |||
security issues for ad-hoc wireless networks", 1999, | Security Issues for Ad-hoc Wireless Networks", 1999, | |||
<https://www.cl.cam.ac.uk/~fms27/papers/1999-StajanoAnd- | <https://www.cl.cam.ac.uk/~fms27/papers/1999-StajanoAnd- | |||
duckling.pdf>. | duckling.pdf>. | |||
[TR069] "TR-69: CPE WAN Management Protocol", February 2018, | [TR069] Broadband Forum, "CPE WAN Management Protocol", TR-069, | |||
<https://www.broadband-forum.org/standards-and-software/ | Issue 1, Amendment 6, March 2018, <https://www.broadband- | |||
technical-specifications/tr-069-files-tools>. | forum.org/download/TR-069_Amendment-6.pdf>. | |||
[W3C.WD-capability-urls-20140218] | [W3C.capability-urls] | |||
Tennison, J., "Good Practices for Capability URLs", World | Tennison, J., "Good Practices for Capability URLs", W3C | |||
Wide Web Consortium WD WD-capability-urls-20140218, 18 | First Public Working Draft, World Wide Web Consortium WD | |||
February 2014, | WD-capability-urls-20140218, February 2014, | |||
<https://www.w3.org/TR/2014/WD-capability-urls-20140218>. | <https://www.w3.org/TR/2014/WD-capability-urls>. | |||
Appendix A. IPv4 and non-ANI operations | [YANG-KEYSTORE] | |||
Watsen, K., "A YANG Data Model for a Keystore", Work in | ||||
Progress, Internet-Draft, draft-ietf-netconf-keystore-21, | ||||
10 February 2021, <https://tools.ietf.org/html/draft-ietf- | ||||
netconf-keystore-21>. | ||||
The specification of BRSKI in Section 4 intentionally only covers the | Appendix A. IPv4 and Non-ANI Operations | |||
mechanisms for an IPv6 pledge using Link-Local addresses. This | ||||
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 | section describes non-normative extensions that can be used in other | |||
environments. | environments. | |||
A.1. IPv4 Link Local addresses | A.1. IPv4 Link-Local Addresses | |||
Instead of an IPv6 link-local address, an IPv4 address may be | Instead of an IPv6 link-local address, an IPv4 address may be | |||
generated using [RFC3927] Dynamic Configuration of IPv4 Link-Local | generated using "Dynamic Configuration of IPv4 Link-Local Addresses" | |||
Addresses. | [RFC3927]. | |||
In the case that an IPv4 Link-Local address is formed, then the | In the case where an IPv4 link-local address is formed, the bootstrap | |||
bootstrap process would continue as in the IPv6 case by looking for a | process would continue, as in an IPv6 case, by looking for a | |||
(circuit) proxy. | (circuit) proxy. | |||
A.2. Use of DHCPv4 | A.2. Use of DHCPv4 | |||
The Pledge MAY obtain an IP address via DHCP [RFC2131]. The DHCP | The pledge MAY obtain an IP address via DHCP ([RFC2131]. The DHCP- | |||
provided parameters for the Domain Name System can be used to perform | provided parameters for the Domain Name System can be used to perform | |||
DNS operations if all local discovery attempts fail. | DNS operations if all local discovery attempts fail. | |||
Appendix B. mDNS / DNSSD proxy discovery options | Appendix B. mDNS / DNS-SD Proxy Discovery Options | |||
Pledge discovery of the proxy (Section 4.1) MAY be performed with | Pledge discovery of the proxy (Section 4.1) MAY be performed with | |||
DNS-based Service Discovery [RFC6763] over Multicast DNS [RFC6762] to | DNS-based Service Discovery [RFC6763] over Multicast DNS [RFC6762] to | |||
discover the proxy at "_brski-proxy._tcp.local.". | discover the proxy at "_brski-proxy._tcp.local.". | |||
Proxy discovery of the registrar (Section 4.3) MAY be performed with | Proxy discovery of the registrar (Section 4.3) MAY be performed with | |||
DNS-based Service Discovery over Multicast DNS to discover registrars | DNS-based Service Discovery over Multicast DNS to discover registrars | |||
by searching for the service "_brski-registrar._tcp.local.". | by searching for the service "_brski-registrar._tcp.local.". | |||
To prevent unaccceptable levels of network traffic, when using mDNS, | To prevent unacceptable levels of network traffic, when using mDNS, | |||
the congestion avoidance mechanisms specified in [RFC6762] section 7 | the congestion avoidance mechanisms specified in [RFC6762], Section 7 | |||
MUST be followed. The pledge SHOULD listen for an unsolicited | MUST be followed. The pledge SHOULD listen for an unsolicited | |||
broadcast response as described in [RFC6762]. This allows devices to | broadcast response as described in [RFC6762]. This allows devices to | |||
avoid announcing their presence via mDNS broadcasts and instead | avoid announcing their presence via mDNS broadcasts and instead | |||
silently join a network by watching for periodic unsolicited | silently join a network by watching for periodic unsolicited | |||
broadcast responses. | broadcast responses. | |||
Discovery of registrar MAY also be performed with DNS-based service | Discovery of the registrar MAY also be performed with DNS-based | |||
discovery by searching for the service "_brski- | Service Discovery by searching for the service "_brski- | |||
registrar._tcp.example.com". In this case the domain "example.com" | registrar._tcp.example.com". In this case, the domain "example.com" | |||
is discovered as described in [RFC6763] section 11 (Appendix A.2 | is discovered as described in [RFC6763], Section 11 (Appendix A.2 of | |||
suggests the use of DHCP parameters). | this document suggests the use of DHCP parameters). | |||
If no local proxy or registrar service is located using the GRASP | If no local proxy or registrar service is located using the GRASP | |||
mechanisms or the above mentioned DNS-based Service Discovery | mechanisms or the above-mentioned DNS-based Service Discovery | |||
methods, the pledge MAY contact a well known manufacturer provided | methods, the pledge MAY contact a well-known manufacturer-provided | |||
bootstrapping server by performing a DNS lookup using a well known | bootstrapping server by performing a DNS lookup using a well-known | |||
URI such as "brski-registrar.manufacturer.example.com". The details | URI such as "brski-registrar.manufacturer.example.com". The details | |||
of the URI are manufacturer specific. Manufacturers that leverage | of the URI are manufacturer specific. Manufacturers that leverage | |||
this method on the pledge are responsible for providing the registrar | this method on the pledge are responsible for providing the registrar | |||
service. Also see Section 2.7. | service. Also see Section 2.7. | |||
The current DNS services returned during each query are maintained | The current DNS services returned during each query are maintained | |||
until bootstrapping is completed. If bootstrapping fails and the | until bootstrapping is completed. If bootstrapping fails and the | |||
pledge returns to the Discovery state, it picks up where it left off | pledge returns to the Discovery state, it picks up where it left off | |||
and continues attempting bootstrapping. For example, if the first | and continues attempting bootstrapping. For example, if the first | |||
Multicast DNS _bootstrapks._tcp.local response doesn't work then the | Multicast DNS _bootstrapks._tcp.local response doesn't work, then the | |||
second and third responses are tried. If these fail the pledge moves | second and third responses are tried. If these fail, the pledge | |||
on to normal DNS-based Service Discovery. | moves on to normal DNS-based Service Discovery. | |||
Appendix C. Example Vouchers | Appendix C. Example Vouchers | |||
Three entities are involved in a voucher: the MASA issues (signs) it, | Three entities are involved in a voucher: the MASA issues (signs) it, | |||
the registrar's public key is mentioned in the voucher, and the | the registrar's public key is mentioned in it, and the pledge | |||
pledge validates it. In order to provide reproduceable examples the | validates it. In order to provide reproducible examples, the public | |||
public and private keys for an example MASA and registrar are first | and private keys for an example MASA and registrar are listed first. | |||
listed. | ||||
The keys come from an open source reference implementation of BRSKI, | The keys come from an open source reference implementation of BRSKI, | |||
called "Minerva" [minerva]. It is available on github | called "Minerva" [minerva]. It is available on GitHub | |||
[minervagithub]. The keys presented here are used in the unit and | [minervagithub]. The keys presented here are used in the unit and | |||
integration tests. The MASA code is called "highway", the Registrar | integration tests. The MASA code is called "highway", the registrar | |||
code is called "fountain", and the example client is called "reach". | code is called "fountain", and the example client is called "reach". | |||
The public key components of each are presented as both base64 | The public key components of each are presented as base64 | |||
certificates, as well as being decoded by openssl's x509 utility so | certificates and are decoded by openssl's x509 utility so that the | |||
that the extensions can be seen. This was version 1.1.1c of the | extensions can be seen. This was version 1.1.1c of the library and | |||
[openssl] library and utility. | utility of [openssl]. | |||
C.1. Keys involved | C.1. Keys Involved | |||
The Manufacturer has a Certificate Authority that signs the pledge's | The manufacturer has a CA that signs the pledge's IDevID. In | |||
IDevID. In addition the Manufacturer's signing authority (the MASA) | addition, the Manufacturer's signing authority (the MASA) signs the | |||
signs the vouchers, and that certificate must distributed to the | vouchers, and that certificate must distributed to the devices at | |||
devices at manufacturing time so that vouchers can be validated. | manufacturing time so that vouchers can be validated. | |||
C.1.1. Manufacturer Certificate Authority for IDevID signatures | C.1.1. Manufacturer Certification Authority for IDevID Signatures | |||
This private key is Certificate Authority that signs IDevID | This private key is the CA that signs IDevID certificates: | |||
certificates: | ||||
<CODE BEGINS> file "vendor.key" | <CODE BEGINS> file "vendor.key" | |||
-----BEGIN EC PRIVATE KEY----- | -----BEGIN EC PRIVATE KEY----- | |||
MIGkAgEBBDCAYkoLW1IEA5SKKhMMdkTK7sJxk5ybKqYq9Yr5aR7tNwqXyLGS7z8G | MIGkAgEBBDCAYkoLW1IEA5SKKhMMdkTK7sJxk5ybKqYq9Yr5aR7tNwqXyLGS7z8G | |||
8S4w/UJ58BqgBwYFK4EEACKhZANiAAQu5/yktJbFLjMC87h7b+yTreFuF8GwewKH | 8S4w/UJ58BqgBwYFK4EEACKhZANiAAQu5/yktJbFLjMC87h7b+yTreFuF8GwewKH | |||
L4mS0r0dVAQubqDUQcTrjvpXrXCpTojiLCzgp8fzkcUDkZ9LD/M90LDipiLNIOkP | L4mS0r0dVAQubqDUQcTrjvpXrXCpTojiLCzgp8fzkcUDkZ9LD/M90LDipiLNIOkP | |||
juF8QkoAbT8pMrY83MS8y76wZ7AalNQ= | juF8QkoAbT8pMrY83MS8y76wZ7AalNQ= | |||
-----END EC PRIVATE KEY----- | -----END EC PRIVATE KEY----- | |||
<CODE ENDS> | <CODE ENDS> | |||
This public key validates IDevID certificates: | This public key validates IDevID certificates: | |||
file: examples/vendor.key | file: examples/vendor.key | |||
<CODE BEGINS> file "vendor.cert" | <CODE BEGINS> file "vendor.cert" | |||
Certificate: | Certificate: | |||
Data: | Data: | |||
Version: 3 (0x2) | Version: 3 (0x2) | |||
Serial Number: 519772114 (0x1efb17d2) | Serial Number: 1216069925 (0x487bc125) | |||
Signature Algorithm: ecdsa-with-SHA256 | Signature Algorithm: ecdsa-with-SHA256 | |||
Issuer: C = Canada, ST = Ontario, OU = Sandelman, CN = highway-test.example.com CA | Issuer: CN = highway-test.example.com CA | |||
Validity | Validity | |||
Not Before: Feb 12 22:22:21 2019 GMT | Not Before: Apr 13 20:34:24 2021 GMT | |||
Not After : Feb 11 22:22:21 2021 GMT | Not After : Apr 13 20:34:24 2023 GMT | |||
Subject: C = Canada, ST = Ontario, OU = Sandelman, CN = highway-test.example.com CA | Subject: CN = highway-test.example.com CA | |||
Subject Public Key Info: | Subject Public Key Info: | |||
Public Key Algorithm: id-ecPublicKey | Public Key Algorithm: id-ecPublicKey | |||
Public-Key: (384 bit) | Public-Key: (384 bit) | |||
pub: | pub: | |||
04:2e:e7:fc:a4:b4:96:c5:2e:33:02:f3:b8:7b:6f: | 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: | 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: | 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: | 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: | 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: | e1:7c:42:4a:00:6d:3f:29:32:b6:3c:dc:c4:bc:cb: | |||
be:b0:67:b0:1a:94:d4 | be:b0:67:b0:1a:94:d4 | |||
ASN1 OID: secp384r1 | ASN1 OID: secp384r1 | |||
NIST CURVE: P-384 | NIST CURVE: P-384 | |||
X509v3 extensions: | X509v3 extensions: | |||
X509v3 Basic Constraints: critical | X509v3 Basic Constraints: critical | |||
CA:TRUE | CA:TRUE | |||
X509v3 Key Usage: critical | X509v3 Key Usage: critical | |||
Certificate Sign, CRL Sign | Certificate Sign, CRL Sign | |||
X509v3 Subject Key Identifier: | X509v3 Subject Key Identifier: | |||
5E:0C:A9:52:5A:8C:DF:A9:0F:03:14:E9:96:F1:80:76: | ||||
5E:0C:A9:52:5A:8C:DF:A9:0F:03:14:E9:96:F1:80:76:8C:53:8A:08 | 8C:53:8A:08 | |||
X509v3 Authority Key Identifier: | 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 | 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 | Signature Algorithm: ecdsa-with-SHA256 | |||
30:65:02:30:5f:21:fd:c6:ab:d6:94:a6:cd:ca:37:2c:81:33: | 30:64:02:30:60:37:a0:66:89:80:27:e1:0d:e5:43:9a:62:f1: | |||
87:fe:7b:e1:b5:1a:e8:6c:05:43:a6:8b:4e:22:b5:55:e9:48: | 02:bc:0f:72:6d:a9:e9:cb:84:a5:c6:44:d3:41:9e:5d:ce:7d: | |||
0c:b5:97:f3:c9:1a:65:d9:97:4b:f0:21:86:0d:cb:26:02:31: | 46:16:6e:15:de:f7:cc:e8:3e:61:f9:03:7c:20:c4:b7:02:30: | |||
00:e3:2d:0d:08:49:4d:a3:f5:dc:57:1f:a7:13:26:a4:e0:d6: | 7f:e9:f3:12:bb:06:c6:24:00:2b:41:aa:21:6b:d8:25:ed:81: | |||
3a:c2:d5:4a:50:83:62:26:2e:79:2b:d0:a5:ee:66:d5:bf:16: | 07:11:ef:66:8f:06:bf:c8:be:f0:58:74:24:45:39:4d:04:fc: | |||
9a:33:75:b4:d1:8d:ba:d3:50:77:6b:92:df | 31:69:6f:cf:db:fe:61:7b:c3:24:31:ff | |||
-----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
MIICTDCCAdKgAwIBAgIEHvsX0jAKBggqhkjOPQQDAjBdMQ8wDQYDVQQGEwZDYW5h | MIIB3TCCAWSgAwIBAgIESHvBJTAKBggqhkjOPQQDAjAmMSQwIgYDVQQDDBtoaWdo | |||
ZGExEDAOBgNVBAgMB09udGFyaW8xEjAQBgNVBAsMCVNhbmRlbG1hbjEkMCIGA1UE | d2F5LXRlc3QuZXhhbXBsZS5jb20gQ0EwHhcNMjEwNDEzMjAzNDI0WhcNMjMwNDEz | |||
AwwbaGlnaHdheS10ZXN0LmV4YW1wbGUuY29tIENBMB4XDTE5MDIxMjIyMjIyMVoX | MjAzNDI0WjAmMSQwIgYDVQQDDBtoaWdod2F5LXRlc3QuZXhhbXBsZS5jb20gQ0Ew | |||
DTIxMDIxMTIyMjIyMVowXTEPMA0GA1UEBhMGQ2FuYWRhMRAwDgYDVQQIDAdPbnRh | djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQu5/yktJbFLjMC87h7b+yTreFuF8GwewKH | |||
cmlvMRIwEAYDVQQLDAlTYW5kZWxtYW4xJDAiBgNVBAMMG2hpZ2h3YXktdGVzdC5l | L4mS0r0dVAQubqDUQcTrjvpXrXCpTojiLCzgp8fzkcUDkZ9LD/M90LDipiLNIOkP | |||
eGFtcGxlLmNvbSBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABC7n/KS0lsUuMwLz | juF8QkoAbT8pMrY83MS8y76wZ7AalNSjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYD | |||
uHtv7JOt4W4XwbB7AocviZLSvR1UBC5uoNRBxOuO+letcKlOiOIsLOCnx/ORxQOR | VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBReDKlSWozfqQ8DFOmW8YB2jFOKCDAfBgNV | |||
n0sP8z3QsOKmIs0g6Q+O4XxCSgBtPykytjzcxLzLvrBnsBqU1KNjMGEwDwYDVR0T | HSMEGDAWgBReDKlSWozfqQ8DFOmW8YB2jFOKCDAKBggqhkjOPQQDAgNnADBkAjBg | |||
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFF4MqVJajN+pDwMU | N6BmiYAn4Q3lQ5pi8QK8D3JtqenLhKXGRNNBnl3OfUYWbhXe98zoPmH5A3wgxLcC | |||
6ZbxgHaMU4oIMB8GA1UdIwQYMBaAFF4MqVJajN+pDwMU6ZbxgHaMU4oIMAoGCCqG | MH/p8xK7BsYkACtBqiFr2CXtgQcR72aPBr/IvvBYdCRFOU0E/DFpb8/b/mF7wyQx | |||
SM49BAMCA2gAMGUCMF8h/car1pSmzco3LIEzh/574bUa6GwFQ6aLTiK1VelIDLWX | /w== | |||
88kaZdmXS/Ahhg3LJgIxAOMtDQhJTaP13FcfpxMmpODWOsLVSlCDYiYueSvQpe5m | ||||
1b8WmjN1tNGNutNQd2uS3w== | ||||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
<CODE ENDS> | <CODE ENDS> | |||
C.1.2. MASA key pair for voucher signatures | C.1.2. MASA Key Pair for Voucher Signatures | |||
The MASA is the Manufacturer Authorized Signing Authority. This | The MASA is the Manufacturer Authorized Signing Authority. This key | |||
keypair signs vouchers. An example TLS certificate Section 5.4 HTTP | pair signs vouchers. An example TLS certificate (see Section 5.4) | |||
authentication is not provided as it is a common form. | HTTP authentication is not provided as it is a common form. | |||
This private key signs the vouchers which are presented below: | This private key signs the vouchers that are presented below: | |||
<CODE BEGINS> file "masa.key" | <CODE BEGINS> file "masa.key" | |||
-----BEGIN EC PRIVATE KEY----- | -----BEGIN EC PRIVATE KEY----- | |||
MHcCAQEEIFhdd0eDdzip67kXx72K+KHGJQYJHNy8pkiLJ6CcvxMGoAoGCCqGSM49 | MHcCAQEEIFhdd0eDdzip67kXx72K+KHGJQYJHNy8pkiLJ6CcvxMGoAoGCCqGSM49 | |||
AwEHoUQDQgAEqgQVo0S54kT4yfkbBxumdHOcHrpsqbOpMKmiMln3oB1HAW25MJV+ | AwEHoUQDQgAEqgQVo0S54kT4yfkbBxumdHOcHrpsqbOpMKmiMln3oB1HAW25MJV+ | |||
gqi4tMFfSJ0iEwt8kszfWXK4rLgJS2mnpQ== | gqi4tMFfSJ0iEwt8kszfWXK4rLgJS2mnpQ== | |||
-----END EC PRIVATE KEY----- | -----END EC PRIVATE KEY----- | |||
<CODE ENDS> | <CODE ENDS> | |||
This public key validates vouchers, and it has been signed by the CA | This public key validates vouchers, and it has been signed by the CA | |||
skipping to change at page 106, line 4 ¶ | skipping to change at line 4840 ¶ | |||
MHcCAQEEIFhdd0eDdzip67kXx72K+KHGJQYJHNy8pkiLJ6CcvxMGoAoGCCqGSM49 | MHcCAQEEIFhdd0eDdzip67kXx72K+KHGJQYJHNy8pkiLJ6CcvxMGoAoGCCqGSM49 | |||
AwEHoUQDQgAEqgQVo0S54kT4yfkbBxumdHOcHrpsqbOpMKmiMln3oB1HAW25MJV+ | AwEHoUQDQgAEqgQVo0S54kT4yfkbBxumdHOcHrpsqbOpMKmiMln3oB1HAW25MJV+ | |||
gqi4tMFfSJ0iEwt8kszfWXK4rLgJS2mnpQ== | gqi4tMFfSJ0iEwt8kszfWXK4rLgJS2mnpQ== | |||
-----END EC PRIVATE KEY----- | -----END EC PRIVATE KEY----- | |||
<CODE ENDS> | <CODE ENDS> | |||
This public key validates vouchers, and it has been signed by the CA | This public key validates vouchers, and it has been signed by the CA | |||
above: | above: | |||
file: examples/masa.key | file: examples/masa.key | |||
<CODE BEGINS> file "masa.cert" | <CODE BEGINS> file "masa.cert" | |||
Certificate: | Certificate: | |||
Data: | Data: | |||
Version: 3 (0x2) | Version: 3 (0x2) | |||
Serial Number: 463036244 (0x1b995f54) | Serial Number: 193399345 (0xb870a31) | |||
Signature Algorithm: ecdsa-with-SHA256 | Signature Algorithm: ecdsa-with-SHA256 | |||
Issuer: C = Canada, ST = Ontario, OU = Sandelman, CN = highway-test.example.com CA | Issuer: CN = highway-test.example.com CA | |||
Validity | Validity | |||
Not Before: Feb 12 22:22:41 2019 GMT | Not Before: Apr 13 21:40:16 2021 GMT | |||
Not After : Feb 11 22:22:41 2021 GMT | Not After : Apr 13 21:40:16 2023 GMT | |||
Subject: C = Canada, ST = Ontario, OU = Sandelman, CN = highway-test.example.com MASA | Subject: CN = highway-test.example.com MASA | |||
Subject Public Key Info: | Subject Public Key Info: | |||
Public Key Algorithm: id-ecPublicKey | Public Key Algorithm: id-ecPublicKey | |||
Public-Key: (256 bit) | Public-Key: (256 bit) | |||
pub: | pub: | |||
04:aa:04:15:a3:44:b9:e2:44:f8:c9:f9:1b:07:1b: | 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: | 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: | 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: | 5f:48:9d:22:13:0b:7c:92:cc:df:59:72:b8:ac:b8: | |||
09:4b:69:a7:a5 | 09:4b:69:a7:a5 | |||
ASN1 OID: prime256v1 | ASN1 OID: prime256v1 | |||
NIST CURVE: P-256 | NIST CURVE: P-256 | |||
X509v3 extensions: | X509v3 extensions: | |||
X509v3 Basic Constraints: critical | X509v3 Basic Constraints: critical | |||
CA:FALSE | CA:FALSE | |||
Signature Algorithm: ecdsa-with-SHA256 | Signature Algorithm: ecdsa-with-SHA256 | |||
30:66:02:31:00:bd:55:e5:9b:0e:fb:fc:5e:95:29:e3:81:b3: | 30:66:02:31:00:ae:cb:61:2d:d4:5c:8d:6e:86:aa:0b:06:1d: | |||
15:35:aa:93:18:a2:04:be:44:72:b2:51:7d:4d:6d:eb:d1:d5: | c6:d3:60:ba:32:73:36:25:d3:23:85:49:87:1c:ce:94:23:79: | |||
c1:10:3a:b2:39:7b:57:3f:c5:cc:b0:a3:0e:e7:99:46:ba:02: | 1a:9e:41:55:24:1d:15:22:a1:48:bb:0a:c0:ab:3c:13:73:02: | |||
31:00:f6:7f:44:7d:b7:14:fa:d1:67:6a:d4:11:c3:4b:ae:e6: | 31:00:86:3c:67:b3:95:a2:e2:e5:f9:ad:f9:1d:9c:c1:34:32: | |||
fb:9a:98:56:fa:85:21:2e:5c:48:4c:f0:3f:f2:9b:3f:ae:88: | 78:f5:cf:ea:d5:47:03:9f:00:bf:d0:59:cb:51:c2:98:04:81: | |||
20:a7:ae:f9:72:ff:5b:f9:78:68:cf:0f:48:c9 | 24:8a:51:13:50:b1:75:b2:2f:9d:a8:b4:f4:b9 | |||
-----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
MIIB3zCCAWSgAwIBAgIEG5lfVDAKBggqhkjOPQQDAjBdMQ8wDQYDVQQGEwZDYW5h | MIIBcDCB9qADAgECAgQLhwoxMAoGCCqGSM49BAMCMCYxJDAiBgNVBAMMG2hpZ2h3 | |||
ZGExEDAOBgNVBAgMB09udGFyaW8xEjAQBgNVBAsMCVNhbmRlbG1hbjEkMCIGA1UE | YXktdGVzdC5leGFtcGxlLmNvbSBDQTAeFw0yMTA0MTMyMTQwMTZaFw0yMzA0MTMy | |||
AwwbaGlnaHdheS10ZXN0LmV4YW1wbGUuY29tIENBMB4XDTE5MDIxMjIyMjI0MVoX | MTQwMTZaMCgxJjAkBgNVBAMMHWhpZ2h3YXktdGVzdC5leGFtcGxlLmNvbSBNQVNB | |||
DTIxMDIxMTIyMjI0MVowXzEPMA0GA1UEBhMGQ2FuYWRhMRAwDgYDVQQIDAdPbnRh | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqgQVo0S54kT4yfkbBxumdHOcHrps | |||
cmlvMRIwEAYDVQQLDAlTYW5kZWxtYW4xJjAkBgNVBAMMHWhpZ2h3YXktdGVzdC5l | qbOpMKmiMln3oB1HAW25MJV+gqi4tMFfSJ0iEwt8kszfWXK4rLgJS2mnpaMQMA4w | |||
eGFtcGxlLmNvbSBNQVNBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqgQVo0S5 | DAYDVR0TAQH/BAIwADAKBggqhkjOPQQDAgNpADBmAjEArsthLdRcjW6GqgsGHcbT | |||
4kT4yfkbBxumdHOcHrpsqbOpMKmiMln3oB1HAW25MJV+gqi4tMFfSJ0iEwt8kszf | YLoyczYl0yOFSYcczpQjeRqeQVUkHRUioUi7CsCrPBNzAjEAhjxns5Wi4uX5rfkd | |||
WXK4rLgJS2mnpaMQMA4wDAYDVR0TAQH/BAIwADAKBggqhkjOPQQDAgNpADBmAjEA | nME0Mnj1z+rVRwOfAL/QWctRwpgEgSSKURNQsXWyL52otPS5 | |||
vVXlmw77/F6VKeOBsxU1qpMYogS+RHKyUX1NbevR1cEQOrI5e1c/xcywow7nmUa6 | ||||
AjEA9n9EfbcU+tFnatQRw0uu5vuamFb6hSEuXEhM8D/ymz+uiCCnrvly/1v5eGjP | ||||
D0jJ | ||||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
<CODE ENDS> | <CODE ENDS> | |||
C.1.3. Registrar Certificate Authority | C.1.3. Registrar Certification Authority | |||
This Certificate Authority enrolls the pledge once it is authorized, | This CA enrolls the pledge once it is authorized, and it also signs | |||
and it also signs the Registrar's certificate. | the registrar's certificate. | |||
<CODE BEGINS> file "ownerca_secp384r1.key" | <CODE BEGINS> file "ownerca_secp384r1.key" | |||
-----BEGIN EC PRIVATE KEY----- | -----BEGIN EC PRIVATE KEY----- | |||
MIGkAgEBBDCHnLI0MSOLf8XndiZqoZdqblcPR5YSoPGhPOuFxWy1gFi9HbWv8b/R | MIGkAgEBBDCHnLI0MSOLf8XndiZqoZdqblcPR5YSoPGhPOuFxWy1gFi9HbWv8b/R | |||
EGdRgGEVSjKgBwYFK4EEACKhZANiAAQbf1m6F8MavGaNjGzgw/oxcQ9l9iKRvbdW | EGdRgGEVSjKgBwYFK4EEACKhZANiAAQbf1m6F8MavGaNjGzgw/oxcQ9l9iKRvbdW | |||
gAfb37h6pUVNeYpGlxlZljGxj2l9Mr48yD5bY7VG9qjVb5v5wPPTuRQ/ckdRpHbd | gAfb37h6pUVNeYpGlxlZljGxj2l9Mr48yD5bY7VG9qjVb5v5wPPTuRQ/ckdRpHbd | |||
0vC/9cqPMAF/+MJf0/UgA0SLi/IHbLQ= | 0vC/9cqPMAF/+MJf0/UgA0SLi/IHbLQ= | |||
-----END EC PRIVATE KEY----- | -----END EC PRIVATE KEY----- | |||
<CODE ENDS> | <CODE ENDS> | |||
skipping to change at page 107, line 30 ¶ | skipping to change at line 4910 ¶ | |||
proximity. | proximity. | |||
file: examples/ownerca_secp384r1.key | file: examples/ownerca_secp384r1.key | |||
<CODE BEGINS> file "ownerca_secp384r1.cert" | <CODE BEGINS> file "ownerca_secp384r1.cert" | |||
Certificate: | Certificate: | |||
Data: | Data: | |||
Version: 3 (0x2) | Version: 3 (0x2) | |||
Serial Number: 694879833 (0x296b0659) | Serial Number: 694879833 (0x296b0659) | |||
Signature Algorithm: ecdsa-with-SHA256 | Signature Algorithm: ecdsa-with-SHA256 | |||
Issuer: DC = ca, DC = sandelman, CN = fountain-test.example.com Unstrung Fountain Root CA | Issuer: DC = ca, DC = sandelman, | |||
CN = fountain-test.example.com Unstrung Fountain Root CA | ||||
Validity | Validity | |||
Not Before: Feb 25 21:31:45 2020 GMT | Not Before: Feb 25 21:31:45 2020 GMT | |||
Not After : Feb 24 21:31:45 2022 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: DC = ca, DC = sandelman, | |||
CN = fountain-test.example.com Unstrung Fountain Root CA | ||||
Subject Public Key Info: | Subject Public Key Info: | |||
Public Key Algorithm: id-ecPublicKey | Public Key Algorithm: id-ecPublicKey | |||
Public-Key: (384 bit) | Public-Key: (384 bit) | |||
pub: | pub: | |||
04:1b:7f:59:ba:17:c3:1a:bc:66:8d:8c:6c:e0:c3: | 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: | 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: | 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: | 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: | 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: | f0:bf:f5:ca:8f:30:01:7f:f8:c2:5f:d3:f5:20:03: | |||
skipping to change at page 108, line 4 ¶ | skipping to change at line 4935 ¶ | |||
9b:f9:c0:f3:d3:b9:14:3f:72:47:51:a4:76:dd:d2: | 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: | f0:bf:f5:ca:8f:30:01:7f:f8:c2:5f:d3:f5:20:03: | |||
44:8b:8b:f2:07:6c:b4 | 44:8b:8b:f2:07:6c:b4 | |||
ASN1 OID: secp384r1 | ASN1 OID: secp384r1 | |||
NIST CURVE: P-384 | NIST CURVE: P-384 | |||
X509v3 extensions: | X509v3 extensions: | |||
X509v3 Basic Constraints: critical | X509v3 Basic Constraints: critical | |||
CA:TRUE | CA:TRUE | |||
X509v3 Key Usage: critical | X509v3 Key Usage: critical | |||
Certificate Sign, CRL Sign | Certificate Sign, CRL Sign | |||
X509v3 Subject Key Identifier: | X509v3 Subject Key Identifier: | |||
B9:A5:F6:CB:11:E1:07:A4:49:2C:A7:08:C6:7C:10:BC:87:B3:74:26 | B9:A5:F6:CB:11:E1:07:A4:49:2C:A7:08:C6:7C:10:BC: | |||
87:B3:74:26 | ||||
X509v3 Authority Key Identifier: | 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 | 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 | Signature Algorithm: ecdsa-with-SHA256 | |||
30:64:02:30:20:83:06:ce:8d:98:a4:54:7a:66:4c:4a:3a:70: | 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: | 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: | 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: | 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: | 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 | ea:02:a4:5f:17:51:26:fb:d9:2f:d2:5c | |||
-----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
MIICazCCAfKgAwIBAgIEKWsGWTAKBggqhkjOPQQDAjBtMRIwEAYKCZImiZPyLGQB | MIICazCCAfKgAwIBAgIEKWsGWTAKBggqhkjOPQQDAjBtMRIwEAYKCZImiZPyLGQB | |||
skipping to change at page 108, line 34 ¶ | skipping to change at line 4966 ¶ | |||
EAYHKoZIzj0CAQYFK4EEACIDYgAEG39ZuhfDGrxmjYxs4MP6MXEPZfYikb23VoAH | EAYHKoZIzj0CAQYFK4EEACIDYgAEG39ZuhfDGrxmjYxs4MP6MXEPZfYikb23VoAH | |||
29+4eqVFTXmKRpcZWZYxsY9pfTK+PMg+W2O1Rvao1W+b+cDz07kUP3JHUaR23dLw | 29+4eqVFTXmKRpcZWZYxsY9pfTK+PMg+W2O1Rvao1W+b+cDz07kUP3JHUaR23dLw | |||
v/XKjzABf/jCX9P1IANEi4vyB2y0o2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud | v/XKjzABf/jCX9P1IANEi4vyB2y0o2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud | |||
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUuaX2yxHhB6RJLKcIxnwQvIezdCYwHwYDVR0j | DwEB/wQEAwIBBjAdBgNVHQ4EFgQUuaX2yxHhB6RJLKcIxnwQvIezdCYwHwYDVR0j | |||
BBgwFoAUuaX2yxHhB6RJLKcIxnwQvIezdCYwCgYIKoZIzj0EAwIDZwAwZAIwIIMG | BBgwFoAUuaX2yxHhB6RJLKcIxnwQvIezdCYwCgYIKoZIzj0EAwIDZwAwZAIwIIMG | |||
zo2YpFR6ZkxKOnDCUjZaUo1ZfSCbKmkUWIc42FV53f0pOJUekZN2tPVmKUS0AjBv | zo2YpFR6ZkxKOnDCUjZaUo1ZfSCbKmkUWIc42FV53f0pOJUekZN2tPVmKUS0AjBv | |||
OPmvEu0w1YUpfLEWWL1nkUPEDTD52BysLwbdvNUGQiyEogTqAqRfF1Em+9kv0lw= | OPmvEu0w1YUpfLEWWL1nkUPEDTD52BysLwbdvNUGQiyEogTqAqRfF1Em+9kv0lw= | |||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
<CODE ENDS> | <CODE ENDS> | |||
C.1.4. Registrar key pair | C.1.4. Registrar Key Pair | |||
The Registrar is the representative of the domain owner. This key | The registrar is the representative of the domain owner. This key | |||
signs registrar voucher-requests, and terminates the TLS connection | signs registrar voucher-requests and terminates the TLS connection | |||
from the pledge. | from the pledge. | |||
<CODE BEGINS> file "jrc_prime256v1.key" | <CODE BEGINS> file "jrc_prime256v1.key" | |||
-----BEGIN EC PRIVATE KEY----- | -----BEGIN EC PRIVATE KEY----- | |||
MHcCAQEEIFZodk+PC5Mu24+ra0sbOjKzan+dW5rvDAR7YuJUOC1YoAoGCCqGSM49 | MHcCAQEEIFZodk+PC5Mu24+ra0sbOjKzan+dW5rvDAR7YuJUOC1YoAoGCCqGSM49 | |||
AwEHoUQDQgAElmVQcjS6n+Xd5l/28IFv6UiegQwSBztGj5dkK2MAjQIPV8l8lH+E | AwEHoUQDQgAElmVQcjS6n+Xd5l/28IFv6UiegQwSBztGj5dkK2MAjQIPV8l8lH+E | |||
jLIOYdbJiI0VtEIf1/Jqt+TOBfinTNOLOg== | jLIOYdbJiI0VtEIf1/Jqt+TOBfinTNOLOg== | |||
-----END EC PRIVATE KEY----- | -----END EC PRIVATE KEY----- | |||
<CODE ENDS> | <CODE ENDS> | |||
The public key is indicated in a pledge voucher-request to show | The public key is indicated in a pledge voucher-request to show | |||
proximity. | proximity. | |||
<CODE BEGINS> file "jrc_prime256v1.cert" | <CODE BEGINS> file "jrc_prime256v1.cert" | |||
Certificate: | Certificate: | |||
Data: | Data: | |||
Version: 3 (0x2) | Version: 3 (0x2) | |||
Serial Number: 1066965842 (0x3f989b52) | Serial Number: 1066965842 (0x3f989b52) | |||
Signature Algorithm: ecdsa-with-SHA256 | Signature Algorithm: ecdsa-with-SHA256 | |||
Issuer: DC = ca, DC = sandelman, CN = fountain-test.example.com Unstrung Fountain Root CA | Issuer: DC = ca, DC = sandelman, | |||
CN = fountain-test.example.com Unstrung Fountain Root CA | ||||
Validity | Validity | |||
Not Before: Feb 25 21:31:54 2020 GMT | Not Before: Feb 25 21:31:54 2020 GMT | |||
Not After : Feb 24 21:31:54 2022 GMT | Not After : Feb 24 21:31:54 2022 GMT | |||
Subject: DC = ca, DC = sandelman, CN = fountain-test.example.com | Subject: DC = ca, DC = sandelman, | |||
CN = fountain-test.example.com | ||||
Subject Public Key Info: | Subject Public Key Info: | |||
Public Key Algorithm: id-ecPublicKey | Public Key Algorithm: id-ecPublicKey | |||
Public-Key: (256 bit) | Public-Key: (256 bit) | |||
pub: | pub: | |||
04:96:65:50:72:34:ba:9f:e5:dd:e6:5f:f6:f0:81: | 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: | 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: | 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: | c9:88:8d:15:b4:42:1f:d7:f2:6a:b7:e4:ce:05:f8: | |||
a7:4c:d3:8b:3a | a7:4c:d3:8b:3a | |||
ASN1 OID: prime256v1 | ASN1 OID: prime256v1 | |||
skipping to change at page 110, line 5 ¶ | skipping to change at line 5034 ¶ | |||
FgJjYTEZMBcGCgmSJomT8ixkARkWCXNhbmRlbG1hbjEiMCAGA1UEAwwZZm91bnRh | FgJjYTEZMBcGCgmSJomT8ixkARkWCXNhbmRlbG1hbjEiMCAGA1UEAwwZZm91bnRh | |||
aW4tdGVzdC5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJZl | aW4tdGVzdC5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJZl | |||
UHI0up/l3eZf9vCBb+lInoEMEgc7Ro+XZCtjAI0CD1fJfJR/hIyyDmHWyYiNFbRC | UHI0up/l3eZf9vCBb+lInoEMEgc7Ro+XZCtjAI0CD1fJfJR/hIyyDmHWyYiNFbRC | |||
H9fyarfkzgX4p0zTizqjKjAoMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMcMA4GA1Ud | H9fyarfkzgX4p0zTizqjKjAoMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMcMA4GA1Ud | |||
DwEB/wQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjBmT2BMVUgelgf43R+5yBKNRTaH | DwEB/wQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjBmT2BMVUgelgf43R+5yBKNRTaH | |||
myPAvLvxyz0mFVZvXx+/1RwOagmvG3aXmRkj/X4CMQC8rMNBsLoNr1L5nG56fwAd | myPAvLvxyz0mFVZvXx+/1RwOagmvG3aXmRkj/X4CMQC8rMNBsLoNr1L5nG56fwAd | |||
I8hiAWG8S8XAR5k1Cgx3YUQBSgdScFcAdf++Bw6Yy+U= | I8hiAWG8S8XAR5k1Cgx3YUQBSgdScFcAdf++Bw6Yy+U= | |||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
<CODE ENDS> | <CODE ENDS> | |||
C.1.5. Pledge key pair | C.1.5. Pledge Key Pair | |||
The pledge has an IDevID key pair built in at manufacturing time: | The pledge has an IDevID key pair built in at manufacturing time: | |||
<CODE BEGINS> file "idevid_00-D0-E5-F2-00-02.key" | <CODE BEGINS> file "idevid_00-D0-E5-F2-00-02.key" | |||
-----BEGIN EC PRIVATE KEY----- | -----BEGIN EC PRIVATE KEY----- | |||
MHcCAQEEIBHNh6r8QRevRuo+tEmBJeFjQKf6bpFA/9NGoltv+9sNoAoGCCqGSM49 | MHcCAQEEIBHNh6r8QRevRuo+tEmBJeFjQKf6bpFA/9NGoltv+9sNoAoGCCqGSM49 | |||
AwEHoUQDQgAEA6N1Q4ezfMAKmoecrfb0OBMc1AyEH+BATkF58FsTSyBxs0SbSWLx | AwEHoUQDQgAEA6N1Q4ezfMAKmoecrfb0OBMc1AyEH+BATkF58FsTSyBxs0SbSWLx | |||
FjDOuwB9gLGn2TsTUJumJ6VPw5Z/TP4hJw== | FjDOuwB9gLGn2TsTUJumJ6VPw5Z/TP4hJw== | |||
-----END EC PRIVATE KEY----- | -----END EC PRIVATE KEY----- | |||
<CODE ENDS> | <CODE ENDS> | |||
The certificate is used by the registrar to find the MASA. | The certificate is used by the registrar to find the MASA. | |||
<CODE BEGINS> file "idevid_00-D0-E5-F2-00-02.cert" | <CODE BEGINS> file "idevid_00-D0-E5-F2-00-02.cert" | |||
Certificate: | Certificate: | |||
Data: | Data: | |||
Version: 3 (0x2) | Version: 3 (0x2) | |||
Serial Number: 226876461 (0xd85dc2d) | Serial Number: 521731815 (0x1f18fee7) | |||
Signature Algorithm: ecdsa-with-SHA256 | Signature Algorithm: ecdsa-with-SHA256 | |||
Issuer: C = Canada, ST = Ontario, OU = Sandelman, CN = highway-test.example.com CA | Issuer: CN = highway-test.example.com CA | |||
Validity | Validity | |||
Not Before: Feb 3 06:47:20 2020 GMT | Not Before: Apr 27 18:29:30 2021 GMT | |||
Not After : Dec 31 00:00:00 2999 GMT | Not After : Dec 31 00:00:00 2999 GMT | |||
Subject: serialNumber = 00-D0-E5-F2-00-02 | Subject: serialNumber = 00-D0-E5-F2-00-02 | |||
Subject Public Key Info: | Subject Public Key Info: | |||
Public Key Algorithm: id-ecPublicKey | Public Key Algorithm: id-ecPublicKey | |||
Public-Key: (256 bit) | Public-Key: (256 bit) | |||
pub: | pub: | |||
04:03:a3:75:43:87:b3:7c:c0:0a:9a:87:9c:ad:f6: | 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: | 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: | 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: | 7d:80:b1:a7:d9:3b:13:50:9b:a6:27:a5:4f:c3:96: | |||
7f:4c:fe:21:27 | 7f:4c:fe:21:27 | |||
ASN1 OID: prime256v1 | ASN1 OID: prime256v1 | |||
NIST CURVE: P-256 | NIST CURVE: P-256 | |||
X509v3 extensions: | X509v3 extensions: | |||
X509v3 Subject Key Identifier: | X509v3 Subject Key Identifier: | |||
45:88:CC:96:96:00:64:37:B0:BA:23:65:64:64:54:08:06:6C:56:AD | 45:88:CC:96:96:00:64:37:B0:BA:23:65:64:64:54:08: | |||
06:6C:56:AD | ||||
X509v3 Basic Constraints: | X509v3 Basic Constraints: | |||
CA:FALSE | CA:FALSE | |||
1.3.6.1.5.5.7.1.32: | 1.3.6.1.5.5.7.1.32: | |||
..highway-test.example.com:9443 | ..highway-test.example.com:9443 | |||
Signature Algorithm: ecdsa-with-SHA256 | Signature Algorithm: ecdsa-with-SHA256 | |||
30:65:02:30:23:e1:a9:2e:ef:22:12:34:5a:a5:c2:15:d6:28: | 30:65:02:30:62:2a:db:be:34:f7:1b:cb:85:de:26:8e:43:00: | |||
bd:ed:3d:96:d6:ce:04:95:ef:a7:c8:dc:18:a8:31:c7:b8:04: | f9:0d:88:c8:77:a8:dd:3c:08:40:54:bc:ec:3d:b6:dc:70:2b: | |||
34:f2:b7:4d:79:8a:67:22:24:03:4f:c5:cd:d6:06:ba:02:31: | c3:7f:ca:19:21:9a:a0:ab:c5:51:8e:aa:df:36:de:8b:02:31: | |||
00:b3:8d:5c:0a:d0:fe:04:83:90:d3:4f:6d:72:97:b3:3e:02: | 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: | ||||
ea:f1:c8:5a:32:72:58:b7:45:02:50:78:bc:04:1d:23:5e:22: | 6a:a2:6d:7f:7f:25:1c:03:ef:f0:ba:9b:71 | |||
6f:c3:7f:8c:7c:d7:9b:70:20:91:b4:e1:7f | ||||
-----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
MIIB5jCCAWygAwIBAgIEDYXcLTAKBggqhkjOPQQDAjBdMQ8wDQYDVQQGEwZDYW5h | MIIBrzCCATWgAwIBAgIEHxj+5zAKBggqhkjOPQQDAjAmMSQwIgYDVQQDDBtoaWdo | |||
ZGExEDAOBgNVBAgMB09udGFyaW8xEjAQBgNVBAsMCVNhbmRlbG1hbjEkMCIGA1UE | d2F5LXRlc3QuZXhhbXBsZS5jb20gQ0EwIBcNMjEwNDI3MTgyOTMwWhgPMjk5OTEy | |||
AwwbaGlnaHdheS10ZXN0LmV4YW1wbGUuY29tIENBMCAXDTIwMDIwMzA2NDcyMFoY | MzEwMDAwMDBaMBwxGjAYBgNVBAUTETAwLUQwLUU1LUYyLTAwLTAyMFkwEwYHKoZI | |||
DzI5OTkxMjMxMDAwMDAwWjAcMRowGAYDVQQFDBEwMC1EMC1FNS1GMi0wMC0wMjBZ | zj0CAQYIKoZIzj0DAQcDQgAEA6N1Q4ezfMAKmoecrfb0OBMc1AyEH+BATkF58FsT | |||
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABAOjdUOHs3zACpqHnK329DgTHNQMhB/g | SyBxs0SbSWLxFjDOuwB9gLGn2TsTUJumJ6VPw5Z/TP4hJ6NZMFcwHQYDVR0OBBYE | |||
QE5BefBbE0sgcbNEm0li8RYwzrsAfYCxp9k7E1CbpielT8OWf0z+ISejWTBXMB0G | FEWIzJaWAGQ3sLojZWRkVAgGbFatMAkGA1UdEwQCMAAwKwYIKwYBBQUHASAEHxYd | |||
A1UdDgQWBBRFiMyWlgBkN7C6I2VkZFQIBmxWrTAJBgNVHRMEAjAAMCsGCCsGAQUF | aGlnaHdheS10ZXN0LmV4YW1wbGUuY29tOjk0NDMwCgYIKoZIzj0EAwIDaAAwZQIw | |||
BwEgBB8MHWhpZ2h3YXktdGVzdC5leGFtcGxlLmNvbTo5NDQzMAoGCCqGSM49BAMC | YirbvjT3G8uF3iaOQwD5DYjId6jdPAhAVLzsPbbccCvDf8oZIZqgq8VRjqrfNt6L | |||
A2gAMGUCMCPhqS7vIhI0WqXCFdYove09ltbOBJXvp8jcGKgxx7gENPK3TXmKZyIk | AjEAsl1Z+EfH7QOXqMDHqIH6qIbtZ2Q3UXpunKOCTW2tvPM1np1qom1/fyUcA+/w | |||
A0/FzdYGugIxALONXArQ/gSDkNNPbXKXsz4C6vHIWjJyWLdFAlB4vAQdI14ib8N/ | uptx | |||
jHzXm3AgkbThfw== | ||||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
<CODE ENDS> | <CODE ENDS> | |||
C.2. Example process | C.2. Example Process | |||
The JSON examples below are wrapped at 60 columns. This results in | The JSON examples below are wrapped at 60 columns. This results in | |||
strings that have newlines in them, which makes them invalid JSON as | 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 | is. The strings would otherwise be too long, so they need to be | |||
unwrapped before processing. | unwrapped before processing. | |||
For readability, the output of the asn1parse has been truncated at 72 | For readability, the output of the asn1parse has been truncated at 68 | |||
columns rather than wrapped. | columns rather than wrapped. | |||
C.2.1. Pledge to Registrar | C.2.1. Pledge to Registrar | |||
As described in Section 5.2, the pledge will sign a pledge voucher- | As described in Section 5.2, the pledge will sign a pledge voucher- | |||
request containing the registrar's public key in the proximity- | request containing the registrar's public key in the proximity- | |||
registrar-cert field. The base64 has been wrapped at 60 characters | registrar-cert field. The base64 has been wrapped at 60 characters | |||
for presentation reasons. | for presentation reasons. | |||
<CODE BEGINS> file "vr_00-D0-E5-F2-00-02.b64" | <CODE BEGINS> file "vr_00-D0-E5-F2-00-02.b64" | |||
MIIG3wYJKoZIhvcNAQcCoIIG0DCCBswCAQExDTALBglghkgBZQMEAgEwggOJBgkqhkiG9w0BBwGg | MIIGcAYJKoZIhvcNAQcCoIIGYTCCBl0CAQExDTALBglghkgBZQMEAgEwggOJBgkqhkiG | |||
ggN6BIIDdnsiaWV0Zi12b3VjaGVyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3NlcnRpb24iOiJwcm94 | 9w0BBwGgggN6BIIDdnsiaWV0Zi12b3VjaGVyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3Nl | |||
aW1pdHkiLCJjcmVhdGVkLW9uIjoiMjAyMC0wMi0yNVQxODowNDo0OC42NTItMDU6MDAiLCJzZXJp | cnRpb24iOiJwcm94aW1pdHkiLCJjcmVhdGVkLW9uIjoiMjAyMS0wNC0xM1QxNzo0Mzoy | |||
YWwtbnVtYmVyIjoiMDAtRDAtRTUtRjItMDAtMDIiLCJub25jZSI6ImFNamd1ZUtVVC0yMndWaW1q | My43NDctMDQ6MDAiLCJzZXJpYWwtbnVtYmVyIjoiMDAtRDAtRTUtRjItMDAtMDIiLCJu | |||
NnoyN1EiLCJwcm94aW1pdHktcmVnaXN0cmFyLWNlcnQiOiJNSUlCL0RDQ0FZS2dBd0lCQWdJRVA1 | b25jZSI6Ii1fWEU5eks5cThMbDFxeWxNdExLZWciLCJwcm94aW1pdHktcmVnaXN0cmFy | |||
aWJVakFLQmdncWhrak9QUVFEQWpCdE1SSXdFQVlLQ1pJbWlaUHlMR1FCR1JZQ1kyRXhHVEFYQmdv | LWNlcnQiOiJNSUlCL0RDQ0FZS2dBd0lCQWdJRVA1aWJVakFLQmdncWhrak9QUVFEQWpC | |||
SmtpYUprL0lzWkFFWkZnbHpZVzVrWld4dFlXNHhQREE2QmdOVkJBTU1NMlp2ZFc1MFlXbHVMWFJs | dE1SSXdFQVlLQ1pJbWlaUHlMR1FCR1JZQ1kyRXhHVEFYQmdvSmtpYUprL0lzWkFFWkZn | |||
YzNRdVpYaGhiWEJzWlM1amIyMGdWVzV6ZEhKMWJtY2dSbTkxYm5SaGFXNGdVbTl2ZENCRFFUQWVG | bHpZVzVrWld4dFlXNHhQREE2QmdOVkJBTU1NMlp2ZFc1MFlXbHVMWFJsYzNRdVpYaGhi | |||
dzB5TURBeU1qVXlNVE14TlRSYUZ3MHlNakF5TWpReU1UTXhOVFJhTUZNeEVqQVFCZ29Ka2lhSmsv | WEJzWlM1amIyMGdWVzV6ZEhKMWJtY2dSbTkxYm5SaGFXNGdVbTl2ZENCRFFUQWVGdzB5 | |||
SXNaQUVaRmdKallURVpNQmNHQ2dtU0pvbVQ4aXhrQVJrV0NYTmhibVJsYkcxaGJqRWlNQ0FHQTFV | TURBeU1qVXlNVE14TlRSYUZ3MHlNakF5TWpReU1UTXhOVFJhTUZNeEVqQVFCZ29Ka2lh | |||
RUF3d1pabTkxYm5SaGFXNHRkR1Z6ZEM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VH | SmsvSXNaQUVaRmdKallURVpNQmNHQ2dtU0pvbVQ4aXhrQVJrV0NYTmhibVJsYkcxaGJq | |||
Q0NxR1NNNDlBd0VIQTBJQUJKWmxVSEkwdXAvbDNlWmY5dkNCYitsSW5vRU1FZ2M3Um8rWFpDdGpB | RWlNQ0FHQTFVRUF3d1pabTkxYm5SaGFXNHRkR1Z6ZEM1bGVHRnRjR3hsTG1OdmJUQlpN | |||
STBDRDFmSmZKUi9oSXl5RG1IV3lZaU5GYlJDSDlmeWFyZmt6Z1g0cDB6VGl6cWpLakFvTUJZR0Ex | Qk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKWmxVSEkwdXAvbDNlWmY5dkNC | |||
VWRKUUVCL3dRTU1Bb0dDQ3NHQVFVRkJ3TWNNQTRHQTFVZER3RUIvd1FFQXdJSGdEQUtCZ2dxaGtq | YitsSW5vRU1FZ2M3Um8rWFpDdGpBSTBDRDFmSmZKUi9oSXl5RG1IV3lZaU5GYlJDSDlm | |||
T1BRUURBZ05vQURCbEFqQm1UMkJNVlVnZWxnZjQzUis1eUJLTlJUYUhteVBBdkx2eHl6MG1GVlp2 | eWFyZmt6Z1g0cDB6VGl6cWpLakFvTUJZR0ExVWRKUUVCL3dRTU1Bb0dDQ3NHQVFVRkJ3 | |||
WHgrLzFSd09hZ212RzNhWG1Sa2ovWDRDTVFDOHJNTkJzTG9OcjFMNW5HNTZmd0FkSThoaUFXRzhT | TWNNQTRHQTFVZER3RUIvd1FFQXdJSGdEQUtCZ2dxaGtqT1BRUURBZ05vQURCbEFqQm1U | |||
OFhBUjVrMUNneDNZVVFCU2dkU2NGY0FkZisrQnc2WXkrVT0ifX2gggHqMIIB5jCCAWygAwIBAgIE | MkJNVlVnZWxnZjQzUis1eUJLTlJUYUhteVBBdkx2eHl6MG1GVlp2WHgrLzFSd09hZ212 | |||
DYXcLTAKBggqhkjOPQQDAjBdMQ8wDQYDVQQGEwZDYW5hZGExEDAOBgNVBAgMB09udGFyaW8xEjAQ | RzNhWG1Sa2ovWDRDTVFDOHJNTkJzTG9OcjFMNW5HNTZmd0FkSThoaUFXRzhTOFhBUjVr | |||
BgNVBAsMCVNhbmRlbG1hbjEkMCIGA1UEAwwbaGlnaHdheS10ZXN0LmV4YW1wbGUuY29tIENBMCAX | MUNneDNZVVFCU2dkU2NGY0FkZisrQnc2WXkrVT0ifX2gggGyMIIBrjCCATWgAwIBAgIE | |||
DTIwMDIwMzA2NDcyMFoYDzI5OTkxMjMxMDAwMDAwWjAcMRowGAYDVQQFDBEwMC1EMC1FNS1GMi0w | DYOv2TAKBggqhkjOPQQDAjAmMSQwIgYDVQQDDBtoaWdod2F5LXRlc3QuZXhhbXBsZS5j | |||
MC0wMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAOjdUOHs3zACpqHnK329DgTHNQMhB/gQE5B | b20gQ0EwIBcNMjEwNDEzMjAzNzM5WhgPMjk5OTEyMzEwMDAwMDBaMBwxGjAYBgNVBAUM | |||
efBbE0sgcbNEm0li8RYwzrsAfYCxp9k7E1CbpielT8OWf0z+ISejWTBXMB0GA1UdDgQWBBRFiMyW | ETAwLUQwLUU1LUYyLTAwLTAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEA6N1Q4ez | |||
lgBkN7C6I2VkZFQIBmxWrTAJBgNVHRMEAjAAMCsGCCsGAQUFBwEgBB8MHWhpZ2h3YXktdGVzdC5l | fMAKmoecrfb0OBMc1AyEH+BATkF58FsTSyBxs0SbSWLxFjDOuwB9gLGn2TsTUJumJ6VP | |||
eGFtcGxlLmNvbTo5NDQzMAoGCCqGSM49BAMCA2gAMGUCMCPhqS7vIhI0WqXCFdYove09ltbOBJXv | w5Z/TP4hJ6NZMFcwHQYDVR0OBBYEFEWIzJaWAGQ3sLojZWRkVAgGbFatMAkGA1UdEwQC | |||
p8jcGKgxx7gENPK3TXmKZyIkA0/FzdYGugIxALONXArQ/gSDkNNPbXKXsz4C6vHIWjJyWLdFAlB4 | MAAwKwYIKwYBBQUHASAEHxYdaGlnaHdheS10ZXN0LmV4YW1wbGUuY29tOjk0NDMwCgYI | |||
vAQdI14ib8N/jHzXm3AgkbThfzGCATswggE3AgEBMGUwXTEPMA0GA1UEBhMGQ2FuYWRhMRAwDgYD | KoZIzj0EAwIDZwAwZAIwTmlG8sXkKGNbwbKQcYMapFbmSbnHHURFUoFuRqvbgYX7FlXp | |||
VQQIDAdPbnRhcmlvMRIwEAYDVQQLDAlTYW5kZWxtYW4xJDAiBgNVBAMMG2hpZ2h3YXktdGVzdC5l | BczfwF2kllNuujigAjAow1kc4r55EmiH+OMEXjBNlWlBSZC5QuJjEf0Jsmxssc+pucjO | |||
eGFtcGxlLmNvbSBDQQIEDYXcLTALBglghkgBZQMEAgGgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcN | J4ShqnexMEy7bjAxggEEMIIBAAIBATAuMCYxJDAiBgNVBAMMG2hpZ2h3YXktdGVzdC5l | |||
AQcBMBwGCSqGSIb3DQEJBTEPFw0yMDAyMjUyMzA0NDhaMC8GCSqGSIb3DQEJBDEiBCCx6IrwstHF | eGFtcGxlLmNvbSBDQQIEDYOv2TALBglghkgBZQMEAgGgaTAYBgkqhkiG9w0BCQMxCwYJ | |||
609Y0EqDK62QKby4duyyIWudvs15M16BBTAKBggqhkjOPQQDAgRHMEUCIBxwA1UlkIkuQDf/j7kZ | KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMTA0MTMyMTQzMjNaMC8GCSqGSIb3DQEJ | |||
/MVefgr141+hKBFgrnNngjwpAiEAy8aXt0GSB9m1bmiEUpefCEhxSv2xLYurGlugv0dfr/E= | BDEiBCBJwhyYibIjeqeR3bOaLURzMlGrc3F2X+kvJ1errtoCtTAKBggqhkjOPQQDAgRH | |||
MEUCIQCmYuCE61HFQXH/E16GDOCsVquDtgr+Q/6/Du/9QkzA7gIgf7MFhAIPW2PNwRa2 | ||||
vZFQAKXUbimkiHKzXBA8md0VHbU= | ||||
<CODE ENDS> | <CODE ENDS> | |||
The ASN1 decoding of the artifact: | The ASN1 decoding of the artifact: | |||
file: examples/vr_00-D0-E5-F2-00-02.b64 | file: examples/vr_00-D0-E5-F2-00-02.b64 | |||
0:d=0 hl=4 l=1759 cons: SEQUENCE | 0:d=0 hl=4 l=1648 cons: SEQUENCE | |||
4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData | 4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData | |||
15:d=1 hl=4 l=1744 cons: cont [ 0 ] | 15:d=1 hl=4 l=1633 cons: cont [ 0 ] | |||
19:d=2 hl=4 l=1740 cons: SEQUENCE | 19:d=2 hl=4 l=1629 cons: SEQUENCE | |||
23:d=3 hl=2 l= 1 prim: INTEGER :01 | 23:d=3 hl=2 l= 1 prim: INTEGER :01 | |||
26:d=3 hl=2 l= 13 cons: SET | 26:d=3 hl=2 l= 13 cons: SET | |||
28:d=4 hl=2 l= 11 cons: SEQUENCE | 28:d=4 hl=2 l= 11 cons: SEQUENCE | |||
30:d=5 hl=2 l= 9 prim: OBJECT :sha256 | 30:d=5 hl=2 l= 9 prim: OBJECT :sha256 | |||
41:d=3 hl=4 l= 905 cons: SEQUENCE | 41:d=3 hl=4 l= 905 cons: SEQUENCE | |||
45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data | 45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data | |||
56:d=4 hl=4 l= 890 cons: cont [ 0 ] | 56:d=4 hl=4 l= 890 cons: cont [ 0 ] | |||
60:d=5 hl=4 l= 886 prim: OCTET STRING :{"ietf-voucher-request:v | 60:d=5 hl=4 l= 886 prim: OCTET STRING :{"ietf-voucher-request:v | |||
950:d=3 hl=4 l= 490 cons: cont [ 0 ] | 950:d=3 hl=4 l= 434 cons: cont [ 0 ] | |||
954:d=4 hl=4 l= 486 cons: SEQUENCE | 954:d=4 hl=4 l= 430 cons: SEQUENCE | |||
958:d=5 hl=4 l= 364 cons: SEQUENCE | 958:d=5 hl=4 l= 309 cons: SEQUENCE | |||
962:d=6 hl=2 l= 3 cons: cont [ 0 ] | 962:d=6 hl=2 l= 3 cons: cont [ 0 ] | |||
964:d=7 hl=2 l= 1 prim: INTEGER :02 | 964:d=7 hl=2 l= 1 prim: INTEGER :02 | |||
967:d=6 hl=2 l= 4 prim: INTEGER :0D85DC2D | 967:d=6 hl=2 l= 4 prim: INTEGER :0D83AFD9 | |||
973:d=6 hl=2 l= 10 cons: SEQUENCE | 973:d=6 hl=2 l= 10 cons: SEQUENCE | |||
975:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 975:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
985:d=6 hl=2 l= 93 cons: SEQUENCE | 985:d=6 hl=2 l= 38 cons: SEQUENCE | |||
987:d=7 hl=2 l= 15 cons: SET | 987:d=7 hl=2 l= 36 cons: SET | |||
989:d=8 hl=2 l= 13 cons: SEQUENCE | 989:d=8 hl=2 l= 34 cons: SEQUENCE | |||
991:d=9 hl=2 l= 3 prim: OBJECT :countryName | 991:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
996:d=9 hl=2 l= 6 prim: PRINTABLESTRING :Canada | 996:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com | |||
1004:d=7 hl=2 l= 16 cons: SET | 1025:d=6 hl=2 l= 32 cons: SEQUENCE | |||
1006:d=8 hl=2 l= 14 cons: SEQUENCE | 1027:d=7 hl=2 l= 13 prim: UTCTIME :210413203739Z | |||
1008:d=9 hl=2 l= 3 prim: OBJECT :stateOrProvinceName | 1042:d=7 hl=2 l= 15 prim: GENERALIZEDTIME :29991231000000Z | |||
1013:d=9 hl=2 l= 7 prim: UTF8STRING :Ontario | 1059:d=6 hl=2 l= 28 cons: SEQUENCE | |||
1022:d=7 hl=2 l= 18 cons: SET | 1061:d=7 hl=2 l= 26 cons: SET | |||
1024:d=8 hl=2 l= 16 cons: SEQUENCE | 1063:d=8 hl=2 l= 24 cons: SEQUENCE | |||
1026:d=9 hl=2 l= 3 prim: OBJECT :organizationalUnitName | 1065:d=9 hl=2 l= 3 prim: OBJECT :serialNumber | |||
1031:d=9 hl=2 l= 9 prim: UTF8STRING :Sandelman | 1070:d=9 hl=2 l= 17 prim: UTF8STRING :00-D0-E5-F2-00-02 | |||
1042:d=7 hl=2 l= 36 cons: SET | 1089:d=6 hl=2 l= 89 cons: SEQUENCE | |||
1044:d=8 hl=2 l= 34 cons: SEQUENCE | 1091:d=7 hl=2 l= 19 cons: SEQUENCE | |||
1046:d=9 hl=2 l= 3 prim: OBJECT :commonName | 1093:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | |||
1051:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com | 1102:d=8 hl=2 l= 8 prim: OBJECT :prime256v1 | |||
1080:d=6 hl=2 l= 32 cons: SEQUENCE | 1112:d=7 hl=2 l= 66 prim: BIT STRING | |||
1082:d=7 hl=2 l= 13 prim: UTCTIME :200203064720Z | 1180:d=6 hl=2 l= 89 cons: cont [ 3 ] | |||
1097:d=7 hl=2 l= 15 prim: GENERALIZEDTIME :29991231000000Z | 1182:d=7 hl=2 l= 87 cons: SEQUENCE | |||
1114:d=6 hl=2 l= 28 cons: SEQUENCE | 1184:d=8 hl=2 l= 29 cons: SEQUENCE | |||
1116:d=7 hl=2 l= 26 cons: SET | 1186:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Ident | |||
1118:d=8 hl=2 l= 24 cons: SEQUENCE | 1191:d=9 hl=2 l= 22 prim: OCTET STRING [HEX DUMP]:04144588CC9696 | |||
1120:d=9 hl=2 l= 3 prim: OBJECT :serialNumber | 1215:d=8 hl=2 l= 9 cons: SEQUENCE | |||
1125:d=9 hl=2 l= 17 prim: UTF8STRING :00-D0-E5-F2-00-02 | 1217:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints | |||
1144:d=6 hl=2 l= 89 cons: SEQUENCE | 1222:d=9 hl=2 l= 2 prim: OCTET STRING [HEX DUMP]:3000 | |||
1146:d=7 hl=2 l= 19 cons: SEQUENCE | 1226:d=8 hl=2 l= 43 cons: SEQUENCE | |||
1148:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | 1228:d=9 hl=2 l= 8 prim: OBJECT :1.3.6.1.5.5.7.1.32 | |||
1157:d=8 hl=2 l= 8 prim: OBJECT :prime256v1 | 1238:d=9 hl=2 l= 31 prim: OCTET STRING [HEX DUMP]:161D6869676877 | |||
1167:d=7 hl=2 l= 66 prim: BIT STRING | 1271:d=5 hl=2 l= 10 cons: SEQUENCE | |||
1235:d=6 hl=2 l= 89 cons: cont [ 3 ] | 1273:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
1237:d=7 hl=2 l= 87 cons: SEQUENCE | 1283:d=5 hl=2 l= 103 prim: BIT STRING | |||
1239:d=8 hl=2 l= 29 cons: SEQUENCE | 1388:d=3 hl=4 l= 260 cons: SET | |||
1241:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Ident | 1392:d=4 hl=4 l= 256 cons: SEQUENCE | |||
1246:d=9 hl=2 l= 22 prim: OCTET STRING [HEX DUMP]:04144588CC9696 | 1396:d=5 hl=2 l= 1 prim: INTEGER :01 | |||
1270:d=8 hl=2 l= 9 cons: SEQUENCE | 1399:d=5 hl=2 l= 46 cons: SEQUENCE | |||
1272:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints | 1401:d=6 hl=2 l= 38 cons: SEQUENCE | |||
1277:d=9 hl=2 l= 2 prim: OCTET STRING [HEX DUMP]:3000 | 1403:d=7 hl=2 l= 36 cons: SET | |||
1281:d=8 hl=2 l= 43 cons: SEQUENCE | 1405:d=8 hl=2 l= 34 cons: SEQUENCE | |||
1283:d=9 hl=2 l= 8 prim: OBJECT :1.3.6.1.5.5.7.1.32 | 1407:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
1293:d=9 hl=2 l= 31 prim: OCTET STRING [HEX DUMP]:0C1D6869676877 | 1412:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com | |||
1326:d=5 hl=2 l= 10 cons: SEQUENCE | 1441:d=6 hl=2 l= 4 prim: INTEGER :0D83AFD9 | |||
1328:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 1447:d=5 hl=2 l= 11 cons: SEQUENCE | |||
1338:d=5 hl=2 l= 104 prim: BIT STRING | 1449:d=6 hl=2 l= 9 prim: OBJECT :sha256 | |||
1444:d=3 hl=4 l= 315 cons: SET | 1460:d=5 hl=2 l= 105 cons: cont [ 0 ] | |||
1448:d=4 hl=4 l= 311 cons: SEQUENCE | 1462:d=6 hl=2 l= 24 cons: SEQUENCE | |||
1452:d=5 hl=2 l= 1 prim: INTEGER :01 | 1464:d=7 hl=2 l= 9 prim: OBJECT :contentType | |||
1455:d=5 hl=2 l= 101 cons: SEQUENCE | 1475:d=7 hl=2 l= 11 cons: SET | |||
1457:d=6 hl=2 l= 93 cons: SEQUENCE | 1477:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data | |||
1459:d=7 hl=2 l= 15 cons: SET | 1488:d=6 hl=2 l= 28 cons: SEQUENCE | |||
1461:d=8 hl=2 l= 13 cons: SEQUENCE | 1490:d=7 hl=2 l= 9 prim: OBJECT :signingTime | |||
1463:d=9 hl=2 l= 3 prim: OBJECT :countryName | 1501:d=7 hl=2 l= 15 cons: SET | |||
1468:d=9 hl=2 l= 6 prim: PRINTABLESTRING :Canada | 1503:d=8 hl=2 l= 13 prim: UTCTIME :210413214323Z | |||
1476:d=7 hl=2 l= 16 cons: SET | 1518:d=6 hl=2 l= 47 cons: SEQUENCE | |||
1478:d=8 hl=2 l= 14 cons: SEQUENCE | 1520:d=7 hl=2 l= 9 prim: OBJECT :messageDigest | |||
1480:d=9 hl=2 l= 3 prim: OBJECT :stateOrProvinceName | 1531:d=7 hl=2 l= 34 cons: SET | |||
1485:d=9 hl=2 l= 7 prim: UTF8STRING :Ontario | 1533:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:49C21C9889B223 | |||
1494:d=7 hl=2 l= 18 cons: SET | 1567:d=5 hl=2 l= 10 cons: SEQUENCE | |||
1496:d=8 hl=2 l= 16 cons: SEQUENCE | 1569:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
1498:d=9 hl=2 l= 3 prim: OBJECT :organizationalUnitName | 1579:d=5 hl=2 l= 71 prim: OCTET STRING [HEX DUMP]:3045022100A662 | |||
1503:d=9 hl=2 l= 9 prim: UTF8STRING :Sandelman | ||||
1514:d=7 hl=2 l= 36 cons: SET | ||||
1516:d=8 hl=2 l= 34 cons: SEQUENCE | ||||
1518:d=9 hl=2 l= 3 prim: OBJECT :commonName | ||||
1523:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com | ||||
1552:d=6 hl=2 l= 4 prim: INTEGER :0D85DC2D | ||||
1558:d=5 hl=2 l= 11 cons: SEQUENCE | ||||
1560:d=6 hl=2 l= 9 prim: OBJECT :sha256 | ||||
1571:d=5 hl=2 l= 105 cons: cont [ 0 ] | ||||
1573:d=6 hl=2 l= 24 cons: SEQUENCE | ||||
1575:d=7 hl=2 l= 9 prim: OBJECT :contentType | ||||
1586:d=7 hl=2 l= 11 cons: SET | ||||
1588:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data | ||||
1599:d=6 hl=2 l= 28 cons: SEQUENCE | ||||
1601:d=7 hl=2 l= 9 prim: OBJECT :signingTime | ||||
1612:d=7 hl=2 l= 15 cons: SET | ||||
1614:d=8 hl=2 l= 13 prim: UTCTIME :200225230448Z | ||||
1629:d=6 hl=2 l= 47 cons: SEQUENCE | ||||
1631:d=7 hl=2 l= 9 prim: OBJECT :messageDigest | ||||
1642:d=7 hl=2 l= 34 cons: SET | ||||
1644:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:B1E88AF0B2D1C5 | ||||
1678:d=5 hl=2 l= 10 cons: SEQUENCE | ||||
1680:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | ||||
1690:d=5 hl=2 l= 71 prim: OCTET STRING [HEX DUMP]:304502201C7003 | ||||
The JSON contained in the voucher request: | The JSON contained in the voucher-request: | |||
{"ietf-voucher-request:voucher":{"assertion":"proximity","cr | {"ietf-voucher-request:voucher":{"assertion":"proximity","cr | |||
eated-on":"2020-02-25T18:04:48.652-05:00","serial-number":"0 | eated-on":"2021-04-13T17:43:23.747-04:00","serial-number":"0 | |||
0-D0-E5-F2-00-02","nonce":"aMjgueKUT-22wVimj6z27Q","proximit | 0-D0-E5-F2-00-02","nonce":"-_XE9zK9q8Ll1qylMtLKeg","proximit | |||
y-registrar-cert":"MIIB/DCCAYKgAwIBAgIEP5ibUjAKBggqhkjOPQQDA | y-registrar-cert":"MIIB/DCCAYKgAwIBAgIEP5ibUjAKBggqhkjOPQQDA | |||
jBtMRIwEAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZ | jBtMRIwEAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZ | |||
WxtYW4xPDA6BgNVBAMMM2ZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zd | WxtYW4xPDA6BgNVBAMMM2ZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zd | |||
HJ1bmcgRm91bnRhaW4gUm9vdCBDQTAeFw0yMDAyMjUyMTMxNTRaFw0yMjAyM | HJ1bmcgRm91bnRhaW4gUm9vdCBDQTAeFw0yMDAyMjUyMTMxNTRaFw0yMjAyM | |||
jQyMTMxNTRaMFMxEjAQBgoJkiaJk/IsZAEZFgJjYTEZMBcGCgmSJomT8ixkA | jQyMTMxNTRaMFMxEjAQBgoJkiaJk/IsZAEZFgJjYTEZMBcGCgmSJomT8ixkA | |||
RkWCXNhbmRlbG1hbjEiMCAGA1UEAwwZZm91bnRhaW4tdGVzdC5leGFtcGxlL | RkWCXNhbmRlbG1hbjEiMCAGA1UEAwwZZm91bnRhaW4tdGVzdC5leGFtcGxlL | |||
mNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJZlUHI0up/l3eZf9vCBb | mNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJZlUHI0up/l3eZf9vCBb | |||
+lInoEMEgc7Ro+XZCtjAI0CD1fJfJR/hIyyDmHWyYiNFbRCH9fyarfkzgX4p | +lInoEMEgc7Ro+XZCtjAI0CD1fJfJR/hIyyDmHWyYiNFbRCH9fyarfkzgX4p | |||
0zTizqjKjAoMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMcMA4GA1UdDwEB/wQEA | 0zTizqjKjAoMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMcMA4GA1UdDwEB/wQEA | |||
wIHgDAKBggqhkjOPQQDAgNoADBlAjBmT2BMVUgelgf43R+5yBKNRTaHmyPAv | wIHgDAKBggqhkjOPQQDAgNoADBlAjBmT2BMVUgelgf43R+5yBKNRTaHmyPAv | |||
Lvxyz0mFVZvXx+/1RwOagmvG3aXmRkj/X4CMQC8rMNBsLoNr1L5nG56fwAdI | Lvxyz0mFVZvXx+/1RwOagmvG3aXmRkj/X4CMQC8rMNBsLoNr1L5nG56fwAdI | |||
8hiAWG8S8XAR5k1Cgx3YUQBSgdScFcAdf++Bw6Yy+U="}} | 8hiAWG8S8XAR5k1Cgx3YUQBSgdScFcAdf++Bw6Yy+U="}} | |||
C.2.2. Registrar to MASA | C.2.2. Registrar to MASA | |||
As described in Section 5.5 the registrar will sign a registrar | As described in Section 5.5, the registrar will sign a registrar | |||
voucher-request, and will include pledge's voucher request in the | voucher-request and will include the pledge's voucher-request in the | |||
prior-signed-voucher-request. | prior-signed-voucher-request. | |||
<CODE BEGINS> file "parboiled_vr_00-D0-E5-F2-00-02.b64" | <CODE BEGINS> file "parboiled_vr_00-D0-E5-F2-00-02.b64" | |||
MIIP9wYJKoZIhvcNAQcCoIIP6DCCD+QCAQExDTALBglghkgBZQMEAgEwggoMBgkqhkiG9w0BBwGg | MIIPYwYJKoZIhvcNAQcCoIIPVDCCD1ACAQExDTALBglghkgBZQMEAgEwggl4BgkqhkiG | |||
ggn9BIIJ+XsiaWV0Zi12b3VjaGVyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3NlcnRpb24iOiJwcm94 | 9w0BBwGggglpBIIJZXsiaWV0Zi12b3VjaGVyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3Nl | |||
aW1pdHkiLCJjcmVhdGVkLW9uIjoiMjAyMC0wMi0yNVQyMzowNDo0OS4wNTRaIiwic2VyaWFsLW51 | cnRpb24iOiJwcm94aW1pdHkiLCJjcmVhdGVkLW9uIjoiMjAyMS0wNC0xM1QyMTo0Mzoy | |||
bWJlciI6IjAwLUQwLUU1LUYyLTAwLTAyIiwibm9uY2UiOiJhTWpndWVLVVQtMjJ3VmltajZ6MjdR | My43ODdaIiwic2VyaWFsLW51bWJlciI6IjAwLUQwLUU1LUYyLTAwLTAyIiwibm9uY2Ui | |||
IiwicHJpb3Itc2lnbmVkLXZvdWNoZXItcmVxdWVzdCI6Ik1JSUczd1lKS29aSWh2Y05BUWNDb0lJ | OiItX1hFOXpLOXE4TGwxcXlsTXRMS2VnIiwicHJpb3Itc2lnbmVkLXZvdWNoZXItcmVx | |||
RzBEQ0NCc3dDQVFFeERUQUxCZ2xnaGtnQlpRTUVBZ0V3Z2dPSkJna3Foa2lHOXcwQkJ3R2dnZ042 | dWVzdCI6Ik1JSUdjQVlKS29aSWh2Y05BUWNDb0lJR1lUQ0NCbDBDQVFFeERUQUxCZ2xn | |||
QklJRGRuc2lhV1YwWmkxMmIzVmphR1Z5TFhKbGNYVmxjM1E2ZG05MVkyaGxjaUk2ZXlKaGMzTmxj | aGtnQlpRTUVBZ0V3Z2dPSkJna3Foa2lHOXcwQkJ3R2dnZ042QklJRGRuc2lhV1YwWmkx | |||
blJwYjI0aU9pSndjbTk0YVcxcGRIa2lMQ0pqY21WaGRHVmtMVzl1SWpvaU1qQXlNQzB3TWkweU5W | MmIzVmphR1Z5TFhKbGNYVmxjM1E2ZG05MVkyaGxjaUk2ZXlKaGMzTmxjblJwYjI0aU9p | |||
UXhPRG93TkRvME9DNDJOVEl0TURVNk1EQWlMQ0p6WlhKcFlXd3RiblZ0WW1WeUlqb2lNREF0UkRB | SndjbTk0YVcxcGRIa2lMQ0pqY21WaGRHVmtMVzl1SWpvaU1qQXlNUzB3TkMweE0xUXhO | |||
dFJUVXRSakl0TURBdE1ESWlMQ0p1YjI1alpTSTZJbUZOYW1kMVpVdFZWQzB5TW5kV2FXMXFObm95 | em8wTXpveU15NDNORGN0TURRNk1EQWlMQ0p6WlhKcFlXd3RiblZ0WW1WeUlqb2lNREF0 | |||
TjFFaUxDSndjbTk0YVcxcGRIa3RjbVZuYVhOMGNtRnlMV05sY25RaU9pSk5TVWxDTDBSRFEwRlpT | UkRBdFJUVXRSakl0TURBdE1ESWlMQ0p1YjI1alpTSTZJaTFmV0VVNWVrczVjVGhNYkRG | |||
MmRCZDBsQ1FXZEpSVkExYVdKVmFrRkxRbWRuY1docmFrOVFVVkZFUVdwQ2RFMVNTWGRGUVZsTFEx | eGVXeE5kRXhMWldjaUxDSndjbTk0YVcxcGRIa3RjbVZuYVhOMGNtRnlMV05sY25RaU9p | |||
cEpiV2xhVUhsTVIxRkNSMUpaUTFreVJYaEhWRUZZUW1kdlNtdHBZVXByTDBseldrRkZXa1puYkhw | Sk5TVWxDTDBSRFEwRlpTMmRCZDBsQ1FXZEpSVkExYVdKVmFrRkxRbWRuY1docmFrOVFV | |||
WlZ6VnJXbGQ0ZEZsWE5IaFFSRUUyUW1kT1ZrSkJUVTFOTWxwMlpGYzFNRmxYYkhWTVdGSnNZek5S | VkZFUVdwQ2RFMVNTWGRGUVZsTFExcEpiV2xhVUhsTVIxRkNSMUpaUTFreVJYaEhWRUZZ | |||
ZFZwWWFHaGlXRUp6V2xNMWFtSXlNR2RXVnpWNlpFaEtNV0p0WTJkU2JUa3hZbTVTYUdGWE5HZFZi | UW1kdlNtdHBZVXByTDBseldrRkZXa1puYkhwWlZ6VnJXbGQ0ZEZsWE5IaFFSRUUyUW1k | |||
VGwyWkVOQ1JGRlVRV1ZHZHpCNVRVUkJlVTFxVlhsTlZFMTRUbFJTWVVaM01IbE5ha0Y1VFdwUmVV | T1ZrSkJUVTFOTWxwMlpGYzFNRmxYYkhWTVdGSnNZek5SZFZwWWFHaGlXRUp6V2xNMWFt | |||
MVVUWGhPVkZKaFRVWk5lRVZxUVZGQ1oyOUthMmxoU21zdlNYTmFRVVZhUm1kS2FsbFVSVnBOUW1O | SXlNR2RXVnpWNlpFaEtNV0p0WTJkU2JUa3hZbTVTYUdGWE5HZFZiVGwyWkVOQ1JGRlVR | |||
SFEyZHRVMHB2YlZRNGFYaHJRVkpyVjBOWVRtaGliVkpzWWtjeGFHSnFSV2xOUTBGSFFURlZSVUYz | V1ZHZHpCNVRVUkJlVTFxVlhsTlZFMTRUbFJTWVVaM01IbE5ha0Y1VFdwUmVVMVVUWGhP | |||
ZDFwYWJUa3hZbTVTYUdGWE5IUmtSMVo2WkVNMWJHVkhSblJqUjNoc1RHMU9kbUpVUWxwTlFrMUhR | VkZKaFRVWk5lRVZxUVZGQ1oyOUthMmxoU21zdlNYTmFRVVZhUm1kS2FsbFVSVnBOUW1O | |||
bmx4UjFOTk5EbEJaMFZIUTBOeFIxTk5ORGxCZDBWSVFUQkpRVUpLV214VlNFa3dkWEF2YkRObFdt | SFEyZHRVMHB2YlZRNGFYaHJRVkpyVjBOWVRtaGliVkpzWWtjeGFHSnFSV2xOUTBGSFFU | |||
WTVka05DWWl0c1NXNXZSVTFGWjJNM1VtOHJXRnBEZEdwQlNUQkRSREZtU21aS1VpOW9TWGw1Ukcx | RlZSVUYzZDFwYWJUa3hZbTVTYUdGWE5IUmtSMVo2WkVNMWJHVkhSblJqUjNoc1RHMU9k | |||
SVYzbFphVTVHWWxKRFNEbG1lV0Z5Wm10NloxZzBjREI2VkdsNmNXcExha0Z2VFVKWlIwRXhWV1JL | bUpVUWxwTlFrMUhRbmx4UjFOTk5EbEJaMFZIUTBOeFIxTk5ORGxCZDBWSVFUQkpRVUpL | |||
VVVWQ0wzZFJUVTFCYjBkRFEzTkhRVkZWUmtKM1RXTk5RVFJIUVRGVlpFUjNSVUl2ZDFGRlFYZEpT | V214VlNFa3dkWEF2YkRObFdtWTVka05DWWl0c1NXNXZSVTFGWjJNM1VtOHJXRnBEZEdw | |||
R2RFUVV0Q1oyZHhhR3RxVDFCUlVVUkJaMDV2UVVSQ2JFRnFRbTFVTWtKTlZsVm5aV3huWmpRelVp | QlNUQkRSREZtU21aS1VpOW9TWGw1UkcxSVYzbFphVTVHWWxKRFNEbG1lV0Z5Wm10Nlox | |||
czFlVUpMVGxKVVlVaHRlVkJCZGt4MmVIbDZNRzFHVmxwMldIZ3JMekZTZDA5aFoyMTJSek5oV0cx | ZzBjREI2VkdsNmNXcExha0Z2VFVKWlIwRXhWV1JLVVVWQ0wzZFJUVTFCYjBkRFEzTkhR | |||
U2Eyb3ZXRFJEVFZGRE9ISk5Ua0p6VEc5T2NqRk1OVzVITlRabWQwRmtTVGhvYVVGWFJ6aFRPRmhC | VkZWUmtKM1RXTk5RVFJIUVRGVlpFUjNSVUl2ZDFGRlFYZEpTR2RFUVV0Q1oyZHhhR3Rx | |||
VWpWck1VTm5lRE5aVlZGQ1UyZGtVMk5HWTBGa1ppc3JRbmMyV1hrclZUMGlmWDJnZ2dIcU1JSUI1 | VDFCUlVVUkJaMDV2UVVSQ2JFRnFRbTFVTWtKTlZsVm5aV3huWmpRelVpczFlVUpMVGxK | |||
akNDQVd5Z0F3SUJBZ0lFRFlYY0xUQUtCZ2dxaGtqT1BRUURBakJkTVE4d0RRWURWUVFHRXdaRFlX | VVlVaHRlVkJCZGt4MmVIbDZNRzFHVmxwMldIZ3JMekZTZDA5aFoyMTJSek5oV0cxU2Ey | |||
NWhaR0V4RURBT0JnTlZCQWdNQjA5dWRHRnlhVzh4RWpBUUJnTlZCQXNNQ1ZOaGJtUmxiRzFoYmpF | b3ZXRFJEVFZGRE9ISk5Ua0p6VEc5T2NqRk1OVzVITlRabWQwRmtTVGhvYVVGWFJ6aFRP | |||
a01DSUdBMVVFQXd3YmFHbG5hSGRoZVMxMFpYTjBMbVY0WVcxd2JHVXVZMjl0SUVOQk1DQVhEVEl3 | RmhCVWpWck1VTm5lRE5aVlZGQ1UyZGtVMk5HWTBGa1ppc3JRbmMyV1hrclZUMGlmWDJn | |||
TURJd016QTJORGN5TUZvWUR6STVPVGt4TWpNeE1EQXdNREF3V2pBY01Sb3dHQVlEVlFRRkRCRXdN | Z2dHeU1JSUJyakNDQVRXZ0F3SUJBZ0lFRFlPdjJUQUtCZ2dxaGtqT1BRUURBakFtTVNR | |||
QzFFTUMxRk5TMUdNaTB3TUMwd01qQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJB | d0lnWURWUVFEREJ0b2FXZG9kMkY1TFhSbGMzUXVaWGhoYlhCc1pTNWpiMjBnUTBFd0lC | |||
T2pkVU9IczN6QUNwcUhuSzMyOURnVEhOUU1oQi9nUUU1QmVmQmJFMHNnY2JORW0wbGk4Ull3enJz | Y05NakV3TkRFek1qQXpOek01V2hnUE1qazVPVEV5TXpFd01EQXdNREJhTUJ3eEdqQVlC | |||
QWZZQ3hwOWs3RTFDYnBpZWxUOE9XZjB6K0lTZWpXVEJYTUIwR0ExVWREZ1FXQkJSRmlNeVdsZ0Jr | Z05WQkFVTUVUQXdMVVF3TFVVMUxVWXlMVEF3TFRBeU1Ga3dFd1lIS29aSXpqMENBUVlJ | |||
TjdDNkkyVmtaRlFJQm14V3JUQUpCZ05WSFJNRUFqQUFNQ3NHQ0NzR0FRVUZCd0VnQkI4TUhXaHBa | S29aSXpqMERBUWNEUWdBRUE2TjFRNGV6Zk1BS21vZWNyZmIwT0JNYzFBeUVIK0JBVGtG | |||
MmgzWVhrdGRHVnpkQzVsZUdGdGNHeGxMbU52YlRvNU5EUXpNQW9HQ0NxR1NNNDlCQU1DQTJnQU1H | NThGc1RTeUJ4czBTYlNXTHhGakRPdXdCOWdMR24yVHNUVUp1bUo2VlB3NVovVFA0aEo2 | |||
VUNNQ1BocVM3dkloSTBXcVhDRmRZb3ZlMDlsdGJPQkpYdnA4amNHS2d4eDdnRU5QSzNUWG1LWnlJ | TlpNRmN3SFFZRFZSME9CQllFRkVXSXpKYVdBR1Ezc0xvalpXUmtWQWdHYkZhdE1Ba0dB | |||
a0EwL0Z6ZFlHdWdJeEFMT05YQXJRL2dTRGtOTlBiWEtYc3o0QzZ2SElXakp5V0xkRkFsQjR2QVFk | MVVkRXdRQ01BQXdLd1lJS3dZQkJRVUhBU0FFSHhZZGFHbG5hSGRoZVMxMFpYTjBMbVY0 | |||
STE0aWI4Ti9qSHpYbTNBZ2tiVGhmekdDQVRzd2dnRTNBZ0VCTUdVd1hURVBNQTBHQTFVRUJoTUdR | WVcxd2JHVXVZMjl0T2prME5ETXdDZ1lJS29aSXpqMEVBd0lEWndBd1pBSXdUbWxHOHNY | |||
MkZ1WVdSaE1SQXdEZ1lEVlFRSURBZFBiblJoY21sdk1SSXdFQVlEVlFRTERBbFRZVzVrWld4dFlX | a0tHTmJ3YktRY1lNYXBGYm1TYm5ISFVSRlVvRnVScXZiZ1lYN0ZsWHBCY3pmd0Yya2xs | |||
NHhKREFpQmdOVkJBTU1HMmhwWjJoM1lYa3RkR1Z6ZEM1bGVHRnRjR3hsTG1OdmJTQkRRUUlFRFlY | TnV1amlnQWpBb3cxa2M0cjU1RW1pSCtPTUVYakJObFdsQlNaQzVRdUpqRWYwSnNteHNz | |||
Y0xUQUxCZ2xnaGtnQlpRTUVBZ0dnYVRBWUJna3Foa2lHOXcwQkNRTXhDd1lKS29aSWh2Y05BUWNC | YytwdWNqT0o0U2hxbmV4TUV5N2JqQXhnZ0VFTUlJQkFBSUJBVEF1TUNZeEpEQWlCZ05W | |||
TUJ3R0NTcUdTSWIzRFFFSkJURVBGdzB5TURBeU1qVXlNekEwTkRoYU1DOEdDU3FHU0liM0RRRUpC | QkFNTUcyaHBaMmgzWVhrdGRHVnpkQzVsZUdGdGNHeGxMbU52YlNCRFFRSUVEWU92MlRB | |||
REVpQkNDeDZJcndzdEhGNjA5WTBFcURLNjJRS2J5NGR1eXlJV3VkdnMxNU0xNkJCVEFLQmdncWhr | TEJnbGdoa2dCWlFNRUFnR2dhVEFZQmdrcWhraUc5dzBCQ1FNeEN3WUpLb1pJaHZjTkFR | |||
ak9QUVFEQWdSSE1FVUNJQnh3QTFVbGtJa3VRRGYvajdrWi9NVmVmZ3IxNDEraEtCRmdybk5uZ2p3 | Y0JNQndHQ1NxR1NJYjNEUUVKQlRFUEZ3MHlNVEEwTVRNeU1UUXpNak5hTUM4R0NTcUdT | |||
cEFpRUF5OGFYdDBHU0I5bTFibWlFVXBlZkNFaHhTdjJ4TFl1ckdsdWd2MGRmci9FPSJ9faCCBG8w | SWIzRFFFSkJERWlCQ0JKd2h5WWliSWplcWVSM2JPYUxVUnpNbEdyYzNGMlgra3ZKMWVy | |||
ggH8MIIBgqADAgECAgQ/mJtSMAoGCCqGSM49BAMCMG0xEjAQBgoJkiaJk/IsZAEZFgJjYTEZMBcG | cnRvQ3RUQUtCZ2dxaGtqT1BRUURBZ1JITUVVQ0lRQ21ZdUNFNjFIRlFYSC9FMTZHRE9D | |||
CgmSJomT8ixkARkWCXNhbmRlbG1hbjE8MDoGA1UEAwwzZm91bnRhaW4tdGVzdC5leGFtcGxlLmNv | c1ZxdUR0Z3IrUS82L0R1LzlRa3pBN2dJZ2Y3TUZoQUlQVzJQTndSYTJ2WkZRQUtYVWJp | |||
bSBVbnN0cnVuZyBGb3VudGFpbiBSb290IENBMB4XDTIwMDIyNTIxMzE1NFoXDTIyMDIyNDIxMzE1 | bWtpSEt6WEJBOG1kMFZIYlU9In19oIIEbzCCAfwwggGCoAMCAQICBD+Ym1IwCgYIKoZI | |||
NFowUzESMBAGCgmSJomT8ixkARkWAmNhMRkwFwYKCZImiZPyLGQBGRYJc2FuZGVsbWFuMSIwIAYD | zj0EAwIwbTESMBAGCgmSJomT8ixkARkWAmNhMRkwFwYKCZImiZPyLGQBGRYJc2FuZGVs | |||
VQQDDBlmb3VudGFpbi10ZXN0LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE | bWFuMTwwOgYDVQQDDDNmb3VudGFpbi10ZXN0LmV4YW1wbGUuY29tIFVuc3RydW5nIEZv | |||
lmVQcjS6n+Xd5l/28IFv6UiegQwSBztGj5dkK2MAjQIPV8l8lH+EjLIOYdbJiI0VtEIf1/Jqt+TO | dW50YWluIFJvb3QgQ0EwHhcNMjAwMjI1MjEzMTU0WhcNMjIwMjI0MjEzMTU0WjBTMRIw | |||
BfinTNOLOqMqMCgwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAxwwDgYDVR0PAQH/BAQDAgeAMAoGCCqG | EAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZWxtYW4xIjAgBgNV | |||
SM49BAMCA2gAMGUCMGZPYExVSB6WB/jdH7nIEo1FNoebI8C8u/HLPSYVVm9fH7/VHA5qCa8bdpeZ | BAMMGWZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMB | |||
GSP9fgIxALysw0Gwug2vUvmcbnp/AB0jyGIBYbxLxcBHmTUKDHdhRAFKB1JwVwB1/74HDpjL5TCC | BwNCAASWZVByNLqf5d3mX/bwgW/pSJ6BDBIHO0aPl2QrYwCNAg9XyXyUf4SMsg5h1smI | |||
AmswggHyoAMCAQICBClrBlkwCgYIKoZIzj0EAwIwbTESMBAGCgmSJomT8ixkARkWAmNhMRkwFwYK | jRW0Qh/X8mq35M4F+KdM04s6oyowKDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDHDAOBgNV | |||
CZImiZPyLGQBGRYJc2FuZGVsbWFuMTwwOgYDVQQDDDNmb3VudGFpbi10ZXN0LmV4YW1wbGUuY29t | HQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDaAAwZQIwZk9gTFVIHpYH+N0fucgSjUU2h5sj | |||
IFVuc3RydW5nIEZvdW50YWluIFJvb3QgQ0EwHhcNMjAwMjI1MjEzMTQ1WhcNMjIwMjI0MjEzMTQ1 | wLy78cs9JhVWb18fv9UcDmoJrxt2l5kZI/1+AjEAvKzDQbC6Da9S+Zxuen8AHSPIYgFh | |||
WjBtMRIwEAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZWxtYW4xPDA6BgNV | vEvFwEeZNQoMd2FEAUoHUnBXAHX/vgcOmMvlMIICazCCAfKgAwIBAgIEKWsGWTAKBggq | |||
BAMMM2ZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zdHJ1bmcgRm91bnRhaW4gUm9vdCBDQTB2 | hkjOPQQDAjBtMRIwEAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5k | |||
MBAGByqGSM49AgEGBSuBBAAiA2IABBt/WboXwxq8Zo2MbODD+jFxD2X2IpG9t1aAB9vfuHqlRU15 | ZWxtYW4xPDA6BgNVBAMMM2ZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zdHJ1bmcg | |||
ikaXGVmWMbGPaX0yvjzIPltjtUb2qNVvm/nA89O5FD9yR1Gkdt3S8L/1yo8wAX/4wl/T9SADRIuL | Rm91bnRhaW4gUm9vdCBDQTAeFw0yMDAyMjUyMTMxNDVaFw0yMjAyMjQyMTMxNDVaMG0x | |||
8gdstKNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLml9ssR | EjAQBgoJkiaJk/IsZAEZFgJjYTEZMBcGCgmSJomT8ixkARkWCXNhbmRlbG1hbjE8MDoG | |||
4QekSSynCMZ8ELyHs3QmMB8GA1UdIwQYMBaAFLml9ssR4QekSSynCMZ8ELyHs3QmMAoGCCqGSM49 | A1UEAwwzZm91bnRhaW4tdGVzdC5leGFtcGxlLmNvbSBVbnN0cnVuZyBGb3VudGFpbiBS | |||
BAMCA2cAMGQCMCCDBs6NmKRUemZMSjpwwlI2WlKNWX0gmyppFFiHONhVed39KTiVHpGTdrT1ZilE | b290IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEG39ZuhfDGrxmjYxs4MP6MXEPZfYi | |||
tAIwbzj5rxLtMNWFKXyxFli9Z5FDxA0w+dgcrC8G3bzVBkIshKIE6gKkXxdRJvvZL9JcMYIBSzCC | kb23VoAH29+4eqVFTXmKRpcZWZYxsY9pfTK+PMg+W2O1Rvao1W+b+cDz07kUP3JHUaR2 | |||
AUcCAQEwdTBtMRIwEAYKCZImiZPyLGQBGRYCY2ExGTAXBgoJkiaJk/IsZAEZFglzYW5kZWxtYW4x | 3dLwv/XKjzABf/jCX9P1IANEi4vyB2y0o2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud | |||
PDA6BgNVBAMMM2ZvdW50YWluLXRlc3QuZXhhbXBsZS5jb20gVW5zdHJ1bmcgRm91bnRhaW4gUm9v | DwEB/wQEAwIBBjAdBgNVHQ4EFgQUuaX2yxHhB6RJLKcIxnwQvIezdCYwHwYDVR0jBBgw | |||
dCBDQQIEP5ibUjALBglghkgBZQMEAgGgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG | FoAUuaX2yxHhB6RJLKcIxnwQvIezdCYwCgYIKoZIzj0EAwIDZwAwZAIwIIMGzo2YpFR6 | |||
SIb3DQEJBTEPFw0yMDAyMjUyMzA0NDlaMC8GCSqGSIb3DQEJBDEiBCA9gYxR1sS0giII3PwvOK/N | ZkxKOnDCUjZaUo1ZfSCbKmkUWIc42FV53f0pOJUekZN2tPVmKUS0AjBvOPmvEu0w1YUp | |||
5RUBwjSL/cDcrH/Bd+E1ajAKBggqhkjOPQQDAgRHMEUCIFieXZaO7P9eZMpCVn2laB4czw7I0s0P | fLEWWL1nkUPEDTD52BysLwbdvNUGQiyEogTqAqRfF1Em+9kv0lwxggFLMIIBRwIBATB1 | |||
s9+frcJtEBTTAiEAhCcB//qmgqcEA+90mquvVNENmFH9dxCH8Ihhz6SCVDI= | MG0xEjAQBgoJkiaJk/IsZAEZFgJjYTEZMBcGCgmSJomT8ixkARkWCXNhbmRlbG1hbjE8 | |||
MDoGA1UEAwwzZm91bnRhaW4tdGVzdC5leGFtcGxlLmNvbSBVbnN0cnVuZyBGb3VudGFp | ||||
biBSb290IENBAgQ/mJtSMAsGCWCGSAFlAwQCAaBpMBgGCSqGSIb3DQEJAzELBgkqhkiG | ||||
9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIxMDQxMzIxNDMyM1owLwYJKoZIhvcNAQkEMSIE | ||||
IEnOrdWjlG70K74IhCJ7UXi+wPS+r2C8DFEqjabGP+G8MAoGCCqGSM49BAMCBEcwRQIh | ||||
AMhO3M+tSWb2wKTBOXPArN+XvjSzAhaQA/uLj3qhPwi/AiBDDthf6mjMuirqXE0yjMif | ||||
C2UY9oNUFF9Nl0wEQpBBAA== | ||||
<CODE ENDS> | <CODE ENDS> | |||
The ASN1 decoding of the artifact: | The ASN1 decoding of the artifact: | |||
file: examples/parboiled_vr_00_D0-E5-02-00-2D.b64 | file: examples/parboiled_vr_00_D0-E5-02-00-2D.b64 | |||
0:d=0 hl=4 l=4087 cons: SEQUENCE | 0:d=0 hl=4 l=3939 cons: SEQUENCE | |||
4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData | 4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData | |||
15:d=1 hl=4 l=4072 cons: cont [ 0 ] | 15:d=1 hl=4 l=3924 cons: cont [ 0 ] | |||
19:d=2 hl=4 l=4068 cons: SEQUENCE | 19:d=2 hl=4 l=3920 cons: SEQUENCE | |||
23:d=3 hl=2 l= 1 prim: INTEGER :01 | 23:d=3 hl=2 l= 1 prim: INTEGER :01 | |||
26:d=3 hl=2 l= 13 cons: SET | 26:d=3 hl=2 l= 13 cons: SET | |||
28:d=4 hl=2 l= 11 cons: SEQUENCE | 28:d=4 hl=2 l= 11 cons: SEQUENCE | |||
30:d=5 hl=2 l= 9 prim: OBJECT :sha256 | 30:d=5 hl=2 l= 9 prim: OBJECT :sha256 | |||
41:d=3 hl=4 l=2572 cons: SEQUENCE | 41:d=3 hl=4 l=2424 cons: SEQUENCE | |||
45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data | 45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data | |||
56:d=4 hl=4 l=2557 cons: cont [ 0 ] | 56:d=4 hl=4 l=2409 cons: cont [ 0 ] | |||
60:d=5 hl=4 l=2553 prim: OCTET STRING :{"ietf-voucher-request:v | 60:d=5 hl=4 l=2405 prim: OCTET STRING :{"ietf-voucher-request:v | |||
2617:d=3 hl=4 l=1135 cons: cont [ 0 ] | 2469:d=3 hl=4 l=1135 cons: cont [ 0 ] | |||
2621:d=4 hl=4 l= 508 cons: SEQUENCE | 2473:d=4 hl=4 l= 508 cons: SEQUENCE | |||
2625:d=5 hl=4 l= 386 cons: SEQUENCE | 2477:d=5 hl=4 l= 386 cons: SEQUENCE | |||
2629:d=6 hl=2 l= 3 cons: cont [ 0 ] | 2481:d=6 hl=2 l= 3 cons: cont [ 0 ] | |||
2631:d=7 hl=2 l= 1 prim: INTEGER :02 | 2483:d=7 hl=2 l= 1 prim: INTEGER :02 | |||
2634:d=6 hl=2 l= 4 prim: INTEGER :3F989B52 | 2486:d=6 hl=2 l= 4 prim: INTEGER :3F989B52 | |||
2640:d=6 hl=2 l= 10 cons: SEQUENCE | 2492:d=6 hl=2 l= 10 cons: SEQUENCE | |||
2642:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 2494:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
2652:d=6 hl=2 l= 109 cons: SEQUENCE | 2504:d=6 hl=2 l= 109 cons: SEQUENCE | |||
2654:d=7 hl=2 l= 18 cons: SET | 2506:d=7 hl=2 l= 18 cons: SET | |||
2656:d=8 hl=2 l= 16 cons: SEQUENCE | 2508:d=8 hl=2 l= 16 cons: SEQUENCE | |||
2658:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 2510:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
2670:d=9 hl=2 l= 2 prim: IA5STRING :ca | 2522:d=9 hl=2 l= 2 prim: IA5STRING :ca | |||
2674:d=7 hl=2 l= 25 cons: SET | 2526:d=7 hl=2 l= 25 cons: SET | |||
2676:d=8 hl=2 l= 23 cons: SEQUENCE | 2528:d=8 hl=2 l= 23 cons: SEQUENCE | |||
2678:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 2530:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
2690:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | 2542:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | |||
2701:d=7 hl=2 l= 60 cons: SET | 2553:d=7 hl=2 l= 60 cons: SET | |||
2703:d=8 hl=2 l= 58 cons: SEQUENCE | 2555:d=8 hl=2 l= 58 cons: SEQUENCE | |||
2705:d=9 hl=2 l= 3 prim: OBJECT :commonName | 2557:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
2710:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co | 2562:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co | |||
2763:d=6 hl=2 l= 30 cons: SEQUENCE | 2615:d=6 hl=2 l= 30 cons: SEQUENCE | |||
2765:d=7 hl=2 l= 13 prim: UTCTIME :200225213154Z | 2617:d=7 hl=2 l= 13 prim: UTCTIME :200225213154Z | |||
2780:d=7 hl=2 l= 13 prim: UTCTIME :220224213154Z | 2632:d=7 hl=2 l= 13 prim: UTCTIME :220224213154Z | |||
2795:d=6 hl=2 l= 83 cons: SEQUENCE | 2647:d=6 hl=2 l= 83 cons: SEQUENCE | |||
2797:d=7 hl=2 l= 18 cons: SET | 2649:d=7 hl=2 l= 18 cons: SET | |||
2799:d=8 hl=2 l= 16 cons: SEQUENCE | 2651:d=8 hl=2 l= 16 cons: SEQUENCE | |||
2801:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 2653:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
2813:d=9 hl=2 l= 2 prim: IA5STRING :ca | 2665:d=9 hl=2 l= 2 prim: IA5STRING :ca | |||
2817:d=7 hl=2 l= 25 cons: SET | 2669:d=7 hl=2 l= 25 cons: SET | |||
2819:d=8 hl=2 l= 23 cons: SEQUENCE | 2671:d=8 hl=2 l= 23 cons: SEQUENCE | |||
2821:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 2673:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
2833:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | 2685:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | |||
2844:d=7 hl=2 l= 34 cons: SET | 2696:d=7 hl=2 l= 34 cons: SET | |||
2846:d=8 hl=2 l= 32 cons: SEQUENCE | 2698:d=8 hl=2 l= 32 cons: SEQUENCE | |||
2848:d=9 hl=2 l= 3 prim: OBJECT :commonName | 2700:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
2853:d=9 hl=2 l= 25 prim: UTF8STRING :fountain-test.example.co | 2705:d=9 hl=2 l= 25 prim: UTF8STRING :fountain-test.example.co | |||
2880:d=6 hl=2 l= 89 cons: SEQUENCE | 2732:d=6 hl=2 l= 89 cons: SEQUENCE | |||
2882:d=7 hl=2 l= 19 cons: SEQUENCE | 2734:d=7 hl=2 l= 19 cons: SEQUENCE | |||
2884:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | 2736:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | |||
2893:d=8 hl=2 l= 8 prim: OBJECT :prime256v1 | 2745:d=8 hl=2 l= 8 prim: OBJECT :prime256v1 | |||
2903:d=7 hl=2 l= 66 prim: BIT STRING | 2755:d=7 hl=2 l= 66 prim: BIT STRING | |||
2971:d=6 hl=2 l= 42 cons: cont [ 3 ] | 2823:d=6 hl=2 l= 42 cons: cont [ 3 ] | |||
2973:d=7 hl=2 l= 40 cons: SEQUENCE | 2825:d=7 hl=2 l= 40 cons: SEQUENCE | |||
2975:d=8 hl=2 l= 22 cons: SEQUENCE | 2827:d=8 hl=2 l= 22 cons: SEQUENCE | |||
2977:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Extended Key Usag | 2829:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Extended Key Usag | |||
2982:d=9 hl=2 l= 1 prim: BOOLEAN :255 | 2834:d=9 hl=2 l= 1 prim: BOOLEAN :255 | |||
2985:d=9 hl=2 l= 12 prim: OCTET STRING [HEX DUMP]:300A06082B0601 | 2837:d=9 hl=2 l= 12 prim: OCTET STRING [HEX DUMP]:300A06082B0601 | |||
2999:d=8 hl=2 l= 14 cons: SEQUENCE | 2851:d=8 hl=2 l= 14 cons: SEQUENCE | |||
3001:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Key Usage | 2853:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Key Usage | |||
3006:d=9 hl=2 l= 1 prim: BOOLEAN :255 | 2858:d=9 hl=2 l= 1 prim: BOOLEAN :255 | |||
3009:d=9 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:03020780 | 2861:d=9 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:03020780 | |||
3015:d=5 hl=2 l= 10 cons: SEQUENCE | 2867:d=5 hl=2 l= 10 cons: SEQUENCE | |||
3017:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 2869:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
3027:d=5 hl=2 l= 104 prim: BIT STRING | 2879:d=5 hl=2 l= 104 prim: BIT STRING | |||
3133:d=4 hl=4 l= 619 cons: SEQUENCE | 2985:d=4 hl=4 l= 619 cons: SEQUENCE | |||
3137:d=5 hl=4 l= 498 cons: SEQUENCE | 2989:d=5 hl=4 l= 498 cons: SEQUENCE | |||
3141:d=6 hl=2 l= 3 cons: cont [ 0 ] | 2993:d=6 hl=2 l= 3 cons: cont [ 0 ] | |||
3143:d=7 hl=2 l= 1 prim: INTEGER :02 | 2995:d=7 hl=2 l= 1 prim: INTEGER :02 | |||
3146:d=6 hl=2 l= 4 prim: INTEGER :296B0659 | 2998:d=6 hl=2 l= 4 prim: INTEGER :296B0659 | |||
3152:d=6 hl=2 l= 10 cons: SEQUENCE | 3004:d=6 hl=2 l= 10 cons: SEQUENCE | |||
3154:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 3006:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
3164:d=6 hl=2 l= 109 cons: SEQUENCE | 3016:d=6 hl=2 l= 109 cons: SEQUENCE | |||
3166:d=7 hl=2 l= 18 cons: SET | 3018:d=7 hl=2 l= 18 cons: SET | |||
3168:d=8 hl=2 l= 16 cons: SEQUENCE | 3020:d=8 hl=2 l= 16 cons: SEQUENCE | |||
3170:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 3022:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
3182:d=9 hl=2 l= 2 prim: IA5STRING :ca | 3034:d=9 hl=2 l= 2 prim: IA5STRING :ca | |||
3186:d=7 hl=2 l= 25 cons: SET | 3038:d=7 hl=2 l= 25 cons: SET | |||
3188:d=8 hl=2 l= 23 cons: SEQUENCE | 3040:d=8 hl=2 l= 23 cons: SEQUENCE | |||
3190:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 3042:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
3202:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | 3054:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | |||
3213:d=7 hl=2 l= 60 cons: SET | 3065:d=7 hl=2 l= 60 cons: SET | |||
3215:d=8 hl=2 l= 58 cons: SEQUENCE | 3067:d=8 hl=2 l= 58 cons: SEQUENCE | |||
3217:d=9 hl=2 l= 3 prim: OBJECT :commonName | 3069:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
3222:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co | 3074:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co | |||
3275:d=6 hl=2 l= 30 cons: SEQUENCE | 3127:d=6 hl=2 l= 30 cons: SEQUENCE | |||
3277:d=7 hl=2 l= 13 prim: UTCTIME :200225213145Z | 3129:d=7 hl=2 l= 13 prim: UTCTIME :200225213145Z | |||
3292:d=7 hl=2 l= 13 prim: UTCTIME :220224213145Z | 3144:d=7 hl=2 l= 13 prim: UTCTIME :220224213145Z | |||
3307:d=6 hl=2 l= 109 cons: SEQUENCE | 3159:d=6 hl=2 l= 109 cons: SEQUENCE | |||
3309:d=7 hl=2 l= 18 cons: SET | 3161:d=7 hl=2 l= 18 cons: SET | |||
3311:d=8 hl=2 l= 16 cons: SEQUENCE | 3163:d=8 hl=2 l= 16 cons: SEQUENCE | |||
3313:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 3165:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
3325:d=9 hl=2 l= 2 prim: IA5STRING :ca | 3177:d=9 hl=2 l= 2 prim: IA5STRING :ca | |||
3329:d=7 hl=2 l= 25 cons: SET | 3181:d=7 hl=2 l= 25 cons: SET | |||
3331:d=8 hl=2 l= 23 cons: SEQUENCE | 3183:d=8 hl=2 l= 23 cons: SEQUENCE | |||
3333:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 3185:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
3345:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | 3197:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | |||
3356:d=7 hl=2 l= 60 cons: SET | 3208:d=7 hl=2 l= 60 cons: SET | |||
3358:d=8 hl=2 l= 58 cons: SEQUENCE | 3210:d=8 hl=2 l= 58 cons: SEQUENCE | |||
3360:d=9 hl=2 l= 3 prim: OBJECT :commonName | 3212:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
3365:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co | 3217:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co | |||
3418:d=6 hl=2 l= 118 cons: SEQUENCE | 3270:d=6 hl=2 l= 118 cons: SEQUENCE | |||
3420:d=7 hl=2 l= 16 cons: SEQUENCE | 3272:d=7 hl=2 l= 16 cons: SEQUENCE | |||
3422:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | 3274:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | |||
3431:d=8 hl=2 l= 5 prim: OBJECT :secp384r1 | 3283:d=8 hl=2 l= 5 prim: OBJECT :secp384r1 | |||
3438:d=7 hl=2 l= 98 prim: BIT STRING | 3290:d=7 hl=2 l= 98 prim: BIT STRING | |||
3538:d=6 hl=2 l= 99 cons: cont [ 3 ] | 3390:d=6 hl=2 l= 99 cons: cont [ 3 ] | |||
3540:d=7 hl=2 l= 97 cons: SEQUENCE | 3392:d=7 hl=2 l= 97 cons: SEQUENCE | |||
3542:d=8 hl=2 l= 15 cons: SEQUENCE | 3394:d=8 hl=2 l= 15 cons: SEQUENCE | |||
3544:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints | 3396:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints | |||
3549:d=9 hl=2 l= 1 prim: BOOLEAN :255 | 3401:d=9 hl=2 l= 1 prim: BOOLEAN :255 | |||
3552:d=9 hl=2 l= 5 prim: OCTET STRING [HEX DUMP]:30030101FF | 3404:d=9 hl=2 l= 5 prim: OCTET STRING [HEX DUMP]:30030101FF | |||
3559:d=8 hl=2 l= 14 cons: SEQUENCE | 3411:d=8 hl=2 l= 14 cons: SEQUENCE | |||
3561:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Key Usage | 3413:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Key Usage | |||
3566:d=9 hl=2 l= 1 prim: BOOLEAN :255 | 3418:d=9 hl=2 l= 1 prim: BOOLEAN :255 | |||
3569:d=9 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:03020106 | 3421:d=9 hl=2 l= 4 prim: OCTET STRING [HEX DUMP]:03020106 | |||
3575:d=8 hl=2 l= 29 cons: SEQUENCE | 3427:d=8 hl=2 l= 29 cons: SEQUENCE | |||
3577:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Ident | 3429:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Ident | |||
3582:d=9 hl=2 l= 22 prim: OCTET STRING [HEX DUMP]:0414B9A5F6CB11 | 3434:d=9 hl=2 l= 22 prim: OCTET STRING [HEX DUMP]:0414B9A5F6CB11 | |||
3606:d=8 hl=2 l= 31 cons: SEQUENCE | 3458:d=8 hl=2 l= 31 cons: SEQUENCE | |||
3608:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Authority Key Ide | 3460:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Authority Key Ide | |||
3613:d=9 hl=2 l= 24 prim: OCTET STRING [HEX DUMP]:30168014B9A5F6 | 3465:d=9 hl=2 l= 24 prim: OCTET STRING [HEX DUMP]:30168014B9A5F6 | |||
3639:d=5 hl=2 l= 10 cons: SEQUENCE | 3491:d=5 hl=2 l= 10 cons: SEQUENCE | |||
3641:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 3493:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
3651:d=5 hl=2 l= 103 prim: BIT STRING | 3503:d=5 hl=2 l= 103 prim: BIT STRING | |||
3756:d=3 hl=4 l= 331 cons: SET | 3608:d=3 hl=4 l= 331 cons: SET | |||
3760:d=4 hl=4 l= 327 cons: SEQUENCE | 3612:d=4 hl=4 l= 327 cons: SEQUENCE | |||
3764:d=5 hl=2 l= 1 prim: INTEGER :01 | 3616:d=5 hl=2 l= 1 prim: INTEGER :01 | |||
3767:d=5 hl=2 l= 117 cons: SEQUENCE | 3619:d=5 hl=2 l= 117 cons: SEQUENCE | |||
3769:d=6 hl=2 l= 109 cons: SEQUENCE | 3621:d=6 hl=2 l= 109 cons: SEQUENCE | |||
3771:d=7 hl=2 l= 18 cons: SET | 3623:d=7 hl=2 l= 18 cons: SET | |||
3773:d=8 hl=2 l= 16 cons: SEQUENCE | 3625:d=8 hl=2 l= 16 cons: SEQUENCE | |||
3775:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 3627:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
3787:d=9 hl=2 l= 2 prim: IA5STRING :ca | 3639:d=9 hl=2 l= 2 prim: IA5STRING :ca | |||
3791:d=7 hl=2 l= 25 cons: SET | 3643:d=7 hl=2 l= 25 cons: SET | |||
3793:d=8 hl=2 l= 23 cons: SEQUENCE | 3645:d=8 hl=2 l= 23 cons: SEQUENCE | |||
3795:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | 3647:d=9 hl=2 l= 10 prim: OBJECT :domainComponent | |||
3807:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | 3659:d=9 hl=2 l= 9 prim: IA5STRING :sandelman | |||
3818:d=7 hl=2 l= 60 cons: SET | 3670:d=7 hl=2 l= 60 cons: SET | |||
3820:d=8 hl=2 l= 58 cons: SEQUENCE | 3672:d=8 hl=2 l= 58 cons: SEQUENCE | |||
3822:d=9 hl=2 l= 3 prim: OBJECT :commonName | 3674:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
3827:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co | 3679:d=9 hl=2 l= 51 prim: UTF8STRING :fountain-test.example.co | |||
3880:d=6 hl=2 l= 4 prim: INTEGER :3F989B52 | 3732:d=6 hl=2 l= 4 prim: INTEGER :3F989B52 | |||
3886:d=5 hl=2 l= 11 cons: SEQUENCE | 3738:d=5 hl=2 l= 11 cons: SEQUENCE | |||
3888:d=6 hl=2 l= 9 prim: OBJECT :sha256 | 3740:d=6 hl=2 l= 9 prim: OBJECT :sha256 | |||
3899:d=5 hl=2 l= 105 cons: cont [ 0 ] | 3751:d=5 hl=2 l= 105 cons: cont [ 0 ] | |||
3901:d=6 hl=2 l= 24 cons: SEQUENCE | 3753:d=6 hl=2 l= 24 cons: SEQUENCE | |||
3903:d=7 hl=2 l= 9 prim: OBJECT :contentType | 3755:d=7 hl=2 l= 9 prim: OBJECT :contentType | |||
3914:d=7 hl=2 l= 11 cons: SET | 3766:d=7 hl=2 l= 11 cons: SET | |||
3916:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data | 3768:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data | |||
3927:d=6 hl=2 l= 28 cons: SEQUENCE | 3779:d=6 hl=2 l= 28 cons: SEQUENCE | |||
3929:d=7 hl=2 l= 9 prim: OBJECT :signingTime | 3781:d=7 hl=2 l= 9 prim: OBJECT :signingTime | |||
3940:d=7 hl=2 l= 15 cons: SET | 3792:d=7 hl=2 l= 15 cons: SET | |||
3942:d=8 hl=2 l= 13 prim: UTCTIME :200225230449Z | 3794:d=8 hl=2 l= 13 prim: UTCTIME :210413214323Z | |||
3957:d=6 hl=2 l= 47 cons: SEQUENCE | 3809:d=6 hl=2 l= 47 cons: SEQUENCE | |||
3959:d=7 hl=2 l= 9 prim: OBJECT :messageDigest | 3811:d=7 hl=2 l= 9 prim: OBJECT :messageDigest | |||
3970:d=7 hl=2 l= 34 cons: SET | 3822:d=7 hl=2 l= 34 cons: SET | |||
3972:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:3D818C51D6C4B4 | 3824:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:49CEADD5A3946E | |||
4006:d=5 hl=2 l= 10 cons: SEQUENCE | 3858:d=5 hl=2 l= 10 cons: SEQUENCE | |||
4008:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 3860:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
4018:d=5 hl=2 l= 71 prim: OCTET STRING [HEX DUMP]:30450220589E5D | 3870:d=5 hl=2 l= 71 prim: OCTET STRING [HEX DUMP]:3045022100C84E | |||
The JSON contained in the voucher request. Note that the previous | The JSON contained in the voucher-request. Note that the previous | |||
voucher request is in the prior-signed-voucher-request attribute. | voucher-request is in the prior-signed-voucher-request attribute. | |||
{"ietf-voucher-request:voucher":{"assertion":"proximity","cr | {"ietf-voucher-request:voucher":{"assertion":"proximity","cr | |||
eated-on":"2020-02-25T23:04:49.054Z","serial-number":"00-D0- | eated-on":"2021-04-13T21:43:23.787Z","serial-number":"00-D0- | |||
E5-F2-00-02","nonce":"aMjgueKUT-22wVimj6z27Q","prior-signed- | E5-F2-00-02","nonce":"-_XE9zK9q8Ll1qylMtLKeg","prior-signed- | |||
voucher-request":"MIIG3wYJKoZIhvcNAQcCoIIG0DCCBswCAQExDTALBg | voucher-request":"MIIGcAYJKoZIhvcNAQcCoIIGYTCCBl0CAQExDTALBg | |||
lghkgBZQMEAgEwggOJBgkqhkiG9w0BBwGgggN6BIIDdnsiaWV0Zi12b3VjaG | lghkgBZQMEAgEwggOJBgkqhkiG9w0BBwGgggN6BIIDdnsiaWV0Zi12b3VjaG | |||
VyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3NlcnRpb24iOiJwcm94aW1pdHkiLC | VyLXJlcXVlc3Q6dm91Y2hlciI6eyJhc3NlcnRpb24iOiJwcm94aW1pdHkiLC | |||
JjcmVhdGVkLW9uIjoiMjAyMC0wMi0yNVQxODowNDo0OC42NTItMDU6MDAiLC | JjcmVhdGVkLW9uIjoiMjAyMS0wNC0xM1QxNzo0MzoyMy43NDctMDQ6MDAiLC | |||
JzZXJpYWwtbnVtYmVyIjoiMDAtRDAtRTUtRjItMDAtMDIiLCJub25jZSI6Im | JzZXJpYWwtbnVtYmVyIjoiMDAtRDAtRTUtRjItMDAtMDIiLCJub25jZSI6Ii | |||
FNamd1ZUtVVC0yMndWaW1qNnoyN1EiLCJwcm94aW1pdHktcmVnaXN0cmFyLW | 1fWEU5eks5cThMbDFxeWxNdExLZWciLCJwcm94aW1pdHktcmVnaXN0cmFyLW | |||
NlcnQiOiJNSUlCL0RDQ0FZS2dBd0lCQWdJRVA1aWJVakFLQmdncWhrak9QUV | NlcnQiOiJNSUlCL0RDQ0FZS2dBd0lCQWdJRVA1aWJVakFLQmdncWhrak9QUV | |||
FEQWpCdE1SSXdFQVlLQ1pJbWlaUHlMR1FCR1JZQ1kyRXhHVEFYQmdvSmtpYU | FEQWpCdE1SSXdFQVlLQ1pJbWlaUHlMR1FCR1JZQ1kyRXhHVEFYQmdvSmtpYU | |||
prL0lzWkFFWkZnbHpZVzVrWld4dFlXNHhQREE2QmdOVkJBTU1NMlp2ZFc1MF | prL0lzWkFFWkZnbHpZVzVrWld4dFlXNHhQREE2QmdOVkJBTU1NMlp2ZFc1MF | |||
lXbHVMWFJsYzNRdVpYaGhiWEJzWlM1amIyMGdWVzV6ZEhKMWJtY2dSbTkxYm | lXbHVMWFJsYzNRdVpYaGhiWEJzWlM1amIyMGdWVzV6ZEhKMWJtY2dSbTkxYm | |||
5SaGFXNGdVbTl2ZENCRFFUQWVGdzB5TURBeU1qVXlNVE14TlRSYUZ3MHlNak | 5SaGFXNGdVbTl2ZENCRFFUQWVGdzB5TURBeU1qVXlNVE14TlRSYUZ3MHlNak | |||
F5TWpReU1UTXhOVFJhTUZNeEVqQVFCZ29Ka2lhSmsvSXNaQUVaRmdKallURV | F5TWpReU1UTXhOVFJhTUZNeEVqQVFCZ29Ka2lhSmsvSXNaQUVaRmdKallURV | |||
pNQmNHQ2dtU0pvbVQ4aXhrQVJrV0NYTmhibVJsYkcxaGJqRWlNQ0FHQTFVRU | pNQmNHQ2dtU0pvbVQ4aXhrQVJrV0NYTmhibVJsYkcxaGJqRWlNQ0FHQTFVRU | |||
F3d1pabTkxYm5SaGFXNHRkR1Z6ZEM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQn | F3d1pabTkxYm5SaGFXNHRkR1Z6ZEM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQn | |||
lxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKWmxVSEkwdXAvbDNlWmY5dk | lxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKWmxVSEkwdXAvbDNlWmY5dk | |||
NCYitsSW5vRU1FZ2M3Um8rWFpDdGpBSTBDRDFmSmZKUi9oSXl5RG1IV3lZaU | NCYitsSW5vRU1FZ2M3Um8rWFpDdGpBSTBDRDFmSmZKUi9oSXl5RG1IV3lZaU | |||
5GYlJDSDlmeWFyZmt6Z1g0cDB6VGl6cWpLakFvTUJZR0ExVWRKUUVCL3dRTU | 5GYlJDSDlmeWFyZmt6Z1g0cDB6VGl6cWpLakFvTUJZR0ExVWRKUUVCL3dRTU | |||
1Bb0dDQ3NHQVFVRkJ3TWNNQTRHQTFVZER3RUIvd1FFQXdJSGdEQUtCZ2dxaG | 1Bb0dDQ3NHQVFVRkJ3TWNNQTRHQTFVZER3RUIvd1FFQXdJSGdEQUtCZ2dxaG | |||
tqT1BRUURBZ05vQURCbEFqQm1UMkJNVlVnZWxnZjQzUis1eUJLTlJUYUhteV | tqT1BRUURBZ05vQURCbEFqQm1UMkJNVlVnZWxnZjQzUis1eUJLTlJUYUhteV | |||
BBdkx2eHl6MG1GVlp2WHgrLzFSd09hZ212RzNhWG1Sa2ovWDRDTVFDOHJNTk | BBdkx2eHl6MG1GVlp2WHgrLzFSd09hZ212RzNhWG1Sa2ovWDRDTVFDOHJNTk | |||
JzTG9OcjFMNW5HNTZmd0FkSThoaUFXRzhTOFhBUjVrMUNneDNZVVFCU2dkU2 | JzTG9OcjFMNW5HNTZmd0FkSThoaUFXRzhTOFhBUjVrMUNneDNZVVFCU2dkU2 | |||
NGY0FkZisrQnc2WXkrVT0ifX2gggHqMIIB5jCCAWygAwIBAgIEDYXcLTAKBg | NGY0FkZisrQnc2WXkrVT0ifX2gggGyMIIBrjCCATWgAwIBAgIEDYOv2TAKBg | |||
gqhkjOPQQDAjBdMQ8wDQYDVQQGEwZDYW5hZGExEDAOBgNVBAgMB09udGFyaW | gqhkjOPQQDAjAmMSQwIgYDVQQDDBtoaWdod2F5LXRlc3QuZXhhbXBsZS5jb2 | |||
8xEjAQBgNVBAsMCVNhbmRlbG1hbjEkMCIGA1UEAwwbaGlnaHdheS10ZXN0Lm | 0gQ0EwIBcNMjEwNDEzMjAzNzM5WhgPMjk5OTEyMzEwMDAwMDBaMBwxGjAYBg | |||
V4YW1wbGUuY29tIENBMCAXDTIwMDIwMzA2NDcyMFoYDzI5OTkxMjMxMDAwMD | NVBAUMETAwLUQwLUU1LUYyLTAwLTAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQ | |||
AwWjAcMRowGAYDVQQFDBEwMC1EMC1FNS1GMi0wMC0wMjBZMBMGByqGSM49Ag | cDQgAEA6N1Q4ezfMAKmoecrfb0OBMc1AyEH+BATkF58FsTSyBxs0SbSWLxFj | |||
EGCCqGSM49AwEHA0IABAOjdUOHs3zACpqHnK329DgTHNQMhB/gQE5BefBbE0 | DOuwB9gLGn2TsTUJumJ6VPw5Z/TP4hJ6NZMFcwHQYDVR0OBBYEFEWIzJaWAG | |||
sgcbNEm0li8RYwzrsAfYCxp9k7E1CbpielT8OWf0z+ISejWTBXMB0GA1UdDg | Q3sLojZWRkVAgGbFatMAkGA1UdEwQCMAAwKwYIKwYBBQUHASAEHxYdaGlnaH | |||
QWBBRFiMyWlgBkN7C6I2VkZFQIBmxWrTAJBgNVHRMEAjAAMCsGCCsGAQUFBw | dheS10ZXN0LmV4YW1wbGUuY29tOjk0NDMwCgYIKoZIzj0EAwIDZwAwZAIwTm | |||
EgBB8MHWhpZ2h3YXktdGVzdC5leGFtcGxlLmNvbTo5NDQzMAoGCCqGSM49BA | lG8sXkKGNbwbKQcYMapFbmSbnHHURFUoFuRqvbgYX7FlXpBczfwF2kllNuuj | |||
MCA2gAMGUCMCPhqS7vIhI0WqXCFdYove09ltbOBJXvp8jcGKgxx7gENPK3TX | igAjAow1kc4r55EmiH+OMEXjBNlWlBSZC5QuJjEf0Jsmxssc+pucjOJ4Shqn | |||
mKZyIkA0/FzdYGugIxALONXArQ/gSDkNNPbXKXsz4C6vHIWjJyWLdFAlB4vA | exMEy7bjAxggEEMIIBAAIBATAuMCYxJDAiBgNVBAMMG2hpZ2h3YXktdGVzdC | |||
QdI14ib8N/jHzXm3AgkbThfzGCATswggE3AgEBMGUwXTEPMA0GA1UEBhMGQ2 | 5leGFtcGxlLmNvbSBDQQIEDYOv2TALBglghkgBZQMEAgGgaTAYBgkqhkiG9w | |||
FuYWRhMRAwDgYDVQQIDAdPbnRhcmlvMRIwEAYDVQQLDAlTYW5kZWxtYW4xJD | 0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMTA0MTMyMTQzMj | |||
AiBgNVBAMMG2hpZ2h3YXktdGVzdC5leGFtcGxlLmNvbSBDQQIEDYXcLTALBg | NaMC8GCSqGSIb3DQEJBDEiBCBJwhyYibIjeqeR3bOaLURzMlGrc3F2X+kvJ1 | |||
lghkgBZQMEAgGgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSI | errtoCtTAKBggqhkjOPQQDAgRHMEUCIQCmYuCE61HFQXH/E16GDOCsVquDtg | |||
b3DQEJBTEPFw0yMDAyMjUyMzA0NDhaMC8GCSqGSIb3DQEJBDEiBCCx6Irwst | r+Q/6/Du/9QkzA7gIgf7MFhAIPW2PNwRa2vZFQAKXUbimkiHKzXBA8md0VHb | |||
HF609Y0EqDK62QKby4duyyIWudvs15M16BBTAKBggqhkjOPQQDAgRHMEUCIB | U="}} | |||
xwA1UlkIkuQDf/j7kZ/MVefgr141+hKBFgrnNngjwpAiEAy8aXt0GSB9m1bm | ||||
iEUpefCEhxSv2xLYurGlugv0dfr/E="}} | ||||
C.2.3. MASA to Registrar | C.2.3. MASA to Registrar | |||
The MASA will return a voucher to the registrar, to be relayed to the | The MASA will return a voucher to the registrar, which is to be | |||
pledge. | relayed to the pledge. | |||
<CODE BEGINS> file "voucher_00-D0-E5-F2-00-02.b64" | <CODE BEGINS> file "voucher_00-D0-E5-F2-00-02.b64" | |||
MIIGxwYJKoZIhvcNAQcCoIIGuDCCBrQCAQExDTALBglghkgBZQMEAgEwggN4BgkqhkiG9w0BBwGg | MIIGIgYJKoZIhvcNAQcCoIIGEzCCBg8CAQExDTALBglghkgBZQMEAgEwggN4BgkqhkiG | |||
ggNpBIIDZXsiaWV0Zi12b3VjaGVyOnZvdWNoZXIiOnsiYXNzZXJ0aW9uIjoibG9nZ2VkIiwiY3Jl | 9w0BBwGgggNpBIIDZXsiaWV0Zi12b3VjaGVyOnZvdWNoZXIiOnsiYXNzZXJ0aW9uIjoi | |||
YXRlZC1vbiI6IjIwMjAtMDItMjVUMTg6MDQ6NDkuMzAzLTA1OjAwIiwic2VyaWFsLW51bWJlciI6 | bG9nZ2VkIiwiY3JlYXRlZC1vbiI6IjIwMjEtMDQtMTNUMTc6NDM6MjQuNTg5LTA0OjAw | |||
IjAwLUQwLUU1LUYyLTAwLTAyIiwibm9uY2UiOiJhTWpndWVLVVQtMjJ3VmltajZ6MjdRIiwicGlu | Iiwic2VyaWFsLW51bWJlciI6IjAwLUQwLUU1LUYyLTAwLTAyIiwibm9uY2UiOiItX1hF | |||
bmVkLWRvbWFpbi1jZXJ0IjoiTUlJQi9EQ0NBWUtnQXdJQkFnSUVQNWliVWpBS0JnZ3Foa2pPUFFR | OXpLOXE4TGwxcXlsTXRMS2VnIiwicGlubmVkLWRvbWFpbi1jZXJ0IjoiTUlJQi9EQ0NB | |||
REFqQnRNUkl3RUFZS0NaSW1pWlB5TEdRQkdSWUNZMkV4R1RBWEJnb0praWFKay9Jc1pBRVpGZ2x6 | WUtnQXdJQkFnSUVQNWliVWpBS0JnZ3Foa2pPUFFRREFqQnRNUkl3RUFZS0NaSW1pWlB5 | |||
WVc1a1pXeHRZVzR4UERBNkJnTlZCQU1NTTJadmRXNTBZV2x1TFhSbGMzUXVaWGhoYlhCc1pTNWpi | TEdRQkdSWUNZMkV4R1RBWEJnb0praWFKay9Jc1pBRVpGZ2x6WVc1a1pXeHRZVzR4UERB | |||
MjBnVlc1emRISjFibWNnUm05MWJuUmhhVzRnVW05dmRDQkRRVEFlRncweU1EQXlNalV5TVRNeE5U | NkJnTlZCQU1NTTJadmRXNTBZV2x1TFhSbGMzUXVaWGhoYlhCc1pTNWpiMjBnVlc1emRI | |||
UmFGdzB5TWpBeU1qUXlNVE14TlRSYU1GTXhFakFRQmdvSmtpYUprL0lzWkFFWkZnSmpZVEVaTUJj | SjFibWNnUm05MWJuUmhhVzRnVW05dmRDQkRRVEFlRncweU1EQXlNalV5TVRNeE5UUmFG | |||
R0NnbVNKb21UOGl4a0FSa1dDWE5oYm1SbGJHMWhiakVpTUNBR0ExVUVBd3daWm05MWJuUmhhVzR0 | dzB5TWpBeU1qUXlNVE14TlRSYU1GTXhFakFRQmdvSmtpYUprL0lzWkFFWkZnSmpZVEVa | |||
ZEdWemRDNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFC | TUJjR0NnbVNKb21UOGl4a0FSa1dDWE5oYm1SbGJHMWhiakVpTUNBR0ExVUVBd3daWm05 | |||
SlpsVUhJMHVwL2wzZVpmOXZDQmIrbElub0VNRWdjN1JvK1haQ3RqQUkwQ0QxZkpmSlIvaEl5eURt | MWJuUmhhVzR0ZEdWemRDNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0ND | |||
SFd5WWlORmJSQ0g5ZnlhcmZremdYNHAwelRpenFqS2pBb01CWUdBMVVkSlFFQi93UU1NQW9HQ0Nz | cUdTTTQ5QXdFSEEwSUFCSlpsVUhJMHVwL2wzZVpmOXZDQmIrbElub0VNRWdjN1JvK1ha | |||
R0FRVUZCd01jTUE0R0ExVWREd0VCL3dRRUF3SUhnREFLQmdncWhrak9QUVFEQWdOb0FEQmxBakJt | Q3RqQUkwQ0QxZkpmSlIvaEl5eURtSFd5WWlORmJSQ0g5ZnlhcmZremdYNHAwelRpenFq | |||
VDJCTVZVZ2VsZ2Y0M1IrNXlCS05SVGFIbXlQQXZMdnh5ejBtRlZadlh4Ky8xUndPYWdtdkczYVht | S2pBb01CWUdBMVVkSlFFQi93UU1NQW9HQ0NzR0FRVUZCd01jTUE0R0ExVWREd0VCL3dR | |||
UmtqL1g0Q01RQzhyTU5Cc0xvTnIxTDVuRzU2ZndBZEk4aGlBV0c4UzhYQVI1azFDZ3gzWVVRQlNn | RUF3SUhnREFLQmdncWhrak9QUVFEQWdOb0FEQmxBakJtVDJCTVZVZ2VsZ2Y0M1IrNXlC | |||
ZFNjRmNBZGYrK0J3Nll5K1U9In19oIIB4zCCAd8wggFkoAMCAQICBBuZX1QwCgYIKoZIzj0EAwIw | S05SVGFIbXlQQXZMdnh5ejBtRlZadlh4Ky8xUndPYWdtdkczYVhtUmtqL1g0Q01RQzhy | |||
XTEPMA0GA1UEBhMGQ2FuYWRhMRAwDgYDVQQIDAdPbnRhcmlvMRIwEAYDVQQLDAlTYW5kZWxtYW4x | TU5Cc0xvTnIxTDVuRzU2ZndBZEk4aGlBV0c4UzhYQVI1azFDZ3gzWVVRQlNnZFNjRmNB | |||
JDAiBgNVBAMMG2hpZ2h3YXktdGVzdC5leGFtcGxlLmNvbSBDQTAeFw0xOTAyMTIyMjIyNDFaFw0y | ZGYrK0J3Nll5K1U9In19oIIBdDCCAXAwgfagAwIBAgIEC4cKMTAKBggqhkjOPQQDAjAm | |||
MTAyMTEyMjIyNDFaMF8xDzANBgNVBAYTBkNhbmFkYTEQMA4GA1UECAwHT250YXJpbzESMBAGA1UE | MSQwIgYDVQQDDBtoaWdod2F5LXRlc3QuZXhhbXBsZS5jb20gQ0EwHhcNMjEwNDEzMjE0 | |||
CwwJU2FuZGVsbWFuMSYwJAYDVQQDDB1oaWdod2F5LXRlc3QuZXhhbXBsZS5jb20gTUFTQTBZMBMG | MDE2WhcNMjMwNDEzMjE0MDE2WjAoMSYwJAYDVQQDDB1oaWdod2F5LXRlc3QuZXhhbXBs | |||
ByqGSM49AgEGCCqGSM49AwEHA0IABKoEFaNEueJE+Mn5GwcbpnRznB66bKmzqTCpojJZ96AdRwFt | ZS5jb20gTUFTQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKoEFaNEueJE+Mn5Gwcb | |||
uTCVfoKouLTBX0idIhMLfJLM31lyuKy4CUtpp6WjEDAOMAwGA1UdEwEB/wQCMAAwCgYIKoZIzj0E | pnRznB66bKmzqTCpojJZ96AdRwFtuTCVfoKouLTBX0idIhMLfJLM31lyuKy4CUtpp6Wj | |||
AwIDaQAwZgIxAL1V5ZsO+/xelSnjgbMVNaqTGKIEvkRyslF9TW3r0dXBEDqyOXtXP8XMsKMO55lG | EDAOMAwGA1UdEwEB/wQCMAAwCgYIKoZIzj0EAwIDaQAwZgIxAK7LYS3UXI1uhqoLBh3G | |||
ugIxAPZ/RH23FPrRZ2rUEcNLrub7mphW+oUhLlxITPA/8ps/roggp675cv9b+Xhozw9IyTGCATsw | 02C6MnM2JdMjhUmHHM6UI3kankFVJB0VIqFIuwrAqzwTcwIxAIY8Z7OVouLl+a35HZzB | |||
ggE3AgEBMGUwXTEPMA0GA1UEBhMGQ2FuYWRhMRAwDgYDVQQIDAdPbnRhcmlvMRIwEAYDVQQLDAlT | NDJ49c/q1UcDnwC/0FnLUcKYBIEkilETULF1si+dqLT0uTGCAQUwggEBAgEBMC4wJjEk | |||
YW5kZWxtYW4xJDAiBgNVBAMMG2hpZ2h3YXktdGVzdC5leGFtcGxlLmNvbSBDQQIEG5lfVDALBglg | MCIGA1UEAwwbaGlnaHdheS10ZXN0LmV4YW1wbGUuY29tIENBAgQLhwoxMAsGCWCGSAFl | |||
hkgBZQMEAgGgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMDAy | AwQCAaBpMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIx | |||
MjUyMzA0NDlaMC8GCSqGSIb3DQEJBDEiBCCJQso4Z9msdaPk3bsDltTkVckX50DvOPuOR9Svi5M9 | MDQxMzIxNDMyNFowLwYJKoZIhvcNAQkEMSIEIFUUjg4WYVO+MpX122Qfk/7zm/G6/B59 | |||
RDAKBggqhkjOPQQDAgRHMEUCIQCKESXfM3iV8hpkqcxAKA1veArA6GFpN0jzyns4El8uDgIgSRQi | HD/xrVR0lGIjMAoGCCqGSM49BAMCBEgwRgIhAOhUfxbH2dwpB2BrTDcsYSjRkCCk/WE6 | |||
9/MntuJhAM/tJCZBkfHBoAGX4PFAwwbs5LFZtAw= | Mdt+y4z5KD9IAiEAphwdIUb40A0noNIUpH7N2lTyAFZgyn1lNHTteY9DmYI= | |||
<CODE ENDS> | <CODE ENDS> | |||
The ASN1 decoding of the artifact: | The ASN1 decoding of the artifact: | |||
file: examples/voucher_00-D0-E5-F2-00-02.b64 | file: examples/voucher_00-D0-E5-F2-00-02.b64 | |||
0:d=0 hl=4 l=1735 cons: SEQUENCE | 0:d=0 hl=4 l=1570 cons: SEQUENCE | |||
4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData | 4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData | |||
15:d=1 hl=4 l=1720 cons: cont [ 0 ] | 15:d=1 hl=4 l=1555 cons: cont [ 0 ] | |||
19:d=2 hl=4 l=1716 cons: SEQUENCE | 19:d=2 hl=4 l=1551 cons: SEQUENCE | |||
23:d=3 hl=2 l= 1 prim: INTEGER :01 | 23:d=3 hl=2 l= 1 prim: INTEGER :01 | |||
26:d=3 hl=2 l= 13 cons: SET | 26:d=3 hl=2 l= 13 cons: SET | |||
28:d=4 hl=2 l= 11 cons: SEQUENCE | 28:d=4 hl=2 l= 11 cons: SEQUENCE | |||
30:d=5 hl=2 l= 9 prim: OBJECT :sha256 | 30:d=5 hl=2 l= 9 prim: OBJECT :sha256 | |||
41:d=3 hl=4 l= 888 cons: SEQUENCE | 41:d=3 hl=4 l= 888 cons: SEQUENCE | |||
45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data | 45:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data | |||
56:d=4 hl=4 l= 873 cons: cont [ 0 ] | 56:d=4 hl=4 l= 873 cons: cont [ 0 ] | |||
60:d=5 hl=4 l= 869 prim: OCTET STRING :{"ietf-voucher:voucher": | 60:d=5 hl=4 l= 869 prim: OCTET STRING :{"ietf-voucher:voucher": | |||
933:d=3 hl=4 l= 483 cons: cont [ 0 ] | 933:d=3 hl=4 l= 372 cons: cont [ 0 ] | |||
937:d=4 hl=4 l= 479 cons: SEQUENCE | 937:d=4 hl=4 l= 368 cons: SEQUENCE | |||
941:d=5 hl=4 l= 356 cons: SEQUENCE | 941:d=5 hl=3 l= 246 cons: SEQUENCE | |||
945:d=6 hl=2 l= 3 cons: cont [ 0 ] | 944:d=6 hl=2 l= 3 cons: cont [ 0 ] | |||
947:d=7 hl=2 l= 1 prim: INTEGER :02 | 946:d=7 hl=2 l= 1 prim: INTEGER :02 | |||
950:d=6 hl=2 l= 4 prim: INTEGER :1B995F54 | 949:d=6 hl=2 l= 4 prim: INTEGER :0B870A31 | |||
956:d=6 hl=2 l= 10 cons: SEQUENCE | 955:d=6 hl=2 l= 10 cons: SEQUENCE | |||
958:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 957:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
968:d=6 hl=2 l= 93 cons: SEQUENCE | 967:d=6 hl=2 l= 38 cons: SEQUENCE | |||
970:d=7 hl=2 l= 15 cons: SET | 969:d=7 hl=2 l= 36 cons: SET | |||
972:d=8 hl=2 l= 13 cons: SEQUENCE | 971:d=8 hl=2 l= 34 cons: SEQUENCE | |||
974:d=9 hl=2 l= 3 prim: OBJECT :countryName | 973:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
979:d=9 hl=2 l= 6 prim: PRINTABLESTRING :Canada | 978:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com | |||
987:d=7 hl=2 l= 16 cons: SET | 1007:d=6 hl=2 l= 30 cons: SEQUENCE | |||
989:d=8 hl=2 l= 14 cons: SEQUENCE | 1009:d=7 hl=2 l= 13 prim: UTCTIME :210413214016Z | |||
991:d=9 hl=2 l= 3 prim: OBJECT :stateOrProvinceName | 1024:d=7 hl=2 l= 13 prim: UTCTIME :230413214016Z | |||
996:d=9 hl=2 l= 7 prim: UTF8STRING :Ontario | 1039:d=6 hl=2 l= 40 cons: SEQUENCE | |||
1005:d=7 hl=2 l= 18 cons: SET | 1041:d=7 hl=2 l= 38 cons: SET | |||
1007:d=8 hl=2 l= 16 cons: SEQUENCE | 1043:d=8 hl=2 l= 36 cons: SEQUENCE | |||
1009:d=9 hl=2 l= 3 prim: OBJECT :organizationalUnitName | 1045:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
1014:d=9 hl=2 l= 9 prim: UTF8STRING :Sandelman | 1050:d=9 hl=2 l= 29 prim: UTF8STRING :highway-test.example.com | |||
1025:d=7 hl=2 l= 36 cons: SET | 1081:d=6 hl=2 l= 89 cons: SEQUENCE | |||
1027:d=8 hl=2 l= 34 cons: SEQUENCE | 1083:d=7 hl=2 l= 19 cons: SEQUENCE | |||
1029:d=9 hl=2 l= 3 prim: OBJECT :commonName | 1085:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | |||
1034:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com | 1094:d=8 hl=2 l= 8 prim: OBJECT :prime256v1 | |||
1063:d=6 hl=2 l= 30 cons: SEQUENCE | 1104:d=7 hl=2 l= 66 prim: BIT STRING | |||
1065:d=7 hl=2 l= 13 prim: UTCTIME :190212222241Z | 1172:d=6 hl=2 l= 16 cons: cont [ 3 ] | |||
1080:d=7 hl=2 l= 13 prim: UTCTIME :210211222241Z | 1174:d=7 hl=2 l= 14 cons: SEQUENCE | |||
1095:d=6 hl=2 l= 95 cons: SEQUENCE | 1176:d=8 hl=2 l= 12 cons: SEQUENCE | |||
1097:d=7 hl=2 l= 15 cons: SET | 1178:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints | |||
1099:d=8 hl=2 l= 13 cons: SEQUENCE | 1183:d=9 hl=2 l= 1 prim: BOOLEAN :255 | |||
1101:d=9 hl=2 l= 3 prim: OBJECT :countryName | 1186:d=9 hl=2 l= 2 prim: OCTET STRING [HEX DUMP]:3000 | |||
1106:d=9 hl=2 l= 6 prim: PRINTABLESTRING :Canada | 1190:d=5 hl=2 l= 10 cons: SEQUENCE | |||
1114:d=7 hl=2 l= 16 cons: SET | 1192:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
1116:d=8 hl=2 l= 14 cons: SEQUENCE | 1202:d=5 hl=2 l= 105 prim: BIT STRING | |||
1118:d=9 hl=2 l= 3 prim: OBJECT :stateOrProvinceName | 1309:d=3 hl=4 l= 261 cons: SET | |||
1123:d=9 hl=2 l= 7 prim: UTF8STRING :Ontario | 1313:d=4 hl=4 l= 257 cons: SEQUENCE | |||
1132:d=7 hl=2 l= 18 cons: SET | 1317:d=5 hl=2 l= 1 prim: INTEGER :01 | |||
1134:d=8 hl=2 l= 16 cons: SEQUENCE | 1320:d=5 hl=2 l= 46 cons: SEQUENCE | |||
1136:d=9 hl=2 l= 3 prim: OBJECT :organizationalUnitName | 1322:d=6 hl=2 l= 38 cons: SEQUENCE | |||
1141:d=9 hl=2 l= 9 prim: UTF8STRING :Sandelman | 1324:d=7 hl=2 l= 36 cons: SET | |||
1152:d=7 hl=2 l= 38 cons: SET | 1326:d=8 hl=2 l= 34 cons: SEQUENCE | |||
1154:d=8 hl=2 l= 36 cons: SEQUENCE | 1328:d=9 hl=2 l= 3 prim: OBJECT :commonName | |||
1156:d=9 hl=2 l= 3 prim: OBJECT :commonName | 1333:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com | |||
1161:d=9 hl=2 l= 29 prim: UTF8STRING :highway-test.example.com | 1362:d=6 hl=2 l= 4 prim: INTEGER :0B870A31 | |||
1192:d=6 hl=2 l= 89 cons: SEQUENCE | 1368:d=5 hl=2 l= 11 cons: SEQUENCE | |||
1194:d=7 hl=2 l= 19 cons: SEQUENCE | 1370:d=6 hl=2 l= 9 prim: OBJECT :sha256 | |||
1196:d=8 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | 1381:d=5 hl=2 l= 105 cons: cont [ 0 ] | |||
1205:d=8 hl=2 l= 8 prim: OBJECT :prime256v1 | 1383:d=6 hl=2 l= 24 cons: SEQUENCE | |||
1215:d=7 hl=2 l= 66 prim: BIT STRING | 1385:d=7 hl=2 l= 9 prim: OBJECT :contentType | |||
1283:d=6 hl=2 l= 16 cons: cont [ 3 ] | 1396:d=7 hl=2 l= 11 cons: SET | |||
1285:d=7 hl=2 l= 14 cons: SEQUENCE | 1398:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data | |||
1287:d=8 hl=2 l= 12 cons: SEQUENCE | 1409:d=6 hl=2 l= 28 cons: SEQUENCE | |||
1289:d=9 hl=2 l= 3 prim: OBJECT :X509v3 Basic Constraints | 1411:d=7 hl=2 l= 9 prim: OBJECT :signingTime | |||
1294:d=9 hl=2 l= 1 prim: BOOLEAN :255 | 1422:d=7 hl=2 l= 15 cons: SET | |||
1297:d=9 hl=2 l= 2 prim: OCTET STRING [HEX DUMP]:3000 | 1424:d=8 hl=2 l= 13 prim: UTCTIME :210413214324Z | |||
1301:d=5 hl=2 l= 10 cons: SEQUENCE | 1439:d=6 hl=2 l= 47 cons: SEQUENCE | |||
1303:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | 1441:d=7 hl=2 l= 9 prim: OBJECT :messageDigest | |||
1313:d=5 hl=2 l= 105 prim: BIT STRING | 1452:d=7 hl=2 l= 34 cons: SET | |||
1420:d=3 hl=4 l= 315 cons: SET | 1454:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:55148E0E166153 | |||
1424:d=4 hl=4 l= 311 cons: SEQUENCE | 1488:d=5 hl=2 l= 10 cons: SEQUENCE | |||
1428:d=5 hl=2 l= 1 prim: INTEGER :01 | 1490:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |||
1431:d=5 hl=2 l= 101 cons: SEQUENCE | 1500:d=5 hl=2 l= 72 prim: OCTET STRING [HEX DUMP]:3046022100E854 | |||
1433:d=6 hl=2 l= 93 cons: SEQUENCE | ||||
1435:d=7 hl=2 l= 15 cons: SET | ||||
1437:d=8 hl=2 l= 13 cons: SEQUENCE | ||||
1439:d=9 hl=2 l= 3 prim: OBJECT :countryName | ||||
1444:d=9 hl=2 l= 6 prim: PRINTABLESTRING :Canada | ||||
1452:d=7 hl=2 l= 16 cons: SET | ||||
1454:d=8 hl=2 l= 14 cons: SEQUENCE | ||||
1456:d=9 hl=2 l= 3 prim: OBJECT :stateOrProvinceName | ||||
1461:d=9 hl=2 l= 7 prim: UTF8STRING :Ontario | ||||
1470:d=7 hl=2 l= 18 cons: SET | ||||
1472:d=8 hl=2 l= 16 cons: SEQUENCE | ||||
1474:d=9 hl=2 l= 3 prim: OBJECT :organizationalUnitName | ||||
1479:d=9 hl=2 l= 9 prim: UTF8STRING :Sandelman | ||||
1490:d=7 hl=2 l= 36 cons: SET | ||||
1492:d=8 hl=2 l= 34 cons: SEQUENCE | ||||
1494:d=9 hl=2 l= 3 prim: OBJECT :commonName | ||||
1499:d=9 hl=2 l= 27 prim: UTF8STRING :highway-test.example.com | ||||
1528:d=6 hl=2 l= 4 prim: INTEGER :1B995F54 | ||||
1534:d=5 hl=2 l= 11 cons: SEQUENCE | ||||
1536:d=6 hl=2 l= 9 prim: OBJECT :sha256 | ||||
1547:d=5 hl=2 l= 105 cons: cont [ 0 ] | ||||
1549:d=6 hl=2 l= 24 cons: SEQUENCE | ||||
1551:d=7 hl=2 l= 9 prim: OBJECT :contentType | ||||
1562:d=7 hl=2 l= 11 cons: SET | ||||
1564:d=8 hl=2 l= 9 prim: OBJECT :pkcs7-data | ||||
1575:d=6 hl=2 l= 28 cons: SEQUENCE | ||||
1577:d=7 hl=2 l= 9 prim: OBJECT :signingTime | ||||
1588:d=7 hl=2 l= 15 cons: SET | ||||
1590:d=8 hl=2 l= 13 prim: UTCTIME :200225230449Z | ||||
1605:d=6 hl=2 l= 47 cons: SEQUENCE | ||||
1607:d=7 hl=2 l= 9 prim: OBJECT :messageDigest | ||||
1618:d=7 hl=2 l= 34 cons: SET | ||||
1620:d=8 hl=2 l= 32 prim: OCTET STRING [HEX DUMP]:8942CA3867D9AC | ||||
1654:d=5 hl=2 l= 10 cons: SEQUENCE | ||||
1656:d=6 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | ||||
1666:d=5 hl=2 l= 71 prim: OCTET STRING [HEX DUMP]:30450221008A11 | ||||
Appendix D. Additional References | Acknowledgements | |||
RFC EDITOR Please remove this section before publication. It exists | We would like to thank the various reviewers for their input, in | |||
just to include references to the things in the YANG descriptions | particular William Atwood, Brian Carpenter, Fuyu Eleven, Eliot Lear, | |||
which are not otherwise referenced in the text so that xml2rfc will | Sergey Kasatkin, Anoop Kumar, Tom Petch, Markus Stenberg, Peter van | |||
not complain. | der Stok, and Thomas Werner. | |||
[ITU.X690.1994] | 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 | Authors' Addresses | |||
Max Pritikin | Max Pritikin | |||
Cisco | Cisco | |||
Email: pritikin@cisco.com | Email: pritikin@cisco.com | |||
Michael C. Richardson | Michael C. Richardson | |||
Sandelman Software Works | Sandelman Software Works | |||
End of changes. 841 change blocks. | ||||
2724 lines changed or deleted | 2687 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |