podwójne hashowanie haseł, ogólnie n-hashowanie |
podwójne hashowanie haseł, ogólnie n-hashowanie |
27.02.2006, 11:48:23
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 482 Pomógł: 6303 Dołączył: 27.12.2004 |
w związku z lekkim OT w pewnym temacie, który rozwinął się w ciekawą dyskusję, temat rozdzielam. Dotyczy on:
Czy podwójne (n-te) hashowanie hasła jest bezpieczniejsze, od pojedynczego hashowania md5 sie nie odkoduje. mozna trafic na rozwiązanie metodą brute force. Dla tej metody jednak jest bez roznicy, czy ty dane haslo przepuścic przez md5 raz, dwa czy milion razy Posty będące duplikacją postów już zawartych w temacie, będą bez ostrzeżenia usuwane. Ma to zapobiedz tworzeniu się zbędnego śmietnika -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
20.10.2008, 18:36:32
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) |
Porównanie trzech metod przechowywania haseł jako hashe md5:
1. md5( HASLO )
2. md5( HASLO + SÓL )
3. md5( md5( HASLO ) )
Załóżmy teraz, że jakiś łotr dorwał się do hasha użytkownika Jimmy:dupa8. Nie ma jednak dostepu do kodu PHP, więc nie zna metody szyfrowania ani soli. Ma przed sobą jedynie 32-znakowy hash składający sie z cyfr i liter a-f, co wskazuje na algorytm md5 W 1. przypadku md5( dupa8 ) jest równy 1212121212. Po przepuszczeniu tego przez tęczowe tablice lub potraktowaniu brute-forcem łotr odgadł haslo dupa8 (lub inną kolizję). Po wpisaniu tego w formularzy łotr zalogował się na konto Jimmi'ego W 2. przypadku md5( dupa8#@r23T@f23NJOąąąĆóŁd;'\[:""{:ffs+SD:+@wD#~`ds2 ) jest równy 3434343434. Łotr przepuszcza to przez tęczowe tablice lub traktuje brute-forcem i znajduje kolizję: Yx2;4óę8&Z$. Łotr jest nieco zdziwiony stopniem skomplikowania hasła, ale postanawia wpisać je w formularzu. Niestety nie udaje mu się zalogować na konto Jimmi'ego: Kod md5( dupa8 . SÓL ) == 3434343434 md5( Yx2;4óę8&Z$ . SÓL ) == 5656565656 3434343434 != 5656565656 md5( dupa8 . SÓL ) != md5( Yx2;4óę8&Z$ . SÓL ) W 3. przypadku md5( md5( dupa8 ) ) jest równy 7878787878. Łotr przepuszcza ten hash przez tęczowe tablice lub traktuje brute forcem i znajduje kolizję: 112ó�GHG:s\. Łotr jest nieco zdziwiony stopniem skomplikowania hasła, ale postanawia wpisać je w formularzu. Niestety nie udaje mu się zalogować na konto Jimmi'ego: Kod md5( md5( dupa8 ) ) == 7878787878 md5( 112ó�GHG:s\ ) == 7878787878 ALE: md5( md5( 112ó�GHG:s\ ) ) == 9090909090 7878787878 != 9090909090 md5( md5( dupa8 ) ) != md5( md5( 112ó�GHG:s\ ) ) Wynika z tego, że: - Stosowanie hashowania z SOLĄ lub podwójnego hashowania jest bezpieczniejsze niż zwykłe pojedyncze hashowanie md5 - Stosowanie 50-krotnego hashowania jest tak samo dobre jak stosowanie 10-krotnego hashowania, które jest tak samo dobre jak stosowanie 2-krotnego hashowania. Czyli tworzenie potworków w stylu: md5( md5( md5( md5( md5( md5( md5( md5( md5( md5( dupa8 ) ) ) ) ) ) ) ) ) ) jest kompletnie bezcelowe. PS. Jako że nie jestem ekspertem od kryptografii chciałbym, aby ktoś udowodnił mi, że powyższe rozumowanie jest błedne. Ten post edytował Kicok 20.10.2008, 18:38:34 -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
Wersja Lo-Fi | Aktualny czas: 18.06.2024 - 06:44 |