Le password deboli e il riutilizzo delle password sono ancora alcune delle preoccupazioni più serie per la sicurezza informatica. Esistono diversi modi per aumentare la sicurezza delle password, ma spesso non vengono adottati da utenti e amministratori. Ecco come puoi assicurarti che i dati sensibili nella tua applicazione web non vengano compromessi a causa di password utente non sicure.

Lunghezza o complessità?

La politica di password più comune applicata dagli amministratori, sia nel caso di applicazioni Web che di altri sistemi, è una politica di lunghezza e complessità. Ad esempio, potrebbe essere richiesta una password complessa per contenere almeno 8 caratteri, lettere maiuscole e minuscole, numeri e caratteri speciali. Tuttavia, questa politica è in realtà abbastanza debole e non dovrebbe essere raccomandata.

Esistono diversi siti Web, in cui è possibile verificare il tempo necessario per violare la password utilizzando un attacco di forza bruta. Se inserisci una password di 8 caratteri con numeri, lettere maiuscole / minuscole e caratteri speciali in How Secure Is My Password , si dice che un computer potrebbe violare la password in 9 ore. D’altra parte, se si immette una password di 16 caratteri che utilizza solo lettere minuscole, il risultato è 224 milioni di anni.

La ragione di ciò è matematica. La formula per l’entropia della password è log 2 (R L ), dove R è il numero di caratteri univoci e Lè la lunghezza della password. Se si utilizzano solo caratteri minuscoli, L = 26. Se aggiungi caratteri maiuscoli e cifre, diventa 62. Con caratteri speciali, dipende da quali caratteri sono ammessi, ma diciamo che diventa 70. Per una password di una lettera, ciò significa che l’aggiunta di caratteri extra aumenta la complessità di tre volte . Ma una password di due lettere basata solo su caratteri minuscoli ha 262 = 676 entropia. Pertanto, l’aggiunta di un solo carattere minuscolo a una password minuscola aumenta la sua complessità non tre ma 26 volte. Puoi vedere chiaramente che è la lunghezza della password che conta davvero, non la complessità.

La lunghezza è sufficiente?

Se il crack della password fosse basato solo sul metodo della forza bruta (provando ogni singola combinazione possibile), la lunghezza della password sarebbe il modo migliore per rendere praticamente impossibile l’attacco. Tuttavia, esiste anche una tecnica di attacco informatico chiamata attacchi al dizionario, che in pratica significa indovinare la password in base alle parole comunemente utilizzate. Ad esempio, una password la rapida volpe marrone che salta sopra il cane pigro verrebbe violata da un attacco del dizionario quasi istantaneamente. D’altra parte, una password con esattamente le stesse lettere: vromjon tobki huhet qecar dzowyf xup selg , sarebbe quasi impossibile decifrare .

Fortunatamente, gli attacchi ai dizionari sono anche molto facili da evitare se si usano parole false che sono facili da memorizzare a causa del modo in cui suonano. Ad esempio, è possibile utilizzare una password lunga come bargle zaws gubble meh brudda dulgly . Coloro che conoscono le lingue oscure hanno ancora più semplice perché la maggior parte degli attacchi ai dizionari si basano sul vocabolario inglese e su molte altre lingue popolari del mondo. Ad esempio, la password nista ‘niekol il-ħġieġ, ma jweġġaniex potrebbe essere considerata abbastanza sicura.

Un’altra tecnica interessante per creare password sicure è usare solo le prime due lettere di ogni parola per formare una lunga password basata su una frase reale. Ad esempio, puoi creare una password più sicura dalla frase veloce fox marrone … : thequibrofoxjumovethelazdog (sebbene contenga ancora diverse parole del dizionario, il che non è ottimale). Ad esempio, puoi anche prendere la prima lettera di ogni parola da una frase più lunga che conosci bene: skwklbfhkskppp (il testo della canzone Soft kitty ). Naturalmente, in tutti questi casi la modifica di alcune lettere in maiuscolo e l’aggiunta di numeri tra le parole effettive aumenta anche la sicurezza (ad esempio, The7Qui0Bro1Fox2Jum3Ove4The5Laz6Dog ).

Si noti che gli strumenti per la violazione delle password replicano anche i trucchi degli utenti come la sostituzione di alcuni caratteri con numeri simili (ad es. 1 = i, 2 = z), invertire le parole (ad es. Drowssap ), aggiungere un numero alla fine, ecc. Pertanto, password come come dr0w554P123! si rompono facilmente.

Il falso senso di sicurezza

Un altro meccanismo molto comune utilizzato dalle applicazioni Web e da altri sistemi per aumentare la sicurezza delle password sta costringendo l’utente a cambiare regolarmente la propria password. Tali meccanismi di solito memorizzano gli hash per le vecchie password e quindi non consentono all’utente di riutilizzare nessuna delle password precedenti.

Sfortunatamente, questa politica introduce un falso senso di sicurezza perché gli utenti trovano semplici modi per aggirarla. Siamo onesti, cosa facciamo quando il sistema ci chiede di aggiornare la nostra password? Di solito aggiungiamo il prossimo numero consecutivo alla fine e continuiamo a sostituirlo ogni tre mesi quando richiesto ( password1 , password2 , password3 …).

Questa tecnica non aumenta l’entropia della password e non impedisce in alcun modo gli attacchi del dizionario. Pertanto, sempre più grandi player tra cui Microsoft si stanno allontanando dal raccomandare cambi regolari di password. Anche le grandi istituzioni come FTC ora stanno sconsigliando questo , quindi non implementare questo meccanismo nella tua applicazione web.

Il pericolo del riutilizzo della password

Anche se trovi la password più sicura, diventa insicuro se la usi su tutti i siti Web e in tutte le applicazioni. Con il numero di violazioni dei dati globali, esiste una grande probabilità che la tua password per alcuni siti sia stata compromessa. Se ritieni che ciò sia improbabile, potresti essere sorpreso: inserisci il tuo indirizzo e-mail su haveibeenpwned.

Fortunatamente, la maggior parte dei siti in realtà non memorizza le password in testo semplice ( anche se anche i più grandi attori sul mercato ne sono stati colpevoli ). Ciò significa che, nel caso di una violazione dei dati, è compromesso solo l’hash della password. Tuttavia, in molti casi, gli hash non sono sicuri. Molte applicazioni Web utilizzano algoritmi hash vecchi e facili da compromettere come MD5. In tal caso, l’attaccante ha bisogno di molto meno tempo per trovare la password sulla base di un hash. Naturalmente, più semplice è la tua password, più velocemente sarà compromessa.

Sfortunatamente, non è possibile verificare il riutilizzo della password nell’applicazione Web. Pertanto, devi semplicemente educare i tuoi utenti e fidarti che seguano i tuoi suggerimenti.

Sicurezza dei gestori di password

Per combattere il riutilizzo delle password, facciamo ricorso ai gestori delle password. Sono diventati più popolari negli ultimi anni e ce ne sono molti tra cui scegliere per ogni piattaforma. Molti di questi sono molto facili da usare e multipiattaforma. Ciò significa che, ad esempio, è possibile archiviare il database delle password (protetto con un’unica password lunga e molto complessa) nel cloud e accedervi dal PC, dal cellulare e da qualsiasi altra parte tramite un’interfaccia Web. I gestori di password combattono il riutilizzo delle password e possono anche generare password uniche complesse per te, anche se tali password non saranno facili da ricordare.

Alcuni gestori di password rendono ancora più semplice per gli utenti di applicazioni Web e introducono i propri plugin del browser Web. Tali plugin estraggono la password dal database delle password e la usano automaticamente sul sito Web. Tuttavia, tali plugin sono il tallone d’Achille dei gestori di password e dovrebbero essere evitati, come dimostrato ad esempio dall’ultima vulnerabilità di LastPass . Sarai molto più sicuro se apri manualmente Gestione password, copia la password e la incolli nell’applicazione Web.

Autenticazione a più fattori

La più forte difesa contro gli attacchi basati su password al giorno d’oggi è l’autenticazione a più fattori (MFA), spesso semplificata all’autenticazione a due fattori (2FA). Il presupposto di base è che l’utente deve fornire qualcosa che conosce (la password) e utilizzare qualcosa che ha (ad esempio uno smartphone o un token hardware). MFA fa persino parte dei requisiti di conformità più recenti per PCI DSS e altro. Tuttavia, non tutti i meccanismi di AMF sono ugualmente sicuri.

La tecnica MFA più comune è che l’applicazione Web invii un SMS con un codice una tantum al numero di cellulare fornito dall’utente. Questa è anche la peggior idea per l’AMF. Gli aggressori utilizzano attacchi SIM-swap per compromettere tali meccanismi. Truffano l’operatore di telefonia mobile nel rilasciare un duplicato della carta SIM dell’utente e lo utilizzano per ricevere il codice unico. Uno dei casi più popolari di tale attacco è stato il compromesso dell’account che appartiene al CEO di Twitter .

Un modo per evitarlo è utilizzare un’app mobile. Puoi sviluppare la tua applicazione o utilizzare soluzioni standard di una sola volta (OTP) come Google Authenticator o FreeOTP. Le app mobili utilizzano i codici una tantum generati dall’applicazione oppure inviano una notifica push sul cellulare (che è necessario confermare).

Tuttavia, l’utilizzo di un’app mobile può presentare un ulteriore problema per gli utenti. Se acquistano un nuovo telefono o devono ripristinare quello attuale, di solito devono visitare una filiale per ottenere nuovamente l’accesso ai servizi online. D’altra parte, se riescono a ripristinare l’accesso chiamando al telefono, ciò li rende molto sensibili alle truffe del social engineering. Inoltre, le app mobili basate su codici una tantum standard non proteggono gli utenti dal phishing: una pagina di phishing può fungere da proxy per la pagina reale e intercettare il codice e la password.

Token hardware per il salvataggio

L’ultima opzione di sicurezza per MFA sembra essere i token hardware. Tali token sono in circolazione da un po ‘di tempo, in diverse forme. Ad esempio, dalla fine degli anni ’90, molte banche hanno emesso token ai propri clienti per consentire loro di accedere ai servizi online. Tali token richiedono di ottenere il codice di accesso in base al codice seme visualizzato dal sito Web. Dispositivi come questo non sono stati utilizzati solo dalle banche ma, ad esempio, anche dai produttori di giochi (ad esempio, Blizzard dal 2008, ancora supportato fino a poco tempo fa). Esistono banche che utilizzano ancora tali token fisici anziché o in aggiunta alle app mobili.

Un’altra forma di token hardware sta diventando sempre più popolare: le chiavi hardware. Tuttavia, l’idea non è nuova: sono stati usati per anni da alcuni produttori di software per combattere la pirateria. Soluzioni come YubiKey, Google Titan, Thetis e altre consentono l’accesso a molte applicazioni e si basano su standard comuni (come OTP, Smart Card, OpenPGP, FIDO U2F, FIDO2). Esistono chiavi che puoi usare per computer e telefoni cellulari: possono usare un’interfaccia fisica (USB-A, USB-C) o wireless (Bluetooth, NFC). Puoi associare il tuo account a più chiavi contemporaneamente (se hai paura di perdere il token o se hai bisogno di token diversi per dispositivi diversi a causa dei requisiti tecnologici).

Oggi, anche i meccanismi di sicurezza hardware fanno parte delle normali apparecchiature informatiche. Per diversi anni, i computer desktop e portatili sono stati dotati di moduli hardware (TPM / SE) che forniscono tecnologie di crittografia. Il sistema operativo Windows 10 è compatibile con lo standard FIDO2, il che significa che qualsiasi dispositivo Windows 10 con il modulo hardware può funzionare come chiave hardware. I telefoni cellulari sono spesso dotati di scanner di impronte digitali o riconoscimento facciale. Tutti questi, in particolare in combinazione con le password, offrono ulteriore sicurezza. È vero che qualcuno può rubare il tuo telefono / laptop e le impronte digitali / gli scanner per il viso possono essere hackerati, ma la probabilità che il ladro abbia anche la tua password è molto piccola.

Tutte le password contano

In qualità di sviluppatore di applicazioni Web, potresti pensare che la violazione di una password utente non privilegiata non comprometta affatto l’applicazione Web. Sfortunatamente, non è sempre così. Ad esempio, se un utente malintenzionato utilizza un’iniezione SQL per ottenere l’elenco di hash delle password e quindi incrina anche la password di un utente, può utilizzare questo account utente per accedere al sistema e utilizzare l’escalation dei privilegi per ottenere l’accesso a un account privilegiato . Sfortunatamente, un utente malintenzionato potrebbe anche ottenere la password dell’utente tramite social engineering, phishing o malware e questo è qualcosa che tu, come sviluppatore di applicazioni web, non puoi evitare.

Pertanto, è necessario assicurarsi che gli utenti utilizzino sempre password sicure. Questo si riduce a due attività: l’utilizzo dei meccanismi di sicurezza delle password nell’applicazione Web e il test di password deboli. Nel primo caso, è possibile sviluppare i propri meccanismi o utilizzare soluzioni open source (come nowsecure o zxcvbn ) e nel secondo caso: utilizzare uno scanner di vulnerabilità Web in grado di verificare password predefinite e password deboli.