Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Solenie - Na czym polega?


Rekomendowane odpowiedzi

Opublikowano

Witam.

 

Wytłumaczy ktoś pojęcie solenia haseł (lub haszów)

I da przykład?

 

Ja pomyślałem żeby skrypt php pobierał pierwszą literę loginu, i na tej podstawie dodawał sól (każda litera ma inny ciąg znaków)

Opublikowano

Hashowanie haseł polega na przechowywaniu wartości bezpiecznej funkcji hashującej, której na wejściu podajemy hasło wpisane przez użytkownika.

Ważne jest, aby odróżniać funkcje hashujące (używane w algorytmice) od bezpiecznych funkcji hashujących (używanych w kryptografii).

Funkcja hashująca (mieszająca) jest używana w budowie tablic hashujących – popularnych struktur danych w algorytmice. Celem funkcji hashującej jest wygenerowanie pewnego skrótu z dowolnie dużej wiadomości.

1 /** Przykład klasycznej funkcji hashującej **/
2 function classicHash(x) { 3 return x.length %
3;
4 }
5
6 classicHash("Securitum"); //0
7 classicHash("Vizzdoom"); //2
8 classicHash("Ala ma kota"); //2
9

Jak widać funkcja hashująca nie musi być niczym skomplikowanym. W powyższym przykładzie, z dowolnie długiej wiadomości funkcja zwraca wartości od 0 do 2. Oczywiście classicHash(x) w żaden sposób nie może zostać użyty, jako część mechanizmu składowania haseł, ponieważ hasło vizzdoom mogłoby być użyte do logowania na konto użytkownika używającego hasła Ala ma kota.

Problem ten rozwiązują bezpieczne funkcje hashujące (funkcje skrótu kryptograficznego), których wynik potocznie nazywany jest hashem.

Bezpieczne funkcje hashujące h(x) = hash są funkcjami hashującymi z następującymi właściwościami:

  • Jednokierunkowość – na podstawie wyjścia (hash) nie możemy w żaden sposób określić wejścia (x).
  • Wysoka odporność na kolizje – bardzo trudna generacja tego samego wyjścia (hash) przy użyciu dwóch różnych wejść (x1, x2).
  • Duża zmienność wyjścia – duża różnica wyjść (hash1, hash2) wygenerowanych przez bardzo podobne wejścia (x1, x2).

W kontekście bezpieczeństwa haseł, jednokierunkowość zapewnia, że nie można wyliczyć (poznać) oryginału hasła podanego przez użytkownika, gdy jest się w posiadaniu wyłącznie jego skrótu.

Wysoka odporność na kolizje rozwiązuje problem logowania się na cudze konto z wykorzystaniem innego hasła.

Duża zmienność hashy sprawia, że atakujący nie jest w stanie określić natury oryginału hasła – jego długości, użytych znaków czy nawet podobieństwa do innego oryginału.

Wszystkie powyższe właściwości znacząco zwiększają bezpieczeństwo, a ich stosowanie jest przezroczyste dla użytkowników.

Niemniej, hashowanie haseł nie rozwiązuje wszystkich problemów bezpieczeństwa haseł statycznych. Każda funkcja skrótu kryptograficznego posiada pewne ryzyko kolizji. Zawsze też istnieje możliwość zindeksowania par hasło-hash, by przy ich pomocy odzyskiwać oryginały haseł. Przed atakami na hashe haseł można bronić się, starając się jak najbardziej wydłużyć proces wyliczania par hasło-hash dla użytej funkcji skrótu.

Jedną z takich metod jest metoda solenia haseł.

3. Solenie haseł

Bezpieczna funkcja hashująca na wejściu przyjmuje wiadomość o dowolnym rozmiarze. Atakujący może stworzyć prosty słownik hasło-hash i własnoręcznie go uzupełnić o popularne wyrazy i ich hashe. W momencie wykradzenia haseł w postaci hashowanej wystarczy, że porówna je z hashami ze swojego słownika. Znalezione przypasowania będą oryginalnymi hasłami, które były wprowadzane przez użytkowników.

Sam proces tworzenia takiego słownika jest prosty, jednak wymaga bardzo dużych nakładów pamięciowych i obliczeniowych. Jednak gdy oryginał hasła jest wyrazem krótkim lub nieskomplikowanym, wtedy szybko znajdzie się w słowniku agresora, zapewniając mu udany atak.

Rozwiązanie problemu odzyskiwania hashy nieskomplikowanych haseł zostało opracowane już w 1979 roku. Metoda zaproponowana przez badaczy Morrisa oraz Thompsona, polega na dodaniu do każdego hasła losowej, n-bitowej wiadomości (tzw. soli). Sól jest dodawana do każdego hasła wpisywanego przez użytkownika i dopiero całość jest przekazywana do funkcji skrótu. Dzięki temu, nawet proste hasła takie jak 12345 w rzeczywistości są przechowywane jako wynik bezpiecznej funkcji hashującej h("12345pk&Dsx8Gd_1shFd4") (sól 16 bajtowa). Tworzący słownik atakujący stoi przed wielokrotnie trudniejszym zadaniem, które nawet przy krótkich solach może stać się niewykonalne ze względu na niezmiernie długi czas obliczeń.

oabpsw.png
Opublikowano

@offtop

Nie, jednoczymy się xD

 

Edit: czy salt można zapisywać w bazie danych? Napotkałem się z takim czymś i pisało że morzna + salt dodajemy przed haszowaniem hasła

 

I dajcie przykład generowania saltu, ja wymyśliłem takie coś:

10 losowych znaków salt + hasło + salt zależny od 1 litery loginu + 10 losowych znaków salt tylko gdzie te salty zapisywać? W bazie? Czy to bezpieczne?

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...