Toky na stejném zařízení a mezi zařízeními vysvětleny
Pokaždé, když peněženka něco prokazuje webu, musí se ti dva nejprve najít. Někdy jsou už ve stejném telefonu a předání je jediné klepnutí. Jindy je web na stole a peněženka v kapse a jediným mostem mezi nimi je kód na obrazovce. To jsou toky na stejném zařízení a mezi zařízeními a téměř každá praktická otázka o digitálních dokladech se vrací k tomu, ve kterém z nich se právě nacházíte.
Dvě podoby téže výměny
Oba toky mají společné vše, na čem firmě záleží: položí se stejná otázka, stejný člověk ji schválí a vrátí se stejný důkaz. Nic z toho, na co se smíte ptát nebo na co se pak můžete spolehnout, nezávisí na tom, ve kterém toku jste.
Liší se trasa. V jednom je peněženka na jedno klepnutí a vrací odpověď přímo stránce, která se ptala. Ve druhém putuje odpověď z druhého zařízení na vaše servery a stránce, na kterou se člověk dívá, je třeba dát vědět, že dorazila.
Stejné zařízení
Jeden telefon. Web i peněženka na stejné obrazovce.
- Návštěvník je na webu v prohlížeči telefonu a má něco prokázat.
- Web otevře peněženku pomocí deep linku nebo přesměrování.
- Peněženka ukáže, kdo se ptá a proč, a návštěvník souhlasí.
- Peněženka přesměruje zpět na web s odpovědí, a to do téže relace prohlížeče, ve které vše začalo.
Mezi zařízeními
Dvě zařízení. Web na počítači, peněženka v telefonu.
- Návštěvník je na webu v prohlížeči počítače a má něco prokázat.
- Web zobrazí QR kód, který nese požadavek.
- Peněženka v telefonu kód naskenuje, ukáže, kdo se ptá, a návštěvník souhlasí.
- Peněženka pošle odpověď na backend webu, který stránce na počítači oznámí, že výměna je hotová.
Kdy nastává který
Vybrat si nemůžete. Zákazník, který si cestou do práce otevře vaši onboardingovou stránku v telefonu, je v toku na stejném zařízení. Tentýž zákazník, který druhý den ráno dokončuje tentýž formulář u stolu, je v toku mezi zařízeními. Peněženka žije v telefonu, takže tok se řídí tím, kde se právě odehrává zbytek práce.
Proto oba protokoly evropského ekosystému popisují oba toky. Předkládání, kdy někoho žádáte, aby něco prokázal, oba toky výslovně pojmenovává. Vydávání, kdy někomu předáváte doklad, dělá stejné rozlišení u nabídky, kterou vše začíná: může se objevit na zařízení s peněženkou, nebo dorazit jakoukoli jinou cestou, až po dopis s vytištěným kódem.
Služba používaná jen uvnitř vaší organizace na spravovaných počítačích může rozumně začít s jedním tokem. Cokoli, k čemu se občan nebo zákazník dostane po svém, potřebuje oba, a služba, která funguje jen jedním způsobem, bude nahlášena jako rozbitá, ne jako nepodporovaná.
Co který stojí uživatele
Tok na stejném zařízení je kratší cesta. Žádná druhá obrazovka, žádný fotoaparát, žádné přebíhání pohledem z jednoho zařízení na druhé a člověk skončí tam, kde začal. Když selže, obvykle selže brzy a viditelně: není nainstalována peněženka nebo odkaz otevře něco, co vůbec není peněženka.
Tok mezi zařízeními stojí jedno skenování, ale přináší skutečnou výhodu. Člověk zůstává u velké obrazovky, kde vyplňoval dlouhý formulář, četl smlouvu nebo porovnával možnosti, a do telefonu se přesouvá jen samotný důkaz. U všeho, co zabere víc než minutu psaní, je to lepší místo.
Jeho selhání jsou tišší a vyplatí se s nimi při návrhu počítat. Kód, který vypršel, zatímco někdo hledal telefon, telefon bez signálu, fotoaparát, který nezaostří. Stránka s kódem by měla uvádět, jak dlouho platí, nabídnout nový kód bez ztráty formuláře pod ním a nikdy nenechat člověka hádat, zda se něco stalo.
Kde se oba skutečně liší: bezpečnost
V toku na stejném zařízení se odpověď vrací stejnou cestou, kudy člověk odešel: přesměrováním, na zařízení, kde běží peněženka, do relace prohlížeče, která výměnu zahájila. Kdo si požadavek zkopíruje z vlastní obrazovky, nemá jak výsledek získat, protože je doručen zařízení, na kterém proběhlo schválení.
V toku mezi zařízeními se odpověď přes prohlížeč vůbec nevrací. Jde z telefonu na vaše servery, mimo dohled stránky, která kód zobrazila. V tom je mezera: pokud kód nesvážete s relací, která ho zobrazila, vaše služba nerozliší člověka, který před ní sedí, od někoho, kdo stejný kód podstrčil oběti a počkal.
Tento útok má jméno i nápravu. Kód musí patřit jedné a jen jedné relaci a výsledek, který dorazí pro jakoukoli jinou relaci, se musí odmítnout. Při návrhu je to pár řádků přemýšlení, a když se vynechá, je to známá díra. Proto IETF sepsala pro toky mezi zařízeními dokument osvědčených postupů (Best Current Practice), místo aby to nechala na každé implementaci.
Druhým rizikem je phishing a týká se samotného kódu. Černobílý čtverec člověku nic neřekne o tom, kdo je na druhé straně, takže kód vytištěný na nálepce a přelepený přes skutečný je věrohodný útok. Obranou je, že organizaci, která se ptá, pojmenuje a přesně vypíše, co chce, peněženka, ne kód, a to dřív, než se cokoli sdílí. Vydávání přidává ještě jeden zámek: nabídka může vyžadovat krátký kód doručený kanálem, který člověka už identifikoval, takže nabídku zachycenou po cestě nemůže uplatnit nikdo jiný.
Co to znamená pro vás
Spoléhající se strana
Počítejte s oběma od začátku. Práce navíc je ve frontendu a ve svázání kódu s relací, ne v druhé integraci, a dodatečné doplnění tohoto svázání je právě ta část, která se pokazí.
Vydavatel
Rozhodněte, jak se vaše nabídka k lidem dostane. Na obrazovce vedle přihlášení, v e-mailu nebo na papíře: každá cesta vede do jiného toku a ty, které opouštějí váš kanál, potřebují k uplatnění samostatný kód.
Držitel peněženky
Čtěte, co ukazuje peněženka, ne co tvrdí stránka nebo kód. Peněženka je jediné místo, které uvádí, kdo se ptá a co chce, a je to poslední okamžik, kdy můžete říct ne.
Související pojmy
Často kladené otázky
Kdo rozhoduje, který tok se použije?
Rozhoduje situace, ne nastavení. Pokud je člověk už na zařízení, kde má peněženku, web ho předá přímo. Pokud sedí u počítače a peněženku má v kapse, jedinou cestou je kód k naskenování. Veřejně dostupná služba se s oběma setká hned v prvním týdnu.
Znamená podpora obou toků, že vše musíme postavit dvakrát?
Ne. Požadavek, který posíláte, i odpověď, kterou kontrolujete, jsou v obou případech stejné. Liší se to, jak se požadavek dostane do peněženky a jak se odpověď vrátí na vaši stránku: přesměrování, které prohlížeč následuje, nebo kód na obrazovce a k tomu způsob, jak se stránka dozví, že výměna skončila. V praxi jde o jednu cestu navíc ve frontendu, ne o druhou integraci.
Je QR kód pro tento účel bezpečný?
Je bezpečný, pokud je výměna kolem něj správně navržena. Samotný kód člověku nic neřekne o tom, kdo se ptá, proto musí platit dvě věci: peněženka musí před sdílením čehokoli zobrazit identitu organizace, která se ptá, a vaše služba musí odmítnout odpověď, která dorazí pro jinou relaci než tu, jež kód zobrazila. Obojí je běžná praxe a obojí je popsáno ve specifikacích.
Je kontrola u přepážky tok mezi zařízeními?
Ne, to je třetí případ. Tok na stejném zařízení i tok mezi zařízeními popisují výměnu přes internet. Kontrola tváří v tvář, kdy se obě zařízení drží vedle sebe, místo toho používá standard pro blízkou komunikaci přes Bluetooth nebo NFC. Pro člověka s telefonem v ruce to vypadá podobně, ale přes váš web nic neputuje.
Zdroje
Tato stránka má informativní charakter a nepředstavuje právní poradenství. Pro závazné informace nahlédněte přímo do specifikací OpenID a IETF.