Proč jsou hesla v plain-textu vždy zlo?

Tvoříte aplikaci nebo eshop, který pracuje s uživatelskými účty a přemýšlíte, že budete ukládat hesla do databáze bez patřičného šifrování? Tzn. jako plain-text a nešifrovat např. technikou MD5? Zapomeňte na to, zde jsou důvody proč.

Heslo je důvěrná informace, kterou uživatel svěřuje, v plném významu části slova věřit. Většina z nich předpokládá, že uděláte jako správce vše pro to, aby bylo s jejich daty nakládáno obezřetně.  Já sám chci jako uživatel žít v představě, že ihned při prvním zadání hesla se vše schová za hvězdičky a brutálně zakóduje.

Heslo je klíč uživatele a není důležité, zda odemyká on-line hru jeho Paypal. Podle mě je mýlná představa, že lidé mají pro každou službu jiné heslo – dodnes mě straší příhoda z počátků internetů v ČR, kdy se mi jeden admin u piva chlubil, že se zkoušel hesly svých uživatelů přihlašovat na jejich e-maily a 3/4 pokusů to vyšlo…

Jako problém vnímám i poslání hesla e-mailem (tzv.pro jistotu). Je to nasnadě jako proklientský přístup (míň komplikací s resetem hesla apod.), ale je to medvědí služba. Správce tím důvěrně svěřené heslo vypouští do nebezpečných hlubin internetu. E-maily nejsou nijak zabezpečeny a nelze do důsledku domýšlet, kde všude se může uchovat jejich obtisk (putují skrz vícero serverů, zůstavají ve frontách, vracejí se jako obsah AWAY nebo UNDELIVERED zpráv apod.).

Budu taky naštvaný, když mi příjde e-mail s heslem a zrovna mi někdo jiný koukne do obrazovky / na display iPhone. Vždyť proč se heslo odjakživa skrývá za hvězdičky? Připomíná mi to anekdotu, kdy pan Roubíček svěřuje kód k vkladní knížce rabínovi, aby ho nezapomněl a rabín mu ho pro jistotu pošle napsaný na lístečku po Roubíčkově ženě.

A teď trochu paragrafů – většina eshopů zpracovává o svých zákaznicích osobní údaje (jméno, adresu apod.), dle zákona 101/2000 Sb. je jejich povinnost jako zpracovatele „přijmout taková opatření, aby nemohlo dojít k neoprávněnému nebo nahodilému přístupu k osobním údajům, k jejich změně, zničení či ztrátě, neoprávněným přenosům“ Laicky si troufám tvrdit, že poslání hesla e-mailem je na hraně.

Také nesnáším, když jsou admini příliš paranoidní a přenášejí zabezpečení alibisticky na uživatele – omezení pokusů na přihlášení, nutnost měnit si heslo co 3 měsíce a typicky vynucování velkých písmenek a čísel (viz tweet roku). Ve svém důsledku to bezpečnost snižuje.

Ani zakódování hesel vaše uživatele úplně neochrání, spíše znesnadní zneužití. Že se vám to nemůže stát? Stalo se to mnohokrát a větším, pamatuju např. Evernote či Twitter. Ano, někteří uživatelé to neřeší a mají svá hesla napsaná vedle obrazovky nebo PIN na kreditní kartě – je to však argument, aby se to neřešilo pro všechny ostatní? Já se uslintaného admina bojím.

Disclaimer: Článek vznikl jako reakce na twitter diskusi s Petrem Kováčikem, kterého sice osobně neznám, ale mám k němu velký respekt pro to, co dělá. Nechtěl jsem dále na twitteru trollovat, proto jsem cítil potřebu svůj postoj shrnout strukturovaně a s argumenty.



1647 x views.

2 komentáře: „Proč jsou hesla v plain-textu vždy zlo?“

  1. Připomnělo mi to jednu příhodu několik let zpět s jedním nejmenovaným hostingem (slovo hosting a číslovka v názvu). Těm kdosi vykradl databázi účtů (loginy, e-maily, plain-text hesla) a zveřejnil je na nějakém zahraničním fóru.
    Hosting se k tomu postavil tak, že všem uživatelům vygeneroval nová (což je rozhodně správně) 13 znaková alfanumerická hesla. Problém byl v tom, že směrem ke klientům toto komunikoval tím, že tak došlo z důvodu změny a upgradu na lepší služby.
    Typický klient neznalý pravého problému se nechtěl učit nové složité dlouhé heslo, a ve velké míře si nastavil zpět to původní (ochrana proti nastavení původního hesla samozřejmě chyběla).
    Tento fakt jsem si v té době ověřil jednoduchým skriptem (čistě v rámci výzkumného účelu), který vzal tehdy zveřejněný seznam účtů a zkoušel se přihlašovat na FTP. Po čtyřech týdnech od události se mu podařilo přihlásit na třetinu účtů.
    Pro mě je závěr jednoduchý, nepoužívat plain-text hesla.

  2. Dodnes ma hodne lidi stejna hesla na vice sluzeb. A md5 samotny je taky k nicemu – uz jsem ziskal hodne hesel z md5. A navic v dnesni dobe porad maji weby sql injection zranitelnost… Je to az k nevire. A vynuceni na hesla 8-10 znaku jedno male a jedno velke s cislici atd me tay pekne stve – to nic neresi.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *