Anni fa, le password casuali di otto caratteri costituite da lettere maiuscole e minuscole, simboli e numeri erano davvero difficili da decifrare. In alcuni casi, ci sono voluti anni per decifrare una password come questa.
Grazie alla tecnologia odierna in continua evoluzione e all'hardware a noleggio, questo tempo è stato ridotto a ore. Ma come vengono memorizzate queste password in primo luogo? Verificare Le password appartengono al passato: ecco perché quest'anno vengono gradualmente eliminate.

Link veloci
Come vengono memorizzate le password su Internet?
I sistemi non memorizzano le password degli utenti direttamente in file o database, poiché un utente malintenzionato può controllare il database in cui i sistemi conservano le password. Invece, i sistemi crittografano i dettagli dell'utente, lasciando l'attaccante di fronte a una versione crittografata di ogni password.
Esistono alcuni algoritmi avanzati utilizzati dai sistemi per crittografare le password. Uno di questi algoritmi è l'algoritmo di crittografia simmetrica. Che è un tipo di crittografia in cui è possibile utilizzare la stessa chiave sia per la crittografia che per la decrittografia. La sicurezza degli algoritmi di crittografia simmetrica comporta alcuni rischi poiché esiste una sola chiave designata per la decrittazione. Per questo motivo, i sistemi generalmente non utilizzano algoritmi di crittografia simmetrica.
In generale, il metodo utilizzato dai sistemi per la crittografia è l'hashing degli algoritmi. Servono per il controllo e la rappresentazione dell'integrità dei dati, non per la crittografia dei dati. Gli algoritmi hash convertono i dati in un hash di dimensioni fisse. Solitamente rappresenta un hash univoco di dati. Ciò che la funzione hash dovrebbe fare è generare dati di lunghezza fissa di una quantità arbitraria di dati come mappa.
Grazie all'algoritmo di hashing, se un utente malintenzionato si impossessa del database contenente la password, non sarà in grado di accedere nuovamente alla password da qui. C'è una sfumatura molto importante a cui dovresti prestare attenzione qui. Teoricamente, un utente malintenzionato che irrompe in un sistema utilizzando lo stesso algoritmo di hashing per tutte le combinazioni di password può confrontare i risultati ottenuti. Se l'attaccante ottiene lo stesso valore come risultato di questi confronti, allora ha rilevato la versione aperta della password. Questo metodo riguarda tentativi ed errori e questo tipo di attacco è generalmente chiamato attacco di forza bruta.
All'inizio degli anni 8, ci sarebbero voluti centinaia di anni per provare tutte le combinazioni di password di 123456 caratteri crittografate con i popolari algoritmi di hashing. Naturalmente, combinazioni molto semplici come "XNUMX" o "mypassword" non sono incluse in questa combinazione. Con lo sviluppo delle tecnologie software e hardware oggi, anche il modo di decifrare le password è cambiato molto. Verificare Puoi fidarti della sicurezza dei gestori di password?
L'effetto dell'aspetto delle schede grafiche

Le capacità di elaborazione parallela dei dati dei processori grafici (GPU) sono migliorate nel tempo. Le schede grafiche non sono in grado di eseguire operazioni versatili come le CPU generiche. Quindi, anche se ci sono molti core e potenza di elaborazione parallela, non ha senso usarlo per quasi tutti i problemi come un processore.
Tuttavia, è possibile implementare alcuni algoritmi di hashing utilizzati per le password in modo molto efficiente su una GPU. Il numero di hash al secondo che puoi ottenere con le CPU tradizionali è cresciuto esponenzialmente con le nuove schede grafiche.
Per avere un'idea, esamina il numero di hash al secondo (il termine hash rate si riferisce alla velocità con cui un computer è in grado di eseguire calcoli hash) per algoritmi di hashing come NTLM, MD5 e SHA1 nella tabella seguente. È sufficiente, per ora, sapere che questi algoritmi sono solo un algoritmo di hashing. Per creare questa tabella, ho utilizzato un cluster di 25 GPU AMD Radeon.
| algoritmo | Il numero di hash al secondo |
| NTLM | 350.000.000.000 |
| MD5 | 180.000.000.000 |
| SHA1 | 63.000.000.000 |
| SHA512Cripta | 364.000 |
| Bcrypt | 71.000 |
| Scrypt | 33.000 |
Vedi, con un tale sistema, puoi generare un hash NTLM di 350 miliardi di volte al secondo. Ciò significa che puoi provare tutte le combinazioni di password di 8 caratteri in meno di 6 ore. Inoltre, l'hardware in questo esempio è degli anni passati. Immagina il potere del cracking delle password oggi.
Cosa dovrebbero fare gli sviluppatori di software?

Il modo in cui i programmatori dovrebbero procedere è molto semplice: dovrebbero preferire algoritmi che impiegano più tempo a calcolare i valori hash durante la crittografia delle password. Gli sviluppatori devono sapere non solo come si comporta l'algoritmo che stanno utilizzando su una CPU, ma anche quanto sia resistente rispetto al regno delle schede grafiche.
Se gli sviluppatori stanno lavorando con un framework software che gestisce anche la crittografia delle password come Django, Ruby on Rails e Spring Security, dovrebbero verificare se nel framework sono state prese le giuste decisioni in termini di sicurezza.
Ad esempio, usato Escogitare , che è una delle librerie più utilizzate per le operazioni utente in Ruby on Rails, utilizza Bcrypt come algoritmo di hashing predefinito. Consente inoltre di utilizzare un altro metodo come algoritmo di hashing. L'algoritmo Bcrypt è affidabile perché ci vuole ancora molto tempo prima che la scheda grafica arrivi al punto giusto.
In breve, più a lungo calcoli il valore hash, più sei al sicuro.
Quanti caratteri deve contenere la tua password?
Ogni carattere aggiuntivo che utilizzi aumenterà geometricamente il numero di tentativi ed errori necessari per decifrare la password e renderla più sicura.
Consideriamo questa situazione in due diversi scenari. Considera i valori forniti nella tabella sopra per l'algoritmo hash NTLM e immagina che proverai a decifrare la password. Immagina di prendere di mira password di otto o più caratteri.
| conteggio dei caratteri | Lettere maiuscole/minuscole e numeri | Lettere maiuscole/minuscole, numeri e simboli speciali |
| 8 | meno di un minuto | Due minuti |
| 9 | Due minuti | Due ore |
| 10 | Due ore | Una settimana |
| 11 | Sei giorni | سنتين |
| 12 | Un anno | 200 سنة |
| 13 | Più di 100 anni | Più di 1000 anni |
Esaminando la tabella, puoi vedere che una password di almeno 12 caratteri è sicura quando vengono utilizzate tutte le combinazioni di lettere maiuscole/minuscole, numeri e simboli speciali. Se non usi simboli speciali, risulta che devi usare 13 caratteri per arrivare alla lunghezza di una password sicura. Se utilizzi il metodo hash Bcrypt invece dell'hash NTLM in questo sistema, saranno sufficienti 8 caratteri. Tuttavia, non hai l'opportunità di vedere quale metodo di hashing viene utilizzato dal sistema a cui accedi tramite il Web che contiene la tua password. Questo è il motivo per cui dovresti considerare tutte le possibilità.
Il problema principale per gli sviluppatori di software è che è quasi impossibile convincere gli utenti ad avere una password di almeno 12 caratteri. Oggi si può dire che il tasso di utilizzo di una password di questa lunghezza sia basso. Pertanto, in base allo scenario di utilizzo del sistema sviluppato, sarà necessario trovare un compromesso che gli utenti accetteranno per migliorare la sicurezza della propria password.
Un ultimo suggerimento per gli sviluppatori è quello di controllare non solo la lunghezza minima ma anche la lunghezza massima degli input ricevuti dai form che hai fornito all'utente. Soprattutto quando abiliti l'uso di un algoritmo di hashing computazionalmente lento come Bcrypt per motivi di sicurezza, potresti incorrere in alcuni rischi se non controlli la lunghezza massima della password inserita dall'utente. Ad esempio, gli aggressori possono eseguire attacchi provando contemporaneamente dozzine di password di 100 caratteri con alcune richieste appositamente predisposte. In una situazione del genere, è molto probabile che il tuo sistema non risponda agli altri utenti. Verificare Come scoprire se le tue password vengono vendute online.
Consigli per l'utente finale
Mantieni la password di almeno 12 caratteri e assicurati di includere combinazioni di lettere maiuscole e minuscole, numeri e simboli speciali. Non dimenticare mai che i sistemi che memorizzano la tua password possono essere violati e le tue informazioni possono essere utilizzate in modo improprio. Non puoi sapere quali algoritmi utilizza il sistema per crittografare la password, quindi spetta interamente a te prendere precauzioni e creare password complesse. Puoi visualizzare ora Come generare password complesse online difficili da decifrare.









