Quale ulteriore sicurezza fornisce un processo di accesso al sito Web in 2 fasi con un PIN?

20

Attualmente sto lavorando a un'applicazione web con un significativo rischio per la sicurezza collegato alla sua funzione. Stiamo utilizzando Microsoft Identity Framework per gestire gli accessi degli utenti, con il sistema che impone password e registrazioni complesse con il livello aggiuntivo di conferma dell'email richiesto prima del primo utilizzo.

Abbiamo la sensazione che questo non sia del tutto sufficiente. Uno dei nostri concorrenti utilizza un sistema di login in due fasi con una password seguita dall'inserimento di tre cifre da un PIN a sei cifre da parte dell'utente. C'è un suggerimento che dovremmo copiare questo.

Personalmente, mi sento a disagio nell'implementare una simile soluzione senza una migliore comprensione dei pro e dei contro rispetto alle alternative. Mi colpisce il fatto che una voce di livello dati aggiuntiva, immune dal keylogging, non rappresenti un ulteriore elemento di sicurezza significativo. Sicuramente se un utente malintenzionato ha già una combinazione di e-mail / password, quasi tutti i modi possibili in cui potrebbero averlo ottenuto genereranno il PIN?

L'ovvia alternativa al rafforzamento della sicurezza è l'autenticazione a due fattori tramite SMS. Ciò comporta un costo, ma se la sicurezza è fondamentale, sembra che in realtà aggiunga una protezione significativa al sistema tramite un PIN, che credo aggiungerà quasi a nessuno.

Qual è il punto di avere un'autenticazione PIN extra? Ha qualche vantaggio rispetto all'autenticazione a 2 fattori?

MODIFICA: la soluzione PIN proposta emetterebbe all'utente un numero a 6 cifre generato a caso via e-mail. Quando accedono al sito, devono prima inserire una password (che può, naturalmente, essere archiviata dal browser). In caso di successo, verrebbero quindi contattati per inserire tre cifre scelte a caso tra le sei (cioè immettere il primo, il secondo e il quinto carattere dal PIN) tramite la casella a discesa.

Riflettendoci, immagino che questo almeno impedisca l'accesso non autorizzato tramite qualcuno che si basa su una password memorizzata dal browser.

    
posta Matt Thrower 29.06.2016 - 15:49
fonte

6 risposte

32

Trovo difficile vedere quali benefici per la sicurezza potrebbero fornire. Nell'autenticazione multifattore, il punto è utilizzare diversi fattori, ad esempio "qualcosa che conosci", "qualcosa che hai", "qualcosa che sei". Ripetere lo stesso fattore due volte sembra un po 'inutile.

Ma permettimi di speculare su quale possa essere lo scopo.

1. Interrompi i keylogger

Solo il malware stupido cerca di ottenere le password registrando ciecamente i tratti chiave. Richiedere l'uso di un menu a discesa può proteggere contro alcuni malware, ma alla fine cercare di nascondere l'input dell'utente quando il computer è già infetto è un gioco perdente. Vedi questa domanda per un discussione correlata. Alla fine, penso che i benefici siano piccoli qui.

2. Aumenta entropia

Se aggiungi un PIN di sei cifre alla password, ottieni 10 6 volte quante combinazioni alla forza bruta o quasi 20 bit extra di entropia, giusto? (Oppure 10 3 volte o 10 bit se contate solo le tre cifre inserite.) Sì, ma perché non richiedere solo una password più lunga?

Forse vuoi dividerlo in due per rendere veramente casuale una parte (il PIN) e dare così protezione agli utenti che scelgono password deboli. Ma cosa protegge da questo? Per gli attacchi online, dovresti già disporre di limiti di frequenza per far fronte a questo problema. Per gli attacchi offline, è necessario inserire il PIN insieme alla password per ottenere benefici. Ma dal momento che puoi effettuare il login fornendo solo tre su sei cifre, non sembrano farlo (a meno che non mantengano 20 hash per tutte le possibili combinazioni di cifre).

3. Limita l'effetto delle password rubate

Diciamo che la tua password viene rubata (diciamo in un attacco di phishing). Se l'attacco viene eseguito una sola volta, l'utente malintenzionato riceverà solo metà del PIN. Pertanto, non sarà in grado di accedere facilmente se le verrà richiesto un numero di cifre diverso da quello che ha ricevuto.

Non vedo questo come un grande vantaggio. Basta ripetere l'attacco un paio di volte o tentare di accedere più volte (o da diversi IP) finché non ti vengono richieste le cifre che hai.

Inconvenienti

  • Rende gli utenti più propensi a scrivere il PIN (e forse la password mentre lo sono) su un post o un'email.
  • Non puoi accedere utilizzando solo un gestore di password. Perché rendere più difficile per le persone che usano metodi sicuri gestire le proprie password?

Conclusione

Non riesco a vedere alcun vantaggio in termini di sicurezza che possa motivare l'utente a memorizzare un PIN in più e ad affrontare il problema di selezionare numeri dai menu a discesa. Per me questo puzza di teatro sicurezza . Ma forse mi manca qualcosa.

Modifica: Sì, mi è mancato qualcosa. Vedi la risposta di supercat . È un ottimo punto, ma non sono sicuro che penserei che ne valga la pena comunque.

    
risposta data 29.06.2016 - 16:22
fonte
18

Un sistema che blocca un account, anche temporaneamente, in risposta a tentativi di password non validi renderà molto facile condurre un attacco denial-of-service contro qualcuno. L'utilizzo di un'autenticazione in due parti consente di applicare policy di lockout molto rigide sulla seconda parte pur rimanendo resistenti agli attacchi denial-of-service. Se qualcuno scoprisse che la password di una persona su un sistema era Justin-Bieber, un sistema con una singola password non sarebbe in grado di distinguere i tentativi di effrazione mirati usando variazioni su quella password (ad es. Justin-Bieber1, Justin4Bieber, ecc. ) da voci di password casuali per l'attivazione di un Denial of Service.

Dividere la password in due parti significherebbe che un utente malintenzionato avrebbe notato che la prima parte era corretta ma il premio più probabile non sarebbe l'accesso all'account, ma semplicemente la possibilità di attivare un blocco su di esso fino a quando l'utente reale autentica tramite altri mezzi; dato che l'utente dovrebbe sapere che qualcun altro ha la password primaria, l'utente dovrebbe quindi cambiare la password, rendendola inutilizzabile.

    
risposta data 29.06.2016 - 19:00
fonte
16

Se desideri un'autenticazione strong senza il costo di invio di SMS, puoi utilizzare TOTP con l' app di autenticatore di Google .

In effetti, la soluzione pin non sembra aggiungere molta sicurezza aggiuntiva. Inoltre, non capisco appieno il meccanismo. Inseriscono 3 cifre da un pin di 6 cifre. Come hanno ottenuto il pin a 6 cifre e come vengono selezionate le cifre dell'albero? Anche 10 ^ 3 non è un numero così grande, il che significa che il pin può essere forzato bruto se non vengono prese misure. Se riesci a chiarire il meccanismo dei pin, potrei essere in grado di fornire maggiori informazioni sui suoi vantaggi in termini di sicurezza.

EDIT: in base all'aggiornamento, questa è già una forma debole di autenticazione a due fattori poiché il pin viene comunicato via e-mail. Perché ci sono 3 cifre selezionate tra le 6 nell'e-mail è ancora un mistero per me. La ragione per cui dico "debole" è perché il codice pin a 3 cifre è molto breve e può essere forzato bruto se non è presente alcuna altra protezione.

Inoltre, la cosa a tendina per impedire ai keylogger di registrare il pin è una forma di protezione davvero debole. Se hai la possibilità di registrare le sequenze di tasti hai anche la possibilità di verificare quale numero è selezionato. O qualcuno crede che ci siano casi in cui il keylogging è possibile ma il monitoraggio dei clic non lo è? Forse in un keylogger hardware?

    
risposta data 29.06.2016 - 15:55
fonte
8

Il punto di autenticazione a più fattori è richiedere informazioni da più fonti in modo che se un utente viene compromesso in un modo (dicono che scrivono la loro password da qualche parte e viene trovata), quindi c'è ancora un livello di sicurezza che impedisce l'accesso all'account.

Di solito, i tre tipi di informazioni di autenticazione sono qualcosa che

  • conosci - come una password o un numero pin che hai memorizzato
  • avere - un telefono o un altro token di accesso che tieni
  • sono - un'impronta digitale o altro biometrico

Sia la password che il pin sono considerati nella prima categoria, quindi il pin probabilmente non aggiunge molta sicurezza considerando che c'è il rischio che entrambi possano essere compromessi allo stesso tempo (certo, non c'è / meno rischio di keylogging, ma cosa succede se l'informazione viene intercettata sulla rete o qualche altra forma di cattura?).

Per quanto riguarda i vantaggi, è difficile dire senza ulteriori informazioni. In questo caso, sembra che avere uno spillo sia più economico rispetto a un sistema di autenticazione "corretto" a due fattori. Forse il modello di minaccia è keylogger sui computer degli utenti, e questo potrebbe essere una correzione appropriata.

    
risposta data 29.06.2016 - 16:20
fonte
1

Quello che sta succedendo qui è che il tuo concorrente sta cercando di usare il sostituto di un pover'uomo al posto di un robusto secondo fattore per l'autenticazione. Per qualsiasi motivo commerciale, non vogliono occuparsi dell'introduzione dell'infrastruttura da parte loro per implementare un meccanismo codice / OTP (la più comune configurazione 2FA) per fornire quel robusto secondo fattore di autenticazione. (O rivolgersi a una terza parte per gestire gli OTP di implementazione per loro con un modello di autenticazione come servizio.) I risultati di questo sono piuttosto prevedibili: per ragioni che altri hanno sottolineato, il sostituto di questo pover'uomo non è altrettanto difficile per un utente malintenzionato da superare come meccanismo 2FA in cui è necessario ottenere un codice monouso da un dispositivo separato ("qualcosa che hai") ogni volta che accedi.

tuttavia, ci sono alcune cose su questo accordo che rendono in qualche modo preferibile usare solo una password per l'autenticazione da solo. Di gran lunga, i due maggiori problemi con l'affidamento solo su una password per autenticare un utente sono (a) il fatto che moltissimi utenti riutilizzano liberamente le password su molti account e (b) la tendenza di molti utenti a scegliere più facilmente -Minestre ma password molto deboli. Richiedere l'inserimento di un PIN che è stato generato casualmente dal servizio fornisce un ulteriore livello di protezione piuttosto significativo contro queste enormi minacce. (Anche se distribuire il PIN tramite email è una pratica scadente, per una serie di motivi.)

Naturalmente, niente di tutto questo ti sarà di grande aiuto se un utente malintenzionato riesce a rilevare malware sul tuo PC / dispositivo che registrerà il tuo PIN mentre lo inserisci. O se lui o lei può indurti a inserirti in un sito di phishing. In questo caso, la disposizione a discesa di immettere tre cifre casuali dal PIN a sei cifre potrebbe fornire alcuni vantaggi modesti in alcuni scenari. Molti keylogger moderni prenderanno screenshot del cursore del mouse ogni volta che l'utente fa clic su qualcosa, ma alcuni malware più semplici / più rudimentali continuano a catturare solo i tasti premuti. Per quanto riguarda il furto del PIN tramite phishing ... beh, qui c'è ancora meno utility fornita, semplicemente perché la necessità di inserire tre cifre casualmente selezionate da un PIN composto da solo sei cifre di solito non sta andando così imponendo un problema (Ancora una volta, per ragioni che altri hanno già spiegato bene). Tuttavia, si potrebbe obiettare che in alcuni scenari questa disposizione può fornire un po '(se un piccolo bit) di utilità aggiuntiva rispetto alla semplice possibilità che l'utente inserisca il proprio PIN completo ogni volta. (Forse.)

Tutto ciò detto, usando una vera e propria configurazione di autenticazione a due fattori sarebbe sicuramente preferibile da un punto di vista della sicurezza. Soprattutto se utilizzi codici / OTP monouso generati da un token hardware (più sicuro) o app di autenticazione dello smartphone. Nessun vero concorso.

    
risposta data 30.06.2016 - 21:30
fonte
0

Il secondo fattore "parte che conosci" potrebbe essere quale 3 dei 6 caratteri inviati tramite email (Mary usa 1st, 2nd, 5th, John: 1-2-6, Fred and Janet : 4-5-6) ... non so come insegneresti a quelli tuoi, ma una volta insegnato che il segreto non dovrebbe essere trasmesso di nuovo. E poi usa anche i lockdown stretti.

Gli SMS sono potenzialmente vulnerabili alle stingray, ma prendili con un pizzico di sale - dimensionato per quanto le persone motivate devono penetrare nel tuo sistema.

    
risposta data 29.06.2016 - 20:21
fonte