Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ciąg zaburzający w hasłach - osobny czy wspólny?, md5, sha1, logowanie w sesji czy ciastku
WebCM
post
Post #1





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


Rozważmy system użytkowników w portalu internetowym. Aby utrudnić wydobycie hasła z zaszyfrowanego ciągu znaków, można dodać ciąg zaburzający (sól). Czy gra jest warta świeczki? W końcu atakujący musi uzyskać zakodowane hasło. Generować osobne sole i zapisywać je w tabeli "users" obok hasła czy wystarczy 1 dla wszystkich (zapisany w pliku konfiguracyjnym)?

1 ciąg dla wszystkich
+ brak dodatkowego narzutu danych w tabeli z użytkownikami
+ oddzielony od bazy danych
- jeżeli atakujący pozna ciąg, szybciej pozna inne hasła, mając sumy md5/sha1...

Osobny ciąg dla każdego
+ dodatkowe pole w bazie
+ każdy ma inny ciąg, co utrudnia wydobycie hasła
- jeżeli wycieknie baza, nie ma wielkiej różnicy

1. Jeżeli atakujący pozna ciąg zaburzający, czy to mu ułatwi zdobycie hasła? Ciągiem zaburzającym może być również istniejąca wartość w bazie, np. login, e-mail. Mając sól, może sobie wygenerować własną tablicę tęczową dla danej soli, a czy to mu ułatwi szukanie w gotowych tablicach?

2. Czy użycie 2 funkcji sha1( md5(hasło) + ciąg ) zwiększa ryzyko kolizji? W bazie są już zapisane hasła zakodowane md5(haslo), zapiszemy gdzieś ciąg, natomiast md5(haslo + ciag) musielibyśmy wygenerować dodatkowo dla każdego użytkownika.

3. Jaki powinien być skuteczny ciąg zaburzający? Można uniqid(), własną funkcję ze zbioru wartości <0-z>, dane z bazy (login każdy zna, e-mail też łatwo zdobyć).

Jeżeli użytkownik kliknie Zapamiętaj mnie przy logowaniu, zapisuję zakodowane hasło w ciastku. Tak samo jest w IPB. Największe ryzyko jest na publicznych komputerach, gdzie ktoś zapomni się wylogować, stąd potrzeba hashowania. Przeciętny użytkownik nie zna funkcji "karta prywatna", używa prostych haseł. Inne zagrożenie to podsłuch, ale przecież przy logowaniu podajesz hasło jawne. Nie piszcie o SSL, bo nie wszędzie to wykonalne.

Ten post edytował WebCM 29.07.2012, 00:49:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
WebCM
post
Post #2





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

Ostrzeżenie: (0%)
-----


greycoffey: Chodzi mi o zastosowanie 2 różnych funkcji, kiedy w bazie mam md5(hasło), a nie mam md5(hasło+kod). Mając w ciastku hash(md5(hasło) + kod) po prostu sprawdzamy, czy zgadza się z tym, co jest w bazie. Czy to poważnie zwiększa ryzyko kolizji?

Doszedłem do kilku wniosków:

1. Jeśli mamy chronić hasła na wypadek wycieku bazy danych, hasła i tak muszą być zapisane w postaci szyfr(hasło + kod). Najczęstszą przyczyną wycieków są niezabezpieczone zrzuty tabel na serwerze z plikami serwisu.

2. Kod powinien być ściśle tajny. Wtedy atakujący nie wygeneruje sobie tablic tęczowych dla danego kodu, bo go nie zna!

3. Czy 1 kod dla wszystkich jest mniej bezpieczny? Jeżeli atakujący uzyska dostęp do plików konfiguracyjnych, wtedy mamy problem. Zdarzają się takie wpadki na serwerach. Jeśli zapiszemy osobne kody dla każdego w bazie, atakujący ma podane wszystkie kody - nic, tylko generować tablice!

4. W sytuacji, gdy w bazie są już md5(hasło) i chcemy zmienić na szyfr(hasło + kod), jedynym wyjściem jest reset wszystkich haseł, bo tablice tęczowe nie zwrócą nam wszystkich haseł i jest ryzyko trafienia na kolizję.

5. Większym zagrożeniem jest odczytanie ciastka, przejęcie sesji lub wykorzystanie błędów w aplikacji. Czasami bardziej opłacalny jest atak siłowy niż próba zdobycia bazy danych.

Na początku chciałem tylko zabezpieczyć ciastka. Wszak można je zostawić podczas logowania w miejscach publicznych. A może warto też zabezpieczyć hasła w bazie, czyli szyfr(hasło+kod)?

Cytat
Przy implementowaniu "Zapamiętaj mnie" pod żadnym warunkiem nie powinieneś wrzucać hasła do ciasteczka (nawet w formie hashu). Wygeneruj unikalny, losowy ciąg, który będzie powiązany z danym użytkownikiem i przeglądarką. Dodatkowo przy każdy poprawnym zalogowaniu przy jego pomocy regeneruj go.
Przynajmniej system nie musi się martwić o zarządzanie sesjami typu "zapamiętaj mnie". Większa odpowiedzialność spada na użytkownika, który używa tej opcji.
Go to the top of the page
+Quote Post
greycoffey
post
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Cytat(WebCM @ 30.07.2012, 22:47:31 ) *
greycoffey: Chodzi mi o zastosowanie 2 różnych funkcji, kiedy w bazie mam md5(hasło), a nie mam md5(hasło+kod). Mając w ciastku hash(md5(hasło) + kod) po prostu sprawdzamy, czy zgadza się z tym, co jest w bazie. Czy to poważnie zwiększa ryzyko kolizji?


Użycie dwóch różnych funkcji hashujących również zwiększa prawdopodobieństwo kolizji. Mamy dwie funkcje hashujące H i H2, salt S, wiadomości A, B, C i D, więc może zdarzyć się tak:

Kod
H(A)       == H(B)
H2(H(A)+S) == H2(H(B)+S)

H(C)       != H(D)
H2(H(C)+S) == H2(H(D)+S)


Polecam stosowanie wolnych, poprawnych matematycznie funkcji mieszających. MD5, SHA1 nadają się do tworzenia skrótów dużych plików, nie do mieszania haseł, które w porównaniu z wcześniej wymienionymi plikami, są minimialne.
Go to the top of the page
+Quote Post

Posty w temacie
- WebCM   Ciąg zaburzający w hasłach - osobny czy wspólny?   29.07.2012, 00:47:41
- - Crozin   Było już o tym wiele razy. Unikalna sól dla każdeg...   29.07.2012, 01:02:02
|- - yevaud   CytatByło już o tym wiele razy. Unikalna sól dla k...   30.07.2012, 08:53:33
- - greycoffey   Apropo podwójnego hashowania: Posiadamy funkcję h...   29.07.2012, 22:18:22
- - Crozin   Cytatbyło już wiele razy o tym, że nie ma to żadne...   30.07.2012, 09:39:47
- - wNogachSpisz   Cytat(Crozin @ 30.07.2012, 10:39:47 )...   30.07.2012, 09:55:55
- - Crozin   CytatKolizje są mega długie. System autoryzacji od...   30.07.2012, 10:26:28
- - wNogachSpisz   Przeprowadź zatem skuteczny atak wykorzystujący ta...   30.07.2012, 13:52:52
|- - !*!   Cytat(wNogachSpisz @ 30.07.2012, 14:52...   30.07.2012, 13:57:23
- - Crozin   Muszę małe sprostowanie do swojego postu napisać. ...   30.07.2012, 15:32:49
- - WebCM   greycoffey: Chodzi mi o zastosowanie 2 różnych fun...   30.07.2012, 21:47:31
|- - greycoffey   Cytat(WebCM @ 30.07.2012, 22:47:31 ) ...   31.07.2012, 10:23:02
- - yevaud   CytatCytatpowinieneś skorzystać z Blowfisha bądź p...   30.07.2012, 22:14:19
- - Crozin   Cytat2. Kod powinien być ściśle tajny. Wtedy ataku...   30.07.2012, 22:20:05
- - WebCM   CytatPo drugie - i co ważniejsze - zamiast generow...   31.07.2012, 00:58:07
- - Crozin   CytatA może hybryda: hasło + kod wspólny + kod oso...   31.07.2012, 01:31:15
- - WebCM   Jeśli wycieknie baza, atakujący pozna wszystkie un...   1.08.2012, 15:11:29
- - wNogachSpisz   Gdzieś czytałem że korzystanie z mało popularnych ...   2.08.2012, 12:26:06
- - Crozin   Wyciek kodów to szybkiej autoryzacji to już rzeczy...   2.08.2012, 15:11:50
- - hind   Do autoryzacji można użyć też GeoIP, Google czasem...   3.08.2012, 07:26:47
- - WebCM   To jakie algorytmy polecacie, które generują krótk...   14.08.2012, 17:37:51
- - Crozin   1. Odpowiedź już padła wielokrotnie, np. blowfish....   14.08.2012, 22:14:22
- - erix   Temat: podwojne hashowanie hasel - w tym temacie z...   16.08.2012, 08:28:51
- - WebCM   Powracam do tematu. Piszecie, że przechowywanie ha...   13.02.2016, 19:32:08
- - com   bzdura, dalej nie odrobiłeś zadania domowego, choć...   13.02.2016, 19:55:44
- - WebCM   Przeczytaj mój post w całości. Próbuję ocenić pozi...   13.02.2016, 20:14:10
- - Comandeer   Ale zakodowane = da się odkodować… Czyli z z...   13.02.2016, 20:20:35
- - com   przeczytałem, ale zapomniałeś o ważnym fakcie, a m...   13.02.2016, 20:39:58
- - WebCM   Powiadasz, że znajdzie sobie takie b, że bcrypt(a+...   13.02.2016, 21:36:49
- - Comandeer   Czyli twierdzisz, że to bez znaczenia, że przesyła...   13.02.2016, 22:57:45
- - com   znacznie wiesze niż jak masz samo id usera które w...   14.02.2016, 02:26:30
- - Comandeer   Zaraz, czy ja dobrze rozumiem: chcesz w ciastku um...   14.02.2016, 07:46:08
- - vokiel   Może podzielmy to na 2 przypadki: 1. Utrzymywanie ...   14.02.2016, 12:08:58
- - WebCM   CytatJeśli dajesz komuś na tacy hasło to poco mu b...   14.02.2016, 15:59:06
- - com   powiedz mi ile baz już Ci wyciekło? Dajesz hasło n...   14.02.2016, 16:08:20
- - WebCM   CytatDajesz hasło na tacy, bo zna jego hash a znal...   14.02.2016, 17:05:55
- - com   nic nie musi długo liczyć bo ma próbkę i znajduje ...   14.02.2016, 17:17:10
- - Comandeer   CytatOdkodowanie tego i wycięcie soli jest bardzie...   14.02.2016, 17:19:30
- - WebCM   Na temat bcrypt(sól+hasło) wszystko znajdziecie w ...   21.02.2016, 16:08:02
- - Pyton_000   Zawsze, im silniejsze hashowanie/szyfrowanie tym l...   21.02.2016, 20:51:56
- - WebCM   Zdecydowałem tworzyć unikatowe żetony dla sesji ty...   28.02.2016, 17:39:12
- - Comandeer   CytatTylko co w przypadku, gdy rozszerzenie OpenSS...   28.02.2016, 19:00:54
- - WebCM   Jest jeszcze jeden problem. Mamy prostą tabelkę:[S...   29.02.2016, 00:28:56


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 18:27