| < draft-ietf-anima-bootstrapping-keyinfra-07.txt | draft-ietf-anima-bootstrapping-keyinfra-08.txt > | |||
|---|---|---|---|---|
| ANIMA WG M. Pritikin | ANIMA WG M. Pritikin | |||
| Internet-Draft Cisco | Internet-Draft Cisco | |||
| Intended status: Standards Track M. Richardson | Intended status: Standards Track M. Richardson | |||
| Expires: January 4, 2018 SSW | Expires: April 15, 2018 SSW | |||
| M. Behringer | M. Behringer | |||
| S. Bjarnason | ||||
| Cisco | Cisco | |||
| S. Bjarnason | ||||
| Arbor Networks | ||||
| K. Watsen | K. Watsen | |||
| Juniper Networks | Juniper Networks | |||
| July 3, 2017 | October 12, 2017 | |||
| Bootstrapping Remote Secure Key Infrastructures (BRSKI) | Bootstrapping Remote Secure Key Infrastructures (BRSKI) | |||
| draft-ietf-anima-bootstrapping-keyinfra-07 | draft-ietf-anima-bootstrapping-keyinfra-08 | |||
| Abstract | Abstract | |||
| This document specifies automated bootstrapping of a remote secure | This document specifies automated bootstrapping of a remote secure | |||
| key infrastructure (BRSKI) using vendor installed X.509 certificate, | key infrastructure (BRSKI) using vendor installed X.509 certificate, | |||
| in combination with a vendor's authorizing service, both online and | in combination with a vendor's authorizing service, both online and | |||
| offline. Bootstrapping a new device can occur using a routable | offline. Bootstrapping a new device can occur using a routable | |||
| address and a cloud service, or using only link-local connectivity, | address and a cloud service, or using only link-local connectivity, | |||
| or on limited/disconnected networks. Support for lower security | or on limited/disconnected networks. Support for lower security | |||
| models, including devices with minimal identity, is described for | models, including devices with minimal identity, is described for | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 41 ¶ | |||
| device as well. | device as well. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on January 4, 2018. | This Internet-Draft will expire on April 15, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Other Bootstrapping Approaches . . . . . . . . . . . . . 4 | 1.1. Other Bootstrapping Approaches . . . . . . . . . . . . . 4 | |||
| 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.3. Scope of solution . . . . . . . . . . . . . . . . . . . . 7 | 1.3. Scope of solution . . . . . . . . . . . . . . . . . . . . 8 | |||
| 1.4. Leveraging the new key infrastructure / next steps . . . 9 | ||||
| 2. Architectural Overview . . . . . . . . . . . . . . . . . . . 9 | 2. Architectural Overview . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.1. Secure Imprinting using Vouchers . . . . . . . . . . . . 10 | 2.1. Behavior of a Pledge . . . . . . . . . . . . . . . . . . 11 | |||
| 2.2. Initial Device Identifier . . . . . . . . . . . . . . . . 10 | 2.2. Secure Imprinting using Vouchers . . . . . . . . . . . . 12 | |||
| 2.3. Protocol Flow . . . . . . . . . . . . . . . . . . . . . . 12 | 2.3. Initial Device Identifier . . . . . . . . . . . . . . . . 13 | |||
| 2.4. Lack of realtime clock . . . . . . . . . . . . . . . . . 14 | 2.4. Protocol Flow . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 2.5. Cloud Registrar . . . . . . . . . . . . . . . . . . . . . 15 | 2.4.1. Architectural component: Pledge . . . . . . . . . . . 16 | |||
| 3. Protocol Details . . . . . . . . . . . . . . . . . . . . . . 15 | 2.4.2. Architectural component: Circuit Proxy . . . . . . . 16 | |||
| 3.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 17 | 2.4.3. Architectural component: Domain Registrar . . . . . . 16 | |||
| 3.1.1. Proxy Discovery Protocol Details . . . . . . . . . . 18 | 2.4.4. Architectural component: Vendor Service . . . . . . . 16 | |||
| 3.1.2. Registrar Discovery Protocol Details . . . . . . . . 18 | 2.5. Lack of realtime clock . . . . . . . . . . . . . . . . . 16 | |||
| 3.2. Request Voucher from the Registrar . . . . . . . . . . . 19 | 2.6. Cloud Registrar . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 3.3. Request Voucher from MASA . . . . . . . . . . . . . . . . 20 | 2.7. Determining the MASA to contact . . . . . . . . . . . . . 17 | |||
| 3.4. Voucher Response . . . . . . . . . . . . . . . . . . . . 23 | 3. Voucher Request artifact . . . . . . . . . . . . . . . . . . 18 | |||
| 3.4.1. Completing authentication of Provisional TLS | 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| connection . . . . . . . . . . . . . . . . . . . . . 24 | 3.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 3.5. Voucher Status Telemetry . . . . . . . . . . . . . . . . 25 | 3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 3.6. MASA authorization log Request . . . . . . . . . . . . . 26 | 4. Proxy details . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 3.7. MASA authorization log Response . . . . . . . . . . . . . 26 | 4.1. Pledge discovery of Proxy . . . . . . . . . . . . . . . . 24 | |||
| 3.8. EST Integration for PKI bootstrapping . . . . . . . . . . 27 | 4.1.1. Proxy Grasp announcements . . . . . . . . . . . . . . 25 | |||
| 3.8.1. EST Distribution of CA Certificates . . . . . . . . . 28 | 4.2. CoAP connection to Registrar . . . . . . . . . . . . . . 26 | |||
| 3.8.2. EST CSR Attributes . . . . . . . . . . . . . . . . . 28 | 4.3. HTTPS proxy connection to Registrar . . . . . . . . . . . 26 | |||
| 3.8.3. EST Client Certificate Request . . . . . . . . . . . 29 | 4.4. Proxy discovery of Registrar . . . . . . . . . . . . . . 26 | |||
| 3.8.4. Enrollment Status Telemetry . . . . . . . . . . . . . 29 | 5. Protocol Details . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 3.8.5. EST over CoAP . . . . . . . . . . . . . . . . . . . . 30 | 5.1. BRSKI-EST TLS establishment details . . . . . . . . . . . 29 | |||
| 4. Reduced security operational modes . . . . . . . . . . . . . 30 | 5.2. Pledge Requests Voucher from the Registrar . . . . . . . 30 | |||
| 4.1. Trust Model . . . . . . . . . . . . . . . . . . . . . . . 30 | 5.3. BRSKI-MASA TLS establishment details . . . . . . . . . . 31 | |||
| 4.2. Pledge security reductions . . . . . . . . . . . . . . . 31 | 5.4. Registrar Requests Voucher from MASA . . . . . . . . . . 31 | |||
| 4.3. Registrar security reductions . . . . . . . . . . . . . . 32 | 5.5. Voucher Response . . . . . . . . . . . . . . . . . . . . 34 | |||
| 4.4. MASA security reductions . . . . . . . . . . . . . . . . 33 | 5.5.1. Completing authentication of Provisional TLS | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | connection . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 5.1. PKIX Registry . . . . . . . . . . . . . . . . . . . . . . 34 | 5.6. Voucher Status Telemetry . . . . . . . . . . . . . . . . 36 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 34 | 5.7. MASA authorization log Request . . . . . . . . . . . . . 37 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 | 5.7.1. MASA authorization log Response . . . . . . . . . . . 38 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 5.8. EST Integration for PKI bootstrapping . . . . . . . . . . 39 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 36 | 5.8.1. EST Distribution of CA Certificates . . . . . . . . . 39 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 38 | 5.8.2. EST CSR Attributes . . . . . . . . . . . . . . . . . 40 | |||
| Appendix A. IPv4 operations . . . . . . . . . . . . . . . . . . 39 | 5.8.3. EST Client Certificate Request . . . . . . . . . . . 41 | |||
| A.1. IPv4 Link Local addresses . . . . . . . . . . . . . . . . 39 | 5.8.4. Enrollment Status Telemetry . . . . . . . . . . . . . 41 | |||
| A.2. Use of DHCPv4 . . . . . . . . . . . . . . . . . . . . . . 39 | 5.8.5. EST over CoAP . . . . . . . . . . . . . . . . . . . . 42 | |||
| Appendix B. mDNS / DNSSD proxy discovery options . . . . . . . . 39 | 6. Reduced security operational modes . . . . . . . . . . . . . 42 | |||
| Appendix C. IPIP Join Proxy mechanism . . . . . . . . . . . . . 40 | 6.1. Trust Model . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| C.1. Multiple Join networks on the Join Proxy side . . . . . . 41 | 6.2. Pledge security reductions . . . . . . . . . . . . . . . 43 | |||
| C.2. Automatic configuration of tunnels on Registrar . . . . . 41 | 6.3. Registrar security reductions . . . . . . . . . . . . . . 44 | |||
| C.3. Proxy Neighbor Discovery by Join Proxy . . . . . . . . . 42 | 6.4. MASA security reductions . . . . . . . . . . . . . . . . 44 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | ||||
| 7.1. PKIX Registry . . . . . . . . . . . . . . . . . . . . . . 45 | ||||
| 7.2. MIME . . . . . . . . . . . . . . . . . . . . . . . . . . 46 | ||||
| 7.3. Voucher Status Telemetry . . . . . . . . . . . . . . . . 47 | ||||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | ||||
| 8.1. Freshness in Voucher Requests . . . . . . . . . . . . . . 49 | ||||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 50 | ||||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 50 | ||||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 50 | ||||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 52 | ||||
| Appendix A. IPv4 operations . . . . . . . . . . . . . . . . . . 53 | ||||
| A.1. IPv4 Link Local addresses . . . . . . . . . . . . . . . . 53 | ||||
| A.2. Use of DHCPv4 . . . . . . . . . . . . . . . . . . . . . . 54 | ||||
| Appendix B. mDNS / DNSSD proxy discovery options . . . . . . . . 54 | ||||
| Appendix C. IPIP Join Proxy mechanism . . . . . . . . . . . . . 55 | ||||
| C.1. Multiple Join networks on the Join Proxy side . . . . . . 55 | ||||
| C.2. Automatic configuration of tunnels on Registrar . . . . . 56 | ||||
| C.3. Proxy Neighbor Discovery by Join Proxy . . . . . . . . . 56 | ||||
| C.4. Use of connected sockets; or IP_PKTINFO for CoAP on | C.4. Use of connected sockets; or IP_PKTINFO for CoAP on | |||
| Registrar . . . . . . . . . . . . . . . . . . . . . . . . 42 | Registrar . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
| C.5. Use of socket extension rather than virtual interface . . 42 | C.5. Use of socket extension rather than virtual interface . . 57 | |||
| Appendix D. To be deprecated: Consolidation remnants . . . . . . 43 | Appendix D. MUD Extension . . . . . . . . . . . . . . . . . . . 57 | |||
| D.1. Functional Overview . . . . . . . . . . . . . . . . . . . 43 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59 | |||
| D.1.1. Behavior of a Pledge . . . . . . . . . . . . . . . . 46 | ||||
| D.1.2. Behavior of a Join Proxy . . . . . . . . . . . . . . 52 | ||||
| D.1.3. Behavior of the Registrar . . . . . . . . . . . . . . 53 | ||||
| D.1.4. Behavior of the MASA Service . . . . . . . . . . . . 57 | ||||
| D.1.5. Leveraging the new key infrastructure / next steps . 58 | ||||
| D.1.6. Interactions with Network Access Control . . . . . . 58 | ||||
| D.2. Domain Operator Activities . . . . . . . . . . . . . . . 58 | ||||
| D.2.1. Instantiating the Domain Certification Authority . . 59 | ||||
| D.2.2. Instantiating the Registrar . . . . . . . . . . . . . 59 | ||||
| D.2.3. Accepting New Entities . . . . . . . . . . . . . . . 59 | ||||
| D.2.4. Automatic Enrollment of Devices . . . . . . . . . . . 60 | ||||
| D.2.5. Secure Network Operations . . . . . . . . . . . . . . 60 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 61 | ||||
| 1. Introduction | 1. Introduction | |||
| BRSKI provides a foundation to securely answer the following | BRSKI provides a foundation to securely answer the following | |||
| questions between an element of the network domain called the | questions between an element of the network domain called the | |||
| "Registrar" and an unconfigured and untouched device called a | "Registrar" and an unconfigured and untouched device called a | |||
| "Pledge": | "Pledge": | |||
| o Registrar authenticating the Pledge: "Who is this device? What is | o Registrar authenticating the Pledge: "Who is this device? What is | |||
| its identity?" | its identity?" | |||
| skipping to change at page 4, line 14 ¶ | skipping to change at page 4, line 20 ¶ | |||
| o Pledge authenticating the Registrar/Domain: "What is this domain's | o Pledge authenticating the Registrar/Domain: "What is this domain's | |||
| identity?" | identity?" | |||
| o Pledge authorization the Registrar: "Should I join it?" | o Pledge authorization the Registrar: "Should I join it?" | |||
| This document details protocols and messages to the endpoints to | This document details protocols and messages to the endpoints to | |||
| answer the above questions. The Registrar actions derive from Pledge | answer the above questions. The Registrar actions derive from Pledge | |||
| identity, third party cloud service communications, and local access | identity, third party cloud service communications, and local access | |||
| control lists. The Pledge actions derive from a cryptographically | control lists. The Pledge actions derive from a cryptographically | |||
| protected "voucher" message delivered through the Registrar. | protected "voucher" message delivered through the Registrar but | |||
| originating at a Manufacturer Authorized Signing Authority. | ||||
| The syntactic details of vouchers are described in detail in | The syntactic details of vouchers are described in detail in | |||
| [I-D.ietf-anima-voucher]. This document details automated protocol | [I-D.ietf-anima-voucher]. This document details automated protocol | |||
| mechanisms to obtain vouchers. | mechanisms to obtain vouchers, including the definition of a | |||
| necessary 'voucher request' message that is a minor extension to the | ||||
| voucher format (see Section 3). | ||||
| 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 which can be directly used for | TLS connection is established which can be directly used for | |||
| Enrollment over Secure Transport (EST). The Pledge can use these | Enrollment over Secure Transport (EST). In effect BRSKI provides an | |||
| credentials to secure additional protocol exchanges. | automated mechanism for the "Bootstrap Distribution of CA | |||
| Certificates" described in [RFC7030] Section 4.1.1 wherein the Pledge | ||||
| "MUST [...]. engage a human user to authorize the CA certificate | ||||
| using out-of-band" information". With BRSKI the Pledge now can | ||||
| automate this process using the voucher. Integration with a complete | ||||
| EST enrollment is optional but trivial. | ||||
| BRSKI is agile enough to support bootstrapping alternative key | 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 solutions, but no such | |||
| system is described in this document. | system is described in this document. | |||
| 1.1. Other Bootstrapping Approaches | 1.1. Other 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 commonly | |||
| skipping to change at page 9, line 5 ¶ | skipping to change at page 9, line 20 ¶ | |||
| 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 Initial Device | |||
| Identity is consistant with IEEE 802.1AR [IDevID], and allows for | Identity is consistant with IEEE 802.1AR [IDevID], and allows for | |||
| alignment with 802.1X network access control methods, its use here is | alignment with 802.1X network access control methods, its use here is | |||
| for Pledge authentication rather than network access control. | for Pledge authentication rather than network access control. | |||
| Integrating this protocol with network access control, perhaps as an | Integrating this protocol with network access control, perhaps as an | |||
| Extensible Authentication Protocol (EAP) method (see [RFC3748]), is | Extensible Authentication Protocol (EAP) method (see [RFC3748]), is | |||
| out-of-scope. | out-of-scope. | |||
| 1.4. Leveraging the new key infrastructure / next steps | ||||
| As a result of the protocol described herein the bootstrapped devices | ||||
| have a common trust anchor and a certificate has optionally been | ||||
| issued from a local PKI. This makes it possible to automatically | ||||
| deploy services across the domain in a secure manner. | ||||
| Services which benefit from this: | ||||
| o Device management. | ||||
| o Routing authentication. | ||||
| o Service discovery. | ||||
| The major beneficiary is that it possible to use the credentials | ||||
| deployed by this protocol to secure the Autonomic Control Plane (ACP) | ||||
| ([I-D.ietf-anima-autonomic-control-plane]). | ||||
| 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. Each component is logical and may be combined with other | components. Each component is logical and may be combined with other | |||
| components as necessary. | components as necessary. | |||
| . | +------------------------+ | |||
| .+------------------------+ | +--------------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- | |||
| V | | V | MASA | |||
| +-------+ ............................................|... | +-------+ ............................................|... | |||
| | | . | . | | | . | . | |||
| | | . +------------+ +-----------+ | . | | | . +------------+ +-----------+ | . | |||
| | | . | | | | | . | | | . | | | | | . | |||
| |Pledge | . | Circuit | | Domain <-------+ . | |Pledge | . | Circuit | | Domain <-------+ . | |||
| | | . | Proxy | | Registrar | . | | | . | Proxy | | Registrar | . | |||
| | <--------> <-------> | . | | <-------->............<-------> (PKI RA) | . | |||
| | | . | | | | . | | | | BRSKI-EST | | . | |||
| |X.509 | . +------------+ +-----+-----+ . | | | . | | +-----+-----+ . | |||
| |IDevID | . | . | |IDevID | . +------------+ | EST RFC7030 . | |||
| | | . +-----------------+----------+ . | | | . +-----------------+----------+ . | |||
| | | . | Key Infrastructure | . | | | . | Key Infrastructure | . | |||
| | | . | (e.g. PKI Certificate | . | | | . | (e.g. PKI Certificate | . | |||
| +-------+ . | Authority) | . | +-------+ . | Authority) | . | |||
| . +----------------------------+ . | . +----------------------------+ . | |||
| . . | . . | |||
| ................................................ | ................................................ | |||
| "Domain" components | "Domain" components | |||
| Figure 1 | Figure 1 | |||
| skipping to change at page 10, line 8 ¶ | skipping to change at page 10, line 48 ¶ | |||
| be a Vendor Service for each vendor that supports devices following | be a Vendor Service for each vendor that supports devices following | |||
| this document's specification, or an integrator could provide a | this document's specification, or an integrator could provide a | |||
| generic service authorized by multiple vendors. It is unlikely that | generic service authorized by multiple vendors. It is unlikely that | |||
| an integrator could provide Ownership Tracking services for multiple | an integrator could provide Ownership Tracking services for multiple | |||
| vendors due to the required sales channel integrations necessary to | vendors due to the required sales channel integrations necessary to | |||
| track ownership. | 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 a domain provides initial | Infrastructure the Pledge is joining. The a domain provides initial | |||
| device connectivity sufficient for bootstrapping with a Circuit | device connectivity sufficient for bootstrapping with a Circuit | |||
| Proxy. The Domain registrar authenticates the Pledge, makes | Proxy. The Domain Registrar authenticates the Pledge, makes | |||
| authorization decisions, and distributes vouchers obtained from the | authorization decisions, and distributes vouchers obtained from the | |||
| Vendor Service. Optionally the Registrar also acts as a PKI | Vendor Service. Optionally the Registrar also acts as a PKI | |||
| Registration Authority. | Registration Authority. | |||
| 2.1. Secure Imprinting using Vouchers | 2.1. Behavior of a Pledge | |||
| The pledge goes through a series of steps which are outlined here at | ||||
| a high level. | ||||
| +--------------+ | ||||
| | Factory | | ||||
| | default | | ||||
| +------+-------+ | ||||
| | | ||||
| +------v-------+ | ||||
| | Discover | | ||||
| +------------> | | ||||
| | +------+-------+ | ||||
| | | | ||||
| | +------v-------+ | ||||
| | | Identity | | ||||
| ^------------+ | | ||||
| | rejected +------+-------+ | ||||
| | | | ||||
| | +------v-------+ | ||||
| | | Request | | ||||
| | | Join | | ||||
| | +------+-------+ | ||||
| | | | ||||
| | +------v-------+ | ||||
| | | Imprint | Optional | ||||
| ^------------+ <--+Manual input (Appendix C) | ||||
| | Bad Vendor +------+-------+ | ||||
| | response | send Voucher Status Telemetry | ||||
| | +------v-------+ | ||||
| | | Enroll | | ||||
| ^------------+ | | ||||
| | Enroll +------+-------+ | ||||
| | Failure | | ||||
| | +------v-------+ | ||||
| | | Enrolled | | ||||
| ^------------+ | | ||||
| Factory +--------------+ | ||||
| reset | ||||
| Figure 2 | ||||
| State descriptions for the pledge are as follows: | ||||
| 1. Discover a communication channel to a Registrar. | ||||
| 2. Identify itself. This is done by presenting an X.509 IDevID | ||||
| credential to the discovered Registrar (via the Proxy) in a TLS | ||||
| handshake. (The Registrar credentials are only provisionally | ||||
| accepted at this time). | ||||
| 3. Requests to Join the discovered Registrar. A unique nonce can be | ||||
| included ensuring that any responses can be associated with this | ||||
| particular bootstrapping attempt. | ||||
| 4. Imprint on the Registrar. This requires verification of the | ||||
| vendor service provided voucher. A voucher contains sufficient | ||||
| information for the Pledge to complete authentication of a | ||||
| Registrar. (It enables the Pledge to finish authentication of | ||||
| the Registrar TLS server certificate). | ||||
| 5. Enroll. By accepting the domain specific information from a | ||||
| Registrar, and by obtaining a domain certificate from a Registrar | ||||
| using a standard enrollment protocol, e.g. Enrollment over | ||||
| Secure Transport (EST) [RFC7030]. | ||||
| 6. The Pledge is now a member of, and can be managed by, the domain | ||||
| and will only repeat the discovery aspects of bootstrapping if it | ||||
| is returned to factory default settings. | ||||
| 2.2. Secure Imprinting using Vouchers | ||||
| A voucher is a cryptographically protected statement to the Pledge | A voucher is a cryptographically protected statement to the Pledge | |||
| device authorizing a zero-touch imprint on the Registrar domain. | device authorizing a zero-touch imprint on 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 [I-D.ietf-anima-voucher]. | detail in [I-D.ietf-anima-voucher]. | |||
| 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 server can indiscriminately issue | lowest security levels the MASA server can indiscriminately issue | |||
| skipping to change at page 10, line 38 ¶ | skipping to change at page 13, line 5 ¶ | |||
| Pledge and Registrar devices that are to be widely deployed in the | Pledge and Registrar devices that are to be widely deployed in the | |||
| field. The MASA vendor services have the flexibility to leverage | field. The MASA vendor services have the flexibility to leverage | |||
| either the currently defined claim mechanisms or to experiment with | either the currently defined claim mechanisms or to experiment with | |||
| higher or lower security levels. | higher or lower security levels. | |||
| Vouchers provide a signed but non-encrypted communication channel | Vouchers provide a signed but non-encrypted communication channel | |||
| between the Pledge, the MASA, and the Registrar. The Registrar | between 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.2. Initial Device Identifier | 2.3. Initial Device Identifier | |||
| Pledge authentication is via an X.509 certificate installed during | Pledge authentication and voucher request signing is via an X.509 | |||
| the manufacturing process. This Initial Device Identifier provides a | certificate installed during the manufacturing process. This Initial | |||
| basis for authenticating the Pledge during subsequent protocol | Device Identifier provides a basis for authenticating the Pledge | |||
| exchanges and informing the Registrar of the MASA URI. There is no | during subsequent protocol exchanges and informing the Registrar of | |||
| requirement for a common root PKI hierarchy. Each device vendor can | the MASA URI. There is no requirement for a common root PKI | |||
| generate their own root certificate. | hierarchy. Each device vendor can generate their own root | |||
| certificate. | ||||
| The following previously defined fields are in the X.509 IDevID | The following previously defined fields are in the X.509 IDevID | |||
| certificate: | certificate: | |||
| o The subject field's DN encoding MUST include the "serialNumber" | o The subject field's DN encoding MUST include the "serialNumber" | |||
| attribute with the device's unique serial number. | attribute with the device's unique serial number. | |||
| o The subject-alt field's encoding SHOULD include a non-critical | o The subject-alt field's encoding SHOULD include a non-critical | |||
| version of the RFC4108 defined HardwareModuleName. | version of the RFC4108 defined HardwareModuleName. | |||
| skipping to change at page 11, line 30 ¶ | skipping to change at page 13, line 46 ¶ | |||
| The following newly defined field SHOULD be in the X.509 IDevID | The following newly defined field SHOULD be in the X.509 IDevID | |||
| certificate: An X.509 non-critical certificate extension that | certificate: An X.509 non-critical certificate extension that | |||
| contains a single Uniform Resource Identifier (URI) that points to an | contains a single Uniform Resource Identifier (URI) that points to an | |||
| on-line Manufacturer Authorized Signing Authority. The URI is | on-line Manufacturer Authorized Signing Authority. The URI is | |||
| represented as described in Section 7.4 of [RFC5280]. | represented as described in Section 7.4 of [RFC5280]. | |||
| Any Internationalized Resource Identifiers (IRIs) MUST be mapped to | Any Internationalized Resource Identifiers (IRIs) MUST be mapped to | |||
| URIs as specified in Section 3.1 of [RFC3987] before they are placed | URIs as specified in Section 3.1 of [RFC3987] before they are placed | |||
| in the certificate extension. The URI provides the authority | in the certificate extension. The URI provides the authority | |||
| information. The BRSKI .well-known tree is described in Section 3 | information. The BRSKI .well-known tree is described in Section 5 | |||
| 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(TBD) } | |||
| DEFINITIONS IMPLICIT TAGS ::= BEGIN | DEFINITIONS IMPLICIT TAGS ::= BEGIN | |||
| skipping to change at page 12, line 44 ¶ | skipping to change at page 14, line 44 ¶ | |||
| END | END | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 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.3. Protocol Flow | 2.4. Protocol Flow | |||
| A representative flow is shown in Figure 2: | A representative flow is shown in Figure 3: | |||
| +--------+ +---------+ +------------+ +------------+ | +--------+ +---------+ +------------+ +------------+ | |||
| | Pledge | | Circuit | | Domain | | Vendor | | | Pledge | | Circuit | | Domain | | Vendor | | |||
| | | | Proxy | | Registrar | | Service | | | | | Proxy | | Registrar | | Service | | |||
| | | | | | | | (Internet | | | | | | | (JRC) | | (MASA) | | |||
| +--------+ +---------+ +------------+ +------------+ | +--------+ +---------+ +------------+ +------------+ | |||
| | | | | | | | | Internet | | |||
| |<-RFC3927 IPv4 adr | Appendix A | | | |<-RFC4862 IPv6 addr | | | | |||
| or|<-RFC4862 IPv6 adr | | | | |<-RFC3927 IPv4 addr | Appendix A | | | |||
| | | | | | | | | | | |||
| |-------------------->| | | | |-------------------->| | | | |||
| | optional: mDNS query| Appendix B | | | | optional: mDNS query| Appendix B | | | |||
| | RFC6763/RFC6762 | | | | | RFC6763/RFC6762 | | | | |||
| | | | | | | | | | | |||
| |<--------------------| | | | |<--------------------| | | | |||
| | GRASP M_FLOOD | | | | | GRASP M_FLOOD | | | | |||
| | periodic broadcast| | | | | periodic broadcast| | | | |||
| | | | | | | | | | | |||
| |<------------------->C<----------------->| | | |<------------------->C<----------------->| | | |||
| | TLS via the Circuit Proxy | | | | TLS via the Circuit 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---------->| | | |||
| P | | | | P | | | | |||
| P---Request Voucher (include nonce)------>| | | P---Voucher Request (include nonce)------>| | | |||
| P | | | | P | | | | |||
| 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 | | | [extract DomainID] | P | | | [extract DomainID] | |||
| P | | | | | P | | | | | |||
| P | optional: | [update audit log] | P | optional: | [update audit log] | |||
| P | |can | | | P | |can | | | |||
| P | |occur | | | P | |occur | | | |||
| P | |in | | | P | |in | | | |||
| P | |advance | | | P | |advance | | | |||
| P | | | | | P | |if | | | |||
| P | | |<-device audit log--| | P | |nonceless | | | |||
| P | | |<- voucher ---------| | P | | |<- voucher ---------| | |||
| P | \----> | | | P | \----> | | | |||
| P | | | | P | | | | |||
| P | [verify audit log and voucher] | | ||||
| P | | | | ||||
| P<------voucher---------------------------| | | P<------voucher---------------------------| | | |||
| [verify voucher ] | | | | [verify voucher ] | | | | |||
| [verify provisional cert| | | | [verify provisional cert| | | | |||
| | | | | | | | | | | |||
| |---------------------------------------->| | | ||||
| | [voucher status telemetry] |<-device audit log--| | ||||
| | | [verify audit log and voucher] | | ||||
| | | | | | ||||
| |<--------------------------------------->| | | |<--------------------------------------->| | | |||
| | Continue with RFC7030 enrollment | | | | Continue with RFC7030 enrollment | | | |||
| | using now bidirectionally authenticated | | | | using now bidirectionally authenticated | | | |||
| | TLS session. | | | | | TLS session. | | | | |||
| | | | | | | | | | | |||
| | | | | | ||||
| | | | | | ||||
| Figure 2 | Figure 3 | |||
| 2.4. Lack of realtime clock | 2.4.1. Architectural component: Pledge | |||
| The Pledge is the device which is attempting to join. Until the | ||||
| pledge completes the enrollment process, it does has network | ||||
| connectivity only to the Proxy. | ||||
| 2.4.2. Architectural component: Circuit Proxy | ||||
| The (Circuit) Proxy provides HTTPS connectivity between the pledge | ||||
| and the registrar. The proxy mechanism is described in Section 4, | ||||
| with an optional stateless mechanism described in Appendix C. | ||||
| 2.4.3. Architectural component: Domain Registrar | ||||
| The Domain Registrar (having the formal name Join Registrar/ | ||||
| Coordinator (JRC)), operates as a CMC Registrar, terminating the EST | ||||
| and BRSKI connections. The Registrar is manually configured or | ||||
| distributed with a list of trust anchors necessary to authenticate | ||||
| any Pledge device expected on the network. The Registrar | ||||
| communicates with the Vendor supplied MASA to establish ownership. | ||||
| 2.4.4. Architectural component: Vendor Service | ||||
| The Vendor Service provides two logically seperate functions: the | ||||
| Manufacturer Authorized Signing Authority (MASA), and an ownership | ||||
| tracking/auditing function. | ||||
| 2.5. Lack of realtime clock | ||||
| Many devices when bootstrapping do not have knowledge of the current | Many devices when bootstrapping do not have knowledge of the current | |||
| time. Mechanisms like Network Time Protocols can not be secured | time. Mechanisms like Network Time Protocols can not be secured | |||
| until bootstrapping is complete. Therefore bootstrapping is defined | until bootstrapping is complete. Therefore bootstrapping is defined | |||
| in a method that does not require knowledge of the current time. | in a method that does not require knowledge of the current time. | |||
| Unfortunately there are moments during bootstrapping when | Unfortunately there are moments during bootstrapping when | |||
| certificates are verified, such as during the TLS handshake, where | certificates are verified, such as during the TLS handshake, where | |||
| validity periods are confirmed. This paradoxical "catch-22" is | validity periods are confirmed. This paradoxical "catch-22" is | |||
| resolved by the Pledge maintaining a concept of the current "window" | resolved by the Pledge maintaining a concept of the current "window" | |||
| skipping to change at page 14, line 41 ¶ | skipping to change at page 17, line 20 ¶ | |||
| Registrar MUST support such lifetimes and SHOULD support ignoring | Registrar MUST support such lifetimes and SHOULD support ignoring | |||
| Pledge lifetimes if they did not follow the RFC5280 | Pledge lifetimes if they did not follow the RFC5280 | |||
| recommendations. | recommendations. | |||
| o The Pledge authenticates the voucher presented to it. During this | o The Pledge authenticates the voucher presented to it. During this | |||
| authentication the Pledge ignores certificate lifetimes (by | authentication the Pledge ignores certificate lifetimes (by | |||
| necessity because it does not have a realtime clock). | necessity because it does not have a realtime clock). | |||
| o If the voucher contains a nonce then the Pledge MUST confirm the | o If the voucher contains a nonce then the Pledge MUST confirm the | |||
| nonce matches the original voucher request. This ensures the | nonce matches the original voucher request. This ensures the | |||
| voucher is fresh. See / (Section 3.2). | voucher is fresh. See / (Section 5.2). | |||
| o Once the voucher is accepted the validity period of the | o Once the voucher is accepted the validity period of the pinned- | |||
| domainCAcert in the voucher (see Section 3.4) now serves as a | domain-cert in the voucher now serves as a valid time window. Any | |||
| valid time window. Any subsequent certificate validity periods | subsequent certificate validity periods checked during RFC5280 | |||
| checked during RFC5280 path validation MUST occur within this | path validation MUST occur within this window. | |||
| window. | ||||
| o When accepting an enrollment certificate the validity period | o When accepting an enrollment certificate the validity period | |||
| within the new certificate is assumed to be valid by the Pledge. | within the new certificate is assumed to be valid by the Pledge. | |||
| The Pledge is now willing to use this credential for client | The Pledge is now willing to use this credential for client | |||
| authentication. | authentication. | |||
| 2.5. Cloud Registrar | 2.6. Cloud Registrar | |||
| The Pledge MAY contact a well known URI of a cloud Registrar if a | The Pledge MAY contact a well known URI of a cloud Registrar if a | |||
| local Registrar can not be discovered or if the Pledge's target use | local Registrar can not be discovered or if the Pledge's target use | |||
| cases do not include a local Registrar. | cases do not include a local 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 | |||
| an Implicit Trust Anchor database (see [RFC7030]) MUST be used to | an Implicit Trust Anchor database (see [RFC7030]) MUST be used to | |||
| authenticate service as described in RFC6125. This is consistent | authenticate service as described in RFC6125. This is consistent | |||
| with the human user configuration of an EST server URI in [RFC7030] | with the human user configuration of an EST server URI in [RFC7030] | |||
| which also depends on RFC6125. | which also depends on RFC6125. | |||
| 3. Protocol Details | 2.7. Determining the MASA to contact | |||
| The Pledge MUST initiate BRSKI after boot if it is unconfigured. The | The registrar needs to be able to contact a MASA that is trusted by | |||
| Pledge MUST NOT automatically initiate BRSKI if it has been | the Pledge in order to obtain vouchers. There are three mechanisms | |||
| configured or is in the process of being configured. | described: | |||
| BRSKI is described as extensions to EST [RFC7030] to reduce the | The device's Initial Device Identifier will normally contain the MASA | |||
| number of TLS connections and crypto operations required on the | URL as detailed in Section 2.3. This is the RECOMMENDED mechanism. | |||
| Pledge. The Registrar implements the BRSKI REST interface within the | ||||
| same .well-known URI tree as the existing EST URIs as described in | ||||
| EST [RFC7030] section 3.2.2. A MASA URI is therefore "https:// | ||||
| authority "./well-known/est". | ||||
| Establishment of the TLS connection for bootstrapping is as specified | If the Registrar is integrated with [I-D.ietf-opsawg-mud] and the | |||
| in EST [RFC7030] section 4.1.1 "Bootstrap Distribution of CA | Pledge IDevID contains the id-pe-mud-url then the Registrar MAY | |||
| Certificates" [RFC7030] with the following extensions for automation: | attempt to obtain the MASA URL from the MUD file. The MUD file | |||
| extension for the MASA URL is defined in Appendix D. | ||||
| Automation extensions for the Pledge (equivalent to EST client) are: | It can be operationally difficult to ensure the necessary X.509 | |||
| extensions are in the Pledge's' IDevID due to the difficulty of | ||||
| aligning current Pledge manufacturing with software releases and | ||||
| development. As a final fallback the Registrar MAY be manually | ||||
| configured or distributed with a MASA URL for each vendor. Note that | ||||
| the Registrar can only select the configured MASA URL based on the | ||||
| trust anchor -- so vendors can only leverage this approach if they | ||||
| ensure a single MASA URL works for all Pledge's associated with each | ||||
| trust anchor. | ||||
| o The Pledge provisionally accepts the Registrar certificate during | 3. Voucher Request artifact | |||
| the TLS handshake as detailed in EST. | ||||
| o If the Registrar responds with a redirection to other web origins | The voucher request is how an entity requests a voucher. The Pledge | |||
| the Pledge MUST follow only a single redirection. (EST supports | forms a voucher request and submits it to the Registrar. The | |||
| redirection but does not allow redirections to other web origins | Registrar in turn submits a voucher request to the MASA server. A | |||
| without user input). | voucher request is a voucher structure with an additional "prior- | |||
| signed-voucher-request" "leaf to support forwarding the Pledge's | ||||
| initial voucher request. | ||||
| o The Registar MAY respond with an HTTP 202 ("the request has been | Unless otherwise signaled (outside the voucher artifact), the signing | |||
| accepted for processing, but the processing has not been | structure is as defined for vouchers, see [I-D.ietf-anima-voucher]. | |||
| completed") as described in EST [RFC7030] section 4.2.3 wherein | ||||
| the client "MUST wait at least the specified 'retry-after' time | ||||
| before repeating the same request". The Pledge is RECOMMENDED to | ||||
| provide local feed (blinked LED etc) during this wait cycle if | ||||
| mechanisms for this are available. To prevent an attacker | ||||
| Registrar from significantly delaying bootstrapping the Pledge | ||||
| MUST limit the 'retry-after' time to 60 seconds. To avoid waiting | ||||
| on a single erroneous Registrar the Pledge MUST drop the | ||||
| connection after 5 seconds and proceed to other discovered | ||||
| Registrars. Ideally the Pledge could keep track of the | ||||
| appropriate retry-after value for any number of outstanding | ||||
| Registrars but this would involve a large state table on the | ||||
| Pledge. Instead the Pledge MAY ignore the exact retry-after value | ||||
| in favor of a single hard coded value that takes effect between | ||||
| discovery (Appendix D.1.1.1) attempts. A Registrar that is unable | ||||
| to complete the transaction the first time due to timing reasons | ||||
| will have future chances. | ||||
| o The Pledge requests and validates a voucher using the new REST | 3.1. Tree Diagram | |||
| calls described below. | ||||
| o If necessary the Pledge calls the EST defined /cacerts method to | The following tree diagram illustrates a high-level view of a voucher | |||
| obtain the current CA certificate. These are validated using the | request document. The notation used in this diagram is described in | |||
| Voucher. | [I-D.ietf-anima-voucher]. Each node in the diagram is fully | |||
| described by the YANG module in Section 3.3. Please review the YANG | ||||
| module for a detailed description of the voucher request format. | ||||
| o The Pledge completes authentication of the server certificate as | module: ietf-voucher-request | |||
| detailed in Section 3.4.1. This moves the TLS connection out of | groupings: | |||
| the provisional state. Optionally the TLS connection can now be | voucher-request-grouping | |||
| used for EST enrollment. | +---- voucher | |||
| +---- created-on? yang:date-and-time | ||||
| +---- expires-on? yang:date-and-time | ||||
| +---- assertion enumeration | ||||
| +---- serial-number string | ||||
| +---- idevid-issuer? binary | ||||
| +---- pinned-domain-cert? binary | ||||
| +---- domain-cert-revocation-checks? boolean | ||||
| +---- nonce? binary | ||||
| +---- last-renewal-date? yang:date-and-time | ||||
| +---- prior-signed-voucher-request? binary | ||||
| +---- proximity-registrar-cert? binary | ||||
| The Pledge establishes the TLS connection with the Registrar through | 3.2. Examples | |||
| the circuit proxy (see Appendix D.1.2) but the TLS connection is with | ||||
| the Registar; so in the above section the "Pledge" is the TLS client | ||||
| and the "Registrar" is the TLS server. All security associations | ||||
| established are between the new device and the Registrar regardless | ||||
| of proxy operations. | ||||
| The extensions for a Registrar (equivalent to EST server) are: | This section provides voucher examples for illustration purposes. | |||
| That these examples conform to the encoding rules defined in | ||||
| [RFC7951]. | ||||
| o Client authentication is automated using Initial Device Identity. | Example (1) The following example illustrates a Pledge generated | |||
| The subject field's DN encoding MUST include the "serialNumber" | voucher-request. The assertion leaf is indicated as | |||
| attribute with the device's unique serial number. In the language | 'proximity' and the Registrar's TLS server certificate | |||
| of RFC6125 this provides for a SERIALNUM-ID category of identifier | is included in the 'pinned-domain-cert' leaf. See | |||
| that can be included in a certificate and therefore that can also | Section 5.2. | |||
| be used for matching purposes. The SERIALNUM-ID whitelist is | ||||
| collated according to vendor trust anchor since serial numbers are | ||||
| not globally unique. | ||||
| o The Registrar requests and validates the Voucher from the vendor | { | |||
| authorized MASA service. | "ietf-voucher-request:voucher": { | |||
| "nonce": "62a2e7693d82fcda2624de58fb6722e5", | ||||
| "created-on": "2017-01-01T00:00:00.000Z", | ||||
| "assertion": "proximity", | ||||
| "proximity-registrar-cert": "base64encodedvalue==" | ||||
| } | ||||
| } | ||||
| o The Registrar forwards the Voucher to the Pledge when requested. | Example (2) The following example illustrates a Registrar generated | |||
| voucher-request. The 'prior-signed-voucher-request' | ||||
| leaf is populated with the Pledge's voucher request | ||||
| (such as the prior example). See Section 5.4. | ||||
| o The Registar performs log verifications in addition to local | { | |||
| authorization checks before accepting optional Pledge device | "ietf-voucher-request:voucher": { | |||
| enrollment requests. | "nonce": "62a2e7693d82fcda2624de58fb6722e5", | |||
| "created-on": "2017-01-01T00:00:02.000Z", | ||||
| "assertion": "proximity", | ||||
| "idevid-issuer": "base64encodedvalue==" | ||||
| "serial-number": "JADA123456789" | ||||
| "prior-signed-voucher": "base64encodedvalue==" | ||||
| } | ||||
| } | ||||
| 3.1. Discovery | Example (3) The following example illustrates a Registrar generated | |||
| voucher-request. The 'prior-signed-voucher-request' | ||||
| leaf is not populated with the Pledge's voucher request | ||||
| nor is the nonce leaf. This form might be used by a | ||||
| Registrar requesting a voucher when the Pledge is | ||||
| offline or when the Registrar expects to be offline | ||||
| during deployment. See Section 5.4. | ||||
| { | ||||
| "ietf-voucher-request:voucher": { | ||||
| "created-on": "2017-01-01T00:00:02.000Z", | ||||
| "assertion": "TBD", | ||||
| "idevid-issuer": "base64encodedvalue==" | ||||
| "serial-number": "JADA123456789" | ||||
| } | ||||
| } | ||||
| Example (4) The following example illustrates a Registrar generated | ||||
| voucher-request. The 'prior-signed-voucher-request' | ||||
| leaf is not populated with the Pledge's voucher request | ||||
| because the Pledge did not sign it's own request. This | ||||
| form might be used when more constrained Pledges are | ||||
| being deployed. The nonce is populated from the | ||||
| Pledge's request. See Section 5.4. | ||||
| { | ||||
| "ietf-voucher-request:voucher": { | ||||
| "nonce": "62a2e7693d82fcda2624de58fb6722e5", | ||||
| "created-on": "2017-01-01T00:00:02.000Z", | ||||
| "assertion": "proximity", | ||||
| "idevid-issuer": "base64encodedvalue==" | ||||
| "serial-number": "JADA123456789" | ||||
| } | ||||
| } | ||||
| 3.3. YANG Module | ||||
| Following is a YANG [RFC7950] module formally extending the | ||||
| [I-D.ietf-anima-voucher] voucher into the voucher request. | ||||
| <CODE BEGINS> file "ietf-voucher-request@2017-10-13.yang" | ||||
| module ietf-voucher-request { | ||||
| yang-version 1.1; | ||||
| namespace | ||||
| "urn:ietf:params:xml:ns:yang:ietf-voucher-request"; | ||||
| prefix "vch"; | ||||
| import ietf-restconf { | ||||
| prefix rc; | ||||
| description | ||||
| "This import statement is only present to access | ||||
| the yang-data extension defined in RFC 8040."; | ||||
| reference "RFC 8040: RESTCONF Protocol"; | ||||
| } | ||||
| import ietf-voucher { | ||||
| prefix v; | ||||
| description | ||||
| "FIXME"; | ||||
| reference "RFC ????: Voucher Profile for Bootstrapping Protocols"; | ||||
| } | ||||
| organization | ||||
| "IETF ANIMA Working Group"; | ||||
| contact | ||||
| "WG Web: <http://tools.ietf.org/wg/anima/> | ||||
| WG List: <mailto:anima@ietf.org> | ||||
| Author: Kent Watsen | ||||
| <mailto:kwatsen@juniper.net> | ||||
| Author: Max Pritikin | ||||
| <mailto:pritikin@cisco.com> | ||||
| Author: Michael Richardson | ||||
| <mailto:mcr+ietf@sandelman.ca> | ||||
| Author: Toerless Eckert | ||||
| <mailto:tte+ietf@cs.fau.de>"; | ||||
| description | ||||
| "This module... FIXME | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', | ||||
| 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY', and 'OPTIONAL' in | ||||
| the module text are to be interpreted as described in RFC 2119. | ||||
| Copyright (c) 2017 IETF Trust and the persons identified as | ||||
| authors of the code. All rights reserved. | ||||
| Redistribution and use in source and binary forms, with or without | ||||
| modification, is permitted pursuant to, and subject to the license | ||||
| terms contained in, the Simplified BSD License set forth in Section | ||||
| 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| This version of this YANG module is part of RFC XXXX; see the RFC | ||||
| itself for full legal notices."; | ||||
| revision "2017-10-13" { | ||||
| description | ||||
| "Initial version"; | ||||
| reference | ||||
| "RFC XXXX: Voucher Profile for Bootstrapping Protocols"; | ||||
| } | ||||
| // Top-level statement | ||||
| rc:yang-data voucher-request-artifact { | ||||
| uses voucher-request-grouping; | ||||
| } | ||||
| // Grouping defined for future usage | ||||
| grouping voucher-request-grouping { | ||||
| description | ||||
| "Grouping to allow reuse/extensions in future work."; | ||||
| uses v:voucher-artifact-grouping { | ||||
| refine "voucher/created-on" { | ||||
| mandatory false; | ||||
| } | ||||
| refine "voucher/pinned-domain-cert" { | ||||
| mandatory false; | ||||
| } | ||||
| augment "voucher" { | ||||
| description | ||||
| "Adds leaf nodes appropriate for requesting vouchers."; | ||||
| leaf prior-signed-voucher-request { | ||||
| type binary; | ||||
| description | ||||
| "If it is necessary to change a voucher, or re-sign and | ||||
| forward a voucher that was previously provided along a | ||||
| protocol path, then the previously signed voucher SHOULD be | ||||
| included in this field. | ||||
| For example, a pledge might sign a proximity voucher, which | ||||
| an intermediate registrar then re-signs to make its own | ||||
| proximity assertion. This is a simple mechanism for a | ||||
| chain of trusted parties to change a voucher, while | ||||
| maintaining the prior signature information. | ||||
| The pledge MUST ignore all prior voucher information when | ||||
| accepting a voucher for imprinting. Other parties MAY | ||||
| examine the prior signed voucher information for the | ||||
| purposes of policy decisions. For example this information | ||||
| could be useful to a MASA to determine that both pledge and | ||||
| registrar agree on proximity assertions. The MASA SHOULD | ||||
| remove all prior-signed-voucher information when signing | ||||
| a voucher for imprinting so as to minimize the final | ||||
| voucher size."; | ||||
| } | ||||
| leaf proximity-registrar-cert { | ||||
| type binary; | ||||
| description | ||||
| "An X.509 v3 certificate structure as specified by RFC 5280, | ||||
| Section 4 encoded using the ASN.1 distinguished encoding | ||||
| rules (DER), as specified in ITU-T X.690. | ||||
| The first certificate in the Registrar TLS server | ||||
| certificate_list sequence (see [RFC5246]) presented by | ||||
| the Registrar to the Pledge. This MUST be populated in a | ||||
| Pledge's voucher request if the proximity assertion is | ||||
| populated."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 4. Proxy details | ||||
| The role of the Proxy is to facilitate communications. The Proxy | ||||
| forwards packets between the Pledge and a Registrar that has been | ||||
| configured on the Proxy. | ||||
| The Proxy does not terminate the TLS handshake: it passes streams of | ||||
| bytes onward without examination. | ||||
| A proxy MAY assume TLS framing for auditing purposes, but MUST NOT | ||||
| assume any TLS version. | ||||
| A Proxy is always assumed even if it is directly integrated into a | ||||
| Registrar. (In a completely autonomic network, the Registrar MUST | ||||
| provide proxy functionality so that it can be discovered, and the | ||||
| network can grow concentrically around the Registrar) | ||||
| As a result of the Proxy Discovery process in section Section 4.1.1, | ||||
| the port number exposed by the proxy does not need to be well known, | ||||
| or require an IANA allocation. | ||||
| If the Proxy joins an Autonomic Control Plane | ||||
| ([I-D.ietf-anima-autonomic-control-plane]) it SHOULD use Autonomic | ||||
| Control Plane secured GRASP ([I-D.ietf-anima-grasp]) to discovery the | ||||
| Registrar address and port. As part of the discovery process, the | ||||
| proxy mechanism (Circuit Proxy vs IPIP encapsulation) is agreed to | ||||
| between the Registrar and Join Proxy. | ||||
| For the IPIP encapsulation methods (described in Appendix C), the | ||||
| port announced by the Proxy SHOULD be the same as on the registrar in | ||||
| order for the proxy to remain stateless. | ||||
| In order to permit the proxy functionality to be implemented on the | ||||
| maximum variety of devices the chosen mechanism SHOULD use the | ||||
| minimum amount of state on the proxy device. While many devices in | ||||
| the ANIMA target space will be rather large routers, the proxy | ||||
| function is likely to be implemented in the control plane CPU of such | ||||
| a device, with available capabilities for the proxy function similar | ||||
| to many class 2 IoT devices. | ||||
| The document [I-D.richardson-anima-state-for-joinrouter] provides a | ||||
| more extensive analysis and background of the alternative proxy | ||||
| methods. | ||||
| 4.1. Pledge discovery of Proxy | ||||
| The result of discovery is a logical communication with a Registrar, | The result of discovery is a logical communication with a Registrar, | |||
| through a Proxy. The Proxy is transparent to the Pledge but is | through a Proxy. The Proxy is transparent to the Pledge but is | |||
| always assumed to exist. | always assumed to exist. | |||
| To discover the Registrar the Pledge performs the following actions: | To discover the Proxy the Pledge performs the following actions: | |||
| a. MUST: Obtains a local address using IPv6 methods as described in | 1. MUST: Obtains a local address using IPv6 methods as described in | |||
| [RFC4862] IPv6 Stateless Address AutoConfiguration. [RFC7217] is | [RFC4862] IPv6 Stateless Address AutoConfiguration. Use of | |||
| encouraged. Pledges will generally prefer use of IPv6 Link-Local | ||||
| addresses, and discovery of Proxy will be by Link-Local | ||||
| mechanisms. IPv4 methods are described in Appendix A | ||||
| b. MUST: Listen for GRASP M_FLOOD ([I-D.ietf-anima-grasp]) | [RFC4941] temporary addresses is encouraged. A new temporary | |||
| announcements of the objective: "ACP+Proxy". See section | address SHOULD be allocated whenever the discovery process is | |||
| Section 3.1.1 for the details of the the objective. The Pledge | forced to restart due to failures. Pledges will generally prefer | |||
| may listen concurrently for other sources of information, see | use of IPv6 Link-Local addresses, and discovery of Proxy will be | |||
| by Link-Local mechanisms. IPv4 methods are described in | ||||
| Appendix A | ||||
| 2. MUST: Listen for GRASP M_FLOOD ([I-D.ietf-anima-grasp]) | ||||
| announcements of the objective: "AN_Proxy". See section | ||||
| Section 4.1.1 for the details of the objective. The Pledge may | ||||
| listen concurrently for other sources 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 3. | Section 5. | |||
| Each discovery method attempted SHOULD exponentially back-off | Each discovery method attempted SHOULD exponentially back-off | |||
| attempts (to a maximum of one hour) to avoid overloading the network | attempts (to a maximum of one hour) to avoid overloading the network | |||
| infrastructure with discovery. The back-off timer for each method | infrastructure with discovery. The back-off timer for each method | |||
| MUST be independent of other methods. | MUST be independent of other methods. | |||
| Methods SHOULD be run in parallel to avoid head of queue problems | Methods SHOULD be run in parallel to avoid head of queue problems | |||
| wherein an attacker running a fake proxy or registrar can operate | wherein an attacker running a fake proxy or registrar can operate | |||
| protocol actions intentionally slowly. | protocol actions intentionally slowly. | |||
| 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 3.2. | responses, see Section 5.2. | |||
| Once all discovered services are attempted the device SHOULD return | Once all discovered services are attempted the device SHOULD return | |||
| to listening for GRASP M_FLOOD. It should periodically retry the | to listening for GRASP M_FLOOD. It should periodically retry the | |||
| vendor specific mechanisms. The Pledge MAY prioritize selection | vendor specific mechanisms. The Pledge MAY prioritize selection | |||
| order as appropriate for the anticipated environment. | order as appropriate for the anticipated environment. | |||
| 3.1.1. Proxy Discovery Protocol Details | 4.1.1. Proxy Grasp announcements | |||
| The proxy uses the GRASP M_FLOOD mechanism to announce itself. This | A proxy uses the GRASP M_FLOOD mechanism to announce itself. The | |||
| announcement is done with the same message as the ACP announcement | pledge SHOULD listen for messages of these form. This announcement | |||
| detailed in [I-D.ietf-anima-autonomic-control-plane]. | can be within the same message as the ACP announcement detailed in | |||
| [I-D.ietf-anima-autonomic-control-plane]. | ||||
| proxy-objective = ["Proxy", [ O_IPv6_LOCATOR, ipv6-address, | proxy-objective = ["AN_Proxy", [ 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 - 6, for TCP 17 for UDP | transport-proto - 6, for TCP 17 for UDP | |||
| port-number - the TCP or UDP port number to find the proxy | port-number - the TCP or UDP port number to find the proxy | |||
| Figure 5 | Figure 5 | |||
| 3.1.2. Registrar Discovery Protocol Details | 4.2. CoAP connection to Registrar | |||
| A Registrar is typically configured manually. When the Registrar | The use of CoAP to connect from Pledge to Registrar is out of scope | |||
| joins an Autonomic Control Plane | for this document, and may be described in future work. | |||
| 4.3. HTTPS proxy connection to Registrar | ||||
| The proxy SHOULD also provide one of: an IPIP encapsulation of HTTP | ||||
| traffic to the registrar, or a TCP circuit proxy that connects the | ||||
| Pledge to a Registrar. | ||||
| When the Proxy provides a circuit proxy to a Registrar the Registrar | ||||
| MUST accept HTTPS connections. | ||||
| 4.4. Proxy discovery of Registrar | ||||
| The Registrar SHOULD announce itself so that proxies can find it and | ||||
| determine what kind of connections can be terminated. | ||||
| When the Registrar joins an Autonomic Control Plane | ||||
| ([I-D.ietf-anima-autonomic-control-plane]) it MUST respond to GRASP | ([I-D.ietf-anima-autonomic-control-plane]) it MUST respond to GRASP | |||
| ([I-D.ietf-anima-grasp]) M_NEG_SYN message. | ([I-D.ietf-anima-grasp]) M_NEG_SYN message. | |||
| The registrar responds to discovery messages from the proxy (or GRASP | The registrar responds to discovery messages from the proxy (or GRASP | |||
| caches between them) as follows: (XXX changed from M_DISCOVERY) | caches between them) as follows: (XXX changed from M_DISCOVERY) | |||
| objective = ["AN_registrar", F_DISC, 255 ] | objective = ["AN_registrar", F_DISC, 255 ] | |||
| discovery-message = [M_NEG_SYN, session-id, initiator, objective] | discovery-message = [M_NEG_SYN, session-id, initiator, objective] | |||
| Figure 6: Registrar Discovery | Figure 6: Registrar Discovery | |||
| skipping to change at page 19, line 22 ¶ | skipping to change at page 27, line 37 ¶ | |||
| address given in the locator. | address given in the locator. | |||
| Registrars MUST accept TCP / UDP traffic on the ports given at the | Registrars MUST accept TCP / UDP traffic on the ports given at the | |||
| ACP address of the Registrar. If the Registrar supports IPIP | ACP address of the Registrar. If the Registrar supports IPIP | |||
| tunnelling, it MUST also accept traffic encapsulated with IPIP. | tunnelling, it MUST also accept traffic encapsulated with IPIP. | |||
| Registrars MUST accept HTTPS/EST traffic on the TCP ports indicated. | Registrars MUST accept HTTPS/EST traffic on the TCP ports indicated. | |||
| Registrars MAY accept DTLS/CoAP/EST traffic on the UDP in addition to | Registrars MAY accept DTLS/CoAP/EST traffic on the UDP in addition to | |||
| TCP traffic. | TCP traffic. | |||
| 3.2. Request Voucher from the Registrar | 5. Protocol Details | |||
| The Pledge MUST initiate BRSKI after boot if it is unconfigured. The | ||||
| Pledge MUST NOT automatically initiate BRSKI if it has been | ||||
| configured or is in the process of being configured. | ||||
| BRSKI is described as extensions to EST [RFC7030] to reduce the | ||||
| number of TLS connections and crypto operations required on the | ||||
| Pledge. The Registrar implements the BRSKI REST interface within the | ||||
| same .well-known URI tree as the existing EST URIs as described in | ||||
| EST [RFC7030] section 3.2.2. The communication channel between the | ||||
| Pledge and the Registrar is referred to as "BRSKI-EST" (see | ||||
| Figure 1). | ||||
| The communication channel between the Registrar and MASA is similarly | ||||
| described as extensions to EST within the same ./well-known tree. | ||||
| For clarity this channel is referred to as "BRSKI-MASA". (See | ||||
| Figure 1). | ||||
| MASA URI is "https:// authority "./well-known/est". | ||||
| BRSKI uses EST message formats for existing operations, uses JSON | ||||
| [RFC7159] for all new operations defined here, and voucher formats. | ||||
| While EST section 3.2 does not insist upon use of HTTP 1.1 persistent | ||||
| connections, BRSKI-EST connections SHOULD use persistent connections. | ||||
| The intention of this guidance is to ensure the provisional TLS | ||||
| authentication occurs only once and is properly managed. | ||||
| Summarized automation extensions for the BRSKI-EST flow are: | ||||
| o The Pledge provisionally accepts the Registrar certificate during | ||||
| the TLS handshake as detailed in Section 5.1. | ||||
| o If the Registrar responds with a redirection to other web origins | ||||
| the Pledge MUST follow only a single redirection. (EST supports | ||||
| redirection but does not allow redirections to other web origins | ||||
| without user input). | ||||
| o The Registar MAY respond with an HTTP 202 ("the request has been | ||||
| accepted for processing, but the processing has not been | ||||
| completed") as described in EST [RFC7030] section 4.2.3 wherein | ||||
| the client "MUST wait at least the specified 'retry-after' time | ||||
| before repeating the same request". The Pledge is RECOMMENDED to | ||||
| provide local feed (blinked LED etc) during this wait cycle if | ||||
| mechanisms for this are available. To prevent an attacker | ||||
| Registrar from significantly delaying bootstrapping the Pledge | ||||
| MUST limit the 'retry-after' time to 60 seconds. To avoid | ||||
| blocking on a single erroneous Registrar the Pledge MUST drop the | ||||
| connection after 5 seconds in which there has been no progress on | ||||
| the TCP connection. It should proceed to other discovered | ||||
| Registrars if there are any. If there were no other Registrars | ||||
| discovered, the pledge MAY continue to wait, as long as it is | ||||
| concurrently listening for new proxy announcements. | ||||
| o Ideally the Pledge could keep track of the appropriate retry-after | ||||
| value for any number of outstanding Registrars but this would | ||||
| involve a large state table on the Pledge. Instead the pledge MAY | ||||
| ignore the exact retry-after value in favor of a single hard coded | ||||
| value that takes effect between discovery ([[ProxyDiscovery]]) | ||||
| attempts. A Registrar that is unable to complete the transaction | ||||
| the first time due to timing reasons will have future chances. | ||||
| o The Pledge requests and validates a voucher using the new REST | ||||
| calls described below. | ||||
| o If necessary the Pledge calls the EST defined /cacerts method to | ||||
| obtain the domain owners' CA certificate. The pinned-domain- | ||||
| certificate element from the voucher should validate this | ||||
| certificate, or be identical to it. | ||||
| o The Pledge completes authentication of the server certificate as | ||||
| detailed in Section 5.5.1. This moves the BRSKI-EST TLS | ||||
| connection out of the provisional state. Optionally, the BRSKI- | ||||
| EST TLS connection can now be used for EST enrollment. | ||||
| The extensions for a Registrar (equivalent to EST server) are: | ||||
| o Client authentication is automated using Initial Device Identity | ||||
| (IDevID) as per the EST certificate based client authentication. | ||||
| The subject field's DN encoding MUST include the "serialNumber" | ||||
| attribute with the device's unique serial number. In the language | ||||
| of RFC6125 this provides for a SERIALNUM-ID category of identifier | ||||
| that can be included in a certificate and therefore that can also | ||||
| be used for matching purposes. The SERIALNUM-ID whitelist is | ||||
| collated according to vendor trust anchor since serial numbers are | ||||
| not globally unique. | ||||
| o The Registrar requests and validates the Voucher from the vendor | ||||
| authorized MASA service. | ||||
| o The Registrar forwards the Voucher to the Pledge when requested. | ||||
| o The Registar performs log verifications in addition to local | ||||
| authorization checks before accepting optional Pledge device | ||||
| enrollment requests. | ||||
| 5.1. BRSKI-EST TLS establishment details | ||||
| The Pledge establishes the TLS connection with the Registrar through | ||||
| the circuit proxy (see Section 4) but the TLS handshake is with the | ||||
| Registar. The BRSKI-EST Pledge is the TLS client and the BRSKI-EST | ||||
| Registrar is the TLS server. All security associations established | ||||
| are between the Pledge and the Registrar regardless of proxy | ||||
| operations. | ||||
| Establishment of the BRSKI-EST TLS connection is as specified in EST | ||||
| [RFC7030] section 4.1.1 "Bootstrap Distribution of CA Certificates" | ||||
| [RFC7030] wherein the client is authenticated with the IDevID | ||||
| certificate, and the EST server (the Registrar) is provisionally | ||||
| authenticated with a unverified server certificate. | ||||
| The Pledge maintains a security paranoia concerning the provisional | ||||
| state, and all data recieved, until a voucher is received and | ||||
| verified as specified in Section 5.5.1 | ||||
| 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 | |||
| "/requestvoucher". | "/requestvoucher". | |||
| The request media types are: | The request media types are: | |||
| application/voucherrequest The request is a "YANG-defined JSON | application/pkcs7-mime; smime-type=voucher-request The request is a | |||
| document that has been signed using a PKCS#7 structure" as | "YANG-defined JSON document that has been signed using a PKCS#7 | |||
| described in [I-D.ietf-anima-voucher] using the JSON encoded | structure" as described in Section 3 using the JSON encoding | |||
| described in [RFC7951]. Signing the request is RECOMMENDED if the | described in [RFC7951]. The Pledge SHOULD sign the request using | |||
| Pledge has sufficient processing to perform the crypto operations. | the Section 2.3 credential. | |||
| Doing so allows the Registrar to forward the Pledge's signed | ||||
| 'proximity' assertion to the MASA as discussed in the security | ||||
| considerations. | ||||
| application/unsignedvoucherrequest The request is the "YANG-defined | application/json The request is the "YANG-defined JSON document" as | |||
| JSON document" but has not been signed. It is the inner JSON | described in Section 3 with exception that it is not within a | |||
| structure protected only by the TLS client authentication. This | PKCS#7 structure. It is protected only by the TLS client | |||
| reduces the cryptographic requirements on the Pledge. | authentication. This reduces the cryptographic requirements on | |||
| the Pledge. | ||||
| For simplicity the term 'voucher request' is used to refer to either | For simplicity the term 'voucher request' is used to refer to either | |||
| of these media types. Registrar impementations SHOULD anticipate | of these media types. Registrar impementations SHOULD anticipate | |||
| future media types but of course will simply fail the request if | future media types but of course will simply fail the request if | |||
| those types are not yet known. | those types are not yet known. | |||
| 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 realtime clock are RECOMMENDED to | |||
| populate this field. This provides additional information to the | populate this field. This provides additional information to the | |||
| MASA. | MASA. | |||
| nonce: The voucher request MUST contain a cryptographically strong | nonce: The voucher request MUST contain a cryptographically strong | |||
| random or pseudo-random number nonce. Doing so ensures | random or pseudo-random number nonce. Doing so ensures | |||
| Section 2.4 functionality. The nonce MUST NOT be reused for | Section 2.5 functionality. The nonce MUST NOT be reused for | |||
| multiple bootstrapping attempts. | bootstrapping attempts. | |||
| assertion: The voucher request MAY contain an assertion of | assertion: The voucher request MAY contain an assertion of | |||
| "proximity". | "proximity". | |||
| pinned-domain-cert: In a Pledge voucher request this is the | proximity-registrar-cert: In a Pledge voucher request this is the | |||
| Registrar certificate as extracted from the TLS handshake (for | first certificate in the TLS server 'certificate_list' sequence | |||
| example the first certificate in the TLS 'certificate_list' | (see [RFC5246]) presented by the Registrar to the Pledge. This | |||
| sequence (see [RFC5246]). This MUST be populated in a Pledge's | MUST be populated in a Pledge's voucher request if the "proximity" | |||
| voucher request if the "proximity" assertion is populated. | assertion is populated. | |||
| All other fields MAY be ommitted in the voucher request. | ||||
| An example JSON payload of a voucher request from a Pledge: | All other fields MAY be omitted in the voucher request. | |||
| { | An example JSON payload of a voucher request from a Pledge is in | |||
| "ietf-voucher:voucher": { | Section 3.2 Example 1. | |||
| "nonce": "62a2e7693d82fcda2624de58fb6722e5", | ||||
| "created-on": "2017-01-01T00:00:00.000Z", | ||||
| "assertion": "proximity", | ||||
| "pinned-domain-cert": "<base64 encoded certificate>" | ||||
| } | ||||
| } | ||||
| The Registrar validates the client identity as described in EST | The Registrar validates the client identity as described in EST | |||
| [RFC7030] section 3.3.2. If the request is signed the Registrar | [RFC7030] section 3.3.2. If the request is signed the Registrar | |||
| confirms the 'proximity' asserion and associated 'pinned-domain-cert' | confirms the 'proximity' asserion and associated 'proximity- | |||
| are correct. The registrar performs authorization as detailed in | registrar-cert' are correct. The registrar performs authorization as | |||
| [[EDNOTE: UNRESOLVED. See Appendix D "Pledge Authorization"]]. If | detailed in [[EDNOTE: UNRESOLVED. See Appendix D "Pledge | |||
| these validations fail the Registrar SHOULD respond with an | Authorization"]]. If these validations fail the Registrar SHOULD | |||
| appropriate HTTP error code. | respond with an appropriate 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 3.3) and returns that MASA signed | the MASA service (see Section 5.4) and returns that MASA signed | |||
| voucher to the pledge as described in Section 3.4. | voucher to the pledge as described in Section 5.5. | |||
| 3.3. Request Voucher from MASA | 5.3. BRSKI-MASA TLS establishment details | |||
| when a Registrar recieves a voucher request from a Pledge it in turn | The BRSKI-MASA TLS connection is a 'normal' TLS connection | |||
| appropriate for HTTPS REST interfaces. The Registrar initiates the | ||||
| connection and uses the MASA URL obtained as described in Section 2.7 | ||||
| for RFC6125 authentication of the MASA server. | ||||
| The primary method of Registrar "authentication" by the MASA is | ||||
| detailed in Section 5.4. As detailed in Section 8 the MASA might | ||||
| find it necessary to request additional Registrar authentication. | ||||
| Registrars MUST be prepared to support TLS client certificate | ||||
| authentication and HTTP Basic or Digest authentication as described | ||||
| in RFC7030 for EST clients. Implementors are advised that contacting | ||||
| the MASA is to establish a secured REST connection with a web service | ||||
| and that there are a number of authentication models being explored | ||||
| within the industry. Registrars are RECOMMENDED to fail gracefully | ||||
| and generate useful administrative notifications or logs in the | ||||
| advent of unexpected HTTP 401 (Unauthorized) responses from the MASA. | ||||
| 5.4. Registrar Requests Voucher from MASA | ||||
| When a Registrar receives a voucher request from a Pledge it in turn | ||||
| requests a voucher from the MASA service. For simplicity this is | requests a voucher from the MASA service. For simplicity this is | |||
| defined as an optional EST message between a Registrar and an EST | defined as an optional EST message between a Registrar and an EST | |||
| server running on the MASA service although the Registrar is not | server running on the MASA service although the Registrar is not | |||
| required to make use of any other EST functionality when | required to make use of any other EST functionality when | |||
| communicating with the MASA service. (The MASA service MUST properly | communicating with the MASA service. (The MASA service MUST properly | |||
| reject any EST functionality requests it does not wish to service; a | reject any EST functionality requests it does not wish to service; a | |||
| requirement that holds for any REST interface). | requirement that holds for any REST interface). | |||
| 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 | |||
| "/requestvoucher". | "/requestvoucher". | |||
| The request media type is: | The request media type is: | |||
| application/voucherrequest The request is a "YANG-defined JSON | application/pkcs7-mime; smime-type=voucher-request The request is a | |||
| document that has been signed using a PKCS#7 structure" as | "YANG-defined JSON document that has been signed using a PKCS#7 | |||
| described in [I-D.ietf-anima-voucher] using the JSON encoded | structure" as described in [I-D.ietf-anima-voucher] using the JSON | |||
| described in [RFC7951]. The Registrar MUST sign the request. The | encoding described in [RFC7951]. The Registrar MUST sign the | |||
| entire Registrar certificate chain, up to and including the Domain | request. The entire Registrar certificate chain, up to and | |||
| CA, MUST be included in the PKCS#7 structure. | including the Domain CA, MUST be included in the PKCS#7 structure. | |||
| For simplicity the term 'voucher request' is used. MASA | For simplicity the term 'voucher request' is used. MASA | |||
| impementations SHOULD anticipate future media types but of course | impementations SHOULD anticipate future media types but of course | |||
| will simply fail the request if those types are not yet known. | will simply fail the request if those types are not yet known. | |||
| The Registrar populates the voucher request fields as follows: | The Registrar populates the voucher request fields as follows: | |||
| created-on: Registrars are RECOMMENDED to populate this field. This | created-on: Registrars are RECOMMENDED to populate this field. This | |||
| provides additional information to the MASA. | provides additional information to the MASA. | |||
| nonce: The optional nonce value from the Pledge request if desired | nonce: The optional nonce value from the Pledge request if desired | |||
| (see below). | (see below). | |||
| 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. | like a voucher for. | |||
| idevid-issuer: The idevid-issuer value from the pledge certificate | idevid-issuer: The idevid-issuer value from the pledge certificate | |||
| is included to ensure a statistically unique identity. The | is included to ensure a statistically unique identity. The | |||
| Pledge's serial number is extracted from the X.509 IDevID. See | Pledge's serial number is extracted from the X.509 IDevID. See | |||
| Section 2.2. | Section 2.3. | |||
| prior-signed-voucher: If the Pledge provided a signed voucher | prior-signed-voucher: If the Pledge provided a signed voucher | |||
| request then it SHOULD be included in the voucher request built by | request then it SHOULD be included in the voucher request built by | |||
| the Registrar. | the Registrar. (NOTE: this is the Pledge's complete voucher | |||
| request, inclusive of the 'assertion', 'proximity-registrar-cert', | ||||
| All other fields MAY be ommitted in the voucher request. | etc wrapped by the pledge's original PKCS#7 signature). | |||
| An example JSON payload of a voucher request from a Registrar: | ||||
| { | ||||
| "ietf-voucher:voucher": { | ||||
| "nonce": "62a2e7693d82fcda2624de58fb6722e5", | ||||
| "created-on": "2017-01-01T00:00:00.000Z", | ||||
| "assertion": "proximity" | ||||
| "idevid-issuer": "<base64 encoded Authority Key Identifier>" | ||||
| "serial-number": "JADA123456789" | ||||
| "prior-signed-voucher": "<base64 encode prior voucher request>" | ||||
| } | ||||
| } | ||||
| A Registrar MAY exclude the nonce from the voucher request it submits | A Registrar MAY exclude the nonce from the voucher request it submits | |||
| to the MASA. Doing so allows the Registrar to request a Voucher when | to the MASA. Doing so allows the Registrar to request a Voucher when | |||
| the Pledge is offline, or when the Registrar is expected to be | the Pledge is offline, or when the Registrar is expected to be | |||
| offline when the Pledge is being deployed. These use cases require | offline when the Pledge is being deployed. These use cases require | |||
| the Registrar to learn the appropriate IDevID SerialNumber field from | the Registrar to learn the appropriate IDevID SerialNumber field from | |||
| the physical device labeling or from the sales channel (out-of-scope | the physical device labeling or from the sales channel (out-of-scope | |||
| of this document). If a nonce is not provided the MASA server MUST | of this document). If a nonce is not provided the MASA server MUST | |||
| authenticate the Registrar as described in EST [RFC7030] section | authenticate the Registrar as described in EST [RFC7030] section | |||
| 3.3.2 to reduce the risk of DDoS attacks and to provide an | 3.3.2 to reduce the risk of DDoS attacks and to provide an | |||
| authenticated identity as an input to sales channel integration and | authenticated identity as an input to sales channel integration and | |||
| authorizations (also out-of-scope of this document). | authorizations (also out-of-scope of this document). | |||
| All other fields MAY be omitted in the voucher request. | ||||
| Example JSON payloads of voucher requests from a Registrar are in | ||||
| Section 3.2 Example 2 through 4. | ||||
| The MASA verifies that the voucher request is internally consistent | The MASA verifies that the voucher request is internally consistent | |||
| but does not authenticate the domain identity information since the | but does not authenticate the registrar certificate since the | |||
| domain is not know to the MASA server in advance. The MASA | registrar is not know to the MASA server in advance. The MASA | |||
| validation checks before issuing a voucher are as follows: | validation checks before issuing a voucher are as follows: | |||
| Renew for expired voucher: As described in [I-D.ietf-anima-voucher] | Renew for expired voucher: As described in [I-D.ietf-anima-voucher] | |||
| vouchers are normally short lived to avoid revocation issues. If | vouchers are normally short lived to avoid revocation issues. If | |||
| the request is for a previous (expired) voucher using the same | the request is for a previous (expired) voucher using the same | |||
| Registrar (as determined by the Registrar pinned-domain-cert) and | Registrar (as determined by the Registrar pinned-domain-cert) and | |||
| the MASA has not been informed that the claim is invalid then the | the MASA has not been informed that the claim is invalid then the | |||
| request for a renewed voucher SHOULD be automatically authorized. | request for a renewed voucher SHOULD be automatically authorized. | |||
| Voucher signature consistency: The MASA MUST verify that the voucher | Voucher signature consistency: The MASA MUST verify that the voucher | |||
| skipping to change at page 23, line 21 ¶ | skipping to change at page 34, line 7 ¶ | |||
| Because the Registar certificate authority is unknown to the MASA | Because the Registar certificate authority is unknown to the MASA | |||
| in advance this is only an extended consistency check and is not | in advance this is only an extended consistency check and is not | |||
| required. The maximum lifetime of the voucher issued SHOULD NOT | required. The maximum lifetime of the voucher issued SHOULD NOT | |||
| exceed the lifetime of the Registrar's revocation validation (for | exceed the lifetime of the Registrar's revocation validation (for | |||
| example if the Registrar revocation status is indicated in a CRL | example if the Registrar revocation status is indicated in a CRL | |||
| that is valid for two weeks then that is an appropriate lifetime | that is valid for two weeks then that is an appropriate lifetime | |||
| for the voucher). | for the voucher). | |||
| Pledge proximity assertion: The MASA server MAY verify that the | Pledge proximity assertion: The MASA server MAY verify that the | |||
| Registrar signed voucher includes the 'prior-signed-voucher' field | Registrar signed voucher includes the 'prior-signed-voucher' field | |||
| populated with a Pledge signed voucher that includes a pinned- | populated with a Pledge signed voucher that includes a 'proximity- | |||
| domain-cert that is consistent with the Registrar certificate | registrar-cert' that is consistent with the certificate the | |||
| chain. The MASA server is aware of which Pledge's support signing | Registrar used to sign the voucher request. The MASA server is | |||
| of their voucher requests and can use this information to confirm | aware of which Pledge's support signing of their voucher requests | |||
| proximity of the Pledge with the Registrar. | and can use this information to confirm proximity of the Pledge | |||
| with the Registrar. | ||||
| The root certificate is extracted from the signature method and used | The Registrar certificate chain root certificate is extracted from | |||
| to populate the "pinned-domain-cert" of the Voucher being issued. | the signature method and used to populate the "pinned-domain-cert" of | |||
| The domain ID (e.g. hash of the public key of the domain) is | the Voucher being issued. The domain ID (e.g. hash of the public key | |||
| extracted from the root certificate and is used to update the audit | of the domain) is extracted from the root certificate and is used to | |||
| log. | update the audit log. | |||
| 3.4. Voucher Response | 5.5. Voucher Response | |||
| The voucher response to requests from the Pledge and requests from a | The voucher response to requests from the Pledge and requests from a | |||
| Registrar are in the same format. A Registrar either caches prior | Registrar are in the same format. A Registrar either caches prior | |||
| MASA responses or dynamically requests a new Voucher based on local | MASA responses or dynamically requests a new Voucher based on local | |||
| policy. | policy. | |||
| If the the join operation is successful, the server response MUST | If the join operation is successful, the server response MUST contain | |||
| contain an HTTP 200 response code. The server MUST answer with a | an HTTP 200 response code. The server MUST answer with a suitable | |||
| suitable 4xx or 5xx HTTP [RFC2616] error code when a problem occurs. | 4xx or 5xx HTTP [RFC2616] error code when a problem occurs. The | |||
| The response data from the MASA server MUST be a plaintext human- | response data from the MASA server MUST be a plaintext human-readable | |||
| readable (ASCII, english) error message containing explanatory | (ASCII, english) error message containing explanatory information | |||
| information describing why the request was rejected. | describing why the request was rejected. | |||
| Response media type: application/voucher+cms | A 403 (Forbidden) response is appropriate if the voucher request is | |||
| not signed correctly, stale, or if the pledge has another outstanding | ||||
| voucher which can not be overridden. | ||||
| A 404 (Not Found) response is appropriate when the request is for a | ||||
| device which is not known to the MASA. | ||||
| A 406 (Not Acceptable) response is appropriate if a voucher of the | ||||
| desired type, or using the desired algorithms (as indicated by the | ||||
| Accept: headers, and algorithms used in the signature) can not be | ||||
| issued, such as because the MASA knows the pledge can not process | ||||
| that type. | ||||
| A 415 (Unsupported Media Type) response is approriate for a request | ||||
| that has a voucher encoding that is not understood. | ||||
| The response media type is: | ||||
| application/pkcs7-mime; smime-type=voucher The response is a "YANG- | ||||
| defined JSON document that has been signed using a PKCS#7 | ||||
| structure" as described in [I-D.ietf-anima-voucher] using the JSON | ||||
| encoded described in [RFC7951]. The MASA MUST sign the request. | ||||
| The syntactic details of vouchers are described in detail in | The syntactic details of vouchers are described in detail in | |||
| [I-D.ietf-anima-voucher]. For example, the voucher consists of: | [I-D.ietf-anima-voucher]. For example, the voucher consists of: | |||
| { | { | |||
| "ietf-voucher:voucher": { | "ietf-voucher:voucher": { | |||
| "nonce": "62a2e7693d82fcda2624de58fb6722e5", | "nonce": "62a2e7693d82fcda2624de58fb6722e5", | |||
| "assertion": "logging" | "assertion": "logging" | |||
| "pinned-domain-cert": "<base64 encoded certificate>" | "pinned-domain-cert": "base64encodedvalue==" | |||
| "serial-number": "JADA123456789" | "serial-number": "JADA123456789" | |||
| } | } | |||
| } | } | |||
| The Pledge verifies the signed voucher using the manufacturer | The Pledge verifies the signed voucher using the manufacturer | |||
| installed trust anchor associated with the vendor's selected | installed trust anchor associated with the vendor's selected | |||
| Manufacturer Authorized Signing Authority. | Manufacturer Authorized Signing Authority. | |||
| The 'pinned-domain-cert' element of the voucher contains the domain | The 'pinned-domain-cert' element of the voucher contains the domain | |||
| CA's public key. The Pledge MUST use the 'pinned-domain-cert' trust | CA's public key. The Pledge MUST use the 'pinned-domain-cert' trust | |||
| anchor to immediately complete authentication of the provisional TLS | anchor to immediately complete authentication of the provisional TLS | |||
| connection. | connection. | |||
| The Pledge MUST be prepared to parse and fail gracefully from an | 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. | |||
| The Pledge MUST be prepared to ignore additional fields it does not | The Pledge MUST be prepared to ignore additional fields it does not | |||
| recognize. | recognize. | |||
| 3.4.1. Completing authentication of Provisional TLS connection | 5.5.1. Completing authentication of Provisional TLS connection | |||
| If a Registrar's credentials can not be verified using the pinned- | If a Registrar's credentials can not 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 | immediately discarded and the Pledge abandons attempts to bootstrap | |||
| with this discovered registrar. The pledge SHOULD send voucher | with this discovered registrar. The pledge SHOULD send voucher | |||
| status telemetry (described below) before closing the TLS connection. | status telemetry (described below) before closing the TLS connection. | |||
| The pledge MUST attempt to enroll using any other proxies it has | The pledge MUST attempt to enroll using any other proxies it has | |||
| found. It SHOULD return to the same proxy again after attempting | found. It SHOULD return to the same proxy again after attempting | |||
| with other proxies. Attempts should be attempted in the exponential | with other proxies. Attempts should be attempted in the exponential | |||
| backoff described earlier. Attempts SHOULD be repeated as failure | backoff described earlier. Attempts SHOULD be repeated as failure | |||
| may be the result of a temporary inconsistently (an inconsistently | may be the result of a temporary inconsistently (an inconsistently | |||
| rolled Registrar key, or some other mis-configuration). The | rolled Registrar key, or some other mis-configuration). The | |||
| inconsistently could also be the result an active MITM attack on the | inconsistently could also be the result an active MITM attack on the | |||
| EST connection. | 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.4. Once the | validity period information is as described in Section 2.5. Once the | |||
| PKIX path validation is successful the TLS connection is no longer | PKIX path validation is successful the TLS connection is no longer | |||
| provisional. | provisional. | |||
| The pinned-domain-cert is installed as an Explicit Trust Anchor for | The pinned-domain-cert is installed as an Explicit Trust Anchor for | |||
| future operations. It can therefore can be used to authenticate any | future operations. It can therefore can be used to authenticate any | |||
| dynamically discovered EST server that contain the id-kp-cmcRA | dynamically discovered EST server that contain the id-kp-cmcRA | |||
| extended key usage extension as detailed in EST RFC7030 section | extended key usage extension as detailed in EST RFC7030 section | |||
| 3.6.1; but to reduce system complexity the Pledge SHOULD avoid | 3.6.1; but to reduce system complexity the Pledge SHOULD avoid | |||
| additional discovery operations. Instead the Pledge SHOULD | additional discovery operations. Instead the Pledge SHOULD | |||
| communicate directly with the Registrar as the EST server. The ' | communicate directly with the Registrar as the EST server. The ' | |||
| pinned-domain-cert' is not a complete distribution of the EST section | pinned-domain-cert' is not a complete distribution of the EST section | |||
| 4.1.3 CA Certificate Response which is an additional justification | 4.1.3 CA Certificate Response which is an additional justification | |||
| for the recommendation to proceed with EST key management operations. | for the recommendation to proceed with EST key management operations. | |||
| Once a full CA Certificate Response is obtained it is more | Once a full CA Certificate Response is obtained it is more | |||
| authoritative for the domain than the limited 'pinned-domain-cert' | authoritative for the domain than the limited 'pinned-domain-cert' | |||
| response.' | response.' | |||
| 3.5. Voucher Status Telemetry | 5.6. Voucher 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 lifecycle status. To facilitate | |||
| this it needs telemetry information concerning the device's status. | this it needs telemetry information concerning the device's status. | |||
| To indicate Pledge status regarding the Voucher the client SHOULD | To indicate Pledge status regarding the Voucher, the pledge MUST post | |||
| post a status message. | a status message. | |||
| The posted data media type: application/json | The posted data media type: application/json | |||
| The client HTTP POSTs the following to the server at the EST well | The client HTTP POSTs the following to the server at the EST well | |||
| known URI /voucher_status. The Status field indicates if the Voucher | known URI /voucher_status. The Status field indicates if the Voucher | |||
| was acceptable. If it was not acceptable the Reason string indicates | was acceptable. If it was not acceptable the Reason string indicates | |||
| why. In the failure case this message is being sent to an | why. In the failure case this message is being sent to an | |||
| unauthenticated, potentially malicious Registrar and therefore the | unauthenticated, potentially malicious Registrar and therefore the | |||
| Reason string SHOULD NOT provide information beneficial to an | Reason string SHOULD NOT provide information beneficial to an | |||
| attacker. The operational benefit of this telemetry information is | attacker. The operational benefit of this telemetry information is | |||
| balanced against the operational costs of not recording that an | balanced against the operational costs of not recording that an | |||
| Voucher was ignored by a client the registar expected to continue | Voucher was ignored by a client the registar expected to continue | |||
| joining the domain. | joining the domain. | |||
| { | { | |||
| "version":"1", | "version":"1", | |||
| "Status":FALSE /* TRUE=Success, FALSE=Fail" | "Status":FALSE /* TRUE=Success, FALSE=Fail" | |||
| "Reason":"Informative human readable message" | "Reason":"Informative human readable message" | |||
| "reason-context": { additional JSON } | ||||
| } | } | |||
| 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. Within the | |||
| server logs the server SHOULD capture this telemetry information. | server logs the server SHOULD capture this telemetry information. | |||
| 3.6. MASA authorization log Request | The reason-context attribute is an arbitrary JSON object (literal | |||
| value or hash of values) which provides additional information | ||||
| specific to this pledge. The contents of this field are not subject | ||||
| to standardization." | ||||
| A registrar requests the MASA authorization log from the MASA service | Additional standard responses MAY be added via Specification | |||
| using this EST extension. If a device had previously registered with | Required. | |||
| another domain, a Registrar of that domain would show in the log. | ||||
| 5.7. MASA authorization log Request | ||||
| After receiving the voucher status telemetry Section 5.6, the | ||||
| Registrar SHOULD request the MASA authorization log from the MASA | ||||
| service using this EST extension. If a device had previously | ||||
| registered with another domain, a Registrar of that domain would show | ||||
| in the log. | ||||
| This is done with an HTTP GET using the operation path value of | This is done with an HTTP GET using the operation path value of | |||
| "/requestauditlog". | "/requestauditlog". | |||
| The registrar MUST HTTP POSTs the same Voucher Request as when | The registrar MUST HTTP POSTs the same Voucher Request as when | |||
| requesting a Voucher. It is posted to the /requestauditlog URI | requesting a Voucher. It is posted to the /requestauditlog URI | |||
| instead. The "idevid-issuer" and "serial-number" informs the MASA | instead. The "idevid-issuer" and "serial-number" informs the MASA | |||
| server which log is requested so the appropriate log can be prepared | server which log is requested so the appropriate log can be prepared | |||
| for the response. Using the same media type and message minimizes | for the response. Using the same media type and message minimizes | |||
| cryptographic and message operations although it results in | cryptographic and message operations although it results in | |||
| additional network traffic. The relying MASA server implementation | additional network traffic. The relying MASA server implementation | |||
| MAY leverage internal state to associate this request with the | MAY leverage internal state to associate this request with the | |||
| original, and by now already validated, voucher request so as to | original, and by now already validated, voucher request so as to | |||
| avoid an extra crypto validation. | avoid an extra crypto validation. | |||
| Request media type: application/voucherrequest+cms | The request media type is: | |||
| 3.7. MASA authorization log Response | application/pkcs7-mime; smime-type=voucher-request The request is a | |||
| "YANG-defined JSON document that has been signed using a PKCS#7 | ||||
| structure" as described in Section 3 using the JSON encoded | ||||
| described in [RFC7951]. The Registrar MUST sign the request. The | ||||
| entire Registrar certificate chain, up to and including the Domain | ||||
| CA, MUST be included in the PKCS#7 structure. | ||||
| 5.7.1. MASA authorization log Response | ||||
| A log data file is returned consisting of all log entries. For | A log data file is returned consisting of all log entries. For | |||
| example: | example: | |||
| { | { | |||
| "version":"1", | "version":"1", | |||
| "events":[ | "events":[ | |||
| { | { | |||
| "date":"<date/time of the entry>", | "date":"<date/time of the entry>", | |||
| "domainID":"<domainID as extracted from the domain CA certificate | "domainID":"<domainID as extracted from the domain CA certificate | |||
| skipping to change at page 27, line 29 ¶ | skipping to change at page 39, line 10 ¶ | |||
| 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 registar. This format could be improved by | service to the registar. This format could be improved by | |||
| distributed consensus technologies that integrate vouchers with a | distributed consensus technologies that integrate vouchers with a | |||
| technologies such as block-chain or hash trees or the like. Doing so | technologies such as block-chain or hash trees or the like. Doing so | |||
| is out of the scope of this document but are anticipated improvements | is out of the scope of this document but are anticipated improvements | |||
| for future work. As such, the Registrar client SHOULD anticipate new | for future work. As such, the Registrar client SHOULD anticipate new | |||
| kinds of responses, and SHOULD provide operator controls to indicate | kinds of responses, and SHOULD provide operator controls to indicate | |||
| how to process unknown responses. | how to process unknown responses. | |||
| 3.8. EST Integration for PKI bootstrapping | 5.8. EST Integration for PKI bootstrapping | |||
| This section describes EST extensions necessary to enable fully | ||||
| automated bootstrapping. Although the Voucher request/response | ||||
| structure members "idevid-issuer" and "pinned-domain-cert" are | ||||
| specific to PKI bootstrapping these are the only PKI specific aspects | ||||
| of the extensions and future voucher definitions might replace them | ||||
| with non-PKI fields. | ||||
| Once the Voucher is received, as specified in this document, the | ||||
| client has sufficient information to leverage the existing | ||||
| communication channel with a Registrar to continue an EST RFC7030 | ||||
| enrollment. The voucher provides an automated mechanism for the | ||||
| "Bootstrap Distribution of CA Certificates" described in [RFC7030] | ||||
| section 4.1.1 wherein the Pledge "MUST [...]. engage a human user to | ||||
| authorize the CA certificate using out-of-band" information". | ||||
| Instead the Pledge now can automate this process using the voucher | ||||
| provided "pinned-domain-cert". | ||||
| The Pledge SHOULD use the existing current TLS connection to proceed | The Pledge SHOULD follow the BRSKI operations with EST enrollment | |||
| with EST enrollment, thus reducing the total amount of cryptographic | ||||
| and round trip operations required during bootstrapping. After | ||||
| voucher verification the Pledge continues with EST enrollment | ||||
| operations including "CA Certificates Request", "CSR Attributes" and | operations including "CA Certificates Request", "CSR Attributes" and | |||
| "Client Certificate Request" or "Server-Side Key Generation" etc. | "Client Certificate Request" or "Server-Side Key Generation" etc. | |||
| This is a relatively seamless integration since BRSKI REST calls | ||||
| provide an automated alternative to the manual bootstrapping method | ||||
| described in [RFC7030]. As noted above, use of HTTP 1.1 persistent | ||||
| connections simplifies the Pledge state machine. | ||||
| The Pledge is RECOMMENDED to implement the following EST automation | The Pledge is also RECOMMENDED to implement the following EST | |||
| extensions. They supplement the RFC7030 EST to better support | automation extensions. They supplement the RFC7030 EST to better | |||
| automated devices that do not have an end user. | support automated devices that do not have an end user. | |||
| 3.8.1. EST Distribution of CA Certificates | Although EST allows clients to obtain multiple certificates by | |||
| sending multiple CSR requests BRSKI mandates use of the CSR | ||||
| Attributes request and mandates that the Registrar validate the CSR | ||||
| against the expected attributes. This implies that client requests | ||||
| will "look the same" and therefore result in a single logical | ||||
| certificate being issued even if the client were to make multiple | ||||
| requests. Registrars MAY contain more complex logic but doing so is | ||||
| out-of-scope of this specification. BRSKI does not signal any | ||||
| enhancement or restriction to this capability. Pledges that require | ||||
| multiple certificates could establish direct EST connections to the | ||||
| Registrar. | ||||
| 5.8.1. EST Distribution of CA Certificates | ||||
| The Pledge MUST request the full EST Distribution of CA Certificates | The Pledge MUST request the full EST Distribution of CA Certificates | |||
| message. See RFC7030, section 4.1. | message. 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 domainCAcert (see Section 3.4 for a | certificates beyond the pinned-domain-cert (see Section 5.5.1 for a | |||
| discussion of the limitations). Although these restrictions are | discussion of the limitations inherent in having a single certificate | |||
| acceptable for a Registrar integrated with initial bootstrapping they | instead of a full CA Certificates response). Although these | |||
| are not appropriate for ongoing PKIX end entity certificate | limitations are acceptable during initial bootstrapping they are not | |||
| validation. | appropriate for ongoing PKIX end entity certificate validation. | |||
| 3.8.2. EST CSR Attributes | 5.8.2. EST CSR Attributes | |||
| Automated bootstrapping occurs without local administrative | Automated bootstrapping occurs without local administrative | |||
| configuration of the Pledge. In some deployments its plausible that | configuration of the Pledge. In some deployments its plausible that | |||
| the Pledge generates a certificate request containing only identity | the Pledge generates a certificate request containing only identity | |||
| information known to the Pledge (essentially the X.509 IDevID | information known to the Pledge (essentially the X.509 IDevID | |||
| information) and ultimately receives a certificate containing domain | information) and ultimately receives a certificate containing domain | |||
| specific identity information. Conceptually the CA has complete | specific identity information. Conceptually the CA has complete | |||
| control over all fields issued in the end entity certificate. | control over all fields issued in the end entity certificate. | |||
| Realistically this is operationally difficult with the current status | Realistically this is operationally difficult with the current status | |||
| of PKI certificate authority deployments where the CSR is submitted | of PKI certificate authority deployments where the CSR is submitted | |||
| skipping to change at page 29, line 19 ¶ | skipping to change at page 41, line 5 ¶ | |||
| "ACP information" field. See | "ACP information" field. See | |||
| [I-D.ietf-anima-autonomic-control-plane] for more details. | [I-D.ietf-anima-autonomic-control-plane] for more details. | |||
| The Registar MUST also confirm the resulting CSR is formatted as | The Registar MUST also confirm the resulting CSR is formatted as | |||
| indicated before forwarding the request to a CA. If the Registar is | indicated before forwarding the request to a CA. If the Registar is | |||
| communicating with the CA using a protocol like full CMC which | communicating with the CA using a protocol like full CMC which | |||
| provides mechanisms to override the CSR attributes, then these | provides mechanisms to override the CSR attributes, then these | |||
| mechanisms MAY be used even if the client ignores CSR Attribute | mechanisms MAY be used even if the client ignores CSR Attribute | |||
| guidance. | guidance. | |||
| 3.8.3. EST Client Certificate Request | 5.8.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. | |||
| 3.8.4. Enrollment Status Telemetry | 5.8.4. Enrollment Status Telemetry | |||
| For automated bootstrapping of devices the adminstrative elements | For automated bootstrapping of devices the adminstrative elements | |||
| providing bootstrapping also provide indications to the system | providing bootstrapping also provide indications to the system | |||
| administrators concerning device lifecycle status. This might | administrators concerning device lifecycle status. This might | |||
| include information concerning attempted bootstrapping messages seen | include information concerning attempted bootstrapping messages seen | |||
| by the client, MASA provides logs and status of credential | by the client, MASA provides logs and status of credential | |||
| enrollment. The EST protocol assumes an end user and therefore does | enrollment. The EST protocol assumes an end user and therefore does | |||
| not include a final success indication back to the server. This is | not include a final success indication back to the server. This is | |||
| insufficient for automated use cases. | insufficient for automated use cases. | |||
| skipping to change at page 30, line 4 ¶ | skipping to change at page 41, line 38 ¶ | |||
| enrollment failed. The SubjectKeyIdentifier field MUST be included | enrollment failed. The SubjectKeyIdentifier field MUST be included | |||
| if the enrollment attempt was for a keypair that is locally known to | if the enrollment attempt was for a keypair that is locally known to | |||
| the client. If EST /serverkeygen was used and failed then the field | the client. If EST /serverkeygen was used and failed then the field | |||
| is omitted from the status telemetry. | is omitted from the status telemetry. | |||
| In the case of a SUCCESS the Reason string is omitted. The | In the case of a SUCCESS the Reason string is omitted. The | |||
| SubjectKeyIdentifier is included so that the server can record the | SubjectKeyIdentifier is included so that the server can record the | |||
| successful certificate distribution. | successful certificate distribution. | |||
| Status media type: application/json | Status media type: application/json | |||
| The client HTTP POSTs the following to the server at the new EST well | The client HTTP POSTs the following to the server at the new EST well | |||
| known URI /enrollstatus. | known URI /enrollstatus. | |||
| { | { | |||
| "version":"1", | "version":"1", | |||
| "Status":TRUE /* TRUE=Success, FALSE=Fail" | "Status":TRUE /* TRUE=Success, FALSE=Fail" | |||
| "Reason":"Informative human readable message" | "Reason":"Informative human readable message" | |||
| "SubjectKeyIdentifier":"<base64 encoded subjectkeyidentifier for the | "reason-context": "Additional information" | |||
| enrollment that failed>" | } | |||
| } | ||||
| 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 an TLS session with a matching client certificate. | |||
| This allows for clients that wish to minimize their crypto operations | This allows for clients that wish to minimize their crypto operations | |||
| to simply POST this response without renegotiating the TLS session - | to simply POST this response without renegotiating the TLS session - | |||
| at the cost of the server not being able to accurately verify that | at the cost of the server not being able to accurately verify that | |||
| enrollment was truly successful. | enrollment was truly successful. | |||
| 3.8.5. EST over CoAP | 5.8.5. EST over CoAP | |||
| This document describes extensions to EST for the purposes of | This document describes extensions to EST for the purposes of | |||
| bootstrapping of remote key infrastructures. Bootstrapping is | bootstrapping of remote key infrastructures. Bootstrapping is | |||
| relevant for CoAP enrollment discussions as well. The defintion of | relevant for CoAP enrollment discussions as well. The defintion of | |||
| EST and BRSKI over CoAP is not discussed within this document beyond | EST and BRSKI over CoAP is not discussed within this document beyond | |||
| ensuring proxy support for CoAP operations. Instead it is | ensuring proxy support for CoAP operations. Instead it is | |||
| anticipated that a definition of CoAP mappings will occur in | anticipated that a definition of CoAP mappings will occur in | |||
| subsequent documents such as [I-D.vanderstok-ace-coap-est] and that | subsequent documents such as [I-D.vanderstok-ace-coap-est] and that | |||
| CoAP mappings for BRSKI will be discussed either there or in future | CoAP mappings for BRSKI will be discussed either there or in future | |||
| work. | work. | |||
| 4. Reduced security operational modes | 6. 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. The following | operational modes for support specific use cases. The following | |||
| sections detail specific ways that the Pledge, Registrar and MASA can | sections detail specific ways that the Pledge, Registrar and MASA can | |||
| be configured to run in a less secure mode for the indicated reasons. | be configured to run in a less secure mode for the indicated reasons. | |||
| 4.1. Trust Model | 6.1. Trust Model | |||
| +--------+ +---------+ +------------+ +------------+ | +--------+ +---------+ +------------+ +------------+ | |||
| | Pledge | | Circuit | | Domain | | Vendor | | | Pledge | | Circuit | | Domain | | Vendor | | |||
| | | | Proxy | | Registrar | | Service | | | | | Proxy | | Registrar | | Service | | |||
| | | | | | | | (Internet | | | | | | | | | (Internet | | |||
| +--------+ +---------+ +------------+ +------------+ | +--------+ +---------+ +------------+ +------------+ | |||
| Figure 10 | Figure 10 | |||
| Pledge: The Pledge could be compromised and providing an attack | Pledge: The Pledge could be compromised and providing an attack | |||
| vector for malware. The entity is trusted to only imprint using | vector for malware. The entity is trusted to only imprint using | |||
| skipping to change at page 31, line 37 ¶ | skipping to change at page 43, line 18 ¶ | |||
| accurately log all claim attempts and to provide authoritative log | accurately log all claim attempts and to provide authoritative log | |||
| information to Registrars. The MASA does not know which devices | information to Registrars. The MASA does not know which devices | |||
| are associated with which domains. These claims could be | 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. | |||
| Current text provides only for a trusted vendor. | Current text provides only for a trusted vendor. | |||
| Vendor Service, Ownership Validation: This form of vendor service is | Vendor Service, Ownership Validation: This form of vendor service is | |||
| trusted to accurately know which device is owned by which domain. | trusted to accurately know which device is owned by which domain. | |||
| 4.2. Pledge security reductions | 6.2. Pledge security reductions | |||
| The Pledge can choose to accept vouchers using less secure methods. | The Pledge can choose to accept vouchers using less secure methods. | |||
| These methods enable offline and emergency (touch based) deployment | These methods enable offline and emergency (touch based) deployment | |||
| use cases: | use cases: | |||
| 1. The Pledge MUST accept nonceless vouchers. This allows for | 1. The Pledge MUST accept nonceless vouchers. This allows for | |||
| offline use cases. Logging and validity periods address the | offline use cases. Logging and validity periods address the | |||
| inherent security considerations of supporting these use cases. | inherent security considerations of supporting these use cases. | |||
| 2. The Pledge MAY support "trust on first use" for physical | 2. The Pledge MAY support "trust on first use" for physical | |||
| skipping to change at page 32, line 19 ¶ | skipping to change at page 44, line 5 ¶ | |||
| available via local configuration or physical presence methods to | available via local configuration or physical presence methods to | |||
| ensure new entities can always be deployed even when autonomic | ensure new entities can always be deployed even when autonomic | |||
| methods fail. This allows for unsecured imprint. | methods fail. This allows for unsecured imprint. | |||
| It is RECOMMENDED that "trust on first use" or skipping voucher | It is RECOMMENDED that "trust on first use" or skipping voucher | |||
| validation only be available if hardware assisted Network Endpoint | validation only be available if hardware assisted Network Endpoint | |||
| Assessment [RFC5209] is supported. This recommendation ensures that | Assessment [RFC5209] is supported. This recommendation ensures that | |||
| domain network monitoring can detect innappropriate use of offline or | domain network monitoring can detect innappropriate use of offline or | |||
| emergency deployment procedures. | emergency deployment procedures. | |||
| 4.3. Registrar security reductions | 6.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. | |||
| These methods are acceptable when low security models are needed, as | These methods are acceptable when low security models are needed, as | |||
| the security decisions are being made by the local administrator, but | the security decisions are being made by the local administrator, but | |||
| they MUST NOT be the default behavior: | they MUST NOT be the default behavior: | |||
| 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, at the administrator's discretion. This could | |||
| occur when informing all Registrars of unique identifiers of new | occur when informing all Registrars of unique identifiers of new | |||
| entities might be operationally difficult. | entities might be operationally difficult. | |||
| 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 3.2 request using | an X.509 IDevID credential MAY form the Section 5.2 request using | |||
| the Section 3.3 format to ensure the Pledge's serial number | the Section 5.4 format to ensure the Pledge's serial number | |||
| information is provided to the Registar (this includes the IDevID | information is provided to the Registar (this includes the IDevID | |||
| AuthorityKeyIdentifier value which would be statically configured | AuthorityKeyIdentifier value which would be statically configured | |||
| on the Pledge). The Pledge MAY refuse to provide a TLS client | on the Pledge). The Pledge MAY refuse to provide a TLS client | |||
| certificate (as one is not available). The Pledge SHOULD support | certificate (as one is not available). The Pledge SHOULD support | |||
| HTTP-based or certificate-less TLS authentication as described in | HTTP-based or certificate-less TLS authentication as described in | |||
| EST RFC7030 section 3.3.2. A Registrar MUST NOT accept | EST RFC7030 section 3.3.2. A Registrar MUST NOT accept | |||
| unauthenticated New Entities unless it has been configured to do | unauthenticated New Entities unless it has been configured to do | |||
| so by an administrator that has verified that only expected new | so by an administrator that has verified that only expected new | |||
| entities can communicate with a Registrar (presumably via a | entities can communicate with a Registrar (presumably via a | |||
| physically secured perimeter). | physically secured perimeter). | |||
| skipping to change at page 33, line 12 ¶ | skipping to change at page 44, line 46 ¶ | |||
| then be transmitted to the Registrar and stored until they are | then be transmitted to the Registrar and stored until they are | |||
| needed during bootstrapping operations. This is for use cases | needed during bootstrapping operations. This is for use cases | |||
| where target network is protected by an air gap and therefore can | where target network is protected by an air gap and therefore can | |||
| not contact the MASA service during Pledge deployment. | not contact the MASA service during Pledge deployment. | |||
| 4. A registrar MAY ignore unrecognized nonce-less log entries. This | 4. A registrar MAY ignore unrecognized nonce-less 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 permanent | being deployed in air gap networks that required permanent | |||
| Vouchers. | Vouchers. | |||
| 4.4. MASA security reductions | 6.4. MASA security reductions | |||
| Lower security modes chosen by the MASA service effect all device | Lower security modes chosen by the MASA service effect all device | |||
| deployments unless bound to the specific device identities. In which | deployments unless bound to the specific device identities. In which | |||
| case these modes can be provided as additional features for specific | case these modes can be provided as additional features for specific | |||
| customers. The MASA service can choose to run in less secure modes | customers. The MASA service can choose to run in less secure modes | |||
| by: | by: | |||
| 1. Not enforcing that a nonce is in the Voucher. This results in | 1. Not enforcing that a nonce is in the Voucher. This results in | |||
| distribution of Voucher that never expires and in effect makes | distribution of Voucher that never expires and in effect makes | |||
| the Domain an always trusted entity to the Pledge during any | the Domain an always trusted entity to the Pledge during any | |||
| subsequent bootstrapping attempts. That this occurred is | subsequent bootstrapping attempts. That this occurred is | |||
| captured in the log information so that the Domain registrar can | captured in the log information so that the Registrar can make | |||
| make appropriate security decisions when a Pledge joins the | appropriate security decisions when a Pledge joins the Domain. | |||
| Domain. This is useful to support use cases where Registrars | This is useful to support use cases where Registrars might not be | |||
| might not be online during actual device deployment. Because | online during actual device deployment. Because this results in | |||
| this results in long lived Voucher and does not require the proof | long lived Voucher and does not require the proof that the device | |||
| that the device is online this is only accepted when the | is online this is only accepted when the Registrar is | |||
| Registrar is authenticated by the MASA server and authorized to | authenticated by the MASA server and authorized to provide this | |||
| provide this functionality. The MASA server is RECOMMENDED to | functionality. The MASA server is RECOMMENDED to use this | |||
| use this functionality only in concert with an enhanced level of | functionality only in concert with an enhanced level of ownership | |||
| ownership tracking (out-of-scope). If the Pledge device is known | tracking (out-of-scope). If the Pledge device is known to have a | |||
| to have a real-time-clock that is set from the factory use of a | real-time-clock that is set from the factory use of a voucher | |||
| voucher validity period is RECOMMENDED. | validity period is RECOMMENDED. | |||
| 2. Not verifying ownership before responding with an Voucher. This | 2. Not verifying ownership before responding with an Voucher. This | |||
| is expected to be a common operational model because doing so | is expected to be a common operational model because doing so | |||
| relieves the vendor providing MASA services from having to track | relieves the vendor providing MASA services from having to track | |||
| ownership during shipping and supply chain and allows for a very | ownership during shipping and supply chain and allows for a very | |||
| low overhead MASA service. A Registrar uses the audit log | low overhead MASA service. A Registrar uses the audit log | |||
| information as a defense in depth strategy to ensure that this | information as a defense in depth strategy to ensure that this | |||
| does not occur unexpectedly (for example when purchasing new | does not occur unexpectedly (for example when purchasing new | |||
| equipment the Registrar would throw an error if any audit log | equipment the Registrar would throw an error if any audit log | |||
| information is reported). The MASA should verify the 'prior- | information is reported). The MASA should verify the 'prior- | |||
| signed-voucher' information for Pledge's that support that | signed-voucher' information for Pledge's that support that | |||
| functionality. This provides a proof-of-proximity check that | functionality. This provides a proof-of-proximity check that | |||
| reduces the need for ownership verification. | reduces the need for ownership verification. | |||
| 5. IANA Considerations | 7. IANA Considerations | |||
| 5.1. PKIX Registry | This document requests the following Parameter Values for the "smime- | |||
| type" Parameters: | ||||
| o voucher-request | ||||
| o voucher | ||||
| 7.1. PKIX Registry | ||||
| IANA is requested to register the following: | ||||
| This document requests a number for id-mod-MASAURLExtn2016(TBD) from | This document requests a number for id-mod-MASAURLExtn2016(TBD) from | |||
| the pkix(7) id-mod(0) Registry. [[EDNOTE: fix names]] | the pkix(7) id-mod(0) Registry. [[EDNOTE: fix names]] | |||
| This document requests a number from the id-pe registry for id-pe- | This document requests a number from the id-pe registry for id-pe- | |||
| masa-url. XXX | masa-url. XXX | |||
| 6. Security Considerations | 7.2. MIME | |||
| Type name: | ||||
| Subtype name: | ||||
| Required parameters: | ||||
| Optional parameters: | ||||
| Encoding considerations: | ||||
| Security considerations: | ||||
| Interoperability considerations: | ||||
| Published specification: | ||||
| Applications that use this media type: | ||||
| Fragment identifier considerations: | ||||
| Additional information: | ||||
| Deprecated alias names for this type: | ||||
| Magic number(s): | ||||
| File extension(s): | ||||
| Macintosh file type code(s): | ||||
| Person and email address to contact for further information: | ||||
| Intended usage: LIMITED USED | ||||
| Restrictions on usage: | ||||
| Author: | ||||
| Change controller: | ||||
| Provisional registration? (standards tree only): | ||||
| 7.3. Voucher Status Telemetry | ||||
| IANA is requested to create a registry entitled: _Voucher Status | ||||
| Telemetry Attributes_. New items can be added using the | ||||
| Specification Required. The following items are to be in the initial | ||||
| registration, with this document as the reference: | ||||
| o version | ||||
| o Status | ||||
| o Reason | ||||
| o reason-context | ||||
| 8. Security Considerations | ||||
| There are uses cases where the MASA could be unavailable or | There are uses cases where the MASA could be unavailable or | |||
| uncooperative to the Registrar. They include planned and unplanned | uncooperative to the Registrar. They include planned and unplanned | |||
| network partitions, changes to MASA policy, or other instances where | network partitions, changes to MASA policy, or other instances where | |||
| MASA policy rejects a claim. These introduce an operational risk to | MASA policy rejects a claim. These introduce an operational risk to | |||
| the Registrar owner that MASA/vendor behavior might limit the ability | the Registrar owner that MASA/vendor behavior might limit the ability | |||
| to re-boostrap a Pledge device. For example this might be an issue | to re-boostrap a Pledge device. For example this might be an issue | |||
| during disaster recovery. This risk can be mitigated by Registrars | during disaster recovery. This risk can be mitigated by Registrars | |||
| that request and maintain long term copies of "nonceless" Vouchers. | that request and maintain long term copies of "nonceless" Vouchers. | |||
| In that way they are guaranteed to be able to repeat bootstrapping | In that way they are guaranteed to be able to repeat bootstrapping | |||
| skipping to change at page 35, line 24 ¶ | skipping to change at page 48, line 29 ¶ | |||
| To facilitate logging and administrative oversight the Pledge reports | To facilitate logging and administrative oversight the Pledge reports | |||
| on Voucher parsing status to the Registrar. In the case of a failure | on Voucher parsing status to the Registrar. In the case of a failure | |||
| this information is informative to a potentially malicious Registar | this information is informative to a potentially malicious Registar | |||
| but this is RECOMMENDED anyway because of the operational benefits of | but this is RECOMMENDED anyway because of the operational benefits of | |||
| an informed administrator in cases where the failure is indicative of | an informed administrator in cases where the failure is indicative of | |||
| a problem. | a problem. | |||
| To facilitate truely limited clients EST RFC7030 section 3.3.2 | To facilitate truely limited clients EST RFC7030 section 3.3.2 | |||
| requirements that the client MUST support a client authentication | requirements that the client MUST support a client authentication | |||
| model have been reduced in Section 4 to a statement that the | model have been reduced in Section 6 to a statement that the | |||
| Registrar "MAY" choose to accept devices that fail cryptographic | 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 all HTTP header and | During the provisional period of the connection all HTTP header and | |||
| content data MUST treated as untrusted data. HTTP libraries are | content data MUST treated as untrusted data. HTTP libraries are | |||
| regularly exposed to non-secured HTTP traffic: mature libraries | regularly exposed to non-secured HTTP traffic: mature libraries | |||
| should not have any problems. | should not have any problems. | |||
| Pledge's might chose to engage in protocol operations with multiple | Pledge's 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 multple | so with distinct nonce values, but the end result could be multple | |||
| voucher's issued from the MASA if all registrars attempt to claim the | voucher's 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 choses whichever | |||
| voucher to accept based on internal logic. The Registrar's verifying | voucher to accept based on internal logic. The Registrar's 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 analytics purposes. | |||
| 7. Acknowledgements | 8.1. Freshness in Voucher Requests | |||
| A concern has been raised that the voucher request produced by the | ||||
| Pledge should contain some content (a nonce) from the Registrar and/ | ||||
| or MASA in order for those actors to verify that the voucher request | ||||
| is fresh. | ||||
| There are a number of operational problems with getting a nonce from | ||||
| the MASA to the pledge. It is somewhat easier to collect a random | ||||
| value from the Registrar, but as the Registrar is not yet vouched | ||||
| for, such a Registrar nonce has little value. There are privacy and | ||||
| logistical challenges to addressing these operational issues, so if | ||||
| such a thing were to be considered, it would have to provide some | ||||
| clear value. This section examines the impacts of not having a fresh | ||||
| voucher request from the pledge. | ||||
| Because the Registrar authenticates the Pledge a full Man-in-the- | ||||
| Middle attack is not possible, despite the provisional TLS | ||||
| authentication by the Pledge (see Section 5). Instead we examine the | ||||
| case of a fake Registrar (Rm) that communicates with the Pledge in | ||||
| parallel or in close time proximity with the intended Registrar. | ||||
| (This scenario is intentionally supported as described in | ||||
| Section 4.1). | ||||
| The fake Registrar (Rm) can obtain a voucher signed by the MASA | ||||
| either directly or through arbitrary intermediaries. Assuming that | ||||
| the MASA accepts the voucher request (either because Rm is | ||||
| collaborating with a legitimate Registrar according to supply chain | ||||
| information, or because the MASA is in audit-log only mode), then a | ||||
| voucher linking the pledge to the Registrar Rm is issued. | ||||
| Such a voucher, when passed back to the Pledge, would link the pledge | ||||
| to Registrar Rm, and would permit the Pledge to end the provisional | ||||
| state. It now trusts Rm and, if it has any security vulnerabilities | ||||
| leveragable by an Rm with full administrative control, can be assumed | ||||
| to be a threat against the intended Registrar. | ||||
| This flow is mitigated by the intended Registar verifying the audit | ||||
| logs available from the MASA as described in Section 5.7. Rm might | ||||
| chose to wait until after the intended Registrar completes the | ||||
| authorization process before submitting the now-stale voucher | ||||
| request. The Rm would need to remove the Pledge's nonce. | ||||
| In order to successfully use the resulting "stale voucher" Rm would | ||||
| have to attack the Pledge and return it to a bootstrapping enabled | ||||
| state. This would require wiping the Pledge of current configuration | ||||
| and triggering a re-bootstrapping of the Pledge. This is no more | ||||
| likely than simply taking control of the Pledge directly but if this | ||||
| is a consideration the target network is RECOMMENDED to take the | ||||
| following steps: | ||||
| o Ongoing network monitoring for unexpected bootstrapping attempts | ||||
| by Pledges. | ||||
| o Retreival and examination of MASA log information upon the | ||||
| occurance of any such unexpected events. Rm will be listed in the | ||||
| logs. | ||||
| 9. Acknowledgements | ||||
| We would like to thank the various reviewers for their input, in | We would like to thank the various reviewers for their input, in | |||
| particular Brian Carpenter, Toerless Eckert, Fuyu Eleven, Eliot Lear, | particular Brian Carpenter, Toerless Eckert, Fuyu Eleven, Eliot Lear, | |||
| Sergey Kasatkin, Markus Stenberg, and Peter van der Stok | Sergey Kasatkin, Markus Stenberg, and Peter van der Stok | |||
| 8. References | 10. References | |||
| 8.1. Normative References | 10.1. Normative References | |||
| [I-D.ietf-anima-autonomic-control-plane] | [I-D.ietf-anima-autonomic-control-plane] | |||
| Behringer, M., Eckert, T., and S. Bjarnason, "An Autonomic | Behringer, M., Eckert, T., and S. Bjarnason, "An Autonomic | |||
| Control Plane", draft-ietf-anima-autonomic-control- | Control Plane (ACP)", draft-ietf-anima-autonomic-control- | |||
| plane-06 (work in progress), March 2017. | plane-10 (work in progress), September 2017. | |||
| [I-D.ietf-anima-voucher] | [I-D.ietf-anima-voucher] | |||
| Watsen, K., Richardson, M., Pritikin, M., and T. Eckert, | Watsen, K., Richardson, M., Pritikin, M., and T. Eckert, | |||
| "Voucher Profile for Bootstrapping Protocols", draft-ietf- | "Voucher Profile for Bootstrapping Protocols", draft-ietf- | |||
| anima-voucher-04 (work in progress), July 2017. | anima-voucher-05 (work in progress), August 2017. | |||
| [I-D.vanderstok-ace-coap-est] | [I-D.vanderstok-ace-coap-est] | |||
| Kumar, S., Stok, P., Kampanakis, P., Furuhed, M., and S. | Kumar, S., Stok, P., Kampanakis, P., Furuhed, M., and S. | |||
| Raza, "EST over secure CoAP (EST-coaps)", draft- | Raza, "EST over secure CoAP (EST-coaps)", draft- | |||
| vanderstok-ace-coap-est-02 (work in progress), June 2017. | vanderstok-ace-coap-est-02 (work in progress), June 2017. | |||
| [IDevID] IEEE Standard, "IEEE 802.1AR Secure Device Identifier", | [IDevID] IEEE Standard, "IEEE 802.1AR Secure Device Identifier", | |||
| December 2009, <http://standards.ieee.org/findstds/ | December 2009, <http://standards.ieee.org/findstds/ | |||
| standard/802.1AR-2009.html>. | standard/802.1AR-2009.html>. | |||
| [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, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, | [RFC3542] Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei, | |||
| "Advanced Sockets Application Program Interface (API) for | "Advanced Sockets Application Program Interface (API) for | |||
| IPv6", RFC 3542, DOI 10.17487/RFC3542, May 2003, | IPv6", RFC 3542, DOI 10.17487/RFC3542, May 2003, | |||
| <http://www.rfc-editor.org/info/rfc3542>. | <https://www.rfc-editor.org/info/rfc3542>. | |||
| [RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H. | [RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H. | |||
| Levkowetz, Ed., "Extensible Authentication Protocol | Levkowetz, Ed., "Extensible Authentication Protocol | |||
| (EAP)", RFC 3748, DOI 10.17487/RFC3748, June 2004, | (EAP)", RFC 3748, DOI 10.17487/RFC3748, June 2004, | |||
| <http://www.rfc-editor.org/info/rfc3748>. | <https://www.rfc-editor.org/info/rfc3748>. | |||
| [RFC3927] Cheshire, S., Aboba, B., and E. Guttman, "Dynamic | [RFC3927] Cheshire, S., Aboba, B., and E. Guttman, "Dynamic | |||
| Configuration of IPv4 Link-Local Addresses", RFC 3927, | Configuration of IPv4 Link-Local Addresses", RFC 3927, | |||
| DOI 10.17487/RFC3927, May 2005, | DOI 10.17487/RFC3927, May 2005, | |||
| <http://www.rfc-editor.org/info/rfc3927>. | <https://www.rfc-editor.org/info/rfc3927>. | |||
| [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, | |||
| <http://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>. | ||||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
| <http://www.rfc-editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
| [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, | |||
| <http://www.rfc-editor.org/info/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
| [RFC5386] Williams, N. and M. Richardson, "Better-Than-Nothing | [RFC5386] Williams, N. and M. Richardson, "Better-Than-Nothing | |||
| Security: An Unauthenticated Mode of IPsec", RFC 5386, | Security: An Unauthenticated Mode of IPsec", RFC 5386, | |||
| DOI 10.17487/RFC5386, November 2008, | DOI 10.17487/RFC5386, November 2008, | |||
| <http://www.rfc-editor.org/info/rfc5386>. | <https://www.rfc-editor.org/info/rfc5386>. | |||
| [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | |||
| RFC 5652, DOI 10.17487/RFC5652, September 2009, | RFC 5652, DOI 10.17487/RFC5652, September 2009, | |||
| <http://www.rfc-editor.org/info/rfc5652>. | <https://www.rfc-editor.org/info/rfc5652>. | |||
| [RFC5660] Williams, N., "IPsec Channels: Connection Latching", | [RFC5660] Williams, N., "IPsec Channels: Connection Latching", | |||
| RFC 5660, DOI 10.17487/RFC5660, October 2009, | RFC 5660, DOI 10.17487/RFC5660, October 2009, | |||
| <http://www.rfc-editor.org/info/rfc5660>. | <https://www.rfc-editor.org/info/rfc5660>. | |||
| [RFC6762] Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762, | [RFC6762] Cheshire, S. and M. Krochmal, "Multicast DNS", RFC 6762, | |||
| DOI 10.17487/RFC6762, February 2013, | DOI 10.17487/RFC6762, February 2013, | |||
| <http://www.rfc-editor.org/info/rfc6762>. | <https://www.rfc-editor.org/info/rfc6762>. | |||
| [RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service | [RFC6763] Cheshire, S. and M. Krochmal, "DNS-Based Service | |||
| Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013, | Discovery", RFC 6763, DOI 10.17487/RFC6763, February 2013, | |||
| <http://www.rfc-editor.org/info/rfc6763>. | <https://www.rfc-editor.org/info/rfc6763>. | |||
| [RFC7030] Pritikin, M., Ed., Yee, P., Ed., and D. Harkins, Ed., | [RFC7030] Pritikin, M., Ed., Yee, P., Ed., and D. Harkins, Ed., | |||
| "Enrollment over Secure Transport", RFC 7030, | "Enrollment over Secure Transport", RFC 7030, | |||
| DOI 10.17487/RFC7030, October 2013, | DOI 10.17487/RFC7030, October 2013, | |||
| <http://www.rfc-editor.org/info/rfc7030>. | <https://www.rfc-editor.org/info/rfc7030>. | |||
| [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | ||||
| Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March | ||||
| 2014, <https://www.rfc-editor.org/info/rfc7159>. | ||||
| [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for | [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for | |||
| Constrained-Node Networks", RFC 7228, | Constrained-Node Networks", RFC 7228, | |||
| DOI 10.17487/RFC7228, May 2014, | DOI 10.17487/RFC7228, May 2014, | |||
| <http://www.rfc-editor.org/info/rfc7228>. | <https://www.rfc-editor.org/info/rfc7228>. | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | ||||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7950>. | ||||
| [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | |||
| RFC 7951, DOI 10.17487/RFC7951, August 2016, | RFC 7951, DOI 10.17487/RFC7951, August 2016, | |||
| <http://www.rfc-editor.org/info/rfc7951>. | <https://www.rfc-editor.org/info/rfc7951>. | |||
| 8.2. Informative References | 10.2. Informative References | |||
| [I-D.behringer-homenet-trust-bootstrap] | [I-D.behringer-homenet-trust-bootstrap] | |||
| Behringer, M., Pritikin, M., and S. Bjarnason, | Behringer, M., Pritikin, M., and S. Bjarnason, | |||
| "Bootstrapping Trust on a Homenet", draft-behringer- | "Bootstrapping Trust on a Homenet", draft-behringer- | |||
| homenet-trust-bootstrap-02 (work in progress), February | homenet-trust-bootstrap-02 (work in progress), February | |||
| 2014. | 2014. | |||
| [I-D.ietf-anima-grasp] | [I-D.ietf-anima-grasp] | |||
| Bormann, C., Carpenter, B., and B. Liu, "A Generic | Bormann, C., Carpenter, B., and B. Liu, "A Generic | |||
| Autonomic Signaling Protocol (GRASP)", draft-ietf-anima- | Autonomic Signaling Protocol (GRASP)", draft-ietf-anima- | |||
| grasp-13 (work in progress), June 2017. | grasp-15 (work in progress), July 2017. | |||
| [I-D.ietf-netconf-zerotouch] | [I-D.ietf-netconf-zerotouch] | |||
| Watsen, K., Abrahamsson, M., and I. Farrer, "Zero Touch | Watsen, K., Abrahamsson, M., and I. Farrer, "Zero Touch | |||
| Provisioning for NETCONF or RESTCONF based Management", | Provisioning for NETCONF or RESTCONF based Management", | |||
| draft-ietf-netconf-zerotouch-14 (work in progress), June | draft-ietf-netconf-zerotouch-17 (work in progress), | |||
| 2017. | September 2017. | |||
| [I-D.lear-mud-framework] | [I-D.ietf-opsawg-mud] | |||
| Lear, E., "Manufacturer Usage Description Framework", | Lear, E., Droms, R., and D. Romascanu, "Manufacturer Usage | |||
| draft-lear-mud-framework-00 (work in progress), January | Description Specification", draft-ietf-opsawg-mud-12 (work | |||
| 2016. | in progress), October 2017. | |||
| [I-D.richardson-anima-state-for-joinrouter] | [I-D.richardson-anima-state-for-joinrouter] | |||
| Richardson, M., "Considerations for stateful vs stateless | Richardson, M., "Considerations for stateful vs stateless | |||
| join router in ANIMA bootstrap", draft-richardson-anima- | join router in ANIMA bootstrap", draft-richardson-anima- | |||
| state-for-joinrouter-01 (work in progress), July 2016. | state-for-joinrouter-01 (work in progress), July 2016. | |||
| [imprinting] | [imprinting] | |||
| Wikipedia, "Wikipedia article: Imprinting", July 2015, | Wikipedia, "Wikipedia article: Imprinting", July 2015, | |||
| <https://en.wikipedia.org/wiki/Imprinting_(psychology)>. | <https://en.wikipedia.org/wiki/Imprinting_(psychology)>. | |||
| [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in | [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in | |||
| IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473, | IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473, | |||
| December 1998, <http://www.rfc-editor.org/info/rfc2473>. | December 1998, <https://www.rfc-editor.org/info/rfc2473>. | |||
| [RFC7217] Gont, F., "A Method for Generating Semantically Opaque | [RFC7217] Gont, F., "A Method for Generating Semantically Opaque | |||
| Interface Identifiers with IPv6 Stateless Address | Interface Identifiers with IPv6 Stateless Address | |||
| Autoconfiguration (SLAAC)", RFC 7217, | Autoconfiguration (SLAAC)", RFC 7217, | |||
| DOI 10.17487/RFC7217, April 2014, | DOI 10.17487/RFC7217, April 2014, | |||
| <http://www.rfc-editor.org/info/rfc7217>. | <https://www.rfc-editor.org/info/rfc7217>. | |||
| [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, <http://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, | |||
| <http://www.rfc-editor.org/info/rfc7575>. | <https://www.rfc-editor.org/info/rfc7575>. | |||
| [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/ | |||
| duckling.pdf>. | papers/1999-StajanoAnd-duckling.pdf>. | |||
| Appendix A. IPv4 operations | Appendix A. IPv4 operations | |||
| 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 [RFC3927] Dynamic Configuration of IPv4 Link-Local | |||
| Addresses. | Addresses. | |||
| In the case that an IPv4 Local-Local address is formed, then the | In the case that an IPv4 Local-Local address is formed, then the | |||
| skipping to change at page 41, line 48 ¶ | skipping to change at page 56, line 28 ¶ | |||
| A Registrar serving a large number of interfaces may not wish to | A Registrar serving a large number of interfaces may not wish to | |||
| allocate resources to every interface at all times, but can instead | allocate resources to every interface at all times, but can instead | |||
| dynamically allocate interfaces. It can do this by monitoring IPIP | dynamically allocate interfaces. It can do this by monitoring IPIP | |||
| traffic that arrives on it's ACP interface, and when packets arrive | traffic that arrives on it's ACP interface, and when packets arrive | |||
| from new Join Proxys, it can dynamically configure virtual | from new Join Proxys, it can dynamically configure virtual | |||
| interfaces. | interfaces. | |||
| A more sophisticated Registrar willing to modify the behaviour of | A more sophisticated Registrar willing to modify the behaviour of | |||
| it's TCP and UDP stack could note the IPIP traffic origination in the | it's TCP and UDP stack could note the IPIP traffic origination in the | |||
| socket control block and make information available to the TCP layer | socket control block and make information available to the TCP layer | |||
| (for HTTPS connections), or to the the application (for CoAP | (for HTTPS connections), or to the application (for CoAP connections) | |||
| connections) via a proprietary extension to the socket API. | via a proprietary extension to the socket API. | |||
| C.3. Proxy Neighbor Discovery by Join Proxy | C.3. Proxy Neighbor Discovery by Join Proxy | |||
| The Join Proxy MUST answer neighbor discovery messages for the | The Join Proxy MUST answer neighbor discovery messages for the | |||
| address given by the Registrar as being it's link-local address. The | address given by the Registrar as being it's link-local address. The | |||
| Join Proxy must also advertise this address as the address to which | Join Proxy must also advertise this address as the address to which | |||
| to connect to when advertising it's existence. | to connect to when advertising it's existence. | |||
| This proxy neighbor discovery means that the pledge will create TCP | This proxy neighbor discovery means that the pledge will create TCP | |||
| and UDP connections to the correct Registrar address. This matters | and UDP connections to the correct Registrar address. This matters | |||
| skipping to change at page 43, line 9 ¶ | skipping to change at page 57, line 32 ¶ | |||
| just pay attention to this extra information and add an appropriate | just pay attention to this extra information and add an appropriate | |||
| IPIP header on outgoing. A CoAP over UDP mechanism may need to | IPIP header on outgoing. A CoAP over UDP mechanism may need to | |||
| expose this extra information to the application as the UDP sockets | expose this extra information to the application as the UDP sockets | |||
| are often not connected, and the application will need to specify the | are often not connected, and the application will need to specify the | |||
| outgoing path on each packet send. | outgoing path on each packet send. | |||
| Such an additional socket mechanism has not been standardized. | Such an additional socket mechanism has not been standardized. | |||
| Terminating L2TP connections over IPsec transport mode suffers from | Terminating L2TP connections over IPsec transport mode suffers from | |||
| the same challenges. | the same challenges. | |||
| Appendix D. To be deprecated: Consolidation remnants | Appendix D. MUD Extension | |||
| [[EDNOTE: As per working group feedback there were multiple instances | ||||
| where this document repeated itself. To address this we have moved | ||||
| all text to this appendix and restored only one copy of each | ||||
| normative discussion. The next pass will reduce and delete this | ||||
| appendix to '0'; although some may be maintained in a design | ||||
| considerations appendix.]] | ||||
| D.1. Functional Overview | ||||
| Entities behave in an autonomic fashion. They discover each other | ||||
| and autonomically bootstrap into a key infrastructure delineating the | ||||
| autonomic domain. See [RFC7575] for more information. | ||||
| This section details the state machine and operational flow for each | ||||
| of the main three entities. The pledge, the domain (primarily a | ||||
| Registrar) and the MASA service. | ||||
| A representative flow is shown in Figure 2: | ||||
| +--------+ +---------+ +------------+ +------------+ | ||||
| | Pledge | | Circuit | | Domain | | Vendor | | ||||
| | | | Proxy | | Registrar | | Service | | ||||
| | | | | | | | (Internet | | ||||
| +--------+ +---------+ +------------+ +------------+ | ||||
| | | | | | ||||
| |<-RFC3927 IPv4 adr | Appendix A | | | ||||
| or|<-RFC4862 IPv6 adr | | | | ||||
| | | | | | ||||
| |-------------------->| | | | ||||
| | optional: mDNS query| Appendix B | | | ||||
| | RFC6763/RFC6762 | | | | ||||
| | | | | | ||||
| |<--------------------| | | | ||||
| | GRASP M_FLOOD | | | | ||||
| | periodic broadcast| | | | ||||
| | | | | | ||||
| |<------------------->C<----------------->| | | ||||
| | TLS via the Circuit Proxy | | | ||||
| |<--Registrar TLS server authentication---| | | ||||
| [PROVISIONAL accept of server cert] | | | ||||
| P---X.509 client authentication---------->| | | ||||
| P | | | | ||||
| P---Request Voucher (include nonce)------>| | | ||||
| P | | | | ||||
| P | /---> | | | ||||
| P | | [accept device?] | | ||||
| P | | [contact Vendor] | | ||||
| P | | |--Pledge ID-------->| | ||||
| P | | |--Domain ID-------->| | ||||
| P | | |--optional:nonce--->| | ||||
| P | | | [extract DomainID] | ||||
| P | | | | | ||||
| P | optional: | [update audit log] | ||||
| P | |can | | | ||||
| P | |occur | | | ||||
| P | |in | | | ||||
| P | |advance | | | ||||
| P | | | | | ||||
| P | | |<-device audit log--| | ||||
| P | | |<- voucher ---------| | ||||
| P | \----> | | | ||||
| P | | | | ||||
| P | [verify audit log and voucher] | | ||||
| P | | | | ||||
| P<------voucher---------------------------| | | ||||
| [verify voucher ] | | | | ||||
| [verify provisional cert| | | | ||||
| | | | | | ||||
| |<--------------------------------------->| | | ||||
| | Continue with RFC7030 enrollment | | | ||||
| | using now bidirectionally authenticated | | | ||||
| | TLS session. | | | | ||||
| | | | | | ||||
| | | | | | ||||
| | | | | | ||||
| Figure 2 | ||||
| [[UNRESOLVED:need to restore some functional overview section for all | ||||
| these diagrams]]In order to obtain a Voucher and associated logs a | ||||
| Registrar contacts the MASA service Service using REST calls: | ||||
| +-----------+ +----------+ +-----------+ +----------+ | ||||
| | New | | Circuit | | | | | | ||||
| | Entity | | Proxy | | Registrar | | Vendor | | ||||
| | | | | | | | | | ||||
| ++----------+ +--+-------+ +-----+-----+ +--------+-+ | ||||
| | | | | | ||||
| | | | | | ||||
| | TLS hello | TLS hello | | | ||||
| Establish +---------------C---------------> | | ||||
| TLS | | | | | ||||
| connection | | Server Cert | | | ||||
| <---------------C---------------+ | | ||||
| | Client Cert | | | | ||||
| +---------------C---------------> | | ||||
| | | | | | ||||
| HTTP REST | POST /requestvoucher | | | ||||
| Data +--------------------nonce------> | | ||||
| | . | /requestvoucher| | ||||
| | . +----------------> | ||||
| | <----------------+ | ||||
| | | /requestlog | | ||||
| | +----------------> | ||||
| | voucher <----------------+ | ||||
| <-------------------------------+ | | ||||
| | (optional config information) | | | ||||
| | . | | | ||||
| | . | | | ||||
| Figure 8 | ||||
| In some use cases the Registrar may need to contact the Vendor in | ||||
| advanced, for example when the target network is air-gapped. The | ||||
| nonceless request format is provided for this and the resulting flow | ||||
| is slightly different. The security differences associated with not | ||||
| knowing the nonce are discussed below: | ||||
| +-----------+ +----------+ +-----------+ +----------+ | ||||
| | New | | Circuit | | | | | | ||||
| | Entity | | Proxy | | Registrar | | Vendor | | ||||
| | | | | | | | | | ||||
| ++----------+ +--+-------+ +-----+-----+ +--------+-+ | ||||
| | | | | | ||||
| | | | | | ||||
| | | | /requestvoucher| | ||||
| | | (nonce +----------------> | ||||
| | | unknown) <----------------+ | ||||
| | | | /requestlog | | ||||
| | | +----------------> | ||||
| | | <----------------+ | ||||
| | TLS hello | TLS hello | | | ||||
| Establish +---------------C---------------> | | ||||
| TLS | | | | | ||||
| connection | | Server Cert | | | ||||
| <---------------C---------------+ | | ||||
| | Client Cert | | | | ||||
| | | | | | ||||
| HTTP REST | POST /requestvoucher | | | ||||
| Data +----------------------nonce----> (discard | | ||||
| | voucher | nonce) | | ||||
| <-------------------------------+ | | ||||
| | (optional config information) | | | ||||
| | . | | | ||||
| | . | | | ||||
| Figure 9 | ||||
| D.1.1. Behavior of a Pledge | ||||
| A pledge that has not yet been bootstrapped attempts to find a local | ||||
| domain and join it. A pledge [[RESOLVED:MUST NOT]] automatically | ||||
| initiate bootstrapping if it has already been configured or is in the | ||||
| process of being configured. | ||||
| States of a pledge are as follows: | ||||
| +--------------+ | ||||
| | Factory | | ||||
| | default | | ||||
| +------+-------+ | ||||
| | | ||||
| +------v-------+ | ||||
| | Discover | | ||||
| +------------> | | ||||
| | +------+-------+ | ||||
| | | | ||||
| | +------v-------+ | ||||
| | | Identity | | ||||
| ^------------+ | | ||||
| | rejected +------+-------+ | ||||
| | | | ||||
| | +------v-------+ | ||||
| | | Request | | ||||
| | | Join | | ||||
| | +------+-------+ | ||||
| | | | ||||
| | +------v-------+ | ||||
| | | Imprint | Optional | ||||
| ^------------+ <--+Manual input (Appendix C) | ||||
| | Bad Vendor +------+-------+ | ||||
| | response | | ||||
| | +------v-------+ | ||||
| | | Enroll | | ||||
| ^------------+ | | ||||
| | Enroll +------+-------+ | ||||
| | Failure | | ||||
| | +------v-------+ | ||||
| | | Enrolled | | ||||
| ^------------+ | | ||||
| Factory +--------------+ | ||||
| reset | ||||
| Figure 3 | ||||
| State descriptions for the pledge are as follows: | ||||
| 1. Discover a communication channel to a Registrar. | ||||
| 2. Identify itself. This is done by presenting an X.509 IDevID | ||||
| credential to the discovered Registrar (via the Proxy) in a TLS | ||||
| handshake. (The Registrar credentials are only provisionally | ||||
| accepted at this time). | ||||
| 3. Requests to Join the discovered Registrar. A unique nonce | ||||
| [[RESOLVED:can be]] included ensuring that any responses can be | ||||
| associated with this particular bootstrapping attempt. | ||||
| 4. Imprint on the Registrar. This requires verification of the | ||||
| vendor service provided voucher. A voucher contains sufficient | ||||
| information for the Pledge to complete authentication of a | ||||
| Registrar. (It enables the Pledge to finish authentication of | ||||
| the Registrar TLS server certificate). | ||||
| 5. Enroll. By accepting the domain specific information from a | ||||
| Registrar, and by obtaining a domain certificate from a Registrar | ||||
| using a standard enrollment protocol, e.g. Enrollment over | ||||
| Secure Transport (EST) [RFC7030]. | ||||
| 6. The Pledge is now a member of, and can be managed by, the domain | ||||
| and will only repeat the discovery aspects of bootstrapping if it | ||||
| is returned to factory default settings. | ||||
| The following sections describe each of these steps in more detail. | ||||
| D.1.1.1. Discovery | ||||
| [[RESOLVED:TEXT moved up into above]] | ||||
| D.1.1.2. Identity | ||||
| The Pledge identifies itself during the communication protocol | ||||
| handshake. If the client identity is rejected (that is, the TLS | ||||
| handshake does not complete) the Pledge repeats the Identity process | ||||
| using the next proxy or discovery method available. | ||||
| [[RESOLVED: need normative statement in protocol section]] The | ||||
| bootstrapping protocol server is not initially authenticated. Thus | ||||
| the connection is provisional and all data received is untrusted | ||||
| until sufficiently validated even though it is over a TLS connection. | ||||
| This is aligned with the existing provisional mode of EST [RFC7030] | ||||
| during s4.1.1 "Bootstrap Distribution of CA Certificates". See | ||||
| Section 3.4 for more information about when the TLS connection | ||||
| authentication is completed. | ||||
| [[RESOLVED:]]All security associations established are between the | ||||
| new device and the Bootstrapping server regardless of proxy | ||||
| operations. | ||||
| D.1.1.2.1. Concurrent attempts to join | ||||
| [[RESOLVED: by dropping this text. the "priority mechanism" is | ||||
| unspecified thus any discussion is unclear. Not only that once an | ||||
| initial request is sent to the registrar the question of multiple | ||||
| MASA interactions has already occurred. Nothing breaks if | ||||
| implementations do this. I've added text to the security | ||||
| considerations indicating the end result (MASA entries that might be | ||||
| ignored by the device but which confuse the end administrator)]] The | ||||
| Pledge MAY attempt multiple mechanisms concurrently, but if it does | ||||
| so, it MUST wait in the provisional state until all mechanisms have | ||||
| either succeeded or failed, and then MUST proceed with the highest | ||||
| priority mechanism which has succeed. To proceed beyond this point, | ||||
| specifically, to provide a nonce, could result in the MASA | ||||
| gratuitously auditing a connection. | ||||
| D.1.1.3. Request Join | ||||
| The Pledge POSTs a request to join the domain to the Bootstrapping | ||||
| server. This request contains a Pledge generated nonce and informs | ||||
| the Bootstrapping server which imprint methods the Pledge will | ||||
| accept. | ||||
| The nonce ensures the Pledge can verify that responses are specific | ||||
| to this bootstrapping attempt. This minimizes the use of global time | ||||
| and provides a substantial benefit for devices without a valid clock. | ||||
| D.1.1.3.1. Redirects during the Join Process | ||||
| [[RESOVED via current root protocol discussion. reference to | ||||
| mdnsmethods is dropped]] EST [RFC7030] describes situations where the | ||||
| bootstrapping server MAY redirect the client to an alternate server | ||||
| via a 3xx status code. Such redirects MAY be accepted if the pledge | ||||
| has used the methods described in Appendix B, in combination with an | ||||
| implicit trust anchor. Redirects during the provisional period are | ||||
| otherwise unstrusted, and MUST cause a failure. | ||||
| D.1.1.4. Imprint | ||||
| The Pledge validates the voucher and accepts the Registrar ID. The | ||||
| provisional TLS connection is validated using the Registrar ID from | ||||
| the voucher. | ||||
| D.1.1.5. Lack of realtime clock APPENDIX | ||||
| [[RESOVED: entire section promoted back into the main text]] | ||||
| Many devices when bootstrapping do not have knowledge of the current | ||||
| time. Mechanisms like Network Time Protocols can not be secured | ||||
| until bootstrapping is complete. Therefore bootstrapping is defined | ||||
| in a method that does not require knowledge of the current time. | ||||
| Unfortunately there are moments during bootstrapping when | ||||
| certificates are verified, such as during the TLS handshake, where | ||||
| validity periods are confirmed. This paradoxical "catch-22" is | ||||
| resolved by the Pledge maintaining a concept of the current "window" | ||||
| of presumed time validity that is continually refined throughout the | ||||
| bootstrapping process as follows: | ||||
| o Initially the Pledge does not know the current time. | ||||
| o During Pledge authentiation by the Registrar a realtime clock can | ||||
| be used by the Registrar. This bullet expands on a closely | ||||
| related issue regarding Pledge lifetimes. RFC5280 indicates that | ||||
| long lived Pledge certifiates "SHOULD be assigned the | ||||
| GeneralizedTime value of 99991231235959Z" [RFC7030] so the | ||||
| Registrar MUST support such lifetimes and SHOULD support ignoring | ||||
| Pledge lifetimes if they did not follow the RFC5280 | ||||
| recommendations. | ||||
| o The Pledge authenticates the voucher presented to it. During this | ||||
| authentication the Pledge ignores certificate lifetimes (by | ||||
| necessity because it does not have a clock). The voucher itself | ||||
| SHOULD contain the nonce included in the original request which | ||||
| proves the voucher is fresh. | ||||
| o Once the voucher is accepted the validity period of the | ||||
| domainCAcert in the voucher (see Section 3.4) now serves as a | ||||
| valid time window. Any subsequent certificate validity periods | ||||
| checked during RFC5280 path validation MUST occur within this | ||||
| window. | ||||
| o When accepting an enrollment certificate the validity period | ||||
| within the new certificate is assumed to be valid by the Pledge. | ||||
| The Pledge is now willing to use this credential for client | ||||
| authentication. | ||||
| D.1.1.6. Enrollment | ||||
| As the final step of bootstrapping a Registrar helps to issue a | ||||
| domain specific credential to the Pledge. For simplicity in this | ||||
| document, a Registrar primarily facilitates issuing a credential by | ||||
| acting as an RFC5280 Registration Authority for the Domain | ||||
| Certification Authority. | ||||
| Enrollment proceeds as described in [RFC7030]. Authentication of the | ||||
| EST server is done using the Voucher rather than the methods defined | ||||
| in EST. | ||||
| [[RESOLVED: moved to protocol discussion]]Once the Voucher is | ||||
| received, as specified in this document, the client has sufficient | ||||
| information to leverage the existing communication channel with a | ||||
| Registrar to continue an EST RFC7030 enrollment. Enrollment picks up | ||||
| at RFC7030 section 4.1.1. bootstrapping where the Voucher provides | ||||
| the "out-of-band" CA certificate fingerprint (in this case the full | ||||
| CA certificate) such that the client can now complete the TLS server | ||||
| authentication. At this point the client continues with EST | ||||
| enrollment operations including "CA Certificates Request", "CSR | ||||
| Attributes" and "Client Certificate Request" or "Server-Side Key | ||||
| Generation". | ||||
| [[RESOLVED: included into EST discussion]]For the purposes of | ||||
| creating the ANIMA Autonomic Control Plane, the contents of the new | ||||
| certificate MUST be carefully specified. | ||||
| [I-D.ietf-anima-autonomic-control-plane] section 5.1.1 contains | ||||
| details. The Registrar MUST provide the the correct ACP information | ||||
| to populate the subjectAltName / rfc822Name field in the "CSR | ||||
| Attributes" step. | ||||
| D.1.1.7. Being Managed | ||||
| [[RESOLVED: by slight change to introduction text.]] Functionality to | ||||
| provide generic "configuration" information is supported. The | ||||
| parsing of this data and any subsequent use of the data, for example | ||||
| communications with a Network Management System is out of scope but | ||||
| is expected to occur after bootstrapping enrollment is complete. | ||||
| This ensures that all communications with management systems which | ||||
| can divulge local security information (e.g. network topology or raw | ||||
| key material) is secured using the local credentials issued during | ||||
| enrollment. | ||||
| The Pledge uses bootstrapping to join only one domain. Management by | ||||
| multiple domains is out-of-scope of bootstrapping. After the device | ||||
| has successfully joined a domain and is being managed it is plausible | ||||
| that the domain can insert credentials for other domains depending on | ||||
| the device capabilities. | ||||
| See Appendix D.1.5. | ||||
| D.1.2. Behavior of a Join Proxy | ||||
| The role of the Proxy is to facilitate communications. The Proxy | ||||
| forwards packets between the Pledge and a Registrar that has been | ||||
| configured on the Proxy. | ||||
| [[UNRESOLVED: since proxy behavior is not visible we can limit | ||||
| ourselves to discussion of what the protocol does to enable/faciliate | ||||
| a theoretical proxy]]The Proxy does not terminate the TLS handshake. | ||||
| [[UNRESOLVED: this is an anima architecture requirement to use BRSKI? | ||||
| move to there?]] A Proxy is always assumed even if it is directly | ||||
| integrated into a Registrar. (In a completely autonomic network, the | ||||
| Registrar MUST provide proxy functionality so that it can be | ||||
| discovered, and the network can grow concentrically around the | ||||
| Registrar) | ||||
| As a result of the Proxy Discovery process in section | ||||
| Appendix D.1.1.1, the port number exposed by the proxy does not need | ||||
| to be well known, or require an IANA allocation. | ||||
| If the Proxy joins an Autonomic Control Plane | ||||
| ([I-D.ietf-anima-autonomic-control-plane]) it SHOULD use Autonomic | ||||
| Control Plane secured GRASP ([I-D.ietf-anima-grasp]) to discovery the | ||||
| Registrar address and port. As part of the discovery process, the | ||||
| proxy mechanism (Circuit Proxy vs IPIP encapsulation) is agreed to | ||||
| between the Registrar and Join Proxy. | ||||
| For the IPIP encapsulation methods, the port announced by the Proxy | ||||
| MUST be the same as on the registrar in order for the proxy to remain | ||||
| stateless. | ||||
| In order to permit the proxy functionality to be implemented on the | ||||
| maximum variety of devices the chosen mechanism SHOULD use the | ||||
| minimum amount of state on the proxy device. While many devices in | ||||
| the ANIMA target space will be rather large routers, the proxy | ||||
| function is likely to be implemented in the control plane CPU of such | ||||
| a device, with available capabilities for the proxy function similar | ||||
| to many class 2 IoT devices. | ||||
| The document [I-D.richardson-anima-state-for-joinrouter] provides a | ||||
| more extensive analysis of the alternative proxy methods. | ||||
| D.1.2.1. CoAP connection to Registrar | ||||
| [[RESOLVED:this section thus removed]]The CoAP mechanism was | ||||
| depreciated. | ||||
| D.1.2.2. HTTPS proxy connection to Registrar | ||||
| The proxy SHOULD also provide one of: an IPIP encapsulation of HTTP | ||||
| traffic on TCP port TBD to the registrar, or a TCP circuit proxy that | ||||
| connects the Pledge to a Registrar. | ||||
| When the Proxy provides a circuit proxy to a Registrar the Registrar | ||||
| MUST accept HTTPS connections. | ||||
| When the Proxy provides a stateless IPIP encapsulation to a | ||||
| Registrar, then the Registrar will have to perform IPIP | ||||
| decapsulation, remembering the originating outer IPIP source address | ||||
| in order to qualify the inner link-local address. This is a kind of | ||||
| encapsulation and processing which is similar in many ways to how | ||||
| mobile IP works. | ||||
| Being able to connect a TCP (HTTP) or UDP (CoAP) socket to a link- | ||||
| local address with an encapsulated IPIP header requires API | ||||
| extensions beyond [RFC3542] for UDP use, and requires a form of | ||||
| connection latching (see section 4.1 of [RFC5386] and all of | ||||
| [RFC5660], except that a simple IPIP tunnel is used rather than an | ||||
| IPsec tunnel). | ||||
| D.1.3. Behavior of the Registrar | ||||
| A Registrar listens for Pledges and determines if they can join the | ||||
| domain. A Registrar obtains a Voucher from the MASA service and | ||||
| delivers them to the Pledge as well as facilitating enrollment with | ||||
| the domain PKI. | ||||
| [[RESOLVED: moved to discovery discussion]] A Registrar is typically | ||||
| configured manually. When the Registrar joins an Autonomic Control | ||||
| Plane ([I-D.ietf-anima-autonomic-control-plane]) it MUST respond to | ||||
| GRASP ([I-D.ietf-anima-grasp]) M_DISCOVERY message. See | ||||
| Section 3.1.2 | ||||
| Registrar behavior is as follows: | ||||
| Contacted by Pledge | ||||
| + | ||||
| | | ||||
| +-------v----------+ | ||||
| | Entity | fail? | ||||
| | Authentication +---------+ | ||||
| +-------+----------+ | | ||||
| | | | ||||
| +-------v----------+ | | ||||
| | Entity | fail? | | ||||
| | Authorization +---------> | ||||
| +-------+----------+ | | ||||
| | | | ||||
| +-------v----------+ | | ||||
| | Claiming the | fail? | | ||||
| | Entity +---------> | ||||
| +-------+----------+ | | ||||
| | | | ||||
| +-------v----------+ | | ||||
| | Log Verification | fail? | | ||||
| | +---------> | ||||
| +-------+----------+ | | ||||
| | | | ||||
| +-------v----------+ +----v-------+ | ||||
| | Forward | | | | ||||
| | Voucher | | Reject | | ||||
| | to the Pledge | | Device | | ||||
| | | | | | ||||
| +------------------+ +------------+ | ||||
| Figure 4 | ||||
| D.1.3.1. Pledge Authentication | ||||
| The applicable authentication methods detailed in EST [RFC7030] are: | ||||
| o [[RESOLVED:pointed out in protocol details]]the use of an X.509 | ||||
| IDevID credential during the TLS client authentication, | ||||
| o or the use of a secret that is transmitted out of band between the | ||||
| Pledge and a Registrar (this use case is not autonomic). | ||||
| In order to validate the X.509 IDevID credential a Registrar | ||||
| maintains a database of vendor trust anchors (e.g. vendor root | ||||
| certificates or keyIdentifiers for vendor root public keys). For | ||||
| user interface purposes this database can be mapped to colloquial | ||||
| vendor names. Registrars can be shipped with the trust anchors of a | ||||
| significant number of third-party vendors within the target market. | ||||
| D.1.3.2. Pledge Authorization | ||||
| [[UNRESOLVED: this is referenced above as how the MASA does | ||||
| authorization. That is incorrect]] | ||||
| In a fully automated network all devices must be securely identified | ||||
| and authorized to join the domain. | ||||
| A Registrar accepts or declines a request to join the domain, based | ||||
| on the authenticated identity presented. Automated acceptance | ||||
| criteria include: | ||||
| o allow any device of a specific type (as determined by the X.509 | ||||
| IDevID), | ||||
| o allow any device from a specific vendor (as determined by the | ||||
| X.509 IDevID), | ||||
| o allow a specific device from a vendor (as determined by the X.509 | ||||
| IDevID) against a domain white list. (The mechanism for checking | ||||
| a shared white list potentially used by multiple Registrars is out | ||||
| of scope). | ||||
| [[RESOLVED: this looks like good text to include in above]]To look | ||||
| the Pledge up in a domain white list a consistent method for | ||||
| extracting device identity from the X.509 certificate is required. | ||||
| RFC6125 describes Domain-Based Application Service identity but here | ||||
| we require Vendor Device-Based identity. The subject field's DN | ||||
| encoding MUST include the "serialNumber" attribute with the device's | ||||
| unique serial number. In the language of RFC6125 this provides for a | ||||
| SERIALNUM-ID category of identifier that can be included in a | ||||
| certificate and therefore that can also be used for matching | ||||
| purposes. The SERIALNUM-ID whitelist is collated according to vendor | ||||
| trust anchor since serial numbers are not globally unique. | ||||
| [[RESOLVED: into log request]]The Registrar MUST use the vendor | ||||
| provided MASA service to verify that the device's history log does | ||||
| not include unexpected Registrars. If a device had previously | ||||
| registered with another domain, a Registrar of that domain would show | ||||
| in the log. | ||||
| [[RESOLVED: est integration section used 'SHOULD']]The authorization | ||||
| performed during BRSKI MAY be used for EST enrollment requests by | ||||
| proceeding with EST enrollment using the authenticated and authorized | ||||
| TLS connection. This minimizes the number of cryptographic and | ||||
| protocol operations necessary to complete bootstrapping of the local | ||||
| key infrastructure. | ||||
| D.1.3.3. Claiming the Pledge | ||||
| Claiming an pledge establishes an audit log at the MASA server and | ||||
| provides a Registrar with proof, in the form of the Voucher, that the | ||||
| log entry has been inserted. As indicated in Appendix D.1.1.4 a | ||||
| Pledge will only proceed with bootstrapping if a Voucher has been | ||||
| received. The Pledge therefore enforces that bootstrapping only | ||||
| occurs if the claim has been logged. There is no requirement for the | ||||
| vendor to definitively know that the device is owned by the | ||||
| Registrar. | ||||
| The Registrar obtains the MASA URI via static configuration or by | ||||
| extracting it from the X.509 IDevID credential. See Section 2.2. | ||||
| During initial bootstrapping the Pledge provides a nonce specific to | ||||
| the particular bootstrapping attempt. [[RESOLVED: to resolve this I | ||||
| updated many points where vouchers are referenced]]The Registrar | ||||
| SHOULD include this nonce when claiming the Pledge from the MASA | ||||
| service. Claims from an unauthenticated Registrar are only serviced | ||||
| by the MASA resource if a nonce is provided. | ||||
| The Registrar can claim a Pledge that is offline by forming the | ||||
| request using the entities unique identifier and not including a | ||||
| nonce in the claim request. Vouchers obtained in this way do not | ||||
| have a lifetime and they provide a permanent method for the domain to | ||||
| claim the device. Evidence of such a claim is provided in the audit | ||||
| log entries available to any future Registrar. Such claims reduce | ||||
| the ability for future domains to secure bootstrapping and therefore | ||||
| the Registrar MUST be authenticated by the MASA service although no | ||||
| requirement is implied that the MASA associates this authentication | ||||
| with ownership. | ||||
| An Ownership Voucher requires the vendor to definitively know that a | ||||
| device is owned by a specific domain. The method used to "claim" | ||||
| this are out-of-scope. A MASA ignores or reports failures when an | ||||
| attempt is made to claim a device that has a an Ownership Voucher. | ||||
| D.1.3.4. Log Verification | ||||
| A Registrar requests the log information for the Pledge from the MASA | ||||
| service. The log is verified to confirm that the following is true | ||||
| to the satisfaction of a Registrar's configured policy: | ||||
| o Any nonceless entries in the log are associated with domainIDs | ||||
| recognized by the registrar. | ||||
| o Any nonce'd entries are older than when the domain is known to | ||||
| have physical possession of the Pledge or that the domainIDs are | ||||
| recognized by the registrar. | ||||
| If any of these criteria are unacceptable to a Registrar the entity | ||||
| is rejected. [[RESOLVED: moved to main body]] A Registrar MAY be | ||||
| configured to ignore the history of the device but it is RECOMMENDED | ||||
| that this only be configured if hardware assisted NEA [RFC5209] is | ||||
| supported. | ||||
| [[RESOLVED: added to main text]]This document specifies a simple log | ||||
| format as provided by the MASA service to the registar. This format | ||||
| could be improved by distributed consensus technologies that | ||||
| integrate vouchers with a technologies such as block-chain or hash | ||||
| trees or the like. Doing so is out of the scope of this document but | ||||
| are anticipated improvements for future work. | ||||
| D.1.4. Behavior of the MASA Service | ||||
| [[UNRESOLVED: primary value of keeping this discussion is to | ||||
| distinguish between registrar and masa particularly wrt to the | ||||
| protocol functions provided. perhaps add statements in each protocol | ||||
| entry "provided by masa" etc?]] | ||||
| The Manufacturer Authorized Signing Authority service is directly | ||||
| provided by the manufacturer, or can be provided by a third party the | ||||
| manufacturer authorizes. It is a cloud resource. The MASA service | ||||
| provides the following functionalities to Registrars: | ||||
| Issue Vouchers: In response to Registrar requests the MASA service | ||||
| issues vouchers. Depending on the MASA policy the Registrar claim | ||||
| of device ownership is either accepted or verified using out-of- | ||||
| scope methods (that are expected to improve over time). | ||||
| Log Vouchers Issued: When a voucher is issued the act of issuing it | ||||
| includes updating the certifiable logs. Future work to enhance | ||||
| and distribute these logs is out-of-scope but expected over time. | ||||
| Provide Logs: As a baseline implementation of the certified logging | ||||
| mechanism the MASA is repsonsible for reporting logged | ||||
| information. The current method involves trusting the MASA. | ||||
| Other logging methods where the MASA is less trusted are expected | ||||
| to be developed over time. | ||||
| D.1.5. Leveraging the new key infrastructure / next steps | ||||
| As the devices have a common trust anchor, device identity can be | ||||
| securely established, making it possible to automatically deploy | ||||
| services across the domain in a secure manner. | ||||
| Examples of services: | ||||
| o Device management. | ||||
| o Routing authentication. | ||||
| o Service discovery. | ||||
| D.1.5.1. Network boundaries | ||||
| When a device has joined the domain, it can validate the domain | ||||
| membership of other devices. This makes it possible to create trust | ||||
| boundaries where domain members have higher level of trusted than | ||||
| external devices. Using the autonomic User Interface, specific | ||||
| devices can be grouped into to sub domains and specific trust levels | ||||
| can be implemented between those. | ||||
| D.1.6. Interactions with Network Access Control | ||||
| [[RESOLVED: via paragraph in 'scope of solution' discussion.]] | ||||
| The assumption is that Network Access Control (NAC) completes using | ||||
| the Pledge 's X.509 IDevID credentials and results in the device | ||||
| having sufficient connectivity to discovery and communicate with the | ||||
| proxy. Any additional connectivity or quarantine behavior by the NAC | ||||
| infrastructure is out-of-scope. After the devices has completed | ||||
| bootstrapping the mechanism to trigger NAC to re-authenticate the | ||||
| device and provide updated network privileges is also out-of-scope. | ||||
| This achieves the goal of a bootstrap architecture that can integrate | ||||
| with NAC but does not require NAC within the network where it wasn't | ||||
| previously required. Future optimizations can be achieved by | ||||
| integrating the bootstrapping protocol directly into an initial EAP | ||||
| exchange. | ||||
| D.2. Domain Operator Activities | ||||
| This section describes how an operator interacts with a domain that | ||||
| supports the bootstrapping as described in this document. | ||||
| D.2.1. Instantiating the Domain Certification Authority | ||||
| This is a one time step by the domain administrator. This is an "off | ||||
| the shelf" CA with the exception that it is designed to work as an | ||||
| integrated part of the security solution. This precludes the use of | ||||
| 3rd party certification authority services that do not provide | ||||
| support for delegation of certificate issuance decisions to a domain | ||||
| managed Registration Authority. | ||||
| D.2.2. Instantiating the Registrar | ||||
| This is a one time step by the domain administrator. One or more | ||||
| devices in the domain are configured take on a Registrar function. | ||||
| A device can be configured to act as a Registrar or a device can | ||||
| auto-select itself to take on this function, using a detection | ||||
| mechanism to resolve potential conflicts and setup communication with | ||||
| the Domain Certification Authority. Automated Registrar selection is | ||||
| outside scope for this document. | ||||
| D.2.3. Accepting New Entities | ||||
| For each Pledge the Registrar is informed of the unique identifier | ||||
| (e.g. serial number) along with the manufacturer's identifying | ||||
| information (e.g. manufacturer root certificate). This can happen in | ||||
| different ways: | ||||
| 1. Default acceptance: In the simplest case, the new device asserts | ||||
| its unique identity to a Registrar. The registrar accepts all | ||||
| devices without authorization checks. This mode does not provide | ||||
| security against intruders and is not recommended. | ||||
| 2. Per device acceptance: The new device asserts its unique identity | ||||
| to a Registrar. A non-technical human validates the identity, | ||||
| for example by comparing the identity displayed by the registrar | ||||
| (for example using a smartphone app) with the identity shown on | ||||
| the packaging of the device. Acceptance may be triggered by a | ||||
| click on a smartphone app "accept this device", or by other forms | ||||
| of pairing. See also [I-D.behringer-homenet-trust-bootstrap] for | ||||
| how the approach could work in a homenet. | ||||
| 3. Whitelist acceptance: In larger networks, neither of the previous | ||||
| approaches is acceptable. Default acceptance is not secure, and | ||||
| a manual per device methods do not scale. Here, the registrar is | ||||
| provided a priori with a list of identifiers of devices that | ||||
| belong to the network. This list can be extracted from an | ||||
| inventory database, or sales records. If a device is detected | ||||
| that is not on the list of known devices, it can still be | ||||
| manually accepted using the per device acceptance methods. | ||||
| 4. Automated Whitelist: an automated process that builds the | The following extension augments the MUD model to include a single | |||
| necessary whitelists and inserts them into the larger network | node, as described in [I-D.ietf-opsawg-mud] section 3.6, using the | |||
| domain infrastructure is plausible. Once set up, no human | following sample module that has the following tree structure: | |||
| intervention is required in this process. Defining the exact | ||||
| mechanisms for this is out of scope although the registrar | ||||
| authorization checks is identified as the logical integration | ||||
| point of any future work in this area. | ||||
| None of these approaches require the network to have permanent | module: ietf-mud-brski-masa | |||
| Internet connectivity. Even when the Internet based MASA service is | augment /ietf-mud:mud: | |||
| used, it is possible to pre-fetch the required information from the | +--rw masa-server? inet:uri | |||
| MASA a priori, for example at time of purchase such that devices can | ||||
| enroll later. This supports use cases where the domain network may | ||||
| be entirely isolated during device deployment. | ||||
| Additional policy can be stored for future authorization decisions. | The model is defined as follows: | |||
| For example an expected deployment time window or that a certain | ||||
| Proxy must be used. | ||||
| D.2.4. Automatic Enrollment of Devices | <CODE BEGINS> | |||
| module ietf-mud-brski-masa { | ||||
| yang-version 1.1; | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-mud-brski-masa"; | ||||
| prefix ietf-mud-brski-masa; | ||||
| import ietf-mud { | ||||
| prefix ietf-mud; | ||||
| } | ||||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| } | ||||
| The approach outlined in this document provides a secure zero-touch | organization | |||
| method to enroll new devices without any pre-staged configuration. | "IETF ANIMA (Autonomic Networking Integrated Model and | |||
| New devices communicate with already enrolled devices of the domain, | Approach) Working Group"; | |||
| which proxy between the new device and a Registrar. As a result of | contact | |||
| this completely automatic operation, all devices obtain a domain | "WG Web: http://tools.ietf.org/wg/anima/ | |||
| based certificate. | WG List: anima@ietf.org | |||
| "; | ||||
| description | ||||
| "BRSKI extension to a MUD file to indicate the | ||||
| MASA URL."; | ||||
| D.2.5. Secure Network Operations | revision 2017-10-09 { | |||
| description | ||||
| "Initial revision."; | ||||
| reference | ||||
| "RFC XXXX: Manufacturer Usage Description | ||||
| Specification"; | ||||
| } | ||||
| The certificate installed in the previous step can be used for all | augment "/ietf-mud:mud" { | |||
| subsequent operations. For example, to determine the boundaries of | description | |||
| the domain: If a neighbor has a certificate from the same trust | "BRSKI extension to a MUD file to indicate the | |||
| anchor it can be assumed "inside" the same organization; if not, as | MASA URL."; | |||
| outside. See also Appendix D.1.5.1. The certificate can also be | leaf masa-server { | |||
| used to securely establish a connection between devices and central | type inet:uri; | |||
| control functions. Also autonomic transactions can use the domain | description | |||
| certificates to authenticate and/or encrypt direct interactions | "This value is the URI of the MASA server"; | |||
| between devices. The usage of the domain certificates is outside | } | |||
| scope for this document. | } | |||
| } | ||||
| <CODE ENDS> | ||||
| 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 | |||
| Email: mcr+ietf@sandelman.ca | Email: mcr+ietf@sandelman.ca | |||
| URI: http://www.sandelman.ca/ | URI: http://www.sandelman.ca/ | |||
| Michael H. Behringer | Michael H. Behringer | |||
| Cisco | Cisco | |||
| Email: mbehring@cisco.com | Email: mbehring@cisco.com | |||
| Steinthor Bjarnason | Steinthor Bjarnason | |||
| Cisco | Arbor Networks | |||
| Email: sbjarnas@cisco.com | Email: sbjarnason@arbor.net | |||
| Kent Watsen | Kent Watsen | |||
| Juniper Networks | Juniper Networks | |||
| Email: kwatsen@juniper.net | Email: kwatsen@juniper.net | |||
| End of changes. 160 change blocks. | ||||
| 1201 lines changed or deleted | 1132 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/ | ||||