<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-richardson-mud-qrcode-07" indexInclude="true" ipr="trust200902" number="9238" prepTime="2022-05-12T09:36:19" scripts="Common,Latin" sortRefs="true" submissionType="independent" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-richardson-mud-qrcode-07" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9238" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Loading MUD URLs from QR Codes">Loading Manufacturer Usage Description (MUD) URLs from QR Codes</title>
    <seriesInfo name="RFC" value="9238" stream="independent"/>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization showOnFrontPage="true">Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="J." surname="Latour" fullname="Jacques Latour">
      <organization showOnFrontPage="true">CIRA Labs</organization>
      <address>
        <email>Jacques.Latour@cira.ca</email>
      </address>
    </author>
    <author initials="H." surname="Habibi Gharakheili" fullname="Hassan Habibi Gharakheili">
      <organization showOnFrontPage="true">UNSW Sydney</organization>
      <address>
        <email>h.habibi@unsw.edu.au</email>
      </address>
    </author>
    <date month="05" year="2022"/>
    <area>Internet</area>
    <keyword>RLA</keyword>
    <keyword>ISOIEC189004</keyword>
    <keyword>ANSI MH10.8.2</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This informational document details a protocol to load Manufacturer Usage Description (MUD) definitions from RFC 8520
for devices that do not have them integrated.</t>
      <t indent="0" pn="section-abstract-2">This document is published to inform the Internet community of this mechanism to allow
interoperability and to serve as a basis of other standards work if there is interest.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This is a contribution to the RFC Series, independently of any
            other RFC stream.  The RFC Editor has chosen to publish this
            document at its discretion and makes no statement about its value
            for implementation or deployment.  Documents approved for
            publication by the RFC Editor are not candidates for any level of
            Internet Standard; see Section 2 of RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9238" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2022 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-protocol">Protocol</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-sqrl-protocol">The SQRL Protocol</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-manufacturer-usage-descript">Manufacturer Usage Descriptions in SQRL</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.2.2">
                  <li pn="section-toc.1-1.3.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.1.1"><xref derivedContent="3.2.1" format="counter" sectionFormat="of" target="section-3.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-b000-company-name">B000 Company Name</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.2.1"><xref derivedContent="3.2.2" format="counter" sectionFormat="of" target="section-3.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-b001-product-name">B001 Product Name</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.3">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.3.1"><xref derivedContent="3.2.3" format="counter" sectionFormat="of" target="section-3.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-b002-model-number">B002 Model Number</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.4">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.4.1"><xref derivedContent="3.2.4" format="counter" sectionFormat="of" target="section-3.2.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mud-url-data-record">MUD URL Data Record</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.5">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.5.1"><xref derivedContent="3.2.5" format="counter" sectionFormat="of" target="section-3.2.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-device-mac-address">Device MAC Address</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-applicability">Applicability</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-generic-url-or-version-spec">Generic URL or Version-Specific URL</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-crowd-supply-of-mud-files">Crowd Supply of MUD Files</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-privacy-considerations">Privacy Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-qr-codes-are-not-assurances">QR Codes Are Not Assurances</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mud-files-can-have-signatur">MUD Files Can Have Signatures</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.3">
                <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent="8.3" format="counter" sectionFormat="of" target="section-8.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-url-shortening-services-can">URL Shortening Services Can Change Content</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.4">
                <t indent="0" pn="section-toc.1-1.8.2.4.1"><xref derivedContent="8.4" format="counter" sectionFormat="of" target="section-8.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mud-qr-code-stickers-could-">MUD QR Code Stickers Could Be Confused</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.5">
                <t indent="0" pn="section-toc.1-1.8.2.5.1"><xref derivedContent="8.5" format="counter" sectionFormat="of" target="section-8.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-qr-code-can-include-a-mac-a">QR Code Can Include a MAC Address</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The Manufacturer Usage Description (MUD) <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/> defines a YANG data model to express what sort of access a device requires to operate correctly.      
That document additionally defines three ways for the device to
communicate the MUD URL (i.e., the URL of the resulting MUD file in JSON <xref target="RFC8259" format="default" sectionFormat="of" derivedContent="RFC8259"/>) to a network enforcement point: via DHCP, within an X.509 certificate extension, and via the Link Local Discovery Protocol (LLDP).</t>
      <t indent="0" pn="section-1-2">Each of the above mechanisms conveys the MUD URL in band and requires modifications to the device firmware.
Most small Internet of Things (IoT) devices do not have LLDP and often have very restricted DHCP clients.
Adding LLDP or DHCP options requires at least some minimal configuration change and possibly entirely new subsystems.
Meanwhile, use of the PKIX certification extension only makes sense as part of a larger deployment based on an Initial Device Identifier (IDevID) <xref target="IEEE802-1AR" format="default" sectionFormat="of" derivedContent="IEEE802-1AR"/>, for instance, as described in <xref target="RFC8995" format="default" sectionFormat="of" derivedContent="RFC8995"/>.</t>
      <t indent="0" pn="section-1-3">In the above cases, these mechanisms can only be implemented by persons with access to modify and update the firmware of the device.</t>
      <t indent="0" pn="section-1-4">In the meantime, there is a chicken or egg problem <xref target="chickenegg" format="default" sectionFormat="of" derivedContent="chickenegg"/>. That is, manufacturers are not motivated to (and thus likely do not) include MUD URLs in their products, as they believe that there are no gateways using those URLs.
At the same time, gateways have little incentive to (and thus likely do not) include code that processes MUD URLs, as it is believed that no products have or disseminate URLs.</t>
      <t indent="0" pn="section-1-5">The protocol described in this document allows any person with physical access to the device to affix a reference to a MUD URL that can later be scanned by an end user.</t>
      <t indent="0" pn="section-1-6">The QR-based protocol is presented as a convenient alternative when the mechanisms from <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/>  are not available to use on the device or the gateway.</t>
      <t indent="0" pn="section-1-7">Affixing a sticker can be done by:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-8">
        <li pn="section-1-8.1">the marketing department of the manufacturer,</li>
        <li pn="section-1-8.2">an outsourced assembler plant,</li>
        <li pn="section-1-8.3">value-added resellers (perhaps in response to a local request for proposal (RFP)),</li>
        <li pn="section-1-8.4">a company importing the product (possibly to comply with a local regulation),</li>
        <li pn="section-1-8.5">a network administrator (perhaps before sending devices home with employees or to remote sites), and</li>
        <li pn="section-1-8.6">a retailer as a value-added service.</li>
      </ul>
      <t indent="0" pn="section-1-9">QR codes are informally described in <xref target="qrcode" format="default" sectionFormat="of" derivedContent="qrcode"/> and formally defined in <xref target="isoiec18004" format="default" sectionFormat="of" derivedContent="isoiec18004"/>.
The protocol described in this document uses a QR code to encode the MUD URL.  Specifically, the protocol leverages the data format from the Reverse Logistics Association's Standardized Quick Response for Logistics <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/>.</t>
      <t indent="0" pn="section-1-10">SQRL codes are being put on devices via a sticker or via laser etching into the case in order to deal with many situations but specifically for end-of-life processing for the device.
An important idea behind the effort is that clearly identifying a product permits appropriate disposal, refurbishment, or recycling of the components of the product.</t>
      <t indent="0" pn="section-1-11">There are also use cases for SQRL in which the codes are used as part of regular maintenance for a product.</t>
      <t indent="0" pn="section-1-12">SQRL is an application of the 12N Data Identifier system specified by the ANSI MH10.8.2 Committee <xref target="mh10" format="default" sectionFormat="of" derivedContent="mh10"/> in a format appropriate for QR codes, as well as other things like Normalization Form C (NFC) transmissions.</t>
      <t indent="0" pn="section-1-13">QR code generators are available as web services
      or as programs, such as <xref target="qrencode" format="default" sectionFormat="of" derivedContent="qrencode"/>.</t>
      <t indent="0" pn="section-1-14"><xref target="genericfirmware" format="default" sectionFormat="of" derivedContent="Section 5"/> summarizes the considerations contained in "Updating files vs Updating MUD URLs" (<xref target="I-D.ietf-opsawg-mud-acceptable-urls" section="7.1" sectionFormat="of" format="default" derivedLink="https://datatracker.ietf.org/doc/html/draft-ietf-opsawg-mud-acceptable-urls-04#section-7.1" derivedContent="MUD-URLS"/>).
Due to the immutable nature of the QR code, MUD URLs in this document will need to
be non-firmware specific.</t>
    </section>
    <section anchor="Terminology" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">Although this document is not an IETF Standards Track publication, it
adopts the conventions for normative language to provide clarity of
instructions to the implementer.
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
      <t indent="0" pn="section-2-2">Readers should be familiar with the terminology in <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/>, including: MUD file, MUD URL, manufacturer, MUD manager, and controller.</t>
    </section>
    <section anchor="protocol" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-protocol">Protocol</name>
      <t indent="0" pn="section-3-1">The QR code protocol builds upon the work by <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/>.
That protocol is very briefly described in <xref target="sqrlsummary" format="default" sectionFormat="of" derivedContent="Section 3.1"/>.
Then, the list of needed Data Records to be filled in is explained.</t>
      <section anchor="sqrlsummary" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-the-sqrl-protocol">The SQRL Protocol</name>
        <t indent="0" pn="section-3.1-1"><xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/> documents an octet protocol that can be efficiently encoded into QR codes using a sequence of US-ASCII bytes, plus six control codes (see Section 3.1 of <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/>):</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.1-2">
          <li pn="section-3.1-2.1">&lt;RS&gt; Record Separator (US-ASCII 30)</li>
          <li pn="section-3.1-2.2">&lt;EoT&gt; End of Transmission (US-ASCII 4)</li>
          <li pn="section-3.1-2.3">&lt;FS&gt; Field Separator (US-ASCII 28)</li>
          <li pn="section-3.1-2.4">&lt;GS&gt; Group Separator (US-ASCII 29)</li>
          <li pn="section-3.1-2.5">&lt;US&gt; Unit Separator (US-ASCII 31)</li>
          <li pn="section-3.1-2.6">Concatenation Operator (US-ASCII 43: "+")</li>
        </ul>
        <t indent="0" pn="section-3.1-3">Section 7.2 of <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/> gives the details, which can be summarized as:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-3.1-4">
	  <li pn="section-3.1-4.1" derivedCounter="1.">
            <t indent="0" pn="section-3.1-4.1.1">The QR code header starts with:</t>
            <artwork align="left" pn="section-3.1-4.1.2">
"[)&gt;" &lt;RS&gt; "06" &lt;GS&gt; "12N"
</artwork>
          </li>
          <li pn="section-3.1-4.2" derivedCounter="2.">Include one or more Data Records. This consists of a four-letter Field Identifier, followed by US-ASCII characters terminated with a &lt;Unit Separator&gt;.</li>
          <li pn="section-3.1-4.3" derivedCounter="3.">
            <t indent="0" pn="section-3.1-4.3.1">End with:</t>
            <artwork align="left" pn="section-3.1-4.3.2">
&lt;RS&gt;&lt;EoT&gt;
</artwork>
          </li>
        </ol>
        <t indent="0" pn="section-3.1-5">Additionally, there are optional flags that may be present in every Data Record, as described in Section 7.4 of <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/>.
These flags have no bearing on MUD processing.
A parser that is only collecting MUD URLs will not need to parse those flags.
A general-purpose SQRL parser will need more complexity.</t>
        <t indent="0" pn="section-3.1-6">Field Separator characters are used in SQRL to signify the beginning of a new unit of data.
A MUD-specific parser that encounters a Field Separator and has not yet collected the right MUD information <bcp14>MUST</bcp14> ignore the characters collected so far and then restart.</t>
        <t indent="0" pn="section-3.1-7">Environment records, as described in Section 7.4 of <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/>, look and act exactly as fields, with a special Field Identifier.
They serve no purpose when looking for MUD information and <bcp14>MAY</bcp14> be ignored.</t>
      </section>
      <section anchor="manufacturer-usage-descriptions-in-sqrl" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-manufacturer-usage-descript">Manufacturer Usage Descriptions in SQRL</name>
        <section anchor="b000-company-name" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.1">
          <name slugifiedName="name-b000-company-name">B000 Company Name</name>
          <t indent="0" pn="section-3.2.1-1">The B000 Data Record is mandatory in <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/>.
It <bcp14>MUST</bcp14> be in US-ASCII representation.
It should be a representation of the company or brand name.
It <bcp14>SHOULD</bcp14> match the ietf-mud/mud/mfg-name in the MUD file; however, the MUD file can contain arbitrary UTF-8 for this name, while the SQRL files are expected to be 7-bit US-ASCII.</t>
        </section>
        <section anchor="b001-product-name" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.2">
          <name slugifiedName="name-b001-product-name">B001 Product Name</name>
          <t indent="0" pn="section-3.2.2-1">The B001 Data Record is optional in <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/>.
It is the Product Name in US-ASCII.
Its presence is <bcp14>RECOMMENDED</bcp14>.
Some third parties that create QR code stickers might not know the product name with 100% certainty and <bcp14>MAY</bcp14> prefer to omit this rather than create further confusion.</t>
        </section>
        <section anchor="b002-model-number" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.3">
          <name slugifiedName="name-b002-model-number">B002 Model Number</name>
          <t indent="0" pn="section-3.2.3-1">The B002 Data Record is optional in <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/> but is MANDATORY in this profile.
It is the Model Name in US-ASCII.
It <bcp14>SHOULD</bcp14> match the optional ietf-mud/mud/model-name in the MUD file if that entry is present in the MUD file.   MUD files can contain arbitrary UTF-8 for the model-name, while the SQRL files are expected to be 7-bit US-ASCII.</t>
          <t indent="0" pn="section-3.2.3-2">If a third party that is creating QR codes cannot locate an official model number when creating their MUD file and QR code, then the third party <bcp14>SHOULD</bcp14> make one up.</t>
        </section>
        <section anchor="mudurl" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.4">
          <name slugifiedName="name-mud-url-data-record">MUD URL Data Record</name>
          <t indent="0" pn="section-3.2.4-1">A new Field Identifier has been assigned by the Reverse Logistics Association, which is "M180".
This record <bcp14>MUST</bcp14> be filled with the MUD URL.</t>
          <t indent="0" pn="section-3.2.4-2">Short URLs are easier to encode into a QR code because they require fewer pixels of
QR code.
More content in the QR code requires a bigger image.</t>
          <t indent="0" pn="section-3.2.4-3">Use of URL shortening services (see <xref target="URLshorten" format="default" sectionFormat="of" derivedContent="URLshorten"/>) can be useful, provided that the service is stable throughout the lifetime of the device and QR code and that the privacy stance of the service is well understood.
The Security Considerations section of <xref target="RFC3986" format="default" sectionFormat="of" derivedContent="RFC3986"/> applies, particularly Section <xref target="RFC3986" section="7.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc3986#section-7.1" derivedContent="RFC3986"/>.</t>
          <t indent="0" pn="section-3.2.4-4">Section 8.1 of <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/> also has some good advice on longevity concerns with URLs.</t>
          <t indent="0" pn="section-3.2.4-5">The URL provided <bcp14>MUST NOT</bcp14> have a query (?) portion present.
If one is present, the query portion <bcp14>MUST</bcp14> be removed before processing.</t>
        </section>
        <section anchor="macaddress" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.5">
          <name slugifiedName="name-device-mac-address">Device MAC Address</name>
          <t indent="0" pn="section-3.2.5-1">If a Media Access Control (MAC) address is used as a unique device identifier (which is <bcp14>RECOMMENDED</bcp14> if possible), then it <bcp14>MUST</bcp14> be included in this Data Record.</t>
          <t indent="0" pn="section-3.2.5-2">Section 9.10 of <xref target="SQRL" format="default" sectionFormat="of" derivedContent="SQRL"/> defines the Data Record "M06C" as the MAC address.
No format for the MAC address is provided in that document.</t>
          <t indent="0" pn="section-3.2.5-3">In this document, it is <bcp14>RECOMMENDED</bcp14> that 12 (or 16) hex octets are used with no spaces or punctuation.
(16 octets are used in the IEEE 64-bit Extended Unique Identifier (EUI-64) format used in <xref target="IEEE.802.15.4" format="default" sectionFormat="of" derivedContent="IEEE.802.15.4"/> and some next generation Ethernet proposals).
In this document, it is <bcp14>RECOMMENDED</bcp14> that uppercase hexadecimal letters be used.</t>
          <t indent="0" pn="section-3.2.5-4">Parsers that find punctuation (such as colons (":"), dashes ("-"),  US-ASCII Space (32), US-ASCII TAB (0), US-ASCII linefeed (10), or US-ASCII
  carriage return (13)) <bcp14>MUST</bcp14>
skip over the punctuation.
Parsers <bcp14>MUST</bcp14> tolerate hexadecimal in uppercase, lowercase, and even mixed case. Systems <bcp14>SHOULD</bcp14> canonicalize it to uppercase.</t>
        </section>
      </section>
    </section>
    <section anchor="applicability" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-applicability">Applicability</name>
      <t indent="0" pn="section-4-1">The use of stickers to convey MUD URLs would appear to have little value when the stickers are applied by the end-user organization and consumed by the same.
This is particularly the case when the QR code does not include the device MAC address.
In such a situation, the installer handling the device would scan the QR code to get the appropriate MUD file reference and have to input the associated MAC address as well.</t>
      <t indent="0" pn="section-4-2">In such a case, one might wonder why the installer couldn't just enter the appropriate MAC address and select the appropriate Access Control Lists (ACLs) for the device. Then a MUD file or QR code to convey the MAC 
   address would not be needed. However, the use of a MUD file (or 
   QR code or other way to convey the MAC address) is advantageous 
   because it offers several layers of indirection:
</t>
      <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-4-3">
	<li pn="section-4-3.1" derivedCounter="1.">The ACLs for a given device may be added or removed.</li>
        <li pn="section-4-3.2" derivedCounter="2.">The ACLs may refer to DNS names, which may map to IPv4 or IPv6 addresses.</li>
        <li pn="section-4-3.3" derivedCounter="3.">The entire file may be replaced and may also include supply chain information, such as Software Bill of Materials (SBOM).</li>
      </ol>
      <t indent="0" pn="section-4-4">In addition, the mechanism to install a new device (MAC address) to MUD file mapping does not need  to permit any other network security settings to be alterable by the person doing the installation.</t>
    </section>
    <section anchor="genericfirmware" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-generic-url-or-version-spec">Generic URL or Version-Specific URL</name>
      <t indent="0" pn="section-5-1">MUD URLs that are communicated in band by the device and that are programmed into the device's firmware may provide a firmware-specific version of the MUD URL. The advantage of this is that the resulting ACLs enforced in the network are specific to the needs of that version of the firmware.</t>
      <t indent="0" pn="section-5-2">A MUD URL that is affixed to the device with a sticker or etched into the case cannot be changed.</t>
      <t indent="0" pn="section-5-3">Given the considerations of "Updating MUD URLs vs Updating MUD files" (<xref target="I-D.ietf-opsawg-mud-acceptable-urls" section="6.1" sectionFormat="of" format="default" derivedLink="https://datatracker.ietf.org/doc/html/draft-ietf-opsawg-mud-acceptable-urls-04#section-6.1" derivedContent="MUD-URLS"/>), it is prudent to use a MUD URL that points to a MUD file that will only have new features added over time and never have features removed.
To recap, if a feature is removed from the firmware and the MUD file still permits it, then there is a potential hole that could perhaps be exploited.
The opposite situation, where a MUD file wrongly forbids something, leads to false positives in the  security system, and the evidence is that this results in the entire system being ignored.
Preventing attacks on core infrastructure may be more important than getting the ACL perfect.</t>
      <t indent="0" pn="section-5-4">When the firmware eventually receives built-in MUD URL support, then a more-specific URL may be used.</t>
      <t indent="0" pn="section-5-5">Note that in many cases, it will be third parties who are generating these QR codes, so the MUD file may be hosted by the third party.</t>
    </section>
    <section anchor="crowd-supply-of-mud-files" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-crowd-supply-of-mud-files">Crowd Supply of MUD Files</name>
      <t indent="0" pn="section-6-1">At the time of writing, the IETF MUD is a new IETF Proposed Standard.
Hence, IoT device manufacturers have not yet provided MUD profiles for their devices.
A research group at the University of New South Wales (UNSW Sydney) has developed an open-source tool, called MUDgee <xref target="MUDgee" format="default" sectionFormat="of" derivedContent="MUDgee"/>, which automatically generates a MUD file (profile) for an IoT device from its traffic trace in order to make this process faster, easier, and more accurate.
Note that the generated profile completeness solely depends on the completeness of the input traffic traces.
MUDgee assumes that all the activity seen is intended and benign.</t>
      <t indent="0" pn="section-6-2">UNSW researchers have applied MUDgee to about 30 consumer IoT devices from their lab testbed and publicly released their MUD files <xref target="MUDfiles" format="default" sectionFormat="of" derivedContent="MUDfiles"/>.
MUDgee can assist IoT manufacturers in developing and verifying MUD profiles, while also  helping adopters of these devices to ensure they are compatible with their organizational policies.</t>
      <t indent="0" pn="section-6-3">Similar processes have been done in a number of other public and private labs.
One of the strong motivations for this specification is to allow for this work to leave the lab and to be applied in the field.</t>
    </section>
    <section anchor="privacy-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-privacy-considerations">Privacy Considerations</name>
      <t indent="0" pn="section-7-1">The presence of the MUD URL in the QR code reveals the manufacturer of the device, the type or model of the device, and possibly the firmware version of the device.</t>
      <t indent="0" pn="section-7-2">The MAC address of the device will also need to be present, and this is potentially Personally Identifiable Information (PII).
Such QR codes should not be placed on the outside of the packaging and only on the device itself, ideally on a non-prominent part of the device (e.g., the bottom).</t>
      <t indent="0" pn="section-7-3">The QR code sticker should not be placed on any part of the device that might become visible to machine vision systems in the same area.
This includes security systems, robotic vacuum cleaners, or anyone taking a picture with a camera.
Such systems may store the picture(s) in such a way that a future viewer of the image will be able to decode the QR code, possibly through an assembly of multiple pictures.
Of course, the QR code is not, however, a certain indicator that the device is present, only that the QR code sticker that came with the device is present.</t>
      <t indent="0" pn="section-7-4">The use of URL shorting services discussed in <xref target="mudurl" format="default" sectionFormat="of" derivedContent="Section 3.2.4"/> may result in trading convenience and efficiency with privacy, since the service provider might leverage per-device or per-customer, short URLs to track and correlate requests.</t>
    </section>
    <section anchor="security-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <section anchor="qr-codes-are-not-assurances" numbered="true" removeInRFC="false" toc="include" pn="section-8.1">
        <name slugifiedName="name-qr-codes-are-not-assurances">QR Codes Are Not Assurances</name>
        <t indent="0" pn="section-8.1-1">The mere presence of a QR code on a device does not in itself create any security issues on its own.
Neither an attached paper sticker nor a laser-etched code in a plastic case will affect the device operation.</t>
        <t indent="0" pn="section-8.1-2">The QR code is not active; in general, it is not able to communicate using nearby networks.
It is conceivable that something more active is concealed in the sticker, e.g., an NFC or a Radio Frequency Identification (RFID) tag.
But, any sticker could contain such a thing, e.g., on some university campuses, stickers are often used as part of political campaigns and can be found attached all over the place.</t>
        <t indent="0" pn="section-8.1-3">Security issues that this protocol creates are related to assumptions that the presence of the QR code might imply.
The presence of the QR code may imply to some owners or network operators that the behavior of the device has been vetted by some authority.
It is here that some caution is required.</t>
        <t indent="0" pn="section-8.1-4">A possibly bigger risk from application of MUD file stickers to devices is that they may begin to convey a sense of safety to users of the device.
The presence of the sticker, possibly with the logo of the physical establishment in which the device is located, could convey to occupants of the establishment that this device is an official device,
for instance, a university that only deploys sensors on the university campus that have been vetted for compliance against a MUD definition.</t>
        <t indent="0" pn="section-8.1-5">The risk is then of social engineering, e.g., any device with a reasonable-looking QR code may be seen as a trusted device (even though such trust is not justified based on that evidence).
An attacker that wishes to infiltrate their own devices need only suitably camouflage the device with an appropriate sticker in order to convey legitimacy.</t>
      </section>
      <section anchor="mud-files-can-have-signatures" numbered="true" removeInRFC="false" toc="include" pn="section-8.2">
        <name slugifiedName="name-mud-files-can-have-signatur">MUD Files Can Have Signatures</name>
        <t indent="0" pn="section-8.2-1">The network operator who takes the MUD file designated by the QR code needs to be careful that they are validating the signature on the MUD file.
   The network operator needs to verify that the file is intact and 
   that the signer of the file is authorized to sign MUD files 
   for that vendor, or if a MUD file is a crowd-sourced definition,
   they need to establish if it can be trusted.
<xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/> does not define any infrastructure to authenticate or authorize MUD file signers.</t>
      </section>
      <section anchor="url-shortening-services-can-change-content" numbered="true" removeInRFC="false" toc="include" pn="section-8.3">
        <name slugifiedName="name-url-shortening-services-can">URL Shortening Services Can Change Content</name>
        <t indent="0" pn="section-8.3-1">If a URL shortening service is used, it is possible that the MUD controller will be redirected to another MUD file with different content.
The use of MUD signatures can detect attacks on the integrity of the file.
To do this, the MUD controller needs to be able to verify the signature on the file.</t>
        <t indent="0" pn="section-8.3-2">If a Trust-On-First-Use (TOFU) policy is used for signature trust anchors, then the URL shortening service can still attack if it substitutes content and signature on the first use.
MUD controllers and the people operating them need to be cautious when using TOFU.</t>
      </section>
      <section anchor="mud-qr-code-stickers-could-be-confused" numbered="true" removeInRFC="false" toc="include" pn="section-8.4">
        <name slugifiedName="name-mud-qr-code-stickers-could-">MUD QR Code Stickers Could Be Confused</name>
        <t indent="0" pn="section-8.4-1">Another issue with the stickers is that the wrong sticker could be applied to a device by a reseller or another trusted party, either in error or via some physical or socially engineered attack against that party.
The network operator now onboards a device and applies what they think is a legitimate network policy for the device in their hands, only it is in fact a policy for another kind of device.</t>
        <t indent="0" pn="section-8.4-2">Careful examination of stickers is in order!</t>
      </section>
      <section anchor="qr-code-can-include-mac-address" numbered="true" removeInRFC="false" toc="include" pn="section-8.5">
        <name slugifiedName="name-qr-code-can-include-a-mac-a">QR Code Can Include a MAC Address</name>
        <t indent="0" pn="section-8.5-1">Inclusion of the device-specific MAC address (described in <xref target="macaddress" format="default" sectionFormat="of" derivedContent="Section 3.2.5"/>) in the QR code makes use of the MUD code much easier, as it identifies the device specifically.
If the MAC address is not included, then a network operator, having the device in their hands, has to associate the policy with the device through some other interface.</t>
        <t indent="0" pn="section-8.5-2">Despite the significant advantage of having the MAC address included, it is unlikely that third-party stickers will include it.
Including the MAC address requires that a unique sticker with a QR code be created for each device.
This is possible if the sticker is applied by a manufacturer; it is already common to have a serial number and MAC address on the outside of the device.
In that case, if the QR code is part of that sticker, then the customization problem is not that complex.</t>
        <t indent="0" pn="section-8.5-3">For cases where a third party has produced the QR code, it is likely that every device of a particular model will have the same QR code applied, omitting the MAC address.
This increases the possibility that the wrong policy will be applied to a device.</t>
      </section>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-9-1">This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-opsawg-mud-acceptable-urls" to="MUD-URLS"/>
    <references pn="section-10">
      <name slugifiedName="name-references">References</name>
      <references pn="section-10.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8520" target="https://www.rfc-editor.org/info/rfc8520" quoteTitle="true" derivedAnchor="RFC8520">
          <front>
            <title>Manufacturer Usage Description Specification</title>
            <author initials="E." surname="Lear" fullname="E. Lear">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Droms" fullname="R. Droms">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Romascanu" fullname="D. Romascanu">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="March"/>
            <abstract>
              <t indent="0">This memo specifies a component-based architecture for Manufacturer Usage Descriptions (MUDs).  The goal of MUD is to provide a means for end devices to signal to the network what sort of access and network functionality they require to properly function.  The initial focus is on access control.  Later work can delve into other aspects.</t>
              <t indent="0">This memo specifies two YANG modules, IPv4 and IPv6 DHCP options, a Link Layer Discovery Protocol (LLDP) TLV, a URL, an X.509 certificate extension, and a means to sign and verify the descriptions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8520"/>
          <seriesInfo name="DOI" value="10.17487/RFC8520"/>
        </reference>
        <reference anchor="SQRL" target="https://rla.org/resource/12n-documentation" quoteTitle="true" derivedAnchor="SQRL">
          <front>
            <title>SQRL Codes: Standardized Quick Response for Logistics, Using the 12N Data Identifier</title>
            <author>
              <organization showOnFrontPage="true">Reverse Logistics Association</organization>
            </author>
            <date year="2017" month="February"/>
          </front>
        </reference>
      </references>
      <references pn="section-10.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="chickenegg" target="https://en.wikipedia.org/w/index.php?title=Chicken_or_the_egg&amp;oldid=1081728488" quoteTitle="true" derivedAnchor="chickenegg">
          <front>
            <title>Chicken or the egg</title>
            <author>
              <organization showOnFrontPage="true">Wikipedia</organization>
            </author>
            <date year="2022" month="April"/>
          </front>
        </reference>
        <reference anchor="IEEE.802.15.4" target="https://ieeexplore.ieee.org/document/7460875" quoteTitle="true" derivedAnchor="IEEE.802.15.4">
          <front>
            <title>IEEE Standard for Low-Rate Wireless Networks</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date year="2016" month="April"/>
          </front>
          <seriesInfo name="IEEE Std." value="802.15.4-2015"/>
          <seriesInfo name="DOI" value="10.1109/IEEESTD.2016.7460875"/>
        </reference>
        <reference anchor="IEEE802-1AR" target="https://standards.ieee.org/ieee/802.1AR/6995/" quoteTitle="true" derivedAnchor="IEEE802-1AR">
          <front>
            <title>IEEE Standard for Local and Metropolitan Area Networks - Secure Device Identity</title>
            <author>
              <organization showOnFrontPage="true">IEEE</organization>
            </author>
            <date month="August" year="2018"/>
          </front>
          <seriesInfo name="IEEE Std" value="802.1AR-2018"/>
        </reference>
        <reference anchor="isoiec18004" quoteTitle="true" derivedAnchor="isoiec18004">
          <front>
            <title>Information technology - Automatic identification and data capture techniques - QR Code bar code symbology specification</title>
            <author>
              <organization showOnFrontPage="true">ISO/IEC</organization>
            </author>
            <date year="2015" month="February"/>
          </front>
          <seriesInfo name="ISO/IEC" value="18004:2015"/>
        </reference>
        <reference anchor="mh10" target="https://webstore.ansi.org/Standards/MHIA/ANSIMH102016" quoteTitle="true" derivedAnchor="mh10">
          <front>
            <title>Data Identifier and Application Identifier Standard</title>
            <author>
              <organization showOnFrontPage="true">ANSI</organization>
            </author>
            <date month="June" year="2016"/>
          </front>
          <seriesInfo name="ANSI" value="MH10.8.2-2016"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-mud-acceptable-urls" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-opsawg-mud-acceptable-urls-04" derivedAnchor="MUD-URLS">
          <front>
            <title>Authorized update to MUD URLs</title>
            <author fullname="Michael Richardson">
              <organization showOnFrontPage="true">Sandelman Software Works</organization>
            </author>
            <author fullname="Wei Pan">
              <organization showOnFrontPage="true">Huawei Technologies</organization>
            </author>
            <author fullname="Eliot Lear">
              <organization showOnFrontPage="true">Cisco Systems</organization>
            </author>
            <date month="October" day="6" year="2021"/>
            <abstract>
              <t indent="0">   This document provides a way for an RFC8520 Manufacturer Usage
   Description (MUD) definitions to declare what are acceptable
   replacement MUD URLs for a device.

   RFCEDITOR-please-remove: this document is being worked on at:
   https://github.com/mcr/iot-mud-acceptable-urls

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-mud-acceptable-urls-04"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-opsawg-mud-acceptable-urls-04.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="MUDfiles" target="https://iotanalytics.unsw.edu.au/mud/" quoteTitle="true" derivedAnchor="MUDfiles">
          <front>
            <title>MUD Profiles</title>
            <author>
              <organization showOnFrontPage="true">UNSW Sydney</organization>
            </author>
          </front>
        </reference>
        <reference anchor="MUDgee" target="https://github.com/ayyoob/mudgee" quoteTitle="true" derivedAnchor="MUDgee">
          <front>
            <title>MUDgee</title>
            <author>
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="July"/>
          </front>
          <refcontent>commit f63a88d</refcontent>
        </reference>
        <reference anchor="qrcode" target="https://en.wikipedia.org/w/index.php?title=QR_code&amp;oldid=1082559657" quoteTitle="true" derivedAnchor="qrcode">
          <front>
            <title>QR code</title>
            <author>
              <organization showOnFrontPage="true">Wikipedia</organization>
            </author>
            <date year="2022" month="April"/>
          </front>
        </reference>
        <reference anchor="qrencode" target="https://github.com/fukuchi/libqrencode" quoteTitle="true" derivedAnchor="qrencode">
          <front>
            <title>libqrencode</title>
            <author>
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="September"/>
          </front>
          <refcontent>commit 715e29f</refcontent>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" quoteTitle="true" derivedAnchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Fielding" fullname="R. Fielding">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Masinter" fullname="L. Masinter">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="January"/>
            <abstract>
              <t indent="0">A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" quoteTitle="true" derivedAnchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author initials="T." surname="Bray" fullname="T. Bray" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="December"/>
            <abstract>
              <t indent="0">JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t indent="0">This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8995" target="https://www.rfc-editor.org/info/rfc8995" quoteTitle="true" derivedAnchor="RFC8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author initials="M." surname="Pritikin" fullname="M. Pritikin">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Richardson" fullname="M. Richardson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Eckert" fullname="T. Eckert">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Behringer" fullname="M. Behringer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Watsen" fullname="K. Watsen">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2021" month="May"/>
            <abstract>
              <t indent="0">This document specifies automated bootstrapping of an Autonomic Control Plane.  To do this, a Secure Key Infrastructure is bootstrapped.  This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline.  We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device.  The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="URLshorten" target="https://en.wikipedia.org/w/index.php?title=URL_shorteningg&amp;oldid=1084979184" quoteTitle="true" derivedAnchor="URLshorten">
          <front>
            <title>URL shortening</title>
            <author>
              <organization showOnFrontPage="true">Wikipedia</organization>
            </author>
            <date year="2022" month="April"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgements" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">This work was supported by the Canadian Internet Registration Authority (cira.ca).</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="M." surname="Richardson" fullname="Michael Richardson">
        <organization showOnFrontPage="true">Sandelman Software Works</organization>
        <address>
          <email>mcr+ietf@sandelman.ca</email>
        </address>
      </author>
      <author initials="J." surname="Latour" fullname="Jacques Latour">
        <organization showOnFrontPage="true">CIRA Labs</organization>
        <address>
          <email>Jacques.Latour@cira.ca</email>
        </address>
      </author>
      <author initials="H." surname="Habibi Gharakheili" fullname="Hassan Habibi Gharakheili">
        <organization showOnFrontPage="true">UNSW Sydney</organization>
        <address>
          <email>h.habibi@unsw.edu.au</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
