Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

7 Stron V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> podwójne hashowanie haseł, ogólnie n-hashowanie
MajareQ
post 4.02.2008, 20:33:41
Post #41





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


Cytat(E-d @ 24.03.2006, 11:36:29 ) *
md5 da się odhaszować.
http://md5.rednoize.com/
Więc lepiej używać sha1



czy to przypadkiem nie jest jedna z teczowych tablic?
Go to the top of the page
+Quote Post
kwiateusz
post 5.02.2008, 20:43:02
Post #42


Admin Techniczny


Grupa: Administratorzy
Postów: 2 069
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




cos w ten desen ale przy 12 znakach nie znalazł hasha smile.gif bardzo wybrakowane te tablice np nie łamie hasha zbudowanego w oryginale z ciagu cyfr
Go to the top of the page
+Quote Post
MajareQ
post 6.02.2008, 21:07:06
Post #43





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


jednym słowem jeszcze daleko brakuje do łamacza hashów z prawdziwego zdarzenia...
Go to the top of the page
+Quote Post
pinochet
post 9.10.2008, 12:58:45
Post #44





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

Ostrzeżenie: (0%)
-----


Witajcie ... to mój pierwszy post na tym forum więc tym bardziej witam ;-)
Chciałbym dorzucić swoje trzy grosze ;] (podsumowując powyższą dyskusję)
1. (pierwszy grosz) n-hashowanie nie ma żadnego znaczenia przy ataku bf - zdalnym
2. (drugi grosz) - Jeżeli hacker wszedł w posiadanie naszej bazy danych jednak nie ma dostępu do źrodeł PHP w takiej sytuacji n-hashowanie daje hackerowi dodatkowy problem - odgadnięcie algorytmu hashowania - co powoduje że hasła są nie do złamania biggrin.gif oczywiście mądry hacker od razu sprawdzi 1-hashowanie i 2-hashowanie dlatego ja również polecam dodawanie do hasła tajnego ciągu i np loginu.
3. (trzeci grosz) - hacker zna nasz algorytm i zna hashe - w tej sytuacji wielokrotne hashowanie również zwiększa bezpieczeństwo haseł(jawnych) ... Dlaczego? Dlatego że obliczenie sumy trwa ... i od czasu tego generowania zalezy ile możliwości zostanie sprawdzonych w ciągu sekundy. sprawdzenie wszystkich hashy 4 literowych przy algorytmie md5(md5($ciag)) bedzie trwało dwa razy dłużej niż md5($ciąg) - możliwe - nie analizowałem dokładnie funkcji liczącej hasha - ze czas potrzebny na md5(md5($ciag)) będize kilkakrotnie dłuższy niż md5($ciag) bo $ciąg ma 4 znaki a md5($ciąg) 32 znaki. między innymi na tym polega bezpieczeństwo WPA2 ( WiFi) tam hasło z tego co pamiętam jest hashowane 16 razy. W jakiś zawodach hacker który stworzył sobie Rainbow Tables wygrał bo przy kolejnych włamach tylko sprawdzał hasła - bez ich generowania ( tam hash liczony jest lokalnie )

Jeśli chodzi o kolizje to rzeczywiści md5 jest na nie podatne - jednak z logicznego punktu widzenia jeżeli md5 hash jest 32 znakowy to kolizje będą pojawiać się dopiero przy kodowaniu ciągów dłuższych niż 32 znaki ... dlatego wielokrotne hashowanie ciągów 32 znakowych nie powinno powodować kolizji choć pewnie znaczenie ma tutaj także zakres znaków
Go to the top of the page
+Quote Post
Zyx
post 14.10.2008, 07:20:42
Post #45





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


1. Dwukrotne wydłużenie czasu potrzebnego do złamania to żadne wydłużenie. Podzielę zbiór haseł na dwa, puszczę proces równolegle na dwóch komputerach i po sprawie.
2. Jedyne, co może zrobić podwójne haszowanie, to zwiększyć podatność funkcji na kolizje. Załóżmy, że mamy takie wiadomości A, B, że H( A ) = H( B ). Wiemy, że istnieją takie z zasady szufladkowej (skończona ilość haszów, nieskończona ilość tekstów). Możemy też znaleźć dwie inne wiadomości C, D takie, że H( C ) = H( D ). Przy pojedynczym haszowaniu mamy dwie różne kolizje: algorytm, który wygeneruje A, podczas gdy hasz jest H©, będzie szukać dalej. Przypuśćmy teraz, że haszujemy oba hasze i okazuje się, że one ze sobą kolidują: H(H( A )) = H(H( C )). Nie można zakładać niemożliwości takiej sytuacji, bo niby czemu? Stworzę sobie z sha1 poprawną funkcję haszującą, która dla każdego 40-znakowego ciągu daje 40 liter "a" w wyniku i wtedy wszystkie hasze będą ze sobą kolidować smile.gif. W każdym razie otrzymujemy wtedy równość: H(H( A )) = H(H( B )) = H(H( C )) = H(H( D )), tak więc gdy wygenerujemy hasło "A", ono zostanie zaakceptowane nawet, jeśli oryginał brzmi "C" i jeśli po pojedynczym zahaszowaniu takie coś by nie weszło. Nie zachodzi za to sytuacja w drugą stronę, tj. jeśli A i B kolidują, to po podwójnym zahaszowaniu dalej będą kolidować. Wniosek: wielokrotne haszowanie pogasza sprawę tym bardziej, im więcej razy złożymy naszą funkcję z samą sobą.

Ten post edytował Zyx 14.10.2008, 07:21:44


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
pinochet
post 14.10.2008, 20:43:50
Post #46





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

Ostrzeżenie: (0%)
-----


Cytat(Zyx @ 14.10.2008, 08:20:42 ) *
1. Dwukrotne wydłużenie czasu potrzebnego do złamania to żadne wydłużenie. Podzielę zbiór haseł na dwa, puszczę proces równolegle na dwóch komputerach i po sprawie.
Idąc dalej tym tokiem rozumowania można stwierdzić że hashowanie wogole nie jest potrzebne ... zawsze istnieje pewna skończona liczba komputerow przy ktorej haslo da sie złamać. Co do podatnosci na kolizje zgodze sie ze moze sie zwiekszyc przy podwojnym hashowaniu - ale jest to tylko hipoteza. Jak pisałem nie analizowałem algorytmu md5 i nie wiem czy prawdopodobieństwo kolizji jest większe dla ciągów o tej samej długości czy o różnej.
Cytat(Zyx @ 14.10.2008, 08:20:42 ) *
Stworzę sobie z sha1 poprawną funkcję haszującą, która dla każdego 40-znakowego ciągu daje 40 liter "a" w wyniku i wtedy wszystkie hasze będą ze sobą kolidować
stworzę sobie poprawną funkcję hashującą która dla kazdego 40 literowego ciągu da inny 40 literowy ciąg ...
Go to the top of the page
+Quote Post
Zyx
post 16.10.2008, 09:43:20
Post #47





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Kurde, jak do czegoś został przedstawiony poprawny dowód, to nie może być to hipotezą. n-krotne haszowanie co najwyżej pozostawia odporność na kolizje na niezmienionym poziomie lub ją pogarsza i jest to udowodniony fakt dla każdej istniejącej funkcji haszującej, jaką sobie wymyślisz. Natomiast od rodzaju samej funkcji zależy jedynie, jak bardzo sprawa może się pogorszyć, w szczególnym przypadku - może pozostać bez zmian.

A pozostaje bez zmian tylko i wyłącznie wtedy, gdy H(k) dająca n-znakowy ciąg jest bijekcją dla każdego k o długości dokładnie n. Lecz jeśli jest bijekcją, to wtedy istnieje jednoznaczna funkcja odwrotna. I aby Cię zmartwić, najłatwiej dowieść bijekcji właśnie znajdując funkcję odwrotną. O MD5 i SHA1 nic takiego nie wiemy i teraz są dwa wyjścia:

1. Albo przyjmujemy, że generują one kolizje dla 32- lub 40-znakowych ciągów, tym samym pogarszając odporność na kolizje.
2. Albo przyjmujemy, że nie są i wtedy cała nasza robota na nic, bo jak ktoś znajdzie funkcję odwrotną, co będzie tylko kwestią czasu, to z naszego podwójnego hasza bez trudu wyliczy sobie na początku pracy pojedynczy i cały Twój pomysł ze zwiększaniem ilości czasu/komputerów możesz wyrzucić na śmietnik.

Tak więc najlepiej do naszego hasła dokleić losową i jawną sól, by zabezpieczyć się przed tęczowymi tablicami i zahaszować RAZ. Drugi hasz i więcej albo ułatwi zadanie łamaczowi, albo w najlepszym przypadku nie da nam NIC.

PS. Pomysł ze zwiększaniem ilości zasobów byłby bardziej sensowny, gdyby pogarszał rząd złożoności, np. n-krotny hasz powodowałby konieczność użycia n^2 komputerów, by zakończyć obliczenia w tym samym czasie.

PS2. Spróbuję znaleźć kogoś, kto się zajmuje kryptografią i kryptoanalizą przynajmniej półzawodowo i skonsultować z nim cały problem.

Ten post edytował Zyx 16.10.2008, 16:49:49


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
pinochet
post 16.10.2008, 18:03:43
Post #48





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

Ostrzeżenie: (0%)
-----


Dobra muszę przyznać Ci rację ;]
Wielokrone hashowanie zwiększa podatność na kolizję - chyba że funkcja hashująca jest odwzorowaniem jednoznaczym ( nie lubie MD ;P ), a wiadomo że nie jest.
W sprawie zwiększenia czasu łamania hasha - owszem dobrze by było znac sposób na nie liniowe zwiększanie czasu ale chyba raczej takiego nie ma ... zakładając że hacker nie dysponuje botnetem z 10^6 komputerów zwiększenie czasu potrzebnego nawet dwukrotnie - zawsze będzie utrudnieniem. Chyba wszyscy wiemy że w atakach typu bruteforce czas gra najistotniejszą rolę.

Jeszcze nasunęło mi się takie pytanie: Czy podatność na kolizję zmniejsza bezpieczeństwo haseł jawnych questionmark.gif Hyba nie bo znając hasha: f:X-> {a}, aby poznać hasło jawne musimy poznać cały zbiór X (przynajmniej teoretycznie).
Go to the top of the page
+Quote Post
Michu
post 16.10.2008, 18:34:21
Post #49





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 15.10.2006
Skąd: zewsząd :P

Ostrzeżenie: (0%)
-----


Nie rozumiem po co cały ten szum. Moje zdanie jest takie:

Słabość MD5 polega na tym że wszyscy znają ten algorytm, dlatego teorytycznie da się go 'odhashować'.

Jeśli więc utrudnić procedurę hashowania, np. dodając nowe znaki, zamieniając kolejność znaków, mieszając hashe, odcinamy hakerowi możliwość złamania szyfru bo nie wie on jak go złamać.
Go to the top of the page
+Quote Post
mike
post 16.10.2008, 21:32:13
Post #50





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(Michu @ 16.10.2008, 19:34:21 ) *
Słabość MD5 polega na tym że wszyscy znają ten algorytm, dlatego teorytycznie da się go 'odhashować'.
Tyle wałkowania i na darmo.
W jednym zdaniu poinformowałeś nas, że nie znasz md5. Bo jego nie da się "odhaszować". To nie jest algorytm dwustronny exclamation.gif exclamation.gif
Go to the top of the page
+Quote Post
michalkjp
post 16.10.2008, 22:01:15
Post #51





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


@Michu

"Słabość MD5 polega na tym że wszyscy znają ten algorytm, dlatego teorytycznie da się go 'odhashować'."

Nie jestem kryptologiem, ale na kryptografii trochę się znam. Wszyscy ludzie, którzy są/mogą być autorytetami w tej dziedzinie, uważają, że nie można w kryptografii podchodzić do tematu przez tzw. security by obscurity. Przynajmniej publicznie żaden szanowany/szanujący się specjalista nie popiera takiej metody. Algorytmy powinny być udostępniane każdemu zainteresowanemu właśnie dlatego, żeby ludzie mogli znajdować ich słabości i je udoskonalać.

"Jeśli więc utrudnić procedurę hashowania, np. dodając nowe znaki, zamieniając kolejność znaków, mieszając hashe, odcinamy hakerowi możliwość złamania szyfru bo nie wie on jak go złamać."

MD5 można rozbić – czyli:

- mamy ciąg znaków A z którego robimy skrót X

- szukamy takiego ciągu B którego skrót też będzie wynosił X.

Przy hasłach takie działanie nie ma sensu – szansa na rozbicie MD5 jest wielokrotnie mniejsza niż na znalezienie hasła za pomocą metody bruteforce.

To co proponujesz – wprowadzenie dodatkowych mini zmian w wyniku działania MD5 nie ma większego sensu. MD5 jest wystarczająco mocne do większości zastosowań – żaden szanujący się włamywać nie będzie próbował go rozbijać – coś takiego wymaga olbrzymiej mocy przerobowej.

Może za 20 lat będziesz mógł rozbijać MD5 na jakiś większych maszynach – ale jeszcze pozostaje problem długości ciągu znaków – ciąg A może mieć 10 znaków, ale ciąg B może mieć kilkaset MB – ograniczenie długości znaków w polu wpisywania hasła może być dobrym pomysłem.

Na Twoim miejscu przestałbym się przejmować ezoterycznymi problemami MD5 i zająłbym się szukaniem błędów w innym miejscu winksmiley.jpg
Go to the top of the page
+Quote Post
Zyx
post 18.10.2008, 22:15:38
Post #52





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


MD5 zostało złamane już kilka lat temu (w sierpniu 2004 dokładnie). Obecnie znane są metody, które pozwalają na znalezienie kolizji na domowym pececie w parę godzin. Dodam, że niedawno znaleziono także pewne luki w SHA-1, ale nawet po ich zastosowaniu potrzebny czas wykracza poza możliwości współczesnych komputerów.

Z drugiej strony, masz 100% racji, że siła obecnych systemów kryptograficznych tkwi w matematyce i jawności algorytmów. Eksperymentowanie na oślep i utajnianie algorytmu nie ma żadnego sensu, gdyż zdolny kryptoanalityk rozwali taki pomysł bardzo szybko. Szansa, że przez przypadek stworzymy coś naprawdę mocnego, jest nikła. Przeważnie sprawy tylko się pogorszą, a przykład widać w przesądzie, że H(H(k)) jest silniejsze niż H(k) smile.gif.

Ten post edytował Zyx 18.10.2008, 22:22:10


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
michalkjp
post 18.10.2008, 22:26:13
Post #53





Grupa: Zarejestrowani
Postów: 182
Pomógł: 14
Dołączył: 20.09.2008

Ostrzeżenie: (0%)
-----


Cytat(Zyx @ 18.10.2008, 23:15:38 ) *
Obecnie znane są metody, które pozwalają na znalezienie kolizji na domowym pececie w parę godzin.

Mógłbyś podać jakieś źródło?
Go to the top of the page
+Quote Post
Zyx
post 19.10.2008, 10:52:23
Post #54





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Ech, wystarczy w Google wpisać "MD5 collisions" i masz tyle źródeł, że głowa boli smile.gif.

http://cryptography.hyperlink.cz/md5/MD5_collisions.pdf - praca poświęcona jednemu z algorytmów wyszukiwania kolizji
http://it.slashdot.org/article.pl?sid=05/11/15/2037232 - informacja o publikacji kodu źródłowego do wyszukiwania kolizji
http://eprint.iacr.org/2006/105 - praca nt znajdowania kolizji MD5 w minutę na domowym pececie.

Poza tym:
- udało się wygenerować dwa sensowne pliki Postscript z tym samym haszem.
- udało się wygenerować dwa różne certyfikaty X.509 z tym samym haszem.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Kicok
post 20.10.2008, 18:36:32
Post #55





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 )
  1. <?php
  2.  
  3.    $login = mysql_real_escape_string( $_POST['login'] );
  4.    $haslo = $_POST['haslo'];
  5.  
  6.    $haslo = md5( $haslo );
  7.  
  8.    $result = mysql_query( "SELECT * FROM users WHERE login = '$login' AND haslo = '$haslo'" ) or die( mysql_error() );
  9.    if( mysql_num_rows( $result ) )
  10.    {
  11.        // ZALOGOWANY
  12.    }
  13.  
  14. ?>


2. md5( HASLO + SÓL )
  1. <?php
  2.  
  3.    define( 'SALT', '#@r23T@f23NJOąąąĆóŁd;'[:""{:ffs+SD:+@wD#~`ds2' );
  4.  
  5.  
  6.    $login = mysql_real_escape_string( $_POST['login'] );
  7.    $haslo = $_POST['haslo'];
  8.  
  9.    $haslo = md5( $haslo . SALT );
  10.  
  11.    $result = mysql_query( "SELECT * FROM users WHERE login = '$login' AND haslo = '$haslo'" ) or die( mysql_error() );
  12.    if( mysql_num_rows( $result ) )
  13.    {
  14.        // ZALOGOWANY
  15.    }
  16.  
  17. ?>


3. md5( md5( HASLO ) )
  1. <?php
  2.  
  3.    $login = mysql_real_escape_string( $_POST['login'] );
  4.    $haslo = $_POST['haslo'];
  5.  
  6.    $haslo = md5( md5( $haslo ) );
  7.  
  8.    $result = mysql_query( "SELECT * FROM users WHERE login = '$login' AND haslo = '$haslo'" ) or die( mysql_error() );
  9.    if( mysql_num_rows( $result ) )
  10.    {
  11.        // ZALOGOWANY
  12.    }
  13.  
  14. ?>



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ó&#0GHG: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ó&#0GHG:s\ ) == 7878787878

ALE:
md5( md5( 112ó&#0GHG:s\ ) ) == 9090909090

7878787878 != 9090909090
md5( md5( dupa8 ) ) != md5( md5( 112ó&#0GHG: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."
Go to the top of the page
+Quote Post
Zyx
post 21.10.2008, 07:12:07
Post #56





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Punkt 1, 2 - są w porządku.

Punkt 3 - przeczytaj to, co jest napisane powyżej. Niemieccy wojskowi też wierzyli, że utajniając algorytm działania Enigmy ich szyfry są nie do złamania. Myślisz, że atakujący byłby na tyle głupi, by nie poszukać też kolizji wśród ciągów o długości 32 znaków? Myślisz, że twórcy tęczowych tablic nie wiedzą o możliwości podwójnego zahaszowania i nie wprowadzają do nich zahaszowanych wersji haszów?


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
mike
post 21.10.2008, 08:54:12
Post #57





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(Kicok @ 20.10.2008, 19:36:32 ) *
PS. Jako że nie jestem ekspertem od kryptografii chciałbym, aby ktoś udowodnił mi, że powyższe rozumowanie jest błedne.
Oczywiście że jest błędne. Jest po prostu sprzeczne, więc nawet nie ma co się wyslilać żeby pokazać błąd tongue.gif
Spójrz co piszesz:
Cytat(Kicok @ 20.10.2008, 19:36:32 ) *
- Stosowanie (...) podwójnego hashowania jest bezpieczniejsze niż zwykłe pojedyncze hashowanie md5
Cytat(Kicok @ 20.10.2008, 19:36:32 ) *
(...) tworzenie potworków w stylu: md5( md5( md5( md5( md5( md5( md5( md5( md5( md5( dupa8 ) ) ) ) ) ) ) ) ) ) jest kompletnie bezcelowe.
Raz twierdzisz co innego a później cos innego. Zdecyduj się co chcesz pokazać.
Tak czy inaczej wielokrotne (dwa to też więcej niż jeden) haszowanie nie ma sensu.

Cytat(Zyx @ 21.10.2008, 08:12:07 ) *
Niemieccy wojskowi też wierzyli, że utajniając algorytm działania Enigmy ich szyfry są nie do złamania.
Haha, no właśnie. ardzo dobry przykład. Kluczem do złamania Enigmy były jej dodatkowe zabezpieczenia, które osłabiły całość.
Go to the top of the page
+Quote Post
Kicok
post 21.10.2008, 10:43:30
Post #58





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


Cytat("mike")
Oczywiście że jest błędne. Jest po prostu sprzeczne, więc nawet nie ma co się wyslilać żeby pokazać błąd
Spójrz co piszesz:
Cytat("Kicok")
- Stosowanie (...) podwójnego hashowania jest bezpieczniejsze niż zwykłe pojedyncze hashowanie md5

Cytat("Kicok")
(...) tworzenie potworków w stylu: md5( md5( md5( md5( md5( md5( md5( md5( md5( md5( dupa8 ) ) ) ) ) ) ) ) ) ) jest kompletnie bezcelowe.

Raz twierdzisz co innego a później cos innego. Zdecyduj się co chcesz pokazać.

Tak w skrócie to napisałem powyżej:
- Stosowanie 2-krotnego hashowania jest bezpieczniejsze niż pojedyńcze hashowanie
- Stosowanie 50-krotnego hashowania jest tak samo bezpieczne, jak 2-krotne hashowanie, więc stosowanie potworków typu: md5( md5( md5( md5( md5( dupa8 ) ) ) ) ) jest bezcelowe (w domyśle: można stosować po prostu md5( md5( dupa8 ) ) )

Ja tu nie widzę żadnej sprzeczności.


Cytat("mike")
Tak czy inaczej wielokrotne (dwa to też więcej niż jeden) haszowanie nie ma sensu.

Załóżmy, że md5( md5( dupa8 ) ) jest równe 1212121212. Po potraktowaniu tego hasha brute-forcem otrzymamy kolizję q@w#E$5.
Po wpisaniu tego w formularzu znowu wykonywane jest podwójne hashowanie: md5( md5( q@w#E$5 ) ), ale logowanie nie powiedzie się, ponieważ hash w tym przypadku NIE JEST równy 1212121212. BYŁBY, gdybyśmy zrobili samo: md5( q@w#E$5 ).
Jeśli łotr zorientowałby się, że zastosowano podwójne hashowanie, musiałby:
a.) odnaleźć kolizję z zakresu 0x00000000000000000000000000000000 - 0xffffffffffffffffffffffffffffffff (w najrogszym wypadku 16^32 prób)
b.) odnaleźć kolizję kolizji

LUB
a.) skorzystać z tęczowych tablic, jeśli rzeczywiście są one tak rozbudowane, że przechowują także hashe hashy. W takim przypadku faktycznie podwójne hashowanie nie zwiększa praktycznie w ogóle poziomu bezpieczeństwa.


EDIT
PS1. Oczywiście jeśli kolizje haseł hashowanych podwójnie można odczytać z tęczowych tablic, to stwierdzenie, że 50-krotne hashowanie jest tak samo silne jak 2-krotne jest nieprawdziwe
PS2. Nadal podtrzymuję prośbę, żeby mi ktoś łopatologicznie wyjaśnił dlaczego się mylę twierdząc, że podwójne hashowanie jest bezpieczniejsze niż pojedyńcze. Bo jak na razie została mi wytknieta sprzeczność tam, gdzie jej nie widzę oraz zostałem ochrzaniony za to, że nie wiedziałem, że w tęczowych tablicach są hashe hashów.
PS3. Skoro jednak są hashe hashów w tęczowych tablicach, to czy potrójne hashowanie jest bezpieczniejsze niż pojedyńcze? A jeśli w tęczowych tablicach są też hashe hashów hashów, to ile gigabajtów zajmuje taka tablica (dla haseł alfanumerycznych 1-8 znakowych )?

Ten post edytował Kicok 21.10.2008, 11:04:40


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
nospor
post 21.10.2008, 10:46:56
Post #59





Grupa: Moderatorzy
Postów: 34 760
Pomógł: 5780
Dołączył: 27.12.2004




Cytat
Po potraktowaniu tego hasha brute-forcem
Brute force wykonuje sie zazwyczaj na aplikacji, wiec aplikacja bedzie przepuszczala to przez podwojne hashowanie smile.gif


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kicok
post 21.10.2008, 11:02:22
Post #60





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


O i taka odpowiedź rozjaśniła mi już wiele.

Teraz tylko muszę dojść do tego, dlaczego sam o tym nie pomyślałem, tylko kombinowałem na około z wykrywaniem kolizji kolizji-32-znakowych smile.gif
Zakładając teraz, że łotr może założyć sobie konto w danym serwisie i podejrzeć swój własny hash w bazie, może łatwo odgagnąć ile razy hashowane sa hasła. A wtedy to ma już z górki.
Natomiast w przypadku gdy ma tylko cudze hashe i nie wie ile razy została wykonana funkcja md5() może mieć już większe problemy.

Ten post edytował Kicok 21.10.2008, 11:15:26


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post

7 Stron V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.10.2019 - 18:26