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.