![]() |
![]() |
![]() ![]()
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 ![]() |
Wiem, że algorytm powinien być napisany raz a dobrze, ale nie można wszystkiego przewidzieć. Bo nigdy zresztą sam nie wiesz gdzie ktoś wykryje lukę, która może się w Twoim algorytmie ujawnić. Dla przykładu... Ktoś znajdzie sposób na w miarę szybkie złamanie sha1, nawet posolone. Co wtedy robisz? Musisz przynajmniej funkcję hashująca na inną zmienić. A to wiąże się z ponownym przeliczeniem skrótów. Osobiście sam bym zarzucił "dodatkowy" ukryty hash. Powody są dwa: dublowanie informacji o haśle i to co napisałem wyżej, czyli bezsensowność tego rozwiązania w kwestii niepotrzebnego dokładania nadmiarowej pracy dla serwera, która i tak jest sztuką dla sztuki a nie poważnym zabezpieczaniem.
Pozostaje jednak problem... Co zrobić by się przed ewentualnym problemem konieczności zmiany czegoś w algorytmie zabezpieczyć. Znaczy jak i czy w ogóle ma sens ewentualna furtka dla admina by zmienić hashe userowi w określonym wypadku. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 09:11 |