Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Komputery - oprogramowanie i sprzęt (https://forum.cdrinfo.pl/f113/)
-   -   [Pytanie] Bezpieczeństwo haseł (https://forum.cdrinfo.pl/f113/pytanie-bezpieczenstwo-hasel-94885/)

andy 04.08.2015 21:23

[Pytanie] Bezpieczeństwo haseł
 
Temat zawiły i skomplikowany jak polska Polityka ale kiedyś go trzeba było zacząć! ;)


Bezpieczne hasło, to takie które posiada bardzo dużą entropię. Ta entropia, to nic innego jak:
Cytat:

Entropia – średnia ilość informacji, przypadająca na pojedynczą wiadomość ze źródła informacji. Innymi słowy jest to średnia ważona ilości informacji niesionej przez pojedynczą wiadomość, gdzie wagami są prawdopodobieństwa nadania poszczególnych wiadomości.
Mając hasło: abcdefgh
entropia dla znaku wyniesie log2(26)= 4.7 bit. Znaków jest 8 (różne) więc 8*4.7= 37,6 bitów
Entropia dla hasła abcdefgh 37,6 bitów

Jeżeli dodamy do tego cyfry i każda będzie unikalna, to entropia znaku wzrośnie do 5,17 dając entropię 41,36 bitów dla hasła jeżeli będzie w nim 7 małych znaków alfabetu oraz jedna cyfra. Znaki nie mogą się powtórzyć.

W przypadku gdy mamy powtórzenia to musimy obliczyć jeszcze prawdopodobieństwo wystąpienia danego znaku np.

abcdaefg

P(a)= 2/8 = 0.25
P(b)= 1/8 = 0.125
P(c)= 1/8 = 0.125
P(d)= 1/8 = 0.125
P(e)= 1/8 = 0.125
P(f)= 1/8 = 0.125
P(g)= 1/8 = 0.125

Im większe prawdopodobieństwo tym gorzej dla hasła bo maleje entropia.

Teraz aby obliczyć entropię hasła gdzie znaki się*powtarzają podstawiamy pod wzór:
Kod:

-[(P(a)*log2(P(a))) + (P(b)*log2(P(b))) + (P(c)*log2(P(c))) + (P(d)*log2(P(d))) + (P(e)*log2(P(f))) + (P(g)*log2(P(g)))]
i wyliczamy entropię*dla znaku i potem mnożymy przez długość frazy co da nam entropię hasła. W tym wypadku będzie, to: -[-0.5 - 0.36 - 0.36 - 0.36 - 0.36 - 0.36 - 0.36]= 2.7 bitów * 8 = 21 bitów.

Jak widać hasło posiadające dwa razy dany znak ma mniejszą entropię. Mniejsza entropia = słabsze hasło.

Gdybym chciał wygenerować*sobie np. hasło składające się z 64 znaków to najlepiej wygenerować takie, które kolejność znaków będą miały pseudolosowy oraz każdego typu znaku będzie w haśle 8 sztuk i nie będą się*powtarzały?

Z drugiej strony atakujący wiedząc, że w haśle nie powtarzają*się*znaki będzie mógł obniżyć ilość*możliwych kombinacji bo dany znak w jednym sprawdzeniu może wystąpić tylko raz.

Więc jak bardzo spadnie ilość możliwych kombinacji przy haśle 8 znakowym składającym się z 94 kombinacji?
Ilość kombinacji dla takiego hasła to: 94^8= 6 095 689 385 410 816.

Jarson 05.08.2015 00:34

A zauważyłeś, że entropia zmniejsza się wraz z kolejnymi "wymaganiami", jakie stawiasz swojemu hasłu (żadna litera nie może wystąpić dwukrotnie, musi być co najmniej jedna cyfra itp)? Oczywiście zmniejsza się tylko hipotetycznie - osoba/program łamiący hasło musiałby wiedzieć, że zastosowałeś te reguły przy tworzeniu hasła, żeby wykluczyć z góry część kombinacji.

Można by powiedzieć - ale przecież cała masa serwisów wręcz wymaga, aby w haśle pojawiły się co najmniej jedna wielka litera, co najmniej jedna cyfra itd. A więc ich wystąpienie musi zwiększać bezpieczeństwo. Nic bardziej mylnego!

W tej całej masie serwisów wiedzą po prostu, że zdecydowana większość osób wybierających hasła gdyby tylko mogła, z lenistwa pominęłaby znaki specjalne, cyfry itd. Łamiący hasło mógłby więc z dużą dozą prawdopodobieństwa wykluczyć te znaki, zawężając tym samym liczbę kombinacji.

W rzeczywistości najlepiej jest, jeśli w haśle może pojawić się dowolny znak, ale wcale nie musi. Wtedy mamy sytuację idealną - liczba możliwych kombinacji równa się ilość dostępnych znaków do potęgi długości hasła. Innymi słowy - jeśli hasło może składać się z dowolnych znaków, to dla metody brute force ciągi znaków "hhhhhhhh" oraz "u6DR),*a" będą tak samo trudne do złamania - każde składa się z takiej samej ilości znaków z tej samej puli.

Berion 05.08.2015 10:48

Dlaczego 26?

andy 05.08.2015 11:09

@Berion ponieważ mały alfabet ma 26 znaków.
@Jarson coś w tym jest. Czyli co najlepiej generować hasła w których jest przynajmniej jeden znak z danego alfabetu?

No i jak wyliczyć ile mnie operacji będzie trzeba wykonać?

Jarson 05.08.2015 11:27

:taktak:

To trochę jak w totolotku. Jeśli stworzymy sobie losowy generator sześciu liczb, to nie powinniśmy wprowadzać żadnych reguł poza "wylosuj 6 liczb z puli 49". Np. dodanie reguły "pomiń, jeśli zostanie wylosowany, ciąg 1, 2, 3, 4, 5, 6", bo przewidujemy, że taki nigdy nie wypadnie, nie ma sensu. Może wypaść tak samo prawdopodobnie, jak ciąg z wczorajszego losowania.

andy 05.08.2015 12:09

Niby tak ale entropia takiego hasła będzie mniejsza niż z przynajmniej jednym elementem danego zbioru. No i jak obliczyć o inne mniej będzie kombinacji?

Berion 05.08.2015 12:27

A mnie się wydaje, że więcej. ;)

Jarson 05.08.2015 12:42

Więcej, jak się trochę ogarnę z innymi sprawami, to napiszę ;)

Reetou 05.08.2015 12:52

Ja tam sie na entropii nie wyznaje, ale nie zgadza mi sie to matematycznie. Mowisz 26 liter, zalozmy 8 literowe haslo:
- wariacja bez potorzen - 0,63E+11
- wariacja z powtorzeniami - 2,09E+11, czyli wieksza, a entropia wyszla ci mniejsza. I co ty na to?

andy 05.08.2015 15:40

@Reetou wszystko się zgadza.

Jeżeli atakujący będzie pewny, że w haśle nie ma powtórzeń, to będzie miał mniej kombinacji do sprawdzenia.

Jeżeli takiej informacji nie ma, to musi sprawdzić wszystkie możliwe kombinacje.

W przypadku obliczania siły danego hasła będzie ona mniejsza im więcej będzie powtórzonych znaków.

Dla hasła aaaaaaab szybciej też znajdzie odpowiedź niż dla abcdefgh


Z powtórzeniami korzystałeś ze wzoru n! / k!(n-k)! gdzie n to ilość możliwych elementów na znak a k długość hasła?

andy 05.08.2015 22:23

Wracając do mojego pytania:

Hasło o długości 8 znaków z alfabetu 94 znaków:
Bez powtórzeń: 111 315 063 717
Z powtórzeniami: 6 095 689 385 410 816
?

nimal 06.08.2015 00:30

to nie jest pytanie matematyczne, tylko logiczne
odpowiedz wynika z samej definicji entropii i zostala zobrazowana przez Jarsona
wprowadzajac regule zmniejszasz losowosc
czyli utrudniajac haslo zmniejszasz ilosc dostepnych komibnacji
sam sobie odpowiedziales ;)


Wszystkie czasy w strefie CET. Aktualna godzina: 18:54.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.