Qué ocurre cuando el reloj de un ordenador se desfasa solo 1 segundo

El reloj de tu PC o smartphone parece sorprendentemente preciso. Sin embargo, el reloj interno del ordenador funciona con la precisión de un oscilador de cristal y, si no se corrige, se desfasa varios segundos al día. Si se deja sin corregir, la verificación de certificados TLS falla, las contraseñas de un solo uso de la autenticación de dos factores se invalidan, las marcas de tiempo de los registros dejan de ser fiables y la integridad de los datos en sistemas distribuidos se desmorona.

NTP (Network Time Protocol) es el protocolo que corrige este "desfase horario" a través de internet.

NTP - un protocolo que marca el tiempo desde 1985

NTP fue diseñado por David L. Mills y su primera especificación, el RFC 958, se publicó en septiembre de 1985. Desde entonces ha tenido varias revisiones; la versión de uso generalizado es NTPv4, definida en el RFC 5905 (2010). NTP opera con una estructura jerárquica (Stratum):

  • Stratum 0: fuentes de tiempo de alta precisión como relojes atómicos y receptores GPS. No se conectan directamente a la red
  • Stratum 1: servidores NTP conectados directamente al Stratum 0. "Relojes de referencia primarios"
  • Stratum 2: servidores que obtienen la hora del Stratum 1. Muchos servidores NTP públicos están aquí
  • Stratum 3 en adelante: obtienen la hora sucesivamente de servidores inferiores. Hasta un máximo de Stratum 15

NTP no simplemente copia la hora del servidor, sino que mide y compensa la latencia de red. Utiliza un algoritmo que obtiene la hora de múltiples servidores y selecciona estadísticamente el valor más fiable.

Lo que se rompe cuando la hora se desfasa

Verificación de certificados TLS

Los certificados TLS tienen un período de validez (Not Before / Not After). Si el reloj del cliente está muy desfasado, puede juzgar un certificado válido como "expirado" o uno aún no válido como "válido". El mecanismo de transparencia de certificados también depende de una hora precisa.

TOTP (contraseñas de un solo uso basadas en tiempo)

Las aplicaciones de autenticación como Google Authenticator generan códigos que cambian cada 30 segundos basándose en la hora actual. La especificación (RFC 6238) permite al verificador aceptar un margen de aproximadamente un paso (30 segundos) para absorber la latencia de red, de modo que un desfase pequeño sigue funcionando. Sin embargo, cuando la diferencia supera ese margen, ni siquiera un código introducido correctamente coincide y el inicio de sesión falla.

Autenticación Kerberos

La autenticación Kerberos utilizada en Active Directory no tolera por defecto diferencias horarias superiores a 5 minutos. Si NTP se detiene en una red corporativa, todos los empleados pueden quedar sin poder iniciar sesión.

Bases de datos distribuidas

Bases de datos distribuidas como Google Spanner determinan el orden de las transacciones por la hora. Google desarrolló TrueTime, una infraestructura horaria propia que combina relojes atómicos y GPS y que devuelve la hora no como un punto exacto, sino como un intervalo que incluye su propio margen de error. En lugar de eliminar el desfase, garantiza un límite superior para ese desfase y mantiene el orden de las transacciones dentro de ese margen.

Fiabilidad de los registros

En la investigación de incidentes de seguridad, se correlacionan cronológicamente los registros de múltiples servidores. Si las horas están desfasadas, no se puede reconstruir correctamente la relación causal de los eventos.

El segundo intercalar - el mayor enemigo de la sincronización horaria

Como la velocidad de rotación de la Tierra no es constante, se abre poco a poco una diferencia entre la hora acumulada a partir de los segundos uniformes de los relojes atómicos y la hora basada en la rotación terrestre (UT1). Para mantener esa diferencia dentro de un rango acotado, en el UTC que utilizamos se inserta ocasionalmente un "segundo intercalar". Después de las 23:59:59 se añade un segundo 23:59:60 que normalmente no existe.

Durante la inserción del segundo intercalar del 30 de junio de 2012, un defecto en el tratamiento del segundo intercalar por parte del kernel de Linux provocó una cadena de fallos en servicios que corrían sobre Linux, como Reddit y Mozilla. Muchos programas asumían que "un minuto tiene 60 segundos" y no contemplaban la existencia de un segundo 61.

En respuesta a este problema, Google desarrolló el "leap smear" (suavizado del segundo intercalar). En lugar de insertar 1 segundo de golpe, ajusta la hora gradualmente durante 24 horas. En 2022, la Resolución 4 de la Conferencia General de Pesas y Medidas (CGPM) decidió ampliar antes de 2035 el límite tolerado para la diferencia entre UT1 y UTC, lo que en la práctica supone dejar de insertar segundos intercalares.

Resumen

La sincronización horaria es una de las "infraestructuras invisibles" de internet, particularmente discreta pero de importancia incalculable. TLS, 2FA, Kerberos, bases de datos distribuidas, análisis de registros - todo depende de una hora precisa. Cuando verificas tu información de conexión en IP Check-san, el handshake TLS que sustenta esa comunicación también se basa en una sincronización horaria precisa.

Términos del glosario relacionados

TLS Requiere hora precisa para verificar el período de validez de los certificados. El desfase horario causa errores de certificado. Autenticación de dos factores TOTP genera códigos a partir de la hora actual, por lo que el desfase horario impide el inicio de sesión. Dirección IP La conexión a servidores NTP también utiliza direcciones IP. DNS La verificación de firmas DNSSEC también requiere una hora precisa. HTTPS Depende de la sincronización horaria a través de la verificación del período de validez de los certificados TLS.

Preguntas frecuentes

¿Qué es NTP?

NTP (Network Time Protocol) sincroniza relojes en redes de ordenadores desde que su primera especificación, el RFC 958, se publicó en 1985. Usa un sistema jerárquico de fuentes de tiempo llamadas estratos, con relojes atómicos en el estrato 0 y cada nivel sucesivo algo menos preciso.

¿Qué falla cuando el reloj está mal?

Los certificados TLS se rechazan si el reloj del sistema está fuera de su periodo de validez. Los códigos de autenticación de dos factores TOTP fallan cuando la diferencia supera el margen que acepta el verificador, normalmente un paso de 30 segundos. La autenticación Kerberos rechaza los tickets con más de 5 minutos de desfase. Las bases de datos distribuidas pueden producir resultados inconsistentes.

¿Qué es un segundo intercalar?

Un segundo intercalar es un ajuste de un segundo que se añade al UTC para mantenerlo alineado con la rotación cada vez más lenta de la Tierra. Los segundos intercalares han provocado incidentes notables, como un error del kernel de Linux en 2012 que tumbó servicios que corrían sobre Linux, entre ellos Reddit y Mozilla. En 2022, la Conferencia General de Pesas y Medidas decidió dejar de insertar segundos intercalares antes de 2035.