Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kodowanie haseł., Krótkie, proste pytanie.
Kużdo
post
Post #1





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Witam,

Temat z podwójnym haszowaniem haseł jest zamknięty, więc jestem zmuszony założyć nowy temat, ale pytanie mam proste. Co myślicie o algorytmie szyfrowania który wybrałem, czy jest on dostatecznie bezpieczny? Nie chcę robić kolejnego długiego tematu, tylko kilka zwykłych odpowiedzi co o nim sądzicie w przypadku, gdy ktoś dorwałby się do bazy danych.

Powtórzę: Co myślicie o algorytmie szyfrowania który wybrałem, czy jest on dostatecznie bezpieczny w przypadku, gdy ktoś dorwałby się do bazy danych, a nie ma dostępu do skryptów php? (Nie pytam o jakiekolwiek b-f).

Skrypt:
  1. md5(pack("H*", sha1(utf8_encode($haslo))));

Testy wydajności (skrypt generuje 100 haszy):
  1. <?php
  2. $start = microtime();
  3. for ($a=0;$a<100;$a++)
  4. {
  5. echo $a.': '.md5(pack("H*", sha1(utf8_encode(uniqid(mt_rand(0,1000000000),true))))).'</br>';
  6. }
  7. $koniec = microtime();
  8. echo 'Strona gotowa w '.($koniec - $start).' sek.';
  9. ?>

Strona gotowa w 0.00070599999999998 sek.

Przy podstawieniu pod $haslo jakiegoś dowolnego hasła np. test8969:
Strona gotowa w 0.00042700000000007 sek.

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Rid
post
Post #2





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Ma Pan tutaj wszystko ,świetnie opisane:)
Go to the top of the page
+Quote Post
Kużdo
post
Post #3





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Mam prośbę. Może tak nie nabijajmy sobie postów bezsensownymi postami? ;> Twój link (który de facto znam), zwiększy mi tylko szybkość generowania haszy, co nie jest mi jakoś zbytnio potrzebne, przy takiej szybkości, za to w żaden sposób nie odpowiada na moje pytanie.
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


bez sensu...w przypadku haszowania, więcej nie znaczy lepiej, ludziom się wydaje, że jak zrobią sobie skomplikowaną funkcję to jest bezpieczniej, a w praktyce przeważnie jest odwrotnie bo taka funkcja może zwiększać prawdopodobieństwo kolizji. Używaj haszowania z długą solą, nic bardziej bezpiecznego w tym temacie nie wymyślisz.
Go to the top of the page
+Quote Post
Kużdo
post
Post #5





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Z tego co wiem, to prawdopodobieństwo kolizji zwiększa jedynie podwójne użycie tej samej funkcji haszującej, a nie dwóch różnych. Ciągiem do zaszyfrowania zawsze można się pobawić, do skryptu mogę podać jako $haslo ciąg np. $haslo.$reg_date.$haslo, co też pozwala na zmniejszenie danych w bazie (nie muszę trzymać dodatkowej soli).
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Cytat
Z tego co wiem, to prawdopodobieństwo kolizji zwiększa jedynie podwójne użycie tej samej funkcji haszującej, a nie dwóch różnych
.......bez komentarza

funkcje haszujące to nie są ot tak sobie napisane z palca funkcje, tylko algorytmy specjalnie zaprojektowane tak, aby były maksymalnie odporne na kolizje. To, że napisałeś funkcję, która wizualnie wydaje się zawiła to z punktu widzenia kryptografii niczego tak na prawdę nie poprawia, a może pogorszyć. Bo dla osoby szukającej kolizji nie ma różnicy czy tu puściłeś przez 4 funkcje czy przez 100 różnych funkcji i w pętli milion razy, bo i tak wszystko sprowadza się do prawdopodobieństwa kolizji, które w tym przypadku może być większe, a w najlepszym wypadku będzie takie samo.

Sól możesz mieć stałą i trzymać zapisaną w pliku .php. Ja wiem, że chcesz dobrze ale uwierz, nic bardziej bezpiecznego niż haszowanie z długą solą nie wymyślisz i tylko tworzysz zbędne funkcje. Tyle w tym temacie.
Go to the top of the page
+Quote Post
Kużdo
post
Post #7





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Cytat(tehaha @ 30.07.2011, 11:59:13 ) *
funkcje haszujące to nie są ot tak sobie napisane z palca funkcje, tylko algorytmy specjalnie zaprojektowane tak, aby były maksymalnie odporne na kolizje.

W jaki sposób podanie ciągu "mojeBardzo6Trudne^Haslo" albo "9d2e1493b24376bf83061ec8fe59fef5070be44c" albo "2Ůäő4•AQ! î°oŻ•|J" do md5 może wpłynąć na prawdopodobieństwo kolizji, skoro żaden z inputów nie jest hashem md5? Rozumiem jakbym robił 2x md5 albo 2x sha1... Ale w takim przypadku nie rozumiem dlaczego prawdopodobieństwo kolizji może wzrosnąć...
Go to the top of the page
+Quote Post
Rid
post
Post #8





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Cytat
Ja wiem, że chcesz dobrze ale uwierz, nic bardziej bezpiecznego niż haszowanie z długą solą nie wymyślisz i tylko tworzysz zbędne funkcje.

Też,tak uważam ,dlatego podałem linka,gdzie są wymienione bardziej wyrafinowane metody hashowania niż md5,czy sha1.
Po co mieszać algorytmy hashowania-jak można użyć jednego bardziej wyrafinowanego jak SHA2,SHA3 lub inne o dłuższej soli.
Go to the top of the page
+Quote Post
bastard13
post
Post #9





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Dlaczego zwiększasz możliwość kolizji?
W skrócie robisz coś takiego:
y = md5(sha1(x))
Teraz masz coś takiego:
y = md5(z) i y = md5(v)
oraz:
z = sha1(a) i z = sha1(b ) oraz v = sha1(c ) i v = sha1(d)
Więc jeżeli używasz podwójnego haszowania, to gdy ktoś użyje hasła 'a', to istnieją jeszcze trzy inne, które zwrócą ten sam wynik.
Gdybyś użył pojedynczego hashowania, to wynik ten byłby mniejszy.

Jak widzisz wielokrotne używanie na wartości funkcji hashujących równocześnie zwiększa prawdopodobieństwo kolizji, a co za tym idzie, zmniejsza bezpieczeństwo.

Dodanie soli, to naprawdę dużo lepsze rozwiązanie.

Ten post edytował bastard13 30.07.2011, 16:17:12


--------------------
Go to the top of the page
+Quote Post
Kużdo
post
Post #10





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Ok, dobra, rozumiem już. Myślałem, że zwiększenie prawdopodobieństwa kolizji jest możliwe tylko przy używaniu większej ilość tego samego skrótu, a nie dwóch różnych.
Go to the top of the page
+Quote Post
adbacz
post
Post #11





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


Pytanko, o jaką "sól" chodzi? Przeczytałem cały temat ale nie ma żadej wzmianki o tym.
Go to the top of the page
+Quote Post
Rid
post
Post #12





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


To wszystko wyjaśni:
http://pl.wikipedia.org/wiki/S%C3%B3l_%28kryptografia%29
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Temat z podwójnym haszowaniem haseł jest zamknięty, więc jestem zmuszony założyć nowy temat, ale pytanie mam proste
A wiesz czemu jest zamknięty? Bo zaczęły się w nim pojawiać właśnie takie posty jak Twój i z tego powodu trzeba było zamknąć. Co niniejszym czynie i z Twoim, choć widzę "problem" masz już rozwiązany wink.gif

@adbacz:
w przypiętym temacie:
http://forum.php.pl/index.php?showtopic=44...t=0&start=0
masz o soli wpsominane


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

"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

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 16:11