<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc
  SYSTEM 'rfc2629.dtd' [
<!ENTITY I-D.ietf-homenet-arch PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-homenet-arch.xml"><!ENTITY I-D.behringer-autonomic-network-framework PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.behringer-autonomic-network-framework.xml">]>
<rfc category="info" docName="draft-sarikaya-t2trg-sbootstrapping-11" ipr="trust200902">
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
  <?rfc toc="yes" ?>
  <?rfc compact="yes" ?>
  <?rfc symrefs="yes" ?>
  <?rfc sortrefs="yes"?>
  <?rfc iprnotified="no" ?>
  <?rfc strict="yes" ?>
  <front>
    <title abbrev="IoT Bootstrapping Analysis">Secure IoT Bootstrapping: A Survey</title>
    <author fullname="Mohit Sethi" initials="M.S." surname="Sethi">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>Hirsalantie 11</street>
          <city>Jorvas</city>
          <region/>
          <code>02420</code>
          <country>Finland</country>
        </postal>
        <email>mohit@piuha.net</email>
      </address>
    </author>
    <author fullname="Behcet Sarikaya" initials="B.S." surname="Sarikaya">
      <organization>Denpel Informatique</organization>
      <address>
        <postal>
          <street/>
          <street/>
          <city/>
          <region/>
          <code/>
          <country/>
        </postal>
        <email>sarikaya@ieee.org</email>
      </address>
    </author>
    <author fullname="Dan Garcia-Carrillo" initials="D.G." surname="Garcia-Carrillo">
      <organization>University of Oviedo</organization>
      <address>
        <postal>
          <street/>
          <city>Oviedo</city>
          <region/>
          <code>33207</code>
          <country>Spain</country>
        </postal>
        <email>garciadan@uniovi.es</email>
      </address>
    </author>
    <date/>
    <abstract>
      <t>This draft provides an overview of the various terms that are used when discussing bootstrapping of IoT devices. We document terms that have been used within the IETF as well as other standards bodies. We investigate if the terms refer to the same phenomena or have subtle differences. We provide recommendations on the applicability of terms in different contexts. Finally, this document presents a survey of secure bootstrapping mechanisms available for smart objects that are part of an Internet of Things (IoT) network. The survey does not prescribe any one mechanism and rather presents IoT developers with different options to choose from, depending on their use-case, security requirements, and the user interface available on their IoT devices.</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction">
      <t>We informally define bootstrapping as &quot;any process that takes place before a device can become operational&quot;. While bootstrapping is necessary for all computing devices, until recently, most of our devices typically had sufficient computing power and user interface (UI) for ensuring somewhat smooth operation. For example, a typical laptop device required the user to setup a username/password as well as enter network settings for Internet connectivity. Following these steps ensured that the laptop was fully operational.</t>
      <t>The problem of bootstrapping is however exacerbated for Internet of Things (IoT) networks. The size of an IoT network varies from a couple of devices to tens of thousands, depending on the application. Smart objects/things/devices in IoT networks are produced by a variety of vendors and are typically heterogeneous in terms of the constraints on their power supply, communication capability, computation capacity, and user interfaces available. This problem of bootstrapping in IoT was identified by <xref target="Sethi14">Sethi et al.</xref> while developing a bootstrapping solution for smart displays. Although this document focuses on bootstrapping terminology and methods for IoT devices, we do not exclude bootstrapping related terminology used in other contexts.</t>
      <t>Bootstrapping devices typically also involves providing them with some sort of network connectivity. Indeed, the functionality of a disconnected device is rather limited. Bootstrapping devices often assumes that some network has been setup a-priori. Setting up and maintaining a network itself is challenging. For example, users may need to configure the network name (called as Service Set Identifier (SSID) in Wi-Fi networks) and passpharse before new devices can be bootstrapped. Specifications such as the Wi-Fi Alliance Simple Configuration <xref target="simpleconn"/> help users setup networks. However, this document is only focused on terminology and processes associated with bootstrapping devices and excludes any discussion on setting up networks before devices can be bootstrapped.</t>
      <t>In addition to our informal definition, it is helpful to look at other definitions of bootstrapping. The IoT@Work project defines bootstrapping in the context of IoT as &quot;the process by which the state of a device, a subsystem, a network, or an application changes from not operational to operational&quot; <xref target="iotwork"/>. Vermillard <xref target="vermillard"/> , on the other hand, describes bootstrapping as the procedure by which an IoT device gets the URLs and secret keys for reaching the necessary servers. Vermillard notes that the same process is useful for re-keying, upgrading the security schemes, and for redirecting the IoT devices to new servers.</t>
      
      <t>There are several terms that have often been used in the context of bootstrapping:
          
        <list style="symbols">
          <t>Bootstrapping</t>
          <t>Provisioning</t>
          <t>Onboarding</t>
          <t>Enrollment</t>
          <t>Commissioning</t>
          <t>Initialization</t>
          <t>Configuration</t>
          <t>Registration</t>
        </list>
      </t>
      <t>We attempt to find out whether all these terms refer to the same phenomena. We begin by looking at how these terms have been used in various standards and standardization bodies in <xref target="usage"/>. We then summarize our understanding in <xref target="comp"/>, and provide our recommendations on their usage in <xref target="recommend"/>. <xref target="classification"/> provides a taxonomy of bootstrapping methods and <xref target="categorization"/> categorizes methods according to the taxonomy.</t>
    </section>

    <section title="Terminology" anchor="terminology">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target='RFC2119'/><xref target='RFC8174'/>. 
      </t>
    </section>


    <section anchor="usage" title="Usage of bootstrapping terminology in standards">
	<t>To better understand bootstrapping related terminology, let us first look at the terms used by some existing specifications:</t>
      <section title="Device Provisioning Protocol (DPP)">
        <t>The Wi-Fi Alliance Device provisioning protocol (DPP) <xref target="dpp"/> describes itself as a standardized protocol for providing user friendly Wi-Fi setup while maintaining or increasing the security. DPP relies on a configurator, e.g. a smartphone application, for setting up all other devices, called enrollees, in the network. DPP has the following three phases/sub-protocols:
          <list style="symbols">
            <t>Bootstrapping: The configurator obtains bootstrapping information from the enrollee using an out-of-band channel such as scanning a QR code or tapping NFC. The bootstrapping information includes the public-key of the device and metadata such as the radio channel on which the device is listening.</t>
            <t>Authentication: In DPP, either the configurator or the enrollee can initiate the authentication protocol. The side initiating the authentication protocol is called as the initiator while the other side is called the responder. The authentication sub-protocol provides authentication of the responder to an initiator. It can optionally authenticate the initiator to the responder (only if the bootstrapping information was exchange out-of-band in both directions).</t>
            <t>Configuration: Using the key established from the authentication protocol, the enrollee asks the configurator for network information such as the SSID and passphrase of the access point.</t>
          </list>
        </t>
      </section>
      <section title="Open Mobile Alliance (OMA) Lightweight M2M (LwM2M)">
        <t>The OMA LwM2M specification <xref target="oma"/> defines an architecture where a new device (LwM2M client) contacts a Bootstrap-server which is responsible for &quot;provisioning&quot; essential information such as credentials. After receiving this essential information, the LwM2M client device &quot;registers&quot; itself with one or more LwM2M Servers which will manage the device during its lifecycle. The current standard defines the following four bootstrapping modes:
          <list style="symbols">
            <t>Factory Bootstrap: An IoT device in this case is configured with all the necessary bootstrap information during manufacturing and prior to its deployment.</t>
            <t>Bootstrap from Smartcard: An IoT device retrieves and processes all the necessary bootstrap data from a Smartcard.</t>
            <t>Client Initiated Bootstrap: This mode provides a mechanism for an IoT client device to retrieve the bootstrap information from a Bootstrap Server. This requires the client device to have an account at the Bootstrap Server and credentials to obtain the necessary information securely.</t>
            <t>Server Initiated Bootstrap: In this bootstrapping mode, the bootstrapping server configures all the bootstrap information on the IoT device without receiving a request from the client. This means that the bootstrap server needs to know if a client IoT Device is ready for bootstrapping before it can be configured. For example, a network may inform the bootstrap server of a new connecting IoT client device.</t></list>
        </t>
      </section>
      <section title="Open Connectivity Foundation (OCF)">
        <t>The Open Connectivity Foundation (OCF) <xref target="ocf"/> defines the process before a device is operational as onboarding. The first step of this onboarding process is &quot;configuring&quot; the ownership, i.e., establishing a legitimate user that owns the device. For this, the user is supposed to use an Onboarding tool (OBT) and an Owner Transfer Methods (OTM).</t>
        <t>The OBT is described as a logical entity that may be implemented on a single or multiple entities such as a home gateway, a device management tool, etc. OCF lists several optional OTMs. At the end of the execution of an OTM, the onboarding tool must have &quot;provisioned&quot; an Owner Credential onto the device. The following owner transfer methods are specified:
          <list style="symbols">
            <t>Just works: Performs an un-authenticated Diffie-Hellman key exchange over Datagram Transport Layer Security (DTLS). The key exchange results in a symmetric session key which is later used for provisioning. Naturally, this mode is vulnerable to Man-in-The-Middle (MiTM) attackers.</t>
            <t>Random PIN: The device generates a PIN code that is entered into the onboarding tool by the user. This pin code is used together with TLS-PSK ciphersuites for establishing a symmetric session key. OCF recommends PIN codes to have an entropy of 40 bits.</t>
            <t>Manufacturer certificate: An onboarding tool authenticates the device by verifying a manufacturer installed certificate. Similarly, the device may authenticate the onboarding tool by verifying its signature.</t>
            <t>Vendor specific: Vendors implement their own transfer method that accommodates any specific device constraints.</t></list>Once the onboarding tool and the new device have authenticated and established secure communication, the onboarding tool &quot;provisions&quot;/&quot;configures&quot; the device with Owner credentials. Owner credentials may consist of certificates, shared keys, or Kerberos tickets for example.</t>
            <t>The OBT additionally configures/provisions information about the Access Management Service (AMS), the Credential Management  Service (CMS), and the credentials for interacting with them. The AMS is responsible for provisioning access control entries, while the CMS provisions security credentials necessary for device operation.</t>
      </section>
      <section title="Bluetooth">
        <t>Bluetooth mesh provisioning. Beacons for discovery. Public-key exchange followed by authentication. Finally provisioning of the network key and unicast address. To be expanded.</t>
      </section>
      <section title="Fast IDentity Online (FIDO) alliance">
        <t>The Fast IDentity Online Alliance (FIDO) is currently specifying an automatic onboarding protocol for IoT devices <xref target="fidospec"/>. The goal of this protocol is to provide a new IoT device with information for interacting securely with an online IoT platform. This protocol allows owners to choose the IoT platform for their devices at a late stage in the device lifecyle. The draft specification refers to this feature as "late binding".</t>

        <t>The FIDO IoT protocol itself is composed of one Device Initialization (DI) protocol and 3 Transfer of Ownership (TO) protocols TO0, TO1, TO2. Protocol messages are encoded in Concise Binary Object Representation (CBOR) <xref target="RFC8949"/> and can be transported over application layer protocols such as Constrained Application Protocol (CoAP) <xref target="RFC7252"/> or directly over TCP, Bluetooth etc. FIDO IoT however assumes that the device already has IP connectivity to a rendezvous server. Establishing this initial IP connectivity is explicitly stated as "out-of-scope" but the draft specification hints at the usage of Hypertext Transfer Protocol (HTTP) <xref target="RFC7230"/> proxies for IP networks and other forms of tunneling for non-IP networks.</t>
        <t>The specification only provides a non-normative example of the DI protocol which must be executed in the factory during device manufacture. This protocol embeds initial ownership and manufacturing credentials into Restricted Operation Environment (ROE) on the device. The initial information embedded also includes a unique device identifier (called as GUID in the specification). After DI is executed, the manufacturer has an ownership voucher which is passed along the supply chain to the device owner.</t>

        <t>When a device is unboxed and powered on by the new owner, the device discovers a network-local or an Internet-based rendezvous server. Protocols (TO0, TO1, and TO2) between the device, the rendezvous server, and the new owner (as the owner onboarding service) ensure that the device and the new owner are able to authenticate each other. Thereafter, the new owner establishes cryptographic control of the device and provides it with credentials of the IoT platform which the device should used.</t>
      </section>
      <section title="Internet Engineering Task Force (IETF)">
        <t>In this section, we will look at some IETF standards and draft specifications related to IoT bootstrapping.</t>
        <section title="Enrollment over Secure Transport (EST)">
          <t>
            Enrollment over Secure Transport (EST) <xref target="RFC7030"/> defines a profile of Certificate Management over CMS (CMC) <xref target="RFC5272"/>. EST relies on Hypertext Transfer Protocol (HTTP) and Transport Layer Security (TLS) for exchanging CMC messages and allows client devices to obtain client certificates and associated Certification Authority (CA) certificates. A companion specification for using EST over secure CoAP has also been standardized <xref target="I-D.ietf-ace-coap-est"/>. EST assumes that some initial information is already distributed so that EST client and servers can perform mutual authentication before continuing with protocol. <xref target="RFC7030"/> further defines "Bootstrap Distribution of CA Certificates" which allows minimally configured EST clients to obtain initial trust anchors. It relies on human users to verify information such as the CA certificate "fingerprint" received over the unauthenticated TLS connection setup. After successful completion of this bootstrapping step, clients can proceed to the enrollment step during which they obtain client certificates and associated CA certificates. 
          </t>
        </section>
        <section title="Bootstrapping Remote Secure Key Infrastructures (BRSKI)">
          <t>The ANIMA working group is working on a bootstrapping solution for devices that relies on 802.1AR vendor certificates called Bootstrapping Remote Secure Key Infrastructures (BRSKI) <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>. In addition to vendor installed IEEE 802.1AR certificates, a vendor based service on the Internet is required. Before being authenticated, a new device only needs link-local connectivity, and does not require a routable address. When a vendor provides an Internet based service, devices can be forced to join only specific domains. The document highlights that the described solution is aimed in general at non-constrained (i.e. class 2+ defined in <xref target="RFC7228"/>) devices operating in a non-challenged network. It claims to scale to thousands of devices located in hostile environments, such as ISP provided CPE devices which are drop-shipped to the end user.</t>
        </section>
        <section title="Secure Zero Touch Provisioning">
          <t>
            <xref target="RFC8572"/> defines a bootstrapping strategy for enabling devices to securely obtain all the configuration information with no installer input, beyond the actual physical placement and connection of cables. Their goal is to enable a secure NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/> connection to the deployment specific network management system (NMS). This bootstrapping method requires the devices to be configured with trust anchors in the form of X.509 certificates. <xref target="RFC8572"/> is similar to BRSKI based on <xref target="RFC8366"/>.
          </t>
        </section>
        <section title="Nimble out-of-band authentication for EAP (EAP-NOOB)">
         <t>EAP-NOOB <xref target="I-D.ietf-emu-eap-noob"/> defines an EAP method where the authentication is based on a user-assisted out-of-band (OOB) channel between the server and peer. It is intended as a generic bootstrapping solution for IoT devices which have no pre-configured authentication credentials and which are not yet registered on the authentication server. This method claims to be more generic than most ad-hoc bootstrapping solutions in that it supports many types of OOB channels. The exact in-band messages and OOB message contents are specified and not the OOB channel details. EAP-NOOB also supports IoT devices with only output (e.g. display) or only input (e.g. camera). It makes combined use of both secrecy and integrity of the OOB channel for more robust security than the ad-hoc solutions.</t>
       </section>
      </section>
    </section>
    <section anchor="comp" title="Comparison">
      <t>There are several stages before a device becomes fully operational. This typically involves establishing some initial trust after which credentials and other parameters are configured. For DPP, bootstrapping is the first step before authentication and provisioning of credentials can occur. For EST, bootstrapping happens as the first step when the client devices have no certificates available for starting enrollment. Provisioning/configuring are terms used for providing additional information to devices before they are fully operational. For example, credentials are provisioned onto the device. But before credential provisioning, a device is bootstrapped and authenticated. Some protocols may only deal with parts of the process. For example, TLS maybe used for authentication after bootstrapping. A separate device management protocol then may run over this TLS tunnel for provisioning operational information and credentials.</t>
    </section>
    <section anchor="recommend" title="Recommendations">
      <t>
      <list style="symbols">
        <t>It is recommended that the IETF use the term "bootstrapping" for the initial (authentication) step that a device must perform. Bootstrapping will likely happen before the device has obtained full network connectivity.</t>
        <t>It is recommended to use the term "provisioning"/"configuring" for the process of providing necessary information to a device to become operational after initial authentication is complete. As is evident from above, provisioning and configuring may include bootstrapping and authentication as a sub protocol.</t>
        <t>IETF specifications should aim to avoid mixing terminology or adding new terminology for better consistency.</t>
        <!--        <t>Other standards organizations building systems based on IETF protocols may refer to the entire solution as provisioning protocol, configuring protocol, onboarding protocol etc.</t>-->
      </list>
      </t>
    </section>
    <section anchor="classification" title="Classification of available mechanisms">
      <t>Given the large number of bootstrapping protocols and related specifications, it can be helpful to classify them. We categorize the available bootstrapping solutions into the following major classes:</t>
      <t>
        <list style="symbols">
          <t>Managed methods: These methods rely on pre-established trust relations and authentication credentials. They typically utilize centralized servers for authentication, although several such servers may join to form a distributed federation. Example methods include Extensible Authentication Protocol (EAP) <xref target="RFC3748"/>, Generic Bootstrapping Architecture (GBA) <xref target="TS33220"/>, Kerberos <xref target="RFC4120"/>, Bootstrapping Remote Secure Key Infrastructures (BRSKI) and vendor certificates <xref target="vendorcert"/>. EAP Transport Layer Security EAP-TLS <xref target="I-D.ietf-emu-eap-tls13"/> for instance assumes that both the client and the server have certificates to authenticate each other. Based on this authentication, the server authorizes the client for network access. The Eduroam federation <xref target="RFC7593"/> uses a network of such servers to support roaming clients.</t>
          <t>Opportunistic and leap-of-faith methods: In these methods, rather than verifying the initial authentication, the continuity of the initial identity or connection is verified. Some of these methods assume that the attacker is not present during the initial setup. Example methods include Secure Neighbor Discovery (SEND) <xref target="RFC3971"/> and Cryptographically Generated Addresses (CGA) <xref target="RFC3972"/>, Wifi Protected Setup (WPS) push button <xref target="wps"/>, and Secure Shell (SSH) <xref target="RFC4253"/>.</t>
          <t>Peer-to-Peer (P2P) and Ad-hoc methods: These bootstrapping methods do not rely on any pre-established credentials. Instead, the bootstrapping protocol results in credentials being established for subsequent secure communication. Such bootstrapping methods typically perform an unauthenticated Diffie-Hellman exchange <xref target="dh"/> and then use an out-of-band (OOB) communication channel to prevent a man-in-the-middle attack (MitM). Various secure device pairing protocols fall in this category. Based on how the OOB channel is used, the P2P methods can be further classified into two sub categories:
            <list style="symbols">
              <t>Key derivation: Contextual information received over the OOB channel is used for shared key derivation. For example, <xref target="proximate"/> relies on the common radio environment of the devices being paired to derive the shared secret which would then be used for secure communication.</t>
              <t>Key confirmation: A Diffie-Hellman key exchange occurs over the insecure network and the established key is used to authenticate with the help of the OOB channel. For example, Bluetooth simple pairing <xref target="SimplePairing"/> use the OOB channel to ask the user to compare pins and approve the completed exchange.</t>
            </list>
          </t>
          <t>Hybrid methods: Most deployed methods are hybrid and use components from both managed and ad-hoc methods. For instance, central management may be used for devices after they have been registered with the server using ad-hoc registration methods.</t>
        </list>
      </t>
      <t>It is important to note here that categorization of different methods is not always easy or clear. For example, all the opportunistic and leap-of-faith methods become managed methods after the initial vulnerability window. The choice of bootstrapping method used for devices depends heavily on the business case. Questions that may govern the choice include: What third parties are available? Who wants to retain control or avoid work? In each category, there are many different methods of secure bootstrapping available. The choice of the method may also be governed by the type of device being bootstrapped.</t>
    </section>
    <section title="IoT Device Bootstrapping Methods" anchor="categorization">
      <t>In this section we look at additional bootstrapping protocols for IoT devices which are not covered in <xref target="usage"/>. Protocols already covered in <xref target="usage"/> however are mentioned in their respective classes. This list is non-exhaustive.</t>
      <section anchor="managed" title="Managed Methods">
        <t>EAP-TLS is a widely used EAP method for network access authentication <xref target="I-D.ietf-emu-eap-tls13"/>. It requires certificate-based mutual authentication and a public key infrastructure. The ZigBee Alliance has specified an IPv6 stack for IEEE 802.15.4 <xref target="IEEE802.15.4"/> devices used in smart meters developed primarily for SEP 2.0 (Smart Energy Profile) application layer traffic <xref target="SEP2.0"/>. The ZigBee IP stack uses EAP-TLS for secure bootstrapping of devices.</t>
        <t>EAP-PSK <xref target="RFC4764"/> is another EAP method that realizes mutual authentication and session key derivation using a Pre-Shared Key (PSK). Given the light-weight nature of EAP-PSK, it can be suitable for resource-constrained devices. However, secure distribution of a large number of PSKs can be challenging.</t>
        <t>CoAP-EAP <xref target="I-D.marin-ace-wg-coap-eap"/> defines a bootstrapping service for IoT. The authors propose transporting EAP over CoAP <xref target="RFC7252"/> for the constrained link, and communication with AAA infrastructures in the non-constrained link. While the draft discusses the use of EAP-PSK, the authors claim that they are specifying a new EAP lower layer and any EAP method which results in generation is suitable.</t>
        <t>Protocol for Carrying Authentication for Network Access (PANA) <xref target="RFC5191"/> is a network layer protocol with which a node can authenticate itself to gain access to the network. PANA does not define a new authentication protocol and rather uses EAP over User Datagram Protocol (UDP) for authentication.</t>
        <t>Colin O'Flynn <xref target="I-D.oflynn-core-bootstrapping"/> proposes the use of PANA for secure bootstrapping of resource constrained devices. He demonstrates how a 6LowPAN Border Router (PANA Authentication Agent (PAA)) can authenticate the identity of a joining constrained device (PANA Client). Once the constrained device has been successfully authenticated, the border router can also provide network and security parameters to the joining device.</t>
        <t>Hernandez-Ramos et al. <xref target="panaiot"/> also use EAP-TLS over PANA for secure bootstrapping of smart objects. They extend their bootstrapping scheme for configuring additional keys that are used for secure group communication.</t>
        
        <t>Generic Bootstrapping Architecture (GBA) is another bootstrapping method that falls in centralized category. GBA is part of the 3GPP standard <xref target="TS33220"/> and is based on 3GPP Authentication and Key Agreement (3GPP AKA).  GBA is an application independent mechanism to provide a client application (running on the User equipment (UE)) and any application server with a shared session secret. This shared session secret can subsequently be used to authenticate and protect the communication between the client application and the application server. GBA authentication is based on the permanent secret shared between the UE's Universal Integrated Circuit Card (UICC), for example SIM card, and the corresponding profile information stored within the cellular network operator's Home Subscriber System (HSS) database. <xref target="I-D.sethi-gba-constrained"/> describes a resource-constrained adaptation of GBA for IoT.</t>
        <t>The four bootstrapping modes specified by the Open Mobile Alliance (OMA) Light-weight M2M (LwM2M) standard require some sort of pre-provisioned credentials on the device. All the four modes are examples of managed bootstrapping methods.</t>
        <t>The Kerberos protocol <xref target="RFC4120"/> is a network authentication protocol that allows several endpoints to communicate over an insecure network. Kerberos relies on a symmetric cryptography scheme and requires a trusted third party, that guarantees the identities of the various actors. It relies on the use of &quot;tickets&quot; for nodes to prove identity to one another in a secure manner. There has been research work on using Kerberos for IoT devices <xref target="kerberosiot"/>.</t>
        <t>It is also important to mention some of the work done on implicit certificates and identity-based cryptographic schemes <xref target="himmo"/>, <xref target="implicit"/>. While these are interesting and novel schemes that can be a part of securely bootstrapping devices, at this point, it is hard to speculate on whether such schemes would see large-scale deployment in the future.</t>
        
        <section anchor="lpwan" title="Bootstrapping in LPWAN">
          <t>Low Power Wide Area Network (LPWAN) encompasses a wide variety of technologies whose link-layer characteristics are severely constrained in comparison to other typical IoT link-layer technologies such as Bluetooth or IEEE 802.15.4. While some LPWAN technologies rely on proprietary bootstrapping solutions which are not publicly accessible, others simply ignore the challenge of bootstrapping and key distribution. In this section, we discuss the bootstrapping methods used by LPWAN technologies covered in <xref target="RFC8376"/>.</t>
          <t>
          <list style="symbols">
            <t>LoRaWAN <xref target="LoRaWAN"/> describes its own protocol to authenticate nodes before allowing them join a LoRaWAN network. This process is called as joining and it is based on pre-shared keys (called AppKeys in the standard). The joining procedure comprises only one exchange (join-request and join-accept) between the joining node and the network server. There are several adaptations to this joining procedure that allow network servers to delegate authentication and authorization to a backend AAA infrastructure <xref target="RFC2904"/>.</t>
            <t>Wi-SUN Alliance Field Area Network (FAN) uses IEEE 802.1X and EAP-TLS for network access authentication. It performs a 4-way handshake to establish a session keys after EAP-TLS authentication.</t>
            <t>NB-IoT relies on the traditional 3GPP mutual authentication scheme based on a shared-secret in the Subscriber Identity Module (SIM) of the device and the mobile operator.</t>
            <t>Sigfox security is based on unique device identifiers and cryptographic keys. As stated in <xref target="RFC8376"/>, although the algorithms and keying details are not publicly available, there is sufficient information to indicate that bootstrapping in Sigfox is based on pre-established credentials between the device and the Sigfox network.</t>
          </list>
          </t>
          <t>From the above, it is clear that all LPWAN technologies rely on pre-provisioned credentials for authentication between a new device and the network. Thus, all of them can be categorized as managed bootstrapping methods.</t>
        </section>
      </section>
      <section anchor="p2p" title="Peer-to-Peer or Ad-hoc Methods">
        <t>While managed methods are viable for many IoT devices, they may not be suitable or desirable in all scenarios. All the managed methods assume that some credentials are provisioned into the device. These credentials may be in the device micro-controller or in a replaceable smart card such as a SIM card. The methods also sometimes assume that the manufacturer embeds these credentials during the device manufacture on the factory floor. However, in many cases the manufacturer may not have sufficient incentive to do this. In other scenarios, it may be hard to completely trust and rely on the device manufacturer to securely perform this task. Therefore, many times, P2P or Ad-hoc methods of bootstrapping are used. We discuss a few example next.</t>
        <t>P2P or ad-hoc bootstrapping methods are used for establishing keys and credential information for secure communication without any pre-provisioned information. These bootstrapping mechanisms typically rely on an out-of-band (OOB) channel in order to prevent man-in-the-middle (MitM) attacks. P2P and ad-hoc methods have typically been used for securely pairing personal computing devices such as smart phones. <xref target="devicepairing"/> provides a survey of such secure device pairing methods. Many original pairing schemes required the user to enter the same key string or authentication code to both devices or to compare and approve codes displayed by the devices. While these methods can provide reasonable security, they require user interaction that is relatively unnatural and often considered a nuisance. Thus, there is ongoing research for more natural ways of pairing devices. To reduce the amount of user-interaction required in the pairing process, several proposals use contextual or location-dependent information, or natural user input such as sound or movement, for device pairing <xref target="proximate"/>.</t>
        <t>The local association created between two devices may later be used for connecting/introducing one of the devices to a centralized server. Such methods would however be classified as hybrids.</t>
        <t>EAP-NOOB <xref target="I-D.ietf-emu-eap-noob"/> is an example of P2P and ad-hoc bootstrapping method that establishes a security association between an IoT device (node) and an online server (unlike pairing two devices for local connections over WiFi or Bluetooth).</t>   
        <t>Thread Group commissioning <xref target="threadcommissioning"/> introduces a two phased process i.e. Petitioning and Joining. Entities involved are leader, joiner, commissioner, joiner router and border router. Leader is the first device in Thread network that must be commissioned using out-of-band process and is used to inject correct user generated Commissioning Credentials (can be changed later) into Thread Network. Joiner is the node that intends to get authenticated and authorized on Thread Network. Commissioner is either within the Thread Network (Native) or connected with Thread Network via a WLAN (External).</t>
        <t>Under some topologies, Joiner Router and Border Router facilitate the Joiner node to reach Native and External Commissioner, respectively. Petitioning begins before Joining process and is used to grant sole commissioning authority to a Commissioner. After an authorized Commissioner is designated, eligible thread devices can join network. Pair-wise key is shared between Commissioner and Joiner, network parameters (such as network name, security policy, etc.,) are sent out securely (using pair-wise key) by Joiner Router to Joiner for letting Joiner to join the Thread Network. Entities involved in Joining process depends on system topology i.e. location of Commissioner and Joiner. Thread networks only operate using IPv6. Thread devices can devise GUAs (Global Unicast Addresses) <xref target="RFC4291"/>. Provision also exist via Border Router, for Thread device to acquire individual global address by means of DHCPv6 or using SLAAC (Stateless Address Autoconfiguration) address derived with advertised network prefix.</t>
      </section>
      <section anchor="leap" title="Leap-of-faith/Opportunistic Methods">
        <t>Bergmann et al. <xref target="simplekey"/> develop a secure bootstrapping mechanism that does not rely on pre-provisioned credentials using resurrecting-duckling imprinting scheme. Their bootstrapping protocol involves three distinct phases: discover (the duckling node searches for network nodes that can act as mother node), imprint (the mother node imprints a shared secret establishing a secure channel once a positive response is received for the imprinting request) and configure (additional configuration information such as network prefix and default gateway are configured). In this model for bootstrapping, a small initial vulnerability window is acceptable and can be mitigated using techniques such as a Faraday Cage (securing the communication physically) to protect the environment of the mother and duck nodes, though this may be inconvenient for the user.</t>
      </section>
      <section anchor="hybrid" title="Hybrid Methods">        
        <t><xref target="RFC7250"/> defines how raw public keys can be used for mutual authentication of devices and servers. The extension specified in <xref target="RFC7250"/> simplifies client_certificate_type and server_certificate_type to carry only SubjectPublicKeyInfo structure with the raw public key instead of many other parameters found in typical X.509 version 3 certificates. Each side validates the keys received with pre-configured values stored. Using raw public keys for bootstrapping can be seen as a hybrid method. This is because it generally requires an out-of-band (OOB) step (P2P/Ad-hoc) where the raw public keys <xref target="RFC7250"/> are provided to the authenticating entities, after which the actual authentication occurs online (managed). CoAP already provides support for using raw public keys (see Section 9.1.3.2. of <xref target="RFC7252"/>)</t>
      </section>
    </section>
    <section title="Security Considerations">
      <t>This draft does not take any posture on the security properties of the different bootstrapping protocols discussed. Specific security considerations of bootstrapping protocols are present in the respective specifications.</t>

      <t>Nonetheless, we briefly discuss some important security aspects which are not fully explored in various specifications.</t>

      <t>Firstly, an IoT system may deal with authorization for resources and services separately from bootstrapping and authentication in terms of timing as well as protocols. As an example, two resource-constrained devices A and B may perform mutual authentication using credentials provided by an offline third-party X before device A obtains authorization for running a particular application on device B from an online third-party Y. In some cases, authentication and authorization maybe tightly coupled, e.g., successful authentication also means successful authorization.</t>
      
      <t>Secondly, re-bootstrapping of IoT devices may be required since keys have limited lifetimes and devices may be lost or resold. Protocols and systems must have adequate provisions for revocation and re-bootstrapping. Re-bootstrapping must be as secure as the initial bootstrapping regardless of whether this re-bootstrapping is done manually or automatically over the network.</t>

      <t>Lastly, some IoT networks use a common group key for multicast and broadcast traffic. As the number of devices in a network increase over time, a common group key may not be scalable and the same network may need to be split into separate groups with different keys. Bootstrapping and provisioning protocols may need appropriate mechanisms for identifying and distributing keys to the current member devices of each group.</t>
    </section>
    <section title="IANA Considerations">
      <t>There are no IANA considerations for this document.</t>
    </section>
    <section title="Acknowledgements">
      <t>We would like to thank Tuomas Aura, Hannes Tschofenig, and Michael Richardson for providing extensive feedback as well as Rafa Marin-Lopez for his support.</t>
    </section>
  </middle>
  <back>
    <references title="Informative References">
      <?rfc include='reference.RFC.2119'?>
      <?rfc include='reference.RFC.2904'?>
      <?rfc include='reference.RFC.4291'?>
      <?rfc include='reference.RFC.3748'?>
      <?rfc include='reference.RFC.3971'?>
      <?rfc include='reference.RFC.3972'?>
      <?rfc include='reference.RFC.4120'?>
      <?rfc include='reference.RFC.4253'?>
      <?rfc include='reference.RFC.4764'?>
      <?rfc include='reference.RFC.5191'?>
      <?rfc include='reference.RFC.5272'?>
      <?rfc include='reference.RFC.6241'?>
      <?rfc include='reference.RFC.7030'?>
      <?rfc include='reference.RFC.7228'?>
      <?rfc include='reference.RFC.7250'?>
      <?rfc include='reference.RFC.7252'?>
      <?rfc include='reference.RFC.7230'?>
      <?rfc include='reference.RFC.7593'?>
      <?rfc include='reference.RFC.8040'?>
      <?rfc include='reference.RFC.8174'?>
      <?rfc include='reference.RFC.8366'?>
      <?rfc include='reference.RFC.8376'?>
      <?rfc include='reference.RFC.8572'?>
      <?rfc include='reference.RFC.8949'?>

      <reference anchor="simpleconn" target="https://www.wi-fi.org/download.php?file=/sites/default/files/private/Wi-Fi_Simple_Configuration_Technical_Specification_v2.0.7.pdf">
        <front>
          <title>Wi-Fi Simple Configuration</title>
          <author fullname="" surname="Specifictaion Version 2.0.7">
            <organization>Wi-Fi Alliance</organization>
          </author>
          <date month="" year="2019"/>
        </front>
        <seriesInfo name="Wi-Fi Alliance" value=""/>
      </reference>      

      <reference anchor="Sethi14" target="http://dx.doi.org/10.1145/2632048.2632049">
        <front>
          <title>Secure Bootstrapping of Cloud-Managed Ubiquitous Displays</title>
          <author initials="M." surname="Sethi" fullname="Mohit Sethi">
            <organization>Ericsson</organization>
          </author>
          <author initials="E." surname="Oat" fullname="Elena Oat">
            <organization>Aalto University</organization>
          </author>
          <author initials="M." surname="Di Francesco" fullname="Mario Di Francesco">
            <organization>Aalto University</organization>
          </author>
          <author initials="T." surname="Aura" fullname="Tuomas Aura">
            <organization>Aalto University</organization>
          </author>
          <date month="September" year="2014" />
        </front>
        <seriesInfo name="Proceedings of ACM International Joint Conference on Pervasive and Ubiquitous Computing (UbiComp 2014), pp. 739-750, Seattle, USA" value="" />
      </reference>

      <reference anchor="dpp" target="https://www.wi-fi.org/download.php?file=/sites/default/files/private/Device_Provisioning_Protocol_Specification_v1.1_1.pdf">
        <front>
          <title>Wi-Fi Device Provisioning Protocol (DPP)</title>
          <author fullname="" surname="Specifictaion version 1.1">
            <organization>Wi-Fi Alliance</organization>
          </author>
          <date month="" year="2018"/>
        </front>
        <seriesInfo name="Wi-Fi Alliance" value=""/>
      </reference>

      <reference anchor="SimplePairing">
        <front>
          <title>Simple pairing whitepaper</title>
          <author>
            <organization>Bluetooth, SIG</organization>
          </author>
          <date year="2007"/>
        </front>
        <seriesInfo name=" Technical report" value=""/>
      </reference>
      <reference anchor="IEEE802.15.4" target="http://standards.ieee.org/findstds/standard/802.15.4-2015.html">
        <front>
          <title>IEEE Std. 802.15.4-2015</title>
          <author fullname="" surname="IEEE Standard">
            <organization/>
          </author>
          <date month="April" year="2016"/>
        </front>
      </reference>
      <reference anchor="LoRaWAN" target="https://www.lora-alliance.org/portals/0/specs/LoRaWAN%20Specification%201R0.pdf">
        <front>
          <title>LoRa Specification V1.0</title>
          <author initials="N." surname="Sornin"/>
          <author initials="M." surname="Luis"/>
          <author initials="T." surname="Eirich"/>
          <author initials="T." surname="Kramp"/>
          <date month="January" year="2015"/>
        </front>
      </reference>
      <reference anchor="wps">
        <front>
          <title>Wi-fi protected setup</title>
          <author fullname="" surname="IEEE Standard">
            <organization>Wi-Fi Alliance</organization>
          </author>
          <date month="" year="2007"/>
        </front>
        <seriesInfo name="Wi-Fi Alliance" value=""/>
      </reference>
      <reference anchor="simplekey">
        <front>
          <title>Simple Keys for Simple Smart Objects</title>
          <author initials="O" surname="Bergmann">
            <organization>Universitat Bremen TZI</organization>
          </author>
          <author initials="S" surname="Gerdes">
            <organization>Universitat Bremen TZI</organization>
          </author>
          <author initials="C" surname="Bormann">
            <organization>Universitat Bremen TZI</organization>
          </author>
          <date month="March" year="2012"/>
        </front>
        <seriesInfo name="Smart Object Security Workshop, IETF 83" value=""/>
      </reference>
      <reference anchor="devicepairing">
        <front>
          <title>Secure Device Pairing: A Survey</title>
          <author initials="S" surname="Mirzadeh"/>
          <author initials="H" surname="Cruickshank"/>
          <author initials="R" surname="Tafazolli"/>
          <date year="2014"/>
        </front>
        <seriesInfo name="IEEE Communications Surveys and Tutorials" value=""/>
        <seriesInfo name="pp." value="17-40"/>
      </reference>
      <reference anchor="TS33220" target="http://www.3gpp.org/DynaReport/33220.htm">
        <front>
          <title>3rd Generation Partnership Project; Technical Specification  Group Services and System Aspects; Generic 
                  Authentication Architecture (GAA); Generic Bootstrapping Architecture (GBA) (Release 14)</title>
          <author>
            <organization>3GPP</organization>
          </author>
          <date day="17" month="December" year="2016"/>
        </front>
      </reference>
      <reference anchor="kerberosiot" target="https://kit.mit.edu/sites/default/files/documents/Kerberos_Internet_of%20Things.pdf">
        <front>
          <title>Kerberos for Internet-of-Things</title>
          <author fullname="Thomas Hardjono" surname="Hardjono">
            <organization>MIT Kerberos and Internet Trust Consortium</organization>
          </author>
          <date month="February" year="2014"/>
        </front>
      </reference>
      <reference anchor="proximate">
        <front>
          <title>Proximate: proximity-based secure pairing using ambient wireless signals.</title>
          <author fullname="Suhas Mathur" surname="Mathur">
            <organization>AT&amp;T Security Research Center, New York</organization>
          </author>
          <author fullname="Robert Miller" surname="Miller">
            <organization>WINLAB, Rutgers University, North Brunswick</organization>
          </author>
          <author fullname="Alexander Varshavsky" surname="Varshavsky">
            <organization>AT&amp;T Labs, Florham Park, NJ</organization>
          </author>
          <author fullname="Wade Trappe" surname="Trappe">
            <organization>WINLAB, Rutgers University, North Brunswick</organization>
          </author>
          <author fullname="Narayan Mandayam" surname="Mandayam">
            <organization>WINLAB, Rutgers University, North Brunswick</organization>
          </author>
          <date month="June" year="2011"/>
        </front>
        <seriesInfo name="Proceedings of MobiSys International Conference" value=""/>
        <seriesInfo name="pp." value="211-224"/>
      </reference>
      <reference anchor="SEP2.0" target="hhttp://www.zigbee.org/non-menu-pages/zigbee-ip-download/">
        <front>
          <title>ZigBee IP Specification</title>
          <author>
            <organization>ZigBee Alliance</organization>
          </author>
          <date month="March" year="2014"/>
        </front>
      </reference>
      <?rfc include='reference.I-D.ietf-anima-bootstrapping-keyinfra'?>
      <?rfc include='reference.I-D.marin-ace-wg-coap-eap'?>
      <?rfc include='reference.I-D.oflynn-core-bootstrapping'?>
      <?rfc include='reference.I-D.ietf-emu-eap-noob'?>
      <?rfc include='reference.I-D.sethi-gba-constrained'?>
      <?rfc include='reference.I-D.ietf-emu-eap-tls13'?>
      <?rfc include='reference.I-D.ietf-ace-coap-est'?>
    
      <reference anchor="iotwork">
        <front>
          <title>IoT@Work bootstrapping architecture Deliverable D2.2</title>
          <author>
            <organization>European Commission FP7</organization>
          </author>
          <date month="June" year="2011"/>
        </front>
      </reference>
      <reference anchor="panaiot">
        <front>
          <title>Dynamic Security Credentials PANA-based Provisioning for IoT Smart Objects</title>
          <author initials="J. L." surname="Hernandez-Ramos">
            <organization>University of Murcia</organization>
          </author>
          <author initials="D. G." surname="Carrillo">
            <organization>University of Murcia</organization>
          </author>
          <author initials="R." surname="Marin-Lopez">
            <organization>University of Murcia</organization>
          </author>
          <author initials="A. F." surname="Skarmeta">
            <organization>University of Murcia</organization>
          </author>
          <date month="" year="2015"/>
        </front>
        <seriesInfo name="2nd World Forum on Internet of Things (WF-IoT)" value=""/>
        <seriesInfo name="IEEE" value=""/>
      </reference>
      <reference anchor="vermillard">
        <front>
          <title>Bootstrapping device security with lightweight M2M</title>
          <author initials="J." surname="Vermillard"/>
          <date month="February" year="2015"/>
        </front>
        <seriesInfo name="Appeared on blog at medium.com" value=""/>
      </reference>
      
      <reference anchor="vendorcert">
        <front>
          <title>Standard for local and metropolitan area networks - secure device identity</title>
          <author>
            <organization>IEEE std. 802.1ar-2009</organization>
          </author>
          <date month="December" year="2009"/>
        </front>
      </reference>
      <reference anchor="dh">
        <front>
          <title>New directions in cryptography</title>
          <author initials="W." surname="Diffie"/>
          <author initials="M.E." surname="Hellman"/>
          <date month="" year="1976"/>
        </front>
        <seriesInfo name="IEEE Transactions on Information Theory" value=""/>
        <seriesInfo name="vol." value="22"/>
        <seriesInfo name="no." value="6"/>
        <seriesInfo name="pp." value="644-654"/>
      </reference>
      <reference anchor="implicit">
        <front>
          <title>Pauthkey: A pervasive authentication protocol and key establishment scheme for wireless sensor networks in distributed iot applications</title>
          <author initials="P." surname="Porambage">
            <organization>University of Oulu</organization>
          </author>
          <author initials="C." surname="Schmitt">
            <organization>University of Zurich</organization>
          </author>
          <author initials="P." surname="Kumar">
            <organization>University of Oulu</organization>
          </author>
          <author initials="A." surname="Gurtov">
            <organization>University of Oulu</organization>
          </author>
          <author initials="M." surname="Ylianttila">
            <organization>University of Oulu</organization>
          </author>
          <date month="" year="2014"/>
        </front>
        <seriesInfo name="International Journal of Distributed Sensor Networks" value=""/>
        <seriesInfo name="Hindawi Publishing Corporation" value=""/>
      </reference>
      <reference anchor="himmo" target="https://eprint.iacr.org/2014/1008">
        <front>
          <title>DTLS-HIMMO: Efficiently Securing a Post-Quantum World with a Fully-Collusion Resistant KPS</title>
          <author initials="O." surname="Garcia-Morchon">
            <organization>Philips Group Innovation</organization>
          </author>
          <author initials="R." surname="Rietman">
            <organization>Philips Group Innovation</organization>
          </author>
          <author initials="S." surname="Sharma">
            <organization>Philips Group Innovation</organization>
          </author>
          <author initials="L." surname="Tolhuizen">
            <organization>Philips Group Innovation</organization>
          </author>
          <author initials="J. L." surname="Torre-Arce">
            <organization>Philips Group Innovation</organization>
          </author>
          <date month="December" year="2014"/>
        </front>
        <seriesInfo name="Submitted to NIST Workshop on Cybersecurity in a Post-Quantum World" value=""/>
        <seriesInfo name="version" value="20141225:065757"/>
      </reference>
      <reference anchor="oma" target="www.openmobilealliance.org/release/LightweightM2M/V1_2-20201110-A/OMA-TS-LightweightM2M_Core-V1_2-20201110-A.pdf">
        <front>
          <title>Lightweight Machine to Machine Technical Specification: Core</title>
          <author fullname="" surname="Approved Version: 1.2">
            <organization>Open Mobile Alliance</organization>
          </author>
          <date month="November" year="2020"/>
        </front>
        <seriesInfo name="Open Mobile Alliance" value=""/>
      </reference>
      <reference anchor="ocf" target="https://openconnectivity.org/specs/OCF_Security_Specification_v1.0.0.pdf">
        <front>
          <title>OCF Security Specification</title>
          <author fullname="" surname="Version: 1.0.0">
            <organization>Open Connectivity Foundation</organization>
          </author>
          <date month="June" year="2017"/>
        </front>
        <seriesInfo name="Open Connectivitiy Foundation" value=""/>
      </reference>
  
      <reference anchor="threadcommissioning">
        <front>
          <title>Thread Commissioning</title>
          <author fullname="" surname="White Paper">
            <organization>Thread Group</organization>
          </author>
          <date month="" year="2015"/>
        </front>
        <seriesInfo name="Thread Group, Inc." value=""/>
      </reference>
      <reference anchor="fidospec" target="https://fidoalliance.org/specs/internet-of-things/FIDO-IoT-spec.html">
      <front>
          <title>FIDO IoT Spec</title>
          <author fullname="" surname="Version: 1.0">
            <organization>Fast Identity Online Alliance</organization>
          </author>
          <date month="August" year="2020"/>
        </front>
      <seriesInfo name="Fido Alliance" value=""/>
      </reference>
    </references>
  </back>
</rfc>