draft-ietf-opsawg-sdi-03.txt   draft-ietf-opsawg-sdi-04.txt 
Network Working Group W. Kumari Network Working Group W. Kumari
Internet-Draft Google Internet-Draft Google
Intended status: Informational C. Doyle Intended status: Informational C. Doyle
Expires: August 14, 2020 Juniper Networks Expires: September 5, 2020 Juniper Networks
February 11, 2020 March 04, 2020
Secure Device Install Secure Device Install
draft-ietf-opsawg-sdi-03 draft-ietf-opsawg-sdi-04
Abstract Abstract
Deploying a new network device often requires that an employee Deploying a new network device often requires that an employee
physically travel to a datacenter to perform the initial install and physically travel to a datacenter to perform the initial install and
configuration, even in shared datacenters with "smart-hands" type configuration, even in shared datacenters with "smart-hands" type
support. In many cases, this could be avoided if there were a support. In many cases, this could be avoided if there were a
standard, secure way to initially provision the devices. standard, secure way to initially provision the devices.
This document extends existing auto-install / Zero-Touch Provisioning This document extends existing auto-install / Zero-Touch Provisioning
skipping to change at page 2, line 4 skipping to change at page 2, line 4
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 https://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 August 14, 2020. This Internet-Draft will expire on September 5, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 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
(https://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
skipping to change at page 2, line 26 skipping to change at page 2, line 26
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. Requirements notation . . . . . . . . . . . . . . . . . . 4 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 4
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Example Scenario . . . . . . . . . . . . . . . . . . . . 4 2.1. Example Scenario . . . . . . . . . . . . . . . . . . . . 5
3. Vendor Role / Requirements . . . . . . . . . . . . . . . . . 5 3. Vendor Role / Requirements . . . . . . . . . . . . . . . . . 6
3.1. Device key generation . . . . . . . . . . . . . . . . . . 5 3.1. Device key generation . . . . . . . . . . . . . . . . . . 6
3.2. Certificate Publication Server . . . . . . . . . . . . . 6 3.2. Certificate Publication Server . . . . . . . . . . . . . 6
4. Operator Role / Responsibilities . . . . . . . . . . . . . . 7 4. Operator Role / Responsibilities . . . . . . . . . . . . . . 7
4.1. Administrative . . . . . . . . . . . . . . . . . . . . . 7 4.1. Administrative . . . . . . . . . . . . . . . . . . . . . 7
4.2. Technical . . . . . . . . . . . . . . . . . . . . . . . . 7 4.2. Technical . . . . . . . . . . . . . . . . . . . . . . . . 7
4.3. Initial Customer Boot . . . . . . . . . . . . . . . . . . 8 4.3. Initial Customer Boot . . . . . . . . . . . . . . . . . . 8
5. Additional Considerations . . . . . . . . . . . . . . . . . . 10 5. Additional Considerations . . . . . . . . . . . . . . . . . . 11
5.1. Key storage . . . . . . . . . . . . . . . . . . . . . . . 10 5.1. Key storage . . . . . . . . . . . . . . . . . . . . . . . 11
5.2. Key replacement . . . . . . . . . . . . . . . . . . . . . 10 5.2. Key replacement . . . . . . . . . . . . . . . . . . . . . 11
5.3. Device reinstall . . . . . . . . . . . . . . . . . . . . 10 5.3. Device reinstall . . . . . . . . . . . . . . . . . . . . 11
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11
7. Security Considerations . . . . . . . . . . . . . . . . . . . 10 7. Security Considerations . . . . . . . . . . . . . . . . . . . 11
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 12
9.1. Normative References . . . . . . . . . . . . . . . . . . 11 9.1. Normative References . . . . . . . . . . . . . . . . . . 12
9.2. Informative References . . . . . . . . . . . . . . . . . 11 9.2. Informative References . . . . . . . . . . . . . . . . . 12
Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 12 Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 13
Appendix B. Demo / proof of concept . . . . . . . . . . . . . . 13 Appendix B. Demo / proof of concept . . . . . . . . . . . . . . 14
B.1. Step 1: Generating the certificate. . . . . . . . . . . . 13 B.1. Step 1: Generating the certificate. . . . . . . . . . . . 14
B.1.1. Step 1.1: Generate the private key. . . . . . . . . . 13 B.1.1. Step 1.1: Generate the private key. . . . . . . . . . 14
B.1.2. Step 1.2: Generate the certificate signing request. . 14 B.1.2. Step 1.2: Generate the certificate signing request. . 15
B.1.3. Step 1.3: Generate the (self signed) certificate B.1.3. Step 1.3: Generate the (self signed) certificate
itself. . . . . . . . . . . . . . . . . . . . . . . . 14 itself. . . . . . . . . . . . . . . . . . . . . . . . 15
B.2. Step 2: Generating the encrypted config. . . . . . . . . 14 B.2. Step 2: Generating the encrypted config. . . . . . . . . 15
B.2.1. Step 2.1: Fetch the certificate. . . . . . . . . . . 14 B.2.1. Step 2.1: Fetch the certificate. . . . . . . . . . . 15
B.2.2. Step 2.2: Encrypt the config file. . . . . . . . . . 14 B.2.2. Step 2.2: Encrypt the config file. . . . . . . . . . 16
B.2.3. Step 2.3: Copy config to the config server. . . . . . 15 B.2.3. Step 2.3: Copy config to the config server. . . . . . 16
B.3. Step 3: Decrypting and using the config. . . . . . . . . 15 B.3. Step 3: Decrypting and using the config. . . . . . . . . 16
B.3.1. Step 3.1: Fetch encrypted config file from config B.3.1. Step 3.1: Fetch encrypted config file from config
server. . . . . . . . . . . . . . . . . . . . . . . . 15 server. . . . . . . . . . . . . . . . . . . . . . . . 16
B.3.2. Step 3.2: Decrypt and use the config. . . . . . . . . 15 B.3.2. Step 3.2: Decrypt and use the config. . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17
1. Introduction 1. Introduction
In a growing, global network, significant amounts of time and money In a growing, global network, significant amounts of time and money
are spent simply deploying new devices and "forklift" upgrading are spent simply deploying new devices and "forklift" upgrading
existing devices. In many cases, these devices are in shared existing devices. In many cases, these devices are in shared
datacenters (for example, Internet Exchange Points (IXP) or "carrier datacenters (for example, Internet Exchange Points (IXP) or "carrier
neutral datacenters"), which have staff on hand that can be neutral datacenters"), which have staff on hand that can be
contracted to perform tasks including physical installs, device contracted to perform tasks including physical installs, device
reboots, loading initial configurations, etc. There are also a reboots, loading initial configurations, etc. There are also a
number of (often vendor proprietary) protocols to perform initial number of (often vendor proprietary) protocols to perform initial
device installs and configurations - for example, many network device installs and configurations - for example, many network
devices will attempt to use DHCP to get an IP address and devices will attempt to use DHCP to get an IP address and
configuration server, and then fetch and install a configuration when configuration server, and then fetch and install a configuration when
they are first powered on. they are first powered on.
Network device configurations contain a significant amount of Network device configurations contain a significant amount of
security related and / or proprietary information (for example, security related and / or proprietary information (for example,
RADIUS or TACACS+ secrets). Exposing these to a third party to load RADIUS or TACACS+ secrets). Exposing these to a third party to load
onto a new device (or using an auto-install techniques which fetch an onto a new device (or using an auto-install techniques which fetch an
(unencrypted) config file via something like TFTP) is simply not unencrypted config file via something like TFTP) is simply not
acceptable to many operators, and so they have to send employees to acceptable to many operators, and so they have to send employees to
remote locations to perform the initial configuration work. As well remote locations to perform the initial configuration work. As well
as having a significant monetary cost, it also takes significantly as having a significant monetary cost, it also takes significantly
longer to install devices and is generally inefficient. longer to install devices and is generally inefficient.
There are some workarounds to this, such as asking the vendor to pre- There are some workarounds to this, such as asking the vendor to pre-
configure the devices before shipping it; asking the smart-hands to configure the devices before shipping it; asking the smart-hands to
install a terminal server; providing a minimal, unsecured install a terminal server; providing a minimal, unsecured
configuration and using that to bootstrap to a complete configuration and using that to bootstrap to a complete
configuration, etc; but these are often clumsy and have security configuration, etc; but these are often clumsy and have security
skipping to change at page 4, line 9 skipping to change at page 4, line 9
provide a secure method to initially configure new devices. It is provide a secure method to initially configure new devices. It is
optimized for simplicity, both for the implementor and the operator; optimized for simplicity, both for the implementor and the operator;
it is explicitly not intended to be an "all singing, all dancing" it is explicitly not intended to be an "all singing, all dancing"
fully featured system for managing installed / deployed devices, nor fully featured system for managing installed / deployed devices, nor
is it intended to solve all use-cases - rather it is a simple is it intended to solve all use-cases - rather it is a simple
targeted solution to solve a common operational issue. Solutions targeted solution to solve a common operational issue. Solutions
such as Secure Zero Touch Provisioning (SZTP)" [RFC8572] are much such as Secure Zero Touch Provisioning (SZTP)" [RFC8572] are much
more fully featured, but also more complex to implement and / or are more fully featured, but also more complex to implement and / or are
not widely deployed yet. not widely deployed yet.
This solution is specifically designed to be a simple method on top
of exiting device functionality. If devices do not support this new
method, they can continue to use the existing functionality. In
addition, operators can choose to use this to protect their
configuration information, or can continue to use the existing
functionality.
The issue of securely installing devices is in no way a new issue,
nor is it limited to network devices; it occurs when deploying
servers, PCs, IoT devices, and in many other situations. While the
solution described in this document is obvious (encrypt the config,
then decrypt it with a device key), this document only discusses the
use for network devices, such as routers and switches.
1.1. Requirements notation 1.1. Requirements notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
2. Overview 2. Overview
skipping to change at page 4, line 30 skipping to change at page 4, line 44
bootstrapping logic (sometimes called 'autoboot', or 'autoinstall'). bootstrapping logic (sometimes called 'autoboot', or 'autoinstall').
This generally works by having a newly installed / unconfigured This generally works by having a newly installed / unconfigured
device obtain an IP address and address of a config server (often device obtain an IP address and address of a config server (often
called 'next-server', 'siaddr' or 'tftp-server-name') using DHCP. called 'next-server', 'siaddr' or 'tftp-server-name') using DHCP.
The device then contacts this configuration server to download its The device then contacts this configuration server to download its
initial configuration, which is often identified using the devices initial configuration, which is often identified using the devices
serial number, MAC address or similar. This document extends this serial number, MAC address or similar. This document extends this
(vendor specific) paradigm by allowing the configuration file to be (vendor specific) paradigm by allowing the configuration file to be
encrypted. encrypted.
This document describes a concept, and some example ways of
implementing this concept. As devices have different capabilities,
and use different configuration paradigms, one method will not suit
all, and so it is expected that vendors will differ in exactly how
they implement this.
This document uses the serial number of the device as a unique This document uses the serial number of the device as a unique
identifier for simplicity; some vendors may not want to implement the identifier for simplicity; some vendors may not want to implement the
system using the serial number as the identifier for business reasons system using the serial number as the identifier for business reasons
(a competitor or similar could enumerate the serial numbers and (a competitor or similar could enumerate the serial numbers and
determine how many devices have been manufactured). Implementors are determine how many devices have been manufactured). Implementors are
free to choose some other way of generating identifiers (e.g UUID free to choose some other way of generating identifiers (e.g UUID
[RFC4122]), but this will likely make it somewhat harder for [RFC4122]), but this will likely make it somewhat harder for
operators to use (the serial number is usually easy to find on a operators to use (the serial number is usually easy to find on a
device, a more complex system is likely harder to track). device, a more complex system is likely harder to track).
skipping to change at page 8, line 8 skipping to change at page 8, line 37
| +------------+ | | | | +------------+ | | |
| | | | | | | |
+----------------+ +----------------+ +----------------+ +----------------+
Fetching the certificate, encrypting the configuration, publishing Fetching the certificate, encrypting the configuration, publishing
the encrypted configuration. the encrypted configuration.
4.3. Initial Customer Boot 4.3. Initial Customer Boot
When the device is first booted by the customer (and on subsequent When the device is first booted by the customer (and on subsequent
boots), if the device has no valid configuration, it will use boots), if the device does not have a valid configuration, it will
existing auto-install type functionality - it performs DHCP Discovery use existing auto-install functionality. As an example, it performs
until it gets a DHCP offer including DHCP option 66 or 150, contact DHCP Discovery until it gets a DHCP offer including DHCP option 66 or
the server listed in these DHCP options and download its config file. 150, contact the server listed in these DHCP options and downloads
its config file. Note that this is existing functionality (for
After retrieving the config file, the device will examine the file
and determine if it seems to be a valid config, and if so, proceeds
as it normally would. Note that this is existing functionality (for
example, Cisco devices fetch the config file named by the Bootfile- example, Cisco devices fetch the config file named by the Bootfile-
Name DHCP option (67)). Name DHCP option (67)).
If the file appears be "garbage", the device will attempt to decrypt After retrieving the config file, the device needs to determine if it
the configuration file using its private key. If it is able to is encrypted or not. If it is not encrypted, the existing behavior
decrypt and validate the file it will install the configuration, and is used. If the configuration is encrypted, the process continues as
start using it. The exact method that the device uses to determine described in this document. The method used to determine if the
if a config file is "valid" is implementation specific, but a normal config is encrypted or not is implementation dependant; there are a
config file looks significantly different to an encrypted blob. number of (obvious) options, including having a magic string in the
file header, using a file name extension (e.g config.enc), or using
specific DHCP options.
If the file is encrypted, the device will attempt to decrypt and
parse the file. It able, it will install the configuration, and
start using it. If this fails, the device with either abort the
auto-install process, or will repeat this process until it succeeds.
Note that the device only needs DHCP and to be able to download the Note that the device only needs DHCP and to be able to download the
config file; after the initial power-on in the factory it never needs config file; after the initial power-on in the factory it never needs
to access the Internet or vendor or certificate publication server - to access the Internet or vendor or certificate publication server -
it (and only it) has the private key and so has the ability to it (and only it) has the private key and so has the ability to
decrypt the config file. decrypt the config file.
+--------+ +--------------+ +--------+ +--------------+
| Device | |Config server | | Device | |Config server |
+--------+ | (e.g TFTP) | +--------+ | (e.g TFTP) |
skipping to change at page 9, line 24 skipping to change at page 10, line 24
| +-----+-----+ | | | | +-----+-----+ | | |
| | | | | | | | | |
| +-----v------+ | | +-----------+ | | +-----v------+ | | +-----------+ |
| | | | | | Encrypted | | | | | | | | Encrypted | |
| |Fetch config|<------------------>| config | | | |Fetch config|<------------------>| config | |
| | | | | | file | | | | | | | | file | |
| +-----+------+ | | +-----------+ | | +-----+------+ | | +-----------+ |
| | | | | | | | | |
| X | | | | X | | |
| / \ | | | | / \ | | |
| / \ Y +--------+ | | | | / \ N +--------+ | | |
| |Sane?|---->|Install,| | | | | | Enc?|---->|Install,| | | |
| \ / | Boot | | | | | \ / | Boot | | | |
| \ / +--------+ | | | | \ / +--------+ | | |
| V | | | | V | | |
| |N | | | | |Y | | |
| | | | | | | | | |
| +-----v------+ | | | | +-----v------+ | | |
| |Decrypt with| | | | | |Decrypt with| | | |
| |private key | | | | | |private key | | | |
| +-----+------+ | | | | +-----+------+ | | |
| | | | | | | | | |
| v | | | | v | | |
| / \ | | | | / \ | | |
| / \ Y +--------+ | | | | / \ Y +--------+ | | |
| |Sane?|---->|Install,| | | | | |Sane?|---->|Install,| | | |
skipping to change at page 11, line 31 skipping to change at page 12, line 31
Over" situation. Over" situation.
Even when using a secure bootstrapping mechanism, security conscious Even when using a secure bootstrapping mechanism, security conscious
operators may wish to bootstrapping devices with a minimal / less operators may wish to bootstrapping devices with a minimal / less
sensitive config, and then replace this with a more complete one sensitive config, and then replace this with a more complete one
after install. after install.
8. Acknowledgements 8. Acknowledgements
The authors wish to thank everyone who contributed, including Benoit The authors wish to thank everyone who contributed, including Benoit
Claise, Sam Ribeiro, Michael Richardson, Sean Turner and Kent Watsen. Claise, Tom Petch, Sam Ribeiro, Michael Richardson, Sean Turner and
Joe Clarke provided significant comments and review. Kent Watsen. Joe Clarke provided significant comments and review.
9. References 9. References
9.1. Normative References 9.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 12, line 19 skipping to change at page 13, line 19
[RFC8572] Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero [RFC8572] Watsen, K., Farrer, I., and M. Abrahamsson, "Secure Zero
Touch Provisioning (SZTP)", RFC 8572, Touch Provisioning (SZTP)", RFC 8572,
DOI 10.17487/RFC8572, April 2019, DOI 10.17487/RFC8572, April 2019,
<https://www.rfc-editor.org/info/rfc8572>. <https://www.rfc-editor.org/info/rfc8572>.
Appendix A. Changes / Author Notes. Appendix A. Changes / Author Notes.
[RFC Editor: Please remove this section before publication ] [RFC Editor: Please remove this section before publication ]
From -03 to -04
o Addressed Joe's WGLC comments. This involved changing the "just
try decrypt and pray" to vendor specific, like a file extension,
magic header sting, etc.
o Addressed tom's comments.
From individual WG-01 to -03: From individual WG-01 to -03:
o Addressed Joe Clarke's comments - o Addressed Joe Clarke's comments -
https://mailarchive.ietf.org/arch/msg/opsawg/JTzsdVXw- https://mailarchive.ietf.org/arch/msg/opsawg/JTzsdVXw-
XtWXZIIFhH7aW_-0YY XtWXZIIFhH7aW_-0YY
o Many typos / nits o Many typos / nits
o Broke Overview and Example Scenario into 2 sections. o Broke Overview and Example Scenario into 2 sections.
skipping to change at page 13, line 27 skipping to change at page 14, line 35
o The CA part was confusing people - the certificate is simply a o The CA part was confusing people - the certificate is simply a
wrapper for the key, and the Subject just an index, and so removed wrapper for the key, and the Subject just an index, and so removed
that. that.
o Added a bunch of ASCII diagrams o Added a bunch of ASCII diagrams
Appendix B. Demo / proof of concept Appendix B. Demo / proof of concept
This section contains a rough demo / proof of concept of the system. This section contains a rough demo / proof of concept of the system.
It is only intended for illustration; presumably things like It is only intended for illustration, and is not intended to be used
algorithms, key lengths, format / containers will provide much fodder in production.
for discussion.
It uses OpenSSL from the command line, in production something more It uses OpenSSL from the command line, in production something more
automated would be used. In this example, the unique identifier is automated would be used. In this example, the unique identifier is
the serial number of the router, SN19842256. the serial number of the router, SN19842256.
B.1. Step 1: Generating the certificate. B.1. Step 1: Generating the certificate.
This step is performed by the router. It generates a key, then a This step is performed by the router. It generates a key, then a
csr, and then a self signed certificate. csr, and then a self signed certificate.
 End of changes. 17 change blocks. 
54 lines changed or deleted 85 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/