Já jsem netvrdil, že správci hesel tyto problémy již vyřešili. Já tvrdím, že je řeší, a že k praktickému vyřešení jsou blíže než nějaký váš abstraktní nápad, který zatím není ani přesně popsaný (nebo ano?), natož aby ho někdo začal implementovat nebo dokonce používat.
Věřím, že postupem času se vyřeší různé věci, které by password managery mohly řešit lépe a zvýší se jejich použití. Nemám přesný scénář, ale je tu několik faktorů, které by tomu mohly pomoci:
* Zlepšení integrace a UX nejen na telefonu, ale i na desktopu. Když to bude jednodušší použít, nechá se přesvědčit více lidí.
* Mám (čistě subjektivně) pocit, že propagace password managerů z bezpečnostních důvodů je spíše záležitostí posledních let, dříve se od toho spíše odrazovalo. Proto si získávaj důvěru až teď.
* Zlepšují se správci hesel integrovaní do prohlížečů. Můžeme se jejich možnostem smát, ale narovinu: Je to první volba pro spoustu uživatelů a pro masové rozšíření to může být klíčové.
* Snad cokoliv, co dnes není ideální u správců hesel, lze v principu evolučně přidat. Lze například přidat API na přihlašování, odhlašování a změnu hesla. Některé stránky to mohou implementovat, a password manager tam bude lépe plnit svou roli. Některé stránky to neimplementují, tam bude password manager fungovat aspoň nějak.
Všimněte si toho, že jde o čistě evoluční cestu, která se nesnaží najednou změnit. Bude to dlouhá cesta (a překážky vidím spíše v postupném přesvědčování uživatelů k jinému chování), ale vidím světlo na konci tunelu.
Naproti tomu vy, pokud to dobře chápu, vidíte cestu v nějakém zákazu.
> Jediné reálné řešení je, že uživatelé budou dělat to, co dělají doteď – psát své jedno heslo do prohlížeče – akorát ta technologie pod tím musí být jiná.
Toto zhruba splňuje i password manager s hlavním heslem.
> Už jenom když prohlížeč vezme uživatelem zadané heslo, přidá k němu základní doménu webu a uživatelské jméno, výsledek zahashuje a pošle serveru jako heslo, bude to mnohem bezpečnější, než dnes.
No, muselo by se to ale implementovat, a to i na webových stránkách. Dokud bude fungovat i stará cesta, bude tu prostor pro downgrade attack a prakticky nulové zlepšení. Ti, kteří dnes ukládají hesla v plaintextu nebo hashují slabě, to nejspíš stejně neimplementují. Navíc se to bude těžko implementovat do stávajících webů, kde hashujete už podle jiného schématu. Neříkám, že je to nemožné, řeší to dvojí hashování, ale zvýšíte tím komplexitu, protože hashování původně prováděné na straně serveru musí nově provést prohlížeč, a server mohl používat bambilión různých schémat. Navíc zpětně kompatibilní řešení nejspíš povede k určitým únikům informací, protože prohlížeč bude potřebovat vědět, jak má hashovat (což může odhalit legacy hesla zahashovaá postaru), jakou má použít sůl, apod. Možná by i to šlo implementovat bezpečně, ale vidím tu spoustu nástrah, kvůli kterým se na to nejspíše vykašlou i ti, kteří bezpečnost řeší – právě z bezpečnostních důvodů, kvůli riziku implementační chyby.
V neposlední řadě to může mít negativní vliv na bezpečnost kvůli falešnému pocitu bezpečí: Sám jste zmiňoval, že používat všude jedno heslo by s tím bylo OK. Stejného dojmu by mohli nabýt i různí lidé, kteří znají trochu principů. Jenže pak hesla leaknou z webu, který používá legacy způsob přihlášení, a v ničem si nepomůžete.
> Slabá hesla stejně pořád půjde lámat hrubou silou, ale budete to muset dělat po jednom uživateli na každém serveru. Ve srovnání se stavem, kdy máte heslo v otevřeném tvaru, je to pokrok o světelné roky.
Je to pokrok ve srovnání se stateful správci hesel je to krok zpět. Ano, v případě cloudové synchronizace můžete zkusit lámat hlavní heslo, ale stále je dost rozdíl mezi online a offline útokem. Online útok lze omezit třeba zvyšující se dobou přihlašování nebo pomocí CAPTCHA. Offline útok je omezen pouze výpočetní kapacitou útočníka.
Navíc i online útok by byl jednodušší než u správců hesel s cloudovou synchronizací. Na online útok by stačilo vybrat si jeden server s nejslabší ochranou proti online útokům. Případně se opřít o více serverů.
> budete to muset dělat po jednom uživateli na každém serveru
Co si pod tím mám představit? Když na jednom serveru prolomím heslo uživatele, který všude používá stejné heslo, udělám to pro toho uživatele jednou a mám jeho heslo všude.
Přijde mi, že chcete technologii, která něco řeší relativně dobře, zpětně kompatibilně a pomalu, ale jistě se dostává do používání a zpřístupňuje masám (password managery), nahradit něčím zatím neexistujícím, méně bezpečným a bez pořádného řešení zpětné kompatibility.
Ad httponly – přijde mi to v této diskuzi okrajové téma, ale když už: Jsem pro použití httponly, kde to jde, ale nepřeceňoval bych význam. Když už uděláte XSS, můžete si z prohlížeče oběti udělat proxy a session cookie nepotřebujete. Nebo můžete zobrazit přihlašovací dialog, ani pozorný uživatel nemá moc šanci si všimnout, že je něco špatně, doména v adrese přece sedí…