Hlavní navigace

Příchod hackerů: Y2K – apokalypsa, která nebyla

25. 3. 2014
Doba čtení: 7 minut

Sdílet

Nebyl to slavný virus ani červ. Nestvořil jej žádný konkrétní hacker ani programátor. Přesto byla chyba roku 2000, neboli Y2K, jednou z největších hrozeb, jíž se veřejnost na přelomu století v souvislosti s informačními technologiemi obávala. Nakonec byly i přes předchozí paniku problémy minimální.

S tím jak jsme se v našem historickém putování dějinami bezpečnosti, počítačů a hackingu přiblížili přelomu 20. a 21. století, nastává zvláštní situace. Můžeme se totiž vracet ke článkům, které o některých z fenoménů a témat vycházely před patnácti lety zde, na Rootu. To je i případ fenoménu, o němž jsme se již v našem seriálu zmínili, doposud jsme mu ale nevěnovali větší pozornost. Chyba roku 2000, nebo prostě Y2K, se v letech 1998 a 1999 stala vděčným tématem pro média a vcelku pochopitelně byla oblíbena i některými dodavateli IT a prodejci sad pro přežití. Y2K totiž podle katastrofických scénářů hrozila výpadkem bankovních systémů, kolapsem rozvodných sítí, haváriemi elektráren, pády letadel – zkrátka a dobře menší, větší či dokonce globální apokalypsou.

Články o Y2K z roku 1999:

Ti, kdo před patnácti lety technologiím rozuměli, se většinou nenechali vystrašit. Nepamatuji se že by se v mém okolí někdo důsledně předzásobil a trávil Silvestra 1999 zamčený ve sklepě. Naopak, novoroční oslavy roku 2000 byly velmi bujaré a pokud mi paměť slouží, tak přinejmenším na Starém Městě tehdy rozhodně výpadky proudu, odstávky vody ani jiné náznaky konce civilizace nenastaly.

Apokalypsa se tedy nekonala, dnešní třicátníci, čtyřicátníci a starší generace si ale možná vzpomenou na více či méně opodstatněná varování a úsměvné situace, které se tu a tam objevovaly nejen v médiích, ale i v každodenním životě. Koneckonců přinejmenším některým z našich přátel či známých přistála na stole nějaká ta faktura se splatností v roce 1900 a ve světě se objevovaly i případy pozvání stoletých lidí na zápisy do školky či školy, předčasné expirace nového zboží, špatně vedených záručních lhůt a další převážně naštěstí úsměvné situace. Historie toho, jak se to všechno stalo a proč se vlastně nic vážného nestalo, bude asi tentokrát zajímavější pro mladší ročníky – naše děti, nebo mladší sourozence, kteří měli v roce 1999 jiné starosti než sledování večerních zpráv nebo čtení Rootu.

Drahá paměť

Podstata problému Y2K je samozřejmě velmi prostá. Když v polovině 20. století začínaly vznikat první počítačové systémy, byla jednou z nejdražších komponent operační paměť. První komerční počítačové platformy, jako byla IBM 1401, uvedená na trhu v říjnu 1959, se dodávaly se 2 kB operační paměti (pro IBM byl systém 1401 obrovským úspěchem – během prvních pěti týdnů se sešlo přes 5000 objednávek, což bylo více, než společnost očekávala po celý životní cyklus. IBM 1401 byl pronajímán, nikoliv prodáván, za necelý půl milion korun měsíčně a používaly jej ve velkém například aerolinie).

Systém IBM 1401 byl jedním z prvních komerčních počítačů – a právě na jeho děrných štítcích se začalo pracovat s dvouciferným vyjádřením letopočtu.

Komerční programy byly v 60. letech psány v jazycích COBOL a RPG, kde byla čísla zpracována ve formě znaku – zejména v případě zápisu na děrné štítky to ani jinak nešlo. 80 sloupců standardního děrného štítku bylo limitem, do nějž bylo často nutné dostat maximum informací. A tak není divu, že programátorům často nezbylo nic jiného, než zkrátit zápis roku v datu na dvojici číslic – místo roku 1960 byl prostě zapsán jen rok 60. Protože většina aplikací zpracovávala aktuální „procesní“ data, nepředstavoval tento zápis problém. A protože se používal poměrně běžně, začali jej programátoři využívat i v situacích, kdy to nebylo úplně moudré – například data narození v osobních údajích.

A i když byly děrné štítky postupně nahrazovány magnetickými páskami (pevné disky přišly až o nějaké to desetiletí později), způsob zápisu se neměnil – a jen málokoho napadlo že za 30 nebo 40 let taková drobnost, jako je zápis roku, způsobí menší globální paniku. Ostatně kdo by očekával, že v roce 1999 budou v provozu některé ze systémů programovaných o třicet let dříve.

Y2K38

Problém byl navíc v té či oné formě přenášen i do dalších generací počítačových systémů a programovacích jazyků. Například v raných unixových systémech bylo datum ukládáno jako jedno 32bitové slovo, obvykle udávající počet sekund, které uběhly od určitého pevně daného data – jedná se o tak zvaný problém Y2K38, což napovídá že ono dvaatřicetibitové časové razítko vztažené k 1. lednu 1970 vyprší v roce 2038. Řada operačních systémů a jazyků proto přešla na razítko 64bitové, které vydrží přece jen o něco déle. Problémy se správným zápisem či manipulací s datem měla i řada aplikací včetně Microsoft Office (Excel), byť se mohlo jednat jen o „drobnosti“ typu nesprávného nastavení přestupných let na přelomech století. Problémy existovaly i v programovacích jazycích jako bylo C, Perl nebo rané verze Javy a JavaScriptu.

Samostatnou kapitolu tvořily chyby v práci s přestupnými lety – pro ně sice platí test dělitelnosti čtyřmi, nicméně existují i výjimky – právě zmíněné konce století, které musí být dělitelné taky 400, aby se jednalo o roky přestupné. To platí pro rok 2000 (byl přestupný), neplatilo to ale pro rok 1900 a nebude pro 2100. Ne všichni programátoři na to ale vždy pamatovali.

Včasná varování

Jak už to bývá, od samotného počátku se našli tací, kteří na možná rizika dvouciferného zápisu roku v datu upozorňovali. Jako jeden z prvních si možného problému všiml již v roce 1958 Bob Bemer, počítačový výzkumník v IBM, který se v té době věnoval oblasti software pro genealogii. Po následujících dvacet let se na něj opakovaně snažil upozornit nejen samotné IBM, ale i americkou vládu a organizaci ISO. To se mu částečně podařilo v případě jazyka COBOL (tzv. Picture clause), nicméně pouze ve formě doporučení a nikoliv závazného pravidla. Přestože se o problému vědělo a už od 70. let psalo, skutečné (místy nadbytečné) pozornosti se mu dostalo až koncem 80. let.

V roce 1988 bylo v rámci OSN založeno Mezinárodní centrum pro spolupráci Y2K (IY2KCC) a jeho prvního sjezdu se účastnili zástupci ze 120 zemí – financování celého projektu zaštítila Světová banka. Je otázkou, zda to byla mezinárodní snaha, velká mediální pozornost (přiživovaná do jisté míry i dodavateli, kteří vnímali obavy z Y2K chyby jako příležitost pro zakázky na výměnu či modernizaci postižených aplikací a systémů), která pomohla většinu potenciálních problémů odstranit. Pravdou ale je, že zejména ve veřejném sektoru, utilitách (především energetika) a u důležitých řídících systémů se opravě či kontrole rizik spojených s Y2K věnovala značná pozornost. Dokonce i na běžných počítačích, aplikacích či spotřební elektronice se koncem devadesátých let začaly objevovat nálepky či označení „Y2K Ready“.

Někdy byla náprava snadná – bylo-li možné nahradit v programech, souborech nebo databázích dvouciferný rok čtyřmístným číslem. U starších databází, kde nebylo možné změnit rozsah data, byl zvolen postup „re-partitioningu“ šestimístného data na třímístný rok (1999=099, 2001=101) a třímístný kód dne (pořadí dne v roce). Pokud ani to nebylo možné, používaly se doplňkové techniky, s jejichž pomocí bylo určováno, ke kterému století dané datum patří, jen v případě potřeby – tato technika označovaná jako práce s časovými okny (okno bylo vlastně jedno století) byla často z hlediska potřebných zásahů a úprav kupodivu nejjednodušší – nebyla ale považována za řešení trvalé.

(Ne)štastný nový rok

Vítejte ve škole, je třetího ledna 1900…

Prakticky všechny klíčové systémy v celém rozvinutém světě byly otestovány a případně opraveny. Apokalypsa se tedy nekonala, neznamená to ale, že by se žádné problémy neobjevily. Byly ale výrazně menší, než odhadovaly i poměrně konzervativní odhady (ty hovořily o možných lokálních výpadcích, problémech na straně obchodníků či bank a podobně).

Některé drobné incidenty se objevily už v několikadenním předstihu. Tři dny před koncem roku přestalo fungovat deset tisíc platebních terminálů HSBC a obchody, které jimi byly vybaveny, se tak musely dočasně vrátit k hotovosti a mechanickým žehličkovým imprinterům. V Česku se také před koncem roku objevilo pár faktur a vyúčtování s nesmyslným datem splatnosti (v roce 1900 namísto 2000).

Pár nepříjemných chyb pak pochopitelně přišlo s prvním lednem roku 2000. V Japonsku se chybně spustily alarmy v jaderných elektrárnách, dílčí výpadky zaznamenaly některé telefonní sítě a některé starší telefony chybně mazaly novější namísto starých SMS. V Austrálii se objevily problémy u strojků na značení jízdenek a některé webové stránky zobrazovaly 1. ledna 2000 špatně datum.

Cloud23

Jedna z mála tragédií způsobených Y2K se odehrála v Britském Sheffieldu. Kvůli chybě v programu bylo 154 budoucím maminkám zaslán nesprávně pozitivní výsledek testu Downova syndromu a dvě z nich stihly podstoupit přerušení těhotenství dříve, než se na chybu přišlo.

Je stále s námi

Rodné číslo je jedním z příkladů přetrvávající „hrozby“ chyby Y2K.

Máte pocit, že problém Y2K je čistě věcí minulosti? Pak se podívejte do svého občanského průkazu na kolonku „rodné číslo“. I v něm je rok narození uváděn pouze dvoumístným číslem. Díky tomu, že do roku 1954 bylo číslo za lomítkem pouze třímístné a poté rozšířeno na místa čtyři, je možné používat stávající rodná čísla jako jedinečný identifikátor až do roku 2054 – předpokládá se že v následujících třiceti letech (respektive dříve) bude nahrazeno jiným unikátním identifikátorem (číslem), a tak nebude problém typu Y2K třeba řešit. 

Odkazy