Sto sviluppando un'applicazione NFC. La mia applicazione elaborerà informazioni segrete e desidero memorizzare tali dati sulla carta SIM. È possibile, e se è possibile, come posso farlo? La versione Android del mio telefono è Android 2.3.5.Come conservare i dati delle applicazioni Android su una scheda SIM utilizzando NFC?
risposta
tl; dr - non è attualmente possibile senza uno sforzo enorme.
Si desidera utilizzare la scheda SIM come Elemento protetto in modalità Emulazione scheda: questo è l'approccio preferito da GSM Association. Per accedere a Secure Element (su SIM o Integrated Chip), è necessario utilizzare un Trusted Service Manager (TSM). Nel tuo caso, TSM invierà i dati alla scheda SIM utilizzando messaggi SMS binari. Il problema è che è molto presto per NFC sui telefoni cellulari. Il tag di lettura/scrittura è abbastanza semplice ma l'accesso all'elemento sicuro non lo è. Esistono prove molto limitate degli Smart Phone NFC che utilizzano la SIM come elemento di sicurezza per l'emulazione di schede e le prove sono attualmente limitate a uno specifico operatore di rete mobile (MNO) in specifici paesi.
Se si desidera eseguire questa operazione, è necessario read the specifications, scrivere un TSM e quindi ottenere i contratti necessari con gli MNO per poter utilizzare le proprie SIM.
Buona fortuna!
grazie, ho imparato che non è possibile. –
Grazie. Questa risposta è ancora affidabile? – Abraham
@Abraham - Più o meno, sì. Tuttavia, l'emulazione della scheda host (aggiunta in Android KitKat 4.4) può essere utile, a seconda delle esigenze. https://developer.android.com/guide/topics/connectivity/nfc/hce.html – Kevin
Ho un requisito simile. Il mio approccio è, non usare la SIM dell'operatore GSM. Ma sto lavorando per trovare un modo per far utilizzare la mia SIM all'operatore GSM. Quindi avrò i miei meccanismi di accesso per conservare i miei oggetti protetti nella carta.
Yasin Yilmaz
Come Kevin dice, non è possibile senza un grande sforzo.
Un modo per farlo, potrebbe essere utilizzare un TSM. Ma è inefficiente per quello che stai cercando di raggiungere e richiede di essere "online". Si inviano alcune informazioni al server TSM e quindi invia alcuni dati alla scheda SIM.
== Phone == | | == TSM ==
Application | ---- Network ----> | Server
SIM card | <----------------- |
E TSM non è sufficiente. Avrete anche bisogno delle credenziali della carta SIM. Senza tali credenziali, non sarà possibile aggiornare i dati della carta SIM dal TSM. Queste credenziali sono controllate dal tuo operatore mobile. Infine, un TSM non è obbligatorio.
Con quello schema sopra, vediamo un modo più ovvio per farlo stabilendo un collegamento: Applicazione -> Simcard. Questa volta funziona anche se non hai una rete. Ma Android è concepito in un modo, non esiste un contatto diretto tra le applicazioni e la scheda SIM. C'è qualche soluzione, se sei interessato, è bene spiegare in that article.
Ecco alcuni requisiti:
- potrebbe essere necessario correggere il livello di RIL
- È necessario correggere il codice sorgente di Android
- è necessario disporre delle credenziali della carta SIM (UICC) (è possibile acquistare la carta SIM sviluppatore, ma non sarà in grado di connettersi alla rete, perché non contiene le credenziali di operatore)
- Hai bisogno di sapere come sviluppare software per la scheda SIM (di solito Javacard)
- ...
Il modo più semplice per archiviare dati segreti, in modo sicuro, senza troppi problemi, consiste nell'utilizzare una scheda SD speciale come elemento sicuro. Non è necessario applicare alcuna patch, non è necessario avere accesso root, non è necessario avere credenziali della SIM card. Potresti ancora dover sviluppare il tuo "software" per la scheda SD per ospitare i tuoi dati lì.
La sicurezza riguarda il livello di minaccia rispetto al livello di protezione. È probabile che Secure Element lavori un po 'troppo per proteggere i tuoi dati. A seconda di quali dati si tenta di proteggere, è possibile utilizzare il meccanismo di Android integrato che sarà abbastanza sicuro.
+1 per la tua domanda, ma si prega di utilizzare solo le etichette di codice per il codice, non per acronimi come "NFC" –