Si prega di spiegare il passo temporale nell'Algoritmo della password temporanea basata sul tempo

3

Sto studiando su OTP (One Time Passwords). Ho esaminato tutti i metodi: HOTP (One Time Password basata su HMAC), TOTP (Time Time One Time Password)

Non ho problemi con HOTP. Ma in base a RFC6238 nella sezione 4.2, TOTP è definito come
TOTP = HOTP (K, T) dove T = (ora Unix corrente - T0) ÷ X .

Ho studiato la RFC. Sono confuso tra timestamp e time-step. (il timestamp è il tempo di unix corrente, immagino) ma qual è il passo temporale?

Come si verifica la risincronizzazione? Si dice così nella RFC:

... If the time step is 30 seconds as recommended, and the validator is set to only accept two time steps backward ...

Che cosa significa? TOTP ha parametri Throttling e dimensioni della finestra come in HOTP?

    
posta user10101 13.03.2012 - 18:57
fonte

1 risposta

8

Panoramica. TOTP è piuttosto semplice ed è descritto abbastanza bene nella RFC a cui ti sei collegato di nuovo. Potresti voler leggere la RFC un'altra volta: è tutto lì. Riassumo la RFC per te, ma potresti aver ottenuto tutto questo da solo leggendo la RFC.

Passaggi temporali. Ad esempio, hai chiesto informazioni su che cos'è un timestamp rispetto a un intervallo temporale. I primi due paragrafi della Sezione 4.2 definiscono questi termini. Come dice qui, T è il numero di passi temporali tra il tempo di controtempo iniziale T0 e l'ora corrente di Unix. X è la dimensione della fase temporale, ad esempio 30 secondi. Vedere il terzo paragrafo della Sezione 4.2 della RFC per un esempio.

Risincronizzazione. La sezione 6 descrive come funziona la risincronizzazione. Leggi questa sezione per i dettagli.

Per esempio, supponiamo che il cliente pensi che l'ora corrente sia 10:01:20 (vale a dire 1 minuto e 20 secondi dopo le 10) e il server pensa che l'ora corrente sia 10:02:07. In altre parole, l'orologio del server sarà 47 secondi avanti dal client. Diciamo per semplicità che il tempo iniziale è 10:00:00 (in pratica sarà molto più indietro nel passato, ma voglio mantenere i numeri piccoli qui), e il passo temporale è di 30 secondi. Il client calcolerà T come il numero di passi temporali dal punto iniziale, cioè T = floor (80/30) = 2. Il client genererà una password monouso come HOTP (K, 2). Tuttavia, l'ora del server è diversa, quindi il server calcolerà T '= floor (127/30) = 4, e il server si aspetta la password una tantum HOTP (K, 4). La password del client non corrisponderà a ciò che il server si aspetta.

Se la password one-time del client non corrisponde a HOTP (K, T '), il server controlla anche se coincide con HOTP (K, T'-1) e HOTP (K, T'-2). Nel nostro esempio precedente, la password monouso del client corrisponde a HOTP (K, T'-2), quindi il server consente al client di accedere correttamente. Il server può anche dire che l'orologio del client è a circa 2 intervalli di tempo dietro al server, quindi il server può aggiornare i suoi record per quel client. Quando il client tenta di accedere, il server calcolerà T 'in base a una versione corretta del proprio clock, regolata per la stima dell'offset dell'orologio.

Questo è abbastanza semplice e roba standard, ed è tutto spiegato nella Sezione 6.

Discussioni e avvertimenti. per cosa stai utilizzando le password monouso? Essere avvertito che hanno un numero di inconvenienti. I loro limiti più gravi sono che non sono sicuri contro gli attacchi man-in-the-middle, non sono sicuri contro il malware lato client e non sono sicuri contro gli attacchi di phishing.

Potresti prendere in considerazione altri mezzi per l'autenticazione dell'utente e considerare nuovamente se le password monouso sono la soluzione migliore per il tuo particolare problema. Il metodo che è meglio per te dipenderà dalla tua particolare applicazione.

    
risposta data 13.03.2012 - 23:14
fonte

Leggi altre domande sui tag