Drücke „Enter”, um zum Inhalt zu springen.

Kurz zu … dem Jahr-2022-Fehler, der weltweit Microsoft Mailserver lahmlegte

Daniel Andreas Becker 0

Wo warst du als die Apokalypse nicht stattfand?

Wer im Jahr 1999 alt genug war, wird sich erinnern: Monatelang wurde auf den Milleniums-Jahreswechsel hingefiebert. Neben dem kontinuierlichen Aufbau einer völlig überhöhten Erwartungshaltung an die größte Silvesterparty aller Zeiten, dominierte in den Medien der befürchtete „Y2K“-Computerfehler (Y für „Year“ = engl. „Jahr“ und K für „Kilo“, also Tausend). Weil Computer mit dem Datumswechsel von 1999 auf 2000 nicht klarkamen, würde es zu weltweiten Ausfällen von IT-Infrastrukturen führen und Wirtschaft, Banken, Verkehr etc. lahmlegen. Die komplette Computer-Apokalypse stand uns demnach bevor. Am Ende war es allerdings eine mehr oder weniger normale Silvesternacht.

Jahr-2022-Fehler

Nun muss man klarstellen, dass das Problem keine reine Medienerfindung war. Dass bestimmte Kalenderdaten durchaus ein Problem für Computer sein können, hat sich gerade wieder zum Jahreswechsel 2021/2022 gezeigt. Kurz nach Mitternacht vielen in vielen Unternehmen weltweit die E-Mail-Server aus. E-Mails konnten plötzlich nicht mehr versendet werden. In den Produkten von Microsoft gab es ein Problem mit dem Datumswechsel. Die Ursache war also ein waschechter Y2K22-Fehler.

Ebenfalls zum Jahreswechsel fiel in ca. 1600 österreichischen Haushalten der Stromanschluss aus, weil computergesteuerte Schaltuhren mit dem neuen Datum nicht klar kamen. Auch hier schlug also ein Jahr-2022-Problem zu.

Der Überläufer im Computer

Wie (und wann) kommen diese Fehler zustande? Beim Jahr-2000-Problem konnte das noch leicht nachvollziehbar erklärt werden: Um Speicherplatz zu sparen haben sich viele Computerprogramme bei der Jahreszahl auf die letzten beiden Ziffern beschränkt. Statt zum Beispiel „1982“ hat man also nur die „82“ gespeichert. Die „19“ war ja ein ganzes Jahrhundert lang immer gleich geblieben. Beim Wechsel von 1999 auf 2000 springen jedoch die letzten beiden Ziffern von 99 auf 00 zurück. Man spricht von einem „Überlauf“, weil man die größtmögliche Zahl im Speicher überschritten hat.

Folglich könnten Computer mit dem Zwei-Ziffer-Speicher zwischen dem Jahr 1900 und dem Jahr 2000 nicht mehr unterscheiden. Schlimmer noch: Das Jahr 2000 wäre im Computer früher gelegen als das Jahr 1999, denn „00“ ist ja kleiner als „99“. Eine zuverlässige Berechnung ob ein Termin vor oder nach einem anderen liegt, wäre also nicht mehr möglich.

Es hilft nichts: Um dem Überlauf zu vermeiden muss man mindestens eine weitere Ziffer dazu nehmen oder eben gleich alle vier speichern. Dann hätte man zumindest Ruhe bis Silvester 9999. Im Prinzip hat man auch genau das in den 1990er Jahren gemacht. Lange bevor die Medien das Thema aufgegriffen hatten wurde Programme ausgetauscht und auf ein anderes Speicherformat umgestellt.

Das Besondere am Jahr 2022

Beim Jahr-2022-Problem, das sich bei den Microsoft-Servern eingeschlichen hat, kommt es ebenfalls zu einem solchen Überlauf. Jedoch ist es nicht mehr ganz so einfach nachzuvollziehen. Was ist der Unterschied zwischen 2021 und 2022? Dafür muss man etwas tiefer eintauchen und wissen, wie ein Computer diese Datumswerte speichert. Aber schauen wir uns zunächst an, was sich die Entwickler gedacht haben. Sie haben folgendes Datumsformat festgelegt:

YYMMDDhhmm

D.h. die ersten zwei Ziffern sind wieder die verkürzte Jahreszahl (YY), gefolgt vom Monat (MM), dann der Tag (DD), Stunden (hh) und Minuten (mm). Der 31.12.2021 um 23:59 Uhr ergibt somit die Zahl „2112312359“. Eine Minute später springt die Zahl auf 2201010000. Sieht noch nicht spektakulär aus. Das hat sich vermutlich auch der damalige Entwickler oder die Entwicklerin gedacht.

Wir müssen noch eine Ebene tiefer: Ein Computer speichert alles in Form von Binärzahlen, also Nullen und Einsen. Warum das so ist und wie das funktioniert habe ich hier im Blog schon einmal erläutert. Die Kurzform: Computerschaltkreise kennen nur „Strom an“ oder „Strom aus“, also zwei Zustände, symbolisiert durch 0 und 1. Statt dem Zehner-System (Dezimalsystem) muss er mit dem Zweier-System (Binärsystem) arbeiten. Eine übliche Speichergröße ist hierbei 32 Bit. Das ist eine Binärzahl mit 32 Ziffern. Eine Ziffer davon ist reserviert für das Vorzeichen (0 = plus / 1 = minus), damit man auch negative Zahlen speichern kann. Verbleiben also noch 31 Bit. Die größte Binärzahl, die in den Speicher passt, besteht somit aus 31 Einsen:

1111111 11111111 11111111 11111111

Rechnet man diese Binärzahl um in unser gewohntes Dezimalsystem, erhält man die Zahl:

2147483647

Und nun sieht man das Problem: Am 1.1.2022 um 0:00 Uhr entspricht die zu speichernde Zahl „2201010000“ größer als die größtmögliche Zahl im 32-Bit-Speicher. Wir haben unseren Speicherüberlauf!

Informatiker haben den besseren Kalender

32-Bit-Speicherstrukturen sind noch sehr weit verbreitet. Dennoch gab es auch zum Jahreswechsel 2021/2022 keine Computer-Apokalypse. Das liegt daran, dass es eigentlich nicht üblich ist, das Datum in der „menschenlesbaren“ Form zu speichern.

Der bei den meisten Menschen übliche „gregorianische“ Kalender ist zum Rechnen ziemlich unhandlich. 60 Sekunden pro Minute, 60 Minuten pro Stunde, 24 Stunden pro Tag, 28-31 Tage pro Monat und 365 Tage pro Jahr. Dann gibt es alle 4 Jahre einen 29. Februar. Aber nicht wenn das Jahr durch 100 teilbar ist, außer wenn es auch durch 400 teilbar ist. Das Jahr 2000 war also ein Schaltjahr, weil es eine Ausnahme von der Ausnahme gibt, die nur alle 400 Jahre eintrifft! Und als würde das nicht reichen gibt es auch noch Tage, an welchen zwischen Sommer- und Winterzeit gewechselt wird, die also nicht genau 24 Stunden haben. Ob man das berücksichtigen muss, hängt jedoch vom Standort ab. Nicht jedes Land macht bei der Zeitumstellung mit. Politik spielt hier auch eine Rolle und damit können Computer nun wirklich nichts anfangen.

Informatiker haben daher schon vor geraumer Zeit einen eigenen Kalender eingeführt, mit dem man leichter rechnen kann. Ursprünglich entwickelt wurde dies Ende der 1960er für das Betriebssystem UNIX, weswegen man auch von der UNIX-Zeit spricht. Die „Stunde 0“ wurde damals auf den 1.1.1970, 0:00 Uhr (Standard-Weltzeit UTC) gelegt. Seither werden einfach fortlaufend die Sekunden gezählt. Am 1.1.1970, eine Minute nach Mitternacht, zeigte der Computerkalender also das Datum „60“. Eine Stunde nach Mitternacht waren es bereits „3600“. Bis zum 1.1.2022 0:00 Uhr waren 1640995200 Sekunden vergangen. Diese Zahl passt noch gut in den oben erläuterten 32-Bit-Speicher. Und es gibt Hilfsprogramme, die von der Unix-Zeit auch wieder in den gregorianischen Kalender umrechnen können. Die Menschen vor den Computer-Bildschirmen bekommen daher immer ihre gewohnte Zeitrechnung zu sehen.

Der nächste Countdown läuft

Allerdings schreitet die Zeit gnadenlos voran und am 19. Januar 2038, genau um 03:14:07 Uhr UTC (in unserer mitteleuropäischen Zeitzone eine Stunde später) wird es passieren: Dann sind 2147483648 Sekunden vergangen und alle Computer, die nicht vorbereitet wurden, erleben einen Überlauf des 32-Bit-Speichers. Die Uhr springt zurück auf Mitternacht am 1.1.1970 und … naja … Computer-Apokalypse eben.

Ok – bevor jetzt jemand die Altersvorsorge stoppt oder Klopapier hamstert – so kann ich das nicht stehen lassen. Wie auch bei Y2K ist das Problem ja lange im Voraus bekannt und die Technik ist schon heute so fortgeschritten, dass wir das Jahr 2038 wohl überleben werden. Aktuelle Computer verwenden bereits 64 Bit zum Speichern großer Zahlen. Und das reicht dann immerhin 292 Milliarden Jahre lang aus. Wenn wir zu diesem Zeitpunkt immernoch Sekunden seit 1970 zählen, steht auch da ein Überlauf an. Ich werde hier im Blog natürlich davon berichten.

 

Daniel Andreas Becker

Mit etwas Verspätung wünsche ich noch ein frohes und vor allem gesundes neues Jahr!

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.