La creazione di un'app di pagamento NFC senza un elemento sicuro come Apple Pay è fondamentalmente insicura?

3

Supponiamo che io lavori per una banca e mi venga chiesto di scrivere un'app di pagamento NFC per iPhone 6 o Android ma non utilizzare Apple Pay. Per inviare semplicemente i dettagli della carta di credito al lettore tramite NFC.

Supponiamo ora che non stia memorizzando i dettagli della carta di credito utilizzando un hash one-one che la società della carta di credito all'altra estremità corrisponderà per convalidare il pagamento. Supponiamo che io dia semplicemente i dettagli della carta di credito al lettore, in modo simile a un commesso che digita manualmente i numeri della carta di credito nel lettore quando la banda magnetica si guasta.

Per farlo - Devo memorizzare i dettagli della carta di credito in modo criptato o non crittografato su iPhone o Android.

Se lo memorizzo come non criptato su iPhone o Android, qualsiasi altra app potrebbe leggere i dati e potenzialmente inviarli per uso nefasto. (Simile al modo in cui FileApp funziona).

Se lo memorizzo come crittografato su iPhone o Android, allora deve essere una crittografia bidirezionale, e quindi qualsiasi altra app che utilizza quel meccanismo di crittografia può leggere i dati dal telefono. (Ad esempio, è possibile ottenere il meccanismo di crittografia tramite reverse engineering LLVM bytecode della mia applicazione).

La mia domanda è: La creazione di un'app di pagamento NFC senza un elemento sicuro come Apple Pay per iPhone o Android è fondamentalmente insicura?

    
posta hawkeye 24.09.2014 - 01:16
fonte

1 risposta

1

Le informazioni memorizzate su un telefono utilizzando HCE per i pagamenti contactless sono probabilmente limitate in alcuni modi (tempo, utilizzo o entrambi).

Porta Google Wallet (versione HCE): Google afferma che

You will need to be connected to the internet in order to unlock the app with your 4-digit security PIN and tap and pay in stores. However, if you set your PIN timeout in the app settings, you can be offline for up to 24 hours and still tap and pay without being connected to the internet.

Sembra che i dati dinamici per transazione che il telefono crea per ogni transazione siano validi solo per un periodo di tempo limitato. Idealmente, le chiavi / i segreti usati verranno sostituiti ogni volta che il telefono è in grado di connettersi a Google Wallet.

Alcuni telefoni Android supportano anche un keystore supportato da hardware , che consente di creare una chiave RSA all'interno di una parte protetta del sistema; il sistema operativo consentirà solo agli utenti API di eseguire operazioni con chiave privata, ma non rivelerà mai la chiave stessa. Questo potrebbe presumibilmente essere usato per emulare il comportamento di un elemento di sicurezza dedicato (non so se i formati chiave usati siano compatibili con la specifica EMV, però. Gli elementi di sicurezza fisica hanno anche il vantaggio di poter essere collegati direttamente all'NFC interfaccia del telefono e rilevare se stanno comunicando con un vero lettore NFC o con software sul processore dell'applicazione).

Naturalmente, se il telefono può essere completamente controllato da un utente malintenzionato (ad esempio, sfruttando qualche bug di sicurezza nel framework Android o nel kernel di Linux, cosa già accaduta prima), potrebbe essere possibile copiare (o inoltrare in in tempo reale) tutti i dati necessari per autenticare i server Wallet e annusare il PIN dell'utente mentre viene inserito. Questo sarebbe (si spera) catturato dall'operatore HCE (ad esempio, cercando richieste concorrenti che utilizzano le stesse credenziali da diversi percorsi di rete).

Nota: ho interpretato la tua esigenza di "non utilizzare Apple Pay" poiché "non utilizza un elemento sicuro come Apple Pay", poiché sembra improbabile che Apple consenta la concorrenza di applicazioni di pagamento senza contatto su iOS. (Al momento non esiste alcuna API NFC e, anche se lo fossero, dubito strongmente che le app di pagamento NFC possano essere distribuite su App Store). Le applicazioni Android, d'altro canto, non potevano utilizzare Apple Pay per ovvi motivi.

    
risposta data 24.09.2014 - 18:19
fonte

Leggi altre domande sui tag