An effort to secure the Network Time Protocol
The Network Time Protocol (NTP) debuted in 1985; it is a universally used, open specification that is deeply important for all sorts of activities we take for granted. It also, despite a number of efforts, remains stubbornly unsecured. Ruben Nijveld presented work at FOSDEM 2026 to speed adoption of the thus-far largely ignored standard for securing NTP traffic: IETF's RFC-8915 that specifies Network Time Security (NTS) for NTP.
I was not able to attend FOSDEM this year, but I watched the video for the talk in order to put together this article.
According to Nijveld, NTP is "fundamentally a broken
protocol. It is a protocol that is fundamentally insecure
". His
employer, the Dutch nonprofit Trifecta Tech Foundation, is
testing technologies that would make it easier for pool.ntp.org, and
other large-scale time servers, to adopt NTS. That work is receiving additional
funding from ICANN and other
interested parties, he said.
The foundation's specialty is improving open-source infrastructure
software, and Nijveld himself is an expert on time synchronization
software, having worked on or with ntpd-rs, and Statime for the
IEEE's Precision
Time Protocol.
The universal need for time
NTP was originally authored by the University of Delaware's David Mills, who passed in 2024. It is now almost universally used to synchronize everything else on the Internet with the Coordinated Universal Time (UTC) by referencing time data from high-precision timekeeping devices such as atomic clocks. Those are referred to as "Stratum 0" time sources in the hierarchy of time sources.
NTP timestamps are essential for computer-related synchronization
tasks such as issuing Kerberos tickets, and TOTP
tokens for one-time passwords. "If your clock is off by a minute,
good luck getting a proper TOTP token, because they are only valid for
a minute, generally
." Database synchronization,
distributed-systems logging, and in fact almost all of distributed
computing, are built on precise synchronization, as are cellular
networks, any sort of media streaming, high-frequency trading,
power-grid load balancing, and astronomical research, Nijveld
noted.
The issue with NTP, Nijveld said, is that it can be easily spoofed, which would cause havoc for any of the other above-listed uses. In a typical man-in-the-middle attack, one could capture a response, change the timestamp, and resend it to the requester, and no one would be the wiser.
Securing NTP is a trivial task, because the payload does not need
to be encrypted, Nijveld said. "Time is everywhere, so who cares if
it is encrypted or not?
" Instead, only proof of authentication is
needed to secure a timestamp packet. "We want to be sure that every
time I send a request, the response comes from the party that I wanted
it to come from
." NTS does this work.
NTS is an extension of NTP that includes a TLS key exchange, using the same key exchange infrastructure used for secure web browsing. The client first contacts the server over a TCP connection secured with TLS (using port 4460). The server's existing digital certificate can be used so long as it's signed by a certificate authority trusted by the client.
After a successful handshake, the server sends the client eight unique cookies, each containing the symmetric key established in the handshake. The client includes one of these cookies in a separate NTP request packet (sent via UDP port 123). Multiple cookies are used in case of dropped packets, with the server supplying a new one in each response. When the server receives the time request, it decodes the cookie to retrieve the symmetric key, and verifies the packet's checksum using the Message Authentication Code (MAC). If the operation is successful, the server sends back an NTP packet with the current timestamp (and a new cookie). Once the key exchange is established, the client can then poll the server on regular time intervals using the stream of cookies. No additional handshakes are needed.
Slow adoption for NTS
Despite NTS becoming an IETF standard in 2020, uptake has been slow. There's been some success: Canonical, which maintains its own time servers, switched to NTS in 25.10. But the NTP reference implementation, ntpd, does not support NTS. A number of clients, such as NTPsec, chrony, and ntpd-rs, do support NTS. They are not, however, widely adopted.
The Simple Network Time Protocol (SNTP) is widely used by embedded devices because of its small footprint. It uses a single time source, rather than multiple time sources, and messages are sent over UDP. Nijveld said that he is not aware of a single implementation of SNTP that supports NTS.
He suspected that the NTS-supporting implementations are not widely adopted as device designers may prefer the lighter SNTP clients, even though the other clients are not that heavy. To help spur wider adoption of NTS on Linux distributions, other Trifecta staff are also working on a patch for systemd-timesyncd.
Learning how to scale NTS
Trifecta surmised that one roadblock thwarting the wider use of NTS is the lack of practices to deploy NTS for large-scale usage. In particular, NTS needs to work nicely with pool.ntp.org. This service is run by a virtual cluster of about 5,000 servers. Today, most servers and other machines that use NTP probably have a client configuration pointing to pool.ntp.org. When a request is sent to pool.ntp.org the authoritative DNS server, GeoDNS maps the client to the nearest time server. That time server will then fulfill requests for the current time for that client.
Grafting TLS onto pool.ntp.org would require either issuing
certificates to all 5,000 servers or sharing a single certificate
across all of the servers. Issuing individual certificates is not
feasible as they all share the same domain name, Nijveld said, and
sharing a single certificate would be a security nightmare. The whole
setup could be compromised by one leaked certificate. "We need
alternative approaches
."
Trifecta is currently
experimenting with two different approaches. One
rethinks the server-side service and the other changes the behavior of
the client. The proposed server-side change is a load-balancing proxy,
with a single certificate, that handles all the server-side
encryption. It terminates the client connections, giving the client an
encrypted cookie, which is passed to the time server for quick
validation. This way, the time servers don't get bogged down with key
exchanges. The other approach requires modifying the client to do DNS
Service Record (SRV) lookups, which would point to specific
self-registering servers, each with its own unique domain
name—and its own certificate. This approach requires DNSSEC
validation, otherwise addresses could be spoofed "because DNS
itself is also not encrypted
".
There are still unresolved issues, and open questions, with those approaches. Nijveld didn't say this, explicitly, but equipping a pool of 5,000 servers with digital certificates, as the SRV approach takes, could be prohibitively costly. But if either or both architectures work, they will be submitted to the IETF for ratification.
Currently, Trifecta is looking for volunteers to add their own clients and servers to Trifecta's experimental NTS-only pool. To participate, a client or server needs to be online 24/7 with a fully qualified domain name, and the ability to accept certificates (NTS software can act both as a server and a client). The documentation says that it is possible to use Chrony, ntpd-rs, or NTPSec. However, Chrony requires modification for this.
Those who register with the program will get a token to validate their client to the pool, which needs to be added to the software's configuration file. The client will be given a set of upstream sources to connect with. If set up correctly, the participating time client/server gets a score, which increments each time it successfully executes. The score is used as part of the monitoring system.
Readers who would like to follow along with the work-in-progress management system for NTS servers can find the code on GitHub, and watch the Trifecta Tech Foundation blog for updates.
| Index entries for this article | |
|---|---|
| GuestArticles | Jackson, Joab |
| Conference | FOSDEM/2026 |
