L'ID di installazione è sufficientemente sicuro per autenticare l'utente del dispositivo rispetto a un'API di servizi Web?

5

... o in modo interattivo per chiedere la password / o avere qualche certificato è inevitabile?

Contesto

La mia app Android vuole effettuare transazioni sicure tramite la mia API del servizio Web. Tuttavia, non voglio disturbare il mio utente chiedendo / registrando le password, né chiedendo di installare i certificati.

Quindi ecco una soluzione proposta, ma ho seri dubbi su di essa non può essere falsificata.

Soluzione proposta

  • La connessione tra la mia app Android e l'API del mio server è vincolata a HTTPS
  • Prima che l'app comunichi per la prima volta con il server, interroga l'ID di installazione dell'app. Tutte le chiamate API successive avranno questo ID univoco come primo parametro.

Question (s)

È possibile che qualsiasi terza parte (criminale, hacker) conosca questo id di installazione, ad esempio installando un'altra app dannosa sullo stesso dispositivo, in modo da poter inviare richieste false al mio server utilizzando qualsiasi strumento personalizzato, ad esempio un desktop app?

    
posta g.pickardou 27.03.2016 - 17:03
fonte

2 risposte

3

Ciò che un attaccante può fare è, in un dispositivo rooted, decompilare il tuo apk e capire cosa viene comunicato con l'API per fare l'autenticazione o identificare l'utente nel back-end. Possono riprogettare il processo di comunicazione in qualsiasi applicazione (desktop o un'altra piattaforma mobile). Ricorda che quando qualcuno installa la tua applicazione Android nei propri dispositivi, non hai alcun controllo su quella applicazione.

La tua soluzione funzionerebbe in un ambiente controllato come la rete aziendale (supponendo che tu stia installando l'app solo in dispositivi attendibili conosciuti). In pubblico, dubito strongmente che la tua soluzione avrebbe funzionato.

E in base agli standard del settore, non è consigliabile aprire un'API pubblica (se l'API è pubblica) senza alcun meccanismo di autenticazione.

    
risposta data 22.01.2017 - 03:39
fonte
1

Un'app dannosa sul dispositivo rooted può leggere qualsiasi certificato o password che userete per superare in astuzia i nemici. Inoltre nel tuo scenario come saprai che la prima richiesta (quella che riceve la chiave API) proviene da un'app legittima e non da un hacker?

All'interno di queste limitazioni, un id del dispositivo 1 verificato non è peggiore di qualsiasi altra cosa.

Per id del dispositivo intendo qualsiasi ID che è univoco per il dispositivo verificato. Potrebbe essere il android.provider.Settings.Secure.ANDROID_ID a 64 bit in formato raw, o mescolato con una stringa specifica per app, o un hash MD5 di quello, per rendere la richiesta meno ovvia per l'osservatore casuale.

Aggiornamento : dato che lo scopo dell'identificazione è proteggere i dati privati dell'utente sul cloud, è OK restituire una "password" univoca all'utente dal server alla prima richiesta, e usarlo in seguito senza login manuale. Si prega di utilizzare HTTPS per tutte le richieste, per evitare di annusare questa password via etere.

Ma dovresti sapere che un ricercatore determinato sarà in grado di intercettare la chiave, almeno se ha accesso fisico al dispositivo e può rompere la protezione di sblocco.

Se il "disco" non è crittografato, la chiave può essere recuperata anche da un dispositivo in muratura.

    
risposta data 27.03.2016 - 17:45
fonte

Leggi altre domande sui tag