Il concetto di tempo, inesorabile nella sua natura universale, assume un’importanza cruciale anche nell’ambito dell’informatica. Nel mondo digitale, l’accuratezza e la sincronizzazione del tempo sono fondamentali per orchestrare processi, garantire la sicurezza delle transazioni, registrare eventi in modo sequenziale e assicurare il corretto funzionamento di reti e sistemi distribuiti. Il tempo, da semplice variabile astratta, diventa un elemento indispensabile per la coerenza e l’integrità delle operazioni informatiche. Così, nel 1977, un ingegnere informatico chiamato Dave Mills propose un protocollo, NTP (Network Time Protocol), che poi sarebbe divenuto uno standard, vero e proprio punto di riferimento su scala globale.
Cos’è NTP, come funziona e a cosa serve
NTP è un protocollo di rete utilizzato per sincronizzare gli orologi di qualunque dispositivo all’interno di una rete. Obiettivo principale di NTP è quello di garantire una temporizzazione accurata e coerente tra i dispositivi connessi.
La batteria tampone utilizzata su molti dispositivi (non solo sui PC desktop e notebook) consente di mantenere attivo e aggiornato l’orologio di sistema anche quando il dispositivo è spento. Anche quando tale batteria si scarica, comunque, dopo aver avviato il sistema, data e ora si aggiornano automaticamente. Questo avviene se e solo se la macchina è collegata alla rete e può scambiare dati con un server NTP affidabile. Quest’ultimo fornisce la data corretta e l’orario corrente con la migliore approssimazione possibile.
Provate a scrivere Data e ora nella casella di ricerca di Windows quindi scegliete Impostazioni di data e ora. In corrispondenza di Sincronizza l’orologio, troverete il server NTP utilizzato dal vostro sistema.
Aprendo il prompt dei comandi di Windows (premere Windows+R
quindi digitare cmd
), quindi impartendo l’istruzione seguente è possibile anche qui leggere l’indirizzo del server NTP in uso:
reg query HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters /v NtpServer
Le funzioni principali di NTP includono la sincronizzazione dell’orologio, la gestione delle deviazioni di tempo (basti pensare che 70 milioni di anni fa un anno era composto da 372 giorni di 23 ore e mezza ciascuno) e la compensazione per i ritardi di trasmissione della rete. NTP utilizza un’architettura gerarchica: i dispositivi sincronizzano il loro orologio con alcuni server NTP che, a loro volta, possono sincronizzarsi con altri server ancora più precisi, creando una catena di riferimento temporale attendibile.
Com’è nato NTP e perché la sincronizzazione degli orologi è essenziale
Sviluppato da David “Dave” L. Mills presso l’Università del Delaware, NTP venne presentato nel 1985, sotto forma della sua prima versione stabile. Da allora si sono susseguite varie versioni: la più aggiornata e ancora attuale, è NTPv4 (giugno 2010).
Mills, classe 1938, ci ha purtroppo lasciato il 17 gennaio 2024. Ormai non vedente, per via di un glaucoma manifestatosi sin dalla tenera età, l’ingegnere è universalmente considerato uno dei pionieri di Internet. Qualche anno fa Mills dichiarò che l’idea di NTP era il “suo piccolo feudo” perché a fine anni ’70 nessun altro ci lavorava.
Il ruolo di NTP nelle comunicazioni
Altro che “piccolo feudo”! L’invenzione di NTP si è rivelata una vera e propria pietra angolare per tutto ciò che è venuto dopo. Mantenere sempre la corretta sequenza temporale degli eventi è fondamentale in informatica. In molti settori ci sono regolamentazioni e normative che richiedono la conservazione e l’analisi dei dati in un contesto temporale specifico. Ad esempio, nel settore finanziario, è necessario tenere traccia del tempo in cui è effettuata ciascuna transazione.
Molti protocolli di sicurezza e crittografia dipendono da timestamp accurati. Ad esempio, la corretta autenticazione di eventi o transazioni può richiedere un’indicazione di tempo precisa. I certificati digitali e i token temporizzati, sono esempi di come il tempo sia essenziale per garantire la sicurezza nelle transazioni online.
In ambienti distribuiti, come i sistemi basati su microservizi, il coordinamento delle transazioni richiede la gestione accurata del tempo, al fine di garantire la coerenza e l’integrità delle operazioni.
NTP funziona in collaborazione con sistemi satellitari, come il GPS, e altre tecnologie per sincronizzare l’ora sui nostri numerosi dispositivi interconnessi. L’ora rilevata da orologi atomici precisi e allineati, è ad esempio trasmessa tramite GPS a numerosi ricevitori, compresi quelli nelle torri delle reti mobili.
Un progetto figlio delle precedenti esperienze di Dave Mills
L’ingegner Mills aveva lavorato su ARPANET, la rete di computer ad uso militare sviluppata da DARPA, agenzia del Dipartimento della Difesa USA, dalla quale sarebbe nata la rete Internet che tutti conosciamo. Già docente, negli anni ’70, presso l’Università di Edimburgo, Mills aveva scritto programmi che decodificavano segnali radio e telegrafici a onde corte. Successivamente, soprattutto per divertimento, aveva studiato come gli orologi di una rete elettrica potessero discostarsi di diversi secondi per via della temperatura atmosferica e della tipologia di alimentazione (carbone o energia idroelettrica).
Magia nera per Vint Cerf quella del Padre Tempo di Internet
Nel 1988, Mills aveva talmente perfezionato il funzionamento del protocollo NTP al punto da poter sincronizzare gli orologi di computer collegati alla rete con una precisione di poche decine di millisecondi. Tanto da far spiritosamente dichiarare a Vint Cerf, uno dei “padri fondatori” della rete Internet e co-inventore della suite di protocolli TCP/IP, che si trattasse “di una sorta di magia nera“. Proprio Cerf ha condiviso la notizia della scomparsa dell’ingegnere, ormai conosciuto, tra i suoi collaboratori e non solo, come il Padre Tempo di Internet.
Sincronizzazione del tempo che continua ad evolvere ancora oggi
Al di là delle implementazioni scorrette di NTP che si sono succedute (una delle più recenti e la mancata sincronizzazione dell’orologio Windows tramite Secure Time Seeding), come avviene praticamente per qualunque “pezzo di codice”, con il passare degli anni emersero anche varie problematiche nelle varie versioni del protocollo. A partire dal 2011, si sono registrati diversi esempi di attacchi DDoS (Distributed Denial of Service) che utilizzavano i messaggi scambiati via NTP per bloccare il normale funzionamento di servizi altrui, resi attraverso la rete Internet.
Nacquero così anche implementazioni alternative di NTP. Una tra le più famose è NTPsec, progettata per essere più sicura e resiliente rispetto all’implementazione standard. Grazie al focus specifico sulla sicurezza, NTPsec va a correggere le vulnerabilità presenti nelle implementazioni NTP precedenti e spinge sulle pratiche di codifica sicura. Cerca inoltre di promuovere codice pulito, comprensibile e manutenibile.
Un’azienda come Meta ha comunicato di aver sostituito NTP con PTP (Precision Time Protocol) per ottenere una precisione dell’orario nell’ordine dei nanosecondi. Frattanto, un gruppo di circa 20 esperti formato in seno all’Internet Engineering Task Force (IETF), il principale organismo di standardizzazione di Internet, sta lavorando su NTPv5.
La quinta versione del protocollo, tuttavia, potrebbe essere piuttosto diversa rispetto alle precedenti. Lo stesso Mills, piuttosto amareggiato, dichiarava di non avere più “voce in capitolo” come un tempo. In ogni caso, la sincronizzazione dell’ora su Internet dovrebbe essere eseguita su un codice rigorosamente testato: e forse non è un caso che la maggior parte dei sistemi si basi ancora oggi su NTPv3, release risalente ormai al 1992.