Aller au contenu

NTS (Network Time Security)

NTS (en anglais Network Time Security) : mécanisme, normalisé par la RFC 8915, qui authentifie les échanges NTP. NTP d'origine n'authentifie pas ses réponses : n'importe qui sur le chemin peut répondre à la place du serveur et déplacer l'horloge d'une machine. Avec NTS, le client ouvre d'abord une session TLS vers le serveur sur le port TCP 4460 (l'échange de clés, NTS-KE), vérifie son certificat, et reçoit des clés et des cookies ; les requêtes NTP suivantes, toujours sur UDP 123, sont authentifiées par ces clés, sans que le serveur garde d'état par client.

Avec chrony, il suffit d'ajouter l'option nts à une ligne server (server ntp.obspm.fr iburst nts) ; chronyc authdata affiche alors NTS dans la colonne Mode et un nombre de cookies non nul. systemd-timesyncd, dans les versions livrées par Ubuntu 24.04 et Debian 13, ne le prend pas en charge. Ubuntu active NTS par défaut avec chrony depuis 25.10. Si le trafic sortant est filtré, le port TCP 4460 doit être ouvert en plus de UDP 123.

Le piège est circulaire : TLS a besoin d'une heure à peu près juste pour vérifier la validité d'un certificat. Une machine dont l'horloge est très fausse au démarrage échoue à l'échange de clés (TLS handshake ... failed). D'où l'intérêt de garder aussi des sources proches non authentifiées, ou un serveur d'amorçage comme le fait Ubuntu, et de combiner NTS avec plusieurs sources et minsources pour qu'une source compromise soit mise en minorité.

Dans les cours

Voir aussi