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
|
|
|
Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź |
Cytat Równie dobrze można trzymać hashe poszczególnych liter hasła w osobnych rekordach i wówczas odpada nam problem jawnego przetrzymywania haseł w bazie. A ile takich haszy uzyskasz z 26 liter alfabetu? 26. A jaki szyfr jest najprostszy do złamania? Podstawieniowy (każdej literze alfabetu odpowiada inny znak, w tym przypadku byłby to hasz, a nie pojedyńczy znak, czyli w sumie jedynie 26 RÓŻNYCH haszy).A sposobów na złamanie takich szyfrów są dziesiątki (analiza częstotliwościowa na przykład). Ale można byłoby tworzyć hasz np. z litery i cyfry określającej jej pozycję w haśle. Wtedy dla jednego 16-znakowego hasła mamy już 26 liter * 16 możliwych pozycji jej występowania w haśle (czyli 416 haszy). Przy podawaniu hasła trzeba byłoby sprawdzać np, dla literki a na 6-tej pozycji hasz dla ciągu 'a6', w szóstym rekordzie tabeli zawierającej hasła. Ale to niewiele wzmocniłoby ten algorytm. Albo dla litery i dwóch cyfr, określających jej pozycję od początku i końca hasła (czyli np. 6a10 - litra 'a' na 6 pozycji, czyli 10-ta od końca). No to już nam daje 26*16*16 = 6656 róznych haszy w bazie, co już raczej utworzyłoby w niej artystyczny bałagan. Do tego jeszcze np. mozna dodac część całkowitą powstałą z dzielenia tych pozycji ('6a100' - litera 'a' na 6 pozycji, 10 od końca, oraz 0 jako część całkowita z dzielenia 6/10), co daje nam już 6-znakowy ciąg. To czyni zabezpieczenie jeszcze silniejszym. Oczywiście siłę całego zabezpieczenia zwiększą użycie dużych/małych liter oraz cyfr. Wtedy takie rozwiązanie zaczyna mieć sens. Albo tak mi się tylko wydaje. (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%)
|
Albo tak mi się tylko wydaje. (IMG:style_emoticons/default/smile.gif) Stworzenie bazy zawierającej nawet milion hashy to kwestia kilku minut. Nie sposób posłużyć się Security through obscurity, czyli ukrywaniem sposobu powstania hasha. Chodzi o to, żeby sposób był bezpieczny nawet ujawniając kod źródłowy aplikacji! |
|
|
|
nexis Bezpieczeństwo haseł przy użyciu soli 3.09.2009, 15:36:42
thek Osobiście nigdy tak nie podchodziłem do sprawy bez... 3.09.2009, 16:16:21
sztosz Akurat dwukierunkowość szyfrowania to nie jest dob... 3.09.2009, 19:17:52
blooregard CytatAkurat dwukierunkowość szyfrowania to nie jes... 3.09.2009, 19:41:13 
phpion Cytat(blooregard @ 3.09.2009, 20:41:1... 3.09.2009, 20:43:13
sztosz Masz hasło x znaków, haszujesz każdy znak, hasz m... 3.09.2009, 20:48:40
nexis Póki co przyszło mi na myśl stosowanie bardzo złoż... 3.09.2009, 20:57:38
blooregard CytatChodzi o to, żeby sposób był bezpieczny nawet... 3.09.2009, 21:22:00 
nexis Cytat(blooregard @ 3.09.2009, 22:22:0... 3.09.2009, 21:26:31
blooregard CytatEfekt ma być taki, że po przejęciu kontroli n... 3.09.2009, 21:32:38 
nexis Cytat(blooregard @ 3.09.2009, 22:32:3... 3.09.2009, 21:42:52
blooregard CytatWidzi ktoś wady takiego rozwiązania?
No nie, ... 3.09.2009, 21:57:03
thek Zastanawiałem się Nexis nad algorytmem, który dawa... 4.09.2009, 09:34:43 
nexis Cytat(thek @ 4.09.2009, 10:34:43 ) Dl... 4.09.2009, 10:40:56
thek Może i tak, ale indywidualna sól dla każdego użytk... 4.09.2009, 12:22:43
nexis Wciąż nie widzę w czym zaprezentowana przez ciebie... 4.09.2009, 12:40:32
thek To przemyśl co da hasło abababab skoro dla każdej ... 4.09.2009, 13:21:41 
nexis Cytat(thek @ 4.09.2009, 14:21:41 ) Tw... 4.09.2009, 21:31:05
blooregard CytatBo jeśli dobrze zrozumiałem Twoje rozumowanie... 4.09.2009, 13:34:11
thek Po przeczytaniu posta odnosi się wrażenie, że nie ... 4.09.2009, 14:02:30
thek Ok... Pomińmy więc w dalszych rozważaniach sól sys... 4.09.2009, 22:07:25 
nexis Cytat(thek @ 4.09.2009, 23:07:25 ) st... 4.09.2009, 22:38:16
thek CytatPodstaw sobie dowolne hasło pod podany przeze... 5.09.2009, 00:05:41 
nexis Cytat(thek @ 5.09.2009, 01:05:41 ) Te... 5.09.2009, 05:51:09
thek Wczoraj w chwili przerwy przejrzałem nasze wypowie... 6.09.2009, 09:45:29 
nexis Cytat(thek @ 6.09.2009, 10:45:29 ) Wc... 7.09.2009, 23:14:48
thek Wersja skrócona:
Problem: Algorytm się minimalnie ... 8.09.2009, 21:59:11
nexis Ale po co miałbym kiedykolwiek zmieniać sól dla uż... 8.09.2009, 22:48:50
thek Chodzi mi o sytuacje gdy, przykładowo, zauważyłeś ... 9.09.2009, 09:23:47
nexis Algorytm opracowuje się raz i dobrze. Cała jego id... 9.09.2009, 09:26:42
thek Wiem, że algorytm powinien być napisany raz a dobr... 9.09.2009, 13:04:35 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 18:37 |