Come implementare l'autenticazione a più fattori utilizzando un generatore di token?

16

Mi piacerebbe implementare l'autenticazione a più fattori su alcuni progetti.

Ora il primo fattore sarebbe il nome utente e la password, per il secondo fattore vorrei utilizzare un generatore di token.

Questi token sarebbero lunghi 6 caratteri e generati da un dispositivo trasportato dall'utente (come un telefono o un dispositivo speciale)

Ma ... Non ho idea di come funzioni un generatore di token e come implementarlo. (quindi sono qui per imparare)

Alla fine mi piacerebbe creare un'app per telefono per fare la generazione di token e un sito web (php) in cui l'accesso verrebbe effettuato.

Qualcuno può darmi qualche suggerimento nella giusta direzione su come funzionano questi algoritmi?

    
posta HTDutchy 10.10.2011 - 13:51
fonte

6 risposte

7

Ce ne sono molti esistenti e vengono forniti con le proprie API. Puoi implementare qualsiasi algoritmo che desideri. Vedi questo sito.

Disegnandolo da capo, per i token disconnessi hai alcune opzioni. Possono essere:

  • contro-basato - una nuova password con ogni macchina da stampa e il sistema di autenticazione non consente nulla almeno vecchio come l'ultima password utilizzata
  • basato sul tempo - i fattori dell'algoritmo nell'ora corrente e il server non consente altro che il presente, il minuto prima e il minuto successivo (o eventualmente una finestra leggermente più ampia); richiede una buona sincronizzazione temporale

Devi seminare un algoritmo basato su una sequenza imprevedibile con un valore condiviso segreto e l'ora o il contatore. hash(time . secret) o simile. Usare SHA-256 e tagliare alcuni bit sarebbe efficace.

Confronti di resistenza:

  • Token RSA - 8 cifre numeriche, 10 8 (uno su cento milioni)
  • sei cifre numeriche, 10 6 (una su un milione)
  • sei alfanumerici, 2.1x10 9 (uno su 2 miliardi)
  • sei alfanumerici, con i cappucci: 5.6x10 10 (uno su 56 miliardi)

Vedi anche:

risposta data 10.10.2011 - 15:38
fonte
6

Alcune importanti considerazioni sulla progettazione dell'asilo.

Utente singolo o multiutente?

Se questo è un progetto per animali domestici solo per te, molte attività di supporto sono facili. Tuttavia, se si tratta di un sistema multiutente, è necessario considerare più fattori.

Token unificato o token per persona?

Un token unificato è un token che fornisce un'autenticazione equa per tutti gli utenti. Questo è anche se ci sono più dispositivi fisici, qualsiasi utente può utilizzare qualsiasi dispositivo fisico per l'autenticazione. Questo è conveniente per il supporto, ma debole per l'autenticazione. D'altra parte un token per utente può essere utilizzato solo da un utente specificato. Ogni utente deve essere assegnato in modo univoco a un diverso dispositivo token fisico. Se l'utente perde o danneggia il dispositivo, l'utente deve essere assegnato a un nuovo dispositivo fisico. Per utente fornisce un'autenticazione più strong, ma il supporto operativo è più costoso.

Parametri del sistema di autenticazione.

Ci sono alcuni parametri critici come il ritardo tra l'autenticazione fallita e il prossimo prompt di autenticazione. Questo ritardo di fail aiuta a proteggere dagli attacchi online in cui l'utente malintenzionato ha ottenuto il nome utente e la password, ma non dispone di un dispositivo token valido. Un altro parametro è il numero di tentativi falliti fino a quando l'account non viene temporaneamente disabilitato. Aggiungendo l'impostazione precedente è il tempo disattivato temporaneo. Questo è quanto tempo dopo n tentativi falliti l'account deve essere temporaneamente disabilitato.

Protezione dispositivo token

Poiché il dispositivo token è un componente di autenticazione, il dispositivo token sarà un bersaglio allettante per gli aggressori. Se stai pensando di utilizzare un telefono cellulare o uno smartphone, devi pensare a come proteggere il software di generazione di token dai tentativi di monitorarlo o interromperlo. Se il tuo dispositivo è un dispositivo personalizzato, quali canali di comunicazione avrà (USB, Ethernet, RS-232) e in che modo questi consentiranno a un utente malintenzionato di analizzare o modificare il dispositivo?

    
risposta data 11.10.2011 - 10:14
fonte
6

Attualmente sto utilizzando il Google Authenticator come mio token OTP di scelta.

Se sei nuovo a questo, ti consiglio di consultare l' OATH Initiative . Questo terreno è stato ben asfaltato, buona fortuna!

    
risposta data 10.10.2011 - 21:51
fonte
5

Si desidera creare una password monouso mediante l'hashing di una chiave e di un contatore (o timestamp). Il generatore di token esegue il hashing della chiave e del contatore, tronca il risultato in 6 caratteri e incrementa il contatore. Il server fa lo stesso per confrontare.

HOTP è un algoritmo comune con un contatore, TOTP è uno che utilizza un timestamp. Un vantaggio di questi è che i generatori di token hardware e software sono disponibili per loro.

Generare il token è la parte facile; l'autenticazione in modo sicuro e affidabile con quel token è più complicata. Duo Security ha client open source da utilizzare con il nostro servizio a due fattori e potrebbero essere utili come riferimento. Disclaimer, sono un dipendente Duo.

    
risposta data 11.10.2011 - 02:34
fonte
1

Attualmente sto utilizzando una soluzione di Billion per l'autenticazione a due fattori. Ma almeno nel nostro setup richiede computer Windows. Quindi sono un po 'curioso di YubiKey. Ecco alcune informazioni in più.

link

link

    
risposta data 10.10.2011 - 21:41
fonte
0

Vorrei guardare in secondo luogo in OATH, Google Authenticator lo utilizza, così come YubiKey . In realtà, è possibile programmare YubiKeys per eseguire alcuni algoritmi diversi, nonché TOTP con un'applicazione Windows di supporto.

    
risposta data 29.03.2012 - 08:55
fonte

Leggi altre domande sui tag