Implementare un passcode per autenticare gli utenti delle app [duplicate]

3

Questa domanda è relativa a questo .

Siamo impegnati nell'implementazione dell'autenticazione del codice di accesso a 5 cifre per la nostra app (Android, iPhone), ma ci stiamo imbattendo in una complessità. Non siamo sicuri di come possiamo identificare in sicurezza il dispositivo da cui l'app effettua la richiesta. Possiamo inviare e registrare l'id del dispositivo (UUID) con l'utente, ma quell'id non è un segreto, quindi chiunque sappia che l'UUID potrebbe tentare di autenticarsi con il server utilizzando il passcode.

La risposta nella domanda correlata menziona questo: "Durante la registrazione del dispositivo, l'applicazione sul dispositivo (sia esso un telefono o un laptop) genera un valore segreto e lo invia alla banca, ma lo memorizza."

Sembra ragionevole, ma come possiamo memorizzare quel valore segreto sul telefono? Potremmo usare Local Storage, ma quanto è sicuro? È sufficiente?

Un altro modo sarebbe quello di impostare un cookie (persistente) al momento della registrazione del passcode. Ma non sono sicuro di quanto sia sicuro.

Vedo questo sistema implementato in molte app, ma non ci sono molte informazioni sul web.

    
posta Sherlock 16.11.2015 - 15:06
fonte

3 risposte

1

Non devi fare nulla di speciale qui.

È sufficiente memorizzare il token localmente nell'archivio dell'app.

Vale la pena considerare la scadenza del token periodico che richiede un'autenticazione più completa tramite token SMS, token e-mail o nome utente e password.

    
risposta data 16.11.2015 - 17:07
fonte
0

Posa e domanda intrigante, anche se non c'è una risposta per questo suppongo che potrei aiutarti a darti alcuni suggerimenti come spunto di riflessione.

1, utilizzare i serial hardware? So che questo non è sempre possibile su certe piante, ma ho pensato di parlarne.

2, UUID, usa questo e il tuo ID che generi, crittografalo nel database (o cancellalo) se crei un alogiro sufficiente puoi creare il tuo token basato sull'UUID e inviarlo tramite una connessione sicura .

3, numero di telefono, utilizzando una combinazione di UUID e il numero di telefono del dispositivo, puoi creare un bel ID sicuro.

Da quello che posso dire stai provando ad usare un metodo molto standard che non è lontano dall'uso di un nome utente / password normale, l'unica differenza qui è che stai cercando di creare il nome utente per loro. nella maggior parte dei casi le persone possono facilmente trovare un nome utente e provare a forzarlo, anche se dovresti sempre usare un IP fail2ban.

C'è una serie infinita di potenziali soluzioni a questo, suppongo che dipenda solo dai dati che stai cercando di proteggere e da come stai trasferendo / memorizzando le informazioni.

    
risposta data 16.11.2015 - 16:22
fonte
0

Quindi hai bisogno di un segreto condiviso che è unico per il dispositivo. Che dire delle impronte digitali del dispositivo? cioè calcolare un hash basato sulla configuurazione hardware del dispositivo. Questi sono considerati robusti e affidabili per i dispositivi in cui l'hardware non è sostituibile a caldo. In effetti, HSM e il software CA lo utilizzano come parte della resistenza alla manomissione.

Effettuare il googling delle "impronte digitali dei dispositivi mobili" fornisce una serie di risultati interessanti. In particolare questo documento accademico ha catturato la mia attenzione . Dall'astratto:

We demonstrate how the multitude of sensors on a smartphone can be used to construct a reliable hardware fingerprint of the phone. Such a fingerprint can be used to de-anonymize mobile devices as they connect to web sites, and as a second factor in identifying legitimate users to a remote server. We present two implementations: one based on analyzing the frequency response of the speakerphone-microphone system, and another based on analyzing device-specific accelerometer calibration errors. Our accelerometer-based fingerprint is especially interesting because the accelerometer is accessible via JavaScript running in a mobile web browser without requesting any permissions or notifying the user.

    
risposta data 16.11.2015 - 16:35
fonte

Leggi altre domande sui tag