Quali sono i modi tipici per generare una password One Time?

2

Sto cercando i modi tipici per generare una password One Time. Conosco HOTP e TOPT. Ma, nel mio caso, il problema è che il "server" ha solo un display come interfaccia e l'applicazione otp-generator dovrebbe funzionare su uno o più dispositivi mobili.

Attualmente sto pensando di usare un generatore di numeri Pseudo Casuali sicuro. Il numero generato verrà visualizzato sul "server". Quindi l'utente deve inserire questo numero nei dispositivi mobili. Il generatore usa il numero casuale dell'input e un segreto precondiviso, li collega insieme e li blocca più volte. Il risultato è l'OTP.

Esiste un modo analogo standardizzato per generare un OTP?

Modifica:

Ho un server con un accesso ad un'area segreta. D'altra parte ho diversi dispositivi mobili che forse sono in grado di accedere nella stessa area segreta. Quindi ci sono molti dispositivi che devono essere sincronizzati prima di ogni accesso.

Nel HOTP ci sono due possibili tipi di segreti condivisi: Generazione casuale e Generazione deterministica.

A mio parere, la generazione casuale non è possibile a causa dei molteplici dispositivi mobili per lo stesso accesso. Non riesco a pensare a nessuna soluzione come a sincronizzare il prng sicuro come HMAC_DRGB o altro.

Con Deterministic Generation, il master secret è memorizzato solo sul server. Non riesco a trovare un modo per condividere il segreto condiviso in modo sicuro con solo un display.

Quindi questo è il motivo per cui sto cercando altri standard per generare un OTP ...

O esiste un modo per archiviare il segreto in modo sicuro sul server e sui client?

    
posta Andreas 10.09.2014 - 13:15
fonte

1 risposta

1

Pensa a questa implementazione (Disclaimer: questo è di base):

Server visualizza un numero casuale che cambia ogni 30 secondi (R)
Il dispositivo mobile ha un ID dispositivo (DID) univoco Il server mantiene una registrazione dei DID autorizzati
Sia il server che il dispositivo mobile condividono un segreto (S)

Quando il dispositivo mobile vuole accedere, richiede la R attiva dal server. Il dispositivo mobile calcola quindi hash(S + DID + R) e invia il risultato al server insieme al DID. Il server utilizza lo stesso algoritmo e, se corrisponde, ha un certo livello di sicurezza che il dispositivo autorizzato è quello che sta attualmente effettuando l'accesso.

Accoppia questo con una tipica credenziale di username / password legata al DID e hai un 2FA di base MOLTO. Il rovescio della medaglia è la necessità di mantenere e comunicare S prima che questo processo abbia inizio.

Questo processo è la funzione di base della generazione OTP, ma ci sono modi più sicuri di implementarlo se si guarda. Ricorda la regola:

"Don't Roll Your Own"

    
risposta data 11.09.2014 - 21:02
fonte

Leggi altre domande sui tag