Applicazione mobile per la sicurezza dell'API REST con PIN

4

Sto cercando di scrivere un'API a cui si accederà da dispositivi mobili (anche noi possediamo l'applicazione mobile, non sono coinvolte terze parti).

Come parte del flusso di accesso, siamo stati istruiti a utilizzare un flusso di registrazione email / password, seguito dalla creazione di un numero pin di 5 cifre che consentirebbe all'utente l'accesso all'applicazione alla successiva apertura dell'applicazione.

Questo sembra essere in disaccordo con la maggior parte dei flussi di autenticazione disponibili come oAuth in quanto non sembra esserci alcuna indicazione sull'utilizzo di un'ulteriore autenticazione pin per il login.

Tuttavia ci sono un sacco di applicazioni che sembrano farlo, quindi mi chiedo se stiano preparando la propria soluzione? O una combinazione di servizi tipici e poi hosting di qualcosa di loro stessi?

Sto lottando con il concetto di garantire che il dispositivo unico sia anche legato al pin per autenticare correttamente le richieste all'interno dell'API.

I puntatori sono benvenuti, ma per qualcosa che vedo è abbastanza comune nelle applicazioni mobili, sembra esserci un piccolo dettaglio prezioso in merito agli aspetti di sicurezza di questo tipo di autenticazione?

Grazie,

    
posta Cmac 84 21.06.2016 - 17:15
fonte

1 risposta

2

Non capisco completamente la domanda, ma sembra che tu voglia conoscere una buona soluzione per l'implementazione di questo.

Per implementarlo, suggerirei di recuperare un ID devide univoco (può essere IMEI, ma può anche essere un ID dipendente dal sistema operativo) e quindi concatenarlo con il PIN. Quindi usi PBKDF2 per ricavarne una chiave.

Quindi selezioni un numero di iterazioni che sono sufficienti per evitare di screpolare il pin di 5 cifre da bruteforce, ma comunque non impiega molto tempo per l'autenticazione.

Qui hai 2 scelte. O è possibile crittografare il token OAUTH con la chiave generata e archiviarlo nella memoria del dispositivo oppure implementare una verifica sul lato server, in cui si verifica la chiave PBKDF2 quando viene utilizzato un token OAUTH mobile. Per rilevare se viene utilizzato un token OAUTH mobile, puoi impostare un flag nel modulo di accesso per rilevare gli accessi mobili.

Una soluzione migliore, se la tua gestione lo consente, è quella di utilizzare invece l'archiviazione basata su hardware di chiavi assimmetriche. (booleano KeyInfo.IsInsideSecureHardware ();), dove il server verificherà che la chiave privata corretta esista all'interno dell'hardware sicuro (facendo una sfida che l'app firma usando la chiave hardware). Ciò consentirà di associare strettamente l'app a un dispositivo specifico e di ignorare l'autenticazione PIN, poiché la schermata di blocco dell'utente è sufficiente per impedire l'uso improprio dell'app. (e poi dai anche agli utenti la scelta, di non avere un PIN se lo desiderano, disabilitando la schermata di blocco).

    
risposta data 21.06.2016 - 21:17
fonte

Leggi altre domande sui tag