Skocz do zawartości


 

Zdjęcie

Czy da się złamać hash PHP?

Czy da się złamać hash PHP?

  • Proszę się zalogować aby odpowiedzieć
7 odpowiedzi na ten temat

Czy da się złamać hash PHP?

#1 jensej

jensej

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 205 postów
  • Imię:Jędrek

Napisany 01 maj 2017 - 02:03

Witam.

Załóżmy że mam dwa hasze. Pierwszy z nich jest haszem który powinienem otrzymać (poprawny), a drugi ma być odwzorowaniem tego poprawnego.

a681e6803089bed1dfac6bba1502eda6c717251a82fe04fd6780db713a501864 // poprawny hash

74249b3d2f73e5ea43eba3f181f2624c94f8ceb22d4d56376ccd9cc9c7d3ad8f // generowany hash który powinien być identyczny jak ten wyżej.

Hash generowany jest w ten sposób:

<?php
$id = 123;
$czas = 1493599855;
$static = "ESaKoaIpSK22";
hash("sha256",$id."-".$static."-".$czas); 
?>


Czy ktoś, nie znając stałej $static, jest w stanie jakoś to wygenerować?


Edytowany przez jensej, 01 maj 2017 - 02:04.

  • 0

#2 sohost.pl

sohost.pl

    Nowy użytkownik

  • Firma Bronze
  • 19 postów
  • Firma:DB MEDIA

Napisany 01 maj 2017 - 06:53

Generuje Ci hash w formie sha256, jeżeli nie znajdziesz kodu gdzieś w internecie to nic nie zdziałasz.


  • 0

Hosting 25% taniej przy wpisaniu hasła rabatowego: WHT


#3 Vasthi

Vasthi

    Weteran WHT

  • WHT Pro
  • PipPipPipPipPipPipPipPip
  • 637 postów

Napisany 01 maj 2017 - 07:52

Albo "zgaduj" zmienną static najpierw podstawiając jakieś słowniki itp 


  • 0

#4 Mezir

Mezir

    Czasami na forum

  • Użytkownicy
  • 38 postów

Napisany 01 maj 2017 - 09:09

Proponuję takie :D

$password = "MojeHasło";
$salt = generatePasswordSalt(5);
$salt = str_replace('\\', "\\\\", $salt);
$hash = md5( md5($salt) . md5( $password ));

  • 0

#5 Desavil

Desavil

    Weteran WHT

  • WHT Pro
  • PipPipPipPipPipPipPipPip
  • 560 postów
  • Skąd:/dev/random
  • Imię:Wojtek

Napisany 01 maj 2017 - 10:15

Tak się tego nie robi - o ile chcesz tego używać do zapisywania haseł.

Zainteresuj się tym http://php.net/manua...ssword-hash.php


Edytowany przez Desavil, 01 maj 2017 - 10:17.

  • 0

#6 Suspect121

Suspect121

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 191 postów
  • Imię:Mateusz

Napisany 01 maj 2017 - 13:09

W przypadku hashowania haseł Twoim wrogiem jest szybkość działania funkcji hashującej. Im większa szybkość jej działania, tym hasło zostanie szybciej złamane. Dla haseł zaleca się stosowanie algorytmów które wymagają większej ilości czasu i mocy obliczeniowej.

 

SHA-256 wymaga mniej czasu i mocy obliczeniowej niż bcrypt który używany jest domyślnie w funkcji password_hash. To właśnie dlatego powinieneś używać dla haseł funkcji password_hash a nie algorytmu SHA-256.


  • 0

#7 mk2

mk2

    Nowy użytkownik

  • Nowy
  • 2 postów

Napisany 02 maj 2017 - 20:34

Nie wiem co nazywasz złamaniem. Znaleźć argumentu dla wartości oczywiście prosto się nie da, ale w niektórych zastosowaniach np. wydłużanie jest też atakiem (length extension attack).
 
Jeżeli $static jest tajny, a $id i $czas nie, bo np. implementujesz podpisywanie komunikatu [$id, $czas] kluczem $static i po drugiej stronie robienie czegoś z odebraną parą [$id, $czas] pod warunkiem że pierwsza strona zna prawidłowy klucz $static, prawdopodobnie chcesz użyć HMAC-SHA-256 który robi z kluczem to co trzeba zrobić, a nie zwykłego SHA-256 z kluczem sklejonym z resztą danych.
 

  • 0

#8 jensej

jensej

    Stały użytkownik

  • Użytkownicy
  • PipPipPipPipPip
  • 205 postów
  • Imię:Jędrek

Napisany 07 maj 2017 - 23:57

 

Nie wiem co nazywasz złamaniem. Znaleźć argumentu dla wartości oczywiście prosto się nie da, ale w niektórych zastosowaniach np. wydłużanie jest też atakiem (length extension attack).
 
Jeżeli $static jest tajny, a $id i $czas nie, bo np. implementujesz podpisywanie komunikatu [$id, $czas] kluczem $static i po drugiej stronie robienie czegoś z odebraną parą [$id, $czas] pod warunkiem że pierwsza strona zna prawidłowy klucz $static, prawdopodobnie chcesz użyć HMAC-SHA-256 który robi z kluczem to co trzeba zrobić, a nie zwykłego SHA-256 z kluczem sklejonym z resztą danych.
 

 

tak to podpisywanie komunikatu. Do serwera jest wysyłany czas, id. + ten hash, a serwer sam buduje has na podstawie przesłanego czasu + id + zna $static.

Da się coś zrobić żeby ten $statić złamać w takim wypadku?


  • 0





0 użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników