Vliv architektury kryptografických prostředků na bezpečnost Kryptografie v klidu a bezpečí Tvrzení o tom, že když dva dělají totéž, nemusí to být vždy totéž, patří bezesporu mezi nejstarší lidovou moudrost. Jako správný axiom se přitom tento výrok velmi dobře uplatňuje i na takové obory, které vznikly až dávno po jeho vyřčení. Mezi ně patří bezesporu i kryptografie a cílem následujícího seriálu bude ukázat proč. Bývaly doby, kdy se zájem kryptologů soustředil zejména na návrh a analýzu základních kryptografických schémat, jako jsou šifrovací algoritmy, podpisová schémata, autentizační protokoly a podobně. Zřídka pak byla věnována stejná pozornost vzájemnému propojovaní těchto mechanismů a téměř vůbec žádný zájem pak nebudila otázka jejich vlastní fyzické realizace. Zhruba od roku 1996 (vyjma tajných agentur) patří však již tyto názory toliko do kryptologických muzeí a kronik. Důvod je prostý – pokud studujeme pouze základní matematický popis vybraného mechanismu bez uvážení jeho fyzické realizace, tak se vlastně pohybujeme v abstraktním světě, který se od toho skutečného, ve kterém je nakonec navržený prostředek používán, více či méně liší. Náš pohled je tak určitým způsobem zastřen a může se snadno stát, že neuvidíme lecjaké závažné nedostatky. Celou situaci názorně ilustrují obrázky 1 a 2. Na prvním vidíme studovaný mechanismus tak, jak si jej představujeme v abstraktním matematickém světě, ve kterém byl tento navržen a analyzován. Na druhém obrázku je pak vyobrazen týž mechanismus, avšak již s uvážením příslušných implementačních detailů. Zjednodušeně můžeme konstatovat, že rozdíl zde spočívá v tom, že na druhém obrázku jsou vidět komunikační kanály, se kterými autor nepočítal a po kterých se mohou šířit informace, o nichž neměl kryptoanalytik zkoumající úroveň bezpečnosti ani tušení. Navíc se ukazuje, že tyto kanály mohou být za určitých okolností obousměrné. Útočník tak může nejen sledovat vnitřní chování napadeného systému, ale může jej dokonce i přinutit k tomu, aby svůj vnitřní stav podle jeho vůle změnil. V takovém světle se pak může ukázat "papírově" kvalitní kryptoschéma jako naprostý outsider. Souvislost s úvodním příslovím je nyní již nasnadě, neboť pohled na obrázku 2 nám jasně říká, že pokud budeme mít dvě zařízení, která implementují stejný kryptografický mechanismus se stejnými parametry, tak to ještě neznamená, že obě zařízení jsou stejně bezpečná. Vždy totiž bude záležet ještě na způsobu jejich vlastní konstrukce. Začalo to léta P. 1996 Patrně jednou z prvních prací, které se vážněji zaobíraly vlivem architektury kryptografických prostředků na jejich bezpečnost, byl článek [KOCH96]. Jeho autor si v něm všímá užitečnosti informace, kterou útočník získá měřením doby kryptografické transformace využívající jemu neznámý privátní klíč (takzvaný Timing Attack – TA). Ukázalo se, že tato informace může být velmi cenná a že může vést k odhalení privátního klíče u kryptografických mechanismů, jako je RSA, Diffie-Hellmanův protokol nebo podpisové schéma DSS. Podrobněji se tomuto druhu útoku budeme věnovat později v samotném článku. Patrně ve stejném roce byl uveřejněn i příspěvek [ANKU96], jehož autoři sice méně formálním, zato však důrazným způsobem upozorňují na možnost využití kanálů z obrázku 2 k napadení čipových karet. Zpochybňují zde zejména do té doby vžité dogma, že čipová karta je autonomní zařízení, jehož fyzické ochrany poskytují vnitřním kryptografickým mechanismům dostatečnou ochranu před vnějšími útočníky. Zatímco útok typu TA chápal kanály z obrázku 2 jako jednosměrné (útočník pouze "četl" dobu provádění výpočtu), ukazují autoři tohoto příspěvku i možnost neautorizovaného ovlivňování operací probíhajících v napadeném zařízení a následky z toho plynoucí. Pro ilustraci si vezměme příklad, který má podle [ANKU96] skutečný základ v oblasti útoků na předplacené TV karty. Uvažujme, že v napadeném zařízení existuje následující sekvence příkazů, která se používá například k sériovému zasílání výstupních informací: 1. b = adresa_výstupního_pole 2. a = délka_výstupního_pole 3. if (a == 0) goto 8 4. Vyšli(*b) 5. b = b+1 6. a = a-1 7. goto 3 8. ....//pokračování kódu po skončení vysílání Cílem útočníka je zde ovlivnit chování procesoru v napadeném zařízení tak, aby buďto ignoroval podmíněný skok na řádku 3, nebo aby se neprováděla dekrementace čítače v bodě 6. Toho lze dosáhnout například krátkým napěťovým impulzem nebo krátkou poruchou na hodinovém signálu – konkrétní technika silně závisí na konstrukci zařízení (nejčastěji se jedná o čipovou kartu). Pokud se toto povede, potom je možné použít původně neškodnou sekvenci příkazů určených k výstupu nějakého běžného hlášení k vyčtení obsahu paměti za hranicí odesílané sekvence. Při troše štěstí se tak může útočníkovi podařit získat tajné klíče nebo jiné senzitivní hodnoty. Snaha o formální popis Stejně jako v případě ostatních kryptoanalytických technik, byly i útoky založené na využití fyzikálních vlastností napadeného zařízení z počátku chápány jako zvláštní druh invence a snahám o jejich formální popis a studium nebylo (s výjimkou [KOCH96]) věnováno příliš mnoho pozornosti. Postupem času se však ukázalo, že tyto útoky tvoří natolik zajímavou kategorii, že stojí za to věnovat se jim v obecné rovině. Bohužel to neznamená, že bychom dnes měli veřejně k dispozici nějaký zvlášť dobrý teoretický materiál z této oblasti. Většina autorů si totiž příliš dobře uvědomuje cenu takovýchto informací, takže po prostudování honosně vyhlížejícího pramenu čtenář leckdy zjistí, že se vlastně nic nového nedozvěděl. Nicméně máme již k dispozici alespoň základní taxonomii možných útoků tohoto typu, která je zhruba následující: 1. Timing Attack (TA); 2. Simple Power Analysis (SPA)/Differential Power Analysis (DPA); 3. Differential Fault Analysis (DFA); 4. využití ostatních zdrojů parazitního vyzařování. Do první kategorie patří už zmíněný Timing Attack, který jsme si již v hrubých rysech představili. Druhou skupinu tvoří útoky orientované na sledování spotřeby energie. Odtud je pak obdobně jako v případě TA možné útočit na neznámý šifrovací klíč (symetrický nebo asymetrický), který je obsažen v napadeném zařízení. Konkrétně se popisem útoků SPA a DPA budeme zabývat v samostatném článku. Třetí kategorie se zaobírá studiem vlivu chyb během výpočtu, jehož některé vstupy představují tajné hodnoty, na bezpečnost těchto informací. Může se přitom jednat jak o chyby uměle vyvolané (rozšíření výše popsaného útoku na vysílací proceduru), tak o chyby nastávající náhodně vlivem "běžných" poruch v zařízení. Stejně jako v případě předchozích tříd, i tato si zaslouží rozebrání ve zvláštním dílu tohoto seriálu. Poslední třída je jako vždy rezervována pro nově vznikající druhy útoků. Lze například očekávat (tajné služby už opět jistě po řadu let vědí své) obdobu DPA orientovanou na sledování elektromagnetického vyzařování, a to v libovolné části spektra (možná že někdy bude zajímavé sledovat i tepelné záření vybraných obvodových částí). Ostatně i náš ilustrační experiment bude v tomto dílu o tom, jak lze využít vyzařování běžného monitoru k vynášení tajných informací. Ještě jedna klasifikace Kromě výše uvedeného dělení útoků podle toho, jaké informace a jak se vyhodnocují, bude pro další výklad užitečné zavést ještě jedno klasifikační schéma, které nám bude říkat, jak velkou kontrolu musí útočník nad napadeným zařízením mít. Zde zavedeme dvě nezávislá dělení, a to: 1. podle kontroly nad probíhajícím výpočtem: a. pasivní – útočník pouze sleduje jeho průběh, b. aktivní – útočník má možnost do výpočtu zasáhnout; 2. podle způsobu přístupu k zařízení na: a. neinvazivní – není narušena žádná z fyzických ochran, b. invazivní – některá z fyzických ochran je narušena. Uvedené členění nám později pomůže lépe se orientovat v tom, za jakých okolností může konkrétní typ útoku nastat. Například odleptání ochranné vrstvy u čipové karty a připojení se k vnitřním sběrnicím procesoru za účelem sledování procházejících dat je příkladem pasivního invazivního útoku. Zajímavý experiment Jako ilustrační příklad existence na první pohled skrytých komunikačních kanálů si nyní popíšeme experiment, který byl proveden na univerzitě v Cambridge a je popsán ve zdroji [ANKU98]. Ukážeme si, jakým způsobem lze vyzářit zvolenou informaci ze sledovaného zařízení. Ta může v praxi představovat například šifrovací klíče, které chce vynést program typu trojského koně. Pro přenos informace jde zde využit kanál vytvořený vysíláním amplitudově modulovaného (AM) signálu, přičemž jako vysílač je použit běžný monitor běžného PC. Nejprve si v krátkosti připomeňme, jak vypadá časový průběh amplitudově modulovaného signálu. Označíme-li amplitudu tohoto signálu v čase t jako s(t), potom můžeme psát: s(t) = A*cos(2(fct)*(1+m*cos(2(ftt)) = A*(cos(2(fct) + (m/2)*cos(2((fc – ft)t) + (m/2)*cos(2((fc + ft)t) ) V uvedeném zápisu jsme označili amplitudu signálu jako A, hloubku modulace jako m, nosnou frekvenci jako fc (carrier) a frekvenci modulovaného signálu jako ft. Vidíme, že na rozdíl od přenosu hlasového signálu zde předpokládáme přenos velmi jednoduchého signálu kosinového průběhu. To však pro nás nepředstavuje vážnější omezení, neboť se zaměřujeme výhradně na přenos digitálního signálu. Pro tento účel můžeme použít například frekvenční modulaci (přesněji FSK – Frequency Shift Keying, neboť frekvenční posuv je zde diskrétní) přenášeného kosinového průběhu tak, že frekvence ft bude odpovídat hodnotě 1 a frekvence ft' (ft' ( ft) bude znamenat hodnotu 0. Možný způsob realizace uvedeného frekvenčního posuvu si uvedeme dále. Z výrazu pro průběh s(t) je velmi dobře patrné známé rozdělení frekvenčního spektra AM signálu na nosnou frekvenci ft a frekvence takzvaného dolního a horního postranního pásma fc-ft a fc+ft. Graficky toto pozorování ilustruje obrázek 3. Ačkoliv tato vlastnost AM signálu nebyla v původním experimentu využita, je vhodné zde na ni upozornit, a to z následujícího důvodu: z poměrů amplitud signálů na uvedeném obrázku vidíme, že největší energii spotřebovává vyzáření periodického signálu s frekvencí fc, který však nenese žádnou užitečnou informaci (je na ft nezávislý). Proto je při praktickém přenosu AM signálu celkem běžné, že se před vysíláním nosná frekvence spolu s jedním postranním pásmem potlačuje a místo nich se vysílá pouze horní, respektive dolní postranní pásmo. Výsledkem je efektivnější využití výkonu vysílače. Nevýhodou je zase nutnost obnovení původní nosné frekvence na straně přijímače, což nemusí být technicky jednoduché (zvláště pokud původní nosná frekvence není příliš stabilní). Nemožnost použít běžně dostupný AM přijímač spolu s technickou náročností byl patrně důvodem k tomu, že se autoři popisovaného experimentu tomuto druhu přenosu vyhnuli. V případě zdokonalování jejich pokusu za účelem skutečného nasazení pro špionáž by však nebylo marné tento postup zvážit. Nyní se zabývejme tím, jak signál s(t) vyzářit pomocí monitoru PC. Abychom si na tuto otázku mohli dát přesnější odpověď, musíme se nejprve seznámit se základními parametry, které se vztahují k procesu zobrazování údajů na monitoru. Základním údajem je bodová frekvence fp, jejíž převrácená hodnota určuje dobu posuvu paprsku z bodu (x,y) do bodu (x+1,y). Na základě této frekvence můžeme definovat řádkovou frekvenci jako fh = fp/xt, kde xt je horizontální rozlišení obrazovky (včetně takzvaných skrytých bodů). Analogicky můžeme zavést ještě snímkovou frekvenci jako fv = fh/yt, kde yt představuje vertikální rozlišení (včetně skrytých bodů). Viditelnou oblast na stínítku popisuje horizontální rozlišení xd a vertikální rozlišení yd (obě hodnoty jsou vyjádřeny v bodech). Z technologických důvodů je toto rozlišení menší než rozlišení udané hodnotami xt a yt. Čas, který by byl potřeba pro zobrazení bodů, o které se tato rozlišení v příslušných směrech liší, se totiž využívá pro návrat elektronového paprsku obrazovky na začátek dalšího řádku, případně na první řádek obrazovky (řádkové a snímkové zpětné běhy). Sedmice hodnot (fp, fv, fh, xt, yt, xd a yd) je pro současné monitory proměnlivá a závisí na tom, jaký zobrazovací mod je právě nastaven. V některých operačních systémech přitom tyto hodnoty zjistíme snáze, v některých hůře. Poměrně dobře je lze získat například v Linuxu, kde můžeme v souboru /usr/lib/X11/XF86Config (nebo jeho alternativě pro jiný X-server) najít řádek typu: ModeLine "1152x900" 95 1152 1152 1192 1472 900 900 931 939 Z tohoto řádku je možné poznat, že uvedený režim používá fp = 95 MHz, xd = 1152, yd = 900, xt = 1472, yt = 939. Frekvence fh a fv je možné stanovit výpočtem dle výše uvedených vzorců jako fh = fp/xt = 64,5 kHz a fv = fh/yt = 68,7 Hz. Na základě znalosti uvedených hodnot můžeme určit stěžejní vztah, který udává čas, ve kterém se bude vyskytovat elektronový paprsek v místě bodu (x,y), kde 0 ( x ( xd, 0 ( y ( yd a v čase t = 0 předpokládáme, že je paprsek v pozici (0,0). Pro čas dosažení obecného bodu (x,y), který označíme jako t(x,y), můžeme psát: t(x,y) = x/fp + y/fh + n/fv, n ( Z. Člen n/fv souvisí s periodickým obnovováním obrazu, význam ostatních členů v uvedeném výrazu je zřejmý. Označme si dále a(x,y) hodnotu atributu, která je nastavena pro bod o souřadnicích (x,y). Chceme-li, aby elektronový paprsek (spolu s obvodovou částí monitoru) při vytváření obrazu na stínítku zároveň vyzařoval námi zvolený signál, musíme dosáhnout toho, aby hodnota atributu a(x,y) odpovídala amplitudě vyzařovaného signálu v čase t(x,y), čili a(x,y) ~ s(t(x,y)). Aby nedocházelo k nežádoucím fázovým posuvům emitovaného signálu při přechodu na nové snímky, je dále vhodné, aby hodnota 1/fv byla celistvým násobkem periody signálu s(t). V našem případě to znamená snažit se o to, aby fc a ft byly obě celočíselnými násobky fv. V popisovaném experimentu bylo konkrétně použito barevné rozlišení odpovídající 8 bitům šedi a pro určení hodnoty atributu byl použit vztah a(x,y) = (255/2 + s(t(x,y)) + R(, kde R je náhodná veličina s rovnoměrným rozdělením na intervalu <0,1), která má za úkol rozprostřít šum vzniklý kvantizací průběhu s(t). Pro vysílaný signál byly zvoleny parametry A = 255/4, m = 1, fc = 2,0 MHz a dvě alternativní frekvence ft = 300 Hz a ft' = 1200 Hz. Takto vysílaný signál bylo možné přijímat na jednoduchém AM přijímači, který dle slov autorů po naladění na nosnou frekvenci 2,0 MHz zřetelně reprodukoval tón o frekvenci 300 Hz, respektive 1200 Hz v celém prostoru laboratoře a přilehlých místnostech (nákres bohužel autoři neuvádějí). Čili zvolenou informaci se ze sledovaného PC skutečně podařilo vyzářit a přijmout. Je důležité poznamenat, že se jednalo opravdu o velmi jednoduchý přijímač, který byl vybaven pouze základní neladěnou feritovou anténou. Dále je zajímavý fakt, že v místech, kde se již signál začínal ztrácet, pomohlo přiblížit přijímač k silovému vedení, na které byl testovaný počítač s monitorem napojen. To názorně ukazuje na to, kudy všude mohou informace z běžícího počítače "prosakovat". Pro reprodukci tohoto experimentu je třeba uvést, že běžně dostupná rádia podporují již pro AM jen rozsahy 531 až 1602 kHz (MW) a 153 až 279 kHz (LW), což znamená buď upravit parametry experimentu, nebo se orientovat na méně běžné typy přijímačů. Vyšší frekvence se přitom zdají být (s ohledem na konstrukční uspořádání) lepší. Pokud nejsme limitováni použitým typem přijímače, potom se jako nejlepší pásmo pro přenos informace tímto způsobem jeví rozsah 3 MHz až 30 MHz. Konkrétní využití této techniky je možné spatřovat zejména v neautorizovaném vynášení citlivých informací z napadeného počítače, které může provádět například nějaký útočný program typu trojského koně. Při použití FSK pro přenos digitálních úrovní a vhodném bezpečnostním kódování je možné takto dosáhnout přenosové rychlosti kolem 50 b/s. Pro frekvenční posuv přenášeného signálu je zde možné s výhodou použít stejný trik, jaký se používá pro obrazovou animaci – do dvou oddělených oblastí videopaměti si program útočníka připraví obrazce pro ft a ft'. Nastavením jedné z těchto oblastí jako aktivní potom může snadno a hlavně rychle volit, jaká frekvence (neboli logická úroveň) se má na nosnou frekvenci modulovat. Na první pohled není uvedená přenosová rychlost příliš optimistickým znamením pro útočníky, avšak je třeba si uvědomit, že tohoto útočníka budou pravděpodobně ze všeho nejvíce zajímat klíče, které jsou použity pro kryptografické zabezpečení dat, se kterými daný systém jako celek pracuje (vlastní data potom získá odšifrováním šifrových textů, které jsou již "volně" k dispozici). V takovém případě je tato přenosová rychlost zcela postačující. K právě popsanému experimentu ještě poznamenejme, že pro jednoduchost jsme se zde stejně jako autoři [ANKU98] omezili pouze na využití monochromatického signálu. Naprostá většina současných monitorů je však barevná a využívá RGB obrazovky, které jsou vybaveny třemi paralelními katodami, jež v daný okamžik nezávisle vyzařují příslušnou složku barevného signálu (katoda pro červenou, zelenou a modrou barvu). Každému z těchto paprsků navíc náleží separátní řídicí obvod. To vše znamená, že použitím barevného signálu bychom teoreticky mohli vyzařovat naráz tři různé průběhy sR(t), sG(t) a sB(t) a vytvořit tak tři nezávislé paralelní kanály pro vynášení informací z napadeného PC. Závěr V prvním z pojednání o souvislostech mezi architekturou kryptografických zařízení a jejich bezpečností jsme si ukázali základní hrozby, které se v této oblasti vyskytují. Ukázali jsme si, že současnou kryptologii je třeba chápat jako interdisciplinární obor, ve kterém se ve vhodném poměru (dle momentální potřeby) mísí jak znalosti povahy ryze matematické, tak i vědomosti o fyzikální povaze konstruovaných zařízení. Kromě elementární klasifikace studovaných útoků jsme si popsali experiment, který prakticky ukazuje existenci a nebezpečnost parazitního vyzařování běžných kancelářských počítačů. V následujících pokračováních se budeme postupně zabývat jednotlivými druhy útoků a možných obran proti nim. Tomáš Rosa tomas.rosa@decros.cz literatura [ANKU96] Anderson, R., Kuhn, M.: "Tamper Resistance – a Cautionary Note", 2nd USENIX Workshop On Electronic Commerce, 1996. [ANKU98] Anderson, R., Kuhn, M.: "Soft Tempest: Hidden Data Transmission Using Electromagnetic Emanations", Information Hiding '98. [KOCH96] Kocher, P.: "Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems", CRYPTO '96. [CRYPTO] http://www.decros.cz/security_division/crypto_research/archiv.htm