Ciò che questo articolo avrebbe potuto significare è che mettere il sale da qualche parte nel mezzo della password aumenterebbe presumibilmente la possibilità di essere incrinato da un attacco di dizionario o dalla forza bruta, perché le regole per comporre lo stesso hash non potevano essere implementate nel tuo password cracker di scelta. In realtà, questa è probabilmente un'assurdità completa.
Come funziona?
Se usi un programma come John the Ripper , lo nutri con il tuo file di password in questo modo (non la sintassi esatta ):
username:password:salt
Quindi si passa il formato come parametro a cui si pensa venga generato l'hash. Questo può essere:
md5(pass + salt)
md5(salt + pass)
md5(md5(pass) + md5(salt))
md5(pass + md5(salt))
md5(md5(...(salt + pass + salt)...))
...
and whatnot.
John the Ripper ha un set di circa 16 sotto formati che puoi scegliere tra.
Mettere il sale da qualche parte nella password sarebbe probabilmente il seguente:
md5(password.substring(0,4) + salt + password.substring(4,end))
Quindi, usando una tecnica come questa, devi prima scrivere un piccolo plug-in per John, prima di poter iniziare a crackare (il che non dovrebbe essere affatto un problema).
Inoltre, come utente malintenzionato potresti avere un elenco di hash + sali di origine sconosciuta e non avere alcuna conoscenza del modo in cui viene composto un hash. Questo è raramente il caso. Se tu, in qualità di utente malintenzionato, riesci a estrarre hash e sali da un database, probabilmente troverai un modo per estrarre l'algoritmo di hashing della password del sito web o semplicemente crei un nuovo account con una password conosciuta, estrai l'hash e il sale per e forza bruta l'algoritmo che è stato usato per comporre l'hash finale (che può essere più o meno impegnativo).
Tutto sommato, è quasi del tutto arbitrario dove si inserisce il sale e se si o meno iterare l'algoritmo di hashing diecimila volte o meno. Questo NON fornisce una quantità significativa di sicurezza.
Se vuoi sicurezza, puoi fare meglio usando un algoritmo di hashing migliore o bcrypt o qualcos'altro che è dispendioso dal punto di vista computazionale.