Jak je to s hesly (nejen) na webu

Internet mě překvapuje denně. O to víc je situace nemilá, když jde o to, jak se internetové aplikace chovají k mým osobním informacím, konkrétně k heslu.

Do internetového obchodu CZC jsem se už dlouho nepřihlašoval. Když jsem to po delší době zkoušel, zjistil jsem, že si prostě nevzpomenu na heslo. Použil jsem tedy magický odkaz „zapomenuté heslo“ a nemohl se vynadivit, že mi e-mailem přišlo moje původní heslo v čistém textovém formátu. To je špatně a od tak velké firmy, jako je CZC bych rozhodně čekal lepší přístup.

Přístup poskytovatelů služeb

To, že mi přišlo e-mailem staré heslo znamená jednu věc – CZC má v databázích obchodu hesla uložena v čistém textovém formátu. Pokud by se teoreticky někdo dostal k databázi, může si přečíst hesla všech uživatelů. Vzhledem k tomu, že většina uživatelů internetových aplikací používá stejné heslo na různých stránkách, situace se začíná přiostřovat – ten, kdo hesla získá, může jednoduše (pokud ví i pár informací o osobě, kterou chce napadat) procházet účty nebožáka a zle je poškodit, nebo zneužít. Napadlo mě, proč poskytovatelé internetových služeb, kde je potřeba přihlašování, neinformují své uživatele o úrovni zabezpečení. Bojí se snad FUD efektu? Snížení návštěvnosti? Kolik úsilí by stálo, zabezpečit data ve svých aplikacích alespoň těmito způsoby:

Hesla do databáze ukládat jako výstup hashovací funkce

hashovací funkce má pro jakýkoliv řetězec různý výsledek (v ideálním případě, kolize jsou známy). Nezáleží na délce řetězce, může být dlouhý i stovky a více znaků. Délka hashe je přesto stále stejná (při použití stejné funkce). Nejpoužívanější funkcí je v současnosti asi algoritmus md5 – pro příklad, md5 hash řetězce finwe je 7fffe7e8bf40c3cd3549718e186dd370. Při ověřování hesla se pak porovná hash zadaného hesla s položkou v databázi (kde je uložen také hash) – pokud se shodují, přihlášení bylo úspěšné. Z takto ošetřených hesel nelze zjistit heslo původní, které by se mělo zadat do formuláře.

Hesla jsou „solena“

při hashování nastává problém – mají-li dva uživatelé stejné heslo, je stejný i hash. Pokud známe jedno heslo a jeho hash, není pak problém dohledat stejné hashe → a tudíž i stejná hesla (a divili byste se, kolik lidí si dá heslo „heslo“).
Řešením je solení – před heslo se připojí jiný text, pro každého uživatele odlišný, například přihlašovací jméno, a výsledný řetězec se prožene hashovací funkcí. pokud mají uživatelé user1 a user2 stejné heslo (např. heslo), hash soleného (user1heslo a user2heslo) se bude lišit.

Poskytovatel zveřejní informace o způsobu nakládání s daty (hesly)

Nikde na webu jsem neviděl, že by poskytovatel napsal (třeba při registraci uživatele), jak je nakládáno s hesly (krom zpovědi Seznamu.cz, těsně poté, co jistý student odposlouchal na školní síti 8 hesel a média to nafoukla do obřích rozměrů). Stačil by krátký dokument podobný tak oblíbeným prohlášením o přístupnosti, ve kterém by byl například text:

Vážený uživateli, uživatelko
v naší aplikaci neukládáme Vaše heslo do databáze v čisté podobě, ale šifrujeme jej jednocestnou šifrovací funkcí. Pokud heslo zapomenete, bude vám vygenerováno heslo nové a to zasláno e-mailem na adresu, kterou uvedete v registračním formuláři. Celý tento proces má zvýšit bezpečnost hesel našich klientů

nebo


v naší aplikaci z technických důvodů ukládáme heslo do databáze v čistě textovém formátu. Doporučujeme vám proto zvolit heslo, které nepoužíváte v jiné aplikaci…

Výše zmíněné metody samy o sobě samozřejmě nemohou zaručit bezpečnost dat v databázi, ale velmi minimalizují možnost, že se někdo dostane k čistým heslům uživatelů jinou, než social-engineering metodou.

Přístup uživatelů aplikací

Výborný článek Analyzing 20,000 MySpace Passwords (v angličtině) vypovídá o tom, jaká hesla si nastavují uživatelé amerického serveru MySpace (který poskytuje administrační rozhraní pro osobní stránky zdarma + komunitní služby). Uživatelé se přihlašují pomocí e-mailu (jakéhokoliv) a hesla (specifického pro MySpace). Převážná většina uživatelů ale zvolí hesla stejná. Když potom přijde phishingový e-mail, a nachytá se 20,000 uživatelů, útočník rázem získá hesla nejen k účtům na MySpace, ale i k mnoha e-mailovým schránkám.

Zajímavá je i statistika síly (složitosti) hesla – nejčastěji mají hesla 6–7 znaků, jsou pouze malými písmeny a obsahují čísla. Silné heslo je ale pramálo užitečné, když ho používáte všude a třeba jen jedna z aplikací má mizerné zabezpečení (viz výše). Pak se „hacker“, který získá vaše heslo, dostane na všechny vaše účty – při nejhorším, je-li hodně šikovný a vy nemáte různá hesla, třeba i k tomu bankovnímu. I zde ale stačí dodržovat několik jednoduchých pravidel:

Používat různá hesla

jednoduše, nepoužívejte pro aplikace, u kterých neznáte způsob zabezpečení, stejná hesla.

Používejte silná hesla…

…a slabší jen při problémech s pamětí

Rozdělte si internetové (a jiné) aplikace podle důležitosti. Pro každou důležitost používejte jiné heslo (s důležitostí může růst i síla hesla):

Autor článku výše používá nejméně sílu hesla 3, a to i pro fóra a „nedůležité“ weby. Pro bankovnictví vždy 4.

Další rady a poznatky
14. 11. 2006, 23.48 - Computer$

Komentáře

RSS feed komentářů k tomuto článku

1.kukulich » 15. 11. 2006 9.33 » Reagovat

Tak Czech Computer mě před nedávnem překvapili úplně stejně. Minulý týden navíc uplně stejně i Kasa. Skoro už mám pocit, že u internetových obchodů je to nějaký standard.


2.eda » 25. 6. 2007 12.25 » Reagovat

To me se treba docela libi system ebnky.Tamsi clovek dokonce hesla ani nevybira sam.ALe jsou mu pro kazde prihlaseni ci operaci generovana a zasilana na mobl(pokud ma pristup pres mobil)


Reagujte!
Jméno e-mail (nezobrazí se)
web 3 plus 2 je

Jak komentovat?

  • Tady formátuje Texy! Co a jak se dozvíte v dokumentaci syntaxe
  • příklad: *kurzíva* **tučně** "text odkazu":http://finwe.info
  • Na nový odstavec jsou potřeba DVA entery!