| < draft-ietf-ntp-network-time-security-06.txt | draft-ietf-ntp-network-time-security-07.txt > | |||
|---|---|---|---|---|
| NTP Working Group D. Sibold | NTP Working Group D. Sibold | |||
| Internet-Draft PTB | Internet-Draft PTB | |||
| Intended status: Standards Track S. Roettger | Intended status: Standards Track S. Roettger | |||
| Expires: July 20, 2015 Google Inc. | Expires: September 4, 2015 Google Inc. | |||
| K. Teichel | K. Teichel | |||
| PTB | PTB | |||
| January 16, 2015 | March 3, 2015 | |||
| Network Time Security | Network Time Security | |||
| draft-ietf-ntp-network-time-security-06.txt | draft-ietf-ntp-network-time-security-07.txt | |||
| Abstract | Abstract | |||
| This document describes Network Time Security (NTS), a collection of | This document describes Network Time Security (NTS), a collection of | |||
| measures that enable secure time synchronization with time servers | measures that enable secure time synchronization with time servers | |||
| using protocols like the Network Time Protocol (NTP) or the Precision | using protocols like the Network Time Protocol (NTP) or the Precision | |||
| Time Protocol (PTP). Its design considers the special requirements | Time Protocol (PTP). Its design considers the special requirements | |||
| of precise timekeeping which are described in Security Requirements | of precise timekeeping which are described in Security Requirements | |||
| of Time Protocols in Packet Switched Networks [RFC7384]. | of Time Protocols in Packet Switched Networks [RFC7384]. | |||
| skipping to change at page 1, line 44 ¶ | skipping to change at page 1, line 44 ¶ | |||
| 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 July 20, 2015. | This Internet-Draft will expire on September 4, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 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. Security Threats . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Terms and Abbreviations . . . . . . . . . . . . . . . . . 4 | |||
| 4. Terms and Abbreviations . . . . . . . . . . . . . . . . . . . 4 | 2.2. Common Terminology for PTP and NTP . . . . . . . . . . . 4 | |||
| 5. NTS Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Security Threats . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 6. Protocol Messages . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 6.1. Association Messages . . . . . . . . . . . . . . . . . . 6 | 5. NTS Overview . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 6.1.1. Message Type: "client_assoc" . . . . . . . . . . . . 6 | 6. Protocol Messages . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6.1.2. Message Type: "server_assoc" . . . . . . . . . . . . 6 | 6.1. Association Message Exchange . . . . . . . . . . . . . . 7 | |||
| 6.2. Cookie Messages . . . . . . . . . . . . . . . . . . . . . 7 | 6.1.1. Goals of the Association Exchange . . . . . . . . . . 7 | |||
| 6.2.1. Message Type: "client_cook" . . . . . . . . . . . . . 7 | 6.1.2. Message Type: "client_assoc" . . . . . . . . . . . . 7 | |||
| 6.2.2. Message Type: "server_cook" . . . . . . . . . . . . . 7 | 6.1.3. Message Type: "server_assoc" . . . . . . . . . . . . 7 | |||
| 6.3. Unicast Time Synchronisation Messages . . . . . . . . . . 8 | 6.1.4. Procedure Overview of the Association Exchange . . . 8 | |||
| 6.3.1. Message Type: "time_request" . . . . . . . . . . . . 8 | 6.2. Cookie Messages . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6.3.2. Message Type: "time_response" . . . . . . . . . . . . 8 | 6.2.1. Goals of the Cookie Exchange . . . . . . . . . . . . 9 | |||
| 6.4. Broadcast Parameter Messages . . . . . . . . . . . . . . 9 | 6.2.2. Message Type: "client_cook" . . . . . . . . . . . . . 10 | |||
| 6.4.1. Message Type: "client_bpar" . . . . . . . . . . . . . 9 | 6.2.3. Message Type: "server_cook" . . . . . . . . . . . . . 10 | |||
| 6.4.2. Message Type: "server_bpar" . . . . . . . . . . . . . 9 | 6.2.4. Procedure Overview of the Cookie Exchange . . . . . . 11 | |||
| 6.5. Broadcast Messages . . . . . . . . . . . . . . . . . . . 10 | 6.3. Unicast Time Synchronisation Messages . . . . . . . . . . 12 | |||
| 6.5.1. Message Type: "server_broad" . . . . . . . . . . . . 10 | 6.3.1. Goals of the Unicast Time Synchronization Exchange . 12 | |||
| 6.6. Broadcast Key Check . . . . . . . . . . . . . . . . . . . 10 | 6.3.2. Message Type: "time_request" . . . . . . . . . . . . 12 | |||
| 6.6.1. Message Type: "client_keycheck" . . . . . . . . . . . 10 | 6.3.3. Message Type: "time_response" . . . . . . . . . . . . 13 | |||
| 6.6.2. Message Type: "server_keycheck" . . . . . . . . . . . 11 | 6.3.4. Procedure Overview of the Unicast Time | |||
| 7. Message Dependencies . . . . . . . . . . . . . . . . . . . . 11 | Synchronization Exchange . . . . . . . . . . . . . . 13 | |||
| 8. Server Seed Considerations . . . . . . . . . . . . . . . . . 12 | 6.4. Broadcast Parameter Messages . . . . . . . . . . . . . . 14 | |||
| 9. Hash Algorithms and MAC Generation . . . . . . . . . . . . . 13 | 6.4.1. Goals of the Broadcast Parameter Exchange . . . . . . 15 | |||
| 9.1. Hash Algorithms . . . . . . . . . . . . . . . . . . . . . 13 | 6.4.2. Message Type: "client_bpar" . . . . . . . . . . . . . 15 | |||
| 9.2. MAC Calculation . . . . . . . . . . . . . . . . . . . . . 13 | 6.4.3. Message Type: "server_bpar" . . . . . . . . . . . . . 15 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 6.4.4. Procedure Overview of the Broadcast Parameter | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | Exchange . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 11.1. Privacy . . . . . . . . . . . . . . . . . . . . . . . . 13 | 6.5. Broadcast Time Synchronization Exchange . . . . . . . . . 17 | |||
| 11.2. Initial Verification of the Server Certificates . . . . 14 | 6.5.1. Goals of the Broadcast Time Synchronization Exchange 17 | |||
| 11.3. Revocation of Server Certificates . . . . . . . . . . . 14 | 6.5.2. Message Type: "server_broad" . . . . . . . . . . . . 17 | |||
| 11.4. Mitigating Denial-of-Service for broadcast packets . . . 14 | 6.5.3. Procedure Overview of Broadcast Time Synchronization | |||
| 11.5. Delay Attack . . . . . . . . . . . . . . . . . . . . . . 15 | Exchange . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 16 | 6.6. Broadcast Keycheck . . . . . . . . . . . . . . . . . . . 19 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 6.6.1. Goals of the Broadcast Keycheck Exchange . . . . . . 19 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 6.6.2. Message Type: "client_keycheck" . . . . . . . . . . . 20 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 17 | 6.6.3. Message Type: "server_keycheck" . . . . . . . . . . . 20 | |||
| Appendix A. TICTOC Security Requirements . . . . . . . . . . . . 17 | 6.6.4. Procedure Overview of the Broadcast Keycheck Exchange 20 | |||
| Appendix B. Using TESLA for Broadcast-Type Messages . . . . . . 19 | 7. Server Seed Considerations . . . . . . . . . . . . . . . . . 21 | |||
| B.1. Server Preparation . . . . . . . . . . . . . . . . . . . 19 | 8. Hash Algorithms and MAC Generation . . . . . . . . . . . . . 22 | |||
| B.2. Client Preparation . . . . . . . . . . . . . . . . . . . 20 | 8.1. Hash Algorithms . . . . . . . . . . . . . . . . . . . . . 22 | |||
| B.3. Sending Authenticated Broadcast Packets . . . . . . . . . 21 | 8.2. MAC Calculation . . . . . . . . . . . . . . . . . . . . . 22 | |||
| B.4. Authentication of Received Packets . . . . . . . . . . . 21 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | |||
| Appendix C. Random Number Generation . . . . . . . . . . . . . . 23 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | 10.1. Privacy . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 10.2. Initial Verification of the Server Certificates . . . . 23 | ||||
| 10.3. Revocation of Server Certificates . . . . . . . . . . . 23 | ||||
| 10.4. Mitigating Denial-of-Service for broadcast packets . . . 23 | ||||
| 10.5. Delay Attack . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
| 10.6. Random Number Generation . . . . . . . . . . . . . . . . 25 | ||||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | ||||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 25 | ||||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 26 | ||||
| Appendix A. (informative) TICTOC Security Requirements . . . . . 27 | ||||
| Appendix B. (normative) Using TESLA for Broadcast-Type Messages 28 | ||||
| B.1. Server Preparation . . . . . . . . . . . . . . . . . . . 28 | ||||
| B.2. Client Preparation . . . . . . . . . . . . . . . . . . . 30 | ||||
| B.3. Sending Authenticated Broadcast Packets . . . . . . . . . 31 | ||||
| B.4. Authentication of Received Packets . . . . . . . . . . . 31 | ||||
| Appendix C. (informative) Dependencies . . . . . . . . . . . . . 32 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | ||||
| 1. Introduction | 1. Introduction | |||
| Time synchronization protocols are increasingly utilized to | Time synchronization protocols are increasingly utilized to | |||
| synchronize clocks in networked infrastructures. The reliable | synchronize clocks in networked infrastructures. Successful attacks | |||
| performance of such infrastructures can be degraded seriously by | against the time synchronization protocol can seriously degrade the | |||
| successful attacks against the time synchronization protocol. | reliable performance of such infrastructures. Therefore, time | |||
| Therefore, time synchronization protocols have to be secured if they | synchronization protocols have to be secured if they are applied in | |||
| are applied in environments that are prone to malicious attacks. | environments that are prone to malicious attacks. This can be | |||
| This can be accomplished either by utilization of external security | accomplished either by utilization of external security protocols, | |||
| protocols, like IPsec or TLS, or by intrinsic security measures of | like IPsec or TLS, or by intrinsic security measures of the time | |||
| the time synchronization protocol. | synchronization protocol. | |||
| The two most popular time synchronization protocols, the Network Time | The two most popular time synchronization protocols, the Network Time | |||
| Protocol (NTP) [RFC5905] and the Precision Time Protocol (PTP) | Protocol (NTP) [RFC5905] and the Precision Time Protocol (PTP) | |||
| [IEEE1588], currently do not provide adequate intrinsic security | [IEEE1588], currently do not provide adequate intrinsic security | |||
| precautions. This document specifies security measures which enable | precautions. This document specifies security measures which enable | |||
| these protocols to verify the authenticity of the time server and the | these and possibly other protocols to verify the authenticity of the | |||
| integrity of the time synchronization protocol packets. | time server/master and the integrity of the time synchronization | |||
| protocol packets. The utilization of these measures for a given | ||||
| specific time synchronisation protocol has to be described in a | ||||
| separate document. | ||||
| The given measures are specified with the prerequisite in mind that | [RFC7384] specifies that a security mechanism for timekeeping must be | |||
| precise timekeeping can only be accomplished with stateless time | ||||
| synchronization communication, which excludes the utilization of | ||||
| standard security protocols, like IPsec or TLS, for time | ||||
| synchronization messages. This prerequisite corresponds with the | ||||
| requirement that a security mechanism for timekeeping must be | ||||
| designed in such a way that it does not degrade the quality of the | designed in such a way that it does not degrade the quality of the | |||
| time transfer [RFC7384]. | time transfer. This implies that for time keeping the increase in | |||
| bandwidth and message latency caused by the security measures should | ||||
| be small. Also, NTP as well as PTP work via UDP and connections are | ||||
| stateless on the server/master side. Therefore, all security | ||||
| measures in this document are designed in such a way that they add | ||||
| little demand for bandwidth, that the necessary calculations can be | ||||
| executed in a fast manner, and that the measures do not require a | ||||
| server/master to keep state of a connection. | ||||
| Note: | 2. Terminology | |||
| It is recommended that details on how to apply NTS to specific | 2.1. Terms and Abbreviations | |||
| time synchronization protocols be formulated in separate | ||||
| documents, with one separate document for each protocol. | ||||
| 2. Security Threats | MITM Man In The Middle | |||
| A profound analysis of security threats and requirements for time | NTS Network Time Security | |||
| synchronization protocols can be found in the "Security Requirements | ||||
| of Time Protocols in Packet Switched Networks" [RFC7384]. | ||||
| 3. Objectives | TESLA Timed Efficient Stream Loss-tolerant Authentication | |||
| MAC Message Authentication Code | ||||
| HMAC Keyed-Hash Message Authentication Code | ||||
| 2.2. Common Terminology for PTP and NTP | ||||
| This document refers to different time synchronization protocols, in | ||||
| particular to both the PTP and the NTP. Throughout the document the | ||||
| term "server" applies to both a PTP master and an NTP server. | ||||
| Accordingly, the term "client" applies to both a PTP slave and an NTP | ||||
| client. | ||||
| 3. Security Threats | ||||
| The document "Security Requirements of Time Protocols in Packet | ||||
| Switched Networks" [RFC7384] contains a profound analysis of security | ||||
| threats and requirements for time synchronization protocols. | ||||
| 4. Objectives | ||||
| The objectives of the NTS specification are as follows: | The objectives of the NTS specification are as follows: | |||
| o Authenticity: NTS enables a client/slave to authenticate its time | o Authenticity: NTS enables a client to authenticate its time | |||
| server(s)/master(s). | server(s). | |||
| o Integrity: NTS protects the integrity of time synchronization | o Integrity: NTS protects the integrity of time synchronization | |||
| protocol packets via a message authentication code (MAC). | protocol packets via a message authentication code (MAC). | |||
| o Confidentiality: NTS does not provide confidentiality protection | o Confidentiality: NTS does not provide confidentiality protection | |||
| of the time synchronization packets. | of the time synchronization packets. | |||
| o Authorization: NTS optionally enables the server to verify the | ||||
| client's authorization. | ||||
| o 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. | ||||
| o Integration with protocols: NTS can be used to secure different | o Integration with protocols: NTS can be used to secure different | |||
| time synchronization protocols, specifically at least NTP and PTP. | time synchronization protocols, specifically at least NTP and PTP. | |||
| An client or server running an NTS-secured version of a time | A client or server running an NTS-secured version of a time | |||
| protocol does not negatively affect other participants who are | protocol does not negatively affect other participants who are | |||
| running unsecured versions of that protocol. | running unsecured versions of that protocol. | |||
| 4. Terms and Abbreviations | ||||
| MITM Man In The Middle | ||||
| NTS Network Time Security | ||||
| TESLA Timed Efficient Stream Loss-tolerant Authentication | ||||
| 5. NTS Overview | 5. NTS Overview | |||
| NTS applies X.509 certificates to verify the authenticity of the time | NTS applies X.509 certificates to verify the authenticity of the time | |||
| server/master and to exchange a symmetric key, the so-called cookie. | server and to exchange a symmetric key, the so-called cookie. It | |||
| This cookie is then used to protect the authenticity and the | then uses the cookie to protect the authenticity and the integrity of | |||
| integrity of subsequent unicast-type time synchronization packets. | subsequent unicast-type time synchronization packets. In order to do | |||
| This is done by means of a Message Authentication Code (MAC), which | this, a Message Authentication Code (MAC) is attached to each time | |||
| is attached to each time synchronization packet. The calculation of | synchronization packet. The calculation of the MAC includes the | |||
| the MAC includes the whole time synchronization packet and the cookie | whole time synchronization packet and the cookie which is shared | |||
| which is shared between client and server. The cookie is calculated | between client and server. The cookie is calculated according to: | |||
| according to: | ||||
| cookie = MSB_<b> (HMAC(server seed, H(certificate of client))), | cookie = MSB_<b> (HMAC(server seed, H(certificate of client))), | |||
| with the server seed as the key, where H is a hash function, and | with the server seed as the key, where H is a hash function, and | |||
| where the function MSB_<b> cuts off the b most significant bits of | where the function MSB_<b> cuts off the b most significant bits of | |||
| the result of the HMAC function. The server seed is a random value | the result of the HMAC function. The client's certificate contains | |||
| of bit length b that the server possesses, which has to be kept | the client's public key and enables the server to identify the | |||
| secret. The cookie never changes as long as the server seed stays | client, if client authorization is desired. The server seed is a | |||
| the same, but the server seed has to be refreshed periodically in | random value of bit length b that the server possesses, which has to | |||
| order to provide key freshness as required in [RFC7384]. See | remain secret. The cookie never changes as long as the server seed | |||
| Section 8 for details on seed refreshing. | stays the same, but the server seed has to be refreshed periodically | |||
| in order to provide key freshness as required in [RFC7384]. See | ||||
| Section 7 for details on seed refreshing. | ||||
| Since the server does not keep a state of the client, it has to | Since the server does not keep a state of the client, it has to | |||
| recalculate the cookie each time it receives a unicast time | recalculate the cookie each time it receives a unicast time | |||
| synchronization request from the client. To this end, the client has | synchronization request from the client. To this end, the client has | |||
| to attach the hash value of its certificate to each request (see | to attach the hash value of its certificate to each request (see | |||
| Section 6.3). | Section 6.3). | |||
| For broadcast-type messages, authenticity and integrity of the time | For broadcast-type messages, authenticity and integrity of the time | |||
| synchronization packets are also ensured by a MAC, which is attached | synchronization packets are also ensured by a MAC, which is attached | |||
| to the time synchronization packet by the sender. Verification of | to the time synchronization packet by the sender. Verification of | |||
| the broadcast-type packets' authenticity is based on the TESLA | the broadcast-type packets' authenticity is based on the TESLA | |||
| protocol, in particular on its "not re-using keys" scheme, see | protocol, in particular on its "not re-using keys" scheme, see | |||
| Section 3.7.2 of [RFC4082]. TESLA uses a one-way chain of keys, | Section 3.7.2 of [RFC4082]. TESLA uses a one-way chain of keys, | |||
| where each key is the output of a one-way function applied to the | where each key is the output of a one-way function applied to the | |||
| previous key in the chain. The last element of the chain is shared | previous key in the chain. The server securely shares the last | |||
| securely with all clients. The server splits time into intervals of | element of the chain with all clients. The server splits time into | |||
| uniform duration and assigns each key to an interval in reverse | intervals of uniform duration and assigns each key to an interval in | |||
| order, starting with the penultimate. At each time interval, the | reverse order, starting with the penultimate. At each time interval, | |||
| server sends a broadcast packet appended by a MAC, calculated using | the server sends a broadcast packet appended by a MAC, calculated | |||
| the corresponding key, and the key of the previous disclosure | using the corresponding key, and the key of the previous disclosure | |||
| interval. The client verifies the MAC by buffering the packet until | interval. The client verifies the MAC by buffering the packet until | |||
| disclosure of the key in its associated disclosure interval occurs. | disclosure of the key in its associated disclosure interval occurs. | |||
| In order to be able to verify the validity of the key, the client has | In order to be able to verify the timeliness of the packets, the | |||
| to be loosely time synchronized with the server. This has to be | client has to be loosely time synchronized with the server. This has | |||
| accomplished during the initial client server exchange between the | to be accomplished before broadcast associations can be used. For | |||
| broadcast client and the server. In addition, NTS uses another, more | checking timeliness of packets, NTS uses another, more rigorous check | |||
| rigorous check than what is used in the TESLA protocol. For a more | in addition to just the clock lookup used in the TESLA protocol. For | |||
| detailed description of how NTS employs and customizes TESLA, see | a more detailed description of how NTS employs and customizes TESLA, | |||
| Appendix B. | see Appendix B. | |||
| 6. Protocol Messages | 6. Protocol Messages | |||
| This section describes the types of messages needed for secure time | This section describes the types of messages needed for secure time | |||
| synchronization with NTS. | synchronization with NTS. | |||
| For some guidance on how these message types can be realized in | For some guidance on how these message types can be realized in | |||
| practice, and integrated into the communication flow of existing time | practice, and integrated into the communication flow of existing time | |||
| synchronization protocols, see [I-D.ietf-ntp-cms-for-nts-message], a | synchronization protocols, see [I-D.ietf-ntp-cms-for-nts-message], a | |||
| companion document for NTS. Said document describes ASN.1 encodings | companion document for NTS. Said document describes ASN.1 encodings | |||
| for those message parts that have to be added to a time | for those message parts that have to be added to a time | |||
| synchronization protocol for security reasons as well as CMS | synchronization protocol for security reasons as well as CMS | |||
| (Cryptographic Message Syntax, see [RFC5652]) conventions that can be | (Cryptographic Message Syntax, see [RFC5652]) conventions that can be | |||
| used to get the cryptographic aspects right. | used to get the cryptographic aspects right. | |||
| 6.1. Association Messages | 6.1. Association Message Exchange | |||
| In this message exchange, the hash and encryption algorithms that are | In this message exchange, the participants negotiate the hash and | |||
| used throughout the protocol are negotiated. In addition , the | encryption algorithms that are used throughout the protocol. In | |||
| client receives the certification chain up to a trusted anchor. With | addition, the client receives the certification chain up to a trusted | |||
| the established certification chain the client is able to verify the | anchor. With the established certification chain the client is able | |||
| server's signatures and, hence, the authenticity of future NTS | to verify the server's signatures and, hence, the authenticity of | |||
| messages from the server is ensured. | future NTS messages from the server is ensured. | |||
| 6.1.1. Message Type: "client_assoc" | 6.1.1. Goals of the Association Exchange | |||
| The association exchange: | ||||
| o enables the client to verify any communication with the server as | ||||
| authentic, | ||||
| o lets the participants negotiate NTS version and algorithms, | ||||
| o guarantees authenticity of the negotiation result to the client. | ||||
| 6.1.2. Message Type: "client_assoc" | ||||
| The protocol sequence starts with the client sending an association | The protocol sequence starts with the client sending an association | |||
| message, called client_assoc. This message contains | message, called client_assoc. This message contains | |||
| o the NTS message ID "client_assoc", | o the NTS message ID "client_assoc", | |||
| o a nonce, | ||||
| o the version number of NTS that the client wants to use (this | o the version number of NTS that the client wants to use (this | |||
| SHOULD be the highest version number that it supports), | SHOULD be the highest version number that it supports), | |||
| o the hostname of the client, | o the hostname of the client, | |||
| o a selection of accepted hash algorithms, and | o a selection of accepted hash algorithms, and | |||
| o a selection of accepted encryption algorithms. | o a selection of accepted encryption algorithms. | |||
| 6.1.2. Message Type: "server_assoc" | 6.1.3. Message Type: "server_assoc" | |||
| This message is sent by the server upon receipt of client_assoc. It | This message is sent by the server upon receipt of client_assoc. It | |||
| contains | contains | |||
| o the NTS message ID "server_assoc", | o the NTS message ID "server_assoc", | |||
| o the nonce transmitted in client_assoc, | ||||
| o the client's proposal for the version number, selection of | ||||
| accepted hash algorithms and selection of accepted encryption | ||||
| algorithms, as transmitted in client_assoc, | ||||
| o the version number used for the rest of the protocol (which SHOULD | o the version number used for the rest of the protocol (which SHOULD | |||
| be determined as the minimum over the client's suggestion in the | be determined as the minimum over the client's suggestion in the | |||
| client_assoc message and the highest supported by the server), | client_assoc message and the highest supported by the server), | |||
| o the hostname of the server, | o the hostname of the server, | |||
| o the server's choice of algorithm for encryption and for | o the server's choice of algorithm for encryption and for | |||
| cryptographic hashing, all of which MUST be chosen from the | cryptographic hashing, all of which MUST be chosen from the | |||
| client's proposals, | client's proposals, | |||
| o a signature, calculated over the data listed above, with the | o a signature, calculated over the data listed above, with the | |||
| server's private key and according to the signature algorithm | server's private key and according to the signature algorithm | |||
| which is also used for the certificates that are included (see | which is also used for the certificates that are included (see | |||
| below), and | below), and | |||
| o a chain of certificates, which starts at the server and goes up to | o a chain of certificates, which starts at the server and goes up to | |||
| a trusted authority; each certificate MUST be certified by the one | a trusted authority; each certificate MUST be certified by the one | |||
| directly following it. | directly following it. | |||
| 6.1.4. Procedure Overview of the Association Exchange | ||||
| For an association exchange, the following steps are performed: | ||||
| 1. The client sends a client_assoc message to the server. It MUST | ||||
| keep the transmitted values for the version number and algorithms | ||||
| available for later checks. | ||||
| 2. Upon receipt of a client_assoc message, the server constructs and | ||||
| sends a reply in the form of a server_assoc message as described | ||||
| in Section 6.1.3. Upon unsuccessful negotiation for version | ||||
| number or algorithms the server_assoc message MUST contain an | ||||
| error code. | ||||
| 3. The client waits for a reply in the form of a server_assoc | ||||
| message. After receipt of the message it performs the following | ||||
| checks: | ||||
| * The client checks that the message contains a conforming | ||||
| version number. | ||||
| * It also verifies that the server has chosen the encryption and | ||||
| hash algorithms from its proposal sent in the client_assoc | ||||
| message. | ||||
| * Furthermore, it performs authenticity checks on the | ||||
| certificate chain and the signature for the version number. | ||||
| If one of the checks fails, the client MUST abort the run. | ||||
| +------------------------+ | ||||
| | o Choose version | | ||||
| | o Choose algorithms | | ||||
| | o Acquire certificates | | ||||
| | o Assemble response | | ||||
| | o Create signature | | ||||
| +-----------+------------+ | ||||
| | | ||||
| <-+-> | ||||
| Server ---------------------------> | ||||
| /| \ | ||||
| client_ / \ server_ | ||||
| assoc / \ assoc | ||||
| / \| | ||||
| Client ---------------------------> | ||||
| <------ Association -----> | ||||
| exchange | ||||
| Procedure for association and cookie exchange. | ||||
| 6.2. Cookie Messages | 6.2. Cookie Messages | |||
| During this message exchange, the server transmits a secret cookie to | During this message exchange, the server transmits a secret cookie to | |||
| the client securely. The cookie will later be used for integrity | the client securely. The cookie will later be used for integrity | |||
| protection during unicast time synchronization. | protection during unicast time synchronization. | |||
| 6.2.1. Message Type: "client_cook" | 6.2.1. Goals of the Cookie Exchange | |||
| The cookie exchange: | ||||
| o enables the server to check the client's authorization via its | ||||
| certificate (optional), | ||||
| o supplies the client with the correct cookie for its association to | ||||
| the server, | ||||
| o guarantees to the client that the cookie originates from the | ||||
| server and that it is based on the client's original, unaltered | ||||
| request. | ||||
| o guarantees that the received cookie is unknown to anyone but the | ||||
| server and the client. | ||||
| 6.2.2. Message Type: "client_cook" | ||||
| This message is sent by the client upon successful authentication of | This message is sent by the client upon successful authentication of | |||
| the server. In this message, the client requests a cookie from the | the server. In this message, the client requests a cookie from the | |||
| server. The message contains | server. The message contains | |||
| o the NTS message ID "client_cook", | o the NTS message ID "client_cook", | |||
| o a nonce, | ||||
| o the negotiated version number, | o the negotiated version number, | |||
| o the negotiated signature algorithm, | o the negotiated signature algorithm, | |||
| o the negotiated encryption algorithm, | o the negotiated encryption algorithm, | |||
| o a nonce, | ||||
| o the negotiated hash algorithm H, | o the negotiated hash algorithm H, | |||
| o the client's certificate. | o the client's certificate. | |||
| 6.2.2. Message Type: "server_cook" | 6.2.3. Message Type: "server_cook" | |||
| This message is sent by the server upon receipt of a client_cook | This message is sent by the server upon receipt of a client_cook | |||
| message. The server generates the hash of the client's certificate, | message. The server generates the hash of the client's certificate, | |||
| as conveyed during client_cook, in order to calculate the cookie | as conveyed during client_cook, in order to calculate the cookie | |||
| according to Section 5. This message contains | according to Section 5. This message contains | |||
| o the NTS message ID "server_cook" | o the NTS message ID "server_cook" | |||
| o the version number as transmitted in client_cook, | o the version number as transmitted in client_cook, | |||
| o a concatenated datum which is encrypted with the client's public | o a concatenated datum which is encrypted with the client's public | |||
| key, according to the encryption algorithm transmitted in the | key, according to the encryption algorithm transmitted in the | |||
| client_cook message. The concatenated datum contains | client_cook message. The concatenated datum contains | |||
| * the nonce transmitted in client_cook, and | * the nonce transmitted in client_cook, and | |||
| * the cookie. | * the cookie. | |||
| o a signature, created with the server's private key, calculated | o a signature, created with the server's private key, calculated | |||
| over all of the data listed above. This signature MUST be | over all of the data listed above. This signature MUST be | |||
| calculated according to the transmitted signature algorithm from | calculated according to the transmitted signature algorithm from | |||
| the client_cook message. | the client_cook message. | |||
| 6.2.4. Procedure Overview of the Cookie Exchange | ||||
| For a cookie exchange, the following steps are performed: | ||||
| 1. The client sends a client_cook message to the server. The client | ||||
| MUST save the included nonce until the reply has been processed. | ||||
| 2. Upon receipt of a client_cook message, the server checks whether | ||||
| it supports the given cryptographic algorithms. It then | ||||
| calculates the cookie according to the formula given in | ||||
| Section 5. The server MAY use the client's certificate to check | ||||
| that the client is authorized to use the secure time | ||||
| synchronization service. With this, it MUST construct a | ||||
| server_cook message as described in Section 6.2.3. | ||||
| 3. The client awaits a reply in the form of a server_cook message; | ||||
| upon receipt it executes the following actions: | ||||
| * It verifies that the received version number matches the one | ||||
| negotiated beforehand. | ||||
| * It verifies the signature using the server's public key. The | ||||
| signature has to authenticate the encrypted data. | ||||
| * It decrypts the encrypted data with its own private key. | ||||
| * It checks that the decrypted message is of the expected | ||||
| format: the concatenation of a 128 bit nonce and a 128 bit | ||||
| cookie. | ||||
| * It verifies that the received nonce matches the nonce sent in | ||||
| the client_cook message. | ||||
| If one of those checks fails, the client MUST abort the run. | ||||
| +----------------------------+ | ||||
| | o OPTIONAL: Check client's | | ||||
| | authorization | | ||||
| | o Generate cookie | | ||||
| | o Encrypt inner message | | ||||
| | o Generate signature | | ||||
| +-------------+--------------+ | ||||
| | | ||||
| <-+-> | ||||
| Server ---------------------------> | ||||
| /| \ | ||||
| client_ / \ server_ | ||||
| cook / \ cook | ||||
| / \| | ||||
| Client ---------------------------> | ||||
| <--- Cookie exchange --> | ||||
| Procedure for association and cookie exchange. | ||||
| 6.3. Unicast Time Synchronisation Messages | 6.3. Unicast Time Synchronisation Messages | |||
| In this message exchange, the usual time synchronization process is | In this message exchange, the usual time synchronization process is | |||
| executed, with the addition of integrity protection for all messages | executed, with the addition of integrity protection for all messages | |||
| that the server sends. This message can be repeatedly exchanged as | that the server sends. This message can be repeatedly exchanged as | |||
| often as the client desires and as long as the integrity of the | often as the client desires and as long as the integrity of the | |||
| server's time responses is verified successfully. | server's time responses is verified successfully. | |||
| 6.3.1. Message Type: "time_request" | 6.3.1. Goals of the Unicast Time Synchronization Exchange | |||
| The unicast time synchronization exchange: | ||||
| o exchanges (unicast) time synchronization data as specified by the | ||||
| appropriate time synchronization protocol, | ||||
| o guarantees to the client that the response originates from the | ||||
| server and is based on the client's original, unaltered request. | ||||
| 6.3.2. Message Type: "time_request" | ||||
| This message is sent by the client when it requests a time exchange. | This message is sent by the client when it requests a time exchange. | |||
| It contains | It contains | |||
| o the NTS message ID "time_request", | o the NTS message ID "time_request", | |||
| o the negotiated version number, | o the negotiated version number, | |||
| o a nonce, | o a nonce, | |||
| o the negotiated hash algorithm H, | o the negotiated hash algorithm H, | |||
| o the hash of the client's certificate under H. | o the hash of the client's certificate under H. | |||
| 6.3.2. Message Type: "time_response" | 6.3.3. Message Type: "time_response" | |||
| This message is sent by the server after it has received a | This message is sent by the server after it has received a | |||
| time_request message. Prior to this the server MUST recalculate the | time_request message. Prior to this the server MUST recalculate the | |||
| client's cookie by using the hash of the client's certificate and the | client's cookie by using the hash of the client's certificate and the | |||
| transmitted hash algorithm. The message contains | transmitted hash algorithm. The message contains | |||
| o the NTS message ID "time_response", | o the NTS message ID "time_response", | |||
| o the version number as transmitted in time_request, | o the version number as transmitted in time_request, | |||
| skipping to change at page 9, line 4 ¶ | skipping to change at page 13, line 22 ¶ | |||
| This message is sent by the server after it has received a | This message is sent by the server after it has received a | |||
| time_request message. Prior to this the server MUST recalculate the | time_request message. Prior to this the server MUST recalculate the | |||
| client's cookie by using the hash of the client's certificate and the | client's cookie by using the hash of the client's certificate and the | |||
| transmitted hash algorithm. The message contains | transmitted hash algorithm. The message contains | |||
| o the NTS message ID "time_response", | o the NTS message ID "time_response", | |||
| o the version number as transmitted in time_request, | o the version number as transmitted in time_request, | |||
| o the server's time synchronization response data, | o the server's time synchronization response data, | |||
| o the nonce transmitted in time_request, | o the nonce transmitted in time_request, | |||
| o a MAC (generated with the cookie as key) for verification of all | o a MAC (generated with the cookie as key) for verification of all | |||
| of the above data. | of the above data. | |||
| 6.3.4. Procedure Overview of the Unicast Time Synchronization Exchange | ||||
| For a unicast time synchronization exchange, the following steps are | ||||
| performed: | ||||
| 1. The client sends a time_request message to the server. The | ||||
| client MUST save the included nonce and the transmit_timestamp | ||||
| (from the time synchronization data) as a correlated pair for | ||||
| later verification steps. | ||||
| 2. Upon receipt of a time_request message, the server re-calculates | ||||
| the cookie, then computes the necessary time synchronization data | ||||
| and constructs a time_response message as given in Section 6.3.3. | ||||
| 3. It awaits a reply in the form of a time_response message. Upon | ||||
| receipt, it checks: | ||||
| * that the transmitted version number matches the one negotiated | ||||
| previously, | ||||
| * that the transmitted nonce belongs to a previous time_request | ||||
| message, | ||||
| * that the transmit_timestamp in that time_request message | ||||
| matches the corresponding time stamp from the synchronization | ||||
| data received in the time_response, and | ||||
| * that the appended MAC verifies the received synchronization | ||||
| data, version number and nonce. | ||||
| If at least one of the first three checks fails (i.e. if the | ||||
| version number does not match, if the client has never used the | ||||
| nonce transmitted in the time_response message, or if it has used | ||||
| the nonce with initial time synchronization data different from | ||||
| that in the response), then the client MUST ignore this | ||||
| time_response message. If the MAC is invalid, the client MUST do | ||||
| one of the following: abort the run or go back to step 5 (because | ||||
| the cookie might have changed due to a server seed refresh). If | ||||
| both checks are successful, the client SHOULD continue time | ||||
| synchronization by going back to step 7. | ||||
| +-----------------------+ | ||||
| | o Re-generate cookie | | ||||
| | o Assemble response | | ||||
| | o Generate MAC | | ||||
| +-----------+-----------+ | ||||
| | | ||||
| <-+-> | ||||
| Server -----------------------------------------------> | ||||
| /| \ | ||||
| time_ / \ time_ | ||||
| request / \ response | ||||
| / \| | ||||
| Client -----------------------------------------------> | ||||
| <------ Unicast time ------> <- Client-side -> | ||||
| synchronization validity | ||||
| exchange checks | ||||
| Procedure for unicast time synchronization exchange. | ||||
| 6.4. Broadcast Parameter Messages | 6.4. Broadcast Parameter Messages | |||
| In this message exchange, the client receives the necessary | In this message exchange, the client receives the necessary | |||
| information to execute the TESLA protocol in a secured broadcast | information to execute the TESLA protocol in a secured broadcast | |||
| association. The client can only initiate a secure broadcast | association. The client can only initiate a secure broadcast | |||
| association after a successful unicast run. | association after successful association and cookie exchanges and | |||
| only if it has made sure that its clock is roughly synchronized to | ||||
| the server's. | ||||
| See Appendix B for more details on TESLA. | See Appendix B for more details on TESLA. | |||
| 6.4.1. Message Type: "client_bpar" | 6.4.1. Goals of the Broadcast Parameter Exchange | |||
| The broadcast parameter exchange | ||||
| o provides the client with all the information necessary to process | ||||
| broadcast time synchronization messages from the server, and | ||||
| o guarantees authenticity, integrity and freshness of the broadcast | ||||
| parameters to the client. | ||||
| 6.4.2. Message Type: "client_bpar" | ||||
| This message is sent by the client in order to establish a secured | This message is sent by the client in order to establish a secured | |||
| time broadcast association with the server. It contains | time broadcast association with the server. It contains | |||
| o the NTS message ID "client_bpar", | o the NTS message ID "client_bpar", | |||
| o the NTS version number negotiated during association in unicast | o the NTS version number negotiated during association, | |||
| mode, | ||||
| o a nonce, | ||||
| o the client's hostname, and | o the client's hostname, and | |||
| o the signature algorithm negotiated during unicast. | o the signature algorithm negotiated during association. | |||
| 6.4.2. Message Type: "server_bpar" | 6.4.3. Message Type: "server_bpar" | |||
| This message is sent by the server upon receipt of a client_bpar | This message is sent by the server upon receipt of a client_bpar | |||
| message during the broadcast loop of the server. It contains | message during the broadcast loop of the server. It contains | |||
| o the NTS message ID "server_bpar", | o the NTS message ID "server_bpar", | |||
| o the version number as transmitted in the client_bpar message, | o the version number as transmitted in the client_bpar message, | |||
| o the nonce transmitted in client_bpar, | ||||
| o the one-way functions used for building the key chain, and | o the one-way functions used for building the key chain, and | |||
| o the disclosure schedule of the keys. This contains: | o the disclosure schedule of the keys. This contains: | |||
| * the last key of the key chain, | * the last key of the key chain, | |||
| * time interval duration, | * time interval duration, | |||
| * the disclosure delay (number of intervals between use and | * the disclosure delay (number of intervals between use and | |||
| disclosure of a key), | disclosure of a key), | |||
| * the time at which the next time interval will start, and | * the time at which the next time interval will start, and | |||
| * the next interval's associated index. | * the next interval's associated index. | |||
| o The message also contains a signature signed by the server with | o The message also contains a signature signed by the server with | |||
| its private key, verifying all the data listed above. | its private key, verifying all the data listed above. | |||
| 6.5. Broadcast Messages | 6.4.4. Procedure Overview of the Broadcast Parameter Exchange | |||
| Via this message, the server keeps sending broadcast time | A broadcast parameter exchange consists of the following steps: | |||
| synchronization messages to all participating clients. | ||||
| 6.5.1. Message Type: "server_broad" | 1. The client sends a client_bpar message to the server. It MUST | |||
| remember the transmitted values for the nonce, the version number | ||||
| and the signature algorithm. | ||||
| 2. Upon receipt of a client_bpar message, the server constructs and | ||||
| sends a server_bpar message as described in Section 6.4.3. | ||||
| 3. The client waits for a reply in the form of a server_bpar | ||||
| message, on which it performs the following checks: | ||||
| * The message must contain all the necessary information for the | ||||
| TESLA protocol, as listed in Section 6.4.3. | ||||
| * The message must contain a nonce belonging to a client_bpar | ||||
| message that the client has previously sent. | ||||
| * Verification of the message's signature. | ||||
| If any information is missing or if the server's signature cannot | ||||
| be verified, the client MUST abort the broadcast run. If all | ||||
| checks are successful, the client MUST remember all the broadcast | ||||
| parameters received for later checks. | ||||
| +---------------------+ | ||||
| | o Assemble response | | ||||
| | o Create public-key | | ||||
| | signature | | ||||
| +----------+----------+ | ||||
| | | ||||
| <-+-> | ||||
| Server ---------------------------------------------> | ||||
| /| \ | ||||
| client_ / \ server_ | ||||
| bpar / \ bpar | ||||
| / \| | ||||
| Client ---------------------------------------------> | ||||
| <------- Broadcast ------> <- Client-side -> | ||||
| parameter validity | ||||
| exchange checks | ||||
| Procedure for unicast time synchronization exchange. | ||||
| 6.5. Broadcast Time Synchronization Exchange | ||||
| Via a stream of messages of the following message type, the server | ||||
| keeps sending broadcast time synchronization messages to all | ||||
| participating clients. | ||||
| 6.5.1. Goals of the Broadcast Time Synchronization Exchange | ||||
| The broadcast time synchronization exchange: | ||||
| o transmits (broadcast) time synchronization data from the server to | ||||
| the client as specified by the appropriate time synchronization | ||||
| protocol, | ||||
| o guarantees to the client that the received synchronization data | ||||
| has arrived in a timely manner as required by the TESLA protocol | ||||
| and is trustworthy enough to be stored for later checks, | ||||
| o additionally guarantees authenticity of a certain broadcast | ||||
| synchronization message in the client's storage. | ||||
| 6.5.2. Message Type: "server_broad" | ||||
| This message is sent by the server over the course of its broadcast | This message is sent by the server over the course of its broadcast | |||
| schedule. It is part of any broadcast association. It contains | schedule. It is part of any broadcast association. It contains | |||
| o the NTS message ID "server_broad", | o the NTS message ID "server_broad", | |||
| o the version number that the server is working under, | o the version number that the server is working under, | |||
| o time broadcast data, | o time broadcast data, | |||
| o the index that belongs to the current interval (and therefore | o the index that belongs to the current interval (and therefore | |||
| identifies the current, yet undisclosed, key), | identifies the current, yet undisclosed, key), | |||
| o the disclosed key of the previous disclosure interval (current | o the disclosed key of the previous disclosure interval (current | |||
| time interval minus disclosure delay), | time interval minus disclosure delay), | |||
| o a MAC, calculated with the key for the current time interval, | o a MAC, calculated with the key for the current time interval, | |||
| verifying | verifying | |||
| * the message ID, | * the message ID, | |||
| * the version number, and | * the version number, and | |||
| * the time data. | * the time data. | |||
| 6.6. Broadcast Key Check | 6.5.3. Procedure Overview of Broadcast Time Synchronization Exchange | |||
| A broadcast time synchronization message exchange consists of the | ||||
| following steps: | ||||
| 1. The server follows the TESLA protocol by regularly sending | ||||
| server_broad messages as described in Section 6.5.2, adhering to | ||||
| its own disclosure schedule. | ||||
| 2. The client awaits time synchronization data in the form of a | ||||
| server_broadcast message. Upon receipt, it performs the | ||||
| following checks: | ||||
| * Proof that the MAC is based on a key that is not yet disclosed | ||||
| (packet timeliness). This is achieved via a combination of | ||||
| checks. First, the disclosure schedule is used, which | ||||
| requires loose time synchronization. If this is successful, | ||||
| the client obtains a stronger guarantee via a key check | ||||
| exchange (see below). If its timeliness is verified, the | ||||
| packet will be buffered for later authentication. Otherwise, | ||||
| the client MUST discard it. Note that the time information | ||||
| included in the packet will not be used for synchronization | ||||
| until its authenticity could also be verified. | ||||
| * The client checks that it does not already know the disclosed | ||||
| key. Otherwise, the client SHOULD discard the packet to avoid | ||||
| a buffer overrun. If this check is successful, the client | ||||
| ensures that the disclosed key belongs to the one-way key | ||||
| chain by applying the one-way function until equality with a | ||||
| previous disclosed key is shown. If it is falsified, the | ||||
| client MUST discard the packet. | ||||
| * If the disclosed key is legitimate, then the client verifies | ||||
| the authenticity of any packet that it has received during the | ||||
| corresponding time interval. If authenticity of a packet is | ||||
| verified, then it is released from the buffer and its time | ||||
| information can be utilized. If the verification fails, then | ||||
| authenticity is not given. In this case, the client MUST | ||||
| request authentic time from the server by means other than | ||||
| broadcast messages. Also, the client MUST re-initialize the | ||||
| broadcast sequence with a "client_bpar" message if the one-way | ||||
| key chain expires, which it can check via the disclosure | ||||
| schedule. | ||||
| See RFC 4082[RFC4082] for a detailed description of the packet | ||||
| verification process. | ||||
| Server ----------------------------------> | ||||
| \ | ||||
| \ server_ | ||||
| \ broad | ||||
| \| | ||||
| Client ----------------------------------> | ||||
| < Broadcast > <- Client-side -> | ||||
| time sync. validity and | ||||
| exchange timeliness | ||||
| checks | ||||
| Procedure for broadcast time synchronization exchange. | ||||
| 6.6. Broadcast Keycheck | ||||
| This message exchange is performed for an additional check of packet | This message exchange is performed for an additional check of packet | |||
| timeliness in the course of the TESLA scheme, see Appendix B. | timeliness in the course of the TESLA scheme, see Appendix B. | |||
| 6.6.1. Message Type: "client_keycheck" | 6.6.1. Goals of the Broadcast Keycheck Exchange | |||
| The keycheck exchange: | ||||
| o guarantees to the client that the key belonging to the respective | ||||
| TESLA interval communicated in the exchange had not been disclosed | ||||
| before the client_keycheck message was sent. | ||||
| o guarantees to the client the timeliness of any broadcast packet | ||||
| secured with this key if it arrived before client_keycheck was | ||||
| sent. | ||||
| 6.6.2. Message Type: "client_keycheck" | ||||
| A message of this type is sent by the client in order to initiate an | A message of this type is sent by the client in order to initiate an | |||
| additional check of packet timeliness for the TESLA scheme. It | additional check of packet timeliness for the TESLA scheme. It | |||
| contains | contains | |||
| o the NTS message ID "client_keycheck", | o the NTS message ID "client_keycheck", | |||
| o the NTS version number negotiated during association in unicast | o the NTS version number negotiated during association, | |||
| mode, | ||||
| o a nonce, | o a nonce, | |||
| o an interval number from the TESLA disclosure schedule, | o an interval number from the TESLA disclosure schedule, | |||
| o the hash algorithm H negotiated in unicast mode, and | o the hash algorithm H negotiated during association, and | |||
| o the hash of the client's certificate under H. | o the hash of the client's certificate under H. | |||
| 6.6.2. Message Type: "server_keycheck" | 6.6.3. Message Type: "server_keycheck" | |||
| A message of this type is sent by the server upon receipt of a | A message of this type is sent by the server upon receipt of a | |||
| client_keycheck message during the broadcast loop of the server. | client_keycheck message during the broadcast loop of the server. | |||
| Prior to this, the server MUST recalculate the client's cookie by | Prior to this, the server MUST recalculate the client's cookie by | |||
| using the hash of the client's certificate and the transmitted hash | using the hash of the client's certificate and the transmitted hash | |||
| algorithm. It contains | algorithm. It contains | |||
| o the NTS message ID "server_keycheck" | o the NTS message ID "server_keycheck" | |||
| o the version number as transmitted in "client_keycheck, | o the version number as transmitted in "client_keycheck, | |||
| o the nonce transmitted in the client_keycheck message, | o the nonce transmitted in the client_keycheck message, | |||
| o the interval number transmitted in the client_keycheck message, | o the interval number transmitted in the client_keycheck message, | |||
| and | and | |||
| o a MAC (generated with the cookie as key) for verification of all | o a MAC (generated with the cookie as key) for verification of all | |||
| of the above data. | of the above data. | |||
| 7. Message Dependencies | 6.6.4. Procedure Overview of the Broadcast Keycheck Exchange | |||
| +--------------------+ | ||||
| |Association Exchange| | ||||
| +--------------------+ | ||||
| | | ||||
| At least one successful | ||||
| | | ||||
| v | ||||
| +---------------+ | ||||
| |Cookie Exchange| | ||||
| +---------------+ | ||||
| | | ||||
| At least one successful | ||||
| | | ||||
| v | ||||
| +----------------------------------------+ | ||||
| |Unicast Time Synchronization Exchange(s)| | ||||
| +----------------------------------------+ | ||||
| | | ||||
| Until sufficient accuracy has been reached | ||||
| | | ||||
| v | ||||
| +----------------------------+ | ||||
| |Broadcast Parameter Exchange| | ||||
| +----------------------------+ | ||||
| | | ||||
| One successful per client | ||||
| | | ||||
| v | ||||
| +----------------------------------------+ | ||||
| |Broadcast Time Synchronization Reception| | ||||
| +----------------------------------------+ | ||||
| | | ||||
| Whenever deemed necessary | ||||
| | | ||||
| v | ||||
| +-----------------+ | ||||
| |Keycheck Exchange| | ||||
| +-----------------+ | ||||
| 8. Server Seed Considerations | A broadcast keycheck message exchange consists of the following | |||
| steps: | ||||
| 1. The client sends a client_keycheck message. It MUST memorize the | ||||
| nonce and the time interval number that it sends as a correlated | ||||
| pair. | ||||
| 2. Upon receipt of a client_keycheck message, the server looks up | ||||
| whether it has already disclosed the key associated with the | ||||
| interval number transmitted in that message. If it has not | ||||
| disclosed it, it constructs and sends the appropriate | ||||
| server_keycheck message as described in Section 6.6.3. For more | ||||
| details, see also Appendix B. | ||||
| 3. The client awaits a reply in the form of a server_keycheck | ||||
| message. On receipt, it performs the following checks: | ||||
| * that the transmitted version number matches the one negotiated | ||||
| previously, | ||||
| * that the transmitted nonce belongs to a previous | ||||
| client_keycheck message, | ||||
| * that the TESLA interval number in that client_keycheck message | ||||
| matches the corresponding interval number from the | ||||
| server_keycheck, and | ||||
| * that the appended MAC verifies the received data. | ||||
| +----------------------+ | ||||
| | o Assemble response | | ||||
| | o Re-generate cookie | | ||||
| | o Generate MAC | | ||||
| +-----------+----------+ | ||||
| | | ||||
| <-+-> | ||||
| Server ---------------------------------------------> | ||||
| \ /| \ | ||||
| \ server_ client_ / \ server_ | ||||
| \ broad keycheck / \ keycheck | ||||
| \| / \| | ||||
| Client ---------------------------------------------> | ||||
| <-------- Extended broadcast time -------> | ||||
| synchronization. exchange | ||||
| <---- Keycheck exchange ---> | ||||
| Procedure for extended broadcast time synchronization exchange. | ||||
| 7. Server Seed Considerations | ||||
| The server has to calculate a random seed which has to be kept | The server has to calculate a random seed which has to be kept | |||
| secret. The server MUST generate a seed for each supported hash | secret. The server MUST generate a seed for each supported hash | |||
| algorithm, see Section 9.1. | algorithm, see Section 8.1. | |||
| According to the requirements in [RFC7384], the server MUST refresh | According to the requirements in [RFC7384], the server MUST refresh | |||
| each server seed periodically. Consequently, the cookie memorized by | each server seed periodically. Consequently, the cookie memorized by | |||
| the client becomes obsolete. In this case, the client cannot verify | the client becomes obsolete. In this case, the client cannot verify | |||
| the MAC attached to subsequent time response messages and has to | the MAC attached to subsequent time response messages and has to | |||
| respond accordingly by re-initiating the protocol with a cookie | respond accordingly by re-initiating the protocol with a cookie | |||
| request (Section 6.2). | request (Section 6.2). | |||
| 9. Hash Algorithms and MAC Generation | 8. Hash Algorithms and MAC Generation | |||
| 9.1. Hash Algorithms | 8.1. Hash Algorithms | |||
| Hash algorithms are used at different points: calculation of the | Hash algorithms are used at different points: calculation of the | |||
| cookie and the MAC, and hashing of the client's certificate. The | cookie and the MAC, and hashing of the client's certificate. The | |||
| client and the server negotiate a hash algorithm H during the | client and the server negotiate a hash algorithm H during the | |||
| association message exchange (Section 6.1) at the beginning of a | association message exchange (Section 6.1) at the beginning. The | |||
| unicast run. The selected algorithm H is used for all hashing | selected algorithm H is used for all hashing processes in that run. | |||
| processes in that run. | ||||
| In the TESLA scheme, hash algorithms are used as pseudo-random | In the TESLA scheme, hash algorithms are used as pseudo-random | |||
| functions to construct the one-way key chain. Here, the utilized | functions to construct the one-way key chain. Here, the utilized | |||
| hash algorithm is communicated by the server and is non-negotiable. | hash algorithm is communicated by the server and is non-negotiable. | |||
| Note: | Note: | |||
| Any hash algorithm is prone to be compromised in the future. A | Any hash algorithm is prone to be compromised in the future. A | |||
| successful attack on a hash algorithm would enable any NTS client | successful attack on a hash algorithm would enable any NTS client | |||
| to derive the server seed from its own cookie. Therefore, the | to derive the server seed from its own cookie. Therefore, the | |||
| server MUST have separate seed values for its different supported | server MUST have separate seed values for its different supported | |||
| hash algorithms. This way, knowledge gained from an attack on a | hash algorithms. This way, knowledge gained from an attack on a | |||
| hash algorithm H can at least only be used to compromise such | hash algorithm H can at least only be used to compromise such | |||
| clients who use hash algorithm H as well. | clients who use hash algorithm H as well. | |||
| 9.2. MAC Calculation | 8.2. MAC Calculation | |||
| For the calculation of the MAC, client and server use a Keyed-Hash | For the calculation of the MAC, client and server use a Keyed-Hash | |||
| Message Authentication Code (HMAC) approach [RFC2104]. The HMAC is | Message Authentication Code (HMAC) approach [RFC2104]. The HMAC is | |||
| generated with the hash algorithm specified by the client (see | generated with the hash algorithm specified by the client (see | |||
| Section 9.1). | Section 8.1). | |||
| 10. IANA Considerations | 9. IANA Considerations | |||
| 11. Security Considerations | 10. Security Considerations | |||
| 11.1. Privacy | 10.1. Privacy | |||
| tbd | The payload of time synchronization protocol packets of two-way time | |||
| transfer approaches like NTP and PTP consists basically of time | ||||
| stamps, which are not considered secret [RFC7384]. Therefore, | ||||
| encryption of the time synchronization protocol packet's payload is | ||||
| not considered in this document. However, an attacker can exploit | ||||
| the exchange of time synchronization protocol packets for topology | ||||
| detection and inference attacks as described in | ||||
| [I-D.iab-privsec-confidentiality-threat]. To make such attacks more | ||||
| difficult, that draft recommends the encryption of the packet | ||||
| payload. Yet, in the case of time synchronization protocols the | ||||
| confidentiality protection of time synchronization packet's payload | ||||
| is of secondary role since the packets meta data (IP addresses, port | ||||
| numbers, possibly packet size and regular sending intervals) carry | ||||
| more information than the payload. To enhance the privacy of the | ||||
| time synchronization partners, the usage of tunnel protocols such as | ||||
| IPsec and MACsec, where applicable, is therefore more suited than | ||||
| confidentiality protection of the payload. | ||||
| 11.2. Initial Verification of the Server Certificates | 10.2. Initial Verification of the Server Certificates | |||
| The client has to verify the validity of the certificates during the | The client has to verify the validity of the certificates during the | |||
| certification message exchange (Section 6.1.2). Since it generally | certification message exchange (Section 6.1.3). Since it generally | |||
| has no reliable time during this initial communication phase, it is | has no reliable time during this initial communication phase, it is | |||
| impossible to verify the period of validity of the certificates. | impossible to verify the period of validity of the certificates. To | |||
| Therefore, the client MUST use one of the following approaches: | solve this chicken-and-egg problem, the client as to rely on external | |||
| means. | ||||
| o The validity of the certificates is preconditioned. Usually this | ||||
| will be the case in corporate networks. | ||||
| o The client ensures that the certificates are not revoked. To this | ||||
| end, the client uses the Online Certificate Status Protocol (OCSP) | ||||
| defined in [RFC6277]. | ||||
| o The client requests a different service to get an initial time | ||||
| stamp in order to be able to verify the certificates' periods of | ||||
| validity. To this end, it can, e.g., use a secure shell | ||||
| connection to a reliable host. Another alternative is to request | ||||
| a time stamp from a Time Stamping Authority (TSA) by means of the | ||||
| Time-Stamp Protocol (TSP) defined in [RFC3161]. | ||||
| 11.3. Revocation of Server Certificates | 10.3. Revocation of Server Certificates | |||
| According to Section 8, it is the client's responsibility to initiate | According to Section 7, it is the client's responsibility to initiate | |||
| a new association with the server after the server's certificate | a new association with the server after the server's certificate | |||
| expires. To this end, the client reads the expiration date of the | expires. To this end, the client reads the expiration date of the | |||
| certificate during the certificate message exchange (Section 6.1.2). | certificate during the certificate message exchange (Section 6.1.3). | |||
| Furthermore, certificates may also be revoked prior to the normal | Furthermore, certificates may also be revoked prior to the normal | |||
| expiration date. To increase security the client MAY periodically | expiration date. To increase security the client MAY periodically | |||
| verify the state of the server's certificate via OCSP. | verify the state of the server's certificate via OCSP. | |||
| 11.4. Mitigating Denial-of-Service for broadcast packets | 10.4. Mitigating Denial-of-Service for broadcast packets | |||
| TESLA authentication buffers packets for delayed authentication. | TESLA authentication buffers packets for delayed authentication. | |||
| This makes the protocol vulnerable to flooding attacks, causing the | This makes the protocol vulnerable to flooding attacks, causing the | |||
| client to buffer excessive numbers of packets. To add stronger DoS | client to buffer excessive numbers of packets. To add stronger DoS | |||
| protection to the protocol, the client and the server use the "not | protection to the protocol, the client and the server use the "not | |||
| re-using keys" scheme of TESLA as pointed out in Section 3.7.2 of RFC | re-using keys" scheme of TESLA as pointed out in Section 3.7.2 of RFC | |||
| 4082 [RFC4082]. In this scheme the server never uses a key for the | 4082 [RFC4082]. In this scheme the server never uses a key for the | |||
| MAC generation more than once. Therefore, the client can discard any | MAC generation more than once. Therefore, the client can discard any | |||
| packet that contains a disclosed key it already knows, thus | packet that contains a disclosed key it already knows, thus | |||
| preventing memory flooding attacks. | preventing memory flooding attacks. | |||
| Note that an alternative approach to enhance TESLA's resistance | Note that an alternative approach to enhance TESLA's resistance | |||
| against DoS attacks involves the addition of a group MAC to each | against DoS attacks involves the addition of a group MAC to each | |||
| packet. This requires the exchange of an additional shared key | packet. This requires the exchange of an additional shared key | |||
| common to the whole group. This adds additional complexity to the | common to the whole group. This adds additional complexity to the | |||
| protocol and hence is currently not considered in this document. | protocol and hence is currently not considered in this document. | |||
| 11.5. Delay Attack | 10.5. 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, several | not provide a feasible way to mitigate this attack. However, several | |||
| non-cryptographic precautions can be taken in order to detect this | non-cryptographic precautions can be taken in order to detect this | |||
| attack. | attack. | |||
| skipping to change at page 15, line 48 ¶ | skipping to change at page 24, line 48 ¶ | |||
| 4. For unicast-type messages: Introduction of a threshold value for | 4. For unicast-type messages: Introduction of a threshold value for | |||
| the delay time of the synchronization packets. The client can | the delay time of the synchronization packets. The client can | |||
| discard a time server if the packet delay time of this time | discard a time server if the packet delay time of this time | |||
| server is larger than the threshold value. | server is larger than the threshold value. | |||
| Additional provision against delay attacks has to be taken for | Additional provision against delay attacks has to be taken for | |||
| broadcast-type messages. This mode relies on the TESLA scheme which | broadcast-type messages. This mode relies on the TESLA scheme which | |||
| is based on the requirement that a client and the broadcast server | is based on the requirement that a client and the broadcast server | |||
| are loosely time synchronized. Therefore, a broadcast client has to | are loosely time synchronized. Therefore, a broadcast client has to | |||
| establish time synchronization with its broadcast server before it | establish time synchronization with its broadcast server before it | |||
| starts utilizing broadcast messages for time synchronization. To | starts utilizing broadcast messages for time synchronization. | |||
| this end, it initially establishes a unicast association with its | ||||
| broadcast server until time synchronization and calibration of the | One possible way to achieve this initial synchronization is to | |||
| packet delay time is achieved. After that it establishes a broadcast | establish a unicast association with its broadcast server until time | |||
| association with the broadcast server and utilizes TESLA to verify | synchronization and calibration of the packet delay time is achieved. | |||
| integrity and authenticity of any received broadcast packets. | After that, the client can establish a broadcast association with the | |||
| broadcast server and utilizes TESLA to verify integrity and | ||||
| authenticity of any received broadcast packets. | ||||
| An adversary who is able to delay broadcast packets can cause a time | An adversary who is able to delay broadcast packets can cause a time | |||
| adjustment at the receiving broadcast clients. If the adversary | adjustment at the receiving broadcast clients. If the adversary | |||
| delays broadcast packets continuously, then the time adjustment will | delays broadcast packets continuously, then the time adjustment will | |||
| accumulate until the loose time synchronization requirement is | accumulate until the loose time synchronization requirement is | |||
| violated, which breaks the TESLA scheme. To mitigate this | violated, which breaks the TESLA scheme. To mitigate this | |||
| vulnerability the security condition in TESLA has to be supplemented | vulnerability the security condition in TESLA has to be supplemented | |||
| by an additional check in which the client, upon receipt of a | by an additional check in which the client, upon receipt of a | |||
| broadcast message, verifies the status of the corresponding key via a | broadcast message, verifies the status of the corresponding key via a | |||
| unicast message exchange with the broadcast server (see Appendix B.4 | unicast message exchange with the broadcast server (see Appendix B.4 | |||
| for a detailed description of this check). Note that a broadcast | for a detailed description of this check). Note that a broadcast | |||
| client should also apply the above-mentioned precautions as far as | client should also apply the above-mentioned precautions as far as | |||
| possible. | possible. | |||
| 12. Acknowledgements | 10.6. Random Number Generation | |||
| The authors would like to thank Russ Housley, Steven Bellovin, David | At various points of the protocol, the generation of random numbers | |||
| Mills and Kurt Roeckx for discussions and comments on the design of | is required. The employed methods of generation need to be | |||
| NTS. Also, thanks go to Harlan Stenn for his technical review and | cryptographically secure. See [RFC4086] for guidelines concerning | |||
| specific text contributions to this document. | this topic. | |||
| 13. References | 11. Acknowledgements | |||
| 13.1. Normative References | The authors would like to thank Tal Mizrahi, Russ Housley, Steven | |||
| Bellovin, David Mills and Kurt Roeckx for discussions and comments on | ||||
| the design of NTS. Also, thanks go to Harlan Stenn for his technical | ||||
| review and specific text contributions to this document. | ||||
| 12. References | ||||
| 12.1. Normative References | ||||
| [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | |||
| Hashing for Message Authentication", RFC 2104, February | Hashing for Message Authentication", RFC 2104, February | |||
| 1997. | 1997. | |||
| [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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC3161] Adams, C., Cain, P., Pinkas, D., and R. Zuccherato, | ||||
| "Internet X.509 Public Key Infrastructure Time-Stamp | ||||
| Protocol (TSP)", RFC 3161, August 2001. | ||||
| [RFC4082] Perrig, A., Song, D., Canetti, R., Tygar, J., and B. | [RFC4082] Perrig, A., Song, D., Canetti, R., Tygar, J., and B. | |||
| Briscoe, "Timed Efficient Stream Loss-Tolerant | Briscoe, "Timed Efficient Stream Loss-Tolerant | |||
| Authentication (TESLA): Multicast Source Authentication | Authentication (TESLA): Multicast Source Authentication | |||
| Transform Introduction", RFC 4082, June 2005. | Transform Introduction", RFC 4082, June 2005. | |||
| [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | |||
| RFC 5652, September 2009. | RFC 5652, September 2009. | |||
| [RFC6277] Santesson, S. and P. Hallam-Baker, "Online Certificate | ||||
| Status Protocol Algorithm Agility", RFC 6277, June 2011. | ||||
| [RFC7384] Mizrahi, T., "Security Requirements of Time Protocols in | [RFC7384] Mizrahi, T., "Security Requirements of Time Protocols in | |||
| Packet Switched Networks", RFC 7384, October 2014. | Packet Switched Networks", RFC 7384, October 2014. | |||
| 13.2. Informative References | 12.2. Informative References | |||
| [I-D.iab-privsec-confidentiality-threat] | ||||
| Barnes, R., Schneier, B., Jennings, C., Hardie, T., | ||||
| Trammell, B., Huitema, C., and D. Borkmann, | ||||
| "Confidentiality in the Face of Pervasive Surveillance: A | ||||
| Threat Model and Problem Statement", draft-iab-privsec- | ||||
| confidentiality-threat-03 (work in progress), February | ||||
| 2015. | ||||
| [I-D.ietf-ntp-cms-for-nts-message] | [I-D.ietf-ntp-cms-for-nts-message] | |||
| Sibold, D., Roettger, S., Teichel, K., and R. Housley, | Sibold, D., Roettger, S., Teichel, K., and R. Housley, | |||
| "Protecting Network Time Security Messages with the | "Protecting Network Time Security Messages with the | |||
| Cryptographic Message Syntax (CMS)", draft-ietf-ntp-cms- | Cryptographic Message Syntax (CMS)", draft-ietf-ntp-cms- | |||
| for-nts-message-00 (work in progress), October 2014. | for-nts-message-00 (work in progress), October 2014. | |||
| [I-D.shpiner-multi-path-synchronization] | [I-D.shpiner-multi-path-synchronization] | |||
| Shpiner, A., Tse, R., Schelp, C., and T. Mizrahi, "Multi- | Shpiner, A., Tse, R., Schelp, C., and T. Mizrahi, "Multi- | |||
| Path Time Synchronization", draft-shpiner-multi-path- | Path Time Synchronization", draft-shpiner-multi-path- | |||
| skipping to change at page 17, line 44 ¶ | skipping to change at page 27, line 10 ¶ | |||
| [RFC5905] Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network | [RFC5905] Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network | |||
| Time Protocol Version 4: Protocol and Algorithms | Time Protocol Version 4: Protocol and Algorithms | |||
| Specification", RFC 5905, June 2010. | Specification", RFC 5905, June 2010. | |||
| [Shpiner] Shpiner, A., Revah, Y., and T. Mizrahi, "Multi-path Time | [Shpiner] Shpiner, A., Revah, Y., and T. Mizrahi, "Multi-path Time | |||
| Protocols", in Proceedings of Precision Clock | Protocols", in Proceedings of Precision Clock | |||
| Synchronization for Measurement Control and Communication, | Synchronization for Measurement Control and Communication, | |||
| ISPCS 2013, pp. 1-6, September 2013. | ISPCS 2013, pp. 1-6, September 2013. | |||
| Appendix A. TICTOC Security Requirements | Appendix A. (informative) TICTOC Security Requirements | |||
| The following table compares the NTS specifications against the | The following table compares the NTS specifications against the | |||
| TICTOC security requirements [RFC7384]. | TICTOC security requirements [RFC7384]. | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | Section | Requirement from I-D tictoc | Requirement | NTS | | | Section | Requirement from RFC 7384 | Requirement | NTS | | |||
| | | security-requirements-05 | level | | | | | | level | | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.1.1 | Authentication of Servers | MUST | OK | | | 5.1.1 | Authentication of Servers | MUST | OK | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.1.1 | Authorization of Servers | MUST | OK | | | 5.1.1 | Authorization of Servers | MUST | OK | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.1.2 | Recursive Authentication of | MUST | OK | | | 5.1.2 | Recursive Authentication of | MUST | OK | | |||
| | | Servers (Stratum 1) | | | | | | Servers (Stratum 1) | | | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.1.2 | Recursive Authorization of Servers | MUST | OK | | | 5.1.2 | Recursive Authorization of | MUST | OK | | |||
| | | (Stratum 1) | | | | | | Servers (Stratum 1) | | | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.1.3 | Authentication and Authorization | MAY | - | | | 5.1.3 | Authentication and | MAY | Optional, | | |||
| | | of Slaves | | | | | | Authorization of Clients | | Limited | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.2 | Integrity protection | MUST | OK | | | 5.2 | Integrity protection | MUST | OK | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.4 | Protection against DoS attacks | SHOULD | OK | | | 5.3 | Spoofing Prevention | MUST | OK | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.5 | Replay protection | MUST | OK | | | 5.4 | Protection from DoS attacks | SHOULD | OK | | |||
| +---------+------------------------------------+-------------+------+ | | | against the time protocol | | | | |||
| | 5.6 | Key freshness | MUST | OK | | +---------+------------------------------+-------------+------------+ | |||
| +---------+------------------------------------+-------------+------+ | | 5.5 | Replay protection | MUST | OK | | |||
| | | Security association | SHOULD | OK | | +---------+------------------------------+-------------+------------+ | |||
| +---------+------------------------------------+-------------+------+ | | 5.6 | Key freshness | MUST | OK | | |||
| | | Unicast and multicast associations | SHOULD | OK | | +---------+------------------------------+-------------+------------+ | |||
| +---------+------------------------------------+-------------+------+ | | | Security association | SHOULD | OK | | |||
| | 5.7 | Performance: no degradation in | MUST | OK | | +---------+------------------------------+-------------+------------+ | |||
| | | quality of time transfer | | | | | | Unicast and multicast | SHOULD | OK | | |||
| +---------+------------------------------------+-------------+------+ | | | associations | | | | |||
| | | Performance: lightweight | SHOULD | OK | | +---------+------------------------------+-------------+------------+ | |||
| | | computation | | | | | 5.7 | Performance: no degradation | MUST | OK | | |||
| +---------+------------------------------------+-------------+------+ | | | in quality of time transfer | | | | |||
| | | Performance: storage, bandwidth | SHOULD | OK | | +---------+------------------------------+-------------+------------+ | |||
| +---------+------------------------------------+-------------+------+ | | | Performance: lightweight | SHOULD | OK | | |||
| | 5.7 | Confidentiality protection | MAY | NO | | | | computation | | | | |||
| +---------+------------------------------------+-------------+------+ | +---------+------------------------------+-------------+------------+ | |||
| | 5.9 | Protection against Packet Delay | SHOULD | NA*) | | | | Performance: storage | SHOULD | OK | | |||
| | | and Interception Attacks | | | | +---------+------------------------------+-------------+------------+ | |||
| +---------+------------------------------------+-------------+------+ | | | Performance: bandwidth | SHOULD | OK | | |||
| | 5.10 | Secure mode | MUST | - | | +---------+------------------------------+-------------+------------+ | |||
| +---------+------------------------------------+-------------+------+ | | 5.8 | Confidentiality protection | MAY | NO | | |||
| | | Hybrid mode | SHOULD | - | | +---------+------------------------------+-------------+------------+ | |||
| +---------+------------------------------------+-------------+------+ | | 5.9 | Protection against Packet | MUST | Limited*) | | |||
| | | Delay and Interception | | | | ||||
| | | Attacks | | | | ||||
| +---------+------------------------------+-------------+------------+ | ||||
| | 5.10 | Secure mode | MUST | OK | | ||||
| +---------+------------------------------+-------------+------------+ | ||||
| | | Hybrid mode | SHOULD | - | | ||||
| +---------+------------------------------+-------------+------------+ | ||||
| *) See discussion in Section 11.5. | *) See discussion in Section 10.5. | |||
| Comparison of NTS specification against TICTOC security requirements. | Comparison of NTS specification against Security Requirements of Time | |||
| Protocols in Packet Switched Networks (RFC 7384) | ||||
| Appendix B. Using TESLA for Broadcast-Type Messages | Appendix B. (normative) Using TESLA for Broadcast-Type Messages | |||
| For broadcast-type messages , NTS adopts the TESLA protocol with some | For broadcast-type messages , NTS adopts the TESLA protocol with some | |||
| customizations. This appendix provides details on the generation and | customizations. This appendix provides details on the generation and | |||
| usage of the one-way key chain collected and assembled from | usage of the one-way key chain collected and assembled from | |||
| [RFC4082]. Note that NTS uses the "not re-using keys" scheme of | [RFC4082]. Note that NTS uses the "not re-using keys" scheme of | |||
| TESLA as described in Section 3.7.2. of [RFC4082]. | TESLA as described in Section 3.7.2. of [RFC4082]. | |||
| B.1. Server Preparation | B.1. Server Preparation | |||
| Server setup: | server setup: | |||
| 1. The server determines a reasonable upper bound B on the network | 1. The server determines a reasonable upper bound B on the network | |||
| delay between itself and an arbitrary client, measured in | delay between itself and an arbitrary client, measured in | |||
| milliseconds. | milliseconds. | |||
| 2. It determines the number n+1 of keys in the one-way key chain. | 2. It determines the number n+1 of keys in the one-way key chain. | |||
| This yields the number n of keys that are usable to authenticate | This yields the number n of keys that are usable to authenticate | |||
| broadcast packets. This number n is therefore also the number of | broadcast packets. This number n is therefore also the number of | |||
| time intervals during which the server can send authenticated | time intervals during which the server can send authenticated | |||
| broadcast messages before it has to calculate a new key chain. | broadcast messages before it has to calculate a new key chain. | |||
| skipping to change at page 19, line 40 ¶ | skipping to change at page 29, line 12 ¶ | |||
| 4082, the time interval L has to be shorter than the time | 4082, the time interval L has to be shorter than the time | |||
| interval between the broadcast messages. | interval between the broadcast messages. | |||
| 4. The server generates a random key K_n. | 4. The server generates a random key K_n. | |||
| 5. Using a one-way function F, the server generates a one-way chain | 5. Using a one-way function F, the server generates a one-way chain | |||
| of n+1 keys K_0, K_1, ..., K_{n} according to | of n+1 keys K_0, K_1, ..., K_{n} according to | |||
| K_i = F(K_{i+1}). | K_i = F(K_{i+1}). | |||
| 6. Using another one-way function F', it generates a sequence of n+1 | 6. Using another one-way function F', it generates a sequence of n | |||
| MAC keys K'_0, K'_1, ..., K'_{n-1} according to | MAC keys K'_0, K'_1, ..., K'_{n-1} according to | |||
| K'_i = F'(K_i). | K'_i = F'(K_i). | |||
| 7. Each MAC key K'_i is assigned to the time interval I_i. | 7. Each MAC key K'_i is assigned to the time interval I_i. | |||
| 8. The server determines the key disclosure delay d, which is the | 8. The server determines the key disclosure delay d, which is the | |||
| number of intervals between using a key and disclosing it. Note | number of intervals between using a key and disclosing it. Note | |||
| that although security is provided for all choices d>0, the | that although security is provided for all choices d>0, the | |||
| choice still makes a difference: | choice still makes a difference: | |||
| skipping to change at page 21, line 28 ¶ | skipping to change at page 31, line 13 ¶ | |||
| the server. | the server. | |||
| Note that if D_t is greater than (d - 1) * L, then some authentic | Note that if D_t is greater than (d - 1) * L, then some authentic | |||
| packets might be discarded. If D_t is greater than d * L, then all | packets might be discarded. If D_t is greater than d * L, then all | |||
| authentic packets will be discarded. In the latter case, the client | authentic packets will be discarded. In the latter case, the client | |||
| should not participate in the broadcast, since there will be no | should not participate in the broadcast, since there will be no | |||
| benefit in doing so. | benefit in doing so. | |||
| B.3. Sending Authenticated Broadcast Packets | B.3. Sending Authenticated Broadcast Packets | |||
| During each time interval I_i, the server sends one authenticated | During each time interval I_i, the server sends at most one | |||
| broadcast packet P_i. This packet consists of: | authenticated broadcast packet P_i. Such a packet consists of: | |||
| o a message M_i, | o a message M_i, | |||
| o the index i (in case a packet arrives late), | o the index i (in case a packet arrives late), | |||
| o a MAC authenticating the message M_i, with K'_i used as key, | o a MAC authenticating the message M_i, with K'_i used as key, | |||
| o the key K_{i-d}, which is included for disclosure. | o the key K_{i-d}, which is included for disclosure. | |||
| B.4. Authentication of Received Packets | B.4. Authentication of Received Packets | |||
| skipping to change at page 22, line 48 ¶ | skipping to change at page 32, line 32 ¶ | |||
| earlier disclosed key (see Clause 3.5 in RFC 4082, item 3). | earlier disclosed key (see Clause 3.5 in RFC 4082, item 3). | |||
| Next the client verifies that the transmitted time value s_i belongs | Next the client verifies that the transmitted time value s_i belongs | |||
| to the time interval I_i, by checking | to the time interval I_i, by checking | |||
| T_i =< s_i, and | T_i =< s_i, and | |||
| s_i < T_{i+1}. | s_i < T_{i+1}. | |||
| If it is falsified, the packet MUST be discarded and the client MUST | If it is falsified, the packet MUST be discarded and the client MUST | |||
| reinitialize its broadcast module by performing a unicast time | reinitialize its broadcast module by performing time synchronization | |||
| synchronization as well as a new broadcast parameter exchange | by other means than broadcast messages, and it MUST perform a new | |||
| (because a falsification of this check yields that the packet was not | broadcast parameter exchange (because a falsification of this check | |||
| generated according to protocol, which suggests an attack). | yields that the packet was not generated according to protocol, which | |||
| suggests an attack). | ||||
| If a packet P_i passes all the tests listed above, it is stored for | If a packet P_i passes all the tests listed above, it is stored for | |||
| later authentication. Also, if at this time there is a package with | later authentication. Also, if at this time there is a package with | |||
| index i-d already buffered, then the client uses the disclosed key | index i-d already buffered, then the client uses the disclosed key | |||
| K_{i-d} to derive K'_{i-d} and uses that to check the MAC included in | K_{i-d} to derive K'_{i-d} and uses that to check the MAC included in | |||
| package P_{i-d}. Upon success, it regards M_{i-d} as authenticated. | package P_{i-d}. Upon success, it regards M_{i-d} as authenticated. | |||
| Appendix C. Random Number Generation | Appendix C. (informative) Dependencies | |||
| +---------+--------------+--------+-------------------------------+ | ||||
| At various points of the protocol, the generation of random numbers | | Issuer | Type | Owner | Description | | |||
| is required. The employed methods of generation need to be | +---------+--------------+--------+-------------------------------+ | |||
| cryptographically secure. See [RFC4086] for guidelines concerning | | Server | private key | server | Used for server_assoc, | | |||
| this topic. | | PKI | (signature) | | server_cook, server_bpar. | | |||
| | +--------------+--------+ The server uses the private | | ||||
| | | public key | client | key to sign these messages. | | ||||
| | | (signature) | | The client uses the public | | ||||
| | +--------------+--------+ key to verify them. | | ||||
| | | certificate | server | The certificate is used in | | ||||
| | | | | server_assoc messages, for | | ||||
| | | | | verifying authentication and | | ||||
| | | | | (optionally) authorization. | | ||||
| +---------+--------------+--------+-------------------------------+ | ||||
| | Client | private key | client | The server uses the client's | | ||||
| | PKI | (encryption) | | public key to encrypt the | | ||||
| | +--------------+--------+ content of server_cook | | ||||
| | | public key | server | messages. The client uses | | ||||
| | | (encryption) | | the private key to decrypt | | ||||
| | +--------------+--------+ them. The certificate is | | ||||
| | | certificate | client | sent in client_cook messages, | | ||||
| | | | | where it is used for trans- | | ||||
| | | | | portation of the public key | | ||||
| | | | | as well as (optionally) for | | ||||
| | | | | verification of client | | ||||
| | | | | authorization. | | ||||
| +---------+--------------+--------+-------------------------------+ | ||||
| +------------<---------------+ | ||||
| | At least one | | ||||
| V successful | | ||||
| ++====[ ]===++ ++=====^=====++ | ||||
| || Cookie || ||Association|| | ||||
| || Exchange || || Exchange || | ||||
| ++====_ _===++ ++===========++ | ||||
| | | ||||
| | At least one | ||||
| | successful | ||||
| V | ||||
| ++=======[ ]=======++ | ||||
| || Unicast Time |>-----\ As long as further | ||||
| || Synchronization || | synchronization | ||||
| || Exchange(s) |<-----/ is desired | ||||
| ++=======_ _=======++ | ||||
| | | ||||
| \ Other (unspecified) | ||||
| Sufficient \ / methods which give | ||||
| accuracy \ either or / sufficient accuracy | ||||
| \----------\ /---------/ | ||||
| | | ||||
| | | ||||
| V | ||||
| ++========[ ]=========++ | ||||
| || Broadcast || | ||||
| || Parameter Exchange || | ||||
| ++========_ _=========++ | ||||
| | | ||||
| | One successful | ||||
| | per client | ||||
| V | ||||
| ++=======[ ]=======++ | ||||
| || Broadcast Time |>--------\ As long as further | ||||
| || Synchronization || | synchronization | ||||
| || Reception |<--------/ is desired | ||||
| ++=======_ _=======++ | ||||
| | | ||||
| / \ | ||||
| either / \ or | ||||
| /----------/ \-------------\ | ||||
| | | | ||||
| V V | ||||
| ++========[ ]========++ ++========[ ]========++ | ||||
| || Keycheck Exchange || || Keycheck Exchange || | ||||
| ++===================++ || with TimeSync || | ||||
| ++===================++ | ||||
| Authors' Addresses | Authors' Addresses | |||
| Dieter Sibold | Dieter Sibold | |||
| Physikalisch-Technische Bundesanstalt | Physikalisch-Technische Bundesanstalt | |||
| Bundesallee 100 | Bundesallee 100 | |||
| Braunschweig D-38116 | Braunschweig D-38116 | |||
| Germany | Germany | |||
| Phone: +49-(0)531-592-8420 | Phone: +49-(0)531-592-8420 | |||
| End of changes. 95 change blocks. | ||||
| 307 lines changed or deleted | 815 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||