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.

Przykład

Kiedy dochodzi do wycieku danych, często są one publikowane w Internecie, aby inni mogli je zobaczyć. Jeśli podałeś/aś nazwisko panieńskie swojej matki lub imię swojego pierwszego zwierzaka jako odpowiedź na pytanie zabezpieczające, informacje te mogą być teraz dostępne dla każdego, kto wie, jak korzystać z Google. Tego typu pytania bezpieczeństwa są z natury niebezpieczne, ponieważ nazwisko panieńskie matki, imię zwierzęcia lub pierwszy adres są zwykle bardzo łatwe do znalezienia.

Ale co jeśli wyciekła informacja o Twoim haśle? Czy używałeś/aś tego samego hasła gdziekolwiek indziej? Jeśli tak, to każdy może spróbować kombinacji Twojego e-maila i hasła również na innych stronach. Ujawnione informacje są często wykorzystywane do innych ataków, jeszcze zanim zostaną upublicznione.

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.

Note
Strzały próbujące przedostać się przez wiele perforowanych warstw obrony

Obrona w głąb to koncepcja stosowana w zabezpieczeniach informacji, w ramach której w całym systemie informatycznym umieszcza się wiele warstw kontroli bezpieczeństwa (obrony). Jej celem jest zapewnienie zastępowalności w przypadku awarii kontroli bezpieczeństwa lub wykorzystania luki w zabezpieczeniach, która może obejmować aspekty bezpieczeństwa personalnego, proceduralnego, technicznego i fizycznego w trakcie całego cyklu życia systemu.

W przypadku kont internetowych hasło jest zazwyczaj Twoją pierwszą warstwą ochrony. Poniżej przedstawimy trochę dokładniej, w jaki sposób hasła działają w teorii, zanim zapoznamy się z innymi warstwami, które możemy zastosować.

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.

Przykład

Czy kiedykolwiek przypadkowo wpisałeś niewłaściwą nazwę użytkownika i otrzymałeś komunikat o błędzie: "nieprawidłowa nazwa użytkownika" lub "nazwa użytkownika nie istnieje"? Jeśli strona posiada podobny komunikat, który wyodrębnia sytuacje, gdy tylko hasło jest nieprawidłowe, wtedy atakujący może wykorzystać tę informację, aby dowiedzieć się, że nazwa użytkownika jest prawidłowa. Pozwala to atakującym na przykład na wyliczenie ogromnych list e-maili i uzyskanie informacji o tym, kto posiada konto na stronie docelowej. Dlatego właśnie najlepszą praktyką dla stron internetowych jest posiadanie komunikatów o błędach logowania, które nie wyodrębniają elementów nieudanej próby logowania, takich jak "nazwa użytkownika LUB hasło jest nieprawidłowe".

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

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ł

Note

^ jest często używane do oznaczania "do potęgi", również wyrażone jako 266. Nie musisz znać się na matematyce, ale jeśli jesteś ciekawy/a, możesz wpisać równanie 26^6 w większości wyszukiwarek internetowych, aby uzyskać odpowiedź

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.

Przykład

Aby posunąć się jeszcze dalej, zobaczmy, jak duża jest przestrzeń klucza przy użyciu tylko zwykłych angielskich słów. Załóżmy, że losowo wybieramy 3 angielskie słowa ze słownika i tworzymy z nich hasło. Obliczenia byłyby następujące:

170,000^3 = 4 913 000 000 000 000

Takie hasło jak to byłoby o wiele łatwiejsze do zapamiętania, a jeśli chodzi tylko o brute forcing, o wiele trudniejsze do złamania. Istnieją również inne powody, dla których przestrzeń klucza może nie być tak duża, jak można by początkowo przypuszczać. Większość osób mówiących po angielsku używa tylko około 3000 słów i hasła wybrane w ten sposób odzwierciedlają to. Ponadto ludzie są naprawdę słabi w tworzeniu haseł losowych. To, co wydaje nam się przypadkową kombinacją słów, może być łatwo uzależnione od kontekstu, naszych myśli lub wcześniej wybranych słów. Jeśli używasz hasła składającego się wyłącznie ze słów, użyj generatora zamiast polegać na ludzkiej koncepcji losowości.

Dowiedz się więcej o tej metodzie.

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

Note

W naszym poprzednim przykładzie entropia 8-znakowego hasła wyniosłaby:

log2(26^8) = 37,6 bitów

Hasło 6-znakowe miałoby entropię wynoszącą:

log2(26^6) = 28.2 bitów

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.

Note

Skrót nie oznacza szyfrowania w dosłownym znaczeniu. Szyfrowanie (encryption) jest procesem dwukierunkowym, który można odwrócić, natomiast haszowanie jest procesem jednokierunkowym. Jeśli algorytm haszujący działa zgodnie z przeznaczeniem, wartość wyjściowa nie może zostać odwrócona.

Więcej na temat szyfrujących funkcji haszujących można przeczytać w Wikipedii

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?

Note

Wartość skrótu (zakodowana wersja oryginalnego hasła) może być wstępnie obliczona i przechowywana w ogromnej liście haseł. Pliki te nazywane są tęczowymi tablicami (rainbow tables) i można je łatwo znaleźć w Internecie. Na przykład można łatwo znaleźć plik z wszystkimi skrótami utworzonymi algorytmem MD5 dla dowolnego hasła o długości do 10 znaków, zawierającego dowolną mieszankę małych liter i cyfr (abcdefghijklmnopqrstuvwxyz0123456789).

Tęczowe tablice powstają poprzez przepuszczenie przez algorytmy haszujące słowników haseł (zarówno rzeczywistych haseł słownikowych, jak i list powszechnie używanych haseł) znalezionych w Internecie. Uzyskane w ten sposób zakodowane skróty są porównywane z odpowiadającymi im oryginalnymi hasłami jawnymi, a następnie wykorzystywane do włamywania się na konta użytkowników.

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ą.

Note

Brute forcing haseł może być naprawdę trudny. Na nowoczesnych komputerach można obliczyć tysiące haseł na sekundę. Karty graficzne w nowoczesnych komputerach są wyspecjalizowanym sprzętem i są naprawdę biegłe w obliczaniu skrótów. W niektórych przypadkach mogą one uzyskać miliardy skrótów na sekundę.

Jednak długie hasło składające się z 15 małych liter może posiadać 1 677 259 342 285 725 925 376 różnych wariantów, a obliczenie takiej ilości skrótów z prędkością 1 miliarda skrótów na sekundę zajmie nieco ponad 50 000 lat. Czas obliczeń spada do około 3,5 minuty dla hasła o długości 8 znaków.

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?