Come vengono decifrati le tue password? Come migliorare la sicurezza delle password?
In questo articolo, abbiamo presentato diversi metodi classici per decifrare le password, insieme ai principi sottostanti a questi approcci. Affrontando questi concetti, abbiamo fornito pratiche sia dal punto di vista dei custodi delle password che dei proprietari di account su come migliorare la sicurezza delle password.
Spesso vediamo notizie che le password degli utenti di alcune app ben note con una vasta base di utenti vengono divulgate. Potresti pensare che, poiché non usi quella particolare app, tali incidenti non abbiano nulla a che fare con te, ma in realtà non è così.
Recentemente, ci sono state anche notizie su Twitter che i metodi AI possono accelerare notevolmente la velocità di decifrare le password. Quindi, volevamo comprendere le complessità dietro a questo e vedere come possiamo migliorare la sicurezza delle nostre password.
Come vengono decifrate le password?
In generale, le password degli account sono tipicamente elaborate utilizzando vari algoritmi di hashing e poi memorizzate nei database. Puoi fare riferimento al nostro precedente blog per ottenere una migliore comprensione dell'hashing delle password. Sfortunatamente, alcuni fornitori di servizi, privi di buon senso, memorizzano le password in testo normale all'interno dei loro database. Questa pratica può risultare in danni ancora più significativi se i dati vengono divulgati.
Salvando le password hashate, anche gli amministratori del database non possono accedere alla tua password originale, aumentando significativamente la sicurezza. Quando si verifica la correttezza di una password immessa, lo stesso algoritmo di hash viene utilizzato per elaborare la password inserita. L'hash risultante viene quindi confrontato con il valore memorizzato nel database. Se i due valori di hash coincidono, la password inserita viene considerata corretta.
In termini semplici, decifrare una password comporta generare stringhe che aderiscono alle regole consentite per le password. Coinvolge quindi il controllo continuo di queste stringhe utilizzando il metodo menzionato in precedenza per infine scoprire la password in testo normale corretta.
Metodi comuni per decifrare le password
In questa sezione, introdurremo brevemente tre modi comuni per decifrare le password.
Attacco a forza bruta
Gli attacchi a forza bruta solitamente enumerano tutte le possibilità all'interno delle regole delle password permesse e le provano una ad una.
Ad esempio, i telefoni cellulari possono impostare una password numerica a 4 cifre. Gli attacchi a forza bruta proveranno tutte le possibilità una per una da 0000
, 0001
, 0002
, ..., fino a 9999
.
Gli attacchi a forza bruta sono molto dispendiosi in termini di tempo, perché ci sono troppi tentativi. Supponendo che la lunghezza della password sia $L$, e il numero di caratteri possibili per cifrare una password sia $n$, allora il numero di possibilità che gli attacchi a forza bruta devono tentare è $n^L$, che è un numero molto grande.
La ragione per cui molte password richiedono una combinazione di numeri, lettere maiuscole e minuscole e caratteri speciali è per aumentare $n$, il che aumenta notevolmente il numero di possibilità, aumentando così la difficoltà di decifrare la password.
Attacco a dizionario
Gli attacchi a dizionario utilizzano parole dai dizionari, spesso combinate con spazi, numeri, simboli speciali e altri elementi, per formare varie combinazioni di password. Queste combinazioni vengono poi utilizzate per cercare di indovinare le password.
Molte persone scelgono di utilizzare frasi con significati chiari come password per facilità di ricordo. Gli attacchi a dizionario si rivelano un metodo efficiente per decifrare le password con tali caratteristiche.
Attacco a tabella arcobaleno
Una tabella arcobaleno è una mappatura precomputata delle password in testo normale ai loro corrispondenti valori di hash. Confrontando direttamente i valori di hash memorizzati nel database con quelli nella tabella arcobaleno, qualsiasi corrispondenza trovata può essere utilizzata per cercare e recuperare direttamente la password in chiaro corrispondente.
Le tabelle arcobaleno offrono il vantaggio di fornire un accesso immediato alle password in chiaro se il valore di hash è stato pre-calcolato (e registrato nella tabella arcobaleno). Tuttavia, è importante notare che se il valore di hash non è stato precomputato (e quindi non presente nella tabella), una tabella arcobaleno non può essere utilizzata.
Oltre ai metodi descritti sopra, ci sono numerose altre tecniche non trattate qui. In generale, si utilizza una combinazione di questi metodi per includere tutte le password possibili e velocizzare il processo di decifratura.
Come accelerare la decifratura delle password?
Nella sezione precedente, abbiamo introdotto brevemente alcuni metodi classici per decifrare le password. Da essi possiamo riassumere alcune idee per migliorare la velocità o il tasso di successo della decifratura delle password.
Per decifrare una password, spesso implica due passaggi:
- Determinare lo spazio di ricerca per la password (generare password possibili)
- Utilizzare l'algoritmo di hash per generare hash per le password possibili ottenute nel passaggio precedente e confrontarle con l'hash della password da decifrare
L'attacco a dizionario e l'attacco a tabella arcobaleno menzionati sopra ottimizzano questi due passaggi rispettivamente:
- L'attacco a dizionario restringe lo spazio di ricerca per le password. Partendo dall'assunto che "gli utenti tendono a creare password usando combinazioni di parole con significati reali", parole come
zzzz
non sono incluse nel dizionario, il che significa che non verranno tentate come password potenziali. Questa pratica è simile a escludere preventivamente risposte errate. Analogo all'affrontare domande a scelta multipla, mentre potresti non essere certo dell'opzione corretta, puoi identificare quali scelte sono sicuramente sbagliate. Eliminando queste opzioni ovviamente scorrette, le tue possibilità di indovinare correttamente tra le scelte rimanenti sono aumentate. - L'attacco a tabella arcobaleno accelera il tempo di esecuzione dell'algoritmo di hash. Per individui esperti in strutture dati, la ricerca è un'operazione con complessità $O(1)$, e nessuna operazione può essere più semplice di $O(1)$ in termini di complessità temporale. Al contrario, la complessità temporale degli algoritmi di hash comunemente usati come MD5 e SHA è $O(n)$, che è significativamente più lenta di $O(1)$.
In pratica, anche l'ottimizzazione del processo di decifratura delle password parte dalle due prospettive menzionate sopra. Vale la pena menzionare che, a causa dello spazio relativamente ristretto per ottimizzare la complessità temporale $O(n)$ per gli algoritmi di hashing delle stringhe, si considerano maggiormente il miglioramento dell'hardware o dei metodi di calcolo, che non verranno approfonditi qui.
Allora come aiuta l'AI a decifrare le password?
Nell'intero sforzo di decifrazione delle password, il ruolo dell'AI si estende all'apprendimento di certi modelli e metodi di costruzione dalle password plain text esposte. Successivamente, l'AI può simulare questi modelli di costruzione delle password per generare un insieme di potenziali password. Successivamente, l'AI può impiegare algoritmi di hash o anche hardware specializzato per eseguire la decifratura delle password.
Di fatto, rispetto ad altri strumenti di decifratura delle password, il vantaggio di PassGAN è che può "indovinare le password più probabili il più rapidamente possibile", che è l'idea di "ridurre lo spazio di ricerca delle password possibili" che abbiamo menzionato sopra.
Come rendere più sicure le password?
Spiegheremo come proteggere le password da due prospettive. Qui iniziamo semplicemente dalla password stessa, senza discutere altri mezzi per garantire la sicurezza degli account, come l'autenticazione multi-fattore (MFA) e così via.
Dalla parte dei fornitori di servizi di identità
In quanto fornitori di servizi di identità, ospitano tutte le password degli utenti, il che impone loro la responsabilità di salvaguardare la sicurezza di queste password. Ecco diversi schemi che possono essere implementati per migliorare la sicurezza delle password degli utenti:
-
Evitare di memorizzare le password in testo normale: Sebbene possa sembrare un senso comune, alcuni fornitori di servizi ancora memorizzano le password in testo normale all'interno dei loro database. Utilizzare valori di hash per memorizzare le password aggiunge un livello di sicurezza; anche se il database viene compromesso, gli hacker avrebbero bisogno di notevole sforzo per decifrare le password hashate.
-
Applicare limiti di frequenza all'interfaccia API per la verifica delle password: Torniamo al processo di decifratura delle password menzionato in precedenza. Una parte integrante di questo processo implica "verificare" se una password è corretta. Poiché le password sono affidate ai fornitori di servizi di identità, sono le uniche entità dotate di offrire API per la verifica delle password. Limitando la frequenza di accesso a questa API, possiamo impedire agli hacker di tentare rapidamente varie password, anche se possiedono supposizioni di password altamente probabili.
-
Imporre composizioni di password più complesse: Ad esempio, come menzionato in precedenza, una maggiore varietà di caratteri all'interno delle password di una data lunghezza contribuisce a una maggiore complessità. Inoltre, impiegando tecniche AI simili a quelle discusse in precedenza, è possibile valutare la sicurezza delle password prima della presentazione. Se una password viene considerata debole, gli utenti possono essere invitati a selezionare un'alternativa più robusta.
Dal punto di vista degli utenti
In quanto proprietari di account e beni digitali associati, gli utenti devono prestare la massima attenzione per garantire la sicurezza delle loro password.
-
Evitare di utilizzare la stessa password su siti diversi: Dopo aver ottenuto password da certi siti, molti hacker tentano di utilizzare quelle credenziali di account per accedere ad altri siti. Se più account per servizi diversi condividono la stessa password, potrebbe esserci il rischio di perdere account e di subire una perdita di informazioni nello scenario menzionato sopra.
-
Optare per password puramente casuali ogni volta che è possibile: Questo approccio aiuta a prevenire il riutilizzo di schemi di password comuni che la maggior parte delle persone utilizza (come menzionato in precedenza, usando frasi in inglese), complicando così gli sforzi degli hacker per "restringere lo spazio di ricerca delle password" e aumentando il livello di complessità delle password.
In quanto fornitore di infrastrutture per servizi di identità, Logto ha implementato molte delle migliori pratiche sopra menzionate per proteggere la sicurezza degli account degli utenti. Questo permette agli utenti di interagire con varie app senza preoccupazioni di perdita di account, mentre consente anche ai fornitori di servizi online di garantire la sicurezza dei dati degli utenti con il minimo sforzo, consentendo loro di concentrarsi sulle loro attività principali.