Czy hashed i solone hasła zabezpieczają przed atakami słownikowymi?

Rozumiem, że sole tworzą ten sam skrót hasła do różnych wartości. Jednak sole są zazwyczaj przechowywane w bazie danych za pomocą hasła. Powiedzmy, że jestem atakującym, oto jak mogę użyć ataku słownikowego na sól (w tym przykładzie nie wypisuję 128 bitowych skrótów lub soli dla zachowania zwięzłości):

user_pw = 'blowfish'

Given:
email = '[email protected]'
hash = '1234567890'
salt = '0987654321'

function attack(){
  for each(word in dictionary)
    md5( word * salt ) == hash ? cracked_one(email, word)
}

Rozumiem, że to uniemożliwia hakerom korzystanie z tablic tęczowych ... ale nie wydaje się, aby zapobiegało atakom słownikowym. Myślę, że można dodać coś innego do algorytmu mieszania, ale z bezpieczeństwem musimy założyć, że metoda ataku jest znana.

Wydaje się więc, że solowanie uniemożliwia hakerom ustalenie, które hasła mogą być hasłami słownikowymi (takimi, które mają wielu użytkowników) i zapobiega atakom tęczy ... ale nie zapobiega atakom słownikowym.

Czy to poprawna analiza? Wszelkie sugestie dotyczące lepszego bezpieczeństwa?

Dzięki!

questionAnswers(5)

yourAnswerToTheQuestion