O sjednocujících přihlašovacích systémech už toho bylo popsáno hodně. Nejznámějším je zřejmě OpenID, se kterým se teď můžete přihlašovat i na Rootu. Kromě toho se dnes začíná prosazovat přihlašování pomocí účtu na Facebooku, případně na Twitteru. Cíl je jednoduchý: žádné registrace, žádné desítky hesel, vše pěkně pod jednou střechou.
Všechny tyto systémy se snaží prorazit, zatím je ale jejich rozšíření relativně malé. Největší šanci má zmíněné OpenID, ale i to se zatím rozšiřuje jen mezi geeky a běžní uživatelé o něm v podstatě nevědí. Nedávno jsme se tak na Zdrojáku zamýšleli, jestli vůbec je něco takového potřeba.
Se svou pověstnou trochou do mlýna přichází nyní i Mozilla, která připravila vlastní řešení zvané BrowserID. To je založeno na přihlašování pomocí e-mailové adresy. Ta je při prvním použití ověřena klasickým „klikněte na odkaz v mailu“ a svázána s novým heslem a od té chvíle se můžete na webech (které to podporují) přihlašovat pomocí BrowserID. Samozřejmě můžete mít i více ověřených adres a vždy si při přihlášení vyberete, kterou adresu chcete právě použít.
Čím se to liší od OpenID
Už jsem říkal, že projekt je do jisté míry příbuzný se známým OpenID. Nabízí se tedy otázka, čím se obě alternativy vlastně liší. Obě si kladou velmi podobné cíle:
- jednodušší a bezpečnější přihlašování bez desítek hesel
- jednodušší integrace autentizace pro webové vývojáře
- kompatibilita se všemi moderními prohlížeči
Proti tomu se BrowserID navíc pyšní několika dalšími vlastnostmi, které z něj, podle vývojářů Mozilly, dělají zajímavější technologii než je OpenID. Hlavní výhody BrowserID tedy jsou:
- jako uživatelské jméno používá e-mailovou adresu
- pro lepší bezpečnost může být BrowserID integrováno do prohlížeče
- lepší ochrana dat, poskytovatel identity neví o vašich aktivitách
Podle vývojářů Mozilly je e-mailová adresa nejpřirozenějším identifikačním prvkem uživatele. Je unikátní, pro uživatele snadno zapamatovatelná a navíc umožňuje přímo uživatele kontaktovat. U OpenID vzniká uživateli naprosto nový identifikátor v podobě URI (například doména.tld/uživatel
).
Zajímavou možností je integrace celého přihlašovacího mechanismu přímo do prohlížeče. V současné době probíhá celé přihlašování na webu (na stránce browserid.org), což zvyšuje riziko různých phishingových útoků. Uživatel totiž může být vmanipulován do vyplnění falešného webového formuláře. BrowserID ale počítá s tím, že by kontrolu nad přihlášením mohl převzít přímo prohlížeč a namísto přihlašovací stránky by zobrazil vlastní „newebový“ dialog. Vývojáři už připravují rozšíření pro Firefox, které by mělo tento model demonstrovat.
Další skloňovanou výhodou BrowserID by mělo být větší oddělení uživatele od poskytovatele identity. Ten je v případě OpenID informován o všech přihlášeních realizovaných na různých webech napříč internetem. To je pro mnohé uživatele naprosto nepřijatelné, protože o vás poskytovatel (v Česku například CZ.NIC se službou mojeID) má podrobné informace, kde a kdy se po internetu pohybujete. V případě BrowserID je vaším poskytovatelem identity váš provozovatel e-mailu. Ten ale není zapojen do autentizačního řetězce a neví nic o vašich aktivitách na webu.
Jak to funguje v praxi
Experimentálně si můžete BrowserID vyzkoušet na webu MyFavoriteBeer.org, na kterém naleznete velmi jednoduchou službu. Ta vám po přihlášení umožní uložit jméno vašeho oblíbeného piva. Vše slouží skutečně jen jako demonstrace možností BrowserID.
Po návštěvě webu máte vpravo nahoře možnost se přihlásit.
Po kliknutí se vám otevře okno, které směřuje na browserid.org a je zabezpečeno pomocí HTTPS. V tomto okně se objeví jedna ze dvou možností:
- možnost přihlášení/registrace
- pokud už přihlášení jste, pak je tu výběr vašich ověřených identit (e-mailů)
Stačí se tedy zaregistrovat, což znamená vyplnit e-mailovou adresu a heslo. Na mail vám pak přijde ověřovací zpráva s potvrzovacím odkazem. Na ten stačí kliknout a je hotovo. Poté stačí v okýnku zvolit, že se touto adresou chcete na pivním webu přihlásit.
To je celé. Na dalších webech už budete jen dotázání, zda se chcete opravdu přihlásit přes BrowserID a případně budete vyzváni k volbě e-mailu, pokud si jich zaregistrujete více.
Pod povrchem
BrowserID je zajímavé i svým principem, který je velmi odlišný od principů OpenID. Především je ověřovatel vaší identity do celého procesu zapojen pouze jednou, když ověřuje pravost vaší e-mailové adresy. Poté už jeho služby nepotřebujete a pomocí jím vystaveného certifikátu prokazujete svou identitu sami.
Do hry tedy vstupují tři strany:
- webová stránka – ta, na kterou se snažíte přihlásit
- identifikační autorita – ten, kdo vás ověří a vystaví vám certifikát
- poskytovatel BrowserID – dnes je to web browserid.org, v budoucnu váš prohlížeč
Jelikož zatím neexistuje implementace poskytovatele BrowserID přímo v prohlížeči, musí tuto činnost zastupovat JavaScript na webu browserid.org. Během následujících měsíců by ale mělo vzniknout už zmíněné rozšíření pro Firefox, které celou funkčnost poskytovatele převezme na sebe.
Postup při ověřování naší e-mailové adresy tedy vypadá následovně. Předpokládejme, že funkčnost poskytovatele už převzal plně prohlížeč. V opačném případě by do hry vstupovala ještě stránka z browserid.org.
- Uživatel se snaží přihlásit a je přesměrován na web identifikační autority.
- Prokáže svou identitu pomocí svého e-mailu a hesla (případně jinou metodou).
- Prohlížeč vygeneruje pár klíčů.
- Poté pošle veřejnou část klíče autoritě přes SSL spojení.
- Autorita spojí e-mailovou adresu a veřejný klíč uživatele a vytvoří certifikát, který podepíše.
- Certifikát je vrácen prohlížeči, který jej může nyní společně se svým privátním klíčem použít k potvrzení své identity.
Identifikační autorita by měla být v budoucnu shodná s poskytovatelem e-mailu. Vyžaduje to ovšem implementaci na straně tohoto poskytovatele. Jakmile například Gmail bude tuto funkčnost umět, bude přímo on vystavovat zmíněný certifikát. Dokud tomu tak není, funguje browserid.org jako sekundární autorita pro e-maily, jejichž poskytovatel BrowserID ověřit neumí (což dnes není nikdo).
Po provedení výše uvedeného postupu už autoritu vůbec nepotřebujeme, protože jsme získali potvrzení o platnosti naší adresy a o tom, že jsme jejími vlastníky. Pokud by někdo chtěl z autority vylákat stejný certifikát, musel by zadat správné heslo z bodu dvě. Bez jeho znalosti mu autorita pravost nepotvrdí.
Protože už máme certifikát, můžeme se přihlásit k libovolné stránce. Postup už bude výrazně jednodušší a autorita z něj zcela vypadává.
- Uživatel klikne na „Přihlásit“ a stránka vytvoří výzvu.
- Prohlížeč se uživatele zeptá, kterou adresu má použít pro přihlášení.
- Prohlížeč vytvoří odpověď na žádost, ve které je uvedena aktuální doména, získaný autorizační certifikát a doba platnosti a tato odpověď je podepsána privátním klíčem uživatele.
- Odpověď je vrácena stránce a uživatel je přihlášen.
V tuto chvíli má web potvrzení od obou stran – autorita dodala certifikát a uživatel vše podepsal privátním klíčem. Pochopitelně je ještě nutné ověřit platnost certifikátu, což je ale poměrně snadné, protože standard říká, jak je možné od autority získat veřejný klíč, který ověřuje pravost certifikátů.
Pokud vás zajímají další podrobnosti, přečtěte si blogový zápisek na lloyd.io.
Velmi nadějný experiment
Zatím se jedná skutečně o experiment, jehož cílem je získat úvodní zpětnou vazbu od uživatelů. V současné době existuje jen jediná identifikační autorita a zřejmě jen jediný web, na kterém je možné si vše vyzkoušet. Zároveň neexistuje implementace přímo v prohlížeči, což je ale právě ta nejslibnější část celého BrowserID.
Už teď si ale můžete vše vyzkoušet na vlastní kůži. Navíc je příjemné, že přestože technologie pochází z dílen Mozilla, neomezuje se jen na Firefox, ale můžete si vše zkusit v jakémkoliv moderním prohlížeči.
Podle vývojářů by měla být implementace celé věci velmi snadná jak pro jednotlivé weby, tak i pro poskytovatele e-mailů, kteří by v budoucnu měli tvořit identifikační autority. Uvidíme, jak se bude projekt hýbat dále. Zatím vypadá velmi nadějně.