Is Your NTP Secure?
NTP was designed in the 1980s with zero security. NTS fixes that.
The Problem with Classic NTP
Every NTP packet you exchange travels unencrypted and unauthenticated across the network. Your system has no way to verify that the time it receives actually comes from the server it requested.
Classic NTP
- Packets sent in cleartext
- No server authentication
- Vulnerable to MITM attacks
- Server spoofing possible
- Time can be altered in transit
NTP with NTS
- Key exchange via TLS 1.3
- Cryptographic authentication
- MITM protection
- Server identity verified
- Data integrity guaranteed
How NTS Works (RFC 8915)
NTS adds cryptographic authentication to NTP in two simple phases:
Phase 1: Key Exchange (NTS-KE)
Your client establishes a TLS 1.3 connection with the NTS server on port 4460. During this handshake, the server's identity is verified via its TLS certificate, and encrypted cookies are exchanged for future use.
Phase 2: Authenticated Sync
Regular NTP queries (port 123/UDP) now include cryptographic extensions. Each response is authenticated using the cookies negotiated in Phase 1. No additional TLS connection is needed.
Who Needs NTS?
| Use Case | Risk Without NTS | Priority |
|---|---|---|
| PKI / Certificate Authorities | Forged timestamps can bypass certificate expiry | Critical |
| Financial / Trading systems | Regulatory non-compliance, invalid audit trails | Critical |
| DNSSEC infrastructure | Signature validation failure from time manipulation | Critical |
| Authentication (TOTP/2FA) | Token rejection or replay attacks | High |
| Log aggregation / SIEM | Event ordering corruption across systems | High |
| General infrastructure | Reduced trust in time data | Recommended |
Public NTS Servers Worldwide
NTS is still rare. As of 2026, the global landscape looks like this:
Notable NTS Providers
| Provider | Hostname | Location | Stratum |
|---|---|---|---|
| RDEM Systems | ntp-pool.rdem-systems.com |
France & Germany | 2 |
| Netnod | nts.netnod.se |
Sweden | 1 |
| PTB | ptbtime1.ptb.de |
Germany | 1 |
| Cloudflare | time.cloudflare.com |
Anycast (Global) | 3 |
| SIDN Labs | nts.time.nl |
Netherlands | 1 |
| NTP Pool (Trifecta) | ntppool-nts.time.nl |
Netherlands | 2 |
Enable NTS in 2 Minutes
Chrony (v4.0+) is the recommended NTS-capable client. It's available on most modern Linux distributions.
1. Install Chrony
# Debian / Ubuntu sudo apt update && sudo apt install chrony # RHEL / Fedora / CentOS sudo dnf install chrony
2. Configure NTS servers
Edit /etc/chrony/chrony.conf (or /etc/chrony.conf):
# /etc/chrony/chrony.conf - NTS configuration # NTS-secured servers server ntp-pool.rdem-systems.com iburst nts # France - Stratum 1&2 server nts.netnod.se iburst nts # Sweden - Stratum 1 server ptbtime1.ptb.de iburst nts # Germany - Stratum 1 server time.cloudflare.com iburst nts # Anycast - Stratum 3 # Drift file driftfile /var/lib/chrony/drift # Allow large correction at startup makestep 1.0 3 # Real-time clock sync rtcsync
3. Restart and verify
# Restart Chrony sudo systemctl restart chronyd # Check NTS authentication status sudo chronyc -N authdata
Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ========================================================================= ntp-pool.rdem-systems.c> NTS 1 15 256 23m 0 0 8 100 nts.netnod.se NTS 1 15 256 24m 0 0 8 100 ptbtime1.ptb.de NTS 1 15 256 25m 0 0 8 100
Verify NTS is Working
Check your sources
# List time sources sudo chronyc -N sources # Expected: sources should show synchronized status MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ntp-pool.rdem-systems.c> 2 6 377 23 -145us[ -201us] +/- 12ms ^+ nts.netnod.se 1 6 377 24 +234us[ +178us] +/- 15ms
Verify authentication details
# Detailed NTS status sudo chronyc -N authdata
NTS Health Checklist
- Mode = NTS — authentication is active
- NAK = 0 — no rejected authentications
- Cook > 0 — cookies available for future queries
- Reach = 377 — server consistently reachable
Frequently Asked Questions
What happens if NTS negotiation fails?
By default, Chrony will not use a source if NTS cannot be established. This is the secure behavior: it's better to skip a source than to sync unauthenticated.
Can I mix NTS and classic NTP sources?
Yes. Chrony can use both simultaneously. However, for maximum security, prefer NTS sources for all your time servers.
Does NTS affect sync accuracy?
No. NTS adds authentication, not latency to the time measurement itself. The TLS handshake only occurs during key exchange (at startup and approximately once per hour), not during regular NTP queries.
Is there a pool for NTS servers?
Traditional pooling is difficult with NTS because TLS certificates are tied to specific hostnames. However, some providers like RDEM Systems operate NTS-compatible pools using load-balanced endpoints. For most other providers, you need to configure specific server addresses.
Need Production-Grade NTS?
RDEM Systems operates a pool of NTS Stratum 2 servers distributed across multiple autonomous systems, including its own network (AS206014). Upstream Stratum 1 sources use GNSS/PPS for maximum accuracy.
A service by RDEM Systems ยท See also: NTP diagnostic tool