Archiwum działu Ogólne (posty do 12.2007) - Ulepszenie kodowania hasel w bazie danych
rzymek01 - 08-01-2006, 15:16
nie czytałem wszystkich stron (1 i 7) , a chciałem tylko napisać, że u siebie w RzymekCMS na 99% zrobię Kod: | sha1(base64_encode(md5($haslo))); | lub Kod: | sha1(base64_encode(md5(md5($haslo)))); | ewentualnie Kod: | sha1(md5(base64_encode(md5($haslo)))); | Moim zdaniem utrudni to na tyle złamanie hasła, że nie trzeba będzie robić większych zabezpieczeń
i nie ważne co zrobi Przemo, bo i tak powstaną takie portale, gdzie wpisuje się jakieś słowo i jest w DB zapisywane słowo i hash do forum Przema... i jak ktoś wpisze hash, który jest już w bazie to hasłko cacy lala odkodowane
//edytowany :->
Crack - 08-01-2006, 15:31
Pomysł ze zmianą kodowania ma sens rzeczywiście tylko gdy do serwera hasła lecą już zakodowane (odpowiedni skrypt ma 9 kB).
Problem kompatybilności i zmiany haseł: należy pole w bazie danych przedłużyć z 32 do np. 33 znaków. Podczas logowania, jeśli hash z bazy ma 32 znaki i zgadza się z podanym hasłem, nalezy przetworzyć go na nowy i zapisać w bazie (doklejając na początku albo na końcu jakikolwiek znak). Do tego trzeba zrobić funkcję działającą odwrotnie (nowy hash na stary) dla phpBB dla osób chcących odinstalować forum. Zamiast md5 można stosować sha1 - dłużej się go łamie i ma inną długość (40 znaki) co rozwiązuje problem różnych długości.
W ten sposób uniknie się niewygodnej dla użytkowników zmiany haseł - wszystko odbędzie się automatycznie, bez ich wiedzy. Będzie też możliwość wykonania odwrotnej konwersji poprzez samą podmianę / modyfikację pliku login.php w phpBB.
Graffi napisał/a: | no ja akurat mam wrażenie że podczas logowania to zawsze leci jawnie do serwera, jedynie jak masz logownaie automatyczne to wtedy leci jakiś klucz a nie jawnie haasło - mylę sie?? |
Tak, do serwera zawsze lecą jawne dane (chyba że jest to połaczenie z wykorzystaniem SSL/TLS), ale zamiast hasła można wysyłać gotowy hash md5. Wtedy po użyciu sniffera i tak musisz udać się do tabelek albo samodzielnego łamania.
Mimo wszystko jestem za zachowaniem pełnej wstecznej kompatybilności i nieruszaniem hasła.
Rogacz - 08-01-2006, 15:42
chelloPL napisał/a: | przeglądarka js nie obsługuje (np: links). Takich przypadków nie powinno być dużo, ale wówczas warto do formularza dodawać jakąś sygnaturę, że hasło leci plaintextem i wówczas (niestety) kodować je po stronie serwera. |
mi sie dosc czesto zdaza kozystac z linksa wiec lepiej odrazu nie skreslac starych przegladarek
niedzwiedz_2 - 08-01-2006, 16:02
ha, nareszcie koniec
ja popieram Paszczaka; ludzie muszą się nauczyć mieć dobre hasła (ja mam zazwyczaj 9 znaków; na Admina u mnie na forum mam 11, cyfry + znaki specjalne).
Kiedyś wziąłem kilka hashy z mojej bazy i zacząłem łamać jakimiś słownikami co znalazłem w necie (małe słowniki). chyba ~75% udało się złamać; często hasła to imiona
beznadzieja
mój głos za NIE. ew z możliwością wyboru przy instalacji.
Paszczak000 - 08-01-2006, 16:17
Graffi napisał/a: | no więc tak sobie to czytam i czytam... (p.s. od dłuższego czasu to forum oglądam ale dopiero dziś sie zarejestrowałem ) |
a na kadu.net to siedzisz często Poznałem po avatarze
Graffi napisał/a: | użytkowników trzeba namawiać (czyt. nekać ustawieniami forum) aby mieli bezpieczne hasła, jak komuś na obecności na forum zależy to se hasło będzie umiał "wyprodukować" |
i o to mi chodzi cały czas :]
chelloPL, ja się bawie w http://md5.camels.aplus.pl/
Głównie hasła ludzi z forów (70.43%) - tyle ma proste hasła.
Crack napisał/a: | (chyba że jest to połaczenie z wykorzystaniem SSL/TLS) |
ale to ma być forum a nie system bankowy
Ludzie, Rodacy, Suport, ModTeam, Andmini i cała reszto - ucz usera mieć trudne hasło! Twój algorytm i tak nie da rady z głupotą i bezmyślnością ludzką!
Graffi - 08-01-2006, 17:02
Paszczak000 napisał/a: |
Ludzie, Rodacy, Suport, ModTeam, Andmini i cała reszto - ucz usera mieć trudne hasło! Twój algorytm i tak nie da rady z głupotą i bezmyślnością ludzką! | no właśnie, masz racje, dwie rzeczy jak słyszalem nie znaja granic "miłosierdzie Boże" i "głupota ludzka" - ma to swoją wymowe...
więc wypada miec po prostu jak najbardziej "zamotane" hasło
ma to swój sens, trudno podejrzeć i zapamiętać jak ktos wpisuje żeby "przez ramię" podejrzeć
no i slownikowe hasła odpadają
Crack napisał/a: | Tak, do serwera zawsze lecą jawne dane (chyba że jest to połaczenie z wykorzystaniem SSL/TLS), ale zamiast hasła można wysyłać gotowy hash md5. Wtedy po użyciu sniffera i tak musisz udać się do tabelek albo samodzielnego łamania. | jawne - OK
ale jak masz właczone "automatyczne logowanie" to wtedy nie przeyłasz do serwera jawnych danych w postaci jawnego hasła a w postaci numeru (nie wiem dokładnie czy to jest md5() naszego hasła czy nie to już glowy nie dam, to chyba jest jakis klucz - taki jakiś, ale tego nie gwarantuje )
Paszczak000 - 08-01-2006, 17:07
Graffi, jest jeszcze powiedzenie A. Einsteina:
"Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota, choć nie jestem pewien co do tej pierwszej."
Graffi napisał/a: | ma to swój sens, trudno podejrzeć i zapamiętać jak ktos wpisuje żeby "przez ramię" podejrzeć |
kolejny plus dla, którego warto mieć trudne hasło, a idąc metodą my zabezpieczmy a oni niech mają hasło a to dojdziemy do momentu kiedy user stwierdzi, że dla niego jest za trudne zapamiętać jaki on ma nick i GG. Forum ma się tego domyśleć.. stworzyć mu profil i takl zabezpieczyć, że tylko on może z tego korzystać.
Crack - 08-01-2006, 17:30
Paszczak000 napisał/a: | Crack napisał/a:
(chyba że jest to połaczenie z wykorzystaniem SSL/TLS)
ale to ma być forum a nie system bankowy |
O to mi chodziło, lepiej nie popadać w paranoję. md5 jest nadal uznawany za bezpieczny. Przed zbyt prostymi hasłami nie uchroni nawet najlepsze zabezpieczenie.
vegetagt - 08-01-2006, 17:31
Graffi napisał/a: | ma to swój sens, trudno podejrzeć i zapamiętać jak ktos wpisuje żeby "przez ramię" podejrzeć |
zapamiętałem hasło 9 znakowe litery + cyfry + !
Paszczak000 - 08-01-2006, 17:33
Crack napisał/a: | O to mi chodziło, lepiej nie popadać w paranoję. md5 jest nadal uznawany za bezpieczny. Przed zbyt prostymi hasłami nie uchroni nawet najlepsze zabezpieczenie. |
W takim razie temat można uznać za zakończony skoro się ze mną zgadzacie?
pecador - 08-01-2006, 17:44
Istnieją przecież różne słowniki, bazy z hashami md5. Jeśli się zmieni kodowanie haseł, to trzeba będzie jedynie poczekać, aż powstaną nowe słowniki i bazy z zakodowanymi hasłami.. bo co to za problem zakodować odpowiednio hasło i dodać je do takiej bazy, aby później móc go z niej wydobyć?
Dlatego zgadzam się z Paszczakiem, lepiej uczyć użyszkodników, aby mieli trudne hasła, a nie wymyślać nowe kodowania. Można skorzystać z pomysłu Gaw, zrobić coś takiego, co będzie pokazywać 'jakość hasła' (tak jak np. w ustawieniach firefoxa) i dobrze widoczną informację, że użytkownik ma mieć dobre hasło i to jest w jego własnym interesie.
chelloPL - 08-01-2006, 17:50
Leone napisał/a: | Jeśli się zmieni kodowanie haseł, to trzeba będzie jedynie poczekać, aż powstaną nowe słowniki i bazy z zakodowanymi hasłami. |
Niekoniecznie. Bo czy dla funkcji crypt możesz wygenerować jakiekolwiek słowniki? Nie, bo za każdym razem generowany klucz jest inny (pomimo iż jest to to samo hasło).
knebel - 08-01-2006, 17:50
A czy nie wystarczy zrzucić odpowiedzialność za swoje hasło na użytkownika ? To bardzo proste.
Dodać do formularza rejestracyjnego jakiś skrypcik, który analizowałby hasło usera pod kątem ilości znaków i rodzaju znaków i w razie prostego hasła wywalać informację o tym że hasło jest zbyt proste do złamania i że administratorzy forum nie biorą odpowiedzialności za bezpieczeństwo jego profilu i zaleca się jego zmodyfikowanie?
Wierzcie po przeczytaniu czegoś takiego sam zmienił bym sobie na trudniejsze
pecador - 08-01-2006, 17:52
chelloPL, a będzie to można wykorzystać przy forach? chyba nie, bo skoro za każdym razem będzie inny klucz, to nie będzie można porównać z hasłem w bazie. Chyba, że następowało by rozkodowanie i dopiero wtedy porównanie, ale to przecież nie ma sensu.
knebel, dokładnie to samo pisałem z tą jednak różnicą, że nie tyle wymagać od użytkowników trudnych haseł, co wyraźnie ich ostrzegać, że powinni mieć hasła trudne do złamania.
chelloPL - 08-01-2006, 18:13
Leone, żadne rozkodowywanie.
Dowcip polega na tym, że hasz do zapisania w bazie generujesz:
crypt('haslo');
A chcąc porównać poprawność hasła wykonujesz:
Kod: | if (crypt('podane_haslo', hasz_zapisany_w_bazie) == hasz_zapisany_w_bazie) ... |
i funkcja zwraca true jeśli hasło się zgadza (jeśli jest podane to samo co przy rejestracji) lub false jeśli hasła są różne.
Nie ma możliwości rozkodowania hasła metodą inną niż bruteforce. Przynajmniej jeszcze
|
|
|