<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.26 (Ruby 3.0.3) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-t2trg-sworn-05" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.1 -->
  <front>
    <title>SWORN: Secure Wake on Radio Nudging</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-t2trg-sworn-05"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author initials="Y." surname="Li" fullname="Yizhou Li">
      <organization>Huawei Technologies</organization>
      <address>
        <email>liyizhou@huawei.com</email>
      </address>
    </author>
    <date year="2022" month="February" day="07"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Normally off devices (RFC7228) would need to expend considerable energy
resources to be reachable at all times.  Instead, MAC layer mechanisms
are often employed that allow the last hop router of the device to "wake"
the device via radio when needed.  Activating these devices even for a
short time still
does expend energy and thus should be available to authorized
correspondents only.  Traditionally, this has been achieved by heavy
firewalling, allowing only authorized hosts to reach the device at
all.  This may be too inflexible for an Internet of Things.</t>
      <t>The present report describes how to use a combination of currently
standardized technologies to securely effect this
authorization.</t>
      <t>We also discuss how the general approach of the original SWORN
protocol can be extended to cover additional use cases and
implementation environments.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bormann-t2trg-sworn/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Thing-to-Thing (T2TRG) Research Group mailing list (<eref target="mailto:t2trg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/t2trg/"/>.
      </t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>(See Abstract.)</t>
      <section anchor="terms">
        <name>Terminology</name>
        <t>The term "byte" is used in its now customary sense as a synonym for
"octet".
<!--
Where bit arithmetic is explained, this document uses the notation
familiar from the programming language C (including C++14's 0bnnn
binary literals), except that the operator "\*\*" stands for
exponentiation.
 -->
        </t>
        <t>Messages defined in this document employ CBOR <xref target="RFC8949"/> and are
described in CDDL <xref target="RFC8610"/>.</t>
        <t>Terms used in this draft:</t>
        <dl>
          <dt>
C:  </dt>
          <dd>
            <t>Client, or Correspondent host.  The node that wants to effect "Wake
on Radio" on D by sending a message to D.</t>
          </dd>
          <dt>
D:  </dt>
          <dd>
            <t>Device.  This is typically battery operated and "Normally off"
<xref target="RFC7228"/>.</t>
          </dd>
          <dt>
R:  </dt>
          <dd>
            <t>Router.  The router that is adjacent to D, sharing an energy-saving
link with D, and serving as a ("parent") router to D.</t>
          </dd>
          <dt>
MAC:  </dt>
          <dd>
            <t>Message Authentication Code (when discussing authentication mechanisms)</t>
          </dd>
          <dt>
MAC:  </dt>
          <dd>
            <t>Media Access Control (when discussing protocol layers)</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="the-original-sworn-proposal">
      <name>The original SWORN proposal</name>
      <section anchor="assumptions-and-requirements">
        <name>Assumptions and Requirements</name>
        <t>D is a normally off <xref target="RFC7228"/> device, waking up very briefly to
communicate with its first hop router R.  R and D share a MAC layer
that allows R to keep D in extended wake periods.</t>
        <t>R and D have a security association.  (This may have been created in
network onboarding, or be setup dynamically from the device-to-network
security association when D chose R as a parent router.)</t>
        <t>D wants to authorize a client (or correspondent host) C to ask R to
initiate wake periods in D.</t>
        <t>Because of changes in the radio environment, D needs to be able to
change its parent router from R1 to R2 occasionally.  This should
not cause a need to notify all its clients; which parent router is
used by D is therefore opaque to its clients as usual in IP.</t>
      </section>
      <section anchor="security-goals">
        <name>Security goals</name>
        <t>Since packets with wake tokens are kept in R for extended periods, the
limited size buffer provided in R for this is a resource that needs to
be protected to protect availability.</t>
        <t>D uses up battery for a wake period, which would make it susceptible
to battery depletion attacks.  To protect availability, D should only
undergo wake periods that R has commanded based on previous
authorization by D.</t>
        <t>There may be confidentiality requirements (e.g., for privacy); this is
not addressed in the present version of this report.</t>
      </section>
      <section anchor="mechanism">
        <name>Mechanism</name>
        <figure anchor="fig-sworn-mech">
          <name>Illustration of a potential setup with Authorization Managers</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" class="diagram" version="1.1" height="265" width="504" viewBox="0 0 504.0 265.0">
                <g transform="translate(8,16)">
                  <path d="M 0,16 L 136,16" fill="none" stroke="black"/>
                  <path d="M 352,16 L 488,16" fill="none" stroke="black"/>
                  <path d="M 136,32 L 152,32" fill="none" stroke="black"/>
                  <path d="M 136,48 L 200,48" fill="none" stroke="black"/>
                  <path d="M 0,80 L 104,80" fill="none" stroke="black"/>
                  <path d="M 104,80 L 136,80" fill="none" stroke="black"/>
                  <path d="M 352,80 L 416,80" fill="none" stroke="black"/>
                  <path d="M 416,80 L 456,80" fill="none" stroke="black"/>
                  <path d="M 456,80 L 488,80" fill="none" stroke="black"/>
                  <path d="M 0,160 L 24,160" fill="none" stroke="black"/>
                  <path d="M 24,160 L 104,160" fill="none" stroke="black"/>
                  <path d="M 104,160 L 136,160" fill="none" stroke="black"/>
                  <path d="M 176,160 L 200,160" fill="none" stroke="black"/>
                  <path d="M 200,160 L 240,160" fill="none" stroke="black"/>
                  <path d="M 240,160 L 280,160" fill="none" stroke="black"/>
                  <path d="M 280,160 L 312,160" fill="none" stroke="black"/>
                  <path d="M 352,160 L 376,160" fill="none" stroke="black"/>
                  <path d="M 376,160 L 416,160" fill="none" stroke="black"/>
                  <path d="M 416,160 L 456,160" fill="none" stroke="black"/>
                  <path d="M 456,160 L 488,160" fill="none" stroke="black"/>
                  <path d="M 136,192 L 168,192" fill="none" stroke="black"/>
                  <path d="M 312,192 L 344,192" fill="none" stroke="black"/>
                  <path d="M 0,224 L 136,224" fill="none" stroke="black"/>
                  <path d="M 176,224 L 312,224" fill="none" stroke="black"/>
                  <path d="M 352,224 L 488,224" fill="none" stroke="black"/>
                  <path d="M 340,56 L 352,56" fill="none" stroke="black"/>
                  <path d="M 0,16 L 0,80" fill="none" stroke="black"/>
                  <path d="M 0,160 L 0,224" fill="none" stroke="black"/>
                  <path d="M 24,96 L 24,160" fill="none" stroke="black"/>
                  <path d="M 104,80 L 104,144" fill="none" stroke="black"/>
                  <path d="M 104,144 L 104,160" fill="none" stroke="black"/>
                  <path d="M 136,16 L 136,32" fill="none" stroke="black"/>
                  <path d="M 136,32 L 136,48" fill="none" stroke="black"/>
                  <path d="M 136,48 L 136,80" fill="none" stroke="black"/>
                  <path d="M 136,160 L 136,192" fill="none" stroke="black"/>
                  <path d="M 136,192 L 136,224" fill="none" stroke="black"/>
                  <path d="M 176,160 L 176,224" fill="none" stroke="black"/>
                  <path d="M 240,128 L 240,160" fill="none" stroke="black"/>
                  <path d="M 312,160 L 312,192" fill="none" stroke="black"/>
                  <path d="M 312,192 L 312,224" fill="none" stroke="black"/>
                  <path d="M 352,16 L 352,80" fill="none" stroke="black"/>
                  <path d="M 352,160 L 352,224" fill="none" stroke="black"/>
                  <path d="M 416,80 L 416,160" fill="none" stroke="black"/>
                  <path d="M 488,16 L 488,48" fill="none" stroke="black"/>
                  <path d="M 488,48 L 488,80" fill="none" stroke="black"/>
                  <path d="M 488,160 L 488,192" fill="none" stroke="black"/>
                  <path d="M 488,192 L 488,224" fill="none" stroke="black"/>
                  <path d="M 200,48 L 240,128" fill="none" stroke="black"/>
                  <path d="M 328,32 L 340,56" fill="none" stroke="black"/>
                  <path d="M 24,88 L 24,96" fill="none" stroke="black"/>
                  <polygon points="40.000000,96.000000 28.000000,90.400002 28.000000,101.599998" transform="rotate(270.000000, 24.000000, 96.000000)" fill="black"/>
                  <path d="M 104,144 L 104,152" fill="none" stroke="black"/>
                  <polygon points="120.000000,144.000000 108.000000,138.399994 108.000000,149.600006" transform="rotate(90.000000, 104.000000, 144.000000)" fill="black"/>
                  <polygon points="176.000000,192.000000 164.000000,186.399994 164.000000,197.600006" transform="rotate(0.000000, 168.000000, 192.000000)" fill="black"/>
                  <polygon points="352.000000,192.000000 340.000000,186.399994 340.000000,197.600006" transform="rotate(0.000000, 344.000000, 192.000000)" fill="black"/>
                  <text text-anchor="middle" font-family="monospace" x="216" y="36" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="52" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="152" y="116" fill="black" font-size="1em">v</text>
                  <text text-anchor="middle" font-family="monospace" x="256" y="244" fill="black" font-size="1em">f</text>
                  <text text-anchor="middle" font-family="monospace" x="456" y="244" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="36" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="312" y="36" fill="black" font-size="1em">x</text>
                  <text text-anchor="middle" font-family="monospace" x="368" y="68" fill="black" font-size="1em">M</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="116" fill="black" font-size="1em">f</text>
                  <text text-anchor="middle" font-family="monospace" x="144" y="132" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="196" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="196" fill="black" font-size="1em">c</text>
                  <text text-anchor="middle" font-family="monospace" x="152" y="244" fill="black" font-size="1em">s</text>
                  <text text-anchor="middle" font-family="monospace" x="432" y="52" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="68" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="392" y="196" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="368" y="244" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="376" y="36" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="68" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="132" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="244" fill="black" font-size="1em">c</text>
                  <text text-anchor="middle" font-family="monospace" x="144" y="116" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="72" y="132" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="120" y="132" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="196" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="184" y="36" fill="black" font-size="1em">S</text>
                  <text text-anchor="middle" font-family="monospace" x="272" y="36" fill="black" font-size="1em">c</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="52" fill="black" font-size="1em">z</text>
                  <text text-anchor="middle" font-family="monospace" x="120" y="100" fill="black" font-size="1em">2</text>
                  <text text-anchor="middle" font-family="monospace" x="328" y="244" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="464" y="244" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="88" y="68" fill="black" font-size="1em">A</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="100" fill="black" font-size="1em">A</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="116" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="196" fill="black" font-size="1em">R</text>
                  <text text-anchor="middle" font-family="monospace" x="128" y="132" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="196" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="196" fill="black" font-size="1em">D</text>
                  <text text-anchor="middle" font-family="monospace" x="376" y="244" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="448" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="128" y="116" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="244" fill="black" font-size="1em">5</text>
                  <text text-anchor="middle" font-family="monospace" x="320" y="244" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="36" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="304" y="36" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="368" y="36" fill="black" font-size="1em">D</text>
                  <text text-anchor="middle" font-family="monospace" x="392" y="36" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="244" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="36" fill="black" font-size="1em">c</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="52" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="160" y="116" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="224" y="244" fill="black" font-size="1em">v</text>
                  <text text-anchor="middle" font-family="monospace" x="88" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="464" y="52" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="96" y="68" fill="black" font-size="1em">M</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="36" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="240" y="36" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="80" y="52" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="208" y="196" fill="black" font-size="1em">u</text>
                  <text text-anchor="middle" font-family="monospace" x="344" y="244" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="192" y="36" fill="black" font-size="1em">h</text>
                  <text text-anchor="middle" font-family="monospace" x="80" y="68" fill="black" font-size="1em">C</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="100" fill="black" font-size="1em">s</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="244" fill="black" font-size="1em">p</text>
                  <text text-anchor="middle" font-family="monospace" x="392" y="68" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="132" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="368" y="196" fill="black" font-size="1em">D</text>
                  <text text-anchor="middle" font-family="monospace" x="80" y="244" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="52" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="68" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="384" y="196" fill="black" font-size="1em">v</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="244" fill="black" font-size="1em">u</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="36" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="256" y="36" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="52" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="112" y="52" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="96" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="132" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="244" fill="black" font-size="1em">3</text>
                  <text text-anchor="middle" font-family="monospace" x="136" y="244" fill="black" font-size="1em">4</text>
                  <text text-anchor="middle" font-family="monospace" x="72" y="52" fill="black" font-size="1em">z</text>
                  <text text-anchor="middle" font-family="monospace" x="168" y="244" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="360" y="244" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="244" fill="black" font-size="1em">s</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="244" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="296" y="36" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="432" y="68" fill="black" font-size="1em">D</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="196" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="244" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="136" y="132" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="448" y="244" fill="black" font-size="1em">T</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="36" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="280" y="36" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="376" y="52" fill="black" font-size="1em">u</text>
                  <text text-anchor="middle" font-family="monospace" x="448" y="68" fill="black" font-size="1em">M</text>
                  <text text-anchor="middle" font-family="monospace" x="104" y="52" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="68" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="384" y="68" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="400" y="68" fill="black" font-size="1em">g</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="196" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="244" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="36" fill="black" font-size="1em">C</text>
                  <text text-anchor="middle" font-family="monospace" x="248" y="36" fill="black" font-size="1em">m</text>
                  <text text-anchor="middle" font-family="monospace" x="384" y="36" fill="black" font-size="1em">v</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="68" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="264" y="244" fill="black" font-size="1em">y</text>
                  <text text-anchor="middle" font-family="monospace" x="352" y="244" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="472" y="244" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="480" y="244" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="168" y="36" fill="black" font-size="1em">0</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="52" fill="black" font-size="1em">h</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="68" fill="black" font-size="1em">M</text>
                  <text text-anchor="middle" font-family="monospace" x="176" y="244" fill="black" font-size="1em">d</text>
                  <text text-anchor="middle" font-family="monospace" x="384" y="244" fill="black" font-size="1em">y</text>
                  <text text-anchor="middle" font-family="monospace" x="288" y="36" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="72" y="100" fill="black" font-size="1em">k</text>
                  <text text-anchor="middle" font-family="monospace" x="200" y="196" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="244" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="132" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="196" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="216" y="196" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="168" y="116" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="36" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="368" y="52" fill="black" font-size="1em">A</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="64" y="68" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="192" y="196" fill="black" font-size="1em">R</text>
                  <text text-anchor="middle" font-family="monospace" x="296" y="244" fill="black" font-size="1em">6</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="52" fill="black" font-size="1em">A</text>
                  <text text-anchor="middle" font-family="monospace" x="32" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="40" y="100" fill="black" font-size="1em">1</text>
                  <text text-anchor="middle" font-family="monospace" x="56" y="116" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="52" fill="black" font-size="1em">u</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="68" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="136" y="116" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="160" y="244" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="424" y="244" fill="black" font-size="1em">d</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="36" fill="black" font-size="1em">s</text>
                  <text text-anchor="middle" font-family="monospace" x="392" y="52" fill="black" font-size="1em">h</text>
                  <text text-anchor="middle" font-family="monospace" x="440" y="68" fill="black" font-size="1em">A</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="196" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="24" y="196" fill="black" font-size="1em">l</text>
                  <text text-anchor="middle" font-family="monospace" x="72" y="196" fill="black" font-size="1em">C</text>
                  <text text-anchor="middle" font-family="monospace" x="240" y="244" fill="black" font-size="1em">r</text>
                  <text text-anchor="middle" font-family="monospace" x="312" y="244" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="200" y="36" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="416" y="52" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="456" y="52" fill="black" font-size="1em">o</text>
                  <text text-anchor="middle" font-family="monospace" x="376" y="68" fill="black" font-size="1em">a</text>
                  <text text-anchor="middle" font-family="monospace" x="336" y="244" fill="black" font-size="1em">i</text>
                  <text text-anchor="middle" font-family="monospace" x="48" y="36" fill="black" font-size="1em">n</text>
                  <text text-anchor="middle" font-family="monospace" x="320" y="36" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="408" y="68" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="16" y="196" fill="black" font-size="1em">C</text>
                  <text text-anchor="middle" font-family="monospace" x="72" y="244" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="232" y="244" fill="black" font-size="1em">e</text>
                  <text text-anchor="middle" font-family="monospace" x="384" y="52" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="120" y="116" fill="black" font-size="1em">D</text>
                  <text text-anchor="middle" font-family="monospace" x="152" y="132" fill="black" font-size="1em">t</text>
                  <text text-anchor="middle" font-family="monospace" x="376" y="196" fill="black" font-size="1em">e</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----------------+  .                       +----------------+
| Client         +-- 0 Share some context\. | Device         |
| Authorization  +-------.                \_| Authorization  +
| Manager CAM    |        \                 | Manager DAM    |
+------------+---+         \                +-------+----+---+
   ^ 1 Ask   | 2            \                       |
   | for     | Deliver       \                      |
   | grant   | grant          |                     |
   |         v                |                     |
+--+---------+---+    +--+----+----+---+    +--+----+----+---+
|                |    |                |    |                |
| Client C       +--->| Router R       +--->| Device D       +
|                |    |                |    |                |
+----------------+    +----------------+    +----------------+
  3 compute      4 send   5 verify   6 optionally send  Token
]]></artwork>
          </artset>
        </figure>
        <section anchor="wake-grant">
          <name>Wake-Grant</name>
          <t>A wake grant is a CWE <xref target="RFC8152"/>, packaging a grant key, provided from D
or D's authorization manager to C.
(Possibly the grant key can be conveyed within a larger confidentiality
protected data structure or channel, such as a CWT <xref target="RFC8392"/> employing
a <tt>cnf</tt> claim for the key <xref target="RFC8747"/>.)</t>
          <t>A wake grant may then be used by C for initiating (a possibly limited
number or total duration of) wake periods, employing Wake-Tokens.</t>
          <t>Information about the wake grant is also made available to R, so it
knows the grant key and the parameters of the wake grant.  (Upon a
change of parent router, D will need to make that information
available to its new parent router as well.)</t>
        </section>
        <section anchor="wake-token">
          <name>Wake-Token</name>
          <t>A wake token is a CWS, in a COSE_MAC0 <xref target="RFC8152"/> message built with the
Wake-Grant's key, containing a CBOR data item of the form:</t>
          <sourcecode type="CDDL"><![CDATA[
[serial: uint, wake-period: duration]
]]></sourcecode>
          <t>The CWS is additionally marked by tagging it with a CBOR tag
1398230866 (a value that becomes visible in a packet dump as ASCII
"SWOR").</t>
          <t>(Discussion: Should this be a CWE for confidentiality?)</t>
          <t>The serial is used for replay detection, based on the usual window
mechanism.  Wake-Tokens for a fresh wake grant start out with serial
numbers at zero.</t>
          <t>A Wake-Token instructs R to use MAC mechanisms to provide an extended
wake period to D the next time it wakes up.</t>
          <t>The wake token is sent from C to D; R finds it by examining packets
that it would need to forward to D.</t>
        </section>
        <section anchor="finding-the-wake-token">
          <name>Finding the wake token</name>
          <t>As C is addressing D with the wake token, R needs to find it in
traffic purportedly for D.</t>
          <t>As described in <xref target="I-D.bormann-intarea-alfi"/>, this cannot be reasonably done with IP
options (which originally would have carried this kind of information
in the IP architecture).</t>
          <t>Instead, R finds the wake token by deep packet inspection.
The wake token is found by a heuristic that may have false positives;
this is not a problem as the wake token is then verified by its MAC.</t>
          <t>SWORN requests are carried in UDP packets that also may have a payload
function.  To this end, they are conveyed as CoAP messages <xref target="RFC7252"/>.  The wake
token is carried in a CoAP option, Wake-Token.  R can find the option
by decoding the CoAP packet in the UDP payload or simply by scanning
for the 5-byte signature 0xda53574f52 created by the CBOR wake token tag.
Any potential wake token so found is then validated as a CWS.</t>
          <t>This works well with <xref target="RFC8613"/> as the CoAP security mechanism for
any payload function that this packet may have.  To be able to use
DTLS as well, we define a media type
"application/dtls-payload" that can be used in a CoAP POST request to
send a DTLS payload as payload of a CoAP message (in other words, the
CoAP POST request carries a Wake-Token and a Content-Format option).
(Any return packet can be similarly sent back in the POST response.)
(TODO: This media type has to define the port number juggling needed.)</t>
        </section>
      </section>
    </section>
    <section anchor="general">
      <name>Generalizing SWORN towards Token-Based In-Network Authorization</name>
      <t>The original SWORN protocol described so far was designed to solve a
specific use case in a specific implementation environment.</t>
      <t>We can open up the design space in a number of dimensions, which will
be discussed in the following subsections.</t>
      <t>The general idea of SWORN can be described as:</t>
      <ul spacing="normal">
        <li>giving a packet sender a way to send authenticating information with
the packet,</li>
        <li>that is not intended for the recipient of the packet, but instead</li>
        <li>to be checked at particular enforcement points on the way,</li>
        <li>which are not necessarily known by the sender,</li>
        <li>to derive authorization to forward.</li>
      </ul>
      <t>Generalizing the terms used so far, we can identify the following
players and components:</t>
      <ul spacing="normal">
        <li>Packets P that require authorization (more generally, the reliable
derivation of attributes) by entities on their way,</li>
        <li>a sender (C) and a recipient (D), where the packets P go from C to D,</li>
        <li>SWORN policy enforcement points (SPEPs) that are in the network in
places where the generalized SWORN authorization of and derivation
of attributes for the packets is performed; the ones that are active
for a packet P are called R, generalizing the
concept of the last-hop router R in the SWORN model,</li>
        <li>the "grant" G that provides setup information for the SPEP (wake
grant in SWORN), and</li>
        <li>the "token" T that is sent with a specific packet P to carry
information that will be checked by R/SPEP (wake token in SWORN).</li>
      </ul>
      <t>This model can accommodate additional entities, "authorization
managers" (AM), that pair with C (CAM) and D (DAM) for purposes of
creating setup information and potentially distributing it among C and
D and to network elements that might play the role of R.
The distribution may be further facilitated by adding Router AMs
(RAM).</t>
      <t>The roles of C and D can also be played by tunnel ingress/egress
points; this can enable the use of unmodified client and device
implementations (note that D, if a DAM is used, need not implement
anything special at all, but can of course benefit from information in
the token).</t>
      <section anchor="position-of-router-r">
        <name>Position of router R</name>
        <t>The original SWORN protocol is based on a 6LoWPAN-like environment
where a host (D) has a defined relationship (often including a MAC layer
security association) to the last-hop router(s) (R) supplying it with packets.
This enables D to provide R with information about wake grants in a
secure way, or to delegate this to its authorization manager.</t>
        <t>Within a limited domain <xref target="RFC8799"/>, routers that act as SWORN policy enforcement
points (SPEPs) may be known by configuration.  Security associations
from D's authorization manager (DAM) to each such PEP may be set up
already, providing a way for DAM to broadcast policy information to
all such SPEPs.  This enables policy distribution without any
involvement from D.</t>
        <t>Alternatively, C can have a security association with the SPEPs
(possibly indirectly through a client authorization manager CAM) and
can send special SWORN probe packets towards D that carry grant
information that the SPEPs on the way can extract and copy into their
local (soft?) state.</t>
        <t>A SPEP could also react to tokens it does not understand by asking
authorization managers for the applicable grant; this may be
facilitated by identifying information in a token such as a "key ID".
It remains a quality of implementation issue whether the packet can be
buffered while the relevant grant is obtained.
(On-demand retrieval of grants also adds an obvious attack vector.)</t>
      </section>
      <section anchor="position-of-token-in-packet">
        <name>Position of Token in Packet</name>
        <t>The original SWORN protocol goes to some lengths to avoid the need for
C to influence properties below the application layer of the packets
it sends.</t>
        <t>However, routers may be able to provide more efficient implementations
of SWORN when the token information is in a header.  So if C has a
platform API that could create/influence such a header, this could be
used instead.</t>
        <t>While penultimate hop processing is in use in a number of
architectures (see, e.g., <xref section="3.16" sectionFormat="of" target="RFC3031"/> or
<xref target="I-D.ietf-bier-php"/>), it is not currently part of the IPv6
architecture, so there is no obvious IPv6 header that could carry this information.</t>
      </section>
      <section anchor="range-of-checking">
        <name>Range of Checking</name>
        <t>Tokens in the original SWORN protocol only check a serial number;
attackers might be able to extract such a token from a packet,
suppress the packet, and use the token in a different packet.
We call this form of attack "malicious reuse".
Replay protection cannot prevent this.</t>
        <t>One way to reduce this attack vector is to make the grant very
specific to only a certain kind of packets, for instance by effectively
including an ACL (carrying, say, elements of the 5-tuple) with the grant.
(The grant could also include quantitative aspects, such as a rate
limit.)
The cryptographic makeup of the grant then must be such that a client
cannot modify the ACL during generation of a token from the grant.</t>
        <t>Alternatively, some kinds of malicious reuse can be made harder to perform by
including more information in the signing input of the MAC checked for
a token.
If a wake grant is shared between multiple instances of D and C and
therefore can only have a weak ACL, including the source and
destination addresses (IP address and possibly port) in the signing
input for a specific token T prevents reuse of T for a different D/C pair.</t>
        <t>Including the payload in the signing input (i.e., essentially
authenticating the entire packet) makes malicious reuse of tokens less
useful for an attacker as no new information can be injected by it,
but requires considerable processing power in the SPEP.
We assume that any authentication of the whole packet will most likely
be performed by its recipient D, based on a security association it
has with the sender C; R or any other SPEPs are not burdened with this
authentication.  (However, some authentication offload in a last-hop
router R may be desirable for a very constrained device D, at least if
R and D have a robust security association that can provide the
level of authentication needed.)</t>
        <t>Most likely, a token should include some information about what is
included in the signing input.  (This information itself should then
also be included in the signing input.)
This coverage information could take the form of a bitmap, or of a set
of offset-length pairs.
If coverage information and covered information is in a form that can
be processed by a network processor, higher processing and forwarding
rates can be achieved.</t>
      </section>
      <section anchor="information-attributes-to-be-used-on-the-way">
        <name>Information (attributes) to be used on the way</name>
        <t>The original SWORN protocol provides one attribute beyond the
authentication itself: a wake period to be used in the
MAC layer that connects R and D.
This can be generalized to other parameters that control routing and
forwarding, e.g., information that would be equivalent to a DSCP.</t>
        <t>An ambitious use case might be a path from a sender to a recipient
that crosses
multiple domains, where each domain boundary normally bleaches DSCP
information coming in from the previous domain.</t>
        <t>The domain ingress router might check the SWORN information to be able to
apply a policy not to bleach, or to install DSCP information specific
to the domain it belongs to, or to operate on some DSCP-like information
outside the DSCP field.</t>
        <t>Note that the model used by this extended version of SWORN is based on
an assumption that it is in the interest of all players to cooperate
in achieving the objectives.  Security is used to ensure that only
actually authorized players can participate.  But, in general, the
assumed trust and incentive models work best within a limited domain
<xref target="RFC8799"/>, which spans one or maybe two security domains only.</t>
      </section>
      <section anchor="example-arrangements">
        <name>Example arrangements</name>
        <t>This subsection discusses a number of example arrangements with more complex
relationships between the players.
Once the set of clients starts to scale, the issue of key setup
becomes significant.  In the best case, the SPEPs do not need to be
provisioned (set up) separately for each separate client authorization.</t>
        <t>The arrangements presented here are based on symmetric cryptography, specifically
MACs (message authentication codes).
The MACs are based on grant keys <tt>GK</tt> shared between the origin or a
packet (or of a grant key, see below) and the enforcement point.
Several grant keys may need to be employed; they are differentiated in
the names of variables defined in this section by using suffixes such as
<tt>_z</tt> for authorization and <tt>_n</tt> for authentication, or <tt>_1</tt> and <tt>_2</tt>
for consecutive steps.</t>
        <t>In these arrangements,
grant keys are managed by "authorization managers" (AM, compare <xref target="fig-sworn-mech"/>); we
simplify the discussion by mentioning only the client authorization
manager (CAM), which actually may be in contact with other authorization
managers closer to the SPEPs.  Some grant keys are shared only between
CAM and the SPEPs, requiring the CAM to send a pre-computed MAC to the
client; some grant keys are shared between CAM, Client C, and the
SPEPs, allowing the client to compute MACs covering variable parts of
the packets.</t>
        <t>The MACs of the example arrangements employ a mechanism to indicate
which parts of the packet go into the signing input for the MAC, the
<em>coverage area indication</em>, or <tt>cai</tt> for short, to be included in each
actual packet.
The realization for this could contain a bitmap with bits that enable
individual predefined fields (e.g., elements of the 5-tuple), plus
pointer/length information for the payload or other dynamic attributes
that need to be checked.
As discussed above, the coverage area indication itself should also go
into the signing input for the MAC.</t>
        <t>The notation "fields(cai_x)" stands for the actual content of the fields in the
packet as enumerated by the coverage area indication cai_x.
If these fields are constant for the authorization conveyed by a grant
key (as is often required by an ACL), they can be included in the
derivation of the grant key; otherwise they are included in the
computation of the MAC keyed by the grant key.</t>
        <t>Multiple MACs (based on a cai per MAC and separate GK) can be used
in each packet.
This can be realized by including all of these MACs in a packet
(possibly by simply XORing them), or by building one of the MACs into
the signing input of another MAC.</t>
        <t>We make the simplifying assumption that the IP address of the client
can be used as a client ID; this is always available in the 5-tuple of
the packet and
can be included in a MAC via the coverage area indication.
We use Cx (C1, C2, ...) to discuss a specific client.</t>
        <t>Based on these common mechanisms, we discuss two arrangements in the
rest of this section.  Other arrangements can be built; the
information in the grants should enable the indication of the exact
structure of the arrangement, enabling the AM to determine which
specific arrangement is in use.</t>
        <section anchor="mig">
          <name>Multiple Independent Grants</name>
          <t>In this example arrangement, the AM generates two different kinds of
grants, GK_z for authorization checking over a range of clients, and
GK_n_x that focuses only on authenticating the packet as originating
from a specific client Cx.</t>
          <t>The corresponding MACs are used as follows:
MAC_z contains information that the AM wants to define, i.e. AM sets
the values of these fields; therefore MAC_z can be pre-computed by the AM.
MAC_n also contains information that the AM wants Cx to define, i.e. AM
identifies the fields (sets cai) and lets Cx set the values of these fields.
(As an example, the wake_period of original SWORN would be in MAC_n.)</t>
          <t>GK_z is not provided to the clients, instead the CAM provides the
client with a ready-made token complete with a MAC, called MAC_z,
based on the grant key.
This token indicates authorization for its coverage area (typically
elements of the 5-tuple, plus possibly some
more dynamic attributes).
It is pre-computed for each client Cx and conveyed to Cx from the CAM; as
there is no replay protection of the authorization, this token can be
used essentially as a bearer token, until dynamic attributes or keys
need to be updated (then a new authorization token needs to be sent
from CAM to each Cx that shall continue to communicate).</t>
          <t>The SPEP also has GK_z and can check the tokens based on the
information in the packet
(and possibly cache e.g. MAC_z for the flow, if not pre-computed from a table
of client IDs).</t>
          <t>This approach alone does not protect against replay attacks.
For this, we introduce GK_n_x in corresponding client grants, carrying a client-specific
authentication key.  Each GK_n_x is provided by the CAM to
both an individual Cx and (indirectly via GK_z) to the SPEPs.
The authentication key is used against a selected subset of the
five-tuple, the dynamic attributes, and the payload.
It effectively proves that the holder of this key, Cx, is the actual
originator of the packet.  It does not prove authorization of a
specific five-tuple plus attributes; this is
the job of the GK_z/MAC_z.</t>
          <t>Each packet carries MAC_z based on the shared grant key (bearer token
supplied by CAM for a specific selection of elements from the 5-tuple,
proving that this communication with this selection of 5-tuple
elements is generally authorized.)
A typical selection from the 5-tuple would comprise the source
(client) and destination (device) IP addresses as well as the
destination port number and protocol; the source port number would
remain dynamic to be chosen by the client in this case.
(MAC_z could also cover further attributes relevant to the
authorization, such as an application-id or performance parameters
such as intended maximum bitrate and traffic priority; some of these
attributes could be included in the token, others could be derived
from policy and an attribute such as an application-id.)</t>
          <t>We assume that the mechanisms discussed here need to provide source
authentication for the packets from Cx.
If a separate source authentication mechanism is available, GK_n_x and
MAC_n are not needed.
Otherwise, for authentication, each packet also carries MAC_n based
on GK_n_x, which proves the actual origin of the packet; the
authorization that applies to the packet needs to be checked via the
authorization token.
The coverage area of MAC_n is indicated by cai_n; this will
generally be a superset of cai_z and will include the source port
number as well, so this can be freely chosen by the client but is
still authenticated.</t>
          <t>The payload may or may not be included into the signing input to
MAC_n (this is also indicated by cai_n).
If the payload is included, this ensures that an attacker can only
replay completely identical packets; in situations where this kind of
replay would not be a problem, no replay window mechanism needs to be
employed.</t>
          <t>In summary (bracket notation <tt>[..., ...]</tt> stands for an array of values):</t>
          <t>MAC_z = MAC([cai_z, fields(cai_z), attributes, cai_n, timestamp], GK_z)</t>
          <t>MAC_n = MAC([serial, cai_n, fields(cai_n)], GK_n_x)</t>
          <t>where the CAM provides to Cx:</t>
          <ul spacing="normal">
            <li>GK_n_x = KDF(["key for MAC_n", CxID, GK_z])</li>
            <li>all other inputs to MAC_z except for timestamp</li>
            <li>MAC_z</li>
          </ul>
          <t>The actual information in the packet contains the token:</t>
          <dl newline="true">
            <dt>
Token =  </dt>
            <dd>
              <dl newline="true">
                <dt>
[cai_z, cai_n, GK_z-kid, CxID, attributes_conveyed,      </dt>
                <dd>
                  <t>(MAC_z xor MAC_n_x)]</t>
                </dd>
              </dl>
            </dd>
          </dl>
          <t>The provisioning needed is limited to distributing grant keys GK_z for each
specific authorization (e.g., Device IP address/port number) plus
a base key GK_n_x to derive authentication keys for each client Cx.
These are connected by the common parts of the 5-tuple and a CxID.</t>
          <t>The role of the different keys can be summarized as follows:</t>
          <ul spacing="normal">
            <li>
              <t>GK_z, known only by AM and the SPEPs, allows the AM to specify the
authorization information, which then can be checked by the SPEP
using MAC_z under the key GK_z.  </t>
              <t>
Since the AM can compute the MAC_z ahead of time, from the point of
view of the client MAC_z essentially serves as a bearer token,
which however is only useful for packets with the fields(cai_z)
that are being authorized by AM.</t>
            </li>
            <li>GK_n_x provides client x with a way to authenticate a wider
coverage, including values of the client's choice such as the source
port number or even the payload.
Here, client x needs to have the key so it can dynamically vary
these fields without needing to recur to AM.</li>
          </ul>
        </section>
        <section anchor="hig">
          <name>Hierarchical Grants</name>
          <t><xref target="mig"/> requires distributing separate authentication grants for each
client Cx to each SPEP, which may however be orthogonal to the
specific authorizations granted.</t>
          <t>We cannot completely eliminate per-client "provisioning" as SPEP needs
to know about the authorization it needs to enforce.
However, by giving clients (e.g., C1/C2) more specific information
than SPEP, we can relieve SPEP from needing to know each of C1/C2
a priori, as follows:</t>
          <t>Let GK0 be the <em>generic grant Key</em>, which is generated by CAM and told
to the SPEPs in a generic grant.
Clients never obtain GK0.</t>
          <t>Let GKx be a <em>specific grant Key</em>, which is generated by CAM for each
Cx and told to Cx in a <em>specific grant</em>.
Client x only knows its own GKx, not that of other clients Cy.</t>
          <t>For a complete exposition, we also introduce cai_1 and cai_2:</t>
          <ul spacing="normal">
            <li>Both cai_1 and fields(cai_1) are shared between CAM and SPEP in
a generic grant; fields(cai_1) are the constant parts of the
packets to be authorized (e.g., device IP address, device port number).</li>
            <li>cai_2 is a superset of cai_1; it indicates the fields that need to be
checked by SPEP.  The generic grant provides cai_2, but not
fields(cai_2), as these can differ per packet and are chosen by Cx.</li>
          </ul>
          <t>Ignoring nonces, serials, and key identifier/lifetime/rollover
mechanisms, the following computations can be done:</t>
          <ul spacing="normal">
            <li>
              <t>by CAM or SPEP (who both know GK0 and cai_1, i.e. generic
information about all packets covered by this grant):  </t>
              <t>
Grant_x = [GK0-kid, cai_1, cai_2, fields(cai_1), GKx]  </t>
              <t>
where GKx = KDF([cai_1, cai_2, fields(cai_1), GK0])</t>
            </li>
            <li>
              <t>by Cx based on its provisioned GKx and a specific packet, but also
by SPEP based on the GKx the SPEP can compute for Cx  </t>
              <t>
token = [GK0-kid, cai_1, cai_2,
         MAC([serial, cai_2, fields(cai_2)], GKx)]</t>
            </li>
          </ul>
          <t>(These computations do not explicitly mention a client ID, which is
implied by the source IP address included in <tt>fields(cai_</tt><em>n</em><tt>)</tt>.)</t>
          <t>Note that the token can be verified by SPEP as it can compute GKx
from the secret key GK0 that is only shared between CAM and SPEP, as
long as it knows which GK0 to apply (e.g., using GK0-kid, which here
simply is copied into the token).
As they don't know GK0, the individual clients Cx cannot compute GKx -- they
need to obtain it from CAM as part of Grant_x, which also gives them
cai_1 and cai_2 -- containing the information
for Cx how to apply the GKx.
The token, computed from GKx, therefore authenticates Cx as the
holder of xGKx, and signifies the authorization of Cx to send a packet
with fields(cai_1) as indicated in GKx,
with the additional requirement on Cx that it also authenticates a
serial number (used for replay protection) and additional
fields(cai_2).</t>
          <t>Since the token includes the relevant parts of the 5-tuple, and
cai_1 is part of the first MAC and therefore cannot be changed by
the Cxes, there is no need to apply any additional ACL beyond feeding
the <tt>cai</tt>-selected fields of the packet into the MAC.</t>
          <t>So GK0 only needs to be provisioned once to the SPEPs for all Cxes;
each GKx is provisioned only to Cx.
An SPEP can compute GKx from cai_1, cai_2 (part of the token)
and fields(cai_1) (taken from the packet).
GKx is eminently cacheable, but in any case does <em>not</em> need
to be provisioned as it can be derived from GK0 and information that
is in the packet.</t>
          <t>C1 and C2 have GK1 and GK2, respectively; the coverage area is easily
extended to include D1-address and D1-port etc., by setting the bits in
either cai_1 (if these are fixed for Cx) or cai_2 (if these
can be chosen by Cx).</t>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="original-sworn-model">
        <name>Original SWORN model</name>
        <t>Define CBOR Wake-Token Tag 1398230866 in <xref target="IANA.cbor-tags"/>.</t>
        <t>Define CoAP option Wake-Token in the
<xref section="CoAP Option Numbers" relative="#option-numbers" sectionFormat="bare" target="IANA.core-parameters"/> Registry
of <xref target="IANA.core-parameters"/> (<xref section="12.2" sectionFormat="of" target="RFC7252"/>.
(The option is safe, no-cache-key, elective, repeatable, of type
opaque 0-255 bytes.)</t>
        <t>Define media-type "application/dtls-payload", with an associated CoAP
Content-Format in the
<xref section="CoAP Content-Formats" relative="#content-formats" sectionFormat="bare" target="IANA.core-parameters"/> Registry
of <xref target="IANA.core-parameters"/> (<xref section="12.3" sectionFormat="of" target="RFC7252"/>.</t>
      </section>
      <section anchor="generalized-model">
        <name>Generalized model</name>
        <t>TBD</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The purpose of the security mechanisms described is primarily to
protect availability (obviously, any symmetric keys employed also need
to be confidentiality protected for the sake of the integrity of the
mechanism).
For the purposes of this kind of availability protection, occasional
false positives of the per-packet authorization mechanisms may be
acceptable, as long as they don't reach a threshold of probability of success that
is application dependent (say, success in one out of a million of
brute force attempts, equivalent to 20-bit security).
This may offer optimization opportunities that need further study.</t>
      <t>TBD</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby">
              <organization/>
            </author>
            <author fullname="K. Hartke" initials="K." surname="Hartke">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8747" target="https://www.rfc-editor.org/info/rfc8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049.  It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8610" target="https://www.rfc-editor.org/info/rfc8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz">
              <organization/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049).  Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8152" target="https://www.rfc-editor.org/info/rfc8152">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <date month="July" year="2017"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol.  This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization.  This specification additionally describes how to represent cryptographic keys using CBOR.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8152"/>
          <seriesInfo name="DOI" value="10.17487/RFC8152"/>
        </reference>
        <reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>Constrained RESTful Environments (CoRE) Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8613" target="https://www.rfc-editor.org/info/rfc8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander">
              <organization/>
            </author>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson">
              <organization/>
            </author>
            <author fullname="F. Palombini" initials="F." surname="Palombini">
              <organization/>
            </author>
            <author fullname="L. Seitz" initials="L." surname="Seitz">
              <organization/>
            </author>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="RFC7228" target="https://www.rfc-editor.org/info/rfc7228">
          <front>
            <title>Terminology for Constrained-Node Networks</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization/>
            </author>
            <author fullname="M. Ersue" initials="M." surname="Ersue">
              <organization/>
            </author>
            <author fullname="A. Keranen" initials="A." surname="Keranen">
              <organization/>
            </author>
            <date month="May" year="2014"/>
            <abstract>
              <t>The Internet Protocol Suite is increasingly used on small devices with severe constraints on power, memory, and processing resources, creating constrained-node networks.  This document provides a number of basic terms that have been useful in the standardization work for constrained-node networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7228"/>
          <seriesInfo name="DOI" value="10.17487/RFC7228"/>
        </reference>
        <reference anchor="RFC8799" target="https://www.rfc-editor.org/info/rfc8799">
          <front>
            <title>Limited Domains and Internet Protocols</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter">
              <organization/>
            </author>
            <author fullname="B. Liu" initials="B." surname="Liu">
              <organization/>
            </author>
            <date month="July" year="2020"/>
            <abstract>
              <t>There is a noticeable trend towards network behaviors and semantics that are specific to a particular set of requirements applied within a limited region of the Internet. Policies, default parameters, the options supported, the style of network management, and security requirements may vary between such limited regions. This document reviews examples of such limited domains (also known as controlled environments), notes emerging solutions, and includes a related taxonomy. It then briefly discusses the standardization of protocols for limited domains. Finally, it shows the need for a precise definition of "limited domain membership" and for mechanisms to allow nodes to join a domain securely and to find other members, including boundary nodes. </t>
              <t>This document is the product of the research of the authors. It has been produced through discussions and consultation within the IETF but is not the product of IETF consensus.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8799"/>
          <seriesInfo name="DOI" value="10.17487/RFC8799"/>
        </reference>
        <reference anchor="I-D.bormann-intarea-alfi" target="https://www.ietf.org/archive/id/draft-bormann-intarea-alfi-04.txt">
          <front>
            <title>Adaptation Layer Fragmentation Indication</title>
            <author fullname="Carsten Bormann">
	 </author>
            <date day="9" month="September" year="2013"/>
            <abstract>
              <t>   IPv6 defines a minimum MTU of 1280 bytes.  Many link layers are more
   limited in the maximum size of packets they can communicate.  In
   order to enable the transport of IP packets that are too large for
   these link layers, typically their IP adaptation layers define a
   segmentation or fragmentation scheme to transport an IP packet in a
   sequence of multiple link layer packets.

   Often, adaption layer fragmentation schemes reduce some performance
   metric, such as the packet delivery probability.  Application or
   transport protocols may be able to reduce the maximum size of packets
   they send, e.g.  by transport layer segmentation or choice of
   application layer data object size, which may have less of a
   performance impact.  It would therefore be desirable for them to know
   about any adaptation layer fragmentation that is going on, so they
   can choose packet sizes that minimize adaptation layer fragmentation.

   At the IP layer, fragmentation can be detected using a number of
   mechanisms used in Packetization Layer Path MTU Discovery [RFC4821].
   However, adaptation layer fragmentation schemes are often designed to
   be "transparent", i.e.  there is no way at higher layers to find out
   whether they had to be employed (except maybe by elaborate
   measurement schemes targeting one of the impacted performance
   metrics; this approach does not appear to be viable) [WEI].

   The present specification defines two alternative mechanisms for IPv6
   adaptation layers to indicate the presence of adaptation layer
   fragmentation on one or more hops on the path from an IP sender to an
   IP receiver, and to provide an indication of preferred (smaller)
   packet sizes on these hops.

   One design is based on the the IPv6 design and probably doesn't work
   on the Internet.  The other design goes strictly against the IPv6
   design and probably works well on the Internet.

   Comments are appreciated and should go to the intarea@ietf.org
   mailing list.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-intarea-alfi-04"/>
        </reference>
        <reference anchor="RFC3031" target="https://www.rfc-editor.org/info/rfc3031">
          <front>
            <title>Multiprotocol Label Switching Architecture</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <author fullname="A. Viswanathan" initials="A." surname="Viswanathan">
              <organization/>
            </author>
            <author fullname="R. Callon" initials="R." surname="Callon">
              <organization/>
            </author>
            <date month="January" year="2001"/>
            <abstract>
              <t>This document specifies the architecture for Multiprotocol Label Switching (MPLS).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3031"/>
          <seriesInfo name="DOI" value="10.17487/RFC3031"/>
        </reference>
        <reference anchor="I-D.ietf-bier-php" target="https://www.ietf.org/archive/id/draft-ietf-bier-php-07.txt">
          <front>
            <title>BIER Penultimate Hop Popping</title>
            <author fullname="Zhaohui Zhang">
              <organization>Juniper Networks</organization>
            </author>
            <date day="7" month="December" year="2021"/>
            <abstract>
              <t>   Bit Index Explicit Replication (BIER) can be used as provider tunnel
   for Multicast Virtual Private Network (MVPN).  Global Table Multicast
   [RFC7716] or Ethernet Virtual Private Network (EVPN).  It is possible
   that not all routers in the provider network support BIER and there
   are various methods to handle BIER-incapable transit routers.
   However those methods assume the MVPN/EVPN Provider Edges (PEs) are
   BIER-capable.  This document specifies a method to allow BIER-
   incapable routers to act as MVPN/EVPN PEs with BIER as the transport,
   by having the upstream BIER Forwarding Router (BFR) that is connected
   directly or indirectly via a tunnel to a BIER-incapable PE remove the
   BIER header and send the payload to the PE.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-bier-php-07"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t><contact fullname="陈博" asciiFullname="Bo Chen"/> provided input for <xref target="general"/>.</t>
      <t>TBD</t>
      <!--  LocalWords:  CBOR extensibility IANA uint sint IEEE endian
 -->
<!--  LocalWords:  signedness endianness
 -->

</section>
  </back>
  <!-- ##markdown-source:
H4sIAAGCAGIAA619W3MjR7Lee/2KMvWwwAjAkByNLpyj3aUAaZahy0xwuCHb
kjzTAApAi41ubHeDJERx4zyeF7/5xQ47wg/+JfY/ORF+8L9wfplZlwYxc06E
PbEXEuiuS1ZW5pdfZhWHw6Fp87ZwZ/aPxto3P766/OHMvnGzbe3sj9m1s1Vp
L7N5XtkftvNlXi7NvJqV2ZpemNfZoh1Oq3qdleWwPW3r5bC5repyePzcmKbN
yvnbrKhKerStt86YfFPzj017enz8xfGpuXY7en5+Zi/K1tWla4cTtGlmWXtm
83JRGbPJz+xPbTUb2Kaq29otGvppt5YfZtV6k81a/mHtyrb5xZhs266q+owm
M6T/WitjHWd107rSfiWj5W+qenlm/1rmN65u8vZ//Y/WflU7asZe/fsLfqCh
/hyN5HXVtItstrLPnh1/8skxfzfL292ZviAfVHPqZzI8/fzZ8y/0k23Z1vTU
S4dOd/zhZsUC+fiTL4afnJ4MT08+H3767IvTE/7SrbO8OLOzbFr9uf0tH9EI
MQ+dw7/Lf1tVW/tdHkf/l21263J75WarsiqqZe6atKEi3/E7f17xcyMSkzEl
RNDSrCGjy2/Gn50+P6U+q2wjv39Ow6Hfb1v99bNPPuNfh7NyoR998ckX9BGt
vP7+6ckx/T6fF/r7ibTYOPr94vyHc+q4dsNNVtM8aKEbfNn5IDxHbQ7bbNlI
8/wj6Q1pQnfM1OOzM1s1aMbP4vRz/+VnX9DwijkaHU5GXkHzss1qlw2zYkE6
hf815saVW25zWVfbzZm9WpGGD9tqyD/Y3tXp1eXLPn0v8mQd/3NetwteGjMc
Dm02JTUhJTTmB3RUFDtbLRZ27m7ymWtsT8fWt7fVtpjb0rm5bSvr7jaunJMc
yiafuzqbFs660tXLnaldU21rvEzPTZ2lQc9W/EDW0rgL2+Zr14xodiXpdDYf
2O/Px7bIdq62a9KErMybdWNosjQSKL1bb4pqh35X0kJ1Sz86eqVp7araWJo8
rQI9zR/L0NH50S1ZgCOTfHiTZ7Zmc3C7opYxGzenoZzPaHVohUho9HTjwvwd
idjS8tnMNLQvWx487ay8KMiS4AERhMzdks2gBraNpYchLpp+dkOy5+nTiGR3
57+5uaG1J0ltqnKOnU92qtjRQK4wujavSqzEgNrKG7vKGmqIxkFyzGlA1OzO
rlx2szOLvHa39CgNfCCSwRTQVtIVyahpeTV4KVIhZa2ht9AvOlpnO4y4rSpY
r8Ld5Rg2z74MNg5iZvVqRsZcUVMbmgZNgRrfQEBz18zqfEqiWWGdKrslcWYw
cdO8zDA1tEAGuqaXip0Y2qye80jbxBLg3YYtOc3GLRZu1rI8jJ8ZN0aD+JHa
L5rKzvNmtm20XxrYEouSFTbbbOoKE1cFoXfJE9AX7C4MfUkGuirIbpWYvrsj
pZuLms8qsq42m/s14cnMsoZGR6M2OWkmLGgr83LlTV5XJZvykWyvdU5mhXwH
Sa+u5tsZP6f/7j/K8emD+TL5Z0zvjXP2XLflqG/MRx+RhazXOQtmZ+PrtCDr
5kFWAT/bo+mudUeWlpLGOadFtDktfEnyIMG01TqrdyTSEgtCEyBHVFblbo0V
NkfVrHXt0cj8w78hn/rjytH2m+a03eq8XZGVy2dolrS9yPLSzVU1yZluMV30
17Bwy0qEYRbZOi/yrLaLulrzVyToJVnMNVS0yMrlNls6O7a9vJwV2zk+HX/8
8cknf2js8bQkJwd9oQEXeYtlbPoD6n7mNq3YAV7JDX3Tkn4e/fzk5ydHlnWp
4fnQSMlTlW2uWmKHwz8a871rGuqVBu4WmAZE1J2IGBs7/urVpb2/H8KMPzzw
viaDZLxy84vjyeQ7foaW+OEBuwHrEUQv7QIQnBkzPjPkxYucuhiQAtpxuvt5
g/ImhPzmTiZ4m5Wya1X3j4BnyJZ7RHOEnyawBbSkLL6M7CfPD29NaEAT9Drh
re73OP2n3W3yGVv6adaSbHcqRxo25nmUOoIj6vD+Xp0AT/ISbV6yxdUhq/nl
QVPz2fzXbIZZYRCEdlakQhhcqUZy2GQ3AGKWVra8trekX3gOXTeuvuFnoZ29
I3Kw1M5RP/QgsyJ3gTHoWtpzMgdY6JlswjEE2GPzrgaBW+w+FP1MP2lvTt7h
fEZmv6FWsDWLxw0Fa8EOC6+bj1gKXauC5zZVkxW8fc+bZrveoGe2G/bS/W2b
M/ZqCR9MWGq2TP1vInO11QNSiGuMYLuxN1i0aZ27BT3eVgb4cVtick7kiW1P
vqHrHy9pvS65/wmvCsxycL0mOteGniJRXzu3oSdJk4NFhD+1pCt5NYeB842t
shu0xcaacCUtX1PNdONZQiHet/Bz7Mlm5Ila3iaGXAqB6GtS5mkFNwBPRhuE
DHHjWprrfEfwUfU1mBIRCZCOvm4OdS5OfmJntL8cpg4xi1KpTGBeJ3GnBZ8J
h8Wb1fZoLLNHm7VPdgvPN9csK4J4OSyN60gIooO+fuVmGfwG3B5pHcwPmwen
UCRxGwMaLUCJx06KG4y8x8vaGb9I5PIEj1+e2mpGvknBg9/wgkQINrdWhpEF
EEef5YsdYzK0LDNuXpDYcvKW3Y7I77JhI3PD+trCQ5ChhRHO/rZlk5M0Allv
my1tB5rqxesRb4M3fo2WFdlzY96Q5SdpZbNrR2+w4rL82uraYadQ49ew99TE
JcOQoIgqYXghZ4p8nUOZGizcdEvWssb2u8nnYojl3VatHwFABahisby4zZQ9
FCGQVqSjv3gAR86s3cGmiq8jzfTWkwFSuvIDlaBA5jW+IE/abBt4L2Aqg9XV
t+eOMARrK31AogAyvjrc+4A3LjcKiGe2JIt6WXWVjid1yaARZiFjeU0zrB31
QWDtJq+2eyCKV1XgHMlcYSBh+0U+ZxeKzkls0WjZnhstRwOe+qYm6Dzb9V94
EbOuEWYiOQdXGGEih6sCAvl5gY2iIN97s0xW9e9//zv0hAKTj4d7/z62dmQP
/3v8rPld/W76jD22b9gCNtWaZ9qSav08sr+rtwzP/k6vn3dEFbp4NISf3z5+
ll7/PivJTZHLP/+eWwyPPxp8fHaiz3bn/rHM/X3vf5w8Js8imP4P9oT8zzU3
f9oZ7ntE+LvhZ7G0MqiJK0AyfPg1fYsAHks6/hTm9oG3/L+bR9+/562PdZZd
sXyczP1Dn5pHzf5+sLP3fBo1aqwfodU//q6oiDZf51PVqIn/9P+190Pb4ZDi
H/6UBP6MiScaqrT4CeNH+uE59iYcgrWfklX3Uah+fQWjjF1p7s/sR4vck2WA
UpY5uC+PLopii7jFR3nkbcmKsQVRbw4jb7qbRHW+OXoAliIrAJw7fAn1MeZc
jJsoE1vv8Y9fM+gml/7wMGDvkS0F/cpT144MZbD/7CAnhpR5QoFF1+qtdbeR
NR6PTO91RRBvCkS1crEtHxaSkbhxYCEwBbJpGeGmGm/v2UkTncg8azOwcBT2
gY8EkiDzVrqCUPGWpJbJfK54PrctQT2JPoCOM/tuVi7ekT/N8rU6MMfjkYdB
ZxEe7++JCLYbSBcj9v56zK8rRGFeCOuic1XnacrtegoOBdJoabnm27CM/Y6D
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

-->

</rfc>
