Supponiamo che ci sia un database contenente nomi e che ogni nome sia sottoposto a hash e che il testo sia cancellato.
Se un utente malintenzionato dovesse rubare questo database, sarebbe in grado di ottenere l'elenco dei nomi?
Supponiamo che ci sia un database contenente nomi e che ogni nome sia sottoposto a hash e che il testo sia cancellato.
Se un utente malintenzionato dovesse rubare questo database, sarebbe in grado di ottenere l'elenco dei nomi?
Una funzione di hash è a senso unico nel senso seguente: dato l'output, il metodo più veloce per trovare un input corrispondente è provare i possibili input finché non viene trovata una corrispondenza. Non puoi ottenere più a senso unico di quello. Tuttavia, questo non significa che i nomi di hashing e sperando in una partita non funzionino; infatti, i nomi delle persone non sono sufficientemente variati, è facile enumerarli e cancellarli tutti. Dato che una funzione di hash è pubblica (nessun elemento segreto) e deterministica (se hai due volte gli stessi dati, ottieni due volte lo stesso output), la forza bruta sui nomi funzionerà. Un PC con una GPU di medie dimensioni può eseguire hash miliardi di stringhe al secondo.
Lo stesso problema si verifica con le password , che sono limitate dall'immaginazione media degli utenti umani. Quando abbiamo cancellato le password, dobbiamo farlo con attenzione . Lo stesso vale per nomi , forse anche di più.
banalmente.
I nomi non hanno abbastanza entropia e, come ha detto Thomas Pornin, una GPU è abbastanza veloce da permetterti di costruire bruteforce attraverso miliardi di nomi finché non trovi gli hash corrispondenti relativamente rapidamente.
Se il database ha altri campi più lunghi che hanno molta entropia in loro, concatenandoli insieme e digitando la somma che con i nomi aumenterà l'entropia; più è lunga la migliore possibilità di raggiungere una lunghezza abbastanza lunga da consentire a un utente malintenzionato di raggiungere una durata ragionevole per ottenere le corrispondenze, purché si utilizzi un algoritmo di hashing sufficientemente potente.
Ciò che il mio ultimo paragrafo spiega è essenzialmente salatura.
È probabile che l'attaccante abbia così i sali; questo di per sé rende le cose difficili per gli attacchi stile rainbow-tables, ma non significa che l'attacker non possa ancora fare bruteforce concatenando le stringhe sul sale - in particolare facendo nomi comuni prima è probabile che non debbano provarne troppe.
Questo articolo è eccellente: link
Leggi altre domande sui tag cryptography hash