Trzymanie zhashowanego hasła w bazie

Trzymanie zhashowanego hasła w bazie
siararadek
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam was,

Chciałbym się zapytać czy taki sposób trzymania/dodawania hasła do bazy jest właściwy, i dlaczego powinienem go zmienić:
Pseudokod:

Kopiuj
public void AddPasswordToBase(User user)
{
            string salt = System.IO.Path.GetRandomFileName();

            byte[] buff = System.Security.Cryptography.SHA256.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(user.password + salt));

            StringBuilder hash = null;

            foreach (byte buf in buff)
            {
                hash.Append(buf.ToString("x2"));
            }

            SendToBase(user.id,hash.ToString(),salt);

} 
Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
0

właściwy pod jakim względem?

  • Rejestracja: dni
  • Ostatnio: dni
0

Zły jest prawdopodobnie dlatego, że zapisujesz salt, a to raczej wg mnie nie ma sensu. Salt zazwyczaj robi się stałą na cały program i nie ma sensu jej zapisywać gdziekolwiek, może być stałą. Do tego warto kolumne w przypadku sha256 zrobić char[64]

  • Rejestracja: dni
  • Ostatnio: dni
0

Oczywiscie, ze doklejenie soli do hasłi to dobry pomysł. Wydobycie jej z programu, to zazwyczaj zaden problem, a majac sol i pokaźna ilość haseł, to swietny material do kryptoanalizy - wiec generowanie indywidualnej soli dla kazdego hasla jest duzo lepszym pomyslem.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

dokładnie - sól może być jawna (i tak gdzieś umieszczona musi być) ale stała dla wszystkich haseł ułatwia przeprowadzenie ataku „rainbow tables”.

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
0

się tak zastanawiam jakby jako sól traktować np md5 hasła - czyli do bazy zapisujemy SHA256(Passs + MD5(Pass)) - wtedy odpada zapisywanie soli dla każdego hasła

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.