<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" submissionType="IETF" category="info" consensus="true" docName="draft-ietf-ntp-chronos-25" number="9523" ipr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" prepTime="2024-02-21T15:09:39" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-ntp-chronos-25" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9523" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="NTP Extention with Khronos">A Secure Selection and Filtering Mechanism for the Network Time Protocol with Khronos</title>
    <seriesInfo name="RFC" value="9523" stream="IETF"/>
    <author fullname="Neta Rozen-Schiff" initials="N." surname="Rozen-Schiff">
      <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
      <address>
        <postal>
          <city>Jerusalem</city>
          <country>Israel</country>
        </postal>
        <phone>+972 2 549 4599</phone>
        <email>neta.r.schiff@gmail.com</email>
      </address>
    </author>
    <author fullname="Danny Dolev" initials="D." surname="Dolev">
      <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
      <address>
        <postal>
          <city>Jerusalem</city>
          <country>Israel</country>
        </postal>
        <phone>+972 2 549 4588</phone>
        <email>danny.dolev@mail.huji.ac.il</email>
      </address>
    </author>
    <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
      <organization showOnFrontPage="true">Huawei Network.IO Innovation Lab</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>tal.mizrahi.phd@gmail.com</email>
      </address>
    </author>
    <author fullname="Michael Schapira" initials="M." surname="Schapira">
      <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
      <address>
        <postal>
          <city>Jerusalem</city>
          <country>Israel</country>
        </postal>
        <phone>+972 2 549 4570</phone>
        <email>schapiram@huji.ac.il</email>
      </address>
    </author>
    <date month="02" year="2024"/>
    <area>int</area>
    <workgroup>ntp</workgroup>
    <keyword>NTP</keyword>
    <keyword>NTPv4</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">The Network Time Protocol version 4 (NTPv4), as defined in RFC 5905, is the mechanism used by NTP clients to synchronize with NTP servers across the Internet. This document describes a companion application to the NTPv4 client, named "Khronos", that is used as a "watchdog" alongside NTPv4 and that provides improved security against time-shifting attacks. Khronos involves changes to the NTP client's system process only. Since it does not affect the wire protocol, the Khronos mechanism is applicable to current and future time protocols.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.  
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by the
            Internet Engineering Steering Group (IESG).  Not all documents
            approved by the IESG are candidates for any level of Internet
            Standard; see Section 2 of RFC 7841. 
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9523" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2024 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-used-in-this-do">Conventions Used in This Document</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terms-and-abbreviations">Terms and Abbreviations</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-notations">Notations</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-khronos-design">Khronos Design</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-khronos-calibration-gatheri">Khronos Calibration - Gathering the Khronos Pool</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-khronoss-poll-and-system-pr">Khronos's Poll and System Processes</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-khronoss-recommended-parame">Khronos's Recommended Parameters</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations">Operational Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-load-considerations">Load Considerations</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-threat-model">Threat Model</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-attack-detection">Attack Detection</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-analysis-overview">Security Analysis Overview</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-khronos-pseudocode">Khronos Pseudocode</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-precision-vs-security">Precision vs. Security</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">NTPv4, as defined in <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>, is vulnerable to time-shifting attacks in which the attacker changes (shifts) the clock of a network device. Time-shifting attacks on NTP clients can be based on interfering with the communication between the NTP clients and servers or compromising the servers themselves. Time-shifting attacks on NTP are possible even if NTP communication is encrypted and authenticated. A weaker machine-in-the-middle (MITM) attacker can shift time simply by dropping or delaying packets, whereas a powerful attacker that has full control over an NTP server can do so by explicitly determining the NTP response content. This document introduces a time-shifting mitigation mechanism called "Khronos". 
	 Khronos can be integrated as a background-monitoring application (watchdog) that guards against time-shifting attacks in any NTP client. An NTP client that runs Khronos is interoperable with NTPv4 servers that are compatible with <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>. The Khronos mechanism does not affect the wire mechanism; therefore, it is applicable to any current or future time protocol.</t>
      <t indent="0" pn="section-1-2">Khronos is a mechanism that runs in the background, continuously monitoring the client clock (which is updated by NTPv4) and calculating an estimated offset (referred to as the "Khronos time offset"). When the offset exceeds a predefined threshold (specified in <xref target="attackDetection" format="default" sectionFormat="of" derivedContent="Section 5.2"/>), this is interpreted as the client experiencing a time-shifting attack. In this case, Khronos updates the client's clock.</t>
      <t indent="0" pn="section-1-3">When the client is not under attack, Khronos is passive.  This allows NTPv4 to control the client's clock and provides the ordinary high precision and accuracy of NTPv4.  When under attack, Khronos takes control of the client's clock, mitigating the time shift while guaranteeing relatively high accuracy with respect to UTC and precision, as discussed in <xref target="Precision_Security" format="default" sectionFormat="of" derivedContent="Section 7"/>.</t>
      <t indent="0" pn="section-1-4">By leveraging techniques from distributed computing theory for time synchronization, Khronos achieves accurate time even in the presence of powerful attackers who are in direct control of a large number of NTP servers. Khronos will prevent shifting the clock when the ratio of compromised time samples is below 2/3. In each polling interval, a Khronos client randomly selects and samples a few NTP servers out of a local pool of hundreds of servers. Khronos is carefully engineered to minimize the load on NTP servers and the communication overhead. 
	 In contrast, NTPv4 employs an algorithm that typically relies on a small subset of the NTP server pool (e.g., four servers) for time synchronization and is much more vulnerable to time-shifting attacks. Configuring NTPv4 to use several hundreds of servers will increase its security, but will incur very high network and computational overhead compared to Khronos and will be bounded by a compromised ratio of half of the time samples.</t>
      <t indent="0" pn="section-1-5">A Khronos client iteratively "crowdsources" time queries across NTP servers and applies a provably secure algorithm for eliminating "suspicious" responses and for averaging over the remaining responses. In each Khronos poll interval, the Khronos client selects, uniformly at random, a small subset (e.g., 10-15 servers) of a large server pool (containing hundreds of servers).
	 While Khronos queries around three times more servers per polling interval than NTP, Khronos's polling interval can be longer (e.g., 10 times longer) than NTPv4, thereby minimizing the load on NTP servers and the communication overhead. 
	 Moreover, Khronos's random server selection may even help to distribute queries across the whole pool.</t>
      <t indent="0" pn="section-1-6"> Khronos's security was evaluated both theoretically and experimentally with a prototype implementation. According to this security analysis, if a local Khronos pool consists of, for example, 500 servers, one-seventh of whom are controlled by an attacker and Khronos queries 15 servers in each Khronos poll interval (around 10 times the NTPv4 poll interval), then over 20 years of effort are required (in expectation) to successfully shift time at a Khronos client by over 100 ms from UTC. The full exposition of the formal analysis of this guarantee is available at <xref target="Khronos" format="default" sectionFormat="of" derivedContent="Khronos"/>. </t>
      <t indent="0" pn="section-1-7">Khronos maintains a time offset value (the Khronos time offset) and uses it as a reference for detecting attacks. This time offset value computation differs from the current NTPv4 in two key aspects:</t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-1-8">
        <li pn="section-1-8.1">
      First, in each Khronos poll interval, Khronos periodically communicates  with only a few (tens) randomly selected servers out of a pool consisting of a large number (e.g., hundreds) of NTP servers.</li>
        <li pn="section-1-8.2">Second, Khronos computes the Khronos time offset based on an approximate agreement technique to remove outliers, thus limiting the attacker's ability to contaminate the time samples (offsets) derived from the queried NTP servers.  </li>
      </ul>
      <t indent="0" pn="section-1-9">These two aspects allow Khronos to minimize the load on the NTP servers and to provide provable security guarantees against both MITM attackers and attackers capable of compromising a large number of NTP servers. </t>
      <t indent="0" pn="section-1-10">We note that, to some extent, Network Time Security (NTS) <xref target="RFC8915" format="default" sectionFormat="of" derivedContent="RFC8915"/> could make it more challenging for attackers to perform MITM attacks, but is of little impact if the servers themselves are compromised.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-conventions-used-in-this-do">Conventions Used in This Document</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-terms-and-abbreviations">Terms and Abbreviations</name>
        <dl newline="false" spacing="normal" indent="3" pn="section-2.1-1">
          <dt pn="section-2.1-1.1">NTPv4:</dt>
          <dd pn="section-2.1-1.2">Network Time Protocol version 4. See <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>.</dd>
          <dt pn="section-2.1-1.3">System process:</dt>
          <dd pn="section-2.1-1.4">See the "Selection Algorithm" and the "Cluster Algorithm" sections of <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>.</dd>
          <dt pn="section-2.1-1.5">Security Requirements:</dt>
          <dd pn="section-2.1-1.6">See "<xref target="RFC7384" format="title" sectionFormat="of" derivedContent="Security Requirements of Time Protocols in Packet Switched Networks"/>" <xref target="RFC7384" format="default" sectionFormat="of" derivedContent="RFC7384"/>.</dd>
          <dt pn="section-2.1-1.7">NTS:</dt>
          <dd pn="section-2.1-1.8">Network Time Security.  See "<xref target="RFC8915" format="title" sectionFormat="of" derivedContent="Network Time Security for the Network Time Protocol"/>" <xref target="RFC8915" format="default" sectionFormat="of" derivedContent="RFC8915"/>.</dd>
        </dl>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-notations">Notations</name>
        <t keepWithNext="true" indent="0" pn="section-2.2-1">When describing the Khronos algorithm, the following notation is used:</t>
        <table anchor="table_example" align="center" pn="table-1">
          <name slugifiedName="name-khronos-notation">Khronos Notation</name>
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Notation</th>
              <th align="left" colspan="1" rowspan="1">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">n </td>
              <td align="left" colspan="1" rowspan="1">The number of candidate servers in a Khronos pool (potentially hundreds). </td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">m </td>
              <td align="left" colspan="1" rowspan="1">The number of servers that Khronos queries in each poll interval (up to tens). </td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">w </td>
              <td align="left" colspan="1" rowspan="1">An upper bound on the distance between any "truechimer" NTP server (as in <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>) and UTC.</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">B </td>
              <td align="left" colspan="1" rowspan="1">An upper bound on the client's clock error rate (ms/sec). </td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">ERR  </td>
              <td align="left" colspan="1" rowspan="1">An upper bound on the client's clock error between Khronos polls (ms).</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">K  </td>
              <td align="left" colspan="1" rowspan="1">The number of Khronos pool resamplings until reaching "panic mode".</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">H  </td>
              <td align="left" colspan="1" rowspan="1">Predefined threshold for a Khronos time offset triggering clock update by Khronos.</td>
            </tr>
          </tbody>
        </table>
        <t keepWithPrevious="true" indent="0" pn="section-2.2-3"/>
        <t indent="0" pn="section-2.2-4">The recommended values are discussed in <xref target="values" format="default" sectionFormat="of" derivedContent="Section 3.3"/>.</t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-khronos-design">Khronos Design</name>
      <t indent="0" pn="section-3-1">Khronos periodically queries a set of m (tens) servers from a large (hundreds) server pool in each Khronos poll interval, where the m servers are selected from the server pool at random. Based on empirical analyses, to minimize the load on NTP servers while providing high security, the Khronos poll interval should be around 10 times the NTPv4 poll interval (i.e., a Khronos clock update occurs once every 10 NTPv4 clock updates). In each Khronos poll interval, if the Khronos time offset exceeds a predetermined threshold (denoted as H), an attack is indicated.</t>
      <t indent="0" pn="section-3-2"> Unless an attack is indicated, Khronos uses only one sample from each server (avoiding the "Clock Filter Algorithm" as defined in <xref target="RFC5905" sectionFormat="of" section="10" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5905#section-10" derivedContent="RFC5905"/>). When under attack, Khronos uses several samples from each server and executes the "Clock Filter Algorithm" for choosing the best sample from each server with low jitter. Then, given a sample from each server, Khronos discards outliers by executing the procedure described in <xref target="Conditions" format="default" sectionFormat="of" derivedContent="Section 3.2"/>.</t>
      <t indent="0" pn="section-3-3">Between consecutive Khronos polls, Khronos keeps track of clock offsets, e.g., by catching clock discipline (as in <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>) calls. The sum of offsets is referred to as the "Khronos inter-poll offset" (denoted as tk), which is set to zero after each Khronos poll.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-khronos-calibration-gatheri">Khronos Calibration - Gathering the Khronos Pool</name>
        <t indent="0" pn="section-3.1-1">Calibration is performed the first time Khronos is executed and periodically thereafter (once every two weeks). The calibration process generates a local Khronos pool of n (up to hundreds) NTP servers that the client can synchronize with.
To this end, Khronos makes multiple DNS queries to the NTP pools. Each query returns a few NTP server IPs that Khronos combines into one set of IPs considered as the Khronos pool.
The servers in the Khronos pool should be scattered across different regions to make it harder for an attacker to compromise or gain MITM capabilities with respect to a large fraction of the Khronos pool. Therefore, Khronos calibration queries general NTP server pools (e.g., pool.ntp.org) and not just the pool in the client's state or region.

In addition, servers can be selected to be part of the Khronos pool manually or by using other NTP pools (such as NIST Internet time servers).</t>
        <t indent="0" pn="section-3.1-2">The first Khronos update requires m servers, which can be found in several minutes. Moreover, it is possible to query several DNS pool names to vastly accelerate the calibration and the first update.</t>
        <t indent="0" pn="section-3.1-3">The calibration is the only Khronos part where DNS traffic is generated. Around 125 DNS queries are required by Khronos to obtain addresses of 500 NTP servers, which is higher than Khronos pool size (n). Assuming the calibration period is two weeks, the expected DNS traffic generated by the Khronos client is less than 10 DNS queries per day, which is usually several orders of magnitude lower than the total daily number of DNS queries per machine. </t>
      </section>
      <section anchor="Conditions" numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-khronoss-poll-and-system-pr">Khronos's Poll and System Processes</name>
        <t indent="0" pn="section-3.2-1">In each Khronos poll interval, the Khronos system process randomly chooses a set of m (tens) servers out of the Khronos pool of n (hundreds) servers and samples them. Note that the randomness of the server selection is crucial for the security of the scheme; therefore, any Khronos implementation must use a secure randomness implementation such as what is used for encryption key generation. </t>
        <t indent="0" pn="section-3.2-2"> Khronos's polling times of different servers may spread uniformly within its poll interval, which is similar to NTPv4. Servers that do not respond during the Khronos poll interval are filtered out. If less than one-third of the m servers are left, a new subset of servers is immediately sampled in the exact same manner (which is called the "resampling" process).</t>
        <t indent="0" pn="section-3.2-3">Next, out of the time samples received from this chosen subset of servers, the lowest third of the samples' offset values and the highest third of the samples' offset values are discarded.</t>
        <t indent="0" pn="section-3.2-4">Khronos checks that the following two conditions hold for the remaining sampled offsets (considering w and ERR defined in <xref target="table_example" format="default" sectionFormat="of" derivedContent="Table 1"/>): </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.2-5">
          <li pn="section-3.2-5.1">The maximal distance between every two offsets does not exceed 2w (can be verified by considering just the minimum and the maximum offsets).</li>
          <li pn="section-3.2-5.2">The distance between the offset's average and the Khronos inter-poll offset is ERR+2w at most.</li>
        </ul>
        <t indent="0" pn="section-3.2-6">
   In the event that both of these conditions are satisfied, the average of
   the offsets is set to be the Khronos time offset. Otherwise, resampling is
   performed. This process spreads the Khronos client's queries across
   servers, thereby improving security against powerful attackers (as
   discussed in <xref target="Security_analysis" format="default" sectionFormat="of" derivedContent="Section 5.3"/>) and
   mitigating the effect of a DoS attack on NTP servers that renders them
   non-responsive. This resampling process continues in subsequent Khronos
   poll intervals until the two conditions are both satisfied or the number of
   times the servers are resampled exceeds a "panic trigger" (K in <xref target="table_example" format="default" sectionFormat="of" derivedContent="Table 1"/>). In this case, Khronos enters
   panic mode.</t>
        <t indent="0" pn="section-3.2-7">In panic mode, Khronos queries all the servers in its local Khronos pool, orders the collected time samples from lowest to highest, and eliminates the lowest third and the highest third of the samples. The client then calculates the average of the remaining samples and sets this average to be the new Khronos time offset.</t>
        <t indent="0" pn="section-3.2-8">If the Khronos time offset exceeds a predetermined threshold (H), it is passed on to the clock discipline algorithm in order to steer the system time (as in <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>). In this case, the user and/or admin of the client machine should be notified about the detected time-shifting attack, e.g., by a message written to a relevant event log or displayed on screen.</t>
        <t indent="0" pn="section-3.2-9"> Note that resampling immediately follows the previous sampling
        since waiting until the next polling interval may increase the time
        shift in face of an attack. This shouldn't generate high overhead
        since the number of resamples is bounded by K (after K resamplings,
        panic mode is in place) and the chances of ending up with repeated
        resampling are low (see <xref target="Security" format="default" sectionFormat="of" derivedContent="Section 5"/> for
        more details). Moreover, in an interval following a panic mode,
        Khronos executes the same system process that starts by querying only
        m servers (regardless of previous panic).</t>
      </section>
      <section anchor="values" numbered="true" toc="include" removeInRFC="false" pn="section-3.3">
        <name slugifiedName="name-khronoss-recommended-parame">Khronos's Recommended Parameters</name>
        <t indent="0" pn="section-3.3-1">According to empirical observations (presented in <xref target="Khronos" format="default" sectionFormat="of" derivedContent="Khronos"/>), querying 15 servers at each poll interval (i.e., m=15) out of 500 servers (i.e., n=500) and setting w to be around 25 ms provides both high time accuracy and good security. Specifically, when selecting w=25 ms, approximately 83% of the servers' clocks are, at most, w away from UTC and within 2w from each other, satisfying the first condition of Khronos's system process. For a similar reason, the threshold for a Khronos time offset triggering a clock update by Khronos (H) should be between w and 2w; the default is 30 ms.	Note that in order to support scenarios with congested links, using a higher w value, such as 1 second, is recommended.</t>
        <t indent="0" pn="section-3.3-2">Furthermore, according to Khronos security analysis, setting K to be 3 (i.e., if  the two conditions are not satisfied after three resamplings, then Khronos enters panic mode) is safe when facing time-shifting attacks.  In addition, the probability of an attacker forcing a panic mode on a client when K=3 is negligible (less than 0.000002 for each polling interval).</t>
        <t indent="0" pn="section-3.3-3">Khronos's effect on precision and accuracy are discussed in Sections <xref target="Security" format="counter" sectionFormat="of" derivedContent="5"/> and <xref target="Precision_Security" format="counter" sectionFormat="of" derivedContent="7"/>. </t>
      </section>
    </section>
    <section anchor="operational" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <t indent="0" pn="section-4-1"> Khronos is designed to defend NTP clients from time-shifting attacks while using public NTP servers.  As such, Khronos is not applicable for data centers and enterprises that synchronize with local atomic clocks, GPS devices, or a dedicated NTP server (e.g., due to regulations).</t>
      <t indent="0" pn="section-4-2"> Khronos can be used for devices that require and depend upon timekeeping within a configurable constant distance from UTC.</t>
      <section anchor="Security_vs._load_considerations" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-load-considerations">Load Considerations</name>
        <t indent="0" pn="section-4.1-1">One requirement from Khronos is not to induce excessive load on NTP servers beyond that of NTPv4, even if it is widely integrated into NTP clients. We discuss below the possible causes for a Khronos-induced load on servers and how this can be mitigated.</t>
        <t indent="0" pn="section-4.1-2">Servers in pool.ntp.org are weighted differently by the NTP server pool when assigned to NTP clients. Specifically, server owners define a "server weight" (the "netspeed" parameter) and servers are assigned to clients probabilistically according to their proportional weight. Khronos's queries are equally distributed across a pool of servers. To avoid overloading servers, Khronos queries servers less frequently than NTPv4, with the Khronos query interval set to 10 times the default NTPv4 maxpoll (interval) parameter. Hence, if Khronos queries are targeted at servers in pool.ntp.org, any target increase in server load (in terms of multiplicative increase in queries or number of bytes per second) is controlled by the poll interval configuration, which was analyzed in <xref target="Ananke" format="default" sectionFormat="of" derivedContent="Ananke"/>.</t>
        <t indent="0" pn="section-4.1-3">Consider the scenario where an attacker attempts to generate significant load on NTP servers by triggering multiple consecutive panic modes at multiple NTP clients. We note that to accomplish this, the attacker must have MITM capabilities with respect to the communication between each and every client in a large group of clients and a large fraction of all NTP servers in the queried pool. This implies that the attacker must either be physically located at a central location (e.g., at the egress of a large ISP) or launch a wide-scale attack (e.g., on BGP or DNS); thereby, it is capable of carrying similar and even higher impact attacks regardless of Khronos clients.</t>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <section anchor="threatModel" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-threat-model">Threat Model</name>
        <t indent="0" pn="section-5.1-1">The threat model encompasses a broad spectrum of attackers impacting a subset (e.g., one-third) of the servers in NTP pools. These attackers can range from a fairly weak (yet dangerous) MITM attacker that is only capable of delaying and dropping packets (e.g., using the Bufferbloat attack <xref target="RFC8033" format="default" sectionFormat="of" derivedContent="RFC8033"/>) to an extremely powerful attacker who is in control of (even authenticated) NTP servers and is capable of fully determining the values of the time samples returned by these NTP servers (see detailed attacker discussion in <xref target="RFC7384" format="default" sectionFormat="of" derivedContent="RFC7384"/>).</t>
        <t indent="0" pn="section-5.1-2">For example, the attackers covered by this model might be:</t>
        <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section-5.1-3"><li pn="section-5.1-3.1" derivedCounter="1.">in direct control of a fraction of the NTP servers (e.g., by exploiting a software vulnerability),</li>
          <li pn="section-5.1-3.2" derivedCounter="2.">an ISP (or other attacker at the Autonomous System level) on the default BGP paths from the NTP client to a fraction of the available servers,</li>
          <li pn="section-5.1-3.3" derivedCounter="3.">a nation state with authority over the owners of NTP servers in its jurisdiction, or</li>
          <li pn="section-5.1-3.4" derivedCounter="4.">an attacker capable of hijacking (e.g., through DNS cache poisoning or BGP prefix hijacking) traffic to some of the available NTP servers.</li>
        </ol>
        <t indent="0" pn="section-5.1-4">The details of the specific attack scenario are abstracted by reasoning about attackers in terms of the fraction of servers with respect to which the attacker has adversarial capabilities. 
	Attackers that can impact communications with (or control) a higher fraction of the servers (e.g., all servers) are out of scope. 
Considering the pool size across the world to be in the thousands, such attackers will most likely be capable of creating far worse damage than time-shifting attacks. </t>
        <t indent="0" pn="section-5.1-5"> Notably, Khronos provides protection from MITM and powerful attacks that cannot be achieved by cryptographic authentication protocols since, even with such measures in place, an attacker can still influence time by dropping/delaying packets. However, adding an authentication layer (e.g., NTS <xref target="RFC8915" format="default" sectionFormat="of" derivedContent="RFC8915"/>) to Khronos will enhance its security guarantees and enable the detection of various spoofing and modification attacks.</t>
        <t indent="0" pn="section-5.1-6"> Moreover, Khronos uses randomness to independently select the queried servers in each poll interval, preventing attackers from exploiting observations of past server selections.
        </t>
      </section>
      <section anchor="attackDetection" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-attack-detection">Attack Detection</name>
        <t indent="0" pn="section-5.2-1"> Khronos detects time-shifting attacks by constantly monitoring NTPv4's (or potentially any other current or future time protocol) clock and the offset computed by Khronos and checking whether the offset exceeds a predetermined threshold (H). NTPv4 controls the client's clock unless an attack was detected. Under attack, Khronos takes control over the client's clock in order to prevent its shift.</t>
        <t indent="0" pn="section-5.2-2">Analytical results (in <xref target="Khronos" format="default" sectionFormat="of" derivedContent="Khronos"/>) indicate that if a local Khronos pool consists of 500 servers, one-seventh of whom are controlled by a MITM attacker, and 15 of those servers are queried in each Khronos poll interval, then success in shifting time of a Khronos client by even a small degree (100 ms) takes many years of effort (over 20 years in expectation). See a brief overview of Khronos's security analysis below.</t>
      </section>
      <section anchor="Security_analysis" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-security-analysis-overview">Security Analysis Overview</name>
        <t indent="0" pn="section-5.3-1">Time samples that are at most w away from UTC are considered "good", whereas other samples are considered "malicious". Two scenarios are considered: </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.3-2">
          <li pn="section-5.3-2.1">Scenario A: Less than two-thirds of the queried servers are under the attacker's control.</li>
          <li pn="section-5.3-2.2">Scenario B: The attacker controls more than two-thirds of the queried servers.</li>
        </ul>
        <t indent="0" pn="section-5.3-3">Scenario A consists of two sub-cases:</t>
        <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section-5.3-4">
	  <li pn="section-5.3-4.1" derivedCounter="1.">There is at least one good sample in the set of samples not eliminated by Khronos (in the middle third of samples), and</li>
          <li pn="section-5.3-4.2" derivedCounter="2.">there are no good samples in the remaining set of samples.</li>
        </ol>
        <t indent="0" pn="section-5.3-5">In sub-case 1, the other remaining samples, including those
   provided by the attacker, must be close to a good sample (otherwise, the first condition of Khronos's system process in <xref target="Conditions" format="default" sectionFormat="of" derivedContent="Section 3.2"/> is violated and a new set of servers is chosen). This implies that the average of the remaining samples must be close to UTC.</t>
        <t indent="0" pn="section-5.3-6">In sub-case 2, since more than a third of the initial samples were
   good, both the (discarded) third-lowest-value samples and the
   (discarded) third-highest-value samples must each contain a good
   sample.  Hence, all the remaining samples are bounded from both
   above and below by good samples, and so is their average value,
   implying that this value is close to UTC <xref target="RFC5905" format="default" sectionFormat="of" derivedContent="RFC5905"/>.</t>
        <t indent="0" pn="section-5.3-7">In Scenario B, the worst possibility for the client is that all remaining
samples are malicious (i.e., more than w away from UTC).  However, as proved
in <xref target="Khronos" format="default" sectionFormat="of" derivedContent="Khronos"/>, the probability of this scenario
is extremely low, even if the attacker controls a large fraction (e.g.,
one-fourth) of the n servers in the local Khronos pool.  Therefore, the
probability that the attacker repeatedly reaches this scenario decreases
exponentially, rendering the probability of a significant time shift
negligible.  We can express the improvement ratio of Khronos over NTPv4 by the
ratios of their single-shift probabilities.  Such ratios are provided in <xref target="improvement_ratio" format="default" sectionFormat="of" derivedContent="Table 2"/>, where higher values indicate
higher improvement of Khronos over NTPv4 and are also proportional to the
expected time until a time-shift attack succeeds once.</t>
        <t keepWithNext="true" indent="0" pn="section-5.3-8"/>
        <table anchor="improvement_ratio" align="center" pn="table-2">
          <name slugifiedName="name-khronos-improvement">Khronos Improvement</name>
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Attack Ratio</th>
              <th align="center" colspan="1" rowspan="1">6 Samples</th>
              <th align="center" colspan="1" rowspan="1">12 Samples</th>
              <th align="center" colspan="1" rowspan="1">18 Samples</th>
              <th align="center" colspan="1" rowspan="1">24 Samples</th>
              <th align="center" colspan="1" rowspan="1">30 Samples</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">1/3</td>
              <td align="center" colspan="1" rowspan="1">1.93e+01</td>
              <td align="center" colspan="1" rowspan="1">3.85e+02</td>
              <td align="center" colspan="1" rowspan="1">7.66e+03</td>
              <td align="center" colspan="1" rowspan="1">1.52e+05</td>
              <td align="center" colspan="1" rowspan="1">3.03e+06</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">1/5</td>
              <td align="center" colspan="1" rowspan="1">1.25e+01</td>
              <td align="center" colspan="1" rowspan="1">1.59e+02</td>
              <td align="center" colspan="1" rowspan="1">2.01e+03</td>
              <td align="center" colspan="1" rowspan="1">2.54e+04</td>
              <td align="center" colspan="1" rowspan="1">3.22e+05</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">1/7</td>
              <td align="center" colspan="1" rowspan="1">1.13e+01</td>
              <td align="center" colspan="1" rowspan="1">1.29e+02</td>
              <td align="center" colspan="1" rowspan="1">1.47e+03</td>
              <td align="center" colspan="1" rowspan="1">1.67e+04</td>
              <td align="center" colspan="1" rowspan="1">1.90e+05</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">1/9</td>
              <td align="center" colspan="1" rowspan="1">8.54e+00</td>
              <td align="center" colspan="1" rowspan="1">7.32e+01</td>
              <td align="center" colspan="1" rowspan="1">6.25e+02</td>
              <td align="center" colspan="1" rowspan="1">5.32e+03</td>
              <td align="center" colspan="1" rowspan="1">4.52e+04</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">1/10</td>
              <td align="center" colspan="1" rowspan="1">5.83e+00</td>
              <td align="center" colspan="1" rowspan="1">3.34e+01</td>
              <td align="center" colspan="1" rowspan="1">1.89e+02</td>
              <td align="center" colspan="1" rowspan="1">1.07e+03</td>
              <td align="center" colspan="1" rowspan="1">6.04e+03</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">1/15</td>
              <td align="center" colspan="1" rowspan="1">3.21e+00</td>
              <td align="center" colspan="1" rowspan="1">9.57e+00</td>
              <td align="center" colspan="1" rowspan="1">2.79e+01</td>
              <td align="center" colspan="1" rowspan="1">8.05e+01</td>
              <td align="center" colspan="1" rowspan="1">2.31e+02</td>
            </tr>
          </tbody>
        </table>
        <t keepWithPrevious="true" indent="0" pn="section-5.3-10"/>
        <t indent="0" pn="section-5.3-11">In addition to evaluating the probability of an attacker successfully shifting time at the client's clock, we also evaluated the probability that the attacker succeeds in launching a DoS attack on the servers by causing many clients to enter panic mode (and querying all the servers in their local Khronos pools). This probability (with the previous parameters of n=500, m=15, w=25, and K=3) is negligible even for an attacker who controls a large number of servers in clients' local Khronos pools, and it is expected to take decades to force a panic mode. </t>
        <t indent="0" pn="section-5.3-12">Further details about Khronos's security guarantees can be found in <xref target="Khronos" format="default" sectionFormat="of" derivedContent="Khronos"/>.</t>
      </section>
    </section>
    <section anchor="Pseudocode" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-khronos-pseudocode">Khronos Pseudocode</name>
      <t keepWithNext="true" indent="0" pn="section-6-1">The pseudocode for Khronos Time Sampling Scheme, which is invoked in each Khronos poll interval, is as follows:</t>
      <sourcecode type="pseduocode" markers="false" pn="section-6-2">
counter = 0
S = []
T = []
While counter &lt; K do
   S = sample(m) //get samples from (tens of) randomly chosen servers
   T = bi_side_trim(S,1/3) //trim lowest and highest thirds
   if (max(T) - min(T) &lt;= 2w) and (|avg(T) - tk| &lt; ERR + 2w), then
       return avg(T) // Normal case
   end
   counter ++
end
// panic mode
S = sample(n)
T = bi-sided-trim(S,1/3) //trim lowest and highest thirds
return avg(T)
</sourcecode>
      <t indent="0" pn="section-6-3">Note that if clock disciplines can be called during this pseudocode's execution, then each time offset sample, as well as the final output (Khronos time offset), should be normalized with the sum of the clock disciplines offsets (tk) at the time of computing it.</t>
    </section>
    <section anchor="Precision_Security" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-precision-vs-security">Precision vs. Security</name>
      <t indent="0" pn="section-7-1">Since NTPv4 updates the clock at times when no time-shifting attacks are detected, the precision and accuracy of a Khronos client are the same as NTPv4 at these times. 
	 Khronos is proved to maintain an accurate estimation of the UTC with high probability. Therefore, when Khronos detects that client's clock error exceeds a threshold (H), it considers it to be an attack and takes control over the client's clock. As a result, the time shift is mitigated and high accuracy is guaranteed (the error is bounded by H).</t>
      <t indent="0" pn="section-7-2"> Khronos is based on crowdsourcing across servers and regions, changes the set of queried servers more frequently than NTPv4 <xref target="Khronos" format="default" sectionFormat="of" derivedContent="Khronos"/>, and avoids some of the filters in NTPv4's system process. These factors can potentially harm its precision. Therefore, a smoothing mechanism can be used where instead of a simple average of the remaining samples, the smallest (in absolute value) offset is used unless its distance from the average is higher than a predefined value. Preliminary experiments demonstrated promising results with precision similar to NTPv4.</t>
      <t indent="0" pn="section-7-3">In applications such as multi-source media streaming, which are highly sensitive to time differences among hosts, note that it is advisable to use Khronos at all hosts in order to obtain high precision, even in the presence of attackers that try to shift each host in a different magnitude and/or direction. Another approach that is more efficient for these cases may be to allow direct time synchronization between one host who runs Khronos to others.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-8-1">This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references pn="section-9.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC5905" target="https://www.rfc-editor.org/info/rfc5905" quoteTitle="true" derivedAnchor="RFC5905">
          <front>
            <title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
            <author fullname="D. Mills" initials="D." surname="Mills"/>
            <author fullname="J. Martin" initials="J." role="editor" surname="Martin"/>
            <author fullname="J. Burbank" initials="J." surname="Burbank"/>
            <author fullname="W. Kasch" initials="W." surname="Kasch"/>
            <date month="June" year="2010"/>
            <abstract>
              <t indent="0">The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet. This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family. NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs. It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required. It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5905"/>
          <seriesInfo name="DOI" value="10.17487/RFC5905"/>
        </reference>
        <reference anchor="RFC7384" target="https://www.rfc-editor.org/info/rfc7384" quoteTitle="true" derivedAnchor="RFC7384">
          <front>
            <title>Security Requirements of Time Protocols in Packet Switched Networks</title>
            <author fullname="T. Mizrahi" initials="T." surname="Mizrahi"/>
            <date month="October" year="2014"/>
            <abstract>
              <t indent="0">As time and frequency distribution protocols are becoming increasingly common and widely deployed, concern about their exposure to various security threats is increasing. This document defines a set of security requirements for time protocols, focusing on the Precision Time Protocol (PTP) and the Network Time Protocol (NTP). This document also discusses the security impacts of time protocol practices, the performance implications of external security practices on time protocols, and the dependencies between other security services and time synchronization.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7384"/>
          <seriesInfo name="DOI" value="10.17487/RFC7384"/>
        </reference>
        <reference anchor="RFC8033" target="https://www.rfc-editor.org/info/rfc8033" quoteTitle="true" derivedAnchor="RFC8033">
          <front>
            <title>Proportional Integral Controller Enhanced (PIE): A Lightweight Control Scheme to Address the Bufferbloat Problem</title>
            <author fullname="R. Pan" initials="R." surname="Pan"/>
            <author fullname="P. Natarajan" initials="P." surname="Natarajan"/>
            <author fullname="F. Baker" initials="F." surname="Baker"/>
            <author fullname="G. White" initials="G." surname="White"/>
            <date month="February" year="2017"/>
            <abstract>
              <t indent="0">Bufferbloat is a phenomenon in which excess buffers in the network cause high latency and latency variation. As more and more interactive applications (e.g., voice over IP, real-time video streaming, and financial transactions) run in the Internet, high latency and latency variation degrade application performance. There is a pressing need to design intelligent queue management schemes that can control latency and latency variation, and hence provide desirable quality of service to users.</t>
              <t indent="0">This document presents a lightweight active queue management design called "PIE" (Proportional Integral controller Enhanced) that can effectively control the average queuing latency to a target value. Simulation results, theoretical analysis, and Linux testbed results have shown that PIE can ensure low latency and achieve high link utilization under various congestion situations. The design does not require per-packet timestamps, so it incurs very little overhead and is simple enough to implement in both hardware and software.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8033"/>
          <seriesInfo name="DOI" value="10.17487/RFC8033"/>
        </reference>
        <reference anchor="RFC8915" target="https://www.rfc-editor.org/info/rfc8915" quoteTitle="true" derivedAnchor="RFC8915">
          <front>
            <title>Network Time Security for the Network Time Protocol</title>
            <author fullname="D. Franke" initials="D." surname="Franke"/>
            <author fullname="D. Sibold" initials="D." surname="Sibold"/>
            <author fullname="K. Teichel" initials="K." surname="Teichel"/>
            <author fullname="M. Dansarie" initials="M." surname="Dansarie"/>
            <author fullname="R. Sundblad" initials="R." surname="Sundblad"/>
            <date month="September" year="2020"/>
            <abstract>
              <t indent="0">This memo specifies Network Time Security (NTS), a mechanism for using Transport Layer Security (TLS) and Authenticated Encryption with Associated Data (AEAD) to provide cryptographic security for the client-server mode of the Network Time Protocol (NTP).</t>
              <t indent="0">NTS is structured as a suite of two loosely coupled sub-protocols. The first (NTS Key Establishment (NTS-KE)) handles initial authentication and key establishment over TLS. The second (NTS Extension Fields for NTPv4) handles encryption and authentication during NTP time synchronization via extension fields in the NTP packets, and holds all required state only on the client via opaque cookies.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8915"/>
          <seriesInfo name="DOI" value="10.17487/RFC8915"/>
        </reference>
      </references>
      <references pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="Ananke" target="https://www.ndss-symposium.org/wp-content/uploads/ndss2021_1A-2_24302_paper.pdf" quoteTitle="true" derivedAnchor="Ananke">
          <front>
            <title>A Devil of a Time: How Vulnerable is NTP to Malicious Timeservers?</title>
            <author initials="Y." surname="Perry">
              <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
            </author>
            <author initials="N" surname="Rozen-Schiff">
              <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
            </author>
            <author initials="M." surname="Schapira">
              <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
            </author>
            <date month="February" year="2021"/>
          </front>
          <seriesInfo name="DOI" value="10.14722/ndss.2021.24302"/>
          <refcontent>Network and Distributed Systems Security (NDSS) Symposium, Virtual</refcontent>
        </reference>
        <reference anchor="Khronos" target="https://www.ndss-symposium.org/wp-content/uploads/2018/02/ndss2018_02A-2_Deutsch_paper.pdf" quoteTitle="true" derivedAnchor="Khronos">
          <front>
            <title>Preventing (Network) Time Travel with Chronos</title>
            <author initials="O." surname="Deutsch">
              <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
            </author>
            <author initials="N." surname="Rozen-Schiff">
              <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
            </author>
            <author initials="D." surname="Dolev">
              <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
            </author>
            <author initials="M." surname="Schapira">
              <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
            </author>
            <date month="February" year="2018"/>
          </front>
          <seriesInfo name="DOI" value="10.14722/ndss.2018.23231"/>
          <refcontent>Network and Distributed Systems Security (NDSS) Symposium, San Diego, CA, USA</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">The authors would like to thank <contact fullname="Erik Kline"/>,
      <contact fullname="Miroslav Lichvar"/>, <contact fullname="Danny       Mayer"/>, <contact fullname="Karen O'Donoghue"/>, <contact fullname="Dieter Sibold"/>, <contact fullname="Yaakov (J) Stein"/>,
      <contact fullname="Harlan Stenn"/>, <contact fullname="Hal Murray"/>,
      <contact fullname="Marcus Dansarie"/>, <contact fullname="Geoff       Huston"/>, <contact fullname="Roni Even"/>, <contact fullname="Benjamin       Schwartz"/>, <contact fullname="Tommy Pauly"/>, <contact fullname="Rob       Sayre"/>, <contact fullname="Dave Hart"/>, and <contact fullname="Ask       Bjorn Hansen"/> for valuable contributions to this document and helpful
      discussions and comments.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Neta Rozen-Schiff" initials="N." surname="Rozen-Schiff">
        <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
        <address>
          <postal>
            <city>Jerusalem</city>
            <country>Israel</country>
          </postal>
          <phone>+972 2 549 4599</phone>
          <email>neta.r.schiff@gmail.com</email>
        </address>
      </author>
      <author fullname="Danny Dolev" initials="D." surname="Dolev">
        <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
        <address>
          <postal>
            <city>Jerusalem</city>
            <country>Israel</country>
          </postal>
          <phone>+972 2 549 4588</phone>
          <email>danny.dolev@mail.huji.ac.il</email>
        </address>
      </author>
      <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
        <organization showOnFrontPage="true">Huawei Network.IO Innovation Lab</organization>
        <address>
          <postal>
            <country>Israel</country>
          </postal>
          <email>tal.mizrahi.phd@gmail.com</email>
        </address>
      </author>
      <author fullname="Michael Schapira" initials="M." surname="Schapira">
        <organization showOnFrontPage="true">Hebrew University of Jerusalem</organization>
        <address>
          <postal>
            <city>Jerusalem</city>
            <country>Israel</country>
          </postal>
          <phone>+972 2 549 4570</phone>
          <email>schapiram@huji.ac.il</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
