Password / Sicurezza dell'account: quanto è sicuro "troppo sicuro"? [chiuso]

12

Ora sono sulla fase di sviluppo del sistema di back-end, in cui siamo in grado di visualizzare / modificare tutte le informazioni sui clienti, le loro informazioni sui clienti e così via.

Sto cercando di richiedere l'uso dell'autenticazione a due fattori tramite l'app di autenticazione (NON SMS) (già implementata), e se questa non è disponibile, richiede l'uso di una password molto, molto strong e la limita a una certa quantità di giorni prima di dover cambiare, oltre a bloccare le password più comuni.

Ho un certo numero di "elenchi di password comuni", ottenuti da un repository Github, trovato qui: link .

Sto cercando di utilizzare la lista delle 100.000 password, perché credo che offra il meglio senza andare troppo lontano, ma ho bisogno delle tue opinioni se tu usassi la lista 1 / 10k o milioni.

Infine, guardando avanti, sto cercando solo il pieno accesso ai dati se l'account è loggato tramite una VPN aziendale, e se no, dai loro una versione stupida che non li lascia andare abbastanza in profondità .

Quando si tratta di generare automaticamente una password sicura per l'utente usando una sorta di script JS / back-end, non credo che questi siano mai la risposta. Questo perché, non hanno intenzione di ricordare la password, salvarla solo nel browser. Nel momento in cui tentano di accedere da qualche parte dove la loro password non viene salvata, è possibile garantire che il loro account riceverà una richiesta di reimpostazione della password. Ciò può comportare un uso interrotto per quella sessione, o se diventa troppo per loro, una mancanza di utilizzo per l'intero account per il prevedibile.

Per il personale a questo livello, ho anche disattivato l'opzione di reimpostazione della password basata su e-mail e ho richiesto che lo facessero internamente, per garantire che settimane di implementazioni della sicurezza e ore di spiegazione che il mio thread SE SE non fosse off topic non Non perdere una password per un indirizzo email impostato 10 anni fa.

Le informazioni che il nostro personale può visualizzare includono TUTTE le informazioni sui clienti E le loro informazioni sui clienti come i dettagli di contatto completi, l'indirizzo di casa completo, il codice di ordinamento del conto bancario / numero di conto, la possibilità di caricare la loro carta (non memorizziamo i loro CC informazioni, solo una PP / Stripe Key) anche per le abitudini di spesa, oltre ad altri bit.

Quali sono le tue idee sull'implementazione del modo più efficace in cui è possibile proteggere l'account di un utente di questo livello, non solo attraverso password ma altri mezzi, senza fastidioso per l'utente?

    
posta DomLip 12.06.2017 - 17:54
fonte

4 risposte

26

Devi bilanciare la sicurezza con l'usabilità.

Le ultime linee guida NIST sulle password dicono che non è necessario imporre modifiche periodiche della password per il gusto di farlo e non si devono imporre regole di complessità della password eccessive. La guida suggerisce che possono generare password meno sicure, puoi leggere un riepilogo qui Riepilogo della password NIST

Suggerisce che prevenire le password più comuni è la migliore pratica e per questo la mia impressione è che i primi 100.000 dovrebbero essere abbastanza buoni, penso che il milione più alto sia eccessivo. gli utenti si sentiranno frustrati se riescono a tentare la registrazione al 4000esimo tentativo di password.

questa bella infografica di Intel mostra perché la lunghezza è più importante della complessità Infografica password Intel

L'autenticazione a due fattori migliora decisamente la sicurezza ma sii consapevole del pensiero corrente sull'utilizzo di SMS a causa di insicurezze nei protocolli di routing SS7 e considera alternative come le app di autenticazione ARS Technica 2FA / SS7

    
risposta data 12.06.2017 - 18:09
fonte
4

Dalla mia esperienza, le passphrase sono molto più facili da ricordare rispetto alle password e non sono più lente da digitare. Voglio dire, la password standard raccomandata richiede più cifre più segni diacritici, il che significa che le dita devono manipolare il tasto Maiusc ed essere dappertutto sulla tastiera. Una semplice frase nella tua lingua madre di solito sarà altrettanto veloce da digitare e molto più facile sul cervello.

Apri un romanzo su una pagina a caso o usa un generatore di frasi casuale come questo .

Mi ha dato "I poliziotti ti hanno già trovato?"

Questo ha una lettera maiuscola, una "?", è facile e divertente da ricordare, ed è abbastanza lunga da contrastare l'NSA. Ed è molto più sicuro del compleanno dell'utente. Facile da ricordare, difficile da indovinare.

Inoltre, se sei un oratore non inglese come me, allora apre molte opportunità di inserire parole nella tua lingua madre che probabilmente non saranno incluse in un attacco di dizionario. Puoi scrivere un sandwich in russo?

    
risposta data 12.06.2017 - 23:39
fonte
2

Costruire un sistema sicuro non riguarda solo la lunghezza della password. Ciò che puoi e dovresti fare dipende da chi sono i tuoi utenti e quanto controllo sulle loro azioni puoi richiedere.

Questo può sembrare contro-intuitivo, specialmente dopo aver letto il resto della mia risposta, ma se gli utenti non lavorano per la tua azienda e stanno solo accedendo e gestendo i propri dati, inserire solo requisiti minimi su di essi. Se vogliono avere una password non sicura per i propri dati, non dovrebbero fermarli. Puoi avvertirli e fornire loro delle opzioni, e persino suggerirti qualcosa, ma non impedir loro di proteggere i loro dati come vogliono.

Detto questo, almeno diamo loro abbastanza opzioni per proteggere i loro dati, se lo desiderano. (Il mio più grande problema di sicurezza è che il sito abbia impostato un limite di lunghezza della password inferiore a 32 caratteri, ad esempio la password deve essere compresa tra 8 e 12 caratteri.)

D'altra parte, se lavorano per te e gestiscono i dati di altri, (e sembra che questo sia almeno parzialmente il caso in cui hai menzionato che il personale ha un accesso più ampio), ci sono molte cose che puoi fare .

Tenendo presente che la maggior parte di questo si applica solo al secondo caso in cui le persone lavorano per la tua azienda, ecco i miei suggerimenti:

  1. Per un sistema molto sicuro, richiede sicuramente un'autenticazione a 2 fattori di qualche tipo. Per un'interfaccia web è possibile richiedere certificati client (su smart card o simili) per l'autenticazione oltre alle password. Ciò significa che un utente deve avere qualcosa e sapere qualcosa. È inoltre possibile utilizzare qualsiasi generatore di token (hardware o software) per un livello di sicurezza simile, ma in genere è necessario che l'utente inserisca qualcosa di diverso ogni volta, mentre il metodo di certificazione può semplicemente aver luogo finché l'utente ha il suo smart scheda (protetta con un pin statico ovviamente).

  2. Disconnettere una sessione dopo l'inattività. Non limitarti a disconnettere le persone se continuano a fare cose. Registrali se non hanno fatto cose per circa 5 minuti.

  3. Richiede l'uso di generatori di password crittografati lato client come KeePass o LastPass in modo da poter effettivamente richiedere password con 64 caratteri o più. Poiché questi sono memorizzati sulla macchina di un utente e crittografati con la propria password, rendono l'autenticazione più debole tra un utente e il proprio computer. La porzione di autenticazione Internet utilizza una password molto più sicura e previene i problemi di riutilizzo della password. (Il riutilizzo della password è il tuo più grande nemico qui)

  4. Richiedi sempre la VPN. Questo può sembrare troppo zelante, ma ho visto troppi sviluppatori web che non hanno un minimo di conoscenza della sicurezza, e non ci vuole molto prima che il loro codice venga sfruttato. Se tuttavia tutto il materiale web è fatto su una VPN (almeno per i dipendenti), quindi quelli che non dovrebbero avere accesso non vedranno mai la schermata di login, insicura o no. (Questa non è una licenza per scrivere codice non sicuro)

  5. Assumi un esperto di sicurezza. E se il tuo budget lo consente, un'intera squadra. Perché non puoi pensare a tutto, e avere qualcuno specializzato in sicurezza guarda i tuoi sistemi è probabilmente l'idea migliore che posso darti. Assicurati che eseguano una buona quantità di test di penetrazione.

L'idea principale alla base della sicurezza del sistema è conoscere il tuo modello di minaccia (con le informazioni sull'account del tuo conto bancario memorizzate, hai un modello di minaccia VERAMENTE di alto livello) e la difesa in profondità. Metti il maggior numero possibile di strati tra i tuoi sistemi e le tue nemesi senza sacrificare troppa comodità per i tuoi utenti legittimi.

Considerazioni finali: Allenare i dipendenti a utilizzare pratiche sicure non è chiedere troppo a loro. Le password non riguardano solo la lunghezza e la complessità. Il riutilizzo della password è uno dei problemi più complicati che dobbiamo affrontare e uno dei principali motivi per utilizzare 2fa. Sarei disposto a scommettere che molti tuoi impiegati usano la stessa password per il lavoro che svolgono per altri servizi. Questi servizi non hanno lo stesso modello di minaccia e non custodiscono i loro sistemi in modo giudizioso.

    
risposta data 13.06.2017 - 02:28
fonte
2

Per rispondere alla tua domanda "Quali sono le tue idee sull'implementazione del modo più efficace in cui è possibile proteggere l'account di un utente di questo livello, non solo attraverso password ma altri mezzi, senza infastidire l'utente?"

Una pratica comune di cui sono a conoscenza è "eccessiva" è la pratica di bloccare gli account dopo la quantità X di tentativi falliti. Questo per prevenire attacchi di forza bruta. A prima vista, sembra ragionevole, ma considera quanto segue:

  • Le liste di nomi utente sono relativamente facili da afferrare o indovinare.
  • Il numero di tentativi falliti che causano il blocco è in genere piuttosto ridotto. (10 o meno)
  • L'accesso come utente da un dispositivo remoto è comune.

Quando li metti insieme, una società potrebbe essere messa in ginocchio da uno script malevolo che accede in modalità remota come ogni utente o un grosso gruppo di utenti più volte, bloccando tutti gli account. Per evitare ciò, è sufficiente limitare il numero di tentativi da una determinata posizione a 1 ogni X secondi dopo N tentativi. Gli attacchi di forza bruta si basano su molte ipotesi in un lasso di tempo molto breve. Se un attacco di forza bruta può solo tentare 1 attacco ogni 5 o 30 secondi, piuttosto che migliaia al secondo, la rotta della forza bruta diventa impraticabile.

Questo può essere fastidioso per gli utenti perché hanno bisogno di chiamare qualcuno per sbloccare il proprio account, ma in realtà può essere utilizzato come difetto di sicurezza. Oltre ad aggiungere un modo per un codice dannoso per bloccare tutti, può anche causare la desensibilizzazione dei possessori di chiavi alle persone che chiedono di avere account sbloccati. Questo può portare ad attacchi di social engineering più avanzati.

Per esempio: IT guy: "Questa è la terza volta questa settimana!"
Attentatore malintenzionato: "Sì, non riesco a ricordare la mia password! Potresti reimpostarla su ..."

Modificato per mostrare come risponde alla domanda.

    
risposta data 12.06.2017 - 20:32
fonte

Leggi altre domande sui tag