Ho dei problemi a capire lo scopo di un salt in una password. Comprendo che l'uso primario è quello di ostacolare un attacco da tavolo arcobaleno. Tuttavia, i metodi che ho visto per implementare questo non sembrano davvero rendere il problema più difficile.
Ho visto molti tutorial che suggeriscono che il sale sia usato come il seguente:
$hash = md5($salt.$password)
Il ragionamento è che l'hash non è ora associato alla password originale, ma a una combinazione di password e salt. Ma dire $salt=foo
e $password=bar
e $hash=3858f62230ac3c915f300c664312c63f
. Ora qualcuno con un tavolo arcobaleno potrebbe invertire l'hash e trovare l'input "foobar". Potrebbero quindi provare tutte le combinazioni di password (f, fo, foo, ... oobar, obar, bar, ar, ar). Potrebbero essere necessari alcuni millisecondi per ottenere la password, ma non molto altro.
L'altro uso che ho visto è sul mio sistema Linux. In / etc / shadow le password con hash sono effettivamente memorizzate con il sale. Ad esempio, un sale di "pippo" e la password di "bar" sarebbe hash a questo: $1$foo$te5SBM.7C25fFDu6bIRbX1
. Se un hacker in qualche modo fosse in grado di mettere le mani su questo file, non vedo quale scopo serva il sale, poiché te5SBM.7C25fFDu6bIRbX
è noto che l' hash inverso contiene "pippo".
Grazie per la luce che chiunque può farci.
EDIT : grazie per l'aiuto. Per riassumere ciò che ho capito, il sale rende la password con hash più complessa, rendendola molto meno probabile che esista in una tabella arcobaleno pre-calcolata. Ciò che ho frainteso prima era che stavo supponendo che esistesse una tabella arcobaleno per TUTTI gli hash.