Temat: hashowanie hasła
Co do zabezpieczania haseł podam jeszcze link do wspaniałego artykułu o bezsensowności szyfrowania haseł 1 kluczem itp:
http://niebezpiecznik.pl/post/haslo-edwarda-snowdena-d...
Podobny problem statystyczny występuje w przypadku hashowania, bez problemu można odgadnąć najpopularniejsze hasła patrząc na statystykę, w ten sposób mamy podstawę do odgadnięcia soli i algorytmu.
Co prawda nigdy nie robiłem aplikacji dla dużej ilości użytkowników ale gdybym stanął przed takim zadaniem a inwestor przekładał bezpieczeństwo ponad pieniądze to:
- statystykę rozmyłbym stosowaniem kilkudziesięciu soli uzależnionymi od e-maila/loginu lub jakiegoś ich hasha
- e-maile/loginy hashowałbym kilkudziesięcioma solami uzależnionymi od ich zawartości (tylko tutaj jest haczyk bo nieodpowiednie użycie filtrów e-maili może też stworzyć statystykę)
- wymagałbym użycia skomplikowanego hasła
- sól działałaby jako mix z hasłem a nie zwykła sklejanka stringów, szczególnie w loginie/e-mailu gdzie hash jest generowany bezpośrednio
- ewentualnie mógłbym zaszyfrować tabelę użytkowników i trzymać odszyfrowaną zawartość jedynie w RAM chociaż mało w tym sensu ponieważ włamywacz prawdopodobnie zrobi zrzut pamięci w poszukiwaniu klucza
Alternatywnie można zmiksować e-mail, hasło i sól generowaną z e-maila, powstanie bardzo trudny hash chociaż od razu wiadomo co mniej więcej zawiera i da się zautomatyzować jego poszukiwanie(punkt zaczepienia to własne konto).
Ogólnie chcąc zabezpieczyć hasła trzeba się skupić na nietypowych sposobach przetwarzania których nie da się rozpoznać automatycznie, chociażby sztuczka z "ręczną" podmianą jednego znaku w hashu według dziwnego klucza :) Niestety wszystkie te wysiłki maja sens jedynie w przypadku włamania na sam serwer SQL.