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ć? |
|
|
|
![]() |
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.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%)
|
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. 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. |
|
|
|
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 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 ![]() ![]() |
|
Aktualny czas: 25.12.2025 - 14:36 |