Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] szyfrowanie danych
szczypior
post 28.08.2007, 11:28:05
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

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


Witam

Potrzebuje zaszyfrować hasło użytkowników serwisu, jednak musi być ono zaszyfrowane tak aby maxymalnie utrudnić jego odszyfrowanie, gdyż będzie przechowywane w cookies (na potrzeby autologowania). Pojawiły się już strony na których można odszyfrować md5, więc to odpada.

Czy takie szyfrowanie jest bezpieczniejsze?
  1. <?php
  2. $td  = mcrypt_module_open('tripledes', '', 'ecb', '');
  3. $iv_size = mcrypt_enc_get_iv_size($do_szyfrowania);
  4. $iv  = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  5.  
  6. mcrypt_generic_init($do_szyfrowania, $klucz, $iv);
  7. ?>


Najlepiej jako klucz pewnie stosować długie niesłownikowe ciągi znaków, czy tak?

Może doradzicie jeszcze lepsze rozwiązanie, będę wdzięczny


--------------------
Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Cezar708
post 28.08.2007, 11:41:50
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Cytat(szczypior @ 28.08.2007, 10:28:05 ) *
Pojawiły się już strony na których można odszyfrować md5, więc to odpada.

... a to Ci... możesz podać linka? tongue.gif

Nie da rady, MD5 to nie jest sposób KODOWANIA tylko HASZOWANIA. Po prostu ciąg znaków jakie haszuje nie służy do tego aby go później rozszyfrować tylko do tego aby później porównać z kolejnym haszem.
Jeśli chcesz (w miarę) bezpieczny sposób kodowania to polecam RSA. Jest to kodowanie asynchroniczne. Koduje się za pomocą klucza publicznego (czyli "długie niesłownikowe ciągi znaków") a dekoduje za pomocą klucza prywatnego (czyli inny "długi ciąg znaków"). Klucz publiczny możesz udostępnić każdemu kto chce zaszyfrować a klucz prywatny zostawiasz sobie tylko po to aby rozszyfrować.

Linki:

http://pear.php.net/package/Crypt_RSA
http://en.wikipedia.org/wiki/RSA
Go to the top of the page
+Quote Post
szczypior
post 28.08.2007, 11:56:24
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

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


Cytat(Cezar708 @ 28.08.2007, 12:41:50 ) *
... a to Ci... możesz podać linka? tongue.gif


http://www.md5decrypter.com/

hmm spróbowałem złamać nim oraz odpowiednikiem dla sha1 hasło zahashowane w md5 i jeszcze w sha1 i się nie udało, może wystarczy zastosować te dwie metody.
Uważasz że to będzie wystarczająco bezpieczne?


--------------------
Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl
Go to the top of the page
+Quote Post
nospor
post 28.08.2007, 12:50:58
Post #4





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




Jak juz wyzej wspomniano:
md5() nie da sie odszyfrowac. Nie ma bata. Mozna znaleźć tzw: kolizje, ale to inna bajka.
Link co podales dziala na zasadzie tęczowych tabel i oni tam nic nie odszyfrowuja smile.gif

Co do bezpiecznego przechowywania hasel tu byla ciekawa dyskusja:
http://forum.php.pl/index.php?act=ST&f=1&t=44156
powinna ci pomoc.


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

"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
bim2
post 28.08.2007, 16:11:52
Post #5





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Najlepiej dodać tzw. solę.

$haslo = md5('soal12345!@#ofsaf8fs55&'.$_POST['haselko']);

przy porownaniu znowu dodajesz swoja unikalną solę. Jeśli ktoś nie będzie znal soli nic mu nie da brute force. smile.gif
Co do cistaek zapisz do ciastka $hasełko a późnije przy logowaniu daj
  1. <?php
  2. if($haslo_z_bazy == $_COOKIE['haslo']) echo 'zalogowany';
  3. ?>


--------------------
Go to the top of the page
+Quote Post
Jabol
post 28.08.2007, 22:13:56
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Lol, zrób sobie logowanie za pomocą certyfikatów x509. Będziesz miał 100% (a conajmniej o 1000% większą niż z hasłami) pewność, że klient to klient. Tyle, że klienci będą musieli mieć takie certyfikaty wyrobione. I ogólnie logowanie za pomocą takich certyfikatów jest z deczka *łatwiejsze* i *prostsze* niż jakieś bajery z hasłami. Po stronie php po prostu sprawdzasz czy certyfikat to ten sam, co masz zapisany w bazie...

A tak to md5 Ci wystarczy, ew. sha1... Jak ktoś się naprawdę napali to z odrobiną (choć sporą odrobiną) szczęścia oba złamie, choć sha1 zdecydowanie trudniej.
Go to the top of the page
+Quote Post

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: 14.08.2025 - 08:10