Dlaczego hasła MD5 są mieszane inaczej?

22

Zastanawiam się od jakiegoś czasu, dlaczego uruchamianie „echo 'helloworld' | openssl passwd -1 -stdin" daje różne wyniki za każdym razem? Jeśli wstawię jakiś skrót w / etc / shadow, mogę użyć go jako mojego hasło i login do mojego systemu, jak to działa?

computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$xlm86SKN$vzF1zs3vfjC9zRVI15zFl1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$/0.20NIp$pd4X9xTZ6sF8ExEGqAXb9/
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$sZ65uxPA$pENwlL.5a.RNVZITN/zNJ1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$zBFQ0d3Z$SibkYmuJvbmm8O8cNeGMx1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$PfDyDWER$tWaoTYym8zy38P2ElwoBe/

Pomyślałbym, że ponieważ używam tego skrótu do opisywania w systemie, jakie powinno być moje hasło, powinienem uzyskiwać te same wyniki za każdym razem. Dlaczego ja nie

Piotr
źródło
3
Gdyby za każdym razem były takie same, atakujący mógłby po prostu przesłać miliardy popularnych haseł i łatwo je sprawdzić.
David Schwartz

Odpowiedzi:

37

Wszystkie mają inną sól . Za każdym razem wybiera się unikalną sól, ponieważ nigdy nie należy jej ponownie używać. Użycie unikalnej soli dla każdego hasła czyni je odpornymi na ataki tęczowego stołu .

Michael Hampton
źródło
6
Warto wspomnieć, że wynik zawiera sól po 1 $ (symbole dolara są separatorami).
poke
6
Więc w haszu „1 $ xlm86SKN $ vzF1zs3vfjC9zRVI15zFl1” xlm86SKN to sól, a vzF1zs3vfjC9zRVI15zFl1 to skrót solonego piekielnego świata?
Peter
2
@Peter: dokładnie.
Joachim Sauer
3

Rzeczywiście, jeśli podasz sól do linii poleceń, zawsze otrzymasz ten sam wynik.

$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
danidemi
źródło