EN FR

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:

~65 Public NTS servers worldwide
~50 Located in Europe
3,735 Classic NTP servers (EU pool)
~2% NTS adoption rate

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.

Test Your NTP Now RDEM NTS Infrastructure

A service by RDEM Systems ยท See also: NTP diagnostic tool