Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bezpieczeństwo haseł przy użyciu soli
nexis
post
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Zwykle, dla bezpieczeństwa, trzymamy w bazie danych skrót hasła, utworzony za pomocą md5() bądź sha1(). Z myślą o tęczowych tablicach dopisujemy zwykle dodatkowo tzw. sól, która jest trzymana poza bazą danych, zwykle na serwerze.

Chciałbym jednak zwiększyć bezpieczeństwo również po stronie użytkownika i zastosować mechanizm znany z banków internetowych, czyli odpytywanie użytkownika o wybrane znaki hasła. Aby zastosować taki mechanizm jestem jednak zmuszony zapamiętać każdy znak hasła osobno. Powiedzmy, że w tym celu narzucę maksymalną długość hasła na 16 znaków i stworzę w tabeli bazy danych 16 dodatkowych pól (po 1 dla każdego znaku). Jak ma się jednak w/w sposób do tej sytuacji? Sam skrót to praktycznie żadne zabezpieczenie. Zastosowanie soli już bardziej, ale jest to wciąż bardzo słaby mechanizm. Co zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Wersja skrócona:
Problem: Algorytm się minimalnie zmienia. Pociąga to za sobą konieczność zmiany wszystkich hashy wszystkim użytkownikom bo inaczej każda autoryzacja za pomocą podania litery na pozycji X wywali błąd. Jak to zrealizujesz nie posiadając hasła w postaci, na podstawie której wygenerujesz nowe hashe dla każdej litery z osobna? Bo z hasha całego hasła takich danych nie uzyskasz w żaden sposób. Konieczne więc jest uniezależnienie się od znajomości tego hasła w postaci jawnej.
Taką zmianą mogło by być dodanie tokena losowego ważnego X godzin/dni. Po upłynięciu czasu konieczne jest ponowne generowanie hashy. Jak pobierzesz hasło usera i litery w nim by wygenerować nowe skróty? Odkodujesz z bazy hash hasła? (IMG:style_emoticons/default/winksmiley.jpg)
Ja dałem propozycję zastosowania kodu pośredniego, który jest hashem każdego ze znaków w haśle. I to on byłby bazą dla obliczeń by nie sięgać do jawnej postaci.
Założenie hasła (aktualizacja hasła) -> Tworzymy hashe liter hasła metodą do tej pory nie złamaną (przykładowo sha-2) -> reszta algorytmu z solami itp., itd
Gdy następuje zmiana tokena, algorytmu czy czegokolwiek używamy już nie liter hasła ale tych hashy, dzięki czemu nie musimy znać jawnej postaci.
Weryfikacja polega na tym, że tą samą drogą traktujemy podany przez usera w formularzu znak hasła i porównujemy z wyliczonym i gdzieś przechowywanym hashem dla litery na danej pozycji.

Wniosek wysunąłem więc taki, że ta zabawa jest bezsensowna z prostej przyczyny: porównywać możemy na etapie już pierwszego hasha (ten od sha-2) i reszta to tylko sztuka dla sztuki. Zabawa w algorytm jaki my proponujemy ma bowiem tylko sens gdy hasło w bazie jest jawnie, gdyż inaczej nawet tych hashy nie mamy jak wygenerować (IMG:style_emoticons/default/biggrin.gif) Bo skąd pobierzesz informację o tym jaka litera jest na jakiej pozycji do utworzenia hasha porównawczego?
Tylko po co w takim razie jeszcze dodatkowe algorytmy i tworzenie skrótów skoro hasło i tak mamy jawnie?
Dochodzimy więc do absurdu, w którym zwiększanie bezpieczeństwa, obniża je lub tworzy zupełnie zbędny kod.

Dlatego właśnie podstawowe pytanie dla Ciebie jako mojego partnera w dyskusji: Jak przewidujesz, i czy w ogóle masz zamiar, rozwiązać problem ewentualnej drobnej zmiany w algorytmie gdy masz już w bazie przynajmniej kilkuset userów? Jak w takiej sytuacji wygenerujesz im nowe hashe w sposób transparentny, bez zmuszania do ponownej zmiany hasła lub łamania ich haseł? Czy ustawisz w bazie flagę taką, że po zalogowaniu pierwszym, już po zmianie algorytmu, generuje im nowe hashe już zgodne z nowym algorytmem?
Go to the top of the page
+Quote Post

Posty w temacie
- nexis   Bezpieczeństwo haseł przy użyciu soli   3.09.2009, 15:36:42
- - thek   Osobiście nigdy tak nie podchodziłem do sprawy bez...   3.09.2009, 16:16:21
- - sztosz   Akurat dwukierunkowość szyfrowania to nie jest dob...   3.09.2009, 19:17:52
- - blooregard   CytatAkurat dwukierunkowość szyfrowania to nie jes...   3.09.2009, 19:41:13
|- - phpion   Cytat(blooregard @ 3.09.2009, 20:41:1...   3.09.2009, 20:43:13
- - sztosz   Masz hasło x znaków, haszujesz każdy znak, hasz m...   3.09.2009, 20:48:40
- - nexis   Póki co przyszło mi na myśl stosowanie bardzo złoż...   3.09.2009, 20:57:38
- - blooregard   CytatRównie dobrze można trzymać hashe poszczególn...   3.09.2009, 21:04:11
|- - nexis   Cytat(blooregard @ 3.09.2009, 22:04:1...   3.09.2009, 21:08:24
- - blooregard   CytatChodzi o to, żeby sposób był bezpieczny nawet...   3.09.2009, 21:22:00
|- - nexis   Cytat(blooregard @ 3.09.2009, 22:22:0...   3.09.2009, 21:26:31
- - blooregard   CytatEfekt ma być taki, że po przejęciu kontroli n...   3.09.2009, 21:32:38
|- - nexis   Cytat(blooregard @ 3.09.2009, 22:32:3...   3.09.2009, 21:42:52
- - blooregard   CytatWidzi ktoś wady takiego rozwiązania? No nie, ...   3.09.2009, 21:57:03
- - thek   Zastanawiałem się Nexis nad algorytmem, który dawa...   4.09.2009, 09:34:43
|- - nexis   Cytat(thek @ 4.09.2009, 10:34:43 ) Dl...   4.09.2009, 10:40:56
- - thek   Może i tak, ale indywidualna sól dla każdego użytk...   4.09.2009, 12:22:43
- - nexis   Wciąż nie widzę w czym zaprezentowana przez ciebie...   4.09.2009, 12:40:32
- - thek   To przemyśl co da hasło abababab skoro dla każdej ...   4.09.2009, 13:21:41
|- - nexis   Cytat(thek @ 4.09.2009, 14:21:41 ) Tw...   4.09.2009, 21:31:05
- - blooregard   CytatBo jeśli dobrze zrozumiałem Twoje rozumowanie...   4.09.2009, 13:34:11
- - thek   Po przeczytaniu posta odnosi się wrażenie, że nie ...   4.09.2009, 14:02:30
- - thek   Ok... Pomińmy więc w dalszych rozważaniach sól sys...   4.09.2009, 22:07:25
|- - nexis   Cytat(thek @ 4.09.2009, 23:07:25 ) st...   4.09.2009, 22:38:16
- - thek   CytatPodstaw sobie dowolne hasło pod podany przeze...   5.09.2009, 00:05:41
|- - nexis   Cytat(thek @ 5.09.2009, 01:05:41 ) Te...   5.09.2009, 05:51:09
- - thek   Wczoraj w chwili przerwy przejrzałem nasze wypowie...   6.09.2009, 09:45:29
|- - nexis   Cytat(thek @ 6.09.2009, 10:45:29 ) Wc...   7.09.2009, 23:14:48
- - thek   Wersja skrócona: Problem: Algorytm się minimalnie ...   8.09.2009, 21:59:11
- - nexis   Ale po co miałbym kiedykolwiek zmieniać sól dla uż...   8.09.2009, 22:48:50
- - thek   Chodzi mi o sytuacje gdy, przykładowo, zauważyłeś ...   9.09.2009, 09:23:47
- - nexis   Algorytm opracowuje się raz i dobrze. Cała jego id...   9.09.2009, 09:26:42
- - thek   Wiem, że algorytm powinien być napisany raz a dobr...   9.09.2009, 13:04:35


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 05:12