USB token: pamatuje si hesla a šifruje. Útok zabere dvě a půl minuty

Nemáte-li sloní paměť na hesla, jsou vždy dvě základní možnosti. První je mít všechna hesla stejná, což je cesta sice lákavá, ale z hlediska bezpečnosti smrtící. Druhou je používat nějaké zařízení, které si veškerá hesla zapamatuje a případně i vyplní za vás. Nejpohodlnější jsou bezesporu USB tokeny, dongly nebo chcete-li, klíčenky. Jak fungují? A jsou bezpečné?

Jak skladujete hesla? Asi se budete divit, ale znám dost odborníků na vývoj softwaru, kteří mají vedle monitoru prázdný formulář vyjetý „z Excelu“ a v něm propiskou napsáno několik desítek až stovek hesel. Záda si kryjí tak, že papír čas od času ofotí a někam odnesou. Ti línější mají tabulku uloženou na nějakém externím disku (nepřipojeném k Internetu).

Existují ovšem i technologie, které se snaží hesla někam schovat a v případě potřeby je vytáhnout (či vygenerovat). Jedna možnost je software. Jak je vidět z úvodu, „vysokou“ důvěru v něj vkládají zejména ti, kdo ho sami programují (to mi připomíná, že znám řadu novinářů, kteří se odmítají dívat na televizi). Intuitivně bezpečnější se jeví hardware. Vzhledem k relativní jednoduchosti provedení a plošné dostupnosti rozhraní se začínají místo čteček čipových karet prosazovat USB tokeny (dongly, klíče). Takový USB token nabízí například Certifikační autorita PostSignum QCA (jedná se o iKey 4000 od Rainbow Technologies, které v roce 2004 pohltila firma SafeNet). Některé banky také umí použít token při přihlašování do internetového bankovnictví (třeba UniCredit Bank nabízí kombinaci digitálního certifikátu a mezi jinými Rainbow iKey 2000 či 2032, iKey 2032 používá i Waldviertler Sparkasse). Poněkud odlišný token používá Volksbank (zde ukázka)

Co všechny USB tokeny umí? Typické úlohy jsou:

  • přihlášení k pracovní stanici (PC, OS),
  • přihlášení do intranetu, extranetu, VPN,
  • autentizace při vzdáleném přístupu,
  • internetové bankovnictví, e-commerce, elektronické transakce a platby,
  • přístup do (v podstatě libovolných) internetových aplikací,
  • ukládání digitálních certifikátů a privátních klíčů, elektronický podpis,
  • šifrování komunikace (e-maily apod.),
  • obecně ukládání šifrovacích klíčů, šifrování dat.

RSA 1024-bit a osmibitový procesor

Mezi tokeny jsou poměrně velké rozdíly zejména ve funkci, možnostech a také zabezpečení. Nejjednodušší tokeny obsahují prostě paměťovou jednotku, v chytřejších zařízeních se dá najít procesor, který chrání přístup k datům a obsahuje vlastní OS a aplikační software, nejsložitější tokeny mají zvláštní procesor na kryptografické operace. Komplexní „mašiny“ se nazývají HSM, tedy hardwarové bezpečnostní moduly.

Jiné, velmi jednoduché tokeny prostě generují číslo (třeba každou minutu), které zobrazí na malém „old-stylovém“ černobílém displeji. Číslo následně uživatel jednoduše opíše do autentizačního formuláře (viz klíč používaný Volksbank u internetového bankovnictví). O něco chytřejší varianty těchto klíčů přenášejí vygenerovaný kód do PC třeba přes bluetooth nebo USB.

Pokud jsou klíče na tokenu schovány někde za procesorem a aplikační vrstvou, jedná se o lepší řešení, protože data nejsou přímo a jednoduše přístupná „zvenku“. Vstup do funkcí USB tokenu bývá zabezpečen PINem. Co takový token umí a co je zhruba uvnitř? Tak například zmíněný iKey 2032, který používají tuzemské banky (bližší informace zde).

  • přesný název produktu: iKey 2032 USM Smart Token (cena cca 1500,–)
  • kryptografický mikrokontroler: Philips 5032 (8bitový procesor)
  • zabezpečené úložiště: 32 KB
  • podpora RSA: 1024 bitů
  • standardy: PKCS#11, MS-CAPI, PS/SC

Pokud jde o podporu pro Linux, nativně by ji měly mít iKey 3000 a výš (viz notservis.cz a linuxexpres.cz), pro Mac je podpora ve verzi 3000 ve fázi testování. A když už jsme u toho, existují i OpenSource USB token projekty (jeden je zde).

Jak funguje šifrování s iKey řady 2000, najdete co možná jednoduše naznačeno na následujícím obrázku:

USB dongly 1

obr 1 – iKey řady 2000, šifrování

Jak to vypadá prakticky třeba při odesílání e-mailu? V klíči si při instalaci middlewaru musíte jednak zvolit unikátní PIN, jednak si nechat vygenerovat certifikační autoritou (VeriSign apod.) digitální certifikát. iKey potom vygeneruje privátní a veřejný klíč, veřejný zašle certifikační autoritě (token umí skladovat víc klíčů).

Pak jednoduše token zastrčíte do počítače a otevřete e-mailovou aplikaci. Po napsání zprávy zvolíte možnost podepsání a zašifrování zprávy. E-mailová aplikace se vás zeptá na PIN příslušející tokenu. E-mailový program pošle data do tokenu, kde se přibalí podpis, zpráva je zašifrována, použije se veřejný klíč příjemce a balík zašifrované zprávy, podpisu a jednorázového klíče se pošle příjemci. Příjemce dokáže zprávu rozšifrovat a její totožnost následně určit pomocí certifikační autority.

Pokud jde o autentizaci, jde zde o dvoufaktorový systém: jedním faktorem je „něco, co znám“ (PIN k tokenu) a „něco, co mám v ruce“ (samotný token). Třetím faktorem by mohlo být „co jsem“ (otisky prstů apod.), s ním se zde ovšem nesetkáme.

Laciná konstrukce dlouho nevydrží

Jak se token používá? Uživatelé si ho většinou připojí ke klíčům, takže ho mají stále s sebou. Klíč je samozřejmě nutné mít s sebou – na druhé straně, tím se také zvyšuje jeho fyzické opotřebení. Token se mezi svazky klíčů od kanceláře, domu a auta pomalu odírá a může se i podstatně poškodit. Častým používání se také může při slabší konstrukci vyviklat USB konektor a pokud budete mít „štěstí“, budete mít nakonec problém přečíst z tokenu data.

Hromadné používání tokenů uživateli testovali v MetaCentru, akademickém gridu superpočítačových center. Od tokenů však nakonec upustili. Jedním důvodem bylo fyzické opotřebení donglů, které vyústilo v jejich nespolehlivost. Mnoho aplikací nepodporovalo token jako úložiště soukromého klíče. Uživatelé museli token nosit neustále při sobě i v případě, že chtěli jen na chvíli opustit počítač. Nebyli také ochotní nosit token všude s sebou a pečlivě ho chránit proti ztrátě, uvádí MetaCentrum na svých stránkách. V praxi pak uživatelé token buď vůbec nepoužívali, nebo ho nechávali trvale v počítači, což popírá jeho bezpečnostní smysl, dodává MetaCentrum.

Pokud tedy plánujete token používat, promyslete také tyto praktické dopady na každodenní používání počítače či třeba firemní sítě.

Útok na vnitřek: stačí nůž, programátor a dvě a půl minuty

Pokud jde o bezpečnost, je k dispozici velice zajímavá studie Attacks on and Countermeasures for USB Hardware Token Devices, jejíž autoři se pokusili iKey 2000 napadnout ze všech možných stran. Z této studie vycházeli také autoři české studie Autentizační hardwarový token nové generace, odvozená prezentace zde, shrnutí zde.

Nejprve možné útoky:

  • vzdálené útoky (softwarově na dálku, využití botů apod.),
  • lokální útok – útočník má token v držení (např. ho odcizil).

První, co nás u kryptografického hardwaru zajímá, je fyzická ochrana. Jde o zamezení přístupu, pevnost, zjistitelnost případného narušení a případná odpověď (například u takového „udělátka“ jako token nejlépe úplné znehodnocení stroje). Výsledky testu nejsou moc slibné: iKey 2000 se dá otevřít kuchyňským nožem a zase složit dohromady za 30 vteřin bez viditelných stop po průniku.

USB dongly 2

obr 2 – rozlousknutý iKey 2000

Jak se ukazuje, tokeny od různých výrobců jsou zabezpečeny různě – některé jsou slušně zalepené, jiné se hned rozpadnou, některé mají po otevření pěkně přehledné obvody, které se dají snadno napíchnout, jiné mají obvody alespoň zalité epoxidem.

Uvnitř nečekejte žádné složitosti, jde o mikroprocesor, paměť a pár „drátů“ mezi tím. Autoři zmíněné studie zkoumali, jak se dá dostat k uloženým informacím za pomocí domácího vybavení „slaboproudaře“ nadšence.

První poznámka se týká procesorů – je několik typů, které pracují podobným způsobem a dávají se do podobných zařízení, což v konečném důsledku způsobuje, že tokeny jsou „na jedno brdo“. PIN, který dokáže otevřít přístup ke všemu v tokenu, je uložen na „EEPROMCE“ – tyhle paměti jsou notoricky bezpečnostně rizikové a pro výrobce výhodné z toho důvodu, že nepotřebují kolem velkou spoustu „drátů“, aby mohly fungovat. Aby se paměť EEPROM dala napíchnout, rozhodně ji není nutné z plošného spoje vytrhávat, takže po šikovné manipulaci by nemuselo být nic poznat.

Ve studii se na manipulaci s pamětí požívá EPROM programátor Needham's Elec­tronics' EMP-30. V iKey 2000 je použitá paměť 24LC64 (seriál EEPROM), k dispozici je 8 kB. Vtip je v tom, že paměť je rozšiřitelná na 128 kB, a na plošném spoji je na toto rozšíření místo, které nabízí skvělý počáteční bod pro útok. Mimochodem, iKey 2000 bývá zřejmě uvnitř zalit epoxidem, který je potřeba mechanicky nebo chemicky odstranit (pokud se pak dobře složí vnější obal, nemusí být nic vidět).

V EEPROMU iKey 2000 je skladováno jednak 64bitové číslo, které zavádí jedinečnost tokenu, a jednak až 256 ASCII string zvaný MKEY, který tvoří administrátorské heslo tokenu (hlavní PIN). MKEY je přitom zahashovaný MD-5 a potom z půlky „obfuskovaný“ nějakým vnitřním algoritmem. Na ten je potřeba přijít. Udělá se to tak že do EPROMU se pošle známý zahashovaný MKEY (hash dělá při běžném provozu software v PC) a sleduje se, jaký z půlky „zaobfuskovaný“ MKEY z toho vypadne. Při chytře zadaných hodnotách a pár iteracích se dá přijít na vnitřní algoritmus a přihlásit se k iKey jako administrátor (a tím se dostat ve veškerému obsahu uvnitř). Celou tuto operaci lze provést v čase kolem dvou minut.

CIF16

Krom barbarského útoku se šroubovákem a programátorem lze na iKey 2000 provést také neinvazivní útok – token se prostě připojí k PC a sleduje se komunikace, využívá se Brute-force útok na uhádnutí PINu a podobně. Užitečné je dostat se také k SDK (u iKey 2000 zřejmě není problém). V zásadě je možné zkoumat komunikaci od PC do USB a obráceně, posílat postupně pakety v celém prostoru, aby se našly skryté příkazy (např. různé tovární nastavení a čtení a podobně), případně posílat nevalidní pakety a zkoumat odezvu. K sofistikovaným fintám patří časová a výkonnostní analýza početních operací probíhajících v tokenu (např. různý odběr proudu při sčítání/násobení).

K trikům, které napůl zasahují fyzicky do obvodu, patří třeba starý trik s podchlazením, kdy se zjišťuje, co si paměť pamatuje při odpojení od zdroje. Když to uzavřeme, iKey 2000 případně 2032 je poměrně běžně využívaný na zabezpečení internetového bankovnictví a představa, že si ho někdo na chvíli „vypůjčí“ (znáte to…kam jsem ho jen dal…a druhý den je v jiné kapse…no, jo, proto jsem ho nemohl najít…) a vyrobí si duplikát, s kterým se dostane na stejná místa jako já, není zrovna příjemná… No není lepší tabulka na papíře vedle monitoru?

Anketa

používáte/používali jste někdy nějaký typ bezpečnostních tokenů?

31 názorů Vstoupit do diskuse
poslední názor přidán 31. 7. 2013 7:52

Školení Jak vytvořit rychle jednoduchý web

  •  
    Jak mít na Internetu blog.
  • Jak si založit web na Wordpressu.
  • Jak pokračovat v jeho provozování.

Detailní informace o školení Jak vytvořit rychle jednoduchý web »