<?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-rfc version  (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-t2trg-raytime-02" category="exp" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Raytime">Raytime: Validating token expiry on an unbounded local time interval</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-t2trg-raytime-02"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2024" month="January" day="11"/>
    <workgroup>t2trg</workgroup>
    <keyword>time</keyword>
    <keyword>synchronization</keyword>
    <keyword>interval arithmetic</keyword>
    <keyword>unbounded</keyword>
    <keyword>infinity</keyword>
    <keyword>optimistic</keyword>
    <keyword>robustness</keyword>
    <abstract>
      <t>When devices are deployed in locations with no real-time access to the Internet,
obtaining a trusted time for validation of time limited tokens and certificates is sometimes not possible.
This document explores the options for deployments
in which the trade-off between availability and security needs to be made in favor of availability.
While considerations are general,
terminology and examples primarily focus on the ACE framework.</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-amsuess-t2trg-raytime/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Thing-to-Thing Research Group mailing list (<eref target="mailto:t2trg@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/t2trg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/t2trg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/chrysn/raytime"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>[ See also abstract. ]</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>This document uses terminology from the ACE framework (<xref target="ACE"/>) to describe the typical participants,
even in general parts that may apply beyond ACE.
In particular:</t>
        <ul spacing="normal">
          <li>
            <t>The Resource Server (RS) is a constrained device,
also sometimes called “the device”.  </t>
            <t>
In the context of this document, it has no regular access to the Internet,
and its ability to maintain a concept of local time is limited by intermittent power supplies.</t>
          </li>
          <li>
            <t>The Authorization Server (AS) is a party trusted by the RS.  </t>
            <t>
In the context of this document, it is connected to the Internet.
(When more private networks are used, the term Internet can be replaced
with the partition of the private networks that contains the AS).
It is considered the source of trusted time in this document,
as distributed time sources are not relevant to its mechanisms.</t>
          </li>
          <li>
            <t>The Client is a device that has obtained time- and scope limited credentials for the RS from the AS.  </t>
            <t>
In the context of this document,
it acquires these credentials ahead of time
before it moves out of communication range of the Internet
and into communication range of the RS.  </t>
            <t>
Beyond these credentials,
the client is untrusted
in the sense that no action of the RS should allow it to exceed the permissions encoded in the credentials it holds.</t>
          </li>
        </ul>
      </section>
      <section anchor="motivating-example">
        <name>Motivating example</name>
        <t>Devices that use Internet style connectivity and security
have been deployed far beyond the range of easily accessible connectivity,
for example in remote forests <xref target="forest40"/>
and in space <xref target="space"/>.</t>
        <t>For a concrete example,
consider a scientific instrument set up by students.
The instrument is under the administrative control of the university,
which is issuing time limited access tokens
that allow configuring experiments and reading data,
but not altering inventory designations or handing off ownership.</t>
        <t>The instrument is set up in a far-off valley without cellular reception,
and visited by students once per week
to collect data,
verify that it is still operational,
and perform adjustments or repairs on site as needed.
Any repairs require powering down the device completely.</t>
        <t>When following the mechanisms and guidance of this document,
the instrument will be usable by the students
even after they had to power it down completely,
and (once used by the new students) justifiedly reject the tokens of students that used the device earlier.
It will stay usable to malicious students if they disassemble it
and use it after their allowed time on the instrument has expired,
but can only be operated for a total time of about the validity time span of those users’ tokens.</t>
      </section>
      <section anchor="sec-avail">
        <name>Security and availability</name>
        <t>When a device has no current time,
no means of acquiring time,
and receives a time limited token to authorize an action,
two outcomes are possible:
the action is rejected or allowed.
Rejection is the safe alternative in terms of security,
but reduces the availability of the device, possibly to the point of not providing its function at all.
Conversely, allowing the action maintains availability
at the risk of violating security objectives.</t>
        <t>The fundamental trade-off between security and availability is common around time limited access,
and usually manifested in a choice of expiry times:
A token with a validity of one week
(or, equivalently, a revocation list with a maximum age of one week)
will be usable across a day-long outage of the authorization infrastructure.
On the downside, it provides technical authorization to an administratively deauthorized user for several days after revocation of permissions.</t>
        <t>This document concerns itself with getting the most security
out of the case that favors availability after a period of no operational clock.</t>
      </section>
      <section anchor="threat">
        <name>Threat model</name>
        <t>Three main threats are considered here:</t>
        <ul spacing="normal">
          <li>
            <t>Using old tokens.  </t>
            <t>
A user who has obtained a token may attempt to use it after the token’s lifetime (and the user’s permission) has expired.</t>
          </li>
          <li>
            <t>Manipulation of time sources.  </t>
            <t>
An attacker controlling a time source which the device trusts
may make false statements on the current time.
Indicating an earlier time can be used to extend the usability of old tokens.
Indicating a later time can be used to deny service to users of valid tokens.</t>
          </li>
          <li>
            <t>Manipulation of the clock.  </t>
            <t>
An attacker with physical access (possibly only to the device’s environment)
may cut power to the device’s clock.</t>
          </li>
        </ul>
        <t>Other attacks,
such as physical attacks on the device,
or exploiting weaknesses of the cryptographic systems used,
are relevant to the system,
but have no different impact on a system following this document
than on a system that requires an operational clock before it allows access.</t>
      </section>
      <section anchor="applicability">
        <name>Applicability constraints</name>
        <t>The mechanisms of this document are intended only for scenarios matching the listed prerequisites.
If either of them are not met,
there are better solutions available, with suggestions listed along the condition.</t>
        <ul spacing="normal">
          <li>
            <t>There is no network connectivity,
not even for the client.  </t>
            <t>
If there is,
the RS may use communication with the AS to obtain a current time value
(as described in <xref target="ace-time"/>), <!-- sentence? -->
perform token validation (<xref target="ACE"/>).
Alternatively,
it may use other Internet services
such as <xref target="roughtime"/>.  </t>
            <t>
Note that due to CoAP’s good proxy support,
the connectivity between the RS and the AS does not need to be in a continuous IP network.</t>
          </li>
          <li>
            <t>The lifetime of tokens is limited.  </t>
            <t>
When tokens of unlimited lifetime are used,
there is no need to employ the methods described in this document.</t>
          </li>
          <li>
            <t>Devices have no means of reliably maintaining time throughout their whole lifetime.  </t>
            <t>
If the power supply of the device’s clock is reliable enough to be sure to outlive the device,
regular evaluation of time bounds can be done,
possibly accounting for an upper bound of clock skew.</t>
          </li>
          <li>
            <t>Devices need to stay accessible after local power interruptions,
that is,
favor availability over security after a loss of local time.  </t>
            <t>
Otherwise,
the device can issue an AS Request Creation Hint containing a cnonce
(described in <xref target="ACE"/>).
The client then needs to travel back to into communication distance to the AS,
and obtain a token confirming that cnonce.
Alternatively, one of the time synchronization mechanisms mentioned above can be used.</t>
          </li>
        </ul>
        <t>The applicability is also limited when it comes to requirements of a certain date being in the past,
such as “nbf” (“not before”) claims described in <xref target="JWT"/>.
These claims are notoriously hard to verify after a loss of time (as discussed in <xref target="imperfect"/>),
but fortunately also rarely needed.
The use of such claims is not fundamentally prohibitive of this document’s raytime mechanism,
but its approach favoring availability over security is inapplicable to them
(as a device would accept any nbf value after power-up).</t>
        <t>While data sources such as radio time signal stations (e.g., DCF77, MSF, WWVB) or GNSSs such as GPS are frequently offered as a solution,
neither is reliable enough for use with security systems:
Radio time signals are effectively unauthenticated,
and GPS signals can be forged with hardware that is now cheap <xref target="gps"/>.</t>
      </section>
    </section>
    <section anchor="whatis">
      <name>Raytime</name>
      <t>It is relatively common in clock synchronization to treat known time in interval arithmetic
as the earliest and latest possible current point in time
(for an example, see <xref target="optimal"/>).</t>
      <t>When a device has been dormant for an indeterminate amount of time,
that interval’s upper bound needs to be set to infinity,
creating a half unbounded interval, or a ray.
For lack of a term established in literature
[ i.e., if you happen to find one, please tell and this will change ],
we call devices operating under such conditions to work “in raytime”.
A device in raytime can be sure that some points in time have passed,
but never that they have not.</t>
      <t>Devices that require a two-sided bound on some credentials they accept
may use any trusted time synchronization mechanism to establish an upper bound on current time
and switch to interval time
(and fall back to raytime after the next loss of continuous time).
Devices that never evaluate the upper bound on time anyway
may only implement the lower bound,
and always operate in raytime.</t>
      <t>Maintaining raytime is fundamentally a best-effort undertaking.
Implementations have two mechanisms to advance time:</t>
      <ul spacing="normal">
        <li>
          <t>Any time the device receives a trusted statement on a time stamp being in the past
that is ahead of its earliest possible current time,
it updates that bound.  </t>
          <t>
Care has to be taken to limit this mechanism to trusted time sources.
It is recommended to exclusively use statements from the AS,
as they are provided in tokens’ “iat” claim.
The build time of the latest firmware update may also provide such a time source,
provided it is known to be on the same timescale as the AS’s timescale.
<!-- That is not a given, RFC9200 says "the RS's internal clock must reflect the current date and time or at least be synchronized with the AS's clock"; where do we best put that note? -->
          </t>
        </li>
        <li>As time passes, the device advances the lower bound on the current time.
To avoid refusing tokens used quickly after issuance,
lower bound time should be advanced slower than time actually passes,
accounting for the maximum specified clock skew.</li>
      </ul>
      <t>Both kinds of advancements need to be recorded persistently,
lest power cycling the device makes all tokens valid under raytime assumptions.
To avoid wearing out limited persistence options,
writing may be delayed as suitable in the application.
The trade-off to consider here are
flash write cycles and power consumption of flash writes
versus the additional time malicious users gain for using the device by removing the power supply at the right time.
Being best-effort,
there is no need to transactionally commit the time seen in tokens –
this is not replay protection.</t>
    </section>
    <section anchor="using-raytime-with-ace">
      <name>Using raytime with ACE</name>
      <t>When using raytime with ACE,
resource servers accepts tokens with some [ possibly special, see below ] expiry date
unless that expiry is smaller than its current lower bound on time.</t>
      <t>In a sense, it accounts for its own uncertainty in time in favor of its peer.</t>
      <t>[ This section will contain concrete guidance when the open questions are resolved. ]</t>
      <section anchor="open-questions">
        <name>Open questions</name>
        <ul spacing="normal">
          <li>
            <t>Should the decision on whether raytime is OK to use be encoded in the token or in the application?  </t>
            <t>
Options are to use “exp” and say that the action will tell whether or not raytime is good enough to evaluate the credentials’ validity (some actions may require more assurances),
or to use an “exp-besteffort” or similar indicator to describe the whole token.
The latter approach may be limiting in that then not all permissions can be expressed in a single token,
but then again, that’s also true with different validity times.  </t>
            <t>
More generally (also for interval time), can a token indicate whether the clock skew upper bound is used in favor or against the user?
  <xref target="JWT"/> talks of “some small leeway”, but is not overly precise.</t>
          </li>
          <li>If the device <em>is</em> used online,
can it set a cnonce in its creation hints and the application will still try to use a cnonce-less token?
Or should optional cnonces use a different key?
(Setting a cnonce in online situations does have the advantage that the device can convert from raytime to interval time.
But is that even useful, unless the tokens used have nbf claims?)</li>
        </ul>
      </section>
      <section anchor="limits">
        <name>Limits to the use of old tokens</name>
        <t>When raytime is applied to the evaluation of tokens as described,
devices take the risk of accepting expired tokens.</t>
        <t>By properly maintaining their raytime as per <xref target="whatis"/>,
a user of an expired token (who may be an attacker)
is limited by two hard bounds,
and by their interpolation:</t>
        <ul spacing="normal">
          <li>
            <t>A token limited to some amount of time before it expires
can only be used with the device for that amount of time,
plus quantization effects.  </t>
            <t>
For example,
a token issued as part of a five-day rental agreement
can be used arbitrarily late when the rented device is powered off,
but will become unusable after a total of 120 hours of operation.</t>
          </li>
          <li>
            <t>When any new token is used with the device
that was issued after the expiry time of another token,
the expired token becomes unusable.  </t>
            <t>
For example,
once the device rented in the last example
is found by someone whose tokens were issued after the five days were over
and interacted with,
the expired tokens become unusable.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The use of Raytime diminishes security properties.
It is only to be used when applicable (see <xref target="applicability"/>)
and when the loss of the properties is tolerated as part of the trade-off described in <xref target="sec-avail"/>.</t>
      <t>The property that is lost is that expired tokens are not rejected unconditionally any more.
Expired tokens (and thus also attacks enabled by them) are still subject to the practical constraints
described in <xref target="limits"/>.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Informative References</name>
      <reference anchor="JWT">
        <front>
          <title>JSON Web Token (JWT)</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <date month="May" year="2015"/>
          <abstract>
            <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7519"/>
        <seriesInfo name="DOI" value="10.17487/RFC7519"/>
      </reference>
      <reference anchor="ACE">
        <front>
          <title>Authentication and Authorization for Constrained Environments Using the OAuth 2.0 Framework (ACE-OAuth)</title>
          <author fullname="L. Seitz" initials="L." surname="Seitz"/>
          <author fullname="G. Selander" initials="G." surname="Selander"/>
          <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
          <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
          <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
          <date month="August" year="2022"/>
          <abstract>
            <t>This specification defines a framework for authentication and authorization in Internet of Things (IoT) environments called ACE-OAuth. The framework is based on a set of building blocks including OAuth 2.0 and the Constrained Application Protocol (CoAP), thus transforming a well-known and widely used authorization solution into a form suitable for IoT devices. Existing specifications are used where possible, but extensions are added and profiles are defined to better serve the IoT use cases.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9200"/>
        <seriesInfo name="DOI" value="10.17487/RFC9200"/>
      </reference>
      <reference anchor="ace-time">
        <front>
          <title>Lightweight Authenticated Time (LATe) Synchronization Protocol</title>
          <author fullname="Renzo Navas" initials="R." surname="Navas">
            <organization>Telecom Bretagne</organization>
          </author>
          <author fullname="Göran Selander" initials="G." surname="Selander">
            <organization>Ericsson AB</organization>
          </author>
          <author fullname="Ludwig Seitz" initials="L." surname="Seitz">
            <organization>SICS Swedish ICT</organization>
          </author>
          <date day="31" month="October" year="2016"/>
          <abstract>
            <t>   This documents defines the Lightweight Authenticated Time (LATe)
   Synchronization Protocol, a secure time synchronization protocol for
   constrained environments.  The messages are encoded using Concise
   Binary Object Representation (CBOR) and basic security services are
   provided by CBOR Object Signing and Encryption (COSE).  A secure
   source of time is a base assumption for many other services,
   including security services.  LATe Synchronization protocol enables
   these time-dependent services to run in the context of a constrained
   environment.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-navas-ace-secure-time-synchronization-00"/>
      </reference>
      <reference anchor="roughtime">
        <front>
          <title>Roughtime</title>
          <author fullname="Aanchal Malhotra" initials="A." surname="Malhotra">
            <organization>Boston University</organization>
          </author>
          <author fullname="Adam Langley" initials="A." surname="Langley">
            <organization>Google</organization>
          </author>
          <author fullname="Watson Ladd" initials="W." surname="Ladd">
            <organization>Akamai Technologies</organization>
          </author>
          <author fullname="Marcus Dansarie" initials="M." surname="Dansarie">
         </author>
          <date day="18" month="October" year="2023"/>
          <abstract>
            <t>   This document specifies Roughtime - a protocol that aims to achieve
   rough time synchronization even for clients without any idea of what
   time it is.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-ntp-roughtime-08"/>
      </reference>
      <reference anchor="imperfect">
        <front>
          <title>Future Imperfect</title>
          <author initials="J. L." surname="Carrol" fullname="J. Larry Carrol">
            <organization/>
          </author>
          <author initials="D. B." surname="Carren" fullname="David Bennett Carren">
            <organization/>
          </author>
          <date year="1990"/>
        </front>
        <seriesInfo name="Star Trek: The Next Generation" value=""/>
      </reference>
      <reference anchor="gps">
        <front>
          <title>Authentication for drone delivery through a novel way of using face biometrics</title>
          <author fullname="Jonathan Sharp" initials="J." surname="Sharp">
            <organization>University of South Carolina</organization>
          </author>
          <author fullname="Chuxiong Wu" initials="C." surname="Wu">
            <organization>George Mason University</organization>
          </author>
          <author fullname="Qiang Zeng" initials="Q." surname="Zeng">
            <organization>George Mason University</organization>
          </author>
          <date month="October" year="2022"/>
        </front>
        <seriesInfo name="Proceedings of the 28th Annual International Conference on Mobile Computing And" value="Networking"/>
        <seriesInfo name="DOI" value="10.1145/3495243.3560550"/>
      </reference>
      <reference anchor="optimal">
        <front>
          <title>Interval-based clock synchronization with optimal precision</title>
          <author fullname="Ulrich Schmid" initials="U." surname="Schmid">
            <organization/>
          </author>
          <author fullname="Klaus Schossmaier" initials="K." surname="Schossmaier">
            <organization/>
          </author>
          <date month="October" year="2003"/>
        </front>
        <seriesInfo name="Information and Computation" value="vol. 186, no. 1, pp. 36-77"/>
        <seriesInfo name="DOI" value="10.1016/s0890-5401(03)00103-2"/>
      </reference>
      <reference anchor="forest40">
        <front>
          <title>Forest 4.0: Digitalization of forest using the Internet of Things (IoT)</title>
          <author fullname="Rajesh Singh" initials="R." surname="Singh">
            <organization/>
          </author>
          <author fullname="Anita Gehlot" initials="A." surname="Gehlot">
            <organization/>
          </author>
          <author fullname="Shaik Vaseem Akram" initials="S." surname="Vaseem Akram">
            <organization/>
          </author>
          <author fullname="Amit Kumar Thakur" initials="A." surname="Kumar Thakur">
            <organization/>
          </author>
          <author fullname="Dharam Buddhi" initials="D." surname="Buddhi">
            <organization/>
          </author>
          <author fullname="Prabin Kumar Das" initials="P." surname="Kumar Das">
            <organization/>
          </author>
          <date month="September" year="2022"/>
        </front>
        <seriesInfo name="Journal of King Saud University - Computer and Information Sciences" value="vol. 34, no. 8, pp. 5587-5601"/>
        <seriesInfo name="DOI" value="10.1016/j.jksuci.2021.02.009"/>
      </reference>
      <reference anchor="space">
        <front>
          <title>Internet of Things in Space: A Review of Opportunities and Challenges from Satellite-Aided Computing to Digitally-Enhanced Space Living</title>
          <author fullname="Jonathan Kua" initials="J." surname="Kua">
            <organization/>
          </author>
          <author fullname="Chetan Arora" initials="C." surname="Arora">
            <organization/>
          </author>
          <author fullname="Seng W. Loke" initials="S." surname="Loke">
            <organization/>
          </author>
          <author fullname="Niroshinie Fernando" initials="N." surname="Fernando">
            <organization/>
          </author>
          <author fullname="Chathurika Ranaweera" initials="C." surname="Ranaweera">
            <organization/>
          </author>
          <date year="2021"/>
        </front>
        <seriesInfo name="arXiv" value="article"/>
        <seriesInfo name="DOI" value="10.48550/ARXIV.2109.05971"/>
      </reference>
      <reference anchor="keyinfra18">
        <front>
          <title>Bootstrapping Remote Secure Key Infrastructures (BRSKI)</title>
          <author fullname="Max Pritikin" initials="M." surname="Pritikin">
            <organization>Cisco</organization>
          </author>
          <author fullname="Michael Richardson" initials="M." surname="Richardson">
            <organization>Sandelman Software Works</organization>
          </author>
          <author fullname="Michael H. Behringer" initials="M. H." surname="Behringer">
         </author>
          <author fullname="Steinthor Bjarnason" initials="S." surname="Bjarnason">
            <organization>Arbor Networks</organization>
          </author>
          <author fullname="Kent Watsen" initials="K." surname="Watsen">
            <organization>Juniper Networks</organization>
          </author>
          <date day="17" month="January" year="2019"/>
          <abstract>
            <t>   This document specifies automated bootstrapping of an Autonomic
   Control Plane.  To do this a remote secure key infrastructure (BRSKI)
   is created using manufacturer installed X.509 certificate, in
   combination with a manufacturer's authorizing service, both online
   and offline.  Bootstrapping a new device can occur using a routable
   address and a cloud service, or using only link-local connectivity,
   or on limited/disconnected networks.  Support for lower security
   models, including devices with minimal identity, is described for
   legacy reasons but not encouraged.  Bootstrapping is complete when
   the cryptographic identity of the new key infrastructure is
   successfully deployed to the device but the established secure
   connection can be used to deploy a locally issued certificate to the
   device as well.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-anima-bootstrapping-keyinfra-18"/>
      </reference>
    </references>
    <section anchor="comparison-of-raytime-with-prior-work">
      <name>Comparison of raytime with prior work</name>
      <t>Draft versions of RFC8995 up to 18 <xref section="2.6.1" sectionFormat="of" target="keyinfra18"/>
had explicit guidance for updating a current reasonable date (CRD) from seen certificates.
That CRD is similar to the lower time bound of raytime.</t>
      <t>[
TBD: Go through that again
to verify we’re not losing properties.
In particular, look not only at ACE but also MASA interactions.
]</t>
    </section>
    <section anchor="change-log">
      <name>Change log</name>
      <t>Since -01:</t>
      <ul spacing="normal">
        <li>Add security considerations</li>
        <li>Add section on the limits to the use of old tokens</li>
        <li>Add short appendix that will later compare this to prior art
in draft-ietf-anima-bootstrapping-keyinfra</li>
      </ul>
      <t>Since -00:</t>
      <ul spacing="normal">
        <li>Write 'raytime' as a single word rather than 'ray time'.</li>
        <li>Editorial fixes provided by Carsten Bormann.</li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TBD:
CB</t>
      <!--  LocalWords:  cnonce
 -->

</section>
  </back>
  <!-- ##markdown-source:
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
If0fd/OklRg8AAA=

-->

</rfc>
