Perché vedo 2FA ma non vedo "due entità separate" con priorità nell'autenticazione del sito web?

1

Ho visto un certo numero di metodi di autenticazione del sito web in due passaggi là fuori. Alcuni includono due password, HOTP / TOTP, Yubikey, SMS a un numero di telefono, ecc. Tuttavia, sembra che tutti questi sistemi si affidino al computer o al dispositivo principale per non essere compromessi.

Per essere precisi, mi permetta di riferire specificamente a TOTP. Ecco un tipico flusso del sito web TOTP per un sito:

  1. Digiti la tua password sul tuo computer
  2. Apri l'app 2FA (ad es., autenticazione FreeOTP, autorizzazione Google)
  3. Digiti il token TOTP corrente sul tuo computer

Se un utente malintenzionato ha un keylogger o un logger della CPU sul tuo computer, non può accedere al tuo account? Al punto 3, supponendo che il tuo computer sia compromesso, hanno sia la tua password che il token TOTP corrente. Comprendo che l'autore dell'attacco può accedere al tuo account una sola volta perché il token TOTP scadrà dopo 30 secondi.

Tuttavia, se il flusso del sito Web TOTP tipico fosse il seguente:

  1. Digiti la tua password sul tuo computer
  2. Apri l'app 2FA (ad es., autenticazione FreeOTP, autorizzazione Google)
  3. Invia il token TOTP corrente direttamente dal tuo telefono al server del sito che stavi cercando di accedere dal tuo computer

Non vedo come sarebbe molto più sforzo da parte del server del sito. Presumo che avrebbe solo bisogno di un endpoint che ascolta i token TOTP in entrata che vengono inviati con un nome utente per identificare a quale accesso è destinato il token TOTP in entrata. Ora un utente malintenzionato dovrebbe installare un keylogger sul computer (o sul dispositivo principale) e sul telefono (o sul secondo dispositivo) per accedere al proprio account.

A mio avviso, con questa configurazione proposta un meccanismo di sicurezza definitivo sarebbe un computer + un dispositivo hardware specifico che è in grado di inviare chiavi TOTP a un server (forse come un Bitcoin Trezor ma invece di mostrare un indirizzo bitcoin, sarebbe mostra un nome di dominio o un indirizzo IP per conferma). Ma per quanto ne so, non vedo una spinta per l'utilizzo di due entità separate per fare l'autenticazione del sito web. C'è una ragione per questo?

    
posta kshikama 29.07.2016 - 17:22
fonte

2 risposte

1

I do understand that the attacker can only access your account once because the TOTP token would expire after 30 seconds.

Questo è il caso per TOTP. Ma ci sono molti HOTP basati sul contatore, che è in realtà una password unica, il che significa che l'acquisizione non consente a nessun altro di accedere se lo hai già fatto (il virus sul tuo computer dovrebbe impedire l'invio di quello reale password temporale). Questo è anche il caso della maggior parte dei token hardware e dei token SMS.

You send the current TOTP token that directly from your phone to the server of the site you were trying to log into from your computer

Esistono tali strumenti, ma non sono a conoscenza della distribuzione per i siti Web pubblici. Solitamente viene chiamato knock knock o single packet authentication (SPA), solitamente utilizzato per aprire la porta del firewall, ad esempio per SSH. È un buon livello aggiuntivo di sicurezza, ma eccessivo per l'uso quotidiano. La buona implementazione è fwknop e credo che sarebbe possibile legarla alla tua applicazione come un "secondo fattore".

    
risposta data 29.07.2016 - 22:00
fonte
0

If an attacker had a keylogger or CPU logger on your computer, can they not access your account? By step 3, assuming your computer is compromised, they have both your password and your current TOTP token.

Sì. Si noti inoltre che se l'utente malintenzionato può modificare il software client (sia esso un client SSH o un browser Web), può anche modificare tutto il contenuto trasferito e i comandi dopo l'autenticazione viene eseguita. Dopo tutto, il programma client ha accesso a tutti .

Con un servizio web, l'autenticazione di solito dà solo un cookie di sessione che viene poi utilizzato per autenticare tutte le richieste successive (poiché tutte le richieste HTTP sono logicamente separate a livello di protocollo) e il cookie può essere utilizzato da un altro processo completamente indipendente dalla stessa macchina se necessario. Con SSH, il client modificato dovrebbe inserire comandi nello stesso flusso (e assicurarsi di non visualizzare il loro output), che richiederebbe un po 'di attenzione, ma non è assolutamente impossibile.

Per proteggere effettivamente da un programma client compromesso, è necessario autenticare tutte le transazioni indipendenti attraverso un canale separato. Se il comando è qualcosa come "Trasferisci $ 100000 a questo conto bancario in qualche paese ombroso", potrebbe non essere una cattiva idea, ma ricevere un SMS di conferma ogni volta che vuoi elencare i file nella tua home directory diventerebbe abbastanza veloce .

I do understand that the attacker can only access your account once because the TOTP token would expire after 30 seconds.

Certo, ma anche l'accesso è sufficiente per copiare tutti i dati o installare una backdoor (se il sistema ha capacità di esecuzione del codice). L'utilizzo delle stesse credenziali mostrerebbe anche all'utente valido un errore di login spurio, dal momento che per funzionare la connessione dell'attaccante avrebbe dovuto prima autentificarsi, invalidando l'OTP e fallendo il login dell'utente. Tuttavia, è probabile che l'utente presuma semplicemente di aver digitato in modo errato la password o l'OTP e di riprovare.

Ovviamente è più semplice semplicemente creare un keylogger passivo, quindi è probabilmente una modalità di attacco più comune di un comando personalizzato completo che invia un client trojan.

    
risposta data 30.07.2016 - 11:07
fonte

Leggi altre domande sui tag