Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

NTP, SNTP y PTP: ¿qué sincronización de tiempo necesito?

Fecha de publicación 05/03/2020
Autor
INCIBE (INCIBE)
NTP, SNTP y PTP

Para conseguir una buena eficiencia en los servicios y evitar complicaciones, la sincronización de todos los componentes de la red juega un papel notorio. Existen varios mecanismos de sincronización, siendo los tipos Simple Network Time Protocol (SNTP), Network Time Protocol (NTP) y Precision Time Protocol (PTP) los más comunes. El protocolo PTP es el más preciso, con una exactitud del orden de los nanosegundos, mientras que los protocolos SNTP y NTP tienen una precisión menor, del orden de los microsegundos, siendo suficientes para determinadas necesidades industriales y comerciales.

El error en la medición del tiempo o en los protocolos utilizados, ya sea provocado por un atacante o no, podría suponer:

  • Un error en un procedimiento industrial por desorganización mecánica.
  • Fallos de la actualización, al retrasar un reloj y nunca llegar a la fecha objetivo.
  • La caducidad en ciertos programas al aumentar la fecha del reloj interno.

Descripción de protocolos y últimas versiones

Tanto en el protocolo NTP como en el SNTP la comunicación comienza con un mensaje de petición por parte del cliente. Además, envían y reciben el mismo formato de mensaje con el servidor. La diferencia principal entre ambos es el proceso de sincronización que llevan a cabo. El protocolo NTP puede utilizar varios servidores y tiene en cuenta la velocidad de actuación del componente que solicita la hora. Al usar varios dispositivos el método NTP puede discriminar el tiempo de aquellos que se alejen mucho de los demás. Esto confiere al protocolo NTP más fiabilidad que el SNTP, que utiliza solo un servidor o reloj máster.

Ambos protocolos son interoperables, es decir, un dispositivo que funcione con SNTP puede conectarse a otro que esté utilizando NTP y viceversa. Esto es posible gracias a que, como se ha comentado anteriormente, el formato de mensajes que intercambian ambos algoritmos es el mismo. Otra característica que tienen en común dichos protocolos es la utilización de la hora UTC (Coordinated Universal Time). Esta hora es la misma para todo el mundo y permanece constante a lo largo del año.

NTP

NTP es implementado en la mayoría de los sistemas operativos basados en Linux y Windows, ampliamente utilizados en los sistemas de control.

Intercambio de mensajes en el protocolo NTP

- Figura 1: Intercambio de mensajes en el protocolo NTP -

El proceso que realiza el protocolo NTP es el siguiente:

  • Se envía un primer mensaje (petición de sincronización) en el instante T0 del lado del cliente que comprueba si el desfase de tiempo entre el servidor y el solicitante es mayor de 17 minutos.
  • El mensaje llega en el instante T1 al servidor:
    • En caso de que el desfase sea mayor que 17 minutos el proceso no continuaría, finalizando sin sincronización.
    • Si por el contrario el tiempo es menor que 17 minutos la sincronización continúa. El servidor envía un mensaje con su tiempo en el instante T2.
  • El paquete se recibe en el cliente en el instante T3. Se realiza un ajuste gradual del tiempo cada minuto hasta aproximarse a 128 ms del tiempo del servidor. El retardo (?) entre ambos relojes se calcula como:

NTP retardo

  • A partir de los 128 ms el desfase va ajustándose cada 17 minutos.

Flujo de mensajes NTP

- Figura 2: Flujo de mensajes NTP -

Cuando dos dispositivos se sincronizan entre ellos se genera un desfase de tiempo entre ambos, ya que la precisión se establece en unos 128 ms. La sincronización en cadena de múltiples dispositivos resulta inexacta a partir de la decimosexta vez debido al desfase acumulado cercano a los dos segundos (16 x 0,128=2,048 seg).

Una ventaja que presenta este protocolo es la posibilidad de implementar cifrado para tener una conexión segura entre servidor y cliente, y así asegurarse de la autenticidad de la fuente.

Actualmente, la última versión es la NTPv4, que soporta tanto IPv4 como IPv6 y es compatible con la versión anterior NTPv3. Esta nueva versión contiene un sistema de autenticación por clave, aumentando su seguridad.

SNTP

El método SNTP es mucho más sencillo que el NTP, ya que omite varios pasos y solo ajusta el tiempo periódicamente, consiguiendo una precisión menor. El contenido del paquete con el que se comunica con el servidor omite muchas de las funcionalidades del procedimiento NTP. No es recomendable el uso del protocolo SNTP como fuente o reloj principal. La última versión de este protocolo es la SNTPv4. El principal problema de este protocolo es su baja seguridad porque carece de método de cifrado, haciéndolo vulnerable a ataques en los que se puede modificar el tiempo.

El uso del protocolo SNTP es interesante en los siguientes casos:

  • Dispositivos simples, como microcontroladores y ordenadores pequeños, con poca memoria.
  • Equipos en los que la sincronización del tiempo no sea determinante.
  • Dispositivos de control como PLC, remotas y dispositivos embebidos.

PTP

A diferencia de NTP y el SNTP, en el protocolo PTP la conexión empieza con una petición del servidor. La intención de este protocolo es ser utilizado en redes locales y en dispositivos industriales. Otra diferencia con respecto a los otros dos protocolos es que para utilizar este algoritmo se requiere de hardware específico. Además, en este momento no existen servidores PTP gratuitos, por lo que es necesario un pago para poder utilizar esta fuente, o disponer de un servidor principal dentro de la instalación. Utiliza dos puertos UDP: el 319 para mensajes de eventos y el 320 para mensajes generales.

Principalmente el uso de PTP se encuentra en:

  • La generación y control de energía.
  • El control de sistemas de fabricación de piezas.
  • Transacciones bancarias.
  • Correlación de valores en el testeo de medidas.
  • Control robótico.

Este protocolo funciona de la siguiente manera:

Funcionamiento del PTP

- Figura 3: Funcionamiento del PTP -

  • El reloj máster manda un “mensaje de sincronización” y guarda el momento del envío de mensaje “t1”. El cliente guarda en su memoria local el momento en el que ha llegado: “t2”.
  • El reloj máster vuelve a mandar un “mensaje de seguimiento” que contiene el valor “t1”. El reloj del cliente realiza t2-t1 y lo suma al tiempo en su propio reloj, obteniendo el tiempo que corresponde al momento del servidor sin tener en cuenta el retraso causado por la velocidad de envío y por peticiones internas.
  • Más adelante, el dispositivo manda un “mensaje de retraso de petición”, guardando el instante en que se ha enviado: “t3”. El momento de llegada de este mensaje al servidor se guarda en el servidor como “t4”.
  • Por último, el reloj máster devuelve un “mensaje de retraso de respuesta” que contiene “t4”. El reloj del cliente calcula el retraso de tiempo como (t3+t2-t1-t4)/2.

Comparativa

Como se puede comprobar, el protocolo PTP asume una simetría en el retraso. El tiempo que tarda el servidor en procesar los paquetes de mensaje es el mismo tiempo que el que tarda el cliente en hacer lo mismo. Para la mayor parte de redes esta asunción es razonable, el problema surge cuando el camino que recorren los paquetes del cliente no es el mismo. En este caso, se crea una asimetría que provocará un desfase en las conexiones. PTP no es capaz de detectar esta asimetría. Por ello, en general se deberán intentar configurar las redes para que el camino de ida y de vuelta de los paquetes sea el mismo.

Características de los protocolos de sincronización

- Tabla 1: Características de los protocolos de sincronización -

Medidas de seguridad

En grandes redes pueden existir una gran cantidad de clientes a los cuales el servidor no puede prestar servicio a la vez. En este tipo de escenarios los clientes y servidores se organizan de una forma jerárquica basada en niveles llamados estratos.

En 2006 la Universidad British Columbia de Canadá realizó un informe enumerando una serie de fallos que tenía el protocolo PTP. La principal conclusión es que el protocolo PTP era débil en cuanto a garantizar la integridad y la autenticidad de los mensajes que se transmiten. Se describen cinco posibles ataques: modificación del paquete que envía el reloj maestro, suplantación de la identidad de un reloj maestro, retraso de la llegada de mensajes entre reloj maestro y cliente, reenvío de mensajes antiguos al cliente y denegación de servicio. En la actualidad, estos fallos han sido solucionados con la última versión IEEE 1588 PTP v2, que contiene entre otras mejoras una clave simétrica secreta, haciendo del PTP un protocolo más seguro.

Las soluciones que se aconsejan son:

  • El cifrado de mensajes. Esta medida tiene como inconveniente el retardo que se genera por el propio proceso de cifrado. Esto es perjudicial en procesos industriales donde se requiere una alta precisión.
  • La implantación de seguridad de puertos para que solo haya unos determinados relojes maestro.

Debido a la transición que está sufriendo el sector eléctrico hacia una red inteligente, la necesidad con respecto a la sincronización en los dispositivos ha evolucionado hacia una mayor precisión para acogerse a los estándares IEC 61850-9-2 o IEEE C37. Esto ha llevado al reemplazo de los métodos anteriores por el protocolo IEEE 1588 PTP v2 en las subestaciones eléctricas.

Conclusión

Asegurar la sincronización de los dispositivos en procedimientos industriales es de vital importancia. La principal amenaza está ligada al uso de servidores de Internet. Las organizaciones deberán utilizar servidores con mecanismo GPS como método de sincronización como estrato cero e implementar cortafuegos que eviten la entrada de comandos que puedan hacer variaciones de tiempo en caso de uso de los métodos NTP y SNTP.

Necesitamos especificar bien cuáles son las necesidades concretas de nuestros equipos para su buen funcionamiento. Cuanto más compleja y exacta tenga que ser la labor de los equipos, mayor precisión en el tiempo será necesaria. En esta situación la implantación del algoritmo PTP será la más adecuada.

Si nuestros dispositivos no tienen unas necesidades que requieran alta precisión, el uso de los protocolos NTP y SNTP es el apropiado. La elección de uno de estos dos métodos dependerá de la posición del dispositivo en la red, la capacidad de memoria y su necesidad de precisión.