Pasar al contenido principal
El error de Unix del año 2038
Del «error del año 2000» al de 2038: ¿una nueva bomba de relojería para los sistemas Unix?

¿Recuerdas que, al acercarse el año 2000, cundió el pánico por todo el mundo? ¿Cuál fue el origen del problema? Una decisión de diseño informático aparentemente insignificante, tomada varias décadas antes. La mayoría de los sistemas informáticos en uso desde los años 60 utilizaban dos dígitos para representar el año (p. ej., «99» para 1999). Así, el cambio a «00» podía interpretarse como 1900 y provocar una cascada de errores.

Las hipótesis se sucedían a buen ritmo: cortes en la red eléctrica, colapso bancario, aviones inmovilizados en tierra, fallos en las centrales nucleares. Gobiernos, empresas y particulares se preparaban para lo peor, invirtiendo miles de millones para prevenir una catástrofe que, al final, no llegó a producirse.

Ya en la década de 1970, algunos expertos habían previsto el problema. Pero con el auge de los ordenadores en la década de 1980 y la llegada de Internet al público a mediados de la década de 1990, la mayoría de los programas y sistemas operativos seguían utilizando este formato de fecha. El temor era que los algoritmos que realizaban cálculos basados en la fecha (intereses bancarios, gestión de existencias, mantenimiento automático, etc.) se comportaran de forma errática pasada la medianoche del 31 de diciembre de 1999. Hay que decir que, en la época en que se escribieron algunos programas, nadie en los años 70 pensaba que seguirían utilizándose 30 años después.

 

Una movilización masiva y un éxito 

Los gobiernos y las empresas se tomaron en serio la amenaza. Ya a mediados de la década de 1990 se pusieron en marcha importantes planes de corrección: actualización de programas informáticos, pruebas rigurosas y migración de los sistemas críticos. En Estados Unidos, por ejemplo, se habían invertido más de 100 000 millones de dólares para garantizar la compatibilidad de las infraestructuras. 

El 31 de diciembre de 1999, numerosos centros de control se encontraban en alerta máxima. Los ingenieros supervisaban los sistemas informáticos, preparados para reaccionar ante el más mínimo fallo. Pero cuando dio la medianoche, las consecuencias fueron en gran medida leves.

Se produjeron algunos incidentes, pero nada grave: errores en la visualización de las fechas en programas informáticos obsoletos, cajeros automáticos fuera de servicio o incluso sistemas de gestión de pacientes hospitalizados que mostraban edades erróneas. Pero no se produjo ningún colapso sistémico.

El éxito de las medidas correctivas dio la impresión de que el «error del año 2000» había sido una falsa alarma y una oportunidad para que algunos avispados se hicieran de oro montando un sinfín de empresas de servicios de sistemas de información para abordar el problema. Sin embargo, demostró la importancia de la gestión proactiva de los riesgos informáticos y supuso un punto de inflexión en la concienciación sobre la ciberseguridad y la gobernanza de las infraestructuras digitales.

El error del año 2000 no fue un hecho sin importancia, sino más bien una demostración de la eficacia de anticiparse a un riesgo con antelación. Hoy en día, ante retos similares, como el paso al año 2038 para los sistemas Unix o las vulnerabilidades críticas de ciberseguridad, esta experiencia nos recuerda que la anticipación y la resiliencia son esenciales en un mundo cada vez más dependiente de la tecnología.

 

El próximo reto: el error del año 2038

 

Si bien el error del año 2000 se evitó gracias a medidas preventivas, otro problema similar amenaza a los sistemas Unix y Linux: el error del año 2038. ¿No lo conoces? Este problema se debe al formato de almacenamiento del tiempo que utilizan estos sistemas: la marca de tiempo Unix, que representa el número de segundos transcurridos desde el 1 de enero de 1970 (tiempo de la Época). 

En los sistemas que utilizan enteros con signo de 32 bits para registrar las fechas en segundos, el valor máximo alcanzará los 2 147 483 647 segundos el 19 de enero de 2038 a las 03:14:07 UTC. En esa fecha, los contadores de tiempo volverán a un valor negativo, lo que podría provocar errores similares a los que se temían para el año 2000, como fallos en sistemas críticos, errores en el cálculo de fechas y fallos generalizados.

 

Explicaciones sobre el error de codificación de una fecha en 32 bits:

19/01/2038: 03:14:07 -> 2147483647 -> 011111111111111111111111111111111

Sin embargo, 011111111111111111111111111111111 + 1 = 100000000000000000000000000000000

Y 100000000000000000000000000000000 -> -2147483648 -> 13/12/1901: 20:45:52

 

Las infraestructuras más vulnerables son aquellas que aún utilizan sistemas embebidos antiguos, bases de datos con marcas de tiempo y determinados programas financieros que se basan en marcas de tiempo Unix. Aunque muchos sistemas modernos utilizan ahora números enteros de 64 bits, lo que garantiza una compatibilidad mucho más allá de 2038, algunas arquitecturas críticas aún no se han actualizado.

Las grandes empresas tecnológicas y los gobiernos ya han comenzado a migrar sus sistemas para que funcionen tan bien como en el año 2000, pero queda mucho por hacer, especialmente en los sectores de la aviación, la energía y la banca. 

Entonces, ¿se trata de un pánico exagerado o de un riesgo real? El debate sigue abierto, pero una cosa es segura: sin una concienciación masiva y una preparación anticipada, las consecuencias podrían ser graves.

 

Para terminar, aquí tienes la página de la Wikipedia dedicada al problema, así como algunos enlaces de interés para informarte sobre el tema

En Reddit, para ver el error que se produce a través de una animación 

En Stack Overflow, cómo resolver el error 

 

Que no cunda el pánico: el error del 2038 se resolverá tan bien o incluso mejor que el del año 2000.

Lo que hay que recordar de todo esto es la relevancia y la longevidad de los sistemas desarrollados en los años 70 por diseñadores geniales.

 

 


 

Etiquetas

↑