<?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-00" category="exp" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Ray time">Ray time: Validating token expiry on an unbounded local time interval</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-t2trg-raytime-00"/>
    <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="2023" month="July" day="06"/>
    <workgroup>t2trg</workgroup>
    <keyword>time</keyword>
    <keyword>synchroniztion</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>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Thing-to-Thing Research Group mailing list (t2trg@irtf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/search/?email_list=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>
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 <!-- https://www.sciencedirect.com/science/article/pii/S1319157821000483 is close enough -->
and in space. <!-- https://arxiv.org/pdf/2109.05971.pdf -->
        </t>
        <t>For 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="security-and-availability">
        <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 requirements.</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, 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-model">
        <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 life time (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 weakenesses of the used cryptographic systems,
are relevant to the system,
but have no different impact on a system following this document
than a system that requires an operational clock before it allows access.</t>
      </section>
      <section anchor="applicability-constraints">
        <name>Applicability constraints</name>
        <t>The mechanisms of this document are intended only for scenarios matching the listed prerequisites.
If either of them are violated,
there are better solutions available, with suggestens 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"/>),
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 life time of tokens is limited.  </t>
            <t>
When tokens of unlimited life time 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 ray time 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 DCT77 or GNSSs such as GPS are frequently offered as a solution,
neither is reliable enough for use with security systems:
DCT77 is effectively unencrypted,
and GPS signals can be forged with cheap hardware <xref target="gps"/>.</t>
      </section>
    </section>
    <section anchor="ray-time">
      <name>Ray time</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 ray time”.
A device in ray time 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 ray time 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 ray time.</t>
      <t>Maintaining ray time 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 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 time scale as the AS’s time scale.
<!-- 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 fast used tokens,
time should be advanced slower than it 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 ray time 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-ray-time-with-ace">
      <name>Using ray time with ACE</name>
      <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 ray time 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 ray time 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 ray time to interval time.
But is that even useful, unless the tokens used have nbf claims?)</li>
        </ul>
      </section>
    </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>Sealance, Inc.</organization>
          </author>
          <author fullname="Marcus Dansarie" initials="M." surname="Dansarie">
         </author>
          <date day="26" month="September" year="2022"/>
          <abstract>
            <t>   This document specifies Roughtime - a protocol that aims to achieve
   rough time synchronization while detecting servers that provide
   inaccurate time and providing cryptographic proof of their
   malfeasance.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-ntp-roughtime-07"/>
      </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>
    </references>
    <!--
# Change log

TBD.
-->

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TBD.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
