2012-05-29 15 views
6

Zajmuję się tworzeniem aplikacji internetowych w Java i chcę, aby proces uwierzytelniania zabezpieczyć
za pomocą hashed haseł.Ile to jest wartości mieszania haseł w java dla bezpieczeństwa?

W mieszania
krok 1: bierzemy hasło podane przez użytkownika i dodać sól do niego.
krok 2: hash go za pomocą MessageDigest i zapisać wartość hashed w bazie

Podczas uwierzytelniania użytkownika podczas procesu logowania powtarzamy zarówno same powyższe kroki, ale zamiast
przechowywania wartości hashed my porównaj ją z wartością obecną w bazie danych.

Teraz wybaczyć moją ignorancję ale to, co chcę powiedzieć, to jeśli haker uzyskuje dostęp do bazy danych za pomocą innych
środków, to może zapewnić bezpieczeństwo jako haker nie może uzyskać prawdziwy tekst hasła z Hashed
wartość tak łatwo.

ALE jaki może zapewnić ochronę przed innymi formami ataków jak Bruteforce attack, Rainbow attack, dictionary attack itp jak używamy same kroki w celu uwierzytelnienia użytkownika do logowania?

Nie sądzę, hash hash teraz-a-dni wartość tyle.
Podaj mi kilka sugestii ..... jeśli się mylę.

+2

Solenie ma * bardzo specyficzne zastosowanie *. Nie rozwiązuje wielu niepowiązanych problemów bezpieczeństwa, ale bardzo skutecznie rozwiązuje problem. Ten problem to ataki słownikowe na cały DB hashowanych haseł. Inne ataki (takie jak brutalne wymuszanie strony logowania) nie wchodzą w zakres tego, co solone hashy * próbują * zapobiegać. –

+3

Celem kryptografii nie jest uczynienie danych niedostępnymi dla * wroga *, ale raczej uczynienie tego wystarczająco trudnym dla * wroga * aby zdać sobie sprawę z tego, że wymagany czas i wysiłek naprawdę nie są warte zachodu. – npinti

+0

@mukund Mówisz, że dodasz sól do hasła w pierwszym kroku. Dokładniej opisz, czym jest ta sól. –

Odpowiedz

4

Brutalna siła to brutalna siła. Nie możesz nic z tym zrobić, z wyjątkiem odmowy wypróbowania uwierzytelnienia (lub nałożenia opóźnienia) po N kolejnych nieudanych próbach. Oczywiście, jeśli haker ma zaszyfrowane hasło, będzie mógł brutalnie wymusić hasło, ale celem bezpiecznej funkcji mieszającej jest uczynienie tego bardzo długo.

Ataki tęczy/słownika są rozwiązywane przez solenie. Jeśli użytkownik wybierze "hasło" jako swoje hasło, atak tęczowy/słownik natychmiast znajdzie hasło. Ale ponieważ solenizujesz hasło z losową wartością, zakodowana wartość będzie miała wartość podobną do d7("58gd0}78sq5sQIazuAKpassword, która nie będzie znajdować się w tabeli/słowniku tęczy.

+0

hmm .. oznacza to, że należy zastosować inne metodologie, aby Twoja aplikacja była bezpieczna przed różnymi rodzajami zagrożeń bezpieczeństwa i mieszania jest tam aby chronić się tylko przed atakami tęczy/słownika. Dziękuję za odpowiedź. – mukund

-1

Możesz zapisać aplikację od ataku Bruteforce, ataku Tęczą, ataku słownikowego, wymuszając silne reguły dotyczące haseł, np. hasło powinno zawierać kombinację znaków alpejskich plus znaki specjalne, takie myPassWord 10 $

+1

W rzeczywistości długość jest o wiele lepsza niż ile możliwości może mieć każda litera. Łatwiej też będzie zapamiętać, jeśli nie pamiętasz, która litera jest kapitałem, a które liczbami. najlepiej wyjaśnić tutaj http://xkcd.com/936/ – robthewolf

0

Twoja troska jest słuszna. Hasło hashowane nie oznacza, że ​​ zapewnia dowolną warstwę zabezpieczeń, ponieważ obecnie dostępnych jest wiele narzędzi (takich jak here, here i here), aby uzyskać zwykły tekst na podstawie odwróconego hashowania i skrótu katalogu. Proponuję użyć JBcrypt, który ma własność soli, której nie musisz przechowywać w bazie danych, a ponieważ twoja sól nie jest znana nikomu, nawet ty też, to jest bardzo trudno wyjąć mieszankę i uzyskać zwykły tekst.

Więcej informacji o BCrypt jak na Wikipedia

0

solenie i mieszaja

Jest to proces, aby hasło nie odczytywane przez ludzi i trudno odzyskać oryginalne hasło, które użytkownik może wykorzystać w innym miejscu takie jak strona z kartą kredytową.

Uwierzytelnianie poprzez Login

Teraz twój przypadek użycia jest haker używać normalnego formularza logowania, aby zalogować się za pomocą brutalnej siły, która nie jest solenie i mieszania hasła robić, ponieważ to ty wniosek logiczny, aby zapobiec wielokrotne logowanie przy użyciu błędnych danych logowania.

Wnioski

To jest twój resposible wniosek o uniemożliwić logowanie brute force, ale nie przez solenie i mieszania hasło.

Powiązane problemy