Che cos'è Host Card Emulation su Android?
Host Card Emulation permette a un'applicazione Android di rispondere essa stessa a un lettore esterno, via software, invece di instradare lo scambio verso un chip che fa da elemento sicuro. Ha eliminato il guardiano hardware che decideva chi potesse installare un'applicazione di carta, e ha spostato il problema di sicurezza sul sistema operativo e sul cloud.
Cosa è venuta a sostituire
Prima di Host Card Emulation, presentare una carta dal telefono significava ospitare la credenziale in un elemento sicuro: un chip hardware, fisicamente presente nell'apparecchio o nella SIM, e gestito da chi fosse padrone di quel hardware.
Quella gestione era l'ostacolo. Una banca o un operatore di trasporto che volesse installare un'applicazione di carta doveva negoziare l'accesso con un costruttore di apparecchi o con un operatore mobile, un rapporto dopo l'altro. La tecnica funzionava, gli accordi commerciali non scalavano.
Come funziona
Android instrada lo scambio verso un'applicazione invece che verso un chip. Google documenta il meccanismo con il nome di Host Card Emulation.
Un'applicazione dichiara quali applicazioni di carta può servire, con identificatori che i terminali chiedono per nome. Quando un lettore ne chiede uno, il sistema operativo sveglia l'applicazione registrata e le consegna lo scambio. L'applicazione risponde, comando per comando, via software.
La conseguenza è che non interviene alcun guardiano hardware. Qualsiasi sviluppo può pubblicare un'applicazione che risponda a un lettore senza chiedere il permesso a nessun costruttore.
Dove se n'è andata la sicurezza
Non è sparita, si è spostata, e capire dove è la differenza tra un uso pulito e una costruzione fragile.
Un elemento sicuro resiste all'estrazione fisica delle proprie chiavi. Un'applicazione sul processore principale no, ed è per questo che le credenziali gestite per questa via sono di norma token a vita breve serviti da un server, invece di un segreto permanente nell'apparecchio. Se rubi il token, scade. Se rubi l'apparecchio, il token non serve a nulla senza ciò che lo ha sbloccato.
Il modello è dunque passato dal proteggere un segreto in hardware al limitare il valore di un segreto rubato. Entrambi funzionano, ed entrambi falliscono in modi diversi.
Quando usarla
È il meccanismo giusto quando controlli entrambi i capi: la tua applicazione sul telefono, i tuoi lettori sul campo. Programmi di fidelizzazione, controllo di accesso a un sistema che gestisci tu, biglietti dove gestisci anche i tornelli.
È lo strumento sbagliato per fingere una credenziale emessa da altri. Registrarsi per un identificatore non ti dà le chiavi che la carta reale conserva, quindi il terminale rifiuterà lo scambio anche se la tua applicazione avrà risposto.
E la Host Card Emulation aperta, disponibile per qualsiasi applicazione, esiste solo su Android. Da iOS 17.4, Apple offre un equivalente controllato tramite la sua piattaforma NFC e SE: un'applicazione con l'abilitazione di Apple può emulare carte nel quadro di un accordo commerciale, ma solo per quella via controllata e non per una aperta. Quale via hai a disposizione decide il progetto quasi sempre prima di qualsiasi altra cosa.
Domande frequenti
Host Card Emulation ha bisogno di una connessione a internet?
Lo scambio con il lettore no, ma le realizzazioni con token a vita breve hanno bisogno di connessione per ottenerli. Che il telefono funzioni senza connessione dipende da quanti token siano stati portati in anticipo, e non dal meccanismo in sé.
È meno sicura di un elemento sicuro?
È sicura in un altro modo. Un elemento sicuro protegge una chiave permanente in hardware, questo modello limita il valore di ciò che si può sottrarre. Per molte applicazioni la seconda cosa basta ed è molto più facile da installare.
Posso emularci una carta MIFARE Classic?
No. Il meccanismo tratta lo scambio di comandi abituale delle applicazioni di carta e non gli schemi proprietari che operano al di sotto di quello strato. È una di diverse ragioni per cui i sistemi Classic resistono alle credenziali sul telefono.
Esiste un equivalente su iOS?
Aperto nessuno. Da iOS 17.4, Apple offre una via controllata, la sua piattaforma NFC e SE, solo per applicazioni con un'abilitazione di Apple nel quadro di un accordo commerciale, e non un meccanismo generale per applicazioni qualsiasi. Un progetto multipiattaforma non deve presupporre che la via aperta di Android si trasferisca.