Epochalypse (ou Y2038) est un bug informatique qui touchera les systèmes 32 bits dans 14 ans : il concerne la représentation du temps, dont l’instant le plus éloigné correspond à 3:14:07 UTC du 19 janvier 2038. Après cet instant, les ordinateurs afficheront une date qui ne correspondra pas à 2038 mais à 1901 (plus précisément 20:45:52 UTC du 13 décembre 1901), causant des erreurs de calcul.

Le blackout informatique mondial du vendredi 19 juillet 2024 n’a pas été le premier et ne sera pas le dernier problème auquel le monde numérique devra faire face. À l’horizon, en plus des menaces d’attaques informatiques de plus en plus fréquentes et des nombreuses vulnérabilités (comme celle apparue avec la mise à jour de l’antivirus de CrowdStrike qui a bloqué des millions de pc Windows dans le monde), il y a un problème connu sous le nom d’Epochalypse qui aura des répercussions sur certains systèmes d’exploitation 32 bits.
Epochalypse, également connu sous le nom de bug de l’année 2038 (ou Y2038), est un bug informatique qui concerne la représentation du temps dans les dates relatives à l’année 2038 et suivantes. Similaire au Bug de l’An 2000 (Y2K) qui s’est produit parce que les premiers ordinateurs économisaient de la mémoire coûteuse en comptant uniquement les deux derniers chiffres de l’année, sans différencier ainsi entre 1900 et 2000, Epochalypse nous propulsera également au siècle dernier, plus précisément à 20h45:52 UTC du 13 décembre 1901, une date qui dans la représentation des systèmes d’exploitation Unix 32 bits (mais aussi dans les logiciels pour systèmes d’exploitation développés en C) correspond à 03:14:07 du mardi 19 janvier 2038.
En d’autres termes, après 03:14:07 UTC du 19 janvier 2038 (ou si les ordinateurs sont invités à fonctionner avec des dates correspondant ou supérieures à cet instant), le compteur dépassera la valeur maximale autorisée, renvoyant ainsi une date erronée. Cela est dû au fait que les systèmes 32 bits mesurent le passage du temps en comptant le nombre de secondes écoulées depuis minuit le 1er janvier 1970, un moment connu sous le nom d’Époque (d’où le nom Epochalypse) : les secondes écoulées sont donc stockées sous forme d’un entier 32 bits (séquence binaire de 32 zéros et un) qui atteint en fait sa valeur maximale juste à 03:14:07 du 19 janvier 2038.
Qu’est-ce qu’Epochalypse, le bug de l’année 2038
Epochalypse, comme mentionné, est un bug informatique qui concerne la gestion des dates relatives à l’année 2038 et suivantes. Plus précisément, le problème réside dans la représentation du temps utilisée dans les systèmes qui suivent le temps Unix standard, qui compte les secondes écoulées depuis 00:00 UTC du 1er janvier 1970 et les stocke dans un entier 32 bits. Cela indique que le « time.h » – qui tient compte de ce comptage avec une valeur pouvant être positive ou négative – peut mesurer un intervalle de temps limité, atteignant le seuil maximal autorisé à 03:14:07 UTC du 19 janvier 2038.
Après cet instant, le compteur indiquerait un entier négatif, de sorte que les ordinateurs renverraient une date ne correspondant pas à 2038 mais à 1901, à partir de 20:45:52 UTC du 13 décembre 1901.
Alors que 14 ans doivent encore s’écouler et que les informaticiens cherchent une solution au problème, le bug pourrait se manifester avant 2038, lorsque les ordinateurs sont invités à fonctionner avec des dates correspondant ou supérieures à l’instant critique: cela s’est déjà produit, par exemple, en 2006, sur le serveur web AOLserver, qui gérait des demandes sans expiration vers sa base de données, leur attribuant une date d’expiration égale à un milliard de secondes après leur saisie. À cette occasion, à 21:27:28 du 12 mai 2006, exactement un milliard de secondes avant 03:14:07 du 19 janvier 2038, le système de calcul a dépassé le seuil critique, renvoyant une date d’expiration dans le passé et provoquant un crash du système.
Comment le bug pourrait-il être résolu
Résoudre le problème de l’Epochalypse 2038 n’est pas simple, en raison des nombreuses combinaisons existantes de processeurs, systèmes d’exploitation et systèmes de fichiers. Une solution pourrait consister à changer le type de « time.h » de 32 bits à 64 bits, repoussant le bug dans le temps d’environ 290 milliards d’années, risquant cependant de rendre le système incompatible avec les logiciels, les systèmes de stockage et tous les outils utilisant une représentation binaire du temps.
Une autre stratégie pourrait consister à laisser « time.h » en tant qu’entier 32 bits, mais sans la possibilité de devenir positif ou négatif (type unsigned), reportant ainsi le problème de 68 ans, le déplaçant au 7 février 2106, et causant néanmoins des problèmes à de nombreux programmes.
