2013-03-26 15 views
7

Abbiamo sviluppato una scheda prototipo con un microcontrollore, che può comunicare con una SmartCard (può leggere l'ATR, emettere e leggere le risposte ai comandi APDU, ecc.) Ora voglio utilizzare questo hardware con un telefono o tablet Android. La nostra scheda ha una connessione USB, attraverso la quale possiamo leggere e scrivere sulla MCU tramite Android.Sviluppo di un lettore di smartcard in Android

L'obiettivo finale è quello di avere un lettore di smart card funzionante sulla piattaforma Android con supporto PKCS # 11 e fornire una libreria agli utenti finali del lettore SmartCard in modo che possano comunicare con le proprie schede.

Ho letto diverse discussioni sull'argomento, alcune delle quali affermavano che avrei dovuto creare un Android personalizzato per farlo. Non ho molta familiarità con l'architettura di Android per capire perché dovrei ricostruire Android quando posso comunicare con la mia periferica (lettore di schede) via USB. Mi sembra che se fornisco una libreria che implementa un'interfaccia simile a CCID, gli utenti possono quindi comunicare con il mio lettore utilizzando lo stack USB di Android integrando la mia libreria al loro file .apk di destinazione.

Ci sono problemi con il piano di cui sopra che non siamo a conoscenza? Sono preoccupato del fatto che manchiamo di qualcosa di fondamentale sui lettori Android o SmartCard in generale (ad esempio: sicurezza) che causerà problemi per noi quando inizieremo a implementare le librerie descritte sopra.

+0

Sarebbe utile [queste informazioni riguardanti la connettività USB su Android] (http://developer.android.com/guide/topics/connectivity/usb/index.html) per rispondere alla tua domanda? – Joe

+0

La sicurezza è principalmente fornita dalla smart card stessa. La principale vulnerabilità è che i dati segreti nel telefono (ad esempio PIN) vengono acquisiti da un'altra applicazione malware; quindi i lettori PIN-pad, dove il PIN non lascia il lettore, hanno un vantaggio. Alcuni consigli: utilizzare la messaggistica sicura per proteggere il percorso di trasmissione, non memorizzare nulla sul telefono non crittografato e non memorizzare i PIN nella cache. – guidot

+0

Sarebbe utile se ci si collegasse a quelle discussioni originali che si leggono sul bisogno di una ROM Android personalizzata. Anche quella parte non ha senso per me. Potrebbe esserci un requisito nascosto nei loro progetti che forse non hai raccolto, o semplicemente non hai visto (e che probabilmente non è affatto pertinente al tuo progetto). Può anche darsi che la loro discussione sia piuttosto vecchia e pre-data l'host USB Android che è stato introdotto con Android 3.0 e versioni successive. –

risposta

1

Ho periferiche USB integrate in una distribuzione Gingerbread personalizzata per la mia piattaforma personalizzata. L'unico motivo per cui personalizzerai la piattaforma Android sarebbe aggiungere o modificare alcuni driver che ti consentiranno di accedere al tuo dispositivo USB. Se il dispositivo USB utilizza già un protocollo supportato da dispositivi Android standard, buona fortuna! Il tuo praticamente tutto pronto. Ma prima di celebrare la tua vittoria, proverei su una varietà di dispositivi. A livello di Android e Kernel, Google fornisce una distribuzione molto barebone con un sacco di codice sorgente del driver. Spetta al produttore del telefono/tablet decidere quali driver di livello basso e protocollo includeranno in base all'hardware utilizzato dal dispositivo. Poiché la quantità di memoria è limitata su un telefono/tablet, la regola generale è quella di includere solo ciò che è necessario. Su un'architettura PC-Linux, non si ha il problema poiché lo spazio del disco rigido è così grande che si includono tutti i driver esistenti e si lascia che il sistema scelga e scelga ciò di cui ha bisogno in base a ciò che scopre.

Spero che questa semplice risposta possa essere d'aiuto.