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.