The idea
Every clock drifts. NTP keeps it right by asking better clocks, and a clock that is wrong breaks HTTPS. The laptop asks timeServer, which follows referenceClock; brokenClock is two years behind, and bank serves a page over HTTPS.
Steps
-
Ask a clock the time
A computer's clock gains or loses a little every day, and logs, logins and certificates all trust it. So the laptop asks referenceClock, the best clock here, how far off its own clock is. This changes nothing yet: it only measures.
laptop:~# chronyd -Q 'server referenceClock.lab iburst'
-
Each clock one step further
Thousands of devices cannot all ask the one best clock, so clocks follow clocks in a tree. The laptop follows timeServer, and timeServer follows referenceClock. Ask the laptop's clock program, chrony, whom it follows, then walk up the chain.
laptop:~# chronyc tracking timeServer:~# chronyc tracking referenceClock:~# chronyc tracking
Pro
3 more steps in the app
- A clock that is wrong
- More servers outvote a liar
- A wrong clock breaks HTTPS