<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.36 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY I-D.ietf-6lo-privacy-considerations SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6lo-privacy-considerations.xml">
<!ENTITY RFC7030 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7030.xml">
<!ENTITY RFC7228 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7228.xml">
<!ENTITY RFC7250 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7250.xml">
<!ENTITY I-D.ietf-anima-bootstrapping-keyinfra SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-anima-bootstrapping-keyinfra.xml">
<!ENTITY I-D.ietf-6tisch-minimal SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6tisch-minimal.xml">
<!ENTITY I-D.ietf-anima-grasp SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-anima-grasp.xml">
<!ENTITY I-D.ietf-6tisch-minimal-security SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6tisch-minimal-security.xml">
<!ENTITY I-D.richardson-anima-6join-discovery SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.richardson-anima-6join-discovery.xml">
<!ENTITY I-D.richardson-6tisch-minimal-rekey SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.richardson-6tisch-minimal-rekey.xml">
<!ENTITY I-D.ietf-core-object-security SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-object-security.xml">
<!ENTITY I-D.ietf-6tisch-terminology SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-6tisch-terminology.xml">
<!ENTITY I-D.ietf-netconf-keystore SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netconf-keystore.xml">
<!ENTITY I-D.ietf-core-comi SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-comi.xml">
<!ENTITY I-D.ietf-ace-cbor-web-token SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-cbor-web-token.xml">
<!ENTITY I-D.vanderstok-ace-coap-est SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.vanderstok-ace-coap-est.xml">
<!ENTITY I-D.ietf-core-yang-cbor SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-yang-cbor.xml">
<!ENTITY RFC7217 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7217.xml">
<!ENTITY I-D.richardson-6tisch-join-enhanced-beacon SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.richardson-6tisch-join-enhanced-beacon.xml">
<!ENTITY RFC6775 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6775.xml">
<!ENTITY RFC7252 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7252.xml">
<!ENTITY I-D.selander-ace-cose-ecdhe SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.selander-ace-cose-ecdhe.xml">
<!ENTITY I-D.ietf-anima-voucher SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-anima-voucher.xml">
<!ENTITY RFC7959 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7959.xml">
<!ENTITY RFC4655 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4655.xml">
<!ENTITY RFC7554 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7554.xml">
<!ENTITY RFC4191 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4191.xml">
<!ENTITY RFC5056 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5056.xml">
<!ENTITY RFC7641 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7641.xml">
<!ENTITY RFC7731 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7731.xml">
<!ENTITY I-D.ietf-roll-useofrplinfo SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-roll-useofrplinfo.xml">
<!ENTITY I-D.ietf-ace-actors SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-actors.xml">
<!ENTITY I-D.ietf-core-sid SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-core-sid.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-6tisch-dtsecurity-zerotouch-join-00" category="info">

  <front>
    <title>6tisch Zero-Touch Secure Join protocol</title>

    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="B." surname="Damm" fullname="Benjamin Damm">
      <organization>Silver Spring Networks</organization>
      <address>
        <email>bdamm@ssni.com</email>
      </address>
    </author>

    <date year="2017" month="August" day="28"/>

    <area>Internet</area>
    <workgroup>6tisch Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document describes a zero-touch mechanism to enroll a new device (the "pledge")
into a IEEE802.15.4 TSCH network using the 6tisch signaling mechanisms.  The resulting
device will obtain a domain specific credential that can be used with either 802.15.9 per-host pair
keying protocols, or to obtain the network-wide key from a coordinator.  The mechanism
describe her is an augmentation to the one-touch mechanism described in <xref target="I-D.ietf-6tisch-minimal-security"/>.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Enrollment of new nodes into LLNs present unique challenges.
The constrained nodes has no user interfaces, and even if they did,
configuring thousands of such nodes manually is undesireable from a human
resources issue, as well as the difficulty in getting consistent results.</t>

<t>This document is about a standard way to introduce new nodes into a 6tisch
network that does not involve any direct manipulation of the nodes themselves.
This act has been called "zero-touch" provisioning, and it does not occur by
chance, but requires coordination between the manufacturer of the node, the
service operator running the LLN, and the installers actually taking the
devices out of the shipping boxes.</t>

<t>This document is a constrained profile of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.  The above
document/protocol is referred by by it's acronym: BRSKI. The pronounciation of which is
"brew-ski", a common north american slang for beer with a pseudo-polish ending.</t>

<t>This document follows the same structure as it's parent in order to emphasize the similarities,
but specializes a number of things to constrained networks of constrained devices.
Like ANIMA's BRSKI, the networks which are in scope for this protocol are deployed by a
professional operator.  The deterministic mechanisms which have been designed into 6tisch
have been created to satisfy the operational needs of industrial settings.</t>

<t>This document builds upon the "one-touch" provisioning described in <xref target="I-D.ietf-6tisch-minimal-security"/>,
reusing the OSCOAP Join Request mechanism when appropriate.
In addition, it uses the CoAP adaption of EST defined in <xref target="I-D.vanderstok-ace-coap-est"/>
in an identical way.</t>

<t>Otherwise, this document follows BRSKI with the following high-level changes:</t>

<t><list style="symbols">
  <t>HTTP is replaced with CoAP.</t>
  <t>TLS (HTTPS) is replaced with either DTLS+CoAP, or EDHOC/OSCOAP+CoAP</t>
  <t>the domain-registrar anchor certificate is replaced with a Raw Public Key (RPK) using <xref target="RFC7250"/>.</t>
  <t>the PKCS7 signed JSON voucher format is replaced with CWT</t>
  <t>the GRASP discovery mechanism for the Proxy is replaced with an announcement in the Enhanced Beacon <xref target="I-D.richardson-6tisch-join-enhanced-beacon"/></t>
  <t>the TCP circuit proxy mechanism is not used.  The IPIP mechanism if mandatory to implement when deployed with DTLS, while the CoAP based stateless proxy mechanism is used for OSCOAP/EDHOC.</t>
  <t>real time clocks are assumed to be impossible, so expiry dates in ownership vouchers are never used</t>
  <t>nonce-full vouchers are encouraged, but off-line nonce-less operation is also supported</t>
</list></t>

<t>802.1AR Client certificates are retained, but optionally are specified by reference rather than value.</t>

<t>It is expected that the back-end network operator infrastructure would be
able to bootstrap ANIMA BRSKI-type devices over ethernet, while also being able
bootstrap 6tisch devices over 802.15.4 with few changes.</t>

<section anchor="Terminology" title="Terminology">

<t>In this document, the key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119
<xref target="RFC2119"/> and indicate requirement levels for compliant STuPiD
implementations.</t>

<t>The reader is expected to be familiar with the terms and concepts defined in
<xref target="I-D.ietf-6tisch-terminology"/>, <xref target="RFC7252"/>,
<xref target="I-D.ietf-core-object-security"/>, and
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.  The following terms are
imported: drop ship, imprint, enrollment, pledge, join proxy, ownership
voucher, join registrar/coordinator.  The following terms are repeated here for readability,
but this document is not authoritative for their definition:</t>

<t><list style="hanging">
  <t hangText='pledge'>
  the prospective device, which has the identity provided to
at the factory.  Neither the device nor the network knows if the
device yet knows if this device belongs with this network.</t>
  <t hangText='Joined Node'>
  the prospective device, after having completing the join process, often just called a Node.</t>
  <t hangText='Join Proxy (JP):'>
  a stateless relay that provides connectivity between the pledge
and the join registrar/coordinator.</t>
  <t hangText='Join Registrar/Coordinator (JRC):'>
  central entity responsible for authentication and authorization of joining nodes.</t>
  <t hangText='Audit Token'>
  A signed token from the manufacturer authorized signing
authority indicating that the bootstrapping event has been
successfully logged.  This has been referred to as an
"authorization token" indicating that it authorizes bootstrapping
to proceed.</t>
  <t hangText='Ownership Voucher'>
  A signed voucher from the vendor vouching that a specific domain "owns"
the new entity as defined in <xref target="I-D.ietf-anima-voucher"/>.</t>
  <t hangText='MIC'>
  manufacturer installed certificate. An <xref target="ieee802-1AR"/> identity. Not to be confused with a (cryptographic) "Message Integrity Check"</t>
</list></t>

</section>
<section anchor="other-bootstrapping-approaches" title="Other Bootstrapping Approaches">

<t>BRSKI describes a more general, more flexible approach for bootstrapping devices into an ISP or Enterprise
network.</t>

<t><xref target="I-D.ietf-6tisch-minimal-security"/> provides an extremely streamlined approach to enrolling from
hundreds to thousands of devices into a network, provided that a unique secret key can be installed
in each device.</t>

</section>
<section anchor="scope-of-solution" title="Scope of solution">

<t>The solution described in this document is appropriate to enrolling between hundreds to hundreds of
thousands of diverse devices into a network without any prior contact with the devices.  The devices
could be shipped by the manufacturer directly to the customer site without ever being seen by the
operator of the network.  As described in BRSKI, in the audit-mode of operation the device will be claimed
by the first network that sees it. In the tracked owner mode of operation, sales channel integration
provides a strong connection that the operator of the network is the legitimate owner of the device.</t>

</section>
</section>
<section anchor="architectural-overview" title="Architectural Overview">

<t>Section 2 of BRSKI has a diagram with all of the components shown together.
There are no significant changes to the diagram.</t>

<t>The use of a circuit proxy is not mandated. Instead the IPIP mechanism described in appendix C
("IPIP Join Proxy mechanism") SHOULD be be used instead as it supports both DTLS, EDHOC and OSCOAP protocols.
The CoAP proxy mechanism MAY be implemented instead: the decision depends upon the capabilities of
the Registrar and the proxy.  A mechanism is included for the Registrar to announce it's capabilities (XXX).</t>

<section anchor="secure-imprinting-using-vouchers" title="Secure Imprinting using Vouchers">

<t>As in BRSKI, the format and cryptographic mechansim of vouchers is described in detail
in <xref target="I-D.ietf-anima-voucher"/>.  As described in section YYY, the physical format for vouchers
in this document differs from that of BRSKI, in that it uses <xref target="I-D.ietf-ace-cbor-web-token"/>
to encode the voucher and to sign it.</t>

</section>
<section anchor="initial-device-identifier" title="Initial Device Identifier">

<t>The essential component of the zero-touch operation is that the pledge is provisioned
with an 802.1AR (PKIX) certificate installed during the manufacturing process.</t>

<t>It is expected that constrained devices will use a signature algorithm corresponding to the
hardware acceleration that they have, if they have any.  The anticipated algorithms are
the ECDSA P-256 (secp256p1) as SHOULD-, while newer devices SHOLD+ begin to appear using
EdDSA curves using the 25519 curves. (EDNOTE details here)</t>

<t>There are a number of simplications detailed later on in this document designed to eliminate the
need for an ASN.1 parser in the pledge.</t>

<t>The pledge should consider it's 802.1AR certificate to be an opaque blob of bytes, to be inserted into
protocols at appropriate places.  The pledge SHOULD have access to it's public and private keys in
the most useable native format for computation.</t>

<t>The pledge MUST have the public key of the MASA built in a manufacturer time.  This is a seemingly
identical requirement as for BRSKI, but rather than being an abstract trust anchor that can be augmented
with a certificate chain, the pledge MUST be provided with the Raw Public Key that the MASA will use to
sign vouchers for that pledge.</t>

<t>There are a number of security concerns with use of a single MASA signing key, and section <xref target="masaprivatekey"/> addresses some of them with some operational suggestions.</t>

<t>BRSKI places some clear requirements upon the contents of the IDevID, but leaves the exact
origin of the voucher serial-number open.  This document restricts the process to being
the hwSerialNum OCTET STRING.  As CWT can handle binary formats, no base64 encoding is
necessary.</t>

<t>The use of the MASA-URL extension is encouraged if the certificate is sent at all.</t>

<t>[[EDNOTE here belongs text about sending only a reference to the IDevID rather than the
entire certificate]]</t>

</section>
<section anchor="protocol-flow" title="Protocol Flow">

<t>The diagram from BRSKI is reproduced with some edits:</t>

<figure><artwork><![CDATA[
   +--------+         +---------+    +------------+     +------------+
   | Pledge |         | IPIP    |    | Domain     |     | Vendor     |
   |        |         | Proxy   |    | Registrar  |     | Service    |
   |        |         |         |    |            |     | (Internet  |
   +--------+         +---------+    +------------+     +------------+
     |                     |                   |                    |
     |<-RFC4862 IPv6 adr   |                   |                    |
     |                     |                   |                    |
     |<--------------------|                   |                    |
     | Enhanced Beacon     |                   |                    |
     |   periodic broadcast|                   |                    |
     |                     |                   |                    |
     |<------------------->C<----------------->|                    |
     |             DTLS via the IPIP    Proxy  |                    |
     |<--Registrar DTLS server authentication--|                    |
   [PROVISIONAL accept of server cert]         |                    |
     P---X.509 client authentication---------->|                    |
     P                     |                   |                    |
     P---Voucher Request (include nonce)------>|                    |
     P                     |                   |                    |
     P                     |                   |                    |
     P                     |              [accept device?]          |
     P                     |              [contact Vendor]          |
     P                     |                   |--Pledge ID-------->|
     P                     |                   |--Domain ID-------->|
     P                     |                   |--nonce------------>|
     P                     |                   |     [extract DomainID]
     P                     |                   |                    |
     P                     |                   |     [update audit log]
     P                     |                   |                    |
     P                     |                   |                    |
     P                     |                   |                    |
     P                     |                   |                    |
     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 |                    |
     | DTLS session.       |                   |                    |
     |                     |                   |                    |
     |                     |                   |                    |
     |                     |                   |                    |
]]></artwork></figure>

<t>Noteable changes are:</t>

<t><list style="numbers">
  <t>no IPv4 support/options.</t>
  <t>no mDNS steps, 6tisch only uses Enhanced Beacon</t>
  <t>nonce-full option is always recommended</t>
</list></t>

</section>
<section anchor="lack-of-realtime-clock" title="Lack of realtime clock">

<t>For the constrained situation it is assumed that devices have no real time clock.
These nodes do have access to a monotonically increasing clock that will not go backwards
in the form of the Absolute Sequence Number.   Synchronization to the ASN is required in
order to transmit/receive data and most nodes will maintain it in hardware.</t>

<t>The heuristic described in BRSKI under this section SHOULD be applied if there
are dates in the CWT format voucher.</t>

<t>Voucher requests SHOULD include a nonce.  For devices intended for off-line deployment,
the vouchers will have been generated in advance and no nonce-ful operation will not be possible.</t>

</section>
<section anchor="cloud-registrar" title="Cloud Registrar">

<t>In 6tisch, the pledge never has network connectivity until it is enrolled, so no alternate
registrar is ever possible.</t>

</section>
</section>
<section anchor="protocol-details" title="Protocol Details">

<t>BRSKI is specified to run over HTTPS. This document respecifies it to run over CoAP with
either DTLS or EDHOC-provided OSCOAP security.  There is an emerging (hybrid) possibility of
DTLS-providing the OSCOAP security, but such a specification does not yet exist.</t>

<t><xref target="I-D.vanderstok-ace-coap-est"/> specifies that CoAP specifies
the use of CoAP Block-Wise Transfer ("Block") <xref target="RFC7959"/> to fragment EST messages at the
application layer.</t>

<t>BRSKI introduces the concept of a provisional state for EST. The same situation
must also be added to DTLS: a situation where the connection is active but the identity of
the Registar has not yet been confirmed.  The DTLS MUST validate that the exchange has
been signed by the Raw Public Key that is presented by the Server, even though there is
as yet no trust in that key.  Such a key is often available through APIs that provide for
channel binding, such as described in <xref target="RFC5056"/>.</t>

<t>As in <xref target="I-D.vanderstok-ace-coap-est"/>, support for Observe CoAP options <xref target="RFC7641"/> with
BRSKI is not supported in the current BRSKI/EST message flows.
Observe options could be used by the server to notify clients about a change in the cacerts
or csr  attributes (resources) and might be an area of future work.</t>

<t>Redirection as described in <xref target="RFC7030"/> section 3.2.1 is NOT supported.</t>

<section anchor="discovery" title="Discovery">

<t>Only IPv6 operations using Link-Local addresses are supported.
Use of a temporary address is NOT encouraged as the critial resource on the
Proxy device is the number of Neighbour Cache Entries that can be used for
untrusted pledge entries.</t>

<section anchor="proxy-discovery-protocol-details" title="Proxy Discovery Protocol Details">

<t>The Proxy is discovered using the enhanced beacon defined in <xref target="I-D.richardson-6tisch-join-enhanced-beacon"/>.</t>

</section>
<section anchor="registrar-discovery-protocol-details" title="Registrar Discovery Protocol Details">

<t>The Registrar is not discovered by the Proxy.  Any device that is expected to be able to operate
as a Registrar MAY be told the address of the Registrar when that device joins the network.
The address MAY be included in the <xref target="I-D.ietf-6tisch-minimal-security"/> Join Response.
If the address is NOT included, then Proxy may assume that the Registrar can be found at the
DODAG root, which is well known in the 6tisch's use of the RPL protocol.</t>

</section>
</section>
<section anchor="pledge-requests-voucher-from-the-registrar" title="Pledge Requests Voucher from the Registrar">

<t>The voucher request and response as defined by BRSKI is modified slightly.
In order to simplify the pledge, the use of a certificate (and chain) for the Registrar is not
supported.  Instead the newly defined pinned-domain-subject-public-key-info must contain
the (raw) public key info for the Registrar.  It MUST be byte for byte identical to that
which is transmitted by the Registrar during the TLS ServerCertificate handshake.</t>

<t>BRSKI permits the voucher request to be signed or unsigned.  This document defines the
voucher request to be unsigned.</t>

<figure><artwork><![CDATA[
/* -*- c -*- */
module ietf-cwt-voucher {
  yang-version 1.1;

  namespace
    "urn:ietf:params:xml:ns:yang:ietf-cwt-voucher";
  prefix "vcwt";

  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";
  }

  organization
   "IETF 6tisch Working Group";

  contact
   "WG Web:   <http://tools.ietf.org/wg/6tisch/>
    WG List:  <mailto:6tisch@ietf.org>
    Author:   Michael Richardson
              <mailto:mcr+ietf@sandelman.ca>";

  description
   "This module defines the format for a voucher, which is produced by
    a pledge's manufacturer or delegate (MASA) to securely assign one
    or more pledges to an 'owner', so that the pledges may establish a
    secure connection to the owner's network infrastructure.

    This version provides a very restricted subset appropriate
    for very constrained devices.
    In particular, it assumes that nonce-ful operation is
    always required, that expiration dates are rather weak, as no
    clocks can be assumed, and that the Registrar is identified
    by a pinned Raw Public Key.

    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.";

  revision "YYYY-MM-DD" {
    description
     "Initial version";
    reference
     "RFC XXXX: Voucher Profile for Constrained Devices";
  }

  // Grouping defined for future usage
  grouping voucher-cwt-grouping {
    description
      "Grouping to allow reuse/extensions in future work.";

    uses v:voucher-artifact-grouping {
      augment "voucher" {
        description "Base the CWT voucher upon the regular one";
        leaf pinned-domain-subject-public-key-info {
          type binary;
          description
            "The pinned-domain-subject replaces the
         pinned-domain-certificate in constrained uses of
         the voucher.  The pinned-domain-public-key-info is the
         Raw Public Key of the Registrar. This field is encoded
         as specified in RFC7250, section 3.
         The ECDSA algorithm MUST be supported.
         The EdDSA algorithm as specified in
         draft-ietf-tls-rfc4492bis-17 SHOULD be supported.
         Support for the DSA algorithm is not recommended.
         Support for the RSA algorithm is a MAY.";
        }
      }
    }
  }
}
]]></artwork></figure>

<t>This definition, translated via the rules in <xref target="I-D.ietf-core-yang-cbor"/> produces the
following CDDL for an unsigned voucher (request):</t>

<figure><artwork><![CDATA[

This is a PLACEHOLDER for a CDDL definition derived from the YANG model.
SID experimental base 60100 is used.

dictionary keys are:
60100      ietf-cwt-voucher
60101      assertion
60102      created-on
60103      domain-cert-revocation-checks
60104      expires-on
60105      idevid-issuer
60106      last-renewal-date
60107      nonce
60108      pinned-domain-cert
60109      pinned-domain-subject-public-key-info
60110      prior-signed-voucher
60111      serial-number




]]></artwork></figure>

</section>
<section anchor="registrar-requests-voucher-from-masa" title="Registrar Requests Voucher from MASA">

<t>There are no change from BRSKI, as this step is between two non-constrained devices.
The format of the voucher is CWT, which implies changes to both the Registrar and the MASA,
but semantically the content is the same.</t>

<t>The manufacturer will know what algorithms are supported by the pledge, and will issue
a 406 (Conflict) error to the Registrar if the Registar's public key format is not
supported by the pledge.</t>

</section>
<section anchor="voucher-response" title="Voucher Response">

<t>The voucher response MUST have an additional header called: "pinned-domain-rpk".</t>

<section anchor="completing-authentication-of-provisional-tls-connection" title="Completing authentication of Provisional TLS connection">

<t>In order to simplify the pledge as much as possible, the voucher response</t>

</section>
</section>
<section anchor="voucher-status-telemetry" title="Voucher Status Telemetry">

<t>XXX</t>

</section>
<section anchor="masa-authorization-log-request" title="MASA authorization log Request">

<t>XXX</t>

<section anchor="masa-authorization-log-response" title="MASA authorization log Response">

<t>XXX</t>

</section>
</section>
<section anchor="est-integration-for-pki-bootstrapping" title="EST Integration for PKI bootstrapping">

<t>XXX</t>

<section anchor="est-distribution-of-ca-certificates" title="EST Distribution of CA Certificates">

<t>XXX</t>

</section>
<section anchor="est-csr-attributes" title="EST CSR Attributes">

<t>XXX</t>

</section>
<section anchor="est-client-certificate-request" title="EST Client Certificate Request">

<t>XXX</t>

</section>
<section anchor="enrollment-status-telemetry" title="Enrollment Status Telemetry">

<t>XXX</t>

</section>
<section anchor="est-over-coap" title="EST over CoAP">

<t>XXX</t>

</section>
</section>
</section>
<section anchor="reduced-security-operational-modes" title="Reduced security operational modes">

<t>XXX</t>

<section anchor="trust-model" title="Trust Model">

<t>XXX</t>

</section>
<section anchor="pledge-security-reductions" title="Pledge security reductions">

<t>XXX</t>

</section>
<section anchor="registrar-security-reductions" title="Registrar security reductions">

<t>XXX</t>

</section>
<section anchor="masa-security-reductions" title="MASA security reductions">

<t>XXX</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>XXX</t>

<section anchor="mime-type-registry" title="MIME-Type Registry">

<t>XXX</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<section anchor="masaprivatekey" title="Security of MASA voucher signing key(s)">

</section>
</section>
<section anchor="privacy-considerations" title="Privacy Considerations">

<t>XXX</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&I-D.ietf-6lo-privacy-considerations;
&RFC7030;
&RFC7228;
&RFC7250;
&I-D.ietf-anima-bootstrapping-keyinfra;
&I-D.ietf-6tisch-minimal;
&I-D.ietf-anima-grasp;
&I-D.ietf-6tisch-minimal-security;
&I-D.richardson-anima-6join-discovery;
&I-D.richardson-6tisch-minimal-rekey;
&I-D.ietf-core-object-security;
&I-D.ietf-6tisch-terminology;
&I-D.ietf-netconf-keystore;
&I-D.ietf-core-comi;
&I-D.ietf-ace-cbor-web-token;
&I-D.vanderstok-ace-coap-est;
&I-D.ietf-core-yang-cbor;
<reference anchor="iec62591" target="https://webstore.iec.ch/publication/24433">
  <front>
    <title>62591:2016 Industrial networks - Wireless communication network and communication profiles - WirelessHART</title>
    <author initials="." surname="IEC">
      <organization></organization>
    </author>
    <date year="2016"/>
  </front>
</reference>
<reference anchor="ieee802-1AR" target="http://standards.ieee.org/findstds/standard/802.1AR-2009.html">
  <front>
    <title>IEEE 802.1AR Secure Device Identifier</title>
    <author initials="." surname="IEEE Standard">
      <organization></organization>
    </author>
    <date year="2009"/>
  </front>
</reference>
<reference anchor="ieee802159" target="http://standards.ieee.org/findstds/standard/802.15.9-2016.html">
  <front>
    <title>802.15.9-2016 - IEEE Approved Draft Recommended Practice for Transport of Key Management Protocol (KMP) Datagrams</title>
    <author initials="." surname="IEEE Standard">
      <organization></organization>
    </author>
    <date year="2016"/>
  </front>
</reference>
<reference anchor="ieee802154" target="http://standards.ieee.org/findstds/standard/802.15.4-2015.html">
  <front>
    <title>802.15.4-2015 - IEEE Standard for Low-Rate Wireless Personal Area Networks (WPANs)</title>
    <author initials="." surname="IEEE Standard">
      <organization></organization>
    </author>
    <date year="2015"/>
  </front>
</reference>
<reference anchor="cullenCiscoPhoneDeploy" target="http://www.lix.polytechnique.fr/hipercom/SmartObjectSecurity/papers/CullenJennings.pdf">
  <front>
    <title>Transitive Trust Enrollment for Constrained Devices</title>
    <author initials="C." surname="Jennings">
      <organization>Cisco</organization>
    </author>
    <date year="2012"/>
  </front>
</reference>
&RFC7217;
&I-D.richardson-6tisch-join-enhanced-beacon;
&RFC6775;
&RFC7252;
&I-D.selander-ace-cose-ecdhe;
&I-D.ietf-anima-voucher;
&RFC7959;


    </references>

    <references title='Informative References'>

&RFC4655;
&RFC7554;
&RFC4191;
&RFC5056;
&RFC7641;
&RFC7731;
&I-D.ietf-roll-useofrplinfo;
&I-D.ietf-ace-actors;
&I-D.ietf-core-sid;
<reference anchor="ISA100" target="http://www.isa100wci.org/Documents/PDF/The-Technology-Behind-ISA100-11a-v-3_pptx">
  <front>
    <title>The Technology Behind the ISA100.11a Standard</title>
    <author >
      <organization></organization>
    </author>
    <date year="2010" month="June" day="15"/>
  </front>
</reference>
<reference anchor="PFS" target="https://en.wikipedia.org/w/index.php?title=Forward_secrecy&amp;oldid=731318899">
  <front>
    <title>Forward Secrecy</title>
    <author initials="." surname="Wikipedia" fullname="Wikipedia">
      <organization></organization>
    </author>
    <date year="2016" month="August" day="01"/>
  </front>
</reference>
<reference anchor="pledge" target="http://dictionary.reference.com/browse/pledge">
  <front>
    <title>Dictionary.com Unabridged</title>
    <author initials="." surname="Dictionary.com" fullname="Dictionary.com">
      <organization></organization>
    </author>
    <date year="2015"/>
  </front>
</reference>
<reference anchor="duckling" target="https://www.cl.cam.ac.uk/~fms27/papers/1999-StajanoAnd-duckling.pdf">
  <front>
    <title>The resurrecting duckling: security issues for ad-hoc wireless networks</title>
    <author initials="F." surname="Stajano" fullname="Frank Stajano">
      <organization></organization>
    </author>
    <author initials="R." surname="Anderson" fullname="Ross Anderson">
      <organization></organization>
    </author>
    <date year="1999"/>
  </front>
</reference>


    </references>


<section anchor="one-touch-assumptions" title="One-Touch Assumptions">

<t>This document interacts with the one-touch solution described in <xref target="I-D.ietf-6tisch-minimal-security"/>.</t>

<section anchor="factory-provided-credentials-if-any" title="Factory provided credentials (if any)">

<t>When a manufacturer installed certificate is provided as the IDevID, it
SHOULD contain a number of fields.  <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>
provides a detailed set of requirements.</t>

<t>A manufacturer unique serial number MUST be provided in the serialNumber
SubjectAltName extension, and MAY be repeated in the Common Name. There are
no sequential or numeric requirements on the serialNumber, it may be any
unique value that the manufacturer wants to use.  The serialNumber SHOULD be
printed on the packaging and/or on the device in a discrete way so that failures
can be physically traced to the relevant device.</t>

<section anchor="credentials-to-be-introduced" title="Credentials to be introduced">

<t>The goal of the bootstrap process is to introduce one or more new locally
relevant credentials:</t>

<t><list style="numbers">
  <t>a certificate signed by a local certificate authority/registrar. This is
the LDevID of <xref target="ieee802-1AR"/>.</t>
  <t>alternatively, a network-wide key to be used to secure L2 traffic.</t>
  <t>alternatively, a network-wide key to be used to authenticate per-peer
keying of L2 traffic using a mechanism such as provided by <xref target="ieee802159"/>.</t>
</list></t>

</section>
</section>
<section anchor="network-assumptions" title="Network Assumptions">

<t>This document is about enrollment of constrained devices <xref target="RFC7228"/> to a
constrained network.  Constrained networks is such as <xref target="ieee802154"/>, and in
particular the time-slotted, channel hopping (tsch) mode, feature low
bandwidths, and limited opportunities to transmit.  A key feature of these
networks is that receivers are only listening at certain times.</t>

<section anchor="security-above-and-below-ip" title="Security above and below IP">

<t>802.15.4 networks have three kinds of layer-2 security:</t>

<t><list style="symbols">
  <t>a network key that is shared with all nodes and is used for unicast and multicast.  The key may be used for privacy, and it may be used in some cases for authentication only (in the case of enhanced beacons).</t>
  <t>a series of network keys that are shared (agreed to) between pairs of nodes (the per-peer key)</t>
  <t>a network key that is shared with all nodes (through a group key management system), and is used for multicast traffic only, while a per-pair key is used for unicast traffic</t>
</list></t>

<t>Setting up the credentials to bootstrap one of these kinds of security,
(or directly configuring the key itself for the first case) is required.
This is the security below the IP layer.</t>

<t>Security is required above the IP layer: there are three aspects which the
credentials in the previous section are to be used.</t>

<t><list style="symbols">
  <t>to provide for secure connection with a Path Computation Element <xref target="RFC4655"/>, or other LLC (see ({RFC7554}} section 3).</t>
  <t>to initiate a connection between a Resource Server (RS) and an application layer Authorization Server (AS and CAS from <xref target="I-D.ietf-ace-actors"/>).</t>
</list></t>

<section anchor="perfect-forward-secrecy" title="Perfect Forward Secrecy">

<t>Perfert Forward Secrecy (PFS) is the property of a protocol such that complete
knowledge of the crypto state (for instance, via a memory dump) at
time X does not imply that data from a disjoint time Y can also be recovered.
(<xref target="PFS"/>).</t>

<t>PFS is important for two reasons: one is that it offers protection against
the compromise of a node.  It does this by changing the keys in a
non-deterministic way. This second property also makes it much easier to
remove a node from the network, as any node which has not participated in
the key changing process will find itself no longer connected.</t>

</section>
</section>
<section anchor="join-network-assumptions" title="Join network assumptions">

<t>The network which the new pledge will connect to will have to have the following properties:</t>

<t><list style="symbols">
  <t>a known PANID.  The PANID 0xXXXX where XXXX is the assigned RFC# for this document is suggested.</t>
  <t>a minimal schedule with some Aloha time.  This is usually in the same slotframe as the Enhanced Beacon, but a pledge MUST listen for an unencrypted Enhanced Beacon to so that it can synchronize.</t>
</list></t>

</section>
<section anchor="number-and-cost-of-round-trips" title="Number and cost of round trips">

<t>TBD.</t>

</section>
<section anchor="size-of-packets-number-of-fragments" title="Size of packets, number of fragments">

</section>
</section>
<section anchor="target-end-state-for-join-process" title="Target end-state for join process">

<t>At the end of the zero-touch join process there will be a symmetric key protected channel
between the Join Registrar/Coordinator and the pledge, now known as a Joined Node.  This
channel may be rekeyed via new exchange of asymmetric exponents (ECDH for instance), authenticated
using the domain specific credentials created during the join process.</t>

<t>This channel is in the form of an OSCOAP protected connection with <xref target="I-D.ietf-core-comi"/> encoded objects.
This document includes definition of a <xref target="I-D.ietf-netconf-keystore"/> compatible objects for
encoding of the relevant <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> objects.</t>

</section>
</section>
<section anchor="join-protocol" title="Join Protocol">

<t>The pledge join protocol state machine is described in <xref target="I-D.ietf-6tisch-minimal-security"/>,
in section XYZ.  The pledge recognizes that it is in zero-touch configuration by the following
situation:</t>

<t><list style="symbols">
  <t>no PSK has been configured for the network in which it has joined.</t>
  <t>the pledge has no locally defined certificate (no LDevID), only an IDevID.</t>
  <t>the network asserts an identity that the pledge does not recognize.</t>
</list></t>

<t>All of these conditions MUST be true.  If any of these are not true, then the pledge has either been
connected to the wrong network, or it has already been bootstrapped into a
different network, and it should wait until it finds that network.</t>

<t>The zero-touch process consists of three stages:</t>

<t><list style="numbers">
  <t>the key agreement process</t>
  <t>the provisional enrollment process</t>
  <t>the key distribution process</t>
</list></t>

<section anchor="key-agreement-process" title="Key Agreement process">

<t>The key agreement process is identical to <xref target="I-D.ietf-6tisch-minimal-security"/>.
The process uses EDHOC with certificates.</t>

<t>The pledge will have to trust the JRC provisionally, as described
in <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>, section 3.1.2, and
in section 4.1.1 of <xref target="RFC7030"/>.</t>

<t>The JRC will be able to validate the IDevID of the pledge using the
manufacturer's CA.</t>

<t>The pledge may not know if it is in a zero-touch or one-touch situation: the
pledge may be able to verify the JRC based upon trust anchors that were
installed at manufacturing time.  In that case, the pledge runs the
simplified one-touch process.</t>

<t>The pledge signals in the EDHOC message_2 if it has accepted the JRC
certificate.  The JRC will in general, not trust the pledge with the network
keys until it has provided the pledge with a voucher.  The pledge will notice
the absence of the provisioning keys.</t>

<t>XXX - there could be some disconnect here.  May need additional signals here.</t>

</section>
<section anchor="provisional-enrollment-process" title="Provisional Enrollment process">

<t>When the pledge determines that it can not verify the certificate of the JRC
using built-in trust anchors, then it enters a provisional state.  In this
state, it keeps the channel created by EDHOC open.</t>

<t>A new EDHOC key derivation is done by the JRC and pledge using a new label,
"6tisch-provisional".</t>

<t>The pledge runs as a passive CoMI server, leaving the JRC to drive the
enrollment process.   The JRC can interrogate the pledge in a variety of
fashions as shown below: the process terminates when the JRC provides
the pledge with an ownership voucher and the pledge leaves the provisional
state.</t>

<t>A typical interaction involves the following requests:</t>

<figure><artwork><![CDATA[
    +-----------+ +----------+ +-----------+ +----------+
    |           | |          | | Circuit   | | New      |
    |  Vendor   | | Registrar| |  Proxy    | | Entity   |
    |  (MASA)   | |          | |           | |          |
    ++----------+ +--+-------+ +-----------+ +----------+
     |               |     GET  request voucher       |
     |               |-------------------------------->
     |               <----------voucher-token---------|
     |/requestvoucher|                                |
     <---------------+                                |
     +--------------->                                |
     |/requestlog    |                                |
     <---------------+                                |
     +--------------->                                |
     |               |        POST voucher            |
     |               |-------------------------------->
     |               <------------2.05 OK ------------+
     |               |                                |
     |               |        POST csr attributes     |
     |               |-------------------------------->
     |               <------------2.05 OK ------------+
     |               |                                |
     |               |        GET  cert request       |
     |               |-------------------------------->
     |     ????      <------------2.05 OK ------------+
     |<--------------|              CSR               |
     |-------------->|                                |
     |               |        POST certificate        |
     |               |-------------------------------->
     |               <------------2.05 OK ------------+
     |               |                                |
]]></artwork></figure>

</section>
<section anchor="key-distribution-process" title="Key Distribution Process">

<t>The key distribution process utilizes the protocol described
<xref target="I-D.richardson-6tisch-minimal-rekey"/>.  The process starts with the initial
key, rather than an actual rekey.</t>

<t>This protocol remains active for subsequent rekey operations.</t>

</section>
</section>
<section anchor="yang-model-for-brski-objects" title="YANG model for BRSKI objects">

<t>module ietf-6tisch-brski {
  yang-version 1.1;</t>

<t>namespace
    "urn:ietf:params:xml:ns:yang:6tisch-brski";
  prefix "ietf6brski";</t>

<t>//import ietf-yang-types { prefix yang; }
  //import ietf-inet-types { prefix inet; }</t>

<t>organization
   "IETF 6tisch Working Group";</t>

<t>contact
   "WG Web:   <eref target="http://tools.ietf.org/wg/6tisch/">http://tools.ietf.org/wg/6tisch/</eref>
    WG List:  <eref target="mailto:6tisch@ietf.org">6tisch@ietf.org</eref>
    Author:   Michael Richardson
              <eref target="mailto:mcr+ietf@sandelman.ca">mcr+ietf@sandelman.ca</eref>";</t>

<t>description
   "This module defines an interface to set and retrieve
    BRSKI objects using CoMI.  This interface is used
    as part of an enrollment process for constrained
    nodes and networks.";</t>

<t>revision "2017-03-01" {
    description
     "Initial version";
    reference
     "RFC XXXX: 6tisch zero-touch bootstrap";
  }</t>

<t>// top-level container
  container ietf6brski {
    leaf requestnonce {
      type binary;
      length XX;    // how big can/should it be?
      mandatory true;
      description "Request Nonce.";
    }
    leaf voucher {
      type binary;
      description "The voucher as a serialized COSE object";
    }</t>

<figure><artwork><![CDATA[
leaf csrattributes {
  type binary;
  description "A list of attributes that MUST be in the CSR";
}

leaf certificaterequest {
  type binary;
  description "A PKIX format Certificate Request";
}

leaf certificate {
  type binary;
  description "The LDevID certificate";
}   } }
]]></artwork></figure>

<section anchor="description-of-pledge-states-in-join-process" title="Description of Pledge States in Join Process">

<t>TBD</t>

</section>
</section>
<section anchor="definition-of-managed-objects-for-zero-touch-bootstrap" title="Definition of managed objects for zero-touch bootstrap">

<t>The following is relevant YANG for use in the bootstrap protocol.
The objects identified are identical in format to the named objects
from <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.</t>

</section>
<section anchor="privacy-considerations-1" title="Privacy Considerations">

<t><xref target="I-D.ietf-6lo-privacy-considerations"/> details a number of privacy
considerations important in Resource Constrained nodes.  There are two
networks and three sets of constrained nodes to consider. They are:
1. the production nodes on the production network.
2. the new pledges, which have yet to enroll, and which are on a join
network.
3. the production nodes which are also acting as proxy nodes.</t>

<section anchor="privacy-considerations-for-production-network" title="Privacy Considerations for Production network">

<t>The details of this are out of scope for this document.</t>

</section>
<section anchor="privacy-considerations-for-new-pledges" title="Privacy Considerations for New Pledges">

<t>New Pledges do not yet receive Router Advertisements with PIO options, and so
configure link-local addresses only based upon layer-2 addresses using the
normal SLAAC mechanisms described in <xref target="RFC4191"/>.</t>

<t>These link-local addresses are visible to any on-link eavesdropper (who is
synchronized to the same Join Assistant), so regardless of what is chosen
they can be seen.  This link-layer traffic is encapsulated by the Join
Assistant into IPIP packets and carried to the JCE.  The traffic SHOULD never
leave the operator's network, and no outside traffic should enter, so it
should not be possible to do any ICMP scanning as described in
<xref target="I-D.ietf-6lo-privacy-considerations"/>.</t>

<t>The join process described herein requires that some identifier meaningful to
the network operator be communicated to the JCE via the Neighbor
Advertisement's ARO option.  This need not be a manufacturer created EUI-64
as assigned by IEEE; it could be another value with higher entropy and less
interesting vendor/device information.  Regardless of what is chosen, it can
be used to track where the device attaches.</t>

<t>For most constrained device, network attachment occurs very infrequently,
often only once in their lifetime, so tracking opportunities may be rare.</t>

<t>Further, during the enrollment process, a DTLS connection
connection will be created.  Unless TLS1.3 is used, the device identity will
be visible to passive observers in the 802.11AR IDevID certificate that is
sent.  Even when TLS1.3 is used, an active attacker could collect the
information by simply connecting to the device; it would not have to
successful complete the negotiation either, or even attempt to
Man-In-The-Middle the device.</t>

<t>There is, at the same time, significant value in avoiding a link-local DAD
process by using an IEEE assigned EUI-64, and there is also significant
advantage to the operator being able to see what the vendor of the new device
is.</t>

<section anchor="eui-64-derived-address-for-join-time-iid" title="EUI-64 derived address for join time IID">

<t>It is therefore suggested that the IID used in the link-local address
used during the join process be a vendor assigned EUI-64.  After the join
process has concluded, the device SHOULD be assigned a unique randomly
generated long address, and a unique short address (not based upon the
vendor EUI-64) for use at link-layer. At that point, all layer-3 content
is encrypted by the layer-2 key.</t>

</section>
</section>
<section anchor="privacy-considerations-for-join-assistant" title="Privacy Considerations for Join Assistant">

</section>
</section>
<section anchor="security-considerations-1" title="Security Considerations">

</section>
<section anchor="iana-considerations-1" title="IANA Considerations">

<t>This document allocates one value from the subregistry "Address Registration
Option Status Values":
     ND_NS_JOIN_DECLINED  Join Assistant, JOIN DECLINED   (TBD-AA)</t>

</section>
<section anchor="protocol-definition" title="Protocol Definition">

</section>
<section anchor="acknowledgements-1" title="Acknowledgements">

<t>Kristofer Pister helped with many non-IETF references.</t>

</section>


  </back>
</rfc>

