Jak stworzyć silne i bezpieczne hasło

Temat bezpieczeństwa haseł sprawą jest znaną i wielokrotnie poruszaną na różnego rodzaju blogach traktujących o bezpieczeństwie i poradnikach dla użytkowników systemów. W dobie społeczeństwa 2.0, każdy z nas (oprócz skrajnych przypadków) jest zmuszony do korzystania z systemów informatycznych wymagających uwierzytelnienia. Jednak termin „bezpieczne hasło” nie jest jednakowo interpretowany i pozostaje kwestią sporną. W tym artykule przestawię kilka wymogów, które takie hasło powinno spełniać, wspartych kilkoma przykładami dobrych i złych praktyk. Szczególnie w ujęciu zabezpieczenia aplikacji webowych.

Każdy z nas wie, że hasło jest kluczową sprawą jeżeli chodzi o bezpieczeństwo danych. Niektórym „było dane” sprawdzić to na własnej skórze, kiedy ktoś dostał się na ich skrzynkę mailową czy konto na serwisie społecznościowym. Jednak sprawa nabiera jeszcze bardziej na znaczeniu w przypadku kont osób posiadających w systemie większe przywileje niż zwykły użytkownik lub pracowników  Typowymi przykładami mogą być współredaktorzy bloga czy moderatorzy forum nie mówiąc już o administratorach. W przypadku włamania na ich konto straty mogą być poważne i mimo przywrócenia kopi zapasowej plików na serwerze i bazy danych może ono wprowadzić spore zamieszanie w serwisie i obniżyć jego ocenę w oczach użytkowników.

Bezpieczne hasło

Podejmując temat bezpieczeństwa hasła najlepiej postawić się w roli atakującego, nie ofiary. Na podstawie analizy najczęściej używanych przez hakerów metod łamania haseł omówię słabe punkty, które może posiadać hasło wyglądające względnie na bezpieczne.

Metoda brute force

Każdy kto zna język angielski na poziomie podstawowym powinien domyślić się na czym on polega. Użycie „brutalnej siły” polega w tym przypadku na wykorzystaniu mocy obliczeniowej komputera zamiast siły mięśni, ale skojarzenie jest jak najbardziej trafne. Zasada działania jest banalnie prosta – maszyna użyta do ataku próbuje wprowadzić wszystkie możliwe kombinacje dozwolonych znaków, licząc na to, że trafią w końcu na prawidłowe hasło.Ta metoda nie ma zbyt wielu zwolenników przede wszystkim przez jej zasobo-żerność, jednak jest jeszcze niekiedy wykorzystywana w audytach bezpieczeństwa dla pokazania mechanizmu jej działania. Opiera się on na statystyce i najlepiej będzie wesprzeć się tutaj przykładem, którym będzie rzecz wszystkich chyba znana – 4 cyfrowy pin do karty bankomatowej. Na każdej z czterech pozycji może wystąpić cyfra od 0 do 9, czyli 10 kombinacji. Mnożąc tę liczbę przez samą siebie cztero-krotnie otrzymamy: 104 = 10 000 możliwości. Krótko 10 do potęgi 4. Statystycznie na prawidłową kombinację cyfr natkniemy się po wypróbowaniu połowy z tych możliwości, czyli po 5 tyś. prób. Nie jest to oczywiście zbyt duża liczba dla współczesnych komputerów, jednak sprawa komplikuję się bardziej kiedy rozważymy użycie np. liter (bez rozróżnienia na duże i małe). Wtedy przy wykorzystaniu nawet tyko 4 znaków liczba możliwych kombinacji wzrośnie już do 456976 możliwości, natomiast wzbogacenie zbioru znaków o duże / małe litery, cyfry i dodatkowe znaki niealfanumeryczne znajdujące się na standardowej klawiaturze sprawi, że liczba ta urośnie aż od 81450625 (954). Wnioski nasuwają się same – skomplikowanie hasła popłaca.

Obrona

Jako użytkownicy aplikacji możemy zadbać przede wszystkim o odpowiedni poziom skomplikowania hasła poprzez użycie niestandardowych znaków, cyfr oraz małych i dużych liter. Najlepiej w tym celu użyć hasła (pseudo) losowego, które daje gwarancje, że nie będzie zbudowane według jakiegokolwiek schematu. Często zdarza się, że tworząc samodzielnie hasło ludzie umieszczają znaki alfanumeryczne oraz cyfry w tych samych miejscach. Na przykład ‚@’ w środku hasła lub cyfry na końcu. Takie postępowanie może pomóc w napisaniu kodu, który będzie efektywniej dążył do złamania hasła. Z pomocą przychodzą tutaj generatory haseł. Za ich pomocą otrzymamy hasło z losowym rozkładem znaków, który nie będzie pasował do żadnego ze schematów. Dla zmaksymalizowana bezpieczeństwa zaleca się stosowanie 14 znakowego hasła. Dobry generator haseł możecie znaleźć np. tutaj.

Administratorzy aplikacji i programiści mają o wiele większe pole do działania Najprostszą, najskuteczniejszą i najczęściej stosowaną metodą zabezpieczeń przeciwko atakowi brutal force, czasowe zablokowanie logowania po n nieudanych próbach. Zazwyczaj wystarcza pięcio-minutowa blokada po 3 – 5 nieudanych próbach.

Inną metodą może być dodanie dodatkowego pola do formularza logowania gdzie należy przepisać kod z obrazka (tzw. Captcha). Oczywiście istnieją algorytmy (oparte o sztuczną inteligencję), które rozpoznają kody na obrazkach, jednak ich użycie przy sprawdzaniu każdej z kombinacji wydłuży czas działania skryptu od liczby, która w praktyce będzie oznaczała nieskończoność.

Atak słownikowy

Jest to metoda bardzo podobna do brute force, jednak zamiast sprawdzać wszystkie możliwe kombinacje znaków oprogramowanie próbuje sprawdza hasła umieszczone w tzw. słowniku. Jest to plik zawierający listę możliwych haseł, co znacznie ogranicza zbiór sprawdzanych możliwości. Znajdują się w nim przede wszystkim słowa w danym języku (w zależności od języka jakim posługuje się ofiara), zwroty pochodzące ze slanu, występujące często w wypowiedziach np. na forach internetowych w artykułach, nazwy własne popularnych produktów i marek np. „cocacola”. Atakujący często także jest w posiadaniu listy najpopularniejszych haseł zebranych z jakiegoś serwisu internetowego. Taka lista jest najbardziej wartościowa, bo pozwala na rozpoczęcie sprawdzania do najczęściej używanych haseł i tym samym zwiększyć prawdopodobieństwo trafienia już w początkowej fazie testów.

Poniżej początek listy najpopularniejszych haseł, która jak pisze serwis niebezpiecznik.pl w tym artykule, wyciekła z jednego z polskich serwisów randkowych:

388 123456
197 qwerty
141 12345
98 polska
77 zaq12wsx
66 456
55 111111
54 dupa
46 aaaaaa
43 podrywacze
36 123123
36 legia
35 qwerty1
34 marcin
34 1234
33 qazwsx
33 mateusz
33 123qwe
32 maciek
32 michal
31 widzew
31 matrix
31 haslo

Niestety jak widać istnieje znaczna grupa użytkowników tego serwisu, która nie dba o bezpieczeństwo swojego hasła. W czołówce dominują hasła utworzone z sąsiadujących znaków typu: ‚qwe123’.

Obrona

Obrona jest analogiczna jak w przypadku metody brute force. Dodatkowo użycie losowego hasła praktycznie całkowicie zabezpiecza przed tego typu atakiem (no chyba, że generator wylosuje hasło ‚qwerty‚).

Phishing

Metoda polegająca na „zachęceniu” użytkownika do podana sobie atakującej swojego hasła. Sam sposób osiągnięcia celu nie jest tu kluczową sprawą i jest zazwyczaj dostosowany do okoliczności. Najczęściej polega na podszyciu się pod administratora systemu, technika lub inną zaufaną osobę i wyłudzenie od użytkownika hasła pod np. pod pretekstem awarii systemu lub konieczności ponownej autoryzacji. Do tego celu przestępcy często wykorzystują socjotechnikę, ponieważ atak tego typu zakłada, że w systemie komputerowym najsłabszym ogniwem jest człowiek.

Popularną praktyką stosowaną przez phisher-ów jest podstawianie stron imitujących serwis, z którego korzysta ofiara. Strona taka jest identyczną kopią serwisu banku czy aukcji internetowych. Niczego nie podejrzewający użytkownik logując się za pomocą wpisując je w spreparowanego formularza, przesyła w rzeczywistości swój login i hasło do atakującemu. Efekt przekierowania na podstawioną stronę można uzyskać wieloma sposobami. Ostatnimi czasy głośno było o dziurze w zabezpieczeniach routerów pochodzących z firmy Orange. Dzięki niej haker mógł zdalnie zmienić ustawienia serwerów DNS urządzenia, tak aby kierowały na podstawiony serwer nazw, który po podaniu prawidłowej domeny kierował zapytanie na IP serwera przestępcy.

Mniej wyrafinowaną metodą phishingu jest kontakt mailowy z ofiarą. Atakujący podając się za administratora lub pracownika serwisu prosi o podanie loginu i hasła np. pod pretekstem zawieszenia konta. Oczywiście kanał komunikacji nie gra roli. Może być nim również np. komunikator internetowy. Niestety w dalszym ciągu cześć użytkowników ślepo ufa w to, co pisze do nich rzekomy administrator.

Jednak słabym punktem systemu nie musi być sam użytkownik. Istnieje masa przypadków phishingu polegającego na wykorzystaniu obsługi klienta, któregoś z serwisów. Atakujący dzwoni na infolinię podając się za inną osobę i prosi np. o zresetowanie hasła do usługi. Często źle przeszkolony pracowniki nie przeprowadzając poprawnie procesu weryfikacji przyczyni się do przejęcia konta ofiary.

Obrona

W obronie przed tego typu technikami może pomóc nam tylko zdrowe podejście i logiczne myślenie. Każda prośba o podanie danych uwierzytelniających w inny sposób niż za pośrednictwem formularza logowania powinna wzbudzić u nas podejrzenia. Serwisy często podkreślają, że nigdy nie proszą użytkowników o padanie tego typu danych. Także korzystając z formularza logowania np do systemu zarządzania kontem bankowym zwróćmy uwagę na szczegóły, takie jak:

– tzw. „kłódeczka” czyli użycie szyfrowanego protokołu HTTPS

– poprawny adres witryny (często stosowane jest tzw. maskowanie url-i polegające na podaniu bardzo podobnego adresu, różniącego się zazwyczaj jednym znakiem)

– w przypadku klikania w link – adres na który kieruje, nie jego treść

– sprawdzajmy wiarygodność certyfikatu sieciowego

Słowem zakończenia

Artykuł nie wyczerpuje oczywiście pojęcia bezpieczeństwa hasła. Ma na celu pokazanie najczęściej stosowanych technik ataku i skutecznej przed nim obrony. Podsumowując można stwierdzić, że bezpieczne hasło powinno być utworzone w sposób przemyślany. Mieć odpowiednią długość, składać się z możliwie najbardziej zróżnicowanego zestawu znaków oraz nie zawierać słów z języka pisanego. Te założenia spełnia hasło wygenerowane losowo, jednak ze względu na trudność w zapamiętani tego typu haseł praktyka ta nie jest zbyt często stosowana prze użytkowników. Obecnie większość internautów korzysta co najmniej z kilkunastu serwisów i spamiętanie takiej ilości losowych haseł może niewykonalne. Z pomocą mogą przyjść nam systemy zarządzania hasłami, ale jest to temat na osobny artykuł.

 

 

 

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *