L'uso dell'elemento Secure di uno smartphone offre davvero vantaggi di sicurezza a un'applicazione bancaria?

8

L'applicazione Android della mia banca consente agli utenti di eseguire transazioni finanziarie senza l'utilizzo del generatore di token fisico (che richiede l'inserimento di una carta bancomat e un codice PIN valido) che si richiederebbe normalmente quando si utilizza l'interfaccia web della banca. Tuttavia, questo è supportato solo quando si utilizza l'app su un telefono fornito con un Secure Element hardware in cui è possibile memorizzare chiavi crittografiche e simili.

Inizialmente, questa mi sembrava una buona decisione, dal momento che i dispositivi senza un elemento protetto dovevano memorizzare le chiavi in memoria o su archiviazione persistente e sono quindi vulnerabili agli attacchi di malware installati sullo stesso dispositivo.

Tuttavia, quando ho riflettuto su questo aspetto ho avuto l'impressione che l'utilizzo di Secure Element avrebbe effettivamente lasciato un vulnerabile a questi attacchi piuttosto che proteggendo le sole chiavi tramite il software ; confrontare questi due approcci:

  • Il sistema si affida al sistema operativo per limitare l'accesso alle chiavi: altre app non possono accedervi mentre sono in userland, ma quando un utente malintenzionato riesce a ottenere l'accesso di root al dispositivo, può rubare le chiavi e firmare o crittografare qualsiasi cosa vogliono, fingendo di essere l'applicazione bancaria. Ciò consente loro di contraffare le transazioni.
  • Il sistema memorizza le chiavi su SE e fa affidamento sul sistema operativo per limitare l'accesso a questo hardware: altre app non possono accedervi mentre sono in userland, ma quando un utente malintenzionato riesce a ottenere l'accesso root può istruirlo per firmare e crittografare tutto ciò che vogliono , fingendo di essere l'applicazione bancaria. Ciò consente loro di contraffare le transazioni.

Per questo motivo l'uso del chip hardware per questo scopo mi sembra piuttosto inutile. Lo stesso vale per le applicazioni simili che si affidano a questo per immagazzinare materiale sensibile.

Mi sto perdendo qualcosa qui? Esiste una situazione in cui l'elemento di sicurezza offre un chiaro vantaggio in termini di sicurezza a questa app per il settore bancario, rendendo ragionevolmente necessaria l'autorizzazione?

    
posta AardvarkSoup 23.06.2016 - 21:45
fonte

1 risposta

6

Quindi entrambi i tuoi scenari si basano sull'attaccante che ha accesso root al telefono. In sicurezza, è generalmente considerato che una volta che un utente malintenzionato ha accesso come root, è game over. Detto questo, ci sono ancora cose interessanti da dire sulla tua domanda.

Hai chiesto:

Is there a situation where the secure element does offer a clear security benefit to this banking app, making it reasonable to mandate it?

Essere un po 'sfacciato: Sì, casi d'uso normali in cui l'utente ha una password / blocco pin e l'attaccante non ha accesso root.

Un po 'più in profondità:

Quando dici "ragionevole autorizzarlo" presumo tu voglia dire, offrendo la stessa funzionalità agli utenti con dispositivi non Secure Element memorizzando la chiave nel software? Alcune cose vengono in mente:

  1. su Android > 6.0 (e osservo iOS) il crypto avviene all'interno di Secure Element / Secure Enclave, quindi la chiave privata non entra mai in userland, quindi è immune da potenziali vulnerabilità / codifiche errate nell'app banking stessa o nelle librerie crittografiche software che utilizzano. (generalmente una buona pratica).

  2. Poiché le chiavi private non escono dal keystore del Secure Element, è impossibile estrarle dal dispositivo ed eseguire lo spoof da un server; devi farlo dal dispositivo fisico. Se il proprietario scopre che il dispositivo è stato rubato, può eseguire una cancellazione remota, che cancellerà le chiavi private, attaccando.

  3. Se il keystore è protetto da password, nel caso di un keystore del software, è possibile estrarre il file su un server e forzare la password al contenuto del cuore. Nel caso di un elemento sicuro, dopo alcuni tentativi di forza bruta, possono cancellare i tasti.

  4. Anche se ancora un po 'sperimentale, Android e iOS stanno iniziando a offrire meccanismi di controllo dell'accesso accurati quando l'archivio chiavi hardware sbloccherà le chiavi ed eseguirà la crittografia per te. Ad esempio, puoi programmare la tua app per richiedere la crittografia da SE nel seguente modo: "Firma questi dati, ma solo se il dispositivo è stato sbloccato utilizzando password, impronta digitale o PIN e se il dispositivo è stato sbloccato più di 5 minuti fa, richiederne prima il login ". Questo livello di controllo è fondamentalmente impossibile con le chiavi basate sul software.

Nessuna di queste cose è sicura al 100% contro un utente malintenzionato con accesso root al dispositivo, ma penso che mostri che un modulo keystore / crypto hardware aggiunge qualche valore. La mia opinione professionale è che è una scelta difendibile per un'applicazione bancaria per consentire di bypassare un generatore di token fisico solo se il tuo dispositivo ha un elemento sicuro.

[Disclaimer: Android Secure Element ha subito un'importante revisione in Android 6.0, quindi quello che ho detto sopra non si applica ad Android < 6.0 che non ha fatto alcun crypto nel SE e ha restituito le chiavi private in userland.]

    
risposta data 23.06.2016 - 22:14
fonte

Leggi altre domande sui tag