Aller au contenu

Vous avez aimé le bug de l’an 2000 ? Vous allez adorer celui de l’an 2038 !🤯

Je vous parle d’un temps que les moins de 20… 25 ans même 👶 ne peuvent pas connaître. Qui se souvient du Bug de l’an 2000 (ou Y2K) et de la paranoïa 😱 qui en a découlé ?

On nous annonçait l’apocalypse informatique : chaos mondial, feux de signalisation en panne 🚦, avions qui se crashent ✈️, ordinateurs qui prennent feu… L’événement a finalement débouché sur un feu de paille 🔥, avec quelques bugs résiduels vite corrigés.

Le problème du Y2K était simple : une fainéantise de programmeur (on l’est tous 😁) ou un manque de place de stockage forçant à n’utiliser que deux chiffres (ex: ’99’) au lieu de quatre (‘1999’) pour l’année. Au pire ? Ben, on revenait en 1900, ça allait encore.

🗓️ Le Prochain Bug est Mathématique

Le prochain gros bug à prévoir et à traiter est bien pire, car là, c’est toute la machine qu’il faudra changer ⏪ dans la plupart des cars ! Bienvenue au Bug de l’an 2038 (ou Y2K38) !

La raison est encore une fois historique, mais surtout mathématique :

Ceux qui ont connu les débuts de l’informatique se souviennent des ordinateurs 8 bits (Atari XL, Commodore 64) des années 70-80. Vinrent ensuite les 16 et les 32 bits (Amiga, Atari ST, premiers PC et Mac) dans les années 90. Enfin, depuis le début des années 2000, on est passé à une architecture 64 bits.

Petit point sur les Bits 💾

En très simplifié, un bit est l’unité de stockage fondamentale qui peut valoir 0 ou 1.

  • Avec 8 bits, on peut stocker des nombres allant jusqu’à 255, suffisant pour afficher Pac-Man mais pas pour faire sa compta.
  • Avec 32 bits, on peut stocker des nombres allant jusqu’à 4 294 967 295 (si l’on utilise uniquement des nombres positifs, appelés unsigned). C’est déjà beaucoup !
  • Avec 64 bits, on atteint 18 trillions (18 446 744 073 709 551 615) : c’est quasiment la limite de l’univers.

⏳ Le Compte à Rebours UNIX

Le cœur du problème de 2038 se situe dans la manière dont de très nombreux systèmes informatiques (les systèmes d’exploitation basés sur UNIX et Linux, très répandus dans l’industrie, les serveurs et les systèmes embarqués) calculent le temps. Les premiers smartphones, anciennes télé connectées, les terminaux de paiement du début du siècle bref grosso modo tout ce qui a un écran et date d’avant 2009 environ.

Ils utilisent le Temps UNIX (ou Epoch time), qui est le nombre de secondes entières écoulées depuis le 1er janvier 1970 à 00:00:00 UTC (cette date est appelée l’Époque). Vous le voyez venir ? Ca fait un paquet de secondes à compter…

💣 Le Débordement (Overflow) ou 💥 quand les secondes s’arrêtent

Historiquement, ce compteur de secondes est stocké comme un entier signé sur 32 bits (signed integer).

Un entier signé 32 bits utilise un de ses bits pour indiquer si le nombre est positif ou négatif, ce qui réduit sa valeur maximale positive de moitié donc à : 2 exposant 31 – 1 soit 2 147 483 647

C’est ce nombre maximal qui est le talon d’Achille du système.

  • Lorsque le compteur de secondes atteindra la valeur 2 147 483 647, cela correspondra exactement au 19 janvier 2038 à 03:14:07 UTC et… pouf c’est tout !

Lorsque le système tentera d’ajouter une seconde, le nombre va déborder (overflow). Il va « boucler » et se transformer en la plus grande valeur négative possible : – 2 147 483 648.

Cette valeur négative sera alors (au mieux) interprétée par le système non plus comme 2038, mais comme une date située en décembre 1901 ou… fera tout planter ! 😵

La Solution : Migrer vers le 64 Bits

La bonne nouvelle est que la solution est connue et simple : il suffit de passer les variables de temps à des entiers sur 64 bits. La majorité des PC et smartphones récents (64 bits) ne seront pas impactés. Oui mais tous les appareils qu’on ne remplacera pas parce qu’on ne peut pas (systèmes critiques) ou dont on ne sait tous simplement pas qu’ils vont connaitre un souci ? L’horloge tourne pour ceux-là…Tic-tac… ⏳

Le risque persiste donc pour :

  1. Les Systèmes Embarqués Anciens : Des milliards de dispositifs qui ne peuvent pas être mis à jour car leur mémoire est physiquement limitée à 32 bits. Cela inclut des systèmes de contrôle industriels, de vieux équipements de réseau, des compteurs électroniques, des systèmes de gestion de signalisation (comme ceux des trains ou du métro), des ordinateurs de bords d’avions/bateaux/voitures, des équipements réseau et téléphoniques, des appareils médicaux, des systèmes d’alarme, etc. Bref, tous ces appareils qu’on a installés il y a des années, qui font leur boulot et dont on ne devait surtout pas s’occuper tant que ça marchait !
  2. Les Logiciels Hérités : Certaines applications ou bases de données cachées au fin fond de systèmes de grosses sociétés ou banques qui manipulent les dates en 32 bits. C’est reparti pour de la spéléologie informatique ! Il va falloir plonger dans des centaines de systèmes dont beaucoup tournent depuis des dizaines d’années parce que « tant que ça marche, faut surtout pas toucher », et qui sont parfois écrits dans des langages de programmation que plus personne ne maîtrise.

A notre petit niveau ça voudra aussi dire des consoles Retro qui risquent de connaitre des petits soucis mais rien de grave à priori. Ca a généralement été prévu par les constructeurs qui ont fixé des limites « ‘en dur » comme la PS1 qui s’arrête à 1999. ou la Nintendo DS en 2050.

Ca commence à bouger comme par exemple (entre autres mais ça va fuser dans les années à venir) https://www.01net.com/actualites/bug-de-lan-2038-pourquoi-le-rer-a-et-le-metro-parisien-risquent-le-black-out.html.

Le danger c’est tout ce qu’on va oublier…😵

Voilà je pose ça là et on se revoit dans 10 ans quand la panique commencera dans les entreprises 😈

👋 Vous aimez notre Blog ?

Inscrivez-vous pour recevoir chaque jour du contenu génial dans votre boîte Email et ne rater aucune nouvelle du magasin.

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

Partagez ce contenu sur
Étiquettes: