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.

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
- Android Developers: Host-based card emulation overview
- Android Developers: Android 4.4 APIs
- Android Developers: IsoDep
- Android Developers Blog: Android 2.3.3 Platform, New NFC Capabilities (9. února 2011)
- Android Developers Blog: Android 4.4 KitKat and Updated Developer Tools (31. 10. 2013)
- The Verge: Verizon: Google Wallet won't launch on the Galaxy Nexus (6. 12. 2011)
- Wired: Google Wallet Mobile Payment Portfolio Grows From 2 Phones to 4 (11. 5. 2012)
- The Verge: Softcard is shutting down on March 31st (5. 3. 2015)
- ESET: NGate Android malware relays NFC traffic to steal cash (22. 8. 2024)
- Magazín: Malware WindRelay udělá z telefonu oběti falešnou čtečku platebních karet (19. 8. 2026)