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

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.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 RFC7030 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7030.xml">
<!ENTITY RFC3987 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3987.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC4291 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4291.xml">
<!ENTITY RFC7217 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7217.xml">
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC5077 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5077.xml">
<!ENTITY RFC6749 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
]>

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

<rfc ipr="trust200902" docName="draft-richardson-anima-smarkaklink-03" category="info">

  <front>
    <title abbrev="Smarkaklink">BRSKI enrollment of with disconnected Registrars -- smarkaklink</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="J." surname="Latour" fullname="Jacques Latour">
      <organization>CIRA Labs</organization>
      <address>
        <email>Jacques.Latour@cira.ca</email>
      </address>
    </author>

    <date year="2020" month="November" day="02"/>

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

    <abstract>


<t>This document details the mechanism used for initial enrollment
using a smartphone of a BRSKI Registrar system.</t>

<t>There are two key differences in assumption from
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>: that the intended registrar has
Internet, and that the Pledge has no user-interface.</t>

<t>This variation on BRSKI is intended to be used in the situation where the
registrar device is new out of the box and is the intended gateway to the
Internet (such as a home gateway), but has not yet been configured.  This
work is also intended as a transition to the Wi-Fi Alliance work on the
Device Provisioning Protocol (DPP).</t>



    </abstract>


  </front>

  <middle>


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

<t>The problem of bootstrapping a new device is described at length in
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> (aka BRSKI).  The problem that BRSKI
solves is the case of a smart, properly configured network with a minimum of
network connectivity (or previously pre-previoned with nonceless vouchers),
and a relatively stupid new device (the Pledge), which lacks a user
interface.</t>

<t>The BRSKI problem is one of trust: how does the new device trust that it has
found the correct network to join, and how does the new network become
convinced that the new device is a device that is intended to join.
BRSKI solves the problem well for the case where the network is well
connected and can easily talk to the device’s Manufacturer Authorized Signing
Authority (MASA), while providing appropriate proxy mechanisms to enable the
new pledge to communicate it’s proximity assertion to the MASA as well.</t>

<t>This document is about a variation of the problem: when the new device being
introduce has no network connectivity, but a new device is intended to
serve as the Registrar for the network. This new device is likely a home (or
small office) gateway, and until it is properly configured there will be
no direct network connectivity.</t>

<t>There are a number of protocols that permit an ISP to consider a new router
brought into a home to be a new pledge to the ISPs’ network, and for that new
device to integrated into the ISP’s (autonomic) network. BRSKI can be used
itself, and there are ways to use the Broadband Form’s TR-069 to bootstrap
the device in this way.  This document is not about the situation where
the router device is intended to belong to the ISP, but about the situation
where the home user intends to own and control the device.</t>

<section anchor="disconnected" title="Intermittent Device connectivity">

<t>There is an additional variation which this variation solves: the case where
there is one or more devices in a place with no immediate connectivity to a
Registrar.   An example of this could be a new home construction where a
furnace, thermostat or other control systems need to be introduced to each
other.  If a registrar exists it will have no Internet connectivity (as
above), until the home becomes owned by the first owner.  There might never
be a registrar though.</t>

<t>The basement case is important because the assumption is that the <spanx style="emph">installer</spanx>
may have poor or no LTE connectivity in that location.  The installer will
have to exit the basement, perhaps even return to their truck, in order to
have network connectivity for their provisioning device (a smartphone
equivalent).</t>

</section>
<section anchor="additional-motivation" title="Additional Motivation">

<t>The Wi-Fi Alliance has released the Device Provisioning Protocol <xref target="dpp"/>.
The specification is available only via “free” registation.
The specification relies on being able to send and receive 802.11 Public
Action frames, as well as Generic Advertisement Service (GAS) Public Action
frames.  Access to send new layer-2 frames is generally restricted in most
smartphone operating systems (iOS, Android). At present there are no known
public APIs that a generic application writer could use, and therefore the
smart-phone side of the DPP can only be implemented at present by the vendors
of those operating systems.</t>

<t>As both dominant vendors have competing proprietary mechanisms, it is unclear
if generic applications will be produced soon.  It is probably impractical
for a vendor an a smart-appliance to independantly produce an application
that can do proper DPP in 2019.  As one of the common goals of this document
and DPP is that there need not be an application-per-device only one DPP
application need exist.  Until such time as such an application becomes
universal it is a goal of this document to lay the groundwork for a
transition to full use of DPP by leveraging the QR code infrastructure
that DPP depends upon.</t>

<t>In addition to the above concern, DPP is primary concerned about provisioning
WiFi credentials to devices.  DPP can provision access points themselves, but
it lacks any kind of manufacturer integration.  BRSKI provides this
integration, and therefore an audit trail history for the device.</t>

<t>The smarkaklink enrollment process described in this document is about
securely initializing the administrative connection with a device that is the
WiFi Access Point.</t>

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

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”,
“MAY”, and “OPTIONAL” in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<t>The following terminology is copied from <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/></t>

<t>enrollment: The process where a device presents key material to a network and
acquires a network specific identity. For example when a certificate signing
request is presented to a certification authority and a certificate is
obtained in response.</t>

<t><list style="hanging">
  <t hangText='pledge:'>
  The prospective device, which has an identity installed at the factory.</t>
  <t hangText='IDevID:'>
  a manufacturer signed keypair (different from the QRkey) which is generated
at the factory. This is the 802.1AR artifact which is mandated by
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.</t>
</list></t>

<t>The following new terminology has been added</t>

<t><list style="hanging">
  <t hangText='smarkaphone:'>
  The prospective administrator device, usually a smartphone equipped with a
QR capable camera, wifi and 3G connectivity.</t>
  <t hangText='adolescent router (AR):'>
  a home router or device containing a registrar. The device does not yet
have network connectivity, and has no administrator.  It is considered not a
“baby” device in the same way that the pledge is, but it is not yet an adult.
A better term would be welcome.</t>
  <t hangText='SelfDevID:'>
  a public/private key pair generated by the smartpledge, formed into a
self-signed PKIX certificate.  The private key part remains always on the
smartpledge, but like other secondary device keys, should be encrypted for
backup
purposes. {EDNOTE: any references to Apple or Android APIs/specifications here?}</t>
  <t hangText='QRkey:'>
  a unique, raw ECDSA or EdDSA key pair generated in (or for) the adolescent router
at the factory, and stored in the configuration portion of the firmware.  The
public portion is printed in a QRcode.  This key is not formed into a
certificate of any kind.</t>
</list></t>

<t>smarkaklink: the name of this protocol.</t>

<t>adolescent router (AR): a home router or device containing a registrar. The
device does not yet have network connectivity, and has no administrator.</t>

<section anchor="history-and-origin-of-the-name" title="History and Origin of the name">

<t>This document was originally called the “smartpledge” variation of BRSKI.
This name was intended to indicate that the variation is one where the
BRSKI role of Pledge is taken on by the smartphone device.</t>

<t>While the end-goal is to have the smartphone enrolled into a PKI hosted
by the fully-grown Router, the activities of each device do not map
into the BRSKI roles at the beginning.  In fact, they are reversed
with the Adolescent Router being the Pledge.  Review of this document
suggested that removing the word pledge would help.</t>

<t>The new name “smarkaklink” is intended to sound like the sound that
two (wine, beer) glasses make after a toast is made.</t>

</section>
</section>
<section anchor="assumptions-and-required-setup" title="Assumptions and Required Setup">

<t>The first assumption is that intended device owner is active and is
present. The device owner has a smart-phone that is capable of using Wi-Fi or
being wired into the adolescent router (AR).</t>

<t>The smartpledge application generates a self-signed certificate with
public/private keypair that it knows.  It may generate a unique certificate
for each manufacturer.  This certificate is called the SelfDevID.</t>

<t>The second assumption is that the device has a QR code printed on the outside
of the unit, and/or provided with the packaging/documentation.  The QR code
is as specified in section 5.3 of <xref target="dpp"/>, with the additions specified in <xref target="qrextra"/></t>

<t>The third assumption is that the AR, at manufacturing time, has the anchor
for it’s MASA (same assumption as for BRSKI pledge’s).  In addition, like
the BRSKI pledge, the AR has an IDevID certificate (and associated private
key) signed by the manufacturer.</t>

<t>The fourth assumption is that the key in the “K:” attribute <xref target="qrextra"/> is a
different public key pair.  It MUST be different from the key used in the
IDevID.  This key is called the DPP-Keypair.</t>

</section>
<section anchor="protocol-overview" title="Protocol Overview">

<t>This is the overview of the process.
{EDNOTE: there are many details here that belong in the next section.
The goal in this section is to consisely explain the interaction among the
components. Clearly this text currently fails in that regard}</t>

<section anchor="scan-the-qr-code" title="Scan the QR code">

<t>The operator of the smartphone invokes the smarkaklink application, and scans
the QR code on the AR.  The smartphone learns the ESSID, Public-Key,
mac-address, smarkaklink URL, and link-local address of the AR.</t>

</section>
<section anchor="enroll-with-the-manufacturer" title="Enroll with the manufacturer">

<t>The smartphone uses it’s 3G, or other WiFi internet access to connect to the
manufacturer with TLS.  The manufacturer is identified with the smartpledge
URL.</t>

<t>The operator of the smartphone may need to move to another location to get
connectivity.  It is desireable that an operator be able to scan many QR
codes before moving, performing this operation in a batch.  There may
be multiple devices from the same manufacturer, and the smarkalink
application SHOUld enroll with the manufacturer a single time for all
devices.</t>

<t>The smartphone does an HTTP POST to the provided URL using it’s generated
certificate as it’s ClientCertificate.
As described in <xref target="smartpledgeenroll"/>, the manufacturer MAY respond with a
302 result code, and have the end user go through a web browser based process
to enroll.  After that process, a redirection will occur using OAUTH2.</t>

<t>The result should finally be a 201 result code, and at that URL is a new
certificate signed by the manufacturer.</t>

</section>
<section anchor="gather-name-details-for-new-device" title="Gather name details for new device">

<t>The contents of the scanned QR code may some necessary information
to facilititate the connection.  After enrolling with the manufacturer,
the smartphone makes a request to the manufacturer to get more details.</t>

<t>A POST request is made containing the public key of the device.
The public key is used as an index, and this MAY result in a literal reply,
or may result in an HTTP 201 response with a Location: header where
details on the device may be obtained.</t>

<t>The final result is a JSON object that provides additional details about the
device.  At present, a key detail that does not fit into the QR code
is the full certificate distinguished name that the device will respond with.</t>

<t>This is the Adolescent Router Fully Qualified Domain Name, or AD-FQDN.</t>

<t>Additionally, if the device does not have a certificate that has a public
WebPKI anchor, then the manufacturer will include an appropriate trust
anchor with which to validate the device.  If the device has a self-signed
certificate, then it may be returned.</t>

</section>
<section anchor="connect-to-brski-join-network" title="Connect to BRSKI join network">

<t>The application then reconnects the Wi-Fi interface of the smartphone to the
ESSID of the AR.   This involves normal 802.11 station attachment.  The
given ESSID explicitely has no WPA or other security required on it.</t>

<t>There will be no DHCPv4 on this network.  This simplifies the operation
of the devices that are enrolling, but it also makes the network
uninteresting to other random users that may stumble upon the open ESSID.</t>

<t>A IPv6 Router Solicitation may elicit an answer (confirming the device is
there), but it is acceptable for there to be no prefix information.  An IPv6
Neighbour Discovery is done for the IPv6 Link-Local address of the AR.
Receipt of an answer confirms that the ESSID is correct and present.</t>

<t>(XXX – not using GRASP here. Could use GRASP, but QR code is better)</t>

</section>
<section anchor="connect-to-adolescent-registrar-ar" title="Connect to Adolescent Registrar (AR)">

<t>The smarkaklink application then makes a direct (no proxy) TLS connection to
port 8081 (!To be confirmed!) of the AR, on the IPv6 Link-Local address
given.</t>

<t>This is as in section 5.1 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.
The smartphone uses it’s SelfDevID as the TLS ClientCertificate, as the
smartphone and smarkaklink will not have a manufacturer signed IDevID.</t>

<t>Additionally, the AR will use it’s IDevID certificate as the
ServerCertificate of the TLS conncetion.  As with other BRSKI IDevID,
it will have a MASA URL extension, as described in
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> section 2.3.2.</t>

<t>The Adolescent Registrar is acting here in the role of pledge.</t>

<t>Given typical libraries, the connection will be made initially with
all TLS peer name validation turned off, as the connection will not be to an
IPv6 Link-Local address, which can not be placed into a certificate.
The certificate should still be verified if possible up to a public trust
anchor.</t>

<t>After connecting, the certificate presented by the AR MUST contain the
AR-FQDN provided above as a subjectAltName rfc822Name extension.</t>

<t>Alternatively, a custom certification verification call back may be made.</t>

</section>
<section anchor="smartphone-requests-voucher-request-from-the-adolescent-registrar" title="Smartphone Requests Voucher-Request from the Adolescent Registrar">

<t>The smartphone generates a random nonce <spanx style="emph">SPnonce</spanx>.
(Do we need something time-based too here?)</t>

<t>The smarkaklink client encrypts this to the public key of the
AR, which was found in the QR code.  If the key is RSA, this is a
simple public key operation (we need to reference appropriate padding due to
various attacks).  In the mandatory to implement ECDSA case, then ECIES is
used instead.</t>

<t>The result goes into the Voucher-Request-Request, posted as a JSON
containing a single field: <spanx style="emph">voucher-request challenge</spanx>.
This is placed in the voucher-challenge-nonce field.</t>

<t>(XXX-should be done with JOSE? Probably)</t>

<t>NOTE: DPP has a round with the SHA256 of the device’s key to make sure that
the correct device has been chosen.  The TLS connection effectively provides
the same privacy that the Bx keys provided.</t>

<t>The resulting object is POST’ed to the new BRSKI endpoint:</t>

<figure><artwork><![CDATA[
/.well-known/est/requestvoucherrequest
]]></artwork></figure>

<t>[or should it be named:
    /.well-known/est/requestvoucherchallenge</t>

<t>]</t>

</section>
<section anchor="ar-processing-of-voucher-request-request" title="AR processing of voucher-request, request.">

<t>The AR processes this POST.  First it uses the private key that is associated
with it’s QR printed public key to decrypt the voucher-request challenge.
Included in this challenge is a nonce, and also the link-local address of the
smartphone.</t>

<t>The AR SHOULD verify that the link-local address matches the originating
address of the connection on which the request is received.</t>

<t>The AR then forms a voucher-request identically to as described in section
5.2 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.  Note that the AR uses it’s
IDevID to sign the voucher-request.  This is the same key used to terminate
the TLS connection.</t>

<t>Note: It MUST be different from the public key printed in the QR code.</t>

<t>In addition to the randomly generated nonce that the AR generates to place
in the the voucher-request, into the nonce field,  it also includes the
<spanx style="emph">SPnonce</spanx> in a new <spanx style="emph">voucher-challenge-nonce</spanx> field. {EDNOTE: hash of nonce?}</t>

<t>This voucher-request is then <spanx style="emph">returned</spanx> during the POST operation to the
smartphone.  (This is in constrast that in ANIMA the voucher-request is
sent by the device to the Registrar, or the MASA)</t>

<section anchor="additions-to-voucher-request" title="Additions to Voucher-Request">

<t>QUESTION: should the <spanx style="emph">voucher-challenge-nonce</spanx> be provided directly in the
voucher-request, or should only a hash of the nonce be used?  The nonce is
otherwise not disclosed, and a MITM on the initial TLS connection would
get to see the nonce.  A hash of the nonce validates the nonce as easily.</t>

</section>
</section>
<section anchor="smartphone-validates-connection" title="Smartphone validates connection">

<t>The smartphone then examines the resulting voucher-request. The smartphone
validates that the voucher-request is signed by the same public key as was
seen in the TLS ServerCertificate.</t>

<t>The smartphone then examines the contents of the voucher-request, and looks
for the <spanx style="emph">voucher-challenge-nonce</spanx>.  As this nonce was encrypted to the
AR, the only way that the resulting nonce could be correct is if the correct
private key was present on the AR to decrypt it.  Succesful verification of
the <spanx style="emph">voucher-challenge-nonce</spanx> (or the hash of it, see below) results in the
smartphone moving it’s end of the connection from provisional to validated.</t>

</section>
<section anchor="smart-phone-connects-to-masa" title="Smart-Phone connects to MASA">

<t>The smarkaklink application running on the smartphone then examines the MASA
URL provided in the TLS ServerCertificate of the AR.  The smarkaklink
application then connects to that URL using it’s 3G/LTE connection, taking on
the temporary role of Registrar.</t>

<t>A wrapped voucher-request is formed by the smartphone in the same
way as described in section 5.4 of <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.
The prior-signed-voucher-request is filled in with the voucher-request
that was created by the AR in the previous step.</t>

<t>The proximity-registrar-cert of the wrapped voucher-request is set to be the
SelfDevID certificate of the smartphone.  The voucher-request is to be signed
by the SelfDevID.</t>

<t>The voucher-request is POST’ed to the MASA using the same URL that is used
for Registrar/MASA operation:</t>

<figure><artwork><![CDATA[
/.well-known/est/requestvoucher
]]></artwork></figure>

</section>
<section anchor="masa-processing" title="MASA processing">

<t>The MASA processing occurs as specified in section 5.5 of
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> as before.  The MASA MUST
also copy the <spanx style="emph">voucher-challenge-nonce</spanx> into the resulting voucher.</t>

</section>
<section anchor="smartpledge-processing-of-voucher" title="Smartpledge processing of voucher">

<t>The smartphone will receive a voucher that contains it’s IDevID as the
<spanx style="emph">pinned-domain-cert</spanx>, and the <spanx style="emph">voucher-challenge-nonce</spanx> that it created will also
be present.   The smartphone SHOULD verify the signature on the artifact,
but may be unable to validate that the certificate used has a relationship to
the TLS ServerCertificate used by the MASA. (This limitation exists in ANIMA
as well).</t>

<t>The smartphone will then POST the resulting voucher to the AR using the URL</t>

<figure><artwork><![CDATA[
/.well-known/est/voucher
]]></artwork></figure>

<t>If an existing TLS connection is still available, it MAY be reused.</t>

<t>If a TLS session-resumption ticket (see <xref target="RFC8446"/> section 2.2 for TLS 1.3,
and <xref target="RFC5077"/> for TLS 1.2) has been obtained, it SHOULD be used if the
TLS connection needs to be rebuilt.  This is particularly useful in the
disconnected use case explained in <xref target="disconnected"/>.</t>

</section>
<section anchor="adolescent-registrar-ar-receives-voucher" title="Adolescent Registrar (AR) receives voucher">

<t>When the AR receives the voucher, it validates that it is signed by it’s
manufacturer.  This process is the same as section 5.5.1 of
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/>.</t>

<t>Again note that the AR is acting in the role of a pledge.</t>

<t>Inside the voucher, the pinned-domain-cert is examined. It should match the
TLS ClientCertificate that the smartphone used to connect.  This is the
SelfDevID.</t>

<t>At this point the AR has validated the identity of the smartphone, and the
AR moves it’s end of the connection from provisional to validated.</t>

</section>
<section anchor="adolescent-registrar-ar-grows-up" title="Adolescent Registrar (AR) grows up">

<t>The roles are now changed.</t>

<t>If necessary, the AR generates a new key pair as it’s Domain CA key.  It MAY
generate intermediate CA certificates and a seperate Registrar certificate,
but this is discouraged for home network use.</t>

<t>The AR is now considered a full registrar.  The AR now takes on the role
of Registrar.</t>

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

<t>The AR responds to the POST of the voucher with the enrollment status as the
reply to the POST, as per the enrollment status object defined in BRSKI
section 5.9.4.</t>

<t>The smartphone MAY POST the resulting enrollment status to the MASA,
in a manner similar to BRSKI section 5.9.4. Note that the operation described
in that section is about telemetry from the pledge to the Registrar.
That telemetry was return as part of the POST above.</t>

<t>Returning enrollment status to the MASA is an optional action; while there are
privacy implications of doing so, the logicstics feedback of a failure likely
will result in a service technician visit, which is hardly privacy enhancing.
This telemetry return is strongly encouraged.</t>

<t>The POST to /.well-known/est/enrollstatus MUST include some additional
information to tell the MASA which device was involved.  This section
therefore defines a new element for the status return to be the “voucher”
attribute; it is to be filled in with the base64 encoding of the voucher that
was provided.  While this is excessive, it discloses no information that the
MASA does not already have, has been signed and identifies both the
Adolescent Router and the Smart Phone client involved.</t>

</section>
<section anchor="smartphone-enrolls" title="Smartphone enrolls">

<t>At this stage of the smarkaklink protocol, the typical BRSKI exchange is
over.  A Secure Transport has been established between the smartphone
and the fully-grown AR.  The smartphone now takes on the role of
secured pledge,  or EST client.</t>

<t>The smartphone MUST now request the full list of CA Certificates, as
per <xref target="RFC7030"/> section 4.1.  As the Registrar’s CA certificate has just been
generated, the smartphone has no other way of knowing it.</t>

<t>The smartphone MUST now also generate a CSR request as per
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> section 5.8.3.
The smartpledge MAY reuse the SelfDevID key pair for this purpose.
(XXX - maybe there are good reasons not to reuse?)</t>

<t>The Registrar SHOULD grant administrator privileges to the smartphone via
the certificate that is issued.  This may be done via special attributes in
the issued certificate, or it may pin the certificate in a database.
Which method to use is a local matter.</t>

<t>The TLS/EST connection MUST remain open at this point. This is connection one.</t>

</section>
<section anchor="validation-of-connection" title="Validation of connection">

<t>The smartphone MUST now open a new HTTPS connection to the Registrar (AR),
using it’s newly issued certificate. (XXX should this be on a different IP, or a
different port?  If so, how is this indicated?)</t>

<t>The smartphone MUST validate that the new connection’s TLS Server
certificate can be validated by the Registrar’s new CA certificate.</t>

<t>The registrar MUST validate that the smartphone’s ClientCertificate is
validated by the Registrar’s CA.  The smartphone SHOULD perform a POST
operation on this new connection to the
<xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> Enrollment Status Telemetry
mechanism, see section 5.8.3.</t>

<t>Upon success, the original TLS/EST connection (one) MAY now be closed.</t>

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

<section anchor="qrextra" title="Quick Response Code (QR code)">

<t>Section 5.3 of <xref target="dpp"/> describes the contents for an <xref target="iso18004"/> image.
It specifies content that starts with DPP:, and the contains a series of
semi-colon (;) deliminated section with a single letter and colon. This
markup is terminated with a double semi-colon.</t>

<t>Although no amending formula is defined in DPP 1.0, this document is defining
two extensions.  This requires amending the ABNF from section 5.2.1 as
follows:</t>

<figure><artwork><![CDATA[
dpp-qr = “DPP:” [channel-list “;”] [channel-list “;”]
         [mac “;”] [information “;”] public-key
         [";" llv6-addr ] [";" mudurl ]
         [";" smarkaklink ] [";" essid ] “;;”
llv6-addr = "L:" 8*hex-octet
essid     = "E:" *(%x20-3A / %x3C-7E) ;   semicolon not allowed
smarkaklink = "S:" *(%x20-3A / %x3C-7E) ; semicolon not allowed
mudurl      = "D:" *(%x20-3A / %x3C-7E) ; semicolon not allowed
]]></artwork></figure>

<t>While the ABNF defined in the <xref target="dpp"/> document assumes a specific order
(C:, M:, I:, K:), this specification relaxes this so that the tags can come
in any order.   However, in order to make interoperation with future DPP-only
clients as seamless as possible, the extensions suggested here are placed at
the end of the list.  This is consistent with the Postel Principle.</t>

<t>It is intended that parts of this protocol could be performed by
an actual DPP implementation, should it become possible to implement DPP
using current smartphone operating systems in an unprivileged way.</t>

<section anchor="the-smarkaklink-attribute" title="The Smarkaklink Attribute">

<t>The <spanx style="emph">smarkaklink</spanx> attribute indicates that the device is capable of the
protocol specified in this document.  The contents of the smarkaklink
attribute contains part or all of an IRI which identifies the
manufacturer of the device.</t>

<t>It SHOULD contain the <spanx style="emph">iauthority</spanx> of an IRI as specified in section 2.2 of
<xref target="RFC3987"/>. The scheme is implicitely “https://”, with an ipath of
“/.well-known/est/smarkaklink”.  This implicit form exists to save bytes in
the QR code.</t>

<t>If the string contains any “/” characters, then it is not an <spanx style="emph">iauthority</spanx>,
but an entire IRI.  This takes many more characters, but is useful in a
variety of debugging situations, and also provides for new innovations.</t>

<t>Short URLs are important to fit into typical QR code space.</t>

</section>
<section anchor="link-layer-address-attribute" title="Link-Layer Address Attribute">

<t>The <spanx style="emph">llv6-addr</spanx> attribute is optional.  When present, it specifies the IPv6
Link-Local address at which the adolescent router is listening.  If not
specified, then the link-local address may be formed according to the
historical (privacy-violating) process described in <xref target="RFC4291"/> Appendix A.
The <spanx style="emph">llv6-addr</spanx> attribute is present so that devices that have
implemented <xref target="RFC7217"/> stable addresses can express that address clearly.</t>

</section>
<section anchor="essid-name-attribute" title="ESSID Name Attribute">

<t>The <spanx style="emph">essid</spanx> attribute provides the name of the 802.11 network on
which the enrollment will occur.  If this attribute is
absent, then it defaults to “BRSKI”.</t>

</section>
</section>
<section anchor="enrollment-using-est" title="Enrollment using EST">

<t>TBD</t>

</section>
</section>
<section anchor="smartpledgeenroll" title="Smart Pledge enrollment with manufacturer">

<t>While it is assumed that there will be many makers of Smarkaklink
applications, a goal of this specification is to eliminate the need for an
“app” per device, providing onboarding mechanism for a variety of devices
from a single app.</t>

<t>Given the secondary goal of a transition to use of Device Provisioning
Protocol (DPP), the smarkaklink application may have to be provided as part
of the smart phone system, as a system service. This is due to the need to
send/receive wifi management frames from DPP.  As such each vendor of
a smart device will need to produce a smarkaklink app, and it will be
impossible for the vendor of the Registrar device (or other DPP capable IoT
device) to provide an app on their own.</t>

<t>Having stated this goal, it is understood that initially the app may well
come from the manufacturer of the Registrar, but this protocol is designed on
the assumption that there is no such vertical integration.</t>

<t>So, there can be no initial relationship between the Smart Pledge and the
manufacturer of the Registrar.</t>

<t>But, in a traditional <xref target="I-D.ietf-anima-bootstrapping-keyinfra"/> scenario the
pledge would have been provided with an IDevID at manufacturing time.  While
an IDevID could have been built-in to the SmartPledge “app”, such a key would
not be private if it was built-in.  A key could be generated by the app upon
installation.   It could be self-signed, it could be signed by the maker
of the app, or it could be signed by another party.</t>

<t><list style="symbols">
  <t>a self-signed certificate is just a container for a public key.  For the
purposes of the trust relationship with the Registrar, it would be
sufficient.</t>
  <t>a certificate signed by the maker of the app (or the maker of the
smart-phone) would carry no specific trust beyond what a self-signed
certificate would have.  Any linking in the certificate to a network
expressable identity (such as layer-2 address) would simply be a privacy
violation.</t>
  <t>a certificate signed by another party would similarly have little
additional relevance, unless the third party is the manufacturer of the
Registrar!</t>
</list></t>

<t>The smarkaklink enrollment process uses a combination of the first and third
choice.  The involvement of the manufacturer at this step affords an
opporuntity to do sales-channel integration with the manufacturer.  The
manufacturer can associate an account with the user using a wide variety of
OAUTH2 <xref target="RFC6749"/> processes.  In addition, based upon the URL provided the
manufacturer can do redirection
along a value-added reseller process.   For instance, the manufacturer of a
home router could redirect the pledge to the ISP that resold the router.</t>

<t>While <xref target="RFC7030"/> describes a Certificate Signing Request in order to have
a certificate assigned, the actual contents of the certificate are not
interesting at all, and the process of attempting to come up with a
meaningful contents tends to cause more interoperability issues than having
nothing.</t>

<t>The Smarkaklink takes the <spanx style="emph">smartpledge attribute</spanx> from the QR code, forming a
URL as describe above.  An HTTPS POST is performed to this URL, with the JSON
body of:</t>

<figure><artwork><![CDATA[
{
   "mac" : <mac-address>
}
]]></artwork></figure>

<t>The HTTPS POST MUST be performed with freshly created self-signed
certificate.  If the smarkaklink application has previously communicated with
this URL, it MAY skip this step and use a previously returned certificate.
Doing so has a privacy implication discussed below, but is appropriate when
enrolling many devices from the same manufacturer into the same network.</t>

<t>The smarkaklink client should be prepared for three cases:</t>

<t><list style="symbols">
  <t>A certificate is immediately returned.</t>
  <t>A 201 status code is returned, and Location: header is provided. A GET
request to that location will retrieve the certificate.</t>
  <t>A 302 redirection occurs with some initiation of an OAUTH2 process to
establish some additional authorization.</t>
  <t>Any other error (4xx and 5xx) are typically unrecoverable errors.</t>
</list></t>

<t>In the third case, the 302 response SHOULD take the smarkaklink operator to
the given URL in an interactive browser.  The operator SHOULD be given access
to their normal set of cookies and third-party logins such that they can use
appropriate third party (Google, Facebook, Github, Live.com, etc.) logins to
help validate the operator as a real person, and not a malware.
Such logins are optional, and it is a manufacturer choice as to what
integrations they want to make.</t>

<t>After the OAUTH2 process, the SmartPledge will be redirected back to the MASA
and a 201 status code will be returned when successful as above.</t>

<section anchor="minimal-smart-pledge-enrollment" title="minimal Smart Pledge enrollment">

<t>A manufacturer who has not built-in any restrictions on the identity that the
smarkaklink uses, MAY return the same self-signed certificate that the
smartpledge used to connect with.</t>

</section>
</section>
<section anchor="threat-analysis" title="Threat Analysis">

<t>The following attacks have been considered.</t>

<section anchor="wrong-administrator" title="Wrong Administrator">

<t>Neighbours with similar setups wind up managing each other’s network (by
mistake).</t>

</section>
<section anchor="rogue-administrator" title="Rogue Administrator">

<t>Uninitialized networks can be adopted by ‘wardrivers’ who search for networks
that have no administrator.</t>

</section>
<section anchor="attack-from-internal-device" title="Attack from Internal device">

<t>A compromised device inside the home can be used by an attack to take control
of the home router.</t>

</section>
<section anchor="attack-from-camera-enabled-robot" title="Attack from camera enabled robot">

<t>A robot (such as a home vacuum cleaner) could be compromised, and then used
by an attacker to observe and/or scan the router QRcode.</t>

</section>
<section anchor="attack-from-manipulator-enabled-robot" title="Attack from manipulator enabled robot">

<t>A robot (for instance, a toy) could be compromised, and then used
by an attacker to push the WPA and/or factory reset button on the router.</t>

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

<t>XXX: Go through the list of attacks above, and explain how each has been
mitigated.</t>

<t>Go through the list of concerns in ANIMA and EST-RFC7030 and indicate if
there are additional concerns, or if a concern does not apply.</t>

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

<t>TBD.</t>

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

<t>This work was supported by the Canadian Internet Registration Authority
https://cira.ca/blogs/cira-labs/about-cira-labs.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&I-D.ietf-anima-bootstrapping-keyinfra;
<reference anchor="dpp" target="https://www.wi-fi.org/downloads-registered-guest/Device_Provisioning_Protocol_Draft_Technical_Specification_Package_v0_0_23_0.zip/31255">
  <front>
    <title>Device Provisioning Protocol Specification</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <format type="pdf" target="https://github.com/kcdtv/wpa3/blob/master/Device_Provisioning_Protocol_Specification_v1.0.pdf"/>
</reference>
<reference anchor="iso18004" target="https://github.com/yansikeim/QR-Code/blob/master/ISO%20IEC%2018004%202015%20Standard.pdf">
  <front>
    <title>Information technology — Automatic identification and data capture techniques — Bar code symbology — QR Codes (ISO/IEC 18004:2015)</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
&RFC7030;
&RFC3987;
&RFC8174;


    </references>

    <references title='Informative References'>

&RFC4291;
&RFC7217;
&RFC8446;
&RFC5077;
&RFC6749;


    </references>


<section anchor="resulting-dpp-qr-code-specification" title="Resulting DPP QR code specification">

<t>This is a merge of the additions from section <xref target="qrextra"/> and section 5.2.1
of <xref target="dpp"/>:</t>

<figure><artwork><![CDATA[
dpp-qr = “DPP:” [channel-list “;”]
         [";" llv6-addr ] [";" mudurl ]
         [";" smarkaklink ] [";" essid ] “;;”
llv6-addr = "L:" 8*hex-octet
essid     = "E:" *(%x20-3A / %x3C-7E) ;   semicolon not allowed
smarkaklink = "S:" *(%x20-3A / %x3C-7E) ; semicolon not allowed
mudurl      = "D:" *(%x20-3A / %x3C-7E) ; semicolon not allowed
pkex-bootstrap-info = [information]
channel-list = “C:” class-and-channels *(“,” class-and-channels)
class-and-channels = class “/” channel *(“,” channel)
class = 1*3DIGIT
channel = 1*3DIGIT
mac = “M:” 6hex-octet ; MAC address
hex-octet = 2HEXDIG
information = “I:” *(%x20-3A / %x3C-7E) ; semicolon not allowed
public-key = “K:” *PKCHAR
      ; DER of ASN.1 SubjectPublicKeyInfo encoded in
      ; “base64” as per [14]
PKCHAR = ALPHA / DIGIT / %x2b / %x2f / %x3d
llv6-addr = "L:" 8*hex-octet
essid     = "E:" *(%x21-3A / %x3C-7E) ; semicolon not allowed
smartpledge = "S:" *(%x21-3A / %x3C-7E) ; semicolon not allowed
]]></artwork></figure>

</section>
<section anchor="swaggerio-definition-of-api" title="Swagger.IO definition of API">

<t>This is a work-in-progress definition of the smarkaklink to MASA API in the
form of Swagger.IO format:</t>

<t><figure>
<artwork><![CDATA[
---
swagger: "2.0"
info:
  description: |
    The smartpledge API is described in detail in
    draft-richardson-anima-smartpledge. This API is
    a variation of BRSKI (draft-ietf-anima-bootstrapping-keyinfra)
    which provides an initial bootstrap of the
    Secure Home Gateway registrar.
  version: 1.0.0
  title: Secure Home Gateway secure enrollment API (smartpledge-BRSKI)
  contact:
    email: securehomegateway@cira.ca
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
host: virtserver.swaggerhub.com
basePath: /CIRALabs/smartpledge/1.0.0
tags:
- name: est
  description: Enrollment over Secure Transport
schemes:
- https
paths:
  /voucherrequest:
    get:
      tags:
      - developers
      summary: searches inventory
      description: |
        By passing in the appropriate options, you can search for
        available inventory in the system
      operationId: searchInventory
      produces:
      - application/json
      parameters:
      - name: searchString
        in: query
        description: |
          pass an optional search string for looking up inventory
        required: false
        type: string
      - name: skip
        in: query
        description: number of records to skip for pagination
        required: false
        type: integer
        minimum: 0
        format: int32
      - name: limit
        in: query
        description: maximum number of records to return
        required: false
        type: integer
        maximum: 50
        minimum: 0
        format: int32
      responses:
        200:
          description: search results matching criteria
          schema:
            type: array
            items:
              $ref: '#/definitions/InventoryItem'
        400:
          description: bad input parameter
    post:
      tags:
      - admins
      summary: adds an inventory item
      description: Adds an item to the system
      operationId: addInventory
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - in: body
        name: inventoryItem
        description: Inventory item to add
        required: false
        schema:
          $ref: '#/definitions/InventoryItem'
      responses:
        201:
          description: item created
        400:
          description: invalid input, object invalid
        409:
          description: an existing item already exists
definitions:
  InventoryItem:
    type: object
    required:
    - id
    - manufacturer
    - name
    - releaseDate
    properties:
      id:
        type: string
        format: uuid
        example: d290f1ee-6c54-4b01-90e6-d701748f0851
      name:
        type: string
        example: Widget Adapter
      releaseDate:
        type: string
        format: date-time
        example: 2016-08-29T09:12:33.001Z
      manufacturer:
        $ref: '#/definitions/Manufacturer'
  Manufacturer:
    required:
    - name
    properties:
      name:
        type: string
        example: ACME Corporation
      homePage:
        type: string
        format: url
        example: https://www.acme-corp.com
      phone:
        type: string
        example: 408-867-5309
]]></artwork>
</figure></t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

