Patrzę na algorytmy mieszające, ale nie mogę znaleźć odpowiedzi.
- Bcrypt używa Blowfish
- Blowfish jest lepszy niż MD5
- P: Ale czy Blowfish jest lepszy niż SHA512?
Dzięki..
Aktualizacja:
Chcę wyjaśnić, że rozumiem różnicę między haszowaniem a szyfrowaniem. Tym, co skłoniło mnie do zadania pytania w ten sposób, jest ten artykuł , w którym autor nazywa bcrypt „adaptacyjnym haszowaniem”
Ponieważ bcrypt jest oparty na Blowfish, doprowadzono mnie do wniosku, że Blowfish jest algorytmem mieszającym. Jeśli jest to szyfrowanie, jak wskazano w odpowiedziach, wydaje mi się, że nie powinno być miejsca w tym artykule. Co gorsza, doszedł do wniosku, że bcrypt jest najlepszy. Co mnie również dezorientuje to to, że klasa phpass (używana do haszowania haseł, jak sądzę) używa bcrypt (tj. Blowfish, tj. Szyfrowanie). W oparciu o te nowe informacje, które mi opowiadacie (blowfish to szyfrowanie), ta klasa brzmi źle. Czy coś brakuje?
źródło
bcrypt
po prostu ma domyślnie wyższy „współczynnik pracy”. Przyjmuje się, że SHA nie ... chyba że użyjesz passhash9, który może być użyty razem ze współczynnikiem pracy. dlaczego to pytanie jest zamknięte? daleki od odpowiedzi, ale bardzo ważny.Odpowiedzi:
Wystarczy stwierdzić, czy bcrypt lub SHA-512 (w kontekście odpowiedniego algorytmu, takiego jak PBKDF2) jest wystarczająco dobry . Odpowiedź brzmi: tak, każdy z algorytmów jest wystarczająco bezpieczny, aby doszło do naruszenia z powodu wady implementacji, a nie kryptoanalizy.
Jeśli nalegasz, aby wiedzieć, która jest „lepsza”, SHA-512 miał dogłębne recenzje NIST i innych. To dobrze, ale wykryto wady, które, choć nie nadają się teraz do wykorzystania, doprowadziły do rywalizacji o nowe algorytmy mieszania SHA-3. Pamiętaj również, że badanie algorytmów mieszania jest „nowsze” niż badanie szyfrów, a kryptografowie wciąż się o nich uczą.
Chociaż bcrypt jako całość nie był tak dokładnie badany jak sam Blowfish, uważam, że bazowanie na szyfrze o dobrze zrozumiałej strukturze daje mu pewne nieodłączne bezpieczeństwo, którego brakuje uwierzytelnianiu opartemu na haszowaniu. Ponadto łatwiej jest używać typowych układów GPU jako narzędzia do atakowania skrótów opartych na SHA-2; ze względu na wymagania dotyczące pamięci, optymalizacja bcrypt wymaga bardziej specjalistycznego sprzętu, takiego jak FPGA z pewną wbudowaną pamięcią RAM.
Uwaga: bcrypt to algorytm wykorzystujący wewnętrznie Blowfish. Nie jest to sam algorytm szyfrowania. Służy do nieodwracalnego zasłaniania haseł, podobnie jak funkcje skrótu służą do wykonywania „skrótu jednokierunkowego”.
Algorytmy szyfrowania kryptograficznego zaprojektowano tak, aby niemożliwe było ich odwrócenie. Innymi słowy, biorąc pod uwagę tylko dane wyjściowe funkcji skrótu, powinno minąć „na zawsze”, aby znaleźć komunikat, który wygeneruje taki sam wynik skrótu. W rzeczywistości znalezienie jakichkolwiek dwóch komunikatów o tej samej wartości skrótu powinno być niewykonalne obliczeniowo. W przeciwieństwie do szyfru, funkcje skrótu nie są parametryzowane za pomocą klawisza; to samo wejście zawsze będzie generowało to samo wyjście.
Jeśli ktoś poda hasło, które jest skrótem do wartości zapisanej w tabeli haseł, zostanie uwierzytelnione. W szczególności, z powodu nieodwracalności funkcji skrótu, zakłada się, że użytkownik nie jest atakującym, który przechwycił skrót i odwrócił go, aby znaleźć działające hasło.
Teraz rozważ bcrypt. Używa Blowfish do szyfrowania magicznego ciągu, używając klucza „pochodzącego” z hasła. Później, gdy użytkownik wprowadzi hasło, klucz jest uzyskiwany ponownie, a jeśli tekst zaszyfrowany utworzony przez szyfrowanie przy użyciu tego klucza pasuje do zapisanego tekstu zaszyfrowanego, użytkownik jest uwierzytelniany. Tekst zaszyfrowany jest przechowywany w tabeli „hasło”, ale klucz pochodny nigdy nie jest przechowywany.
Aby złamać tutaj kryptografię, osoba atakująca musiałaby odzyskać klucz z tekstu zaszyfrowanego. Nazywa się to atakiem „znanym tekstem jawnym”, ponieważ atak zna magiczny ciąg znaków, który został zaszyfrowany, ale nie użyty klucz. Blowfish został gruntownie przebadany i nie są jeszcze znane żadne ataki, które pozwoliłyby atakującemu znaleźć klucz z jednym znanym tekstem jawnym.
Tak więc, podobnie jak nieodwracalne algorytmy kryptograficzne oparte na algorytmach, bcrypt wytwarza nieodwracalne dane wyjściowe z hasła, soli i współczynnika kosztów. Jego siła polega na odporności Blowfish na znane ataki w postaci zwykłego tekstu, co jest analogiczne do „pierwszego ataku przed obrazem” na algorytm skrótu. Ponieważ można go używać zamiast algorytmu skrótu do ochrony haseł, bcrypt jest myląco określany jako sam algorytm „skrótu”.
Zakładając, że tablice tęczy zostały udaremnione przez właściwe użycie soli, każda naprawdę nieodwracalna funkcja sprowadza atakującego na próbę i błąd. A szybkość, z jaką atakujący może przeprowadzić próby, zależy od szybkości tego nieodwracalnego algorytmu „mieszania”. Jeśli zostanie użyta pojedyncza iteracja funkcji skrótu, atakujący może wykonać miliony prób na sekundę, używając sprzętu kosztującego 1000 USD, testując wszystkie hasła o długości do 8 znaków w ciągu kilku miesięcy.
Jeśli jednak podsumowanie zostanie „zwrócone” tysiące razy, przetestowanie tego samego zestawu haseł na tym sprzęcie potrwa setki lat. Bcrypt osiąga ten sam efekt „wzmocnienia klucza”, iterując wewnątrz swojej procedury wyprowadzania klucza, a odpowiednia metoda oparta na haszowaniu, taka jak PBKDF2, robi to samo; pod tym względem obie metody są podobne.
Zatem moja rekomendacja bcrypt wynika z założeń 1), że Blowfish miał podobny poziom kontroli jak rodzina funkcji skrótu SHA-2, oraz 2) że metody kryptoanalityczne dla szyfrów są lepiej opracowane niż te dla funkcji skrótu.
źródło
Zgadzam się z odpowiedzią Ericksona, z jednym zastrzeżeniem: do celów uwierzytelniania hasła, bcrypt jest znacznie lepszy niż jedna iteracja SHA-512 - po prostu dlatego, że jest znacznie wolniejszy. Jeśli nie rozumiesz, dlaczego powolność jest zaletą w tej konkretnej grze, przeczytaj artykuł, do którego linkujesz ponownie (przewiń w dół do „ Prędkość jest dokładnie tym, czego nie chcesz w funkcji skrótu hasła ”).
Możesz oczywiście zbudować bezpieczny algorytm mieszania hasła wokół SHA-512, iterując go tysiące razy, tak jak działa algorytm MD5 PHK. Ulrich Drepper właśnie to zrobił , dla crypt () glibc. Nie ma jednak szczególnego powodu, aby to zrobić, jeśli masz już przetestowaną implementację bcrypt.
źródło
crypt
implementacji (w tym PHP, których używam), kiedy przeczytałem oryginalne pytanie, nawet założyłem, że to właśnie OP miał na myśli, gdy zapytał o SHA-512 - że tak naprawdę miał na myśli tysiące rund SHA-512 kontra bcrypt, który sam używa setek lub tysięcy iteracji.Blowfish nie jest algorytmem mieszającym. To algorytm szyfrowania. Oznacza to, że możesz zaszyfrować coś za pomocą blowfish, a następnie możesz odszyfrować to z powrotem do zwykłego tekstu.
SHA512 jest algorytmem mieszającym. Oznacza to, że (teoretycznie) po skasowaniu danych wejściowych nie można odzyskać oryginalnych danych wejściowych.
Są to 2 różne rzeczy, przeznaczone do różnych zadań. Nie ma „poprawnej” odpowiedzi na „czy blowfish jest lepszy niż SHA512?” Równie dobrze możesz zapytać „czy jabłka są lepsze niż kangury?”
Jeśli chcesz przeczytać więcej na ten temat, oto kilka linków:
źródło
bcrypt
) jest używany jako algorytm mieszający poprzez wyprowadzenie klucza z ciągu źródłowego i użycie go do zaszyfrowania magicznej liczby. To sprawia, że jest on nieodwracalny, zasadniczo funkcja haszująca. Nie możesz obliczyć klucza z szyfru, nawet jeśli znasz zwykły tekst i zaszyfrowane dane.Blowfish nie jest lepszy niż MD5 lub SHA512, ponieważ służą one różnym celom. MD5 i SHA512 są algorytmami mieszającymi, Blowfish jest algorytmem szyfrującym. Dwie całkowicie różne funkcje kryptograficzne.
źródło
Poleciłbym implementację szyfrowania opartą na SHA-256 / SHA-512 Ulricha Dreppera.
Przenieśliśmy te algorytmy na Javę, a ich darmową wersję można znaleźć na ftp://ftp.arlut.utexas.edu/java_hashes/ .
Zauważ, że większość współczesnych (L) Unices obsługuje algorytm Dreppera w swoich plikach / etc / shadow.
źródło
Właśnie się z tym spotkałem:
http://codahale.com/how-to-safely-store-a-password/
Czy autor tego artykułu może się mylić?
źródło