Mě se moc líbí myšlenka použitá v Yubikey - token se pro počítač tváří jako klávesnice, jednorázové heslo vypustí jako sérii stisků kláves, takže heslo může být hodně dlouhé a uživatel nemusí nic přepisovat.
Má to trochu mouchy (preferoval bych asymetrickou šifru místo AES), ale jinak je to výborná věcička. Podrobněji jsem o tom psal zde: http://www.pepak.net/bezpecnost/yubikey-v2-0/
Ja jsem mel s Yubikey dva problemy: prvni z nich je, ze pokud bych chtel mit jeden token, musim mit centralizovany server, a autentizace je pak nepouzitelna pro systemovou administraci v pripadech, kdy se treba chci prihlasit na "polofunkcni" stroj, kteremu zrovna nefunguje neco v siti, a neni mozna komunikace s autentizacnim serverem. To bych fakt musel mit jeden token pro kazdy server (krat pocet spravcu) a navic bych se nedostal na servery ze ssh klienta z mobilu. Druhy problem se tyka meho domaciho pocitace, ktery je multiseat, a zatim jsem nevymyslel zpusob, jak nastavit, ke kteremu sedadlu se ma pripojit prave zapojena klavesnice (ten token). Skutecne klavesnice mam v xorg.conf mapovane staticky.
Premyslim, proc se treba poradne neujal system dle RFC 2289. Vyhod je spousta:
+ Nevyzaduje specialni hardwarovy token - existuji implementace (kalkulatory) pro vetsinu OS vcetne tech urcenych pro mobily (napr. Opiekey pro Android, 1Key pro iPhone). Proc se tahat s necim dalsim, kdyz mobil mam pri sobe takrka porad?
+ Bezpecnost - klicem ke generovani jednorazovych hesel je tajne uzivatelovo heslo, ktere neni ulozeno ani na serveru, ani v generatoru jednorazovych hesel. Jedine misto, kde je tajne heslo ulozeno, je uzivatelova hlava. Ztrata mobilu tudiz nema zadne nasledky a kompromitace dat na serveru nevede ke kompromitaci na jinem serveru, ktery uzivatel pouziva.
+ Jedno uzivatelske heslo - pro autentizaci na x serverech si uzivatel potrebuje pamatovat pouze jedno heslo. Diky rozdilnym seminkum (seed) jsou jednorazova hesla pro kazdy server rozdilna.
+ Absence nutnosti synchronizace - uzivatelsky kalkulator si nemusi pamatovat zadna data. Cislo sekvence a seed posila serverova cast pri kazde zadosti o autentizaci. Z toho taky vyplyva moznost pouzit rozdilne kalkulatory pro prihlaseni k jednomu serveru.
+ Jeden kalkulator... lze pouzit pro autentizaci na neomezenem poctu serveru/systemu.
+ Nulove naklady pro uzivatele - vetsina kalkulatoru je zdarma.
+ Nizke naklady pro serverovou cast - implementace serverove casti je vcelku trivialni jelikoz existuji knihovny pro vetsinu programovacich jazyku.
+ Nezavislost - pro autentizaci neni treba treti strana. Jak generovani sekvence jednorazovych hesel, tak autentizace je ciste zalezitosti serveru a klienta.
Ukazkou (ne uplne bezchybne) implementace tohoto systemu budiz plugin pro Wordpress.
Mně před nějakým časem docela zaujaly "kartičky" firmy Savernova. Vytisknete si takovouhle kartičku:
http://www.savernova.ch/online-password-card/logowebcard.php?id=159&lang=en
a zvolíte si způsob "čtení" od zadaného místa (třeba dva znaky zdola nahoru čtyři zprava doleva). Způsob čtení si musíte samozřejmě pamatovat. Na serveru, který vás autentizuje, musí být nastaveno číslo vaší kartičky a váš způsob čtení. No a pak na výzvu třeba "D5" zadáte příslušné znaky z kartičky.
Celkem vtipná náhrada seznamu jednorázových hesel na papíře.
P.S.: Se společností Savernova nemám nic společného.
Problém podobných "kartiček" je možnost snadného okopírování - stačí jedna fotka a máte to, postižený vůbec nemusí tušit, že to někdo udělal.
A pak už stačí sledovat, případně sniffovat - šance na odvození způsobu čtení je slušná.
Tohle je zásadní rozdíl třeba proti různým HW tokenům - u něj i když třeba vypozorujete/odposlechnete PIN, tak se stejně do daného systému nedostanete bez daného HW. Ten sice lze ukrást, jenže tam je velká šance, že to poškozený zjistí a začne řešit blokování atd., u pouhé kartičky s písmeny se ale o její kopii skutečně vůbec nemusí dozvědět...
To je pravda. Není to asi na to, abych si v práci nechal tu kartičku nalepenou na monitoru. Ale na víceméně jednorázové přihlášení se někde na letišti, v internetové kavárně nebo u kamaráda na nešifrovaném WiFi je to alespoň pro mne blízko ideálu. Každopádně je to lepší, než přemýšlet, zdali jsem při poslední systémem vynucené změně hesla dal "password1" nebo "password2" :-). Také keylogery to, řekl bych, spolehlivě odfiltruje.
<blockquote>Pokud nepřijmeme dodatečná opatření na straně serveru (který si např. bude pamatovat hesla zadaná v poslední době a opakované zadání odmítne), může odposlouchávající útočník jednorázové heslo zneužít ke druhému přihlášení, bude-li dostatečně rychlý.</blockquote>
Heslo u RSA SecurID se chová jako opravdové OTP, systém ho přijme jen jednou. Pokud se heslo zadá podruhé, vyhodí to chybu, jako by bylo špatně, tudíž v citaci naznačený útok není možný.
Telefonica má token zase na SIM kartách:
http://www.o2.cz/pa/191737-managed_security/150888-tech_info.html
Komerčně to nabízí ve spolupráci s tímto projektem: http://www.one-id.cz/
Taky zajímavé řešení?