draft-ietf-ntp-using-nts-for-ntp-07.txt   draft-ietf-ntp-using-nts-for-ntp-08.txt 
NTP Working Group D. Franke NTP Working Group D. Franke
Internet-Draft Akamai Internet-Draft Akamai
Intended status: Standards Track D. Sibold Intended status: Standards Track D. Sibold
Expires: May 4, 2017 K. Teichel Expires: September 14, 2017 K. Teichel
PTB PTB
October 31, 2016 March 13, 2017
Using the Network Time Security Specification to Secure the Network Time Network Time Security for the Network Time Protocol
Protocol draft-ietf-ntp-using-nts-for-ntp-08
draft-ietf-ntp-using-nts-for-ntp-07
Abstract Abstract
This document describes how to reach the objectives described in the This memo specifies Network Time Security (NTS), a mechanism for
Network Time Security (NTS) specification when securing time using Transport Layer Security (TLS) and Authenticated Encryption
synchronization with servers using the Network Time Protocol (NTP). with Associated Data (AEAD) to provide cryptographic security for the
Network Time Protocol.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
skipping to change at page 1, line 40 skipping to change at page 1, line 41
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on May 4, 2017. This Internet-Draft will expire on September 14, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terms and Abbreviations . . . . . . . . . . . . . . . . . . . 3
3. Terms and Abbreviations . . . . . . . . . . . . . . . . . . . 4 3. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Overview of NTS-Secured NTP . . . . . . . . . . . . . . . . . 4 4. Overview of NTS-Secured NTP . . . . . . . . . . . . . . . . . 4
4.1. Client-Server Mode . . . . . . . . . . . . . . . . . . . 5 4.1. Client-Server Mode . . . . . . . . . . . . . . . . . . . 5
4.2. Symmetric/Peer Mode and Control Modes . . . . . . . . . . 5 4.2. Symmetric/Peer Mode and Control Modes . . . . . . . . . . 5
5. Employing DTLS for NTP Security . . . . . . . . . . . . . . . 5 5. Employing (D)TLS for NTP Security . . . . . . . . . . . . . . 5
5.1. DTLS profile for Network Time Security . . . . . . . . . 6 5.1. TLS profile for Network Time Security . . . . . . . . . . 6
5.2. Transport mechanisms for DTLS records . . . . . . . . . . 7 5.2. The NTS-encapsulated NTPv4 protocol . . . . . . . . . . . 7
5.2.1. Transport via NTS port . . . . . . . . . . . . . . . 7 5.3. The NTS Key Establishment protocol . . . . . . . . . . . 7
5.2.2. Transport via NTP extension field . . . . . . . . . . 7 5.3.1. NTS-KE record types . . . . . . . . . . . . . . . . . 9
5.3. The NTS-encapsulated NTPv4 protocol . . . . . . . . . . . 9 5.3.2. Key Extraction (generally) . . . . . . . . . . . . . 11
5.4. The NTS Key Establishment protocol . . . . . . . . . . . 10 5.4. NTS Extensions for NTPv4 . . . . . . . . . . . . . . . . 11
5.4.1. NTS-KE record types . . . . . . . . . . . . . . . . . 11 5.4.1. Key Extraction (for NTPv4) . . . . . . . . . . . . . 11
5.4.2. Key Extraction (generally) . . . . . . . . . . . . . 14 5.4.2. Packet structure overview . . . . . . . . . . . . . . 12
5.5. NTS Extensions for NTPv4 . . . . . . . . . . . . . . . . 14 5.4.3. The Unique Identifier extension . . . . . . . . . . . 13
5.5.1. Key Extraction (for NTPv4) . . . . . . . . . . . . . 14 5.4.4. The NTS Cookie extension . . . . . . . . . . . . . . 13
5.5.2. Packet structure overview . . . . . . . . . . . . . . 15 5.4.5. The NTS Cookie Placeholder extension . . . . . . . . 14
5.5.3. The Unique Identifier extension . . . . . . . . . . . 16 5.4.6. The NTS Authenticator and Encrypted Extensions
5.5.4. The NTS Cookie extension . . . . . . . . . . . . . . 16 extension . . . . . . . . . . . . . . . . . . . . . . 14
5.5.5. The NTS Cookie Placeholder extension . . . . . . . . 16 5.4.7. Protocol details . . . . . . . . . . . . . . . . . . 15
5.5.6. The NTS Authenticator and Encrypted Extensions 5.5. Recommended format for NTS cookies . . . . . . . . . . . 17
extension . . . . . . . . . . . . . . . . . . . . . . 17 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
5.5.7. Protocol details . . . . . . . . . . . . . . . . . . 18 7. Security Considerations . . . . . . . . . . . . . . . . . . . 22
5.6. Recommended format for NTS cookies . . . . . . . . . . . 20 7.1. Random Number Generation . . . . . . . . . . . . . . . . 23
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 7.2. Usage of NTP Pools . . . . . . . . . . . . . . . . . . . 23
6.1. Field Type Registry . . . . . . . . . . . . . . . . . . . 21 7.3. Initial Verification of the Server Certificates . . . . . 23
6.2. SMI Security for S/MIME CMS Content Type Registry . . . . 21 7.4. Treatment of Initial Messages . . . . . . . . . . . . . . 23
6.3. DTLS-Based Key Exchange . . . . . . . . . . . . . . . . . 21 7.5. DTLS-Related Issues . . . . . . . . . . . . . . . . . . . 23
7. Security Considerations . . . . . . . . . . . . . . . . . . . 25 7.6. Delay Attack . . . . . . . . . . . . . . . . . . . . . . 23
7.1. Usage of NTP Pools . . . . . . . . . . . . . . . . . . . 26 8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 24
7.2. Initial Verification of the Server Certificates . . . . . 26 8.1. Confidentiality . . . . . . . . . . . . . . . . . . . . . 24
7.3. Treatment of Initial Messages . . . . . . . . . . . . . . 26 8.2. Unlinkability . . . . . . . . . . . . . . . . . . . . . . 24
7.4. DTLS-Related Issues . . . . . . . . . . . . . . . . . . . 26 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25
7.5. Delay Attack . . . . . . . . . . . . . . . . . . . . . . 26 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 25
8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 27 10.1. Normative References . . . . . . . . . . . . . . . . . . 25
8.1. Confidentiality . . . . . . . . . . . . . . . . . . . . . 27 10.2. Informative References . . . . . . . . . . . . . . . . . 27
8.2. Unlinkability . . . . . . . . . . . . . . . . . . . . . . 27 Appendix A. Flow Diagrams of Client Behaviour . . . . . . . . . 28
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.1. Normative References . . . . . . . . . . . . . . . . . . 28
10.2. Informative References . . . . . . . . . . . . . . . . . 30
Appendix A. Flow Diagrams of Client Behaviour . . . . . . . . . 31
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 32
1. Introduction 1. Introduction
The Network Time Security (NTS) draft This document specifies measures to protect time synchronization
[I-D.ietf-ntp-network-time-security] specifies security measures between NTP participants. In particular, it describes two main
which can be used to enable time synchronization protocols to verify techniques. The first is a mechanism that uses TLS (over a
authenticity of the time server and integrity of the time connection on TCP port 123) to exchange key data and that afterwards
synchronization protocol packets. allows to secure NTP mode 3 and 4 packets using Authenticated
Encryption with Associated Data objects embedded in extension fields
This document provides detail on how to specifically use those of those packets. The second is a mechanism for using Datagram
measures to secure time synchronization between NTP clients and
servers. In particular, it describes a mechanism for using Datagram
Transport Layer Security [RFC6347] (DTLS) to provide cryptographic Transport Layer Security [RFC6347] (DTLS) to provide cryptographic
security for NTP. Certain sections, are not inherently NTP-specific security for NTP mode 1, 2 and 6 packets.
and can be taken as guidance on how future work may apply the
described techniques to other time synchronization protocols such as
the Precision Time Protocol [IEC.61588_2009].
2. Objectives While the detailed application described in this document is
inherently NTP-specific, the overall approach is not. Therefore, it
could be taken as guidance on how future work may apply the described
techniques to other time synchronization protocols (such as the
Precision Time Protocol [IEC.61588_2009]).
The specific objectives for applying the NTS specification to the NTP 2. Terms and Abbreviations
are as follows:
o Authenticity: NTS enables an NTP client to authenticate its time MAC Message Authentication Code
server(s).
o Integrity: NTS protects the integrity of NTP time synchronization NTP Network Time Protocol (RFC 5905 [RFC5905])
protocol packets via a message authentication code (MAC).
o Authorization: NTS optionally enables the server to verify the NTS Network Time Security
client's authorization.
o Confidentiality: NTS does not provide confidentiality protection TLS Transport Layer Security
of the time synchronization data.
o Privacy: NTS preserves unlinkability, i. e. it does not leak data DTLS Datagram Transport Layer Security
that would allow a passive attacker to track mobile NTP clients
when they move between networks.
o Request-Response-Consistency: NTS enables a client to match an AEAD Authenticated Encryption with Associated Data (RFC 5116
incoming response to a request it has sent. NTS also enables the [RFC5116])
client to deduce from the response whether its request to the
server has arrived without alteration.
o Modes of operation: Both the client-server mode and the symmetric 3. Objectives
peer mode of NTP are supported. The broadcast mode of NTP can NOT
be secured with measures within this document.
o Hybrid mode: Both secure and insecure communication modes are The specific objectives for the measures described this document are
possible for both NTP servers and clients. as follows:
o Compatibility: o Protection for NTP time synchronization messages:
* NTP associations which are not secured by NTS are not affected * Integrity: NTS protects the integrity of NTP time
by NTS-secured communication. synchronization protocol packets.
* An NTP server that does not support NTS is not affected by NTS- * Confidentiality: NTS does not generally provide confidentiality
secured authentication requests. protection of the time synchronization data. It does so only
in the case of NTP's symmetric/peer mode.
3. Terms and Abbreviations * Privacy: Once an NTS session has been established, NTS supports
unlinkability for devices that (1) use NTS as clients and (2)
minimize the information they expose in client query (mode 3)
packets per [I-D.dfranke-ntp-data-minimization]. Unlinkability
ensures that NTS does not leak data that allows an attacker to
track mobile NTP clients when they move between networks. See
Section 8.2 for details.
MAC Message Authentication Code * Request-Response-Consistency: NTS enables a client to match an
incoming response to a request it has sent. NTS also enables
the client to deduce from the response whether its request to
the server has arrived without alteration. This is to prevent
attacks employing replays of valid server responses.
NTP Network Time Protocol (RFC 5905 [RFC5905]) o Additional protection for key exchange messages:
NTS Network Time Security * Authenticity: NTS enables an NTP client to authenticate its
time server(s) during key exchange procedures.
DTLS Datagram Transport Layer Security * Authorization: NTS optionally enables the server to verify the
client's authorization.
AEAD Authenticated Encryption with Associated Data (RFC 5116 o Modes of operation: Both the client-server mode and the symmetric
[RFC5116]) peer mode of NTP are supported. The broadcast mode of NTP can NOT
be secured with measures within this document.
o Hybrid mode: For all supported modes, both secure and insecure
communication modes can be used at the same time, for both NTP
servers and clients.
o Compatibility:
* NTS-secured communication does not affect NTP associations
which are not secured by NTS.
* NTS-secured authentication requests do not affect any NTP
servers that do not support NTS.
4. Overview of NTS-Secured NTP 4. Overview of NTS-Secured NTP
The Network Time Protocol includes many different operating modes to The Network Time Protocol includes many different operating modes to
support various network topologies. In addition to its best-known support various network topologies. In addition to its best-known
and most-widely-used client-server mode, it also includes modes for and most-widely-used client-server mode, it also includes modes for
synchronization between symmetric peers, a control mode for server synchronization between symmetric peers, a control mode for server
monitoring and administration and a broadcast mode. These various monitoring and administration and a broadcast mode. These various
modes have differing and contradictory requirements for security and modes have differing and contradictory requirements for security and
performance. Symmetric and control modes demand mutual performance. Symmetric and control modes demand mutual
skipping to change at page 5, line 18 skipping to change at page 5, line 24
inherently involves maintaining some state to keep track of what inherently involves maintaining some state to keep track of what
messages have already been seen. messages have already been seen.
This document does not discuss how to add security to NTP's broadcast This document does not discuss how to add security to NTP's broadcast
mode. mode.
4.1. Client-Server Mode 4.1. Client-Server Mode
The server does not keep a long-term state of the client. NTS The server does not keep a long-term state of the client. NTS
initially verifies the authenticity of the time server and exchanges initially verifies the authenticity of the time server and exchanges
one or more symmetric keys. The DTLS-based key exchange procedure one or more symmetric keys. The TLS-based key exchange procedure
described in Section 5 can be used for this exchange. An described in Section 5 MUST be used for this exchange.
implementation MUST support the use of this procedure. It MAY
additionally support the use of any alternative secure communication
for this purpose, as long as it fulfills the preconditions given in
[I-D.ietf-ntp-network-time-security], Section 6.1.1.
After the keys have been exchanged, the participants then use them to After the keys have been exchanged, the participants then use them to
protect the authenticity and the integrity of subsequent unicast-type protect the authenticity and the integrity of subsequent unicast-type
time synchronization packets. In order to do this, the server time synchronization packets. In order to do this, participants
attaches a Message Authentication Code (MAC) to each time attach AEAD objects to their time synchronization packets, included
synchronization packet. The calculation of the MAC includes the in NTP extension fields and calculated over the whole time
whole time synchronization packet and the symmetric key which is synchronization packet. Therefore, the client can perform a validity
stored on the client side. Therefore, the client can perform a check on reception of a time synchronization packet.
validity check for this MAC on reception of a time synchronization
packet.
4.2. Symmetric/Peer Mode and Control Modes 4.2. Symmetric/Peer Mode and Control Modes
In the symmetric ("peer") mode as well as in control modes, there is The symmetric ("peer") mode as well as the control modes, are secured
no requirement for statelessness on either side. Both sides exchange via the DTLS-encapsulated NTPv4 protocol described in Section 5.2.
and memorize one or more shared secrets. The shared secrets This protocol is little more than "NTP over DTLS"; the two endpoints
exchanged are then used to secure NTP peer mode or control packets by perform a DTLS handshake and then exchange NTP packets encapsulated
providing at least authenticity and integrity protection and possibly as DTLS Application Data.
also confidentiality. The DTLS-based key exchange procedure
described in Section 5.3 can be used for such communication. An
implementation MUST support the use of this procedure.
5. Employing DTLS for NTP Security 5. Employing (D)TLS for NTP Security
Since (as discussed in Section 4.1) no single approach can Since (as discussed in Section 4.1) no single approach can
simultaneously satisfy the needs of all modes, this specification simultaneously satisfy the needs of all modes, this specification
consists of not one protocol but a suite of them: consists of not one protocol but a suite of them:
o The "NTS-encapsulated NTPv4" protocol is little more than "NTP o The "NTS-encapsulated NTPv4" protocol is little more than "NTP
over DTLS": the two endpoints perform a DTLS handshake and then over DTLS": the two endpoints perform a DTLS handshake and then
exchange NTP packets encapsulated as DTLS Application Data. It is exchange NTP packets encapsulated as DTLS Application Data. It is
suitable for symmetric and control modes, and is also secure for suitable for symmetric and control modes, and is also secure for
client/server mode but relatively wasteful of server resources. client/server mode but relatively wasteful of server resources.
o The "NTS Key Establishment" protocol (NTS-KE) uses DTLS to o The "NTS Key Establishment" protocol (NTS-KE) uses TLS to
establish key material and negotiate some additional protocol establish key material and negotiate some additional protocol
options, but then quickly closes the DTLS channel and does not use options, but then quickly closes the DTLS channel and does not use
it for the exchange of time packets. NTS-KE is designed to be it for the exchange of time packets. NTS-KE is designed to be
extensible, and might be extended to support key establishment for extensible, and might be extended to support key establishment for
other protocols such as PTP. other protocols such as PTP.
o The "NTS extensions for NTPv4" are a collection of NTP extension o The "NTS extensions for NTPv4" are a collection of NTP extension
fields for cryptographically securing NTPv4 using key material fields for cryptographically securing NTPv4 using key material
previously negotiated using NTS-KE. They are suitable for previously negotiated using NTS-KE. They are suitable for
securing client/server mode because the server can implement them securing client/server mode because the server can implement them
without retaining per-client state, but on the other hand are without retaining per-client state, but on the other hand are
suitable *only* for client/server mode because only the client, suitable *only* for client/server mode because only the client,
and not the server, is protected from replay. and not the server, is protected from replay.
5.1. DTLS profile for Network Time Security 5.1. TLS profile for Network Time Security
Since securing time protocols is (as of 2016) a novel application of Network Time Security makes use of both TLS (for NTS Key
DTLS, no backward-compatibility concerns exist to justify using Establishment) and DTLS (for DTLS-encapsulated NTPv4). In either
obsolete, insecure, or otherwise broken DTLS features or versions. case, the requirements and recommendations of this section are
We therefore put forward the following requirements and guidelines, similar. The notation "(D)TLS" refers to both TLS and DTLS.
roughly representing 2016's best practices.
Implementations MUST NOT negotiate DTLS versions earlier than 1.2. Since securing time protocols is (as of 2017) a novel application of
(D)TLS, no backward-compatibility concerns exist to justify using
obsolete, insecure, or otherwise broken TLS features or versions. We
therefore put forward the following requirements and guidelines,
roughly representing 2017's best practices.
Implementations MUST NOT negotiate (D)TLS versions earlier than 1.2.
Implementations willing to negotiate more than one possible version Implementations willing to negotiate more than one possible version
of DTLS SHOULD NOT respond to handshake failures by retrying with a of (D)TLS SHOULD NOT respond to handshake failures by retrying with a
downgraded protocol version. If they do, they MUST implement downgraded protocol version. If they do, they MUST implement
[RFC7507]. [RFC7507].
DTLS clients MUST NOT offer, and DTLS servers MUST not select, RC4 (D)TLS clients MUST NOT offer, and DTLS servers MUST not select, RC4
cipher suites. [RFC7465] cipher suites. [RFC7465]
DTLS clients SHOULD offer, and DTLS servers SHOULD accept, the TLS (D)TLS clients SHOULD offer, and (D)TLS servers SHOULD accept, the
Renegotiation Indication Extension [RFC5746]. Regardless, they MUST TLS Renegotiation Indication Extension [RFC5746]. Regardless, they
NOT initiate or permit insecure renegotiation. (*) MUST NOT initiate or permit insecure renegotiation. (*)
DTLS clients SHOULD offer, and DTLS servers SHOULD accept, the TLS (D)TLS clients SHOULD offer, and (D)TLS servers SHOULD accept, the
Session Hash and Extended Master Secret Extension [RFC7627]. (*) TLS Session Hash and Extended Master Secret Extension [RFC7627]. (*)
Use of the Application-Layer Protocol Negotiation Extension [RFC7301] Use of the Application-Layer Protocol Negotation Extension [RFC7301]
is integral to NTS and support for it is REQUIRED for is integral to NTS and support for it is REQUIRED for
interoperability. interoperability.
(*): Note that DTLS 1.3 or beyond may render the indicated (*): Note that (D)TLS 1.3 or beyond may render the indicated
recommendations inapplicable. recommendations inapplicable.
5.2. Transport mechanisms for DTLS records 5.2. The NTS-encapsulated NTPv4 protocol
This section specifies two mechanisms, one REQUIRED and one OPTIONAL,
for exchanging NTS-related DTLS records. It is intended that the
choice of transport mechanism be orthogonal to any concerns at the
application layer: DTLS records SHOULD receive identical disposition
regardless of which mechanism they arrive by.
5.2.1. Transport via NTS port
In this transport mechanism, DTLS records, formatted according to RFC
6347 [RFC6347] or a subsequent revision thereof, are exchanged
directly on UDP port [[TBD]], with one DTLS record per UDP packet and
no additional layer of encapsulation between the UDP header and the
DTLS record. Servers which implement NTS MUST support this
mechanism.
5.2.2. Transport via NTP extension field
In this transport mechanism, DTLS records are exchanged within
extension fields of specially-formed NTP packets, which are
themselves exchanged via the usual NTP service port (123/udp). NTP
packets conveying DTLS records SHALL be formatted as in Figure 1.
They MUST NOT contain any other extensions or a legacy MAC field.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. NTP Header (48 octets) .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Extension Type | Extension Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. DTLS Record (variable) .
. .
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+ +
| |
. .
. Padding (1-24 octets) .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Format of NTP packets conveying DTLS records
Within the NTP header,
o The Leap Indicator field SHALL be set to 3 (unsynchronized).
o The Version Number field SHALL be set to 4.
o DTLS clients SHALL set the Mode field to 3, and DTLS servers SHALL
set the Mode field to 4, even if the DTLS record is being used (in
the full-encapsulation protocol) to protect some NTP mode other
than client/server.
o The Stratum field SHALL be set to 0 (unspecified or invalid).
o The Reference ID field (conveying a kiss code) SHALL be set to
"DTLS"
o DTLS servers SHALL set the origin timestamp field from the
transmit timestamp field of the packet most recently received from
the client.
o All other header fields MUST be ignored by the receiver, and MAY
contain arbitrary or bogus values.
The Extension Type field SHALL be set to [[TBD]]. The Extension
Length field SHALL be computed and set as per RFC 7822 [RFC7822].
The DTLS Record field SHALL contain a DTLS Record formatted as per
RFC 6347 [RFC6347] or a subsequent revision thereof.
The Padding field SHALL contain between 1 and 24 octets of padding,
with every octet set to the number of padding octets included, e.g.,
"01", "02 02", or "03 03 03". The number of padding bytes should be
chosen in order to comply with the RFC 7822 [RFC7822] requirement
that (in the absence of a legacy MAC) extensions have a total length
in octets (including the four octets for the type and length fields)
which is at least 28 and divisible by 4. Furthermore, since future
revisions of DTLS may employ record formats that are not self-
delimiting, at least one octet of padding MUST be included so that
receivers can unambiguously determine where the DTLS record ends and
the padding begins. If the length of the DTLS record is already at
least 24 and a multiple of 4, then the correct amount of padding to
include is 4 octets.
The NTP header values specified above are selected such that NTP
implementations which do not understand NTS will interpret the packet
as an innocuous no-op and not attempt to use it for time
synchronization. To NTS-aware implementations, however, these
packets are best understood as not being NTP packets at all, but
simply a means of "smuggling" arbitrary DTLS records across port 123/
udp. Indeed, these records need not be pertinent to NTP at all --
for example, they could be NTS-KE messages eventually intended for
securing PTP traffic.
This transport mechanism is intended for use as a fallback in
situations where firewalls or other middleboxes are preventing
communication on the NTS port. Support for it is OPTIONAL.
5.3. The NTS-encapsulated NTPv4 protocol
The NTS-encapsulated NTPv4 protocol proceeds in two parts. First, The NTS-encapsulated NTPv4 protocol proceeds in two parts. The two
DTLS handshake records are exchanged using one of the two transport endpoints carry out a DTLS handshake in conformance with Section 5.1,
mechanisms specified in Section 5.2. The two endpoints carry out a with the client offering (via an ALPN [RFC7301] extension), and the
DTLS handshake in conformance with Section 5.1, with the client server accepting, an application-layer protocol of "ntp/4". Second,
offering (via an ALPN [RFC7301] extension), and the server accepting, once the handshake is successfully completed, the two endpoints use
an application-layer protocol of "ntp/4". Second, once the handshake the established channel to exchange arbitrary NTPv4 packets as DTLS-
is successfully completed, the two endpoints use the established protected Application Data.
channel to exchange arbitrary NTPv4 packets as DTLS-protected
Application Data.
In addition to the requirements specified in Section 5.1, In addition to the requirements specified in Section 5.1,
implementations MUST enforce the anti-replay mechanism specified in implementations MUST enforce the anti-replay mechanism specified in
Section 4.1.2.6 of RFC 6347 [RFC6347] (or an equivalent mechanism Section 4.1.2.6 of RFC 6347 [RFC6347] (or an equivalent mechanism
specified in a subsequent revision of DTLS). Servers wishing to specified in a subsequent revision of DTLS). Servers wishing to
enforce access control SHOULD either demand a client certificate or enforce access control SHOULD either demand a client certificate or
use a PSK-based handshake in order to establish the client's use a PSK-based handshake in order to establish the client's
identity. identity.
The NTS-encapsulated NTPv4 protocol is the RECOMMENDED mechanism for The NTS-encapsulated NTPv4 protocol is the RECOMMENDED mechanism for
cryptographically securing mode 1 (symmetric active), 2 (symmetric cryptographically securing mode 1 (symmetric active), 2 (symmetric
passive), and 6 (control) NTPv4 traffic. It is equally safe for mode passive), and 6 (control) NTPv4 traffic. It is equally safe for mode
3/4 (client/server) traffic, but is NOT RECOMMENDED for this purpose 3/4 (client/server) traffic, but is NOT RECOMMENDED for this purpose
because it scales poorly compared to using NTS Extensions for NTPv4 because it scales poorly compared to using NTS Extensions for NTPv4
(Section 5.5). (Section 5.4).
5.4. The NTS Key Establishment protocol 5.3. The NTS Key Establishment protocol
The NTS Key Establishment (NTS-KE) protocol is carried out by The NTS key establishment protocol is conducted via TCP port [TBD].
exchanging DTLS records using one of the two transport mechanisms The two endpoints carry out a TLS handshake in conformance with
specified in Section 5.2. The two endpoints carry out a DTLS Section 5.1, with the client offering (via an ALPN [RFC7301]
handshake in conformance with Section 5.1, with the client offering extension), and the server accepting, an application-layer protocol
(via an ALPN [RFC7301] extension), and the server accepting, an of "ntske/1". Immediately following a successful handshake, the
application-layer protocol of "ntske/1". Immediately following a client SHALL send a single request (as Application Data encapsulated
successful handshake, the client SHALL send a single request (as in the TLS-protected channel), then the server SHALL send a single
Application Data encapsulated in the DTLS-protected channel), then response followed by a TLS "Close notify" alert and then discard the
the server SHALL send a single response followed by a "Close notify" channel state.
alert and then discard the channel state.
The client's request and the server's response each SHALL consist of The client's request and the server's response each SHALL consist of
a sequence of records formatted according to Figure 2. The sequence a sequence of records formatted according to Figure 1. The sequence
SHALL be terminated by a "End of Message" record, which has a Record SHALL be terminated by a "End of Message" record, which has a Record
Type of zero and a zero-length body. Furthermore, requests and non- Type of zero and a zero-length body. Furthermore, requests and non-
error responses each SHALL include exactly one NTS Next Protocol error responses each SHALL include exactly one NTS Next Protocol
Negotiation record. Negotiation record.
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C| Record Type | Body Length | |C| Record Type | Body Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
. . . .
. Record Body . . Record Body .
. . . .
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2 Figure 1
[[Ed. Note: this ad-hoc binary format should be fine as long as we [[Ed. Note: this ad-hoc binary format should be fine as long as we
continue to keep things very simple. However, if we think there's continue to keep things very simple. However, if we think there's
any reasonable probability of wanting to include more complex data any reasonable probability of wanting to include more complex data
structures, we should consider using some semi-structured data format structures, we should consider using some semi-structured data format
such as JSON, Protocol Buffers, or (ugh) ASN.1]] such as JSON, Protocol Buffers, or (ugh) ASN.1]]
The requirement that all NTS-KE messages be terminated by an End of The requirement that all NTS-KE messages be terminated by an End of
Message record makes them self-delimiting. One DTLS record MAY, and Message record makes them self-delimiting.
typically will, contain multiple NTS-KE records. NTS-KE records MAY
be split across DTLS record boundaries. If, likely due to packet
loss, an incomplete NTS-KE message is received, implementations MUST
treat this an error, which clients SHOULD handle by restarting with a
fresh DTLS handshake and trying again.
The fields of an NTS-KE record are defined as follows: The fields of an NTS-KE record are defined as follows:
o C (Critical Bit): Determines the disposition of unrecognized C (Critical Bit): Determines the disposition of unrecognized
Record Types. Implementations which receive a record with an Record Types. Implementations which receive a record with an
unrecognized Record Type MUST ignore the record if the Critical unrecognized Record Type MUST ignore the record if the Critical
Bit is 0, and MUST treat it as an error if the Critical Bit is 1. Bit is 0, and MUST treat it as an error if the Critical Bit is 1.
o Record Type: A 15-bit integer in network byte order (from most-to- Record Type: A 15-bit integer in network byte order (from most-to-
least significant, its bits are record bits 7-1 and then 15-8). least significant, its bits are record bits 7-1 and then 15-8).
The semantics of record types 0-5 are specified in this memo; The semantics of record types 0-5 are specified in this memo;
additional type numbers SHALL be tracked through the IANA Network additional type numbers SHALL be tracked through the IANA Network
Time Security Key Establishment Record Types registry. Time Security Key Establishment Record Types registry.
o Body Length: the length of the Record Body field, in octets, as a Body Length: the length of the Record Body field, in octets, as a
16-bit integer in network byte order. Record bodies may have any 16-bit integer in network byte order. Record bodies may have any
representable length and need not be aligned to a word boundary. representable length and need not be aligned to a word boundary.
o Record Body: the syntax and semantics of this field shall be Record Body: the syntax and semantics of this field shall be
determined by the Record Type. determined by the Record Type.
5.4.1. NTS-KE record types 5.3.1. NTS-KE record types
The following NTS-KE Record Types are defined. The following NTS-KE Record Types are defined.
5.4.1.1. End of Message 5.3.1.1. End of Message
The End of Message record has a Record Type number of 0 and an zero- The End of Message record has a Record Type number of 0 and an zero-
length body. It MUST occur exactly once as the final record of every length body. It MUST occur exactly once as the final record of every
NTS-KE request and response. The Critical Bit MUST be set. NTS-KE request and response. The Critical Bit MUST be set.
5.4.1.2. NTS Next Protocol Negotiation 5.3.1.2. NTS Next Protocol Negotiation
The NTS Next Protocol Negotiation record has a record type of 1. It The NTS Next Protocol Negotiation record has a record type of 1. It
MUST occur exactly once in every NTS-KE request and response. Its MUST occur exactly once in every NTS-KE request and response. Its
body consists of a sequence of 16-octet strings. Each 16-octet body consists of a sequence of 16-octet strings. Each 16-octet
string represents a Protocol Name from the IANA Network Time Security string represents a Protocol Name from the IANA Network Time Security
Next Protocols registry. The Critical Bit MUST be set. Next Protocols registry. The Critical Bit MUST be set.
The Protocol Names listed in the client's NTS Next Protocol The Protocol Names listed in the client's NTS Next Protocol
Negotiation record denote those protocols which the client wishes to Negotiation record denote those protocols which the client wishes to
speak using the key material established through this NTS-KE session. speak using the key material established through this NTS-KE session.
The Protocol Names listed in the server's response MUST comprise a The Protocol Names listed in the server's response MUST comprise a
subset of those listed in the request, and denote those protocols subset of those listed in the request, and denote those protocols
which the server is willing and able to speak using the key material which the server is willing and able to speak using the key material
established through this NTS-KE session. The client MAY proceed with established through this NTS-KE session. The client MAY proceed with
one or more of them. The request MUST list at least one protocol, one or more of them. The request MUST list at least one protocol,
but the response MAY be empty. but the response MAY be empty.
5.4.1.3. Error 5.3.1.3. Error
The Error record has a Record Type number of 2. Its body is exactly The Error record has a Record Type number of 2. Its body is exactly
two octets long, consisting of an unsigned 16-bit integer in network two octets long, consisting of an unsigned 16-bit integer in network
byte order, denoting an error code. The Critical Bit MUST be set. byte order, denoting an error code. The Critical Bit MUST be set.
Clients MUST NOT include Error records in their request. If clients Clients MUST NOT include Error records in their request. If clients
receive a server response which includes an Error record, they MUST receive a server response which includes an Error record, they MUST
discard any negotiated key material and MUST NOT proceed to the Next discard any negotiated key material and MUST NOT proceed to the Next
Protocol. Protocol.
The following error code are defined. The following error code are defined.
o Error code 0 means "Unrecognized Critical Record". The server Error code 0 means "Unrecognized Critical Record". The server
MUST respond with this error code if the request included a record MUST respond with this error code if the request included a record
which the server did not understand and which had its Critical Bit which the server did not understand and which had its Critical Bit
set. The client SHOULD NOT retry its request without set. The client SHOULD NOT retry its request without
modification. modification.
o Error code 1 means "Bad Request". The server MUST respond with Error code 1 means "Bad Request". The server MUST respond with
this error if, upon the expiration of an implementation-defined this error if, upon the expiration of an implementation-defined
timeout, it has not yet received a complete and syntactically timeout, it has not yet received a complete and syntactically
well-formed request from the client. This error is likely to be well-formed request from the client. This error is likely to be
the result of a dropped packet, so the client SHOULD start over the result of a dropped packet, so the client SHOULD start over
with a new DTLS handshake and retry its request. with a new DTLS handshake and retry its request.
5.4.1.4. Warning 5.3.1.4. Warning
The Warning record has a Record Type number of 3. Its body is The Warning record has a Record Type number of 3. Its body is
exactly two octets long, consisting of an unsigned 16-bit integer in exactly two octets long, consisting of an unsigned 16-bit integer in
network byte order, denoting a warning code. The Critical Bit MUST network byte order, denoting a warning code. The Critical Bit MUST
be set. be set.
Clients MUST NOT include Warning records in their request. If Clients MUST NOT include Warning records in their request. If
clients receive a server response which includes an Warning record, clients receive a server response which includes an Warning record,
they MAY discard any negotiated key material and abort without they MAY discard any negotiated key material and abort without
proceeding to the Next Protocol. Unrecognized warning codes MUST be proceeding to the Next Protocol. Unrecognized warning codes MUST be
treated as errors. treated as errors.
This memo defines no warning codes. This memo defines no warning codes.
5.4.1.5. AEAD Algorithm Negotiation 5.3.1.5. AEAD Algorithm Negotiation
The AEAD Algorithm Negotiation record has a Record Type number of 4. The AEAD Algorithm Negotiation record has a Record Type number of 4.
Its body consists of a sequence of unsigned 16-bit integers in Its body consists of a sequence of unsigned 16-bit integers in
network byte order, denoting Numeric Identifiers from the IANA AEAD network byte order, denoting Numeric Identifiers from the IANA AEAD
registry [RFC5116]. The Critical Bit MAY be set. registry [RFC5116]. The Critical Bit MAY be set.
If the NTS Next Protocol Negotiation record offers "ntp/4",this If the NTS Next Protocol Negotiation record offers "ntp/4",this
record MUST be included exactly once. Other protocols MAY require it record MUST be included exactly once. Other protocols MAY require it
as well. as well.
skipping to change at page 13, line 42 skipping to change at page 10, line 49
the client is willing to use to secure the Next Protocol, in the client is willing to use to secure the Next Protocol, in
decreasing preference order. When included in a response, this decreasing preference order. When included in a response, this
record denotes which algorithm the server chooses to use, or is empty record denotes which algorithm the server chooses to use, or is empty
if the server supports none of the algorithms offered.. In requests, if the server supports none of the algorithms offered.. In requests,
the list MUST include at least one algorithm. In responses, it MUST the list MUST include at least one algorithm. In responses, it MUST
include at most one. Honoring the client's preference order is include at most one. Honoring the client's preference order is
OPTIONAL: servers may select among any of the client's offered OPTIONAL: servers may select among any of the client's offered
choices, even if they are able to support some other algorithm which choices, even if they are able to support some other algorithm which
the client prefers more. the client prefers more.
Server implementations of NTS extensions for NTPv4 (Section 5.5) MUST Server implementations of NTS extensions for NTPv4 (Section 5.4) MUST
support AEAD_AES_128_GCM (Numeric Identifier 1). That is, if the support AEAD_AES_SIV_CMAC_256 [RFC5297] (Numeric Identifier 15).
client includes AEAD_AES_128_GCM in its AEAD Algorithm Negotiation That is, if the client includes AEAD_AES_SIV_CMAC_256 in its AEAD
record, and the server accepts the "ntp/4" protocol in its NTS Next Algorithm Negotiation record, and the server accepts the "ntp/4"
Protocol Negotiation record, then the server's AEAD Algorithm protocol in its NTS Next Protocol Negotiation record, then the
Negotiation record MUST NOT be empty. server's AEAD Algorithm Negotation record MUST NOT be empty.
5.4.1.6. New Cookie for NTPv4 5.3.1.6. New Cookie for NTPv4
The New Cookie for NTPv4 record has a Record Type number of 5. The The New Cookie for NTPv4 record has a Record Type number of 5. The
contents of its body SHALL be implementation-defined and clients MUST contents of its body SHALL be implementation-defined and clients MUST
NOT attempt to interpret them. See [[TODO]] for a RECOMMENDED NOT attempt to interpret them. See [[TODO]] for a RECOMMENDED
construction. construction.
Clients MUST NOT send records of this type. Servers MUST send at Clients MUST NOT send records of this type. Servers MUST send at
least one record of this type, and SHOULD send eight of them, if they least one record of this type, and SHOULD send eight of them, if they
accept "ntp/4" as a Next Protocol. The Critical Bit SHOULD NOT be accept "ntp/4" as a Next Protocol. The Critical Bit SHOULD NOT be
set. set.
5.4.2. Key Extraction (generally) [[Ed. Note: the purpose of sending eight cookies is to allow the
client to recover from dropped packets without reusing cookies or
starting a new handshake. Discussion of cookie management should
probably be broken out into its own section.]]
5.3.2. Key Extraction (generally)
Following a successful run of the NTS-KE protocol, key material SHALL Following a successful run of the NTS-KE protocol, key material SHALL
be extracted according to RFC 5705 [RFC5705]. Inputs to the exporter be extracted according to RFC 5705 [RFC5705]. Inputs to the exporter
function are to be constructed in a manner specific to the negotiated function are to be constructed in a manner specific to the negotiated
Next Protocol. However, all protocols which utilize NTS-KE MUST Next Protocol. However, all protocols which utilize NTS-KE MUST
conform to the following two rules: conform to the following two rules:
o The disambiguating label string MUST be "EXPORTER-network-time- The disambiguating label string MUST be "EXPORTER-network-time-
security/1". security/1".
o The per-association context value MUST be provided, and MUST begin The per-association context value MUST be provided, and MUST begin
with the 16-octet Protocol Name which was negotiated as a Next with the 16-octet Protocol Name which was negotiated as a Next
Protocol. Protocol.
5.5. NTS Extensions for NTPv4 5.4. NTS Extensions for NTPv4
5.5.1. Key Extraction (for NTPv4) 5.4.1. Key Extraction (for NTPv4)
Following a successful run of the NTS-KE protocol wherein "ntp/4" is Following a successful run of the NTS-KE protocol wherein "ntp/4" is
selected as a Next Protocol, two AEAD keys SHALL be extracted: a selected as a Next Protocol, two AEAD keys SHALL be extracted: a
client-to-server (C2S) key and a server-to-client (S2C) key. These client-to-server (C2S) key and a server-to-client (S2C) key. These
keys SHALL be computed according to RFC 5705 [RFC5705], using the keys SHALL be computed according to RFC 5705 [RFC5705], using the
following inputs. following inputs.
The disambiguating label string SHALL be "EXPORTER-network-time- The disambiguating label string SHALL be "EXPORTER-network-time-
security/1". security/1".
skipping to change at page 15, line 17 skipping to change at page 12, line 25
The final octet SHALL be 0x00 for the C2S key and 0x01 for the The final octet SHALL be 0x00 for the C2S key and 0x01 for the
S2C key. S2C key.
Implementations wishing to derive additional keys for private or Implementations wishing to derive additional keys for private or
experimental use MUST NOT do so by extending the above-specified experimental use MUST NOT do so by extending the above-specified
syntax for per-association context values. Instead, they SHOULD use syntax for per-association context values. Instead, they SHOULD use
their own disambiguating label string. Note that RFC 5705 provides their own disambiguating label string. Note that RFC 5705 provides
that disambiguating label strings beginning with "EXPERIMENTAL" MAY that disambiguating label strings beginning with "EXPERIMENTAL" MAY
be used without IANA registration. be used without IANA registration.
5.5.2. Packet structure overview 5.4.2. Packet structure overview
In general, an NTS-protected NTPv4 packet consists of: In general, an NTS-protected NTPv4 packet consists of:
The usual 48-octet NTP header, which is authenticated but not The usual 48-octet NTP header, which is authenticated but not
encrypted. encrypted.
Some extensions which are authenticated but not encrypted. Some extensions which are authenticated but not encrypted.
An NTS extension which contains AEAD output (i.e., an An NTS extension which contains AEAD output (i.e., an
authentication tag and possible ciphertext). The corresponding authentication tag and possible ciphertext). The corresponding
skipping to change at page 16, line 5 skipping to change at page 13, line 12
a security risk. Thus, I think "allow and discard" is the correct a security risk. Thus, I think "allow and discard" is the correct
policy.]] policy.]]
Always included among the authenticated or authenticated-and- Always included among the authenticated or authenticated-and-
encrypted extensions are a cookie extension and a unique-identifier encrypted extensions are a cookie extension and a unique-identifier
extension. The purpose of the cookie extension is to enable the extension. The purpose of the cookie extension is to enable the
server to offload storage of session state onto the client. The server to offload storage of session state onto the client. The
purpose of the unique-identifier extension is to protect the client purpose of the unique-identifier extension is to protect the client
from replay attacks. from replay attacks.
5.5.3. The Unique Identifier extension 5.4.3. The Unique Identifier extension
The Unique Identifier extension has a Field Type of [[TBD]]. When The Unique Identifier extension has a Field Type of [[TBD]]. When
the extension is included in a client packet (mode 3), its body SHALL the extension is included in a client packet (mode 3), its body SHALL
consist of a string of octets generated uniformly at random. The consist of a string of octets generated uniformly at random. The
string SHOULD be 32 octets long. When the extension is included in a string SHOULD be 32 octets long. When the extension is included in a
server packet (mode 4), its body SHALL contain the same octet string server packet (mode 4), its body SHALL contain the same octet string
as was provided in the client packet to which the server is as was provided in the client packet to which the server is
responding. Its use in modes other than client/server is not responding. Its use in modes other than client/server is not
defined. defined.
skipping to change at page 16, line 33 skipping to change at page 13, line 40
details, most of those bits may be predictable. In contrast, the details, most of those bits may be predictable. In contrast, the
Unique Identifier extension enables a degree of unpredictability and Unique Identifier extension enables a degree of unpredictability and
collision-resistance more consistent with cryptographic best collision-resistance more consistent with cryptographic best
practice. practice.
[[TODO: consider using separate extension types for request and [[TODO: consider using separate extension types for request and
response, thus allowing for use in symmetric mode. But proper response, thus allowing for use in symmetric mode. But proper
handling in the presence of dropped packets needs to be documented handling in the presence of dropped packets needs to be documented
and involves a lot of subtlety.]] and involves a lot of subtlety.]]
5.5.4. The NTS Cookie extension 5.4.4. The NTS Cookie extension
The NTS Cookie extension has a Field Type of [[TBD]]. Its purpose is The NTS Cookie extension has a Field Type of [[TBD]]. Its purpose is
to carry information which enables the server to recompute keys and to carry information which enables the server to recompute keys and
other session state without having to store any per-client state. other session state without having to store any per-client state.
The contents of its body SHALL be implementation-defined and clients The contents of its body SHALL be implementation-defined and clients
MUST NOT attempt to interpret them. See [[TODO]] for a RECOMMENDED MUST NOT attempt to interpret them. See [[TODO]] for a RECOMMENDED
construction. The NTS Cookie extension MUST NOT be included in NTP construction. The NTS Cookie extension MUST NOT be included in NTP
packets whose mode is other than 3 (client) or 4 (server). packets whose mode is other than 3 (client) or 4 (server).
5.5.5. The NTS Cookie Placeholder extension 5.4.5. The NTS Cookie Placeholder extension
The NTS Cookie Placeholder extension has a Field Type of [[TBD]]. The NTS Cookie Placeholder extension has a Field Type of [[TBD]].
When this extension is included in a client packet (mode 3), it When this extension is included in a client packet (mode 3), it
communicates to the server that the client wishes it to send communicates to the server that the client wishes it to send
additional cookies in its response. This extension MUST NOT be additional cookies in its response. This extension MUST NOT be
included in NTP packets whose mode is other than 3. included in NTP packets whose mode is other than 3.
Whenever an NTS Cookie Placeholder extension is present, it MUST be Whenever an NTS Cookie Placeholder extension is present, it MUST be
accompanied by an NTS Cookie extension, and the body length of the accompanied by an NTS Cookie extension, and the body length of the
NTS Cookie Placeholder extension MUST be the same as the body length NTS Cookie Placeholder extension MUST be the same as the body length
of the NTS Cookie Extension. (This length requirement serves to of the NTS Cookie Extension. (This length requirement serves to
ensure that the response will not be larger than the request, in ensure that the response will not be larger than the request, in
order to improve timekeeping precision and prevent DDoS order to improve timekeeping precision and prevent DDoS
amplification). The contents of the NTS Cookie Placeholder amplification). The contents of the NTS Cookie Placeholder
extension's body are undefined and, aside from checking its length, extension's body are undefined and, aside from checking its length,
MUST be ignored by the server. MUST be ignored by the server.
5.5.6. The NTS Authenticator and Encrypted Extensions extension 5.4.6. The NTS Authenticator and Encrypted Extensions extension
The NTS Authenticator and Encrypted Extensions extension is the The NTS Authenticator and Encrypted Extensions extension is the
central cryptographic element of an NTS-protected NTP packet. Its central cryptographic element of an NTS-protected NTP packet. Its
Field Type is [[TBD]] and the format of its body SHALL be as follows: Field Type is [[TBD]] and the format of its body SHALL be as follows:
Nonce length: two octets in network byte order, giving the length Nonce length: two octets in network byte order, giving the length
of the Nonce field. of the Nonce field.
Nonce: a nonce as required by the negotiated AEAD Algorithm. Nonce: a nonce as required by the negotiated AEAD Algorithm.
skipping to change at page 18, line 12 skipping to change at page 15, line 24
P: The plaintext SHALL consist of all (if any) extensions to be P: The plaintext SHALL consist of all (if any) extensions to be
encrypted. encrypted.
N: The nonce SHALL be formed however required by the negotiated N: The nonce SHALL be formed however required by the negotiated
AEAD Algorithm. AEAD Algorithm.
The NTS Authenticator and Encrypted Extensions extension MUST NOT be The NTS Authenticator and Encrypted Extensions extension MUST NOT be
included in NTP packets whose mode is other than 3 (client) or 4 included in NTP packets whose mode is other than 3 (client) or 4
(server). (server).
5.5.7. Protocol details 5.4.7. Protocol details
A client sending an NTS-protected request SHALL include the following A client sending an NTS-protected request SHALL include the following
extensions: extensions:
Exactly one Unique Identifier extension, which MUST be Exactly one Unique Identifier extension, which MUST be
authenticated and MUST NOT be encrypted [[Ed. Note: so that if authenticated and MUST NOT be encrypted [[Ed. Note: so that if
the server can't decrypt the request, it can still echo back the the server can't decrypt the request, it can still echo back the
Unique Identifier in the NTS NAK it sends]]. MUST NOT duplicate Unique Identifier in the NTS NAK it sends]]. MUST NOT duplicate
those of any previous request. those of any previous request.
skipping to change at page 20, line 14 skipping to change at page 17, line 25
request. If either of these checks fails, the packet MUST be request. If either of these checks fails, the packet MUST be
discarded without further processing. discarded without further processing.
Upon receiving an NTS NAK, the client MUST verify that the Unique Upon receiving an NTS NAK, the client MUST verify that the Unique
Identifier matches that of an outstanding request. If this check Identifier matches that of an outstanding request. If this check
fails, the packet MUST be discarded without further processing. If fails, the packet MUST be discarded without further processing. If
this check passes, the client SHOULD discard all cookies and AEAD this check passes, the client SHOULD discard all cookies and AEAD
keys associated with the server which sent the NAK and initiate a keys associated with the server which sent the NAK and initiate a
fresh NTS-KE handshake. fresh NTS-KE handshake.
5.6. Recommended format for NTS cookies 5.5. Recommended format for NTS cookies
This section provides a RECOMMENDED way for servers to construct NTS This section provides a RECOMMENDED way for servers to construct NTS
cookies. Clients MUST NOT examine the cookie under the assumption cookies. Clients MUST NOT examine the cookie under the assumption
that it is constructed according to this section. that it is constructed according to this section.
The role of cookies in NTS is closely analagous to that of session The role of cookies in NTS is closely analagous to that of session
cookies in TLS. Accordingly, the thematic resemblance of this cookies in TLS. Accordingly, the thematic resemblance of this
section to RFC 5077 [RFC5077] is deliberate, and the reader should section to RFC 5077 [RFC5077] is deliberate, and the reader should
likewise take heed of its security considerations. likewise take heed of its security considerations.
skipping to change at page 21, line 22 skipping to change at page 18, line 32
AEAD output `C` by encrypting `P` under key `K` with nonce `N` and no AEAD output `C` by encrypting `P` under key `K` with nonce `N` and no
associated data. associated data.
The cookie should consist of the tuple `(I,N,C)`. The cookie should consist of the tuple `(I,N,C)`.
[[TODO: explicitly specify how to verify and decrypt a cookie, not [[TODO: explicitly specify how to verify and decrypt a cookie, not
just how to form one]] just how to form one]]
6. IANA Considerations 6. IANA Considerations
6.1. Field Type Registry
Within the "NTP Extensions Field Types" registry table, add the field
types:
Field Type Meaning References
---------- ------------------------------------ ----------
TBD1 NTS-Related Content [this doc]
TBD2 NTS-Related Content [this doc]
TBD3 NTS-Related Content [this doc]
6.2. SMI Security for S/MIME CMS Content Type Registry
Within the "SMI Security for S/MIME CMS Content Type
(1.2.840.113549.1.9.16.1)" table, add one content type identifier:
Decimal Description References
------- -------------------------------------------- ----------
TBD4 id-ct-nts-ntsForNtpMessageAuthenticationCode [this doc]
6.3. DTLS-Based Key Exchange
IANA is requested to allocate an entry in the Service Name and IANA is requested to allocate an entry in the Service Name and
Transport Protocol Port Number Registry as follows: Transport Protocol Port Number Registry as follows:
Service Name: nts Service Name: nts
Transport Protocol: udp Transport Protocol: udp
Assignee: IESG <iesg@ietf.org> Assignee: IESG <iesg@ietf.org>
Contact: IETF Chair <chair@ietf.org> Contact: IETF Chair <chair@ietf.org>
Description: Network Time Security Description: Network Time Security
Reference: [[this memo]] Reference: [[this memo]]
Port Number: selected by IANA from the user port range Port Number: selected by IANA from the user port range
IANA is requested to allocate the following two entries in the IANA is requested to allocate the following two entries in the
Application-Layer Protocol Negotiation (ALPN) Protocol IDs registry: Application-Layer Protocol Negotation (ALPN) Protocol IDs registry:
Protocol: Network Time Security Key Establishment, version 1 Protocol: Network Time Security Key Establishment, version 1
Identification Sequence: Identification Sequence:
0x6E 0x74 0x73 0x6B 0x65 0x2F 0x31 ("ntske/1") 0x6E 0x74 0x73 0x6B 0x65 0x2F 0x31 ("ntske/1")
Reference: [[this memo]] Reference: [[this memo]]
Protocol: Network Time Protocol, version 4 Protocol: Network Time Protocol, version 4
skipping to change at page 23, line 14 skipping to change at page 20, line 14
+------------+---------------------------------------+--------------+ +------------+---------------------------------------+--------------+
| Field Type | Meaning | Reference | | Field Type | Meaning | Reference |
+------------+---------------------------------------+--------------+ +------------+---------------------------------------+--------------+
| [[TBD]] | DTLS Record | [[this | | [[TBD]] | DTLS Record | [[this |
| | | memo]] | | | | memo]] |
| [[TBD]] | Unique Identifier | [[this | | [[TBD]] | Unique Identifier | [[this |
| | | memo]] | | | | memo]] |
| [[TBD]] | NTS Cookie | [[this | | [[TBD]] | NTS Cookie | [[this |
| | | memo]] | | | | memo]] |
| [[TBD]] | NTS Cookie Placeholder | [[this |
| | | memo]] |
| [[TBD]] | NTS Authenticator and Encrypted | [[this | | [[TBD]] | NTS Authenticator and Encrypted | [[this |
| | Extensions | memo]] | | | Extensions | memo]] |
+------------+---------------------------------------+--------------+ +------------+---------------------------------------+--------------+
IANA is requested to create a new registry entitled "Network Time IANA is requested to create a new registry entitled "Network Time
Security Key Establishment Record Types". Entries SHALL have the Security Key Establishment Record Types". Entries SHALL have the
following fields: following fields:
Type Number (REQUIRED): An integer in the range 0-32767 inclusive Type Number (REQUIRED): An integer in the range 0-32767 inclusive
skipping to change at page 26, line 5 skipping to change at page 23, line 5
The Network Time Security Warning Codes Registry SHALL initially be The Network Time Security Warning Codes Registry SHALL initially be
empty. empty.
7. Security Considerations 7. Security Considerations
All security considerations described in All security considerations described in
[I-D.ietf-ntp-network-time-security] have to be taken into account. [I-D.ietf-ntp-network-time-security] have to be taken into account.
The application of NTS to NTP requires the following additional The application of NTS to NTP requires the following additional
considerations. considerations.
7.1. Usage of NTP Pools 7.1. Random Number Generation
At various points of the protocol, the generation of random numbers
is required. The employed methods of generation need to be
cryptographically secure. See [RFC4086] for guidelines concerning
this topic.
7.2. Usage of NTP Pools
The certification-based authentication scheme described in The certification-based authentication scheme described in
[I-D.ietf-ntp-network-time-security] is not applicable to the concept [I-D.ietf-ntp-network-time-security] is not applicable to the concept
of NTP pools. Therefore, NTS is unable to provide secure usage of of NTP pools. Therefore, NTS is unable to provide secure usage of
NTP pools. NTP pools.
7.2. Initial Verification of the Server Certificates 7.3. Initial Verification of the Server Certificates
The client may wish to verify the validity of certificates during the The client may wish to verify the validity of certificates during the
initial association phase. Since it generally has no reliable time initial association phase. Since it generally has no reliable time
during this initial communication phase, it is impossible to verify during this initial communication phase, it is impossible to verify
the period of validity of the certificates. the period of validity of the certificates.
7.3. Treatment of Initial Messages 7.4. Treatment of Initial Messages
NTP packets which contains extension fields with key exchange NTP packets which contains extension fields with key exchange
messages do not provide integrity and authenticity protection of the messages do not provide integrity and authenticity protection of the
included time stamps. Therefore these NTP packets MUST NOT be used included time stamps. Therefore these NTP packets MUST NOT be used
for clock synchronization. Otherwise an initial attack on the for clock synchronization. Otherwise an initial attack on the
client's clock [attacking-ntp] can potentially circumvent the client's clock [attacking-ntp] can potentially circumvent the
employed security measures of later messages [delorean]. employed security measures of later messages [delorean].
7.4. DTLS-Related Issues 7.5. DTLS-Related Issues
... TBD ... TBD
7.5. Delay Attack 7.6. Delay Attack
In a packet delay attack, an adversary with the ability to act as a In a packet delay attack, an adversary with the ability to act as a
MITM delays time synchronization packets between client and server MITM delays time synchronization packets between client and server
asymmetrically [RFC7384]. This prevents the client from accurately asymmetrically [RFC7384]. This prevents the client from accurately
measuring the network delay, and hence its time offset to the server measuring the network delay, and hence its time offset to the server
[Mizrahi]. The delay attack does not modify the content of the [Mizrahi]. The delay attack does not modify the content of the
exchanged synchronization packets. Therefore, cryptographic means do exchanged synchronization packets. Therefore, cryptographic means do
not provide a feasible way to mitigate this attack. However, the not provide a feasible way to mitigate this attack. However, the
maximum error that an adversary can introduced is bounded by half of maximum error that an adversary can introduced is bounded by half of
the round trip delay. Also, several non-cryptographic precautions the round trip delay. Also, several non-cryptographic precautions
can be taken in order to detect this attack. can be taken in order to detect this attack.
1. Usage of multiple time servers: this enables the client to detect 1. Usage of multiple time servers: this enables the client to detect
the attack, provided that the adversary is unable to delay the the attack, provided that the adversary is unable to delay the
synchronization packets between the majority of servers. This synchronization packets between the majority of servers. This
approach is commonly used in NTP to exclude incorrect time approach is commonly used in NTP to exclude incorrect time
servers [RFC5905]. servers [RFC5905].
2. Multiple communication paths: The client and server utilize 2. Multiple communication paths: The client and server utilize
different paths for packet exchange as described in the I-D different paths for packet exchange. The client can detect the
attack, provided that the adversary is unable to manipulate the
[I-D.ietf-tictoc-multi-path-synchronization]. The client can majority of the available paths [Shpiner]. Note that this
detect the attack, provided that the adversary is unable to approach is not yet available, neither for NTP nor for PTP.
manipulate the majority of the available paths [Shpiner]. Note
that this approach is not yet available, neither for NTP nor for
PTP.
3. Usage of an encrypted connection: the client exchanges all 3. Usage of an encrypted connection: the client exchanges all
packets with the time server over an encrypted connection (e.g. packets with the time server over an encrypted connection (e.g.
IPsec). This measure does not mitigate the delay attack, but it IPsec). This measure does not mitigate the delay attack, but it
makes it more difficult for the adversary to identify the time makes it more difficult for the adversary to identify the time
synchronization packets. synchronization packets.
4. Introduction of a threshold value for the delay time of the 4. Introduction of a threshold value for the delay time of the
synchronization packets. The client can discard a time server if synchronization packets. The client can discard a time server if
the packet delay time of this time server is larger than the the packet delay time of this time server is larger than the
skipping to change at page 27, line 34 skipping to change at page 24, line 40
8.1. Confidentiality 8.1. Confidentiality
The actual time synchronization data in NTP packets does not involve The actual time synchronization data in NTP packets does not involve
any information that needs to be kept secret. There also does not any information that needs to be kept secret. There also does not
seem to be any necessity to disguise the nature of an NTP seem to be any necessity to disguise the nature of an NTP
association. This is why content confidentiality is a non-objective association. This is why content confidentiality is a non-objective
for this document. for this document.
8.2. Unlinkability 8.2. Unlinkability
The scenario that is to be prevented is one where whenever a new Unlinkability prevents a device from being tracked when it changes
network address is associated with a device (e.g. because said device network addresses (e.g. because said device moved between different
moved between different networks), a passive attacker is able to link networks). In other words, unlinkability thwarts an attacker that
said new address with one that was formerly used by the device, seeks to link a new network address used by a device with a network
because of recognizable data that the device persistently sends as address that it was formerly using, because of recognizable data that
part of an NTS-secured NTP association. This is the justification the device persistently sends as part of an NTS-secured NTP
for continually supplying the client with fresh cookies, so that a association. This is the justification for continually supplying the
cookie never represents recognizable data in the sense outlined client with fresh cookies, so that a cookie never represents
above. recognizable data in the sense outlined above.
Note that the objective of NTS regarding unlinkability is merely to NTS's unlinkability objective is merely to not leak any additional
not leak any additional data that would cause linkability. NTS does data that could be used to link a device's network address. NTS does
not rectify legacy linkability issues that are already present in not rectify legacy linkability issues that are already present in
NTP. To minimize the risk of being tracked by a passive adversary NTP. Thus, a client that requires unlinkability MUST also minimize
the NTP client has to minimize the information it transmits within a information transmitted in a client query (mode 3) packet as
client request (mode 3 packet) as described in the draft "I-D.draft- described in the draft [I-D.dfranke-ntp-data-minimization].
dfranke-ntp-data-minimization".
Also note that normal NTP clients should not act as NTP servers. The unlinkability objective only holds for time synchronization
Otherwise, an active adversary may be able to abuse the client's traffic, as opposed to key exchange traffic. This implies that it
server responses (mode 4 packets) for its tracking. This is done by cannot be guaranteed for devices that function not only as time
[tbd]. clients, but also as time servers (because the latter can be
externally triggered to send authentication data).
It should also be noted that it could be possible to link devices
that operate as time servers from their time synchronization traffic,
using information exposed in (mode 4) server response packets (e.g.
reference ID, reference time, stratum, poll). Also, devices that
respond to NTP control queries could be linked using the information
revealed by control queries.
9. Acknowledgements 9. Acknowledgements
The authors would like to thank Richard Barnes, Steven Bellovin, The authors would like to thank Richard Barnes, Steven Bellovin,
Sharon Goldberg, Russ Housley, Martin Langer, Miroslav Lichvar, Sharon Goldberg, Russ Housley, Martin Langer, Miroslav Lichvar,
Aanchal Malhotra, Dave Mills, Danny Mayer, Karen O'Donoghue, Eric K. Aanchal Malhotra, Dave Mills, Danny Mayer, Karen O'Donoghue, Eric K.
Rescorla, Stephen Roettger, Kurt Roeckx, Kyle Rose, Rich Salz, Brian Rescorla, Stephen Roettger, Kurt Roeckx, Kyle Rose, Rich Salz, Brian
Sniffen, Susan Sons, Douglas Stebila, Harlan Stenn, Martin Thomson, Sniffen, Susan Sons, Douglas Stebila, Harlan Stenn, Martin Thomson,
and Richard Welty for contributions to this document. on the design and Richard Welty for contributions to this document. on the design
of NTS. of NTS.
10. References 10. References
10.1. Normative References 10.1. Normative References
[I-D.ietf-ntp-cms-for-nts-message] [I-D.dfranke-ntp-data-minimization]
Sibold, D., Teichel, K., Roettger, S., and R. Housley, Franke, D. and A. Malhotra, "NTP Client Data
"Protecting Network Time Security Messages with the Minimization", draft-dfranke-ntp-data-minimization-01
Cryptographic Message Syntax (CMS)", draft-ietf-ntp-cms- (work in progress), October 2016.
for-nts-message-06 (work in progress), February 2016.
[I-D.ietf-ntp-extension-field] [I-D.ietf-ntp-extension-field]
Mizrahi, T. and D. Mayer, "The Network Time Protocol Mizrahi, T. and D. Mayer, "The Network Time Protocol
Version 4 (NTPv4) Extension Fields", draft-ietf-ntp- Version 4 (NTPv4) Extension Fields", draft-ietf-ntp-
extension-field-07 (work in progress), February 2016. extension-field-07 (work in progress), February 2016.
[I-D.ietf-ntp-network-time-security]
Sibold, D., Roettger, S., and K. Teichel, "Network Time
Security", draft-ietf-ntp-network-time-security-13 (work
in progress), February 2016.
[I-D.ietf-tictoc-multi-path-synchronization]
Shpiner, A., Tse, R., Schelp, C., and T. Mizrahi, "Multi-
Path Time Synchronization", draft-ietf-tictoc-multi-path-
synchronization-06 (work in progress), October 2016.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
[RFC3394] Schaad, J. and R. Housley, "Advanced Encryption Standard [RFC3394] Schaad, J. and R. Housley, "Advanced Encryption Standard
(AES) Key Wrap Algorithm", RFC 3394, DOI 10.17487/RFC3394, (AES) Key Wrap Algorithm", RFC 3394, DOI 10.17487/RFC3394,
September 2002, <http://www.rfc-editor.org/info/rfc3394>. September 2002, <http://www.rfc-editor.org/info/rfc3394>.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
skipping to change at page 30, line 37 skipping to change at page 27, line 37
March 2016, <http://www.rfc-editor.org/info/rfc7822>. March 2016, <http://www.rfc-editor.org/info/rfc7822>.
10.2. Informative References 10.2. Informative References
[attacking-ntp] [attacking-ntp]
"Attacking the Network Time Protocol", October 2015. "Attacking the Network Time Protocol", October 2015.
[delorean] [delorean]
"Bypassing HTTP Strict Transport Security", 2014. "Bypassing HTTP Strict Transport Security", 2014.
[I-D.ietf-ntp-network-time-security]
Sibold, D., Roettger, S., and K. Teichel, "Network Time
Security", draft-ietf-ntp-network-time-security-15 (work
in progress), September 2016.
[IEC.61588_2009] [IEC.61588_2009]
IEEE/IEC, "Precision clock synchronization protocol for IEEE/IEC, "Precision clock synchronization protocol for
networked measurement and control systems", networked measurement and control systems",
IEEE 1588-2008(E), IEC 61588:2009(E), IEEE 1588-2008(E), IEC 61588:2009(E),
DOI 10.1109/IEEESTD.2009.4839002, February 2009, DOI 10.1109/IEEESTD.2009.4839002, February 2009,
<http://ieeexplore.ieee.org/servlet/ <http://ieeexplore.ieee.org/servlet/
opac?punumber=4839000>. opac?punumber=4839000>.
[Mizrahi] Mizrahi, T., "A game theoretic analysis of delay attacks [Mizrahi] Mizrahi, T., "A game theoretic analysis of delay attacks
against time synchronization protocols", in Proceedings against time synchronization protocols", in Proceedings
of Precision Clock Synchronization for Measurement Control of Precision Clock Synchronization for Measurement Control
and Communication, ISPCS 2012, pp. 1-6, September 2012. and Communication, ISPCS 2012, pp. 1-6, September 2012.
[RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker,
"Randomness Requirements for Security", BCP 106, RFC 4086,
DOI 10.17487/RFC4086, June 2005,
<http://www.rfc-editor.org/info/rfc4086>.
[RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, [RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig,
"Transport Layer Security (TLS) Session Resumption without "Transport Layer Security (TLS) Session Resumption without
Server-Side State", RFC 5077, DOI 10.17487/RFC5077, Server-Side State", RFC 5077, DOI 10.17487/RFC5077,
January 2008, <http://www.rfc-editor.org/info/rfc5077>. January 2008, <http://www.rfc-editor.org/info/rfc5077>.
[RFC7384] Mizrahi, T., "Security Requirements of Time Protocols in [RFC7384] Mizrahi, T., "Security Requirements of Time Protocols in
Packet Switched Networks", RFC 7384, DOI 10.17487/RFC7384, Packet Switched Networks", RFC 7384, DOI 10.17487/RFC7384,
October 2014, <http://www.rfc-editor.org/info/rfc7384>. October 2014, <http://www.rfc-editor.org/info/rfc7384>.
[RFC7821] Mizrahi, T., "UDP Checksum Complement in the Network Time [RFC7821] Mizrahi, T., "UDP Checksum Complement in the Network Time
Protocol (NTP)", RFC 7821, DOI 10.17487/RFC7821, March Protocol (NTP)", RFC 7821, DOI 10.17487/RFC7821, March
2016, <http://www.rfc-editor.org/info/rfc7821>. 2016, <http://www.rfc-editor.org/info/rfc7821>.
[Shpiner] "Multi-path Time Protocols", in Proceedings of IEEE [Shpiner] "Multi-path Time Protocols", in Proceedings of IEEE
International Symposium on Precision Clock Synchronization International Symposium on Precision Clock Synchronization
for Measurement, Control and Communication (ISPCS), for Measurement, Control and Communication (ISPCS),
September 2013. September 2013.
Appendix A. Flow Diagrams of Client Behaviour Appendix A. Flow Diagrams of Client Behaviour
+------------------------------>o .------------.
| | +------------------------------>o<----------( No More Keys )<---+
| v | | '------------' |
| +-------------+ | v |
| |Key Exchange | | +-------------+ |
| +------+------+ | |Key Exchange | |
| | | +------+------+ |
| o<------------------------------+ | | .--------------. |
| | | | o<---------( Keys Remaining )<--+
| | '--------------' |
| v | | v |
| +-------------------+ | | +-------------------+ |
| |Time Sync. Messages| | | |Time Sync. Messages| |
| +---------+---------+ | | +---------+---------+ |
| | | | | |
| v | | v |
| +-----+ | | +-----+ |
| |Check| | | |Check| |
| +--+--+ | | +--+--+ |
| | | | | |
skipping to change at page 32, line 37 skipping to change at page 29, line 38
| '-----+-----' '------+------' '---+---' | | '-----+-----' '------+------' '---+---' |
| | | | | | | | | |
| v v v | | v v v |
| +-------------+ +-------------+ +--------------+ | | +-------------+ +-------------+ +--------------+ |
| |Discard Data | |Discard Data | |Sync. Process | | | |Discard Data | |Discard Data | |Sync. Process | |
| +-------------+ +------+------+ +------+-------+ | | +-------------+ +------+------+ +------+-------+ |
| | | | | | | | | |
| | | v | | | | v |
+-----------+ +------------------>o-----------+ +-----------+ +------------------>o-----------+
Figure 3: The client's behavior in NTS unicast mode. Figure 2: The client's behavior in NTS unicast mode.
Authors' Addresses Authors' Addresses
Daniel Fox Franke Daniel Fox Franke
Akamai Technologies, Inc. Akamai Technologies, Inc.
150 Broadway 150 Broadway
Cambridge, MA 02142 Cambridge, MA 02142
United States United States
Email: dafranke@akamai.com Email: dafranke@akamai.com
 End of changes. 97 change blocks. 
388 lines changed or deleted 272 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/