![]() |
![]() |
![]() ![]()
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 ![]() |
Chodzi mi o sytuacje gdy, przykładowo, zauważyłeś błąd w algorytmie i go musiałeś poprawić, lub jak już wspomniałem wprowadzić byś chciał pewne zmienne czasowo parametry (jakieś tokenki czy inne tego typu drobiazgi), które wymagały by okresowego dostępu do hasła. Zauważ, że tego typu sytuacje wymagają znajomości znaków hasła na każdej pozycji by wygenerować dla nich nowy skrót.
Na ten moment raz podane hasło generuje grupę hashy dla liter i jakakolwiek zmiana algorytmu (niekoniecznie soli użytkownika czy pozycji) sprawia, że hashe są nieprawidłowe. Jeśli zauważyłbyś w algorytmie lukę bezpieczeństwa to co byś zrobił by zmienić algorytm i wygenerować uzależnione od nowego algorytmu hashe? Na tę chwilę myślę, że musiałbyś ustawić flagę w bazie jakąś i czekać aż user zaloguje. Jeśli flaga jest na false to przechwyć jego hasło w postaci jawnej, odpal procedurę zmiany hashy, ustaw flagę na true i ok. Nie sądzę by inaczej się dało, bo przecież nie wyciągniesz hasła z hasha w bazie. Stąd właśnie wspomniałem, że jeśli już by dochodziły naprawdę losowe rzeczy to konieczne jest przechowywanie informacji o chociażby skrótach znaków hasła gdzieś. Oczywiście tylko w sytuacji gdy taki wymóg jak zmienne tokeny jest konieczny, bo jak już powiedziałem to wprowadza przerost formy nad treścią już. Ale może się okazać, że w ten sposób jest realizowany dostęp do pewnych danych serwisu i niestety nie da się tego uniknąć. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 18:11 |