Skip to main content

III.
Ochrona Twojej prywatności

Co witryny wiedzą o Tobie?

To Ty kontrolujesz informacje, które podajesz odwiedzanym przez siebie witrynom. Nie należy podawać witrynom więcej informacji, niż jest im potrzebne do świadczenia żądanych usług. Jeśli nie oczekujesz, że strony dostarczą Ci cokolwiek na Twój adres domowy, prawdopodobnie nie powinieneś/aś podawać swojego adresu tylko dlatego, że strona Cię o to prosi. To samo dotyczy numeru telefonu, pełnego imienia i nazwiska, a nawet adresu e-mail. Im mniej informacji podasz witrynom, tym mniej stracisz, jeśli ktoś sprzeda te informacje lub uzyska dostęp do Twojego konta.

Hasła są zazwyczaj pierwszą przeszkodą stojącą na drodze ataku. W kolejnych rozdziałach przedstawimy inne elementy, które również mogą chronić Twoje konta przed dostępem hakerów. Taka obrona w głąb (defence in depth) jest powszechną praktyką w cyberbezpieczeństwie. Oznacza ona, że posiadasz wiele warstw chroniących zasoby, które chcesz zabezpieczyć. Jeśli jedna warstwa obrony zostanie złamana, na przykład Twoje hasło, nie oznacza to, że napastnicy będą mieli swobodny dostęp do Twoich informacji.

Ataki wyliczeniowe i nazwy użytkowników

Ataki wyliczeniowe (enumeration attacks) są wykorzystywane przez napastników do ustalenia prawidłowych nazw użytkowników jako pierwszy krok do zdobycia danych uwierzytelniających użytkownika. Do najczęstszych obszarów tego typu ataków należą funkcje logowania użytkownika i " zapomniane hasło". Na przykład strona może w niektórych przypadkach nieumyślnie dopuścić do wycieku informacji o swoich członkach poprzez wysyłanie różnych komunikatów przy próbach logowania w zależności od tego, czy znana jest nazwa użytkownika lub adres e-mail.

W większości przypadków ta informacja sama w sobie nie jest szkodliwa. Jednakże, jeżeli ktokolwiek może zweryfikować istnienie konta w serwisie randkowym lub towarzyskim, informacja ta może zostać wykorzystana przeciwko danej osobie.

Ataki wyliczeniowe mogą być również wykorzystywane do lepszego ukierunkowania ataków typu phishing na konkretne osoby, a także do ułatwienia ataków brute force poprzez zmniejszenie liczby możliwych celów. Wkrótce zajmiemy się definicjami phishingu i brute force.

Ataki enumeracyjne nie ograniczają się do form logowania. Mogą być również stosowane przy resetowaniu hasła lub zakładaniu konta. Tworzenie kont, na przykład, zazwyczaj chroni przed tworzeniem duplikatów kont i poinformuje użytkownika próbującego utworzyć duplikat, że konto z podanym adresem e-mail lub nazwą użytkownika już istnieje.

Kolejnym krokiem w uzyskaniu dostępu do danych logowania jest poznanie hasła. Opowiemy o tym w następnej części.

Hasła

Większość stron internetowych, z których korzystasz, identyfikuje Cię na podstawie kombinacji nazwy użytkownika i hasła. Ponieważ jako użytkownicy sieci musimy korzystać z dziesiątek, a nawet setek różnych usług, zazwyczaj staramy się tworzyć łatwe do zapamiętania hasła. Problem z łatwymi do zapamiętania hasłami polega na tym, że zazwyczaj są one również łatwe do odgadnięcia dla napastników. Biorąc pod uwagę, że najczęstszymi hasłami w 2020 roku były 123456, 123456789, qwerty i password, nie jest trudno włamać się na ogromną liczbę kont po prostu próbując tych haseł z losowymi adresami e-mail.

Najpopularniejsze hasła w 2020 roku

  • 123456

  • 123456789

  • qwerty

  • password

  • 1234567

  • 12345678

  • 12345

  • iloveyou

  • 111111

  • 123123

Najczęściej stosowane wymagania dotyczące tworzenia haseł również okazały się nie najlepsze na przestrzeni lat i nauczyły ludzi tworzyć złe hasła. Te złe zalecenia wymagały od ludzi tworzenia haseł, które są trudne do zapamiętania, ale łatwe do złamania przez komputery.

Komiks naprawdę dobrze podsumowuje bezpieczeństwo haseł.

Dwa klucze o różnej długości
Dwa klucze o różnej długości

Dobre hasło nie musi koniecznie zawierać skomplikowanych symboli, aby było bezpieczne. Ogólnie rzecz biorąc, im dłuższe jest hasło, tym jest ono bezpieczniejsze. Wymagania, które nakazują Ci zawrzeć symbole, małe i duże litery oraz cyfry w hasłach, zazwyczaj nie biorą pod uwagę tego, jak trudne do złamania są hasła w rzeczywistości. Wymagania te zwiększają przestrzeń klucza (keyspace, ilość możliwych kombinacji haseł o danej długości), choć to samo można by osiągnąć wymagając dłuższego hasła.

Spójrzmy na przykład:

Jeśli możliwy zestaw znaków, którego można użyć do hasła, to małe litery alfabetu angielskiego, czyli 26 znaków, a długość hasła to 6 losowych znaków, to przestrzeń klucza zostałaby obliczona jako:

266= 308,915,776 możliwych haseł

Natomiast jeśli hasło ma długość 8 losowych znaków, to przestrzeń klucza wynosiłaby:

268= 208,827,064,576 możliwych haseł

Jak widać, przestrzeń klucza jest dramatycznie większa, jeśli hasło jest tylko o 2 litery dłuższe. Weźmy inny przykład dodatkowych znaków i dodajmy wielkie litery do mieszanki, podwajając liczbę znaków możliwych do wykorzystania w haśle.

526= 19,770,609,664 możliwych haseł

Od razu widać, że przestrzeń klucza jest o wiele większa niż ta, z którą zaczynaliśmy. Jednak nie jest ona nawet zbliżona do przestrzeni klucza dla dłuższego hasła zawierającego tylko małe litery. Co powiesz na to, aby dodać kilka ogólnych symboli, tj. !, ", #, ¤, %, &, /, (, ) oraz =. Oznacza to, że liczba dostępnych znaków wynosi teraz 62.

626= 56,800,235,584 możliwych haseł

Po dodaniu 10 dodatkowych znaków w dozwolonym zestawie znaków prawie czterokrotnie zwiększyliśmy dostępną przestrzeń klucza. Jednocześnie sprawiliśmy, że hasło jest znacznie trudniejsze do zapamiętania. Przestrzeń klucza jest nadal o wiele mniejsza niż w przypadku przykładowego hasła składającego się z 8 znaków.

Czysto losowe hasło eliminuje również inne rodzaje ataków, takie jak ataki słownikowe. Ataki słownikowe (dictionary attacks) wykorzystują fakt, że użytkownicy próbują tworzyć łatwe do zapamiętania hasła, używając słownikowych słów, nazw lub ich odmian. Drugie wydanie 20-tomowego Oxford English Dictionary zawiera hasła dla 171 476 słów, więc jeśli stosujesz hasło zawierające tylko jedno słowo, możesz myśleć o tym, że używasz przestrzeni klucza o wielkości 170 000. Często słowa te nie są używane w niezmienionej formie, ale są modyfikowane w taki sposób, aby zachować możliwość ich zapamiętania.

Powszechnym sposobem, w jaki ludzie próbują ukryć słowa ze słownika, jest użycie substytutów lub dodanie liczby do słowa w celu utworzenia hasła. Niestety, te modyfikacje są na ogół dobrze rozumiane i komputerowi łatwo jest wypróbować wszystkie spodziewane warianty. Proste zamiany, takie jak zastąpienie litery "o" cyfrą "0" tylko utrudniają zapamiętanie hasła, a jednocześnie ledwie zmuszają komputer do wykonania większej pracy. Te proste zamiany nie powodują znacznego powiększenia przestrzeni klucza. Podobnie jest z dodaniem liczby lub bieżącego roku na początku lub końcu słowa. Oprogramowanie do łamania haseł i ludzie je tworzący znają wszystkie te sztuczki i wzięli je pod uwagę.

Entropia

Siła hasła zazwyczaj nie zależy tylko od ilości możliwych kluczy. "Entropia" to termin, który jest również używany w cyberbezpieczeństwie - oznacza sposób pomiaru zakładanej trudności złamania hasła w świecie rzeczywistym. Entropia jest obliczana za pomocą funkcji matematycznej "log2" z przestrzeni klucza (nie martw się o matematykę, nie musisz tego robić - ale jeśli naprawdę chcesz, możesz wpisać wzór w większości wyszukiwarek, aby uzyskać wynik. Na przykład spróbuj "log2(26^8)” w www.google.com).

Co więc entropia oznacza w praktyce? Używając wyniku obliczeń entropii, siłę hasła można zmierzyć za pomocą tego wykresu:

< 28 bitów = bardzo słabe; może powstrzymać członków rodziny

28-35 bitów = słabe; powinno powstrzymać większość ludzi, często wystarczające dla haseł logowania do komputera stacjonarnego

36-59 bitów = rozsądne; dość bezpieczne hasła dla haseł sieciowych i firmowych

60-127 bitów = silne; może być dobre do ochrony informacji finansowych

128+ bitów = bardzo silne; często przekraczające możliwości

W powyższym przykładzie entropia 8 losowych znaków (37 bitów) ledwo mieści się w rozsądnej kategorii. Hasło składające się z 15 znaków (70 bitów) byłoby silne, ale wciąż nie należałoby do kategorii bardzo silnych. Wykładnicza natura tych obliczeń oznacza, że wydłużenie hasła może mieć ogromny wpływ na trudność jego złamania.

Entropia, choć użyteczna, nie jest wskaźnikiem pozwalającym wszystko przewidzieć. Hasło składające się z zaledwie 8 znaków nadal może być uważane za mało bezpieczne - dlaczego tak się dzieje, dowiesz się w poniższej sekcji.

W jaki sposób hasła są łamane

Aby zrozumieć, w jaki sposób hasła są łamane, musimy najpierw dowiedzieć się, w jaki sposób są one chronione.

Hasła są zazwyczaj przechowywane w bazie danych, "zaszyfrowane" za pomocą czegoś, co nazywa się jednokierunkowym algorytmem haszującym. Algorytm haszujący (hash algorithm) to szyfr używany do przekształcania hasła w postaci tekstu jawnego na tekst zakodowany. Działa on tylko w jednym kierunku. Tekst zaszyfrowany za pomocą bezpiecznego algorytmu haszującego nie może zostać odtworzony, nawet jeśli algorytm ten jest znany. Wynik przetwarzania Twojego hasła przez algorytm haszujący jest znany jako skrót (hash). Skrót (hash) jest ciągiem znaków składającym się z liter i cyfr, reprezentującym zakodowaną wersję oryginalnego tekstu wejściowego.

Przyjrzyjmy się przykładowi dobrze znanego, ale obecnie uważanego za mało bezpieczny, algorytmu haszującego: MD5.

Przy użyciu MD5, jeśli zaszyfrujesz tekst "hasło" otrzymasz zakodowany wyjściowy skrót "5f4dcc3b5aa765d61d8327deb882cf99".

Niewielka zmiana w oryginalnym tekście spowoduje powstanie zupełnie innej wartości skrótu. Jest to kolejna cenna funkcja skrótu. Nie można oszacować, jaki będzie skrót na podstawie danych wejściowych.

Na przykład skrót MD5 dla “passwore” to "a826176c6495c5116189db91770e20ce", co nie przypomina skrótu dla "password".

Kiedy użytkownik się loguje, jego hasło tekstowe zostaje zhaszowane, a uzyskany skrót jest porównywany z wartością skrótu (zakodowaną wersją hasła użytkownika) przechowywaną w bazie danych. Jeśli się zgadzają, użytkownik może się zalogować.

Przy całej tej ochronie: hasła tekstowe zakodowane w nieprzewidywalnym kodzie, poprzez nieodwracalny algorytm - w jaki sposób hasła mogą zostać zhakowane? Co sprawia, że starsze algorytmy haszujące, takie jak MD5, są podatne na ataki?

Solniczka
Solniczka

Solone i haszowane

Czy to oznacza, że algorytm haszujący ​jest przestarzały dla większości haseł? Nie! Dobrą wiadomością jest to, że programiści mają kilka sprytnych technik, których mogą użyć, aby utrudnić znalezienie skrótu dla danego hasła. Funkcja haszująca jest często stosowana wiele razy, aby zwiększyć czas potrzebny na sprawdzenie hasła, a tym samym opóźnić ataki brute force.

Innym sposobem, w jaki programiści chronią hasła swoich użytkowników, jest użycie techniki znanej jako "solenie” ("salting"). W tym przypadku specjalna wartość, zwana "solą” (“salt”) jest dodawana do czystego tekstu po wprowadzeniu hasła przez użytkownika, ale przed zastosowaniem haszowania, aby zapobiec użyciu wstępnie obliczonej listy skrótów (tablic tęczowych). Po zastosowaniu,wartość soli sprawia, że plik tabeli tęczy staje się bezużyteczny i jest to naprawdę prosty sposób na uczynienie tego typu ataków niewykonalnymi.

Na przykład używając algorytmu MD5, jeśli dodamy randomizowaną sól "xhsr2d" do czystego tekstu "password" otrzymamy MD5("xhsr2dpassword"), które wynosi " ebf20a6c99eccaefa0bf4d88a5bd3456". Jest to zupełnie inny wynik niż oryginalny, wyprodukowany przez MD5 skrót "hasła" znaleziony powyżej, który każdy haker może znaleźć w tęczowej tablicy w Internecie. Poprzez posolenie hasła, nawet gdybyśmy mieli tęczową tablicę ze skrótami dla każdego możliwego hasła z małymi literami i maksymalną długością 10, nie moglibyśmy znaleźć dopasowania dla skrótu i tym samym udaremnilibyśmy użycie wstępnie obliczonych skrótów.

To, co solenie oznacza w praktyce, to fakt, że napastnicy muszą atakować metodą brute force każde hasło, aby skutecznie włamać się do ich zakodowanych skrótów w bazie danych.

Brute forcing haseł oznacza wykorzystanie mocy komputerów do programowego wypróbowania różnych skrótów, aż do znalezienia hasła z pasującą wartością skrótu Funkcje haszowania opierają się na stopniu trudności stworzenia dwóch różnych wiadomości, które dadzą taką samą wartość skrótu. Nazywa się to kolizją. Jeśli funkcja haszująca może zostać zmuszona do generowania tych samych wartości dla różnych danych wejściowych, jest uważana za uszkodzoną.

Ty, jako użytkownik usługi online, zazwyczaj nie możesz mieć pewności, że twórcy oprogramowania zastosowali wszystkie możliwe środki zapobiegawcze. Oznacza to, że należy założyć, iż tablice tęczowe mogą zostać użyte przeciwko Twoim hasłom. W praktyce oznacza to, że warto wybierać dłuższe hasła, ponieważ dzięki nim stosowanie większości tęczowych tablic staje się niepraktyczne. Tylko pomyśl o przykładzie powyżej - dodając 7 znaków do swojego hasła, możesz sprawić, że życie hakera będzie o wiele trudniejsze!

Next section
IV. Jak zabezpieczyć swoje hasła?