AndyPSV
26.10.2010, 12:10:52
Chodzi o to, ze mam PIN: 8 cyfrowy i musze go zakodowac w bazie w ten sposob, aby w przypadku wykradniecia bazy nie bylo mozliwe zrobienie na komputerze wszystkich mozliwych 100 000 000 kombinacji cyfr odkodowanie
musi to byc skrypt dzialajacy tylko w jedna strone, za kazdy razem zwracajacy ten sam wynik, w stylu:
tylko, ze jego sporzadzenie musi trwac znacznie dluzej
Nattfarinn
26.10.2010, 12:22:25
Cytat(AndyPSV @ 26.10.2010, 13:10:52 )

Chodzi o to, ze mam PIN: 8 cyfrowy i musze go zakodowac w bazie w ten sposob, aby w przypadku wykradniecia bazy nie bylo mozliwe zrobienie na komputerze wszystkich mozliwych 100 000 000 kombinacji cyfr odkodowanie
musi to byc skrypt dzialajacy tylko w jedna strone, za kazdy razem zwracajacy ten sam wynik, w stylu:
tylko, ze jego sporzadzenie musi trwac znacznie dluzej
Nie jestem pewien czy dobrze rozumiem... Co ma czas generowania hash'a do samego jego jednostronnego kodowania?
kiler129
26.10.2010, 12:24:44
Bardzo proste rozwiązanie - crypt()!
Generuje zawsze inny wynik ponieważ posiada mechanizm soli.
A kodowanie w jedną stronę jak to nazwałeś to hashowanie.
AndyPSV
26.10.2010, 15:18:38
Nie jestem pewien czy dobrze rozumiem... Co ma czas generowania hash'a do samego jego jednostronnego kodowania?
chodzi o to, ze jak ktos zdobedzie baze to nie odkoduje hasla
JEDNAK
ktos moze wlamac sie na serwer (stoi na innym niz serwer SQL) i zdobyc kod, dzieki czemu bedzie mogl wygenerowac petle wszystkich mozliwych kombinacji poprzez co moze zdobyc hashe do PINU
dlatego trzeba znacznie utrudnic ten krok (czas wykonywania) chyba, ze ktos ma lepsze rozwiazanie
Od takich rzeczy to jest sól doklejana do hasła, a nie wydłużanie czasu działania. Nie pomyślałeś, że jak to się będzie liczyć 10 sekund, to szlag trafi Twoich użytkowników, bo Twój serwer będzie zajęty liczeniem haszów do logowania?
AndyPSV
26.10.2010, 19:12:29
sól?
znalazlem juz rozwiazanie - po prostu inny algorytm niz haslo, ukryty
flashdev
26.10.2010, 19:26:42
Cytat(AndyPSV @ 26.10.2010, 20:12:29 )

sól?
znalazlem juz rozwiazanie - po prostu inny algorytm niz haslo, ukryty
Dla każdego pinu losujesz sól np. przy pomocy uniqid(). I doklejasz do hasła przed zaszyfrowaniem.
$hash = sha1($pin . $sol);
// zapisz $sol, oraz $hash w bazie danych
Teraz znalezienie wszyskich możliwych kombinacji to obliczenie tego wyrażenia dla około 2,48e+26 (bardzo dużo) przypadków.
Kod
26^13 * 10^8 ~= 2,48e+26
Cytat
po prostu inny algorytm niz haslo, ukryty
Kolejna "genialna" myśl kryptograficzna. Za dużo science-fiction i amerykańskich filmów się naoglądałeś, bowiem jedyne miejsce na świecie, gdzie wciąż wierzą, że siła algorytmu zależy od jego tajności, jest Hollywood. Era takiej kryptografii skończyła się tymczasem ok. 1975 roku. A nie zastanowiłeś się nad tym, że jak jakiś gościu zdobędzie dostęp do bazy danych, zazwyczaj będzie też równocześnie mieć dostęp do plików strony, w tym do kodu Twojego pseudo-kryptograficznego algorytmu?
Od tego jest sól.
KrzysiekWildfire
27.10.2010, 10:18:58
Nie sądzę, aby osoba która dostała się do serwera bazy danych miała problem z dostępem do serwera plików jeżeli udało jej się włamać do bazy danych. A jeżeli masz już bazę danych, to możesz zrobić wszystko (tworzenie kont administratorów, usuwanie kont, dodawanie/usuwanie treści). Najlepszym sposobem jest zastosowanie nietypowego rozwiązania przy tworzeniu hasła - wszak jeżeli ktoś nie będzie znał procesu tworzenia hasha to nie będzie w stanie złamać kodu. Chciałbym tutaj zauważyć ciekawą rzecz, jeżeli każdy tworzyłby własny sposób generowania hashow (przynajmniej próbował) to może już teraz bylibyśmy w posiadaniu algorytmu miliony razy skuteczniejszego od obecnie stosowanych.
wookieb
27.10.2010, 10:25:36
Cytat(KrzysiekWildfire @ 27.10.2010, 11:18:58 )

Chciałbym tutaj zauważyć ciekawą rzecz, jeżeli każdy tworzyłby własny sposób generowania hashow (przynajmniej próbował) to może już teraz bylibyśmy w posiadaniu algorytmu miliony razy skuteczniejszego od obecnie stosowanych.
Mylisz się zacny Panie. Obecnie prawie każdy próbuje tworzyć jakieś własne FW (a ci co nie robią nadal żyją w śmietniku tylko że w czyimś - podpisany "marką" ZF bądź Symfony) i nie mamy w świecie PHP nic innego poza śmietnikiem.
Abstrahując od php obecnie jest dość dużo algorytmów szyfrujących i szczerze mówiąc jeżeli potrzebujesz dobrego algorytmu RSA to masz ich pod dostatkiem. Dobrego algorytmu jednostronnego? ShaX z wysokim X wystarczy.
Innym sposobem jest np zapisywanie haseł w mózgach murzynów - też jest taka opcja ale nie wiem co na to powie GIODO.
Teoretycznie jest szansa, że milion małp klepiących losowo na klawiaturze wystuka dzieła Shakespeare'a. Co Ci niby wymyśli początkujący programista, który wiedzę o krytografii czerpie z amerykańskich filmów, a jego znajomość matematyki często nie wystarcza nawet do przyzwoitego zdania matury?* Wystarczy popatrzeć, ilu ludzi próbuje bawić się w wielokrotne haszowanie i nie dociera do nich, że jest matematycznie udowodnione, że nie da się tak poprawić jakości klucza. Kryptografia i zagadnienie funkcji mieszających bazuje na ciężkiej matematyce wyższej - zajmują się tym najlepsi matematycy świata. Jeśli ktoś z ulicy byłby w stanie ich pobić, to znaczy, że sam zalicza się też do czołowych matematyków.
* - oczywiście nie chcę tu nikogo obrażać. Wśród początkujących programistów na pewno jest trochę ludzi, którzy bez problemu mogą osiągnąć dobre wyniki na maturze lub je nawet osiągnęli, ale i tak to nie jest wciąż ten poziom.
flashdev
27.10.2010, 15:06:10
Cytat(Zyx @ 27.10.2010, 15:01:47 )

Teoretycznie jest szansa, że milion małp klepiących losowo na klawiaturze wystuka dzieła Shakespeare'a.
[...]
http://pl.wikipedia.org/wiki/Twierdzenie_o...ej_liczbie_małp 
Na forum przydałaby się możliwość głosowania na posty, wtedy takie posty Zyx`a możnaby zaplusować, a posty KrzysiekWildfire`a zaminusować. Wtedy osoby, które próbują się czegoś nauczyć miałyby mniej śmieci do odfiltrowania a tematy byłyby bardziej wartościowe.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.