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í.
Já jsem v jistých ohledech lama, ale nikdy jsem nad správcem hesel neuvažoval, protože mi nedochází, jak je nebo není "portabilní". Správce hesel bych měl na svém PC doma, možná že by se uměl nějak synchronizovat do PC v práci (?) a do mobilu (chci to vůbec?). Jak se ale přihlásím do své oblíbené služby třeba z kamarádova počítače, internetové kavárny, od rodičů, atd ... když tam svého správce hesel, který narozdíl ode mě hesla zná, nemám?
Přiznám se, že taky používám "algoritmus", kterým z hlavy po krátkém zamýšlení z názvu služby, do niž se přihlašuju, odvodím heslo. Na nic moudřejšího jsem zatím nepřišel.
Na tohle můžete chtít mít toho správce třeba v mobilu, ze kterého to u cizího počítače opíšete.
"Algoritmus" je docela fajn, ale při úniku hesla ze dvou služeb už se stává poněkud náchylný k uhodnutí (možná už by se dal odhadnout i z jediného úniku, záleží na komplexnosti). Správce hesel tohle eliminuje. Ale ano, musíte ho mít s sebou, když chcete hesla použít. Mobil mi připadá jako přijatelný kompromis mezi použitelností a bezpečností. (Netahat správce s sebou je nepochybně bezpečnější, nezadávat hesla ke svým účtům na cizích strojích rozhodně taky.. Ale nemůžeme to hnát do extrémů)
Vizte jiný můj komentář – správce hesel můžete mít na PC i v mobilu a data se mezi nimi synchronizují pomocí nějaké služby. Docela dlouho jsem newebová hesla měl jenom v mobilu (protože desktopový klient nebyl pro danou službu dostupný pro Linux). Když bylo potřeba, musel jsem je tedy přepsat – ale i s tím se dalo žít. Dnes už bych to ale nedoporučoval, přeci jen výhoda správce hesel je i v tom, že hesla nevyplní do špatné stránky.
U techto vyzkumu mi vadi, ze nerozlisuji mezi dulezitym heslem a nedulezitym.
Taky pouzivam slabe heslo, a toto slabe heslo dokonce k vice uctum. Stale bohuzel jsou stranky, ktere vyzaduji nejakou zbytecnou registraci.
Svym zpusobem to je i pripad zdejsiho rootu. Mistni registrace je potreba, ale kdyz mi ji nekdo ukradne, tak mi to bude celkem jedno.
Na tenhle problem (nedulezita hesla) pod podobnym clankem nekdo poukaze pokazde, takze vlastne premyslim, ze je zbytecne abych to tu psal.
Zajimavejsi by bylo treba zjistovat silu hesel u konkretnich sluzeb, treba facebook, banka. Ale netusim jak se da takovy pruzkum provest? Z mistnich by asi avastu nikdo neodpovidal jestli pouzil datum narozeni do bankovniho hesla :)
Bohužel si mi občas stává, že určitá služba má představu o tom, jak dobrá či špatná by měla být hesla, která na ní používám. Výše jsem zmínil např. německé banky/ spořitelny. Naštěstí už většina služeb nevyžaduje pravidelné změny hesla a tak jde o to, jednou nastavit generátor hesla tím nejvíce robustním způsobem, který služba ještě podporuje, parametry si zapsat třeba do poznámky k záznamu a dál to neřešit. Je to ale ohyzdné - lepší by bylo, kdybych jedním příkazem nebo klickem mohl batchově změnit hesla na všech službách co mám (a na mobilu nebo kde jen potvrdit změny jako druhý faktor).
Co mě překvapuje, že banky ještě běžně nenabízí ověření pomocí kryptografického certifikátu místo hesla, ale což...
Ověření certifikátem běžně nabízí naše banky už možná dvacet let. U některých to dokonce byla pro vybrané typy účtů jediná možnost, kterou na počátku tisíciletí nabízeli. Většina bank to má za poplatek (například 350 Kč ročně v ČS), ale jsou i takové, co je vydávají zdarma (např. Fio nebo Moneta).
Zákazníci to prý obvykle nechtějí, protože pak nemohou přistupovat do banky z jiných PC než těch, kam ten certifikát nahráli - což je problém pokud cestujete. Některé banky nabízí i certifikát na čipové kartě (například ČSOB), což ale pořád znamená ssebou všude vozit čtečku čipových karet a doufat, že v PC pro ní budou ovladače. Zda některá z bank podporuje USB čipové klíčenky, to teď nevím.
Komerční banka dřív nabízela ověření certifikátem. Na první pohled to vypadá bezpečněji, ale není:
Tím se ověření certifikátem v souboru prakticky degraduje na jednofaktorové ověření s faktorem „něco, co mám“ namísto faktoru „něco, co znám“ v případě použití hesla. Jiná situace samozřejmě je v případě certifikátů v čipové kartě/tokenu, ale to není dostatečně uživatelsky přátelské, aby to mohly banky vnucovat všem.
Nabízet != vnucovat.
Šlo mi o to, že např. FIDO2 se nezdá být špatný nápad a je to v podstatě to ověření pomocí certifikátu aspoň při pohledu s odstupem: https://www.yubico.com/solutions/fido2/
Zlepšuje se to a banky se technologicky dotahují, ale mám pocit, že tak s 5 let zpožděním.
Z FB se může stát klíč k celé digitální identitě? To těžko, protože vždy když po mně FB chce nějaký údaj, tak si prachsprostě vymýšlím. Ano, nebojím se říci že mu lžu jako když tisknu :-) Možná tím porušuji nějaký zákon, nevím, no ale alespoň nevím o zákoně kde je napsáno že Facebooku musím říkat pravdu a nic než pravdu … :-))
Krom použití FB jako oauth2 serveru je navíc občas možné použít několik služeb pro prokázání identity při ztrátě hesla někde úplně jinde (nebo, v příkladě krádeže identity k získání přístupu)
No a pak tu je ještě scam přes kradený účet na FB, těch lidí ze kterých „příbuzný“ nebo „kamarád“ vytáhl peníze je dost.
Priklad: sveho casu opensubtitles pozadovali registraci. Tak jsem pouzil svou "typickou" vymyslenou. Zadne premysleni netreba. Kdyz nekdo ucet ukradne? Nepali me to. Je mi to uplne ale naprosto absolutne totalne jedno. I ten jeden klik/klavesa navic pro pouziti spravce hesel by byla naprosto zbytecna namaha. Jaky tady je jediny duvod aby bylo heslo dobre a unikatni? Zadny.
Nejpouzivanejsi slabe heslo je pry 123456. Jake tam je premysleni navic? Zadne.
Samozrejme ze se nebavim o klicovych sluzbach (banky, pro nekoho facebook).
Zadarmo se možná vygenerovat, ale už je složitějsí si je pamatovat, nebo je nějak spravovat. Vždycky mě vytáčí, když nějaké diskuzní fórum, kam přispívám víceméně anonymně po mě chce do hesla kdovíco. Většina úvah o heslech zapomíná na to, co chráním, před čím (kým) to chráním a hlavně na to, že to heslo tam píše člověk, ne počítač.
První, který mě z hlavy napadl, je Bitwarden. Je pro všechny Vámi zmíněné systémy včetně iOS.
Druhý mě napadl Encryptr, ale už není ve vývoji. Ovšem byl taky na všechny systémy.
A potom se dá říct, že vyhovuje "jakýkoli", který se dá integrovat jako plugin do webového prohlížeče, což je jedna ze základních vlastností, kterou mají "všichni" správci. Pokud nepoužíváte nějaký exotický prohlížeč, tak je tohle pravděpodobně spolehlivá cesta.
Používám Bitwarden. Má klienta pro desktop (Windows, MacOS, Linux), rozšíření do prohlížečů, webové rozhraní, aplikaci pro Android i iOS, dokonce aplikaci pro příkazovou řádku. Data jsou synchronizovaná přes server. Server si můžete provozovat i sám (to nepoužívám). Hesla jsou synchronizovaná v zašifrovaném tvaru, tj. provozovatel toho serveru se k nim nedostane – pokud ty klientské aplikace fungují správně (zdrojáky jsou na GitHubu, můžete si je zkontrolovat a sestavit sám).
Podobných správců hesel je docela dost, některé mají pro synchronizaci vlastní službu, některé umožňují využít třeba Dropbox.
Enpass, ale není open source a je placený jednorázově za Android a MacOS. Míněno za mobilní platformu, ne za zařízení. Ve vašem případě tedy asi 10 USD za Mac a 10 USD za Android. Desktop je zdarma.
Synchronizaci si řešíte sám dle libosti přes OwnCloud, NextCloud, OneDrive, Google Disk, DropBox atp.
K dispozici je doplněk pro Firefox a Chrome.
Mě ale přijde mnohem horší, že kdejaká služba stále defaultně nechá útočníka hádat heslo do aleluja hrubou silou.
Pokud by všechny služby byly imunní vůči brute force attack, dobré heslo by nebylo tak moc důležité.
Pravda vyjímka je když útočník kompletně vykrade databázi zahešovaných hesel, pak se brute force nedá zabránit a nerozlousknuté zůstanou jen ty opravdu hodně silná neuniknutá hesla. Ale to je opět hlavně problém těch co poskytují služby. Pro uživatele je spíše podstatné nepoužívat stejná hesla na více službách nebo dokonce stejná hesla jako na emailu.
A úplně nejhorší mi přijde, když mi někdo tvrdí, že mé desetimístné heslo není silné, protože jsem nepoužil žádný paznak. Osmimistého heslo s paznakem je ale mnohem slabší. Pokud chce někdo tvrdit co je silné a slabé heslo, měl by to porovnávat z databázemi běžně uniklých hesel a se slovníky.