Android

Android 4.4 otevřel emulaci platební karty i obyčejným aplikacím

Přenášení bezkontaktní karty mezi dvěma telefony stojí na dvou schopnostech, které má Android zabudované. Číst kartu umí od verze 2.3.3 z února 2011, emulovat ji uměl do 31. října 2013 jen oddělený bezpečnostní čip – a ten mívali pod palcem operátoři. Android 4.4 toho dne pustil k emulaci obyčejné aplikace.

· 4 zhlédnutí

Bezkontaktní platební terminál s cedulkou vyzývající k placení telefonem přes Google Wallet
Terminál v kavárně Peet's Coffee v říjnu 2011. Cedulka pod čtečkou zve k placení telefonem. Telefonů, které to tehdy uměly, byla v USA hrstka. Foto: Steven Walling, Wikimedia Commons (CC BY-SA 3.0)

Podvod, o kterém 19. srpna psal Magazín u rodiny malwaru WindRelay, potřebuje dva přístroje. Na tom prvním leží aplikace, která přečte kartu přiloženou k zadní straně telefonu. Na druhém, klidně o město dál, se ta karta v tutéž vteřinu tváří, že leží na terminálu. Ani jedna z těch dvou schopností se do Androidu nepropašovala. Obě tam jsou zabudované a každá přibyla jindy.

Číst bezkontaktní kartu umí systém od verze 2.3.3. Třída IsoDep, kterou se v Androidu mluví s kartami podle normy ISO/IEC 14443-4, nese v referenční dokumentaci poznámku „Added in API level 10“. Tu úroveň zavedla verze 2.3.3, ohlášená 9. února 2011 rovnou jako vydání o nových schopnostech NFC. Na druhou polovinu se čekalo o dva a půl roku déle a nešlo přitom jen o techniku.

Karta bydlela v čipu, ke kterému měl klíč někdo jiný

Do roku 2013 se karta v telefonu emulovala mimo hlavní procesor, v odděleném čipu zvaném secure element. Řadič NFC posílal všechno, co přišlo od terminálu, rovnou do něj; aplikace se transakce vůbec neúčastnila a mohla se leda dodatečně zeptat, jak dopadla. Dokumentace Androidu k tomu dodává větu, ve které je celý tehdejší problém: takový bezpečnostní prvek nosí i spousta SIM karet od operátorů.

Kdo chtěl telefonem platit, musel se tedy domluvit s majitelem čipu. Google Wallet jezdil v USA jedině u Sprintu. Verizon do své verze Galaxy Nexusu Wallet nepředinstaloval a v prosinci 2011 k tomu vydal prohlášení, ve kterém odmítl, že by cokoli blokoval: „Google Wallet nepřistupuje jen k operačnímu systému a základnímu hardwaru našich telefonů jako tisíce jiných aplikací. Aby fungoval tak, jak ho Google navrhl, musí být zabudovaný do nového, bezpečného a proprietárního hardwarového prvku v našich telefonech,“ stálo v něm (citace přeložena).

Verizon, AT&T a T-Mobile mezitím stavěli vlastní platební službu Isis, později přejmenovanou na Softcard. Ta k provozu potřebovala zvláštní SIM kartu, takže bezpečnostní prvek neseděl v telefonu, ale v kartě operátora.

Jak malý ten svět byl, se dá spočítat na prstech jedné ruky. Wired napočítal 11. května 2012 dva telefony, které Google Wallet zvládly: Nexus S a Galaxy Nexus. Třetím se měl 15. května stát LG Optimus Elite ve verzi pro Virgin Mobile, čtvrtým o tři dny později HTC Evo 4G LTE, které Sprint prodával s Wallet nahraným v každém kuse. Nový vlajkový Android Sprintu se 4,5palcovým displejem a hliníkovým stojánkem se tak dostal na seznam o čtyřech položkách, a to na celém americkém trhu.

Emulaci karty převzal hlavní procesor

Dave Burke oznámil 31. října 2013 na blogu pro vývojáře Android 4.4 KitKat; prvním přístrojem s ním byl Nexus 5. V přehledu novinek té verze stojí host card emulation, česky emulace karty na hostiteli. Aplikace může vystupovat jako karta podle ISO-DEP, která si s terminálem vyměňuje datové jednotky APDU podle normy ISO/IEC 7816-4, a telefon jich zvládne emulovat několik naráz. Data z terminálu putují do hlavního procesoru a odtud do aplikace; bezpečnostní čip v té cestě nefiguruje. Stará cesta přitom nezmizela, dokumentace pro ni má dodnes vlastní třídu služby. Jen přestala být jediná.

Táž verze přidala i režim čtečky, kterým si aplikace v popředí zúží NFC jen na to, co ji zajímá. Dokumentace obě novinky spojuje sama: podle ní tahle dvojice umožňuje, aby Android „fungoval na obou koncích rozhraní pro mobilní platbu“ – jeden přístroj dělá terminál, druhý kartu (přeloženo). Napsáno to bylo jako popis platebního řešení postaveného výhradně z androidových zařízení.

Kdo dnes rozhoduje, která aplikace smí být kartou

Emulace není bez pravidel. Aplikace, která se hlásí o identifikátory z kategorie plateb, smí transakci zpracovat jen ve dvou případech: buď je nastavená jako výchozí platební aplikace, což je na Androidu 15 a novějším systémová role Wallet, nebo je v popředí a sama si o přednost řekne. Aktivní přitom může být vždycky jen jedna taková skupina identifikátorů.

Na čtecí straně nic takového není a právě ta strana leží u přenosových podvodů v ruce oběti. Aplikace, která si u terminálu nehraje na kartu, ale kartu čte, se o žádnou systémovou roli hlásit nemusí.

Sama emulace v obyčejné aplikaci přitom na krádež nestačila. ESET popsal v srpnu 2024 malware NGate, který okrádal klienty tří českých bank a stál na upraveném nástroji NFCGate z Technické univerzity v Darmstadtu. Telefon oběti rootnutý být nemusel, přístroj útočníka, který zachycený provoz emuloval u bankomatu, ano.

Softcard skončil 31. března 2015 a operátoři se s platbami obrátili právě na Google. Rozhodovat o tom, která aplikace smí u terminálu vystupovat jako karta, tím ale nepřestal nikdo. Jen se to přestěhovalo z čipu v SIM kartě do role, kterou přiděluje systém v telefonu.

Zdroje

AndroidHistorie

AndroidbezpečnostNFCplatbyGoogle WalletHTC Evo 4G LTESprint

Diskuse

Zatím tu nikdo nediskutuje.

Diskutovat mohou přihlášení čtenáři – přihlaste se nebo si založte účet.

← zpět na výpis