Pamiętaj, że wartość jest zapisana w haśle: $2a$(2 chars work)$(22 chars salt)(31 chars hash)
. To nie jest stała wartość.
Jeśli zauważysz, że obciążenie jest zbyt wysokie, po prostu zrób tak, aby przy następnym logowaniu, kryptował do czegoś szybciej, aby obliczyć. Podobnie, w miarę upływu czasu i uzyskiwania lepszych serwerów, jeśli obciążenie nie jest problemem, możesz zaktualizować moc swojego hasha po zalogowaniu.
Sztuką jest utrzymanie go w przybliżeniu w tym samym czasie na zawsze w przyszłości wraz z prawem Moore'a. Numer to log2, więc za każdym razem, gdy komputery podwoją się, dodaj 1 do domyślnego numeru.
Zdecyduj, jak długo potrwa, aby brutalnie wymusić hasło użytkownika. Na przykład dla jakiegoś popularnego słownika, twoje konto prawdopodobnie już ostrzegało ich, że ich hasło było słabe. Jeśli jest to jedno z 1000 popularnych słów, powiedzmy, a każdy atakujący musi wykonać próbę 0.1s, że kupuje je za 100 s (cóż, niektóre słowa są bardziej powszechne ...). Jeśli użytkownik wybrał "zwykłe słowo słownika" + 2 cyfry, to ponad dwie godziny. Jeśli twoja baza danych haseł zostanie zaatakowana, a atakujący może uzyskać tylko kilkaset haseł dziennie, kupiłeś większość swoich użytkowników w ciągu kilku godzin, aby bezpiecznie zmienić swoje hasła. To kwestia kupowania im czasu.
http://www.postgresql.org/docs/8.3/static/pgcrypto.html ma kilka razy na łamanie haseł do rozważenia. Oczywiście podane tam hasła są losowymi literami. Słowa słownika ... W praktyce nie można zapisać gościa, którego hasłem jest 12345.
Koszt ataków offline. Kiedy "online" możesz użyć minimalnego opóźnienia pomiędzy próbami (na przykład 5 sekund), aby zapobiec atakowi typu "odmowa usługi". –
Duplikat na InformationSecurity: [Zalecane # rund dla bcrypt] (http://security.stackexchange.com/q/17207/46416) –
Dla wszystkich zainteresowanych, właśnie napisałem małe narzędzie Java CLI do testowania wydajności bcrypt na serwerach (co jest oczywiście ważne dla równoważenia bezpieczeństwa, obciążenia serwera i czasu reakcji): https://github.com/cdraeger/hash-performance – Blacklight