![]() |
![]() |
![]() ![]()
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 ![]() |
Może i tak, ale indywidualna sól dla każdego użytkownika rozwiązuje sprawę tylko na poziomie grupy użytkowników. Jeśli ktoś chciałby jednak poznać hashe konkretnych znaków dla konkretnego usera, wystarczy że będzie je podstawiał i może próbować z częstotliwości wnioskować. Zwłaszcza przy dłuższych hasłach. Tutaj właśnie pojawia się problem "odwrotnej skuteczności zabezpieczania" czy "paradoks paranoidalności" jak ja je nazywam. Im dłuższe hasło tym prościej je złamać algorytmami bazującymi na częstotliwości występowania znaku dla danego użytkownika. Wystarczy, że user kilkukrotnie zmieni hasło na inne i będzie można porównać częstotliwość występowania danego skrótu. Tak więc najbardziej dbający o bezpieczeństwo użytkownicy, zmieniający hasła często, są najbardziej narażeni na jego złamanie. Dlatego też proponowałem wprowadzenie elementu "pseudolosowego" dla każdej litery. Tak, by nie zwracała ona za każdym razem tego samego po zastosowaniu algorytmu (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 11:06 |