È una cattiva idea che l'utente scelga il segreto TOTP invece di generarlo automaticamente?

9

Leggendo sui sistemi di autenticazione basati su TOTP che utilizzano gli smartphone come generatori di codice monouso, mi sembra di capire che in genere il segreto condiviso viene generato automaticamente dal "server" (il sistema a cui l'utente deve autenticarsi), quindi codificato in Base32 o altra codifica che restituisce solo caratteri "leggibili", quindi l'utente inserisce quel segreto nella sua app per smartphone che verrà utilizzata per generare i codici monouso. Spesso il segreto generato dal server è codificato in un codice QR da scansionare con il telefono per rendere più facile per l'utente inserire il segreto nell'app.

Supponendo che sia vero che quanto sopra è una configurazione tipica (di cui non sono sicuro), mi chiedo quali sarebbero gli svantaggi di fare in modo che l'utente scelga il segreto condiviso e lo comunichi al server per essere memorizzato , invece del contrario.

Cioè, l'utente creerebbe il segreto condiviso e lo salverà entrambi nella sua app per smartphone e nel server, e il server userebbe tale segreto così com'è (voglio dire senza considerarlo come codificato). Oppure, l'utente crea il segreto e lo codifica in Base32 prima di salvarlo nel server e il server lo considera come codificato.

Poiché nella mia comprensione nessuno di questi due casi è come funziona un tipico sistema TOTP, sono certo che ci sono dei motivi per cui l'utente non è stato scelto per scegliere il segreto condiviso, e mi piacerebbe conoscerli.

AGGIUNTO : ho ricevuto un po 'di informazioni qui che hanno chiarito molti dei miei dubbi. Ma ho ancora un dubbio. Come ho capito, gran parte del punto di autenticazione a due fattori è combinare qualcosa che conosci (la tua normale password) e qualcosa che hai (il dispositivo che genera il codice), ma il dispositivo può essere uno smartphone comune e diventa il dispositivo che genera il codice solo grazie all'utente che inserisce il segreto in esso (non importa come, codice QR o tastiera o altro, è comunque una parte di informazioni di cui l'utente ha bisogno sapere e questo è tutto ciò che serve). Non saprei cosa rispondere a qualcuno che afferma "il segreto è qualcosa che conosci o hai tanto quanto la password".

In altre parole, capisco come il dispositivo di generazione del codice che la banca fornisce all'utente per il login sia qualcosa che l'utente ha e non qualcosa che l'utente conosce , ed è perché quel dispositivo aveva il set segreto in esso prima di essere dato all'utente, quindi l'utente non conosce il segreto, quindi se l'utente lo autentica correttamente significa che in realtà era la persona che aveva fisicamente il dispositivo. Ma se il dispositivo è invece uno smartphone comune, laddove l'utente stesso deve inserire il segreto (ad esempio tramite il codice QR), un'autenticazione corretta significa che è stato qualcuno che conosceva il segreto e lo aveva inserito nel suo / il suo smartphone.

    
posta SantiBailors 19.06.2018 - 12:33
fonte

2 risposte

19

Una domanda migliore sarebbe: perché lo faresti?

Quando sviluppi un protocollo di autenticazione, controlli tutte le variabili. Ciò significa che puoi assicurare, ad esempio, che il RNG che usi sia sicuro, che non stai riutilizzando un segreto esistente e che non stai selezionando una chiave "debole". Inoltre, non hai il problema di affidarti a un canale laterale sicuro per recuperare il segreto dall'utente.

Quando consenti all'utente di generare i loro segreti, lo butti via tutto.

L'unico vantaggio storico di avere utenti che selezionano il proprio segreto è che possono commetterli nella loro memoria e non fare affidamento su storage (potenzialmente insicuro) locale. In caso di TOTP, non hai nemmeno questo vantaggio: i tuoi utenti devono fare affidamento su qualche forma di software per ottenere il codice corrente (che è il punto di 2FA: costringere l'utente ad avere accesso a "qualcosa che hanno" in Oltre a "qualcosa che sanno").

Quindi, sì, non è un'idea troppo bella.

    
risposta data 19.06.2018 - 14:18
fonte
3

Non dovresti farlo. Un TOTP è sicuro quanto la chiave e gli utenti non sono una buona fonte di casualità.

Aggiungete a ciò che molti utenti useranno i loro smartphone come generatore TOTP e chiedere all'utente di inserire una stringa casuale lunga e sufficiente sulla tastiera dello smartphone richiede troppo. Ora moltiplicalo per due: l'utente deve digitare il tasto TOTP del caso lungo e misto sullo smartphone E sul tuo sistema.

Non funzionerà. Meglio forzare l'utente a scattare una foto.

    
risposta data 19.06.2018 - 15:23
fonte

Leggi altre domande sui tag