![]() |
![]() |
![]() ![]()
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 ![]() |
Cytat 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. No właśnie problem w tym, że tego się nie da z Twoich wzorów określić jednoznacznie bo nie określasz nigdzie czy owa dodatkowa sól jest uzależniona od pozycji:sha1(6R$fr2Ga + CRu6$wRu + a) sha1(6R$fr2Ga + cuthA3=R + a) sha1(6R$fr2Ga + th$PhE3u + a) sha1(6R$fr2Ga + +RUt*uF2 + a) sha1(6R$fr2Ga + =r9cH6!u + a) sha1(6R$fr2Ga + F7ecR-ph + a) sha1(6R$fr2Ga + _EKa73@w + a) sha1(6R$fr2Ga + p@$VE96u + a) czy od znaku: sha1(6R$fr2Ga + CRu6$wRu + a) sha1(6R$fr2Ga + CRu6$wRu + a) sha1(6R$fr2Ga + CRu6$wRu + a) sha1(6R$fr2Ga + CRu6$wRu + a) sha1(6R$fr2Ga + CRu6$wRu + a) sha1(6R$fr2Ga + CRu6$wRu + a) sha1(6R$fr2Ga + CRu6$wRu + a) sha1(6R$fr2Ga + CRu6$wRu + a) Teraz przeczytaj jeszcze raz zdanie swoje jakie zacytowałem powyżej i powiedz czy osoba logicznie myśląca uzna wariant 1 czy 2 za prawidłowy. Bo myślę, że oprócz mnie wiele osób pomyśli, iż jednak piszesz cały czas o wariancie 2. Ciągle bowiem przewija się fragment o unikalności dla każdego pojedynczego znaku hasła, a dla wielu może to oznaczać równoważność między dowolnym znakiem a odpowiadającym mu skrótem (tak jak to widać w wariancie 2 powyżej). Może po prostu źle to odbieram i nie myślę już przy weekendzie. Myślę, że powinniśmy się przespać chyba już dziś bo pewnie nie kontaktujemy oboje :D Ale myślę, że rozumiesz teraz na przykladzie o co mi chodzi i od następnego posta będziemy bardziej precyzyjni w doborze słów. Myślę, że zwrot: "każdy użytkownik ma unikalną sól dla każdej pozycji w swoim haśle jest łatwiejsze w odbiorze. A jeśli już przy tym jesteśmy to może powinniśmy się zastanowić, czy te sole miały by być generowane losowo co jakiś czas na podstawie innego pola bazy, czy może generowane co jakiś czas i na sztywno wrzucane do bazy, czy może wyrzucić je poza katalog główny serwera (imho chyba najbezpieczniejsza metoda), czy też może jakiś plik na serwerze, którego nie można by było podejrzeć z poziomu przeglądarki ( na przykład próba wejścia wywoływała by jego interpretację). Ten post edytował thek 5.09.2009, 00:09:07 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
Teraz przeczytaj jeszcze raz zdanie swoje jakie zacytowałem powyżej i powiedz czy osoba logicznie myśląca uzna wariant 1 czy 2 za prawidłowy. Chodzi oczywiście cały czas o wariant 1. czy te sole miały by być generowane losowo co jakiś czas na podstawie innego pola bazy, czy może generowane co jakiś czas i na sztywno wrzucane do bazy Pamiętaj, że hasło znasz tylko w momencie, kiedy użytkownik je poda i porównasz jego prawidłowość ze skrótami. Wtedy ewentualnie masz możliwość zmiany soli i wpisanie nowego skrótu. Być może jest to słuszna uwaga odnośnie podwyższenia bezpieczeństwa. Proponuję zatem, żeby ktoś to potwierdził i wspólnie zaakceptowane rozwiązania wrzucę do pierwszego postu dla przyszłych czytelników, którym prawdopodobnie nie będzie się chciało czytać całych naszych dialogów. wrzucane do bazy, czy może wyrzucić je poza katalog główny serwera (imho chyba najbezpieczniejsza metoda), czy też może jakiś plik na serwerze, którego nie można by było podejrzeć z poziomu przeglądarki ( na przykład próba wejścia wywoływała by jego interpretację). Plik oczywiście musi leżeć poza strukturą dostępną z poziomu przeglądarki, ale to chyba kwestia oczywista. Podobne założenie trzeba oczywiście też przyjąć dla soli głównej i całego pliku konfiguracyjnego. Zdaje się, że niezależna baza danych jest w tym przypadku lepszym rozwiązaniem. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 16:59 |