A co kdybych seřadil všechny zmíněné snadno dohledatelné údaje za sebou a vytvořil třeba heslo "jirkaalik16081978rockfrantiskanskapanprstenujoanjettalza" - jaká by byla šance na prolomení? Ano, bylo by relativně dobře prolomitelné pokud by měl útočník vzorec - seznam snadno dohledatelných údajů z tohoto článku. Ale bez tohoto vzorce si myslím že by moc šancí neměl :-)
Takové snahy ovšem obvykle skončí na tak složitém algoritmu a tak komplikovaném hesle, že je už jednodušší přestat vymýšlet šílenosti a heslo si vygenerovat náhodně ve správci. Nehledě na to, že se velmi komplikovaný algoritmus bude těžko vymýšlet opakovaně pro každou službu. Proč bych si měl pamatovat stovky básniček, které budu různě chytře kombinovat s náhodnými znaky, když to za mě může udělat automaticky správce hesel.
No, to je samozřejmě teorie, že security through obscurity je špatná.
Ale zvažte, jestli útočníkovi stojí za to investovat do nástroje, aby tohle pro jednoho uživatele udělal, když může po stovkách hrabat účty se jednoduše slabými hesly.
Správce hesel je super, ale kdo reálně čte důkladně kódy takového správce? Nevyplatí se zkušenému útočníkovi víc v něm najít díru a pak hesla vycucat všechna? A co ztráta dat na disku? A když mám zálohu, tak zvětšuji povrch možného útoku. Soubory vůbec jsou trochu problém, protože umožňují lepší prostor pro bruteforce master hesla, pokud se k datům správce útočník dostane, než služby, které útočníka nutí čekat a umělě mu protahují čas.
Tady jde zejména o to, co se útočníkovi vyplatí dělat.
Takhle. Žádné uložení hesel není 100% bezpečné, nikdy nebylo a nikdy nebude. Správce k tomu nabízí výhody jako synchronizace, oproti lidské obrovskou paměť a praktickou možnost se zabezpečením se zabývá spousta lidí k tomuto účelu ... Úplně stejně jako nemusíš mít peníze v bance a někomu věřit ;-)
Útočník by nemusel znát přesný vzorec. Pokud by útočník zvolil třeba dvacet údajů, které by o vás zjistil, a vyzkoušel by všechny možné kombinace, je to permutace množiny o 20 prvcích, tedy 20!, tj. přibližně 3× víc kombinací, než náhodné desetiznakové heslo z malých a velkých písmen (anglické abecedy) a číslic. V tiskové zprávě těch údajů není 20 ale jen 8, takže pokud by útočník věděl, že jste se řídil tímhle seznamem a znal ty údaje, je to jenom 8! možností – to už je odolnější náhodné trojznakové (!) heslo z malých a velkých písmen a číslic.
Bezpečnost nemůže být založena na tom, že utajíte algoritmus – to se vám totiž ve skutečnosti nikdy nepovede. A bezpečnost hesla proti útoku hrubou silou nezávisí na délce hesla, ale na počtu možností, které útočník musí vyzkoušet. To vámi uvedené heslo je sice dlouhé, ale počet možností je malý, pokud útočník ty údaje zná.
Chtěl bych jen dodat, že 10 znakové heslo i při náhodném generování poměrně krátké. Myslím, že tak od 20+ znaků je člověk při náhodném generování na pragmaticky bezpečné straně od 30+ znaků už nemá podle mě cenu zkoušet jakýmkoliv způsobem brute force, ale spíše např. zranitelnosti v softwaru nebo nějaké jiné postranní kanály, jako social engineering.
Kdyby se dalo vyloučit, že budu muset kdykoliv heslo někam ručně opsat (např. protože nefunguje copy&paste nebo nelze použít, protože se musím přihlásit k Windows/ Linuxu na cizím počítači např. s LDAP.) tak by heslo mohlo být třeba 100 znaků - prostě těsně pod limitem toho políčka.
Další věc je, že i uživatelské jméno by mohlo být náhodně vygenerované. Např. v Německu je běžné, že se na online banking přihlašujete nějakým ne-tak-úplně tajným číslem účtu a 5 znakovým (ne jenom číselným) PINem. Běžně je přihlašovací jméno tedy odvoditelné např. z IBANu. Lze ale změnit na prakticky libovolný řetězec délky myslím asi 15-16 znaků. Spolu s PINem to tedy dá slabě nad 20 znaků a najednou je to zase pro útok zvenčí (tedy bez seznamu přihlašovacích jmen, která se jistě nehashují) celkem bezpečné, protože změněné přihlašovací jméno znám jen já a možná můj poradce ve spořitelně.
Správce hesel má i tu výhodu, že pokud bych měl umřít, může můj notář, nebo někdo důvěryhodný vydat zapečetěnou zálohu mým dědicům, kteří nemusí v už i tak napjaté situaci řešit ještě to, kde vezmou potřebné údaje na organizaci té které agendy, která po mně zůstala (např. jestli byl zaplacen nájem, nastavit automatickou odpověď v emailu, že jsem umřel a na koho se obrátit etc. pp.).
To, jak je náhodně generované heslo bezpečné, není záležitostí dojmů, ale výpočtu. Počítejme pro jednoduchost, že vyzkoušení jednoho hesla se zvládne na jeden takt procesoru, takt dnešních procesorů zaokrouhlíme na nejbližší řád, takže na 10 GHz, jader procesoru můžeme počítat třeba 20, a jeden počítač na každého člověka na Zemi. To dává 1,6*1020 vyzkoušených hesel za sekundu. Když budu počítat 2*26 písmen anglické abecedy, 10 číslic a pár symbolů, dostávám 70 možných variant jednoho znaku v hesle. Do řádu 1020 se dostanu s heslem, které má 11 takových znaků. Takže takové heslo by bylo možné s takovým (značně nadhodnoceným výkonem) rozlousknout za 1 sekundu. Dvacetiznakové heslo už je 300 milionů let. Já nevím jak vy, ale já bych se tedy do útoku hrubou silou nepouštěl ani u toho dvacetiznakového hesla. I šestnáctiznakové heslo by se při využití tohohle výkonu louskalo průměrně 15 let.
Nepoznám a nezajistím. To není podstatou té myšlenky. Tou je to, že pokud webová služba umožňuje hádat hesla takovou rychlostí, že je potřeba 10 znakové heslo, je někde jiná, naprosto zásadní, bezpečnostní chyba. Jestli moje heslo má dvacet nebo pět znaků, je pak už úplně jedno. Podstatné je, jestli se dá zneužít jinde.
U dobře nastavené webové služby, bohatě stačí třeba pětiznakové heslo. U špatně nastavené je to stejně jedno.
Myslíte službu, která bude blokovat pokusy o uhádnutí hesla? U takové služby ovšem nejspíš bude snadné trvale vám zablokovat přístup – právě hádáním hesel.
Navíc když budou webové služba dobře zabezpečené, můžu všude používat jedno heslo. Správce hesel používám především kvůli tomu, že očekávám, že weby zas až tak dobře zabezpečené nejsou. Takže používám takové heslo, abych minimalizoval problém v případě, kdy dojde k úniku dat. Samozřejmě pokud utečou hesla v otevřeném tvaru, nepomůže mi sebedelší heslo.
Zabránit tomu, aby se heslo u webové služby dalo hádata rychlostí 1,6*10^20 hesel za sekundu, se dá tak, že to lidský uživatel nebude mít šanci poznat.
Jak? Mimochodem, pořád není problém hádání hesel přes tu webovou službu, ale únik hashů – pak webová služba nemá vliv na rychlost hádání, resp. ovlivňuje to jen použitá hashovací funkce.
Můj spor je především s přehnaným důrazem na kombinatorickou složitost hesla.
Jenže kombinatorická složitost je to jediné, co brání uhodnutí hesla v případě, kdy údaje pro ověření hesla má i někdo jiný, než uživatel (s čímž dnes musíte počítat prakticky u všech webů používajících hesla).
To vede často ke zbytečným požadavkům na uživatele.
Nikoli, zbytečné požadavky na uživatele vznikají tehdy, pokud je bezpečnost řešená špatně. Bezpečné heslo je dnes jenom takové, které je náhodně vygenerované, tedy to znamená použití správce hesel. Na požadavek na takovou bezpečnost jsem ještě nenarazil. Pokud jsou požadavky typu velká malá písmena, číslice, symboly apod., pořád těm požadavkům vyhoví i hesla vymyšlená uživatelem. Taková hesla jsou bezpečná jen tehdy, pokud může provozovatel webu limitovat rychlost hádání hesel, nebo-li pokud dokáže efektivně zabránit úniku hashů včetně všech náležitostí. To sice může provozovatel služby se slušnou pravděpodobností zajistit, ale já jako uživatel služby nemám šanci zjistit, zda to tak je.
Stačí nastavit prodlevu mezi pokusy na 1 sekundu. Pokud to někdo zkouší na uniklé hashe, tak jsme u toho, že je to špatně zabezpečená webová služba. V takovou chvíli už ten někdo velmi pravděpodbně má přístup k té službě jako takové. Čili kombinatorická složitost hesla mi může bý úplně jedno, mnohem důležitější je neopakovat hesla, nebo, v horším případě, si alespoň pohlídat, že tam, co na tom opravdu záleží, mám unikátní heslo.
Já jsem se ptal na tu variantu, kdy to lidský uživatel nebude mít šanci poznat. Když nastavíte prodlevu mezi pokusy na jednu sekundu, je to krásný DoS – útočníkovi stačí poslat 2× za sekundu pokus o přihlášení, a dotyčný se nikdy nepřihlásí. Myslím, že to, že se nemůže přihlásit, uživatel pozná.
Spousta úniků hesel byla např. z nějakých záloh, tj. útočník nemusí mít jiný přístup k té službě.
Kdyby byla služba dobře zabezpečená, je klidně možné všude používat stejné heslo. To, že se používají unikátní hesla, je právě z toho důvodu, že musíme předpokládat, že služba je zabezpečená špatně.
Neřekl bych.
Stejně jako u cloudu, pokud začnete používat správce hesel, je velmi těžké se vrátit zpět. Je to velmi návykové a pohodlné. A stejně jako u cloudu, nemáty ty data ve svých rukou. Pohádkám o prohlížení OSS zdrojových kódů jsem taky kdysi věřil, ale kdokoliv, kdo si jen trochu pamatuje pár posledních průšvihů s různými OSS a nebo modifikace různých oblíbených rozšíření, můsí se po nocích probouzet ze spaní. Taky používám správce hesel, ale heslo k bankovnictví nebo primárnímu emailu bych si v něm neuložil.
Proč raději nedoporučujete USB tokeny?
ivoszz: Pokud se někdo bojí cloudu proto, že je to lepší a zvykl by si, je to ještě horší, než jsem si myslel… Myslel jsem si, že ty obavy z cloudu plynou z toho, že dotyčný nemá vše pod kontrolou (a myslí si, že když to má u sebe, pod kontrolou to má).
Jinak přejít z jednoho správce hesel na jiný není těžké, je několik formátů, kterým rozumí snad všichni správci hesel. Problém je se složitějšími strukturami (pokud správce umí ukládat víc hesel do jedné položky, obrázky apod.), ale samotná hesla se přenášejí bez problémů.
Snad každý správce umožňuje export a spousta má i automatické zálohování. Výstup pak je nejčastěji CSV, někdy XML nebo JSON. Takže data ve svých rukou máte.
USB token můžete použít na webu, který to podporuje. Jaký je podíl webů, kam se přihlašujete a které to umí?
Jen malá připomínka - pokud by si útočník dal tu práci a začal o mně shromažďovat údaje, měl by jich během malé chvilky ne dvacet, ale dvě stě. A spíše ještě daleko více, protože třeba koníčků mám celou řadu, oblíbených filmů, zpěváků, zpěvaček, hudebních skupin moc moc moc. Kdyby nevěděl co použít silně pochybuji že by to heslo dal dohromady. No a ještě by v tom hesle mohla být pojistka proti takovému skládání "puzzle" - malá skupina náhodných znaků, kterou bych měl jen ve své hlavě a nikde jinde, a která by byla někde v tom hesle zakomponovaná, a byl by v koncích úplně :-)) V jednom ovšem se všemi oponentami souhlasím - pokud bych takových hesel měl mít více, asi těžko bych si je pamatoval.
To jo, ale možná to zbytečně komplikujete. Můj vnuk kolem dvou let balónu říkal bambijón. Taky (o 1/2 roku později) miluje film Auta, hlavně Bleska McQuena, má jich asi 5 a ještě nedávno mu říkal Bakakin. Taková slova v hesle z toho dělají trošku něco jako windtalkers - vy s tím nemáte problém, ale jiní jsou mimo. Některé podobné ligvistické perly si pamatuju i od svých dětí po +/- 20 letech, a teď louskači hesel, louskej.
Jenže takové heslo vám nestačí jedno – potřebujete jiné heslo pro každý účet, který používáte. To jsou desítky hesel. Pokud to řešíte tak, že pro nedůležité weby sdílíte jedno heslo, pak k tomu jednomu heslu mají přístup desítky lidí – ale jen do prvního úniku, pak ho může znát každý. V takovém případě je zbytečné vymýšlet složité heslo…
To jistě ne, ale zase pro spoustu služeb nepotřebuju extra heslo. Něco (třeba tady *) funduje přes mojeID, někde se dá třeba ověřit přes Google (co já vím, supraphononline.cz). A na blbosti mám něco generovaného a uloženého ve Firefoxu (s master password, samozřejmě).
Ale pár hesel je potřeba/vhodné si pamatovat (mojeID a mail třeba), a tam se to hodí.