| 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/ | ||||