Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kilka znaków zamiast całego hasła - jak to działa?
NetBeans
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 4
Dołączył: 18.01.2012

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


Cześć.
Pewnie większość z Was kojarzy metody logowania na stronach banków. Jest to wykonane w ten sposób, że musimy podać tylko kilka znaków naszego hasła (reszta jest zablokowana, tak jakby już były wpisane). Zastanawiam się w jaki sposób to działa. Zakładam, że hasła są hashowane, więc w jaki sposób porónywane są ciągi, skoro są niekompletne. Nie jest chyba możliwe, że system wie jakie znaki hasła mamy pod daną cyferką (widoczne na obrazku) i uzupełnia ciąg do porównania z hashem. Do tego "szare" pola są generowane losowo. Interesuje mnie zasada działania, nie proszę o żaden gotowy kod etc.
Pozdrawiam. (IMG:style_emoticons/default/smile.gif)

Wspomniany obrazek:
(IMG:http://i.imgur.com/Dbb16Z6.png)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Koledzy, wtrącę się i ja, bo kiedyś myślałem o takim rozwiązaniu. Wybaczcie, ale trochę kupy nie trzyma się Wasze rozumowanie. Najpierw napiszę dlaczego, a później opiszę moje rozumowanie.

1. Hashowanie pojedynczych znaków

1.a. Wspólna sól trzymana w kodzie.
Przypadek trywialny, bo sami sobie robimy szyfr słownikowy. Każdemu znakowi będzie w bazie odpowiadał jeden, taki sam ciąg. Mało tego - po znalezieniu soli dla jednego znaku znamy ją globalnie. Czas złamania - kilka minut na znak w zależności od długości soli. Ewentualnie można polecieć algorytmem statystycznym, jak to robili już w czasie II wojny światowej (IMG:style_emoticons/default/wink.gif)

1.b. Każdy znak solony inną solą.
W tym przypadku nie ma innej opcji jak trzymanie każdej soli w bazie. Przypadek jeszcze łatwiejszy niż poprzedni, bo niewiadomą jest już tylko szukany znak. Ile milisekund potrzebowałby w miarę szybki komputer na wygenerowanie n hashy (n - liczba dostępnych znaków)?

1.c. Sól generowana dynamicznie w kodzie dla każdego usera.
Rozwiązanie najlepsze z tych 3. Ale domyślam się, że po złamaniu pierwszych 1000 haseł bez większego problemu można znaleźć klucz, który określa w jaki sposób generowana jest ta sól. Bo oczywiście nie może to być losowanie, bo za każdym razem dla danego usera musi być wygenerowana ta sama sól.


2. Moje rozumowanie

2.a Generowanie n kombinacji
Jak dla mnie najbezpieczniejszym rozwiązaniem byłoby wygenerowanie n kombinacji dla danego hasła. Załóżmy dla uproszczenia, że hasło składa się z 5 znaków, a user musi wpisać co najmniej 3. Daje to 26 kombinacji (poprawcie mnie jeśli się mylę). Zapisujemy każdą z nich w bazie jako posolony hash. Przy każdym rekordzie zapisujemy które znaki są w nim zawarte i zapisujemy też sól. Przed logowaniem system wybiera z bazy opcję hasła (które znaki trzeba wpisać), a później hashuje hasło i porównuje z informacją w bazie, podobnie jak przy "normalnym" logowaniu.
Wady:
- przy dłuższych hasłach hashy będzie dosyć sporo
- przy algorytmach lepszych niż md5/sha1, czas generowania kombinacji może być dosyć długi (kilka/naście sekund?)
- trochę skomplikowana implementacja generowania kombinacji
Zalety:
- kombinacje generowane tylko podczas zakładania konta i zmiany hasła
- IMO całkiem bezpieczne rozwiązanie

Ten post edytował sowiq 17.07.2013, 08:29:24
Go to the top of the page
+Quote Post
pyro
post
Post #3





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Cytat(sowiq @ 17.07.2013, 09:23:57 ) *
Koledzy, wtrącę się i ja, bo kiedyś myślałem o takim rozwiązaniu. Wybaczcie, ale trochę kupy nie trzyma się Wasze rozumowanie. Najpierw napiszę dlaczego, a później opiszę moje rozumowanie.

1. Hashowanie pojedynczych znaków

1.a. Wspólna sól trzymana w kodzie.
Przypadek trywialny, bo sami robimy szyfr słownikowy. Każdemu znakowi będzie w bazie odpowiadał jeden, taki sam ciąg. Czas złamania - kilka minut na znak w zależności od długości soli. Ewentualnie można polecieć algorytmem statystycznym, jak to robili już w czasie II wojny światowej (IMG:style_emoticons/default/wink.gif)


To jest mój hash: e152c000118ddbc4b372c6e1d8289696662de535993269e715348f02f9b4f238

Powiem Ci w jak on jest zaszyfrowany: SHA256
Ba... powiem Ci nawet z której strony jest literka: na początku.
Mega Ba!... powiem Ci nawet ile znaków ma sól: 76
Jeżeli uda Ci się to złamać kiedykolwiek, to obiecuję Ci, że uczynię nas obu bogatymi. A jeżeli tak jak to mówisz dla Ciebie kwestia kilka minut to ohohho!

Czas start!
Go to the top of the page
+Quote Post
sowiq
post
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(pyro @ 17.07.2013, 09:31:43 ) *
Czas start!

Zwróć szczególną uwagę na to:
Cytat
sami sobie robimy szyfr słownikowy [...] można polecieć algorytmem statystycznym, jak to robili już w czasie II wojny światowej


[edit]
Mało tego. Przypadek może trochę z dupy, ale wyobraź sobie, że "atakujący" sam ma konto w serwisie, z którego pochodzi baza. Jego konto ma 20-znakowe hasło. I co? I 20 znaków z naszego słownika leci "w pizdu" (IMG:style_emoticons/default/wink.gif)

Ten post edytował sowiq 17.07.2013, 08:38:55
Go to the top of the page
+Quote Post

Posty w temacie
- NetBeans   Kilka znaków zamiast całego hasła - jak to działa?   13.07.2013, 11:18:13
- - b4rt3kk   Rzeczywiście, hasło na pewno nie jest przechowywan...   13.07.2013, 11:42:58
- - NetBeans   Tak, ale hashe dla każdego znaku z tablicy ASCII (...   13.07.2013, 11:56:41
|- - b4rt3kk   Cytat(NetBeans @ 13.07.2013, 12:56:41...   13.07.2013, 13:16:55
- - pyro   Hasło: przykładowo X znaków czyli X wpisów do tab...   13.07.2013, 12:09:41
- - adamantd   Ciekawe A może tak. 1. rejestrujesz się do system...   13.07.2013, 12:12:40
- - NetBeans   Faktycznie, jedynie soląc hashe znaków byłoby to w...   13.07.2013, 14:36:35
- - gitbejbe   tak jak piszecie powyżej. Systemy bankowe mają t...   14.07.2013, 10:45:00
- - pyro   Warto dodać, że sól powinna być wyłącznie zahardco...   16.07.2013, 10:15:14
|- - drPayton   Cytat(pyro @ 16.07.2013, 11:15:14 ) W...   16.07.2013, 20:55:04
|- - pyro   Cytat(drPayton @ 16.07.2013, 21:55:04...   17.07.2013, 07:12:25
|- - drPayton   Cytat(pyro @ 17.07.2013, 08:12:25 ) N...   17.07.2013, 09:19:18
- - Sephirus   Włączę się bo widzę pewną potencjalną lukę. Przy t...   17.07.2013, 07:38:40
- - pyro   Cześć. Mając trochę doświadczenie w temacie racze...   17.07.2013, 08:09:00
- - b4rt3kk   Jakby solą był np. login użytkownika (lub kilka zn...   17.07.2013, 08:14:24
- - Sephirus   @pyro Wyobraź sobie, że wyobrażam (zauważ, że mó...   17.07.2013, 08:16:25
- - pyro   @Sephirus, według Twojego toku myślenia jak włamyw...   17.07.2013, 08:22:14
- - sowiq   Koledzy, wtrącę się i ja, bo kiedyś myślałem o tak...   17.07.2013, 08:23:57
|- - pyro   Cytat(sowiq @ 17.07.2013, 09:23:57 ) ...   17.07.2013, 08:31:43
||- - sowiq   Cytat(pyro @ 17.07.2013, 09:31:43 ) C...   17.07.2013, 08:33:35
|- - gitbejbe   @sowiq tak przeczytałem, Twój post również. Stwie...   18.07.2013, 06:33:51
|- - sowiq   @gitbejbe, Na początku zaznaczę dla pewności, że p...   18.07.2013, 08:23:16
- - Sephirus   @pyro - nie mam zamiaru się z Tobą kłócić o to czy...   17.07.2013, 08:32:50
- - pyro   @Sephirus, chyba należy doprecyzować o jakim przyp...   17.07.2013, 08:41:13
- - Sephirus   @up Masz rację, że mając taki dostęp można zrobić...   17.07.2013, 08:48:55
- - sowiq   @pyro, rzeczy, o których pisałem, tyczą się kodowa...   17.07.2013, 08:50:37
- - buliq   Algorytm może tworzyć zasolony (każdy znak, inna s...   17.07.2013, 08:59:25
|- - sowiq   Ucinanie hasha to osłabianie szyfrowania - większa...   17.07.2013, 09:07:36
|- - buliq   Cytat(sowiq @ 17.07.2013, 10:07:36 ) ...   17.07.2013, 09:41:55
- - pyro   Cytat(sowiq @ 17.07.2013, 09:50:37 ) ...   17.07.2013, 09:43:09
|- - sowiq   Cytat(pyro @ 17.07.2013, 10:43:09 ) C...   17.07.2013, 09:52:25
||- - pyro   Przecież mówimy dokładnie o tym samym. Cytat(sow...   17.07.2013, 09:55:42
|- - drPayton   Cytat(pyro @ 17.07.2013, 10:43:09 ) (...   17.07.2013, 21:21:55
- - redeemer   Pozwólcie, że wtrącę moje trzy grosze na temat ...   17.07.2013, 09:56:42
|- - pyro   Cytat(redeemer @ 17.07.2013, 10:56:42...   17.07.2013, 10:00:15
- - redeemer   @pyro: chodziło mi o to, że ktoś wcześniej napisał...   17.07.2013, 10:15:09
- - pyro   Sorry miałem na myśli "przed i po", ale ...   17.07.2013, 10:18:27
- - gitbejbe   nie wiem nad czym się tutaj rozczulać. Dobrze prze...   17.07.2013, 11:46:04
- - sowiq   @gitbejbe, przeczytałeś wątek? Tu nie chodzi o tak...   17.07.2013, 12:23:38
- - NetBeans   Nie piszę ani systemu bankowego, ani nie mam zamia...   18.07.2013, 08:49:10
- - redeemer   @pyro: Podałem tylko przykład, że pobrana sól z ba...   18.07.2013, 09:58:43
- - gitbejbe   CytatBardzo chętnie dowiem się dlaczego nadal nie...   18.07.2013, 11:04:09
- - sowiq   Cofnij się o jeden post i zerknij w linka, którego...   18.07.2013, 11:40:34
- - Crozin   @NetBeans: Przede wszystkim nie powinieneś w ogóle...   18.07.2013, 12:23:31
|- - phpion   Cytat(Crozin @ 18.07.2013, 13:23:31 )...   18.07.2013, 12:28:43
- - Crozin   CytatW przypadku zainstalowania jakiegoś keylogger...   18.07.2013, 12:42:56
- - Damonsson   A co z czymś takim: Hasło: alamakota Hash hasła...   18.07.2013, 12:48:35
|- - redeemer   Cytat(Damonsson @ 18.07.2013, 13:48:3...   18.07.2013, 12:52:09
- - nospor   CytatSkrypt PHP, przekazujący litery z pozycjami, ...   18.07.2013, 12:51:43
- - freemp3   Cytat(Crozin @ 18.07.2013, 13:42:56 )...   18.07.2013, 12:56:32
- - phpion   @Damonsson: Pomysł moim zdaniem chybiony właśnie z...   18.07.2013, 12:57:33
- - Damonsson   Przy 0 znakach ok, szukałby w nieskończoność pewni...   18.07.2013, 13:00:54
|- - redeemer   Cytat(Damonsson @ 18.07.2013, 14:00:5...   18.07.2013, 13:15:16
- - nospor   @Damonsson ale zrozum, ze Twoim sposobem Ty napraw...   18.07.2013, 13:03:10
- - NetBeans   Również zastanawiałem się nad bezpieczeństwem taki...   18.07.2013, 13:10:48
- - Damonsson   No to mój pomysł można włożyć między książki fanta...   18.07.2013, 13:27:20
- - Crozin   CytatPrzy okazji, algorytmy dostarczane przez funk...   18.07.2013, 13:30:09
- - freemp3   CytatNie chce mi się wierzyć, że banki trzymają ha...   18.07.2013, 13:54:33
- - NetBeans   No dobra, przekonaliście mnie, ale co z tą solą, o...   18.07.2013, 14:03:01


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: 5.10.2025 - 18:16