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




Ok... Pomińmy więc w dalszych rozważaniach sól systemową i skupmy na owej drugiej. W tym momencie powiedz mi jak wygląda sprawa soli w przypadku gdy hasło użytkownika zawiera te same znaki. Jak na razie bowiem przerabiamy temat gdy znaki w haśle są unikatowe (abcd1234), a ja staram dowiedzieć jak w zamyśle Twój algorytm działa w przypadku haseł w stylu (aaaaaaaa). Zauważ, że fragment jaki zresztą zacytowałeś taki wątek porusza. Na razie rozważasz bowiem w przykładach sytuację, gdy żaden ze znaków się nie powtarza. Z postów zaś wynika, iż każdy znak ma swój hash. Dlatego też napisałem w 8 przypadkach 'sól1 + a', bo tak można wnioskować że algorytm działa, z tego co do tej pory napisałeś. A to jest niebezpieczne bo dla tego samego znaku, hash każdego takiego samego będzie identyczny, niezależnie ile soli do niego władujesz. No chyba, że po prostu każdy użytkownik ma swój własny zestaw hashy dla określonych pozycji. Tylko jak zamierzasz to na serwerze zorganizować? Załóżmy 1000 userów, z których każdy ma hasło około 10-15 znakowe. To daje nam całkiem pokaźną ilość hashy do przechowywania gdzieś na serwerze oraz, co istotniejsze systemu zapisu/odczytu tego pakietu, który mocno wpłynie na wydajność zapewne. Zresztą przy zmianie hasła na dłuższe też musiałbyś jakoś rozwiązać problem dopisania nowych hashy do tej "bazy". Problem bezpieczeństwa staje się więc jednocześnie wąskim gardłem w wydajności :/ Algorytm powinien więc być na tyle bezpieczny by dane na których operuje mogły być przechowywane w bazie i/lub mogły być generowane w locie. Stąd zaproponowałem funkcję losowego tokena zmienianego co jakiś określony czas i który byłby składową przy generowaniu zestawu hashy porównawczych dla danego usera. Każda zmienna bowiem to plus dla bezpieczeństwa, gdyż niweluje nam niezmienność takich danych jak hasło lub pewne ciągi wejściowe użyte podczas procesu generowania ciągów hashy porównawczych.
Go to the top of the page
+Quote Post
nexis
post
Post #3





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

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


Cytat(thek @ 4.09.2009, 23:07:25 ) *
staram dowiedzieć jak w zamyśle Twój algorytm działa w przypadku haseł w stylu (aaaaaaaa)

Podstaw sobie dowolne hasło pod podany przeze mnie, w poprzednim poście, wzór i znałbyś odpowiedź na swoje pytanie. Zakładam, że każdy użytkownik ma unikalną sól dla każdego pojedynczego znaku hasła.

Cytat(thek @ 4.09.2009, 23:07:25 ) *
Załóżmy 1000 userów, z których każdy ma hasło około 10-15 znakowe. To daje nam całkiem pokaźną ilość hashy do przechowywania gdzieś na serwerze oraz, co istotniejsze systemu zapisu/odczytu tego pakietu, który mocno wpłynie na wydajność zapewne.

Założyłem, że maksymalna długość hasła będzie wynosiła 16 znaków, więc pełny zestaw soli zostaje generowany już przy rejestracji nowego użytkownika. Jako metodę przechowania soli proponowałem system plików, ale można równie dobrze wykorzystać niezależną bazę danych i przechowanie nawet 16 soli dla każdego użytkownika nie wpłynie praktycznie w żaden sposób na wydajność. Szczególnie, że dane są pobierane jedynie w takich przypadkach jak: rejestracja, logowanie czy zmiana hasła.
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: 7.10.2025 - 06:53