Zarządzanie tożsamością i dostępem użytkownika, czyli o co chodzi z IDP?
Czym jest tożsamość użytkownika? Z czego wynika potrzeba zarządzania dostępem w firmie? Jak działa tzw. IDP? Odpowiedź na te pytania znajdziesz w artykule.
Dzisiaj chcielibyśmy Wam przedstawić trochę merytorycznej wiedzy odnośnie tego czym jest uwierzytelnienie, czym drugi składnik i jakie mamy możliwości co do potwierdzenia tożsamości użytkownika. Na końcu opowiemy Wam na czym polega kradzież sesji. Jeśli jesteście zainteresowani, to zapraszamy do lektury!
Zastanówmy się na początku jak duże firmy zarządzają tożsamością użytkowników oraz czym ona właściwie jest. Zarządzanie tożsamością użytkowników jest bardzo ważnym elementem bezpieczeństwa całej firmy. Przy dużej skali, gdzie mamy tysiące lub setki tysięcy kont użytkowników używamy najczęściej specjalistycznego oprogramowania np. Windows Server AD lub po prostu mamy dedykowany komponent w naszej aplikacji przeprowadzający proces uwierzytelnienia.
Ale czym tak właściwie jest tożsamość użytkownika? Jest to zbiór pewnych cech o danym obiekcie. Obiektami w tym przypadku mogą być zarówno pracujący ludzie jak i urządzenia, których firma używa. Najczęściej pojęcie tożsamości używane jest w kontekście ludzi, a cechy to po prostu cechy danego człowieka jak jego imię, nazwisko, wiek czy rodzaj wykonywanej pracy. Cechy te można także rozróżniać na zmienne lub niezmienne np. kolor oczu, czy odcisk palca są niezmienne, ale nazwisko czy praca już jak najbardziej. Podsumowując, warto jednak wiedzieć, że zarówno pojęcie tożsamości jak i obiektu mogą zostać uogólnione i nie odnosić się do człowieka.
Jeśli udało nam się już wyjaśnić czym jest tożsamość oraz obiekt, to jest do dobry moment by pójść krok dalej i powiedzieć sobie czym jest uwierzytelnienie.
Uwierzytelnienie to proces polegający na potwierdzeniu/walidacji tożsamości danego obiektu przed umożliwieniem mu dostępu do zasobów. Zasobami w tym przypadku mogą być części infrastruktury sieciowej, pliki czy choćby drukarka. Autoryzacja natomiast to proces udostępnienia danego zasobu użytkownikowi, który się uwierzytelnił w naszej aplikacji czy systemie.
W najbardziej powszechnym scenariuszu użytkownik używa pewnej wiedzy, cechy lub rzeczy, aby udowodnić swoją tożsamość w procesie uwierzytelnienia. Podstawowe czynniki którymi użytkownicy mogą się uwierzytelniać dzielą się na trzy kategorie:
Dodatkowe czynniki uwierzytelnienia mogą opierać się np. o zachowanie, prędkość pisania na klawiaturze, lokalizację. Należy zwrócić uwagę, że większość o ile nie wszystkie z wymienionych kategorii i czynników uwierzytelnienia mogą zostać podrobione. Ktoś może wyłudzić od użytkownika hasło poprzez choćby atak phishingowy, smartcard może zostać skradziony, głos podrobiony z użyciem sztucznej inteligencji. Można nawet wykorzystać algorytmy sztucznej inteligencji w celu generowania głosu mającego za zadanie przeprowadzić atak phishingowy na pracownika przez telefon.
Aby zwiększyć bezpieczeństwo systemów komputerowych lub aplikacji często stosuje się uwierzytelnienie dwuskładnikowe lub wieloskładnikowe. Ważne jednak, aby każdy składnik był dobrany z innej przedstawionej wyżej kategorii np.:
Oczywiście każdy z wymienionych tutaj sposobów dwuskładnikowego uwierzytelnienia może zostać w jakiś sposób zaatakowany, choć jedne sposoby uznaje się za znacznie bezpieczniejsze od innych.
Scenariusz przedstawiony jako pierwszy tj. hasło plus drugi składnik z pomocą SMS jest mimo wszystko nie do końca bezpieczny. Znane są ataki typu SIM Swap, których działanie wygląda następująco:
W temacie SIM Swap polecamy artykuł niebezpiecznika.
Rysunek 1 – Atak typu SIM swap, źródło: DHS CSRB
Odpowiedź na to pytanie nie jest jednoznaczna, ponieważ zależy to od konkretnych potrzeb danej organizacji. Można natomiast powiedzieć, które ze składników są najmniej bezpieczne. Niektóre ze składników np. hasła, TOTP, kody SMS są podatne na ataki phishingowe. Najprościej mówić jeśli użytkownik wejdzie na fałszywą stronę, która przypomina jego bank, tam się zaloguje i poda drugi składnik otrzymany z aplikacji uwierzytelniającej lub SMS’a, to haker otrzymał wszystko co potrzebuje do przejęcia konta.
Dla klasycznego użytkownika Internetu najlepszą formą drugiego składnika jest klucz U2F, który chroni przed atakami phishingowymi. Jeśli dana aplikacja nie wspiera U2F (np. większość banków z wyjątkiem ING (brawa dla nich) na ten moment (sierpień 2023) w Polsce nie wspiera tej formy drugiego składnika) warto korzystać z aplikacji uwierzytelniających jak Google Authenticator. Takie aplikacje korzystają z nowoczesnych, bezpiecznych protokołów i zapewniają dobry poziom bezpieczeństwa dla użytkownika. Mniej bezpieczną formą 2FA (ang. 2 Factor authentication) jest natomiast SMS/Połączenie telefoniczne. Ze względu na to, że protokoły działające w telefonii są stare i podatne na pewne ataki.
Dobre praktyki dotyczące drugiego składnika opisujemy w naszym artykule dotyczącym bezpieczeństwa w Internecie.
Ostatnim z aspektów uwierzytelnienia, który warto poruszyć jest kradzież sesji. O ile duża część ataków np. ataki na hasła (bruteforce, phishing) czy na drugi składnik w postaci SMS (SIM swap) skupia się na tym by samemu uzyskać możliwość uwierzytelnia po stronie hakera, o tyle istnieją ataki wykorzystujące sam mechanizm ciasteczek czy tokenów. Większość aplikacji Internetowych korzysta z mechanizmu sesji tj. po zalogowaniu się użytkownik otrzymuje pewien token (przechowywany w pamięci przeglądarki), a następnie z każdym kolejnym wysłanym komunikatem do serwera dołącza otrzymany token. Dzieje się tak ze względu na to, że protokołów sieciowych, w tym protokół HTTP używany w aplikacjach internetowych, zaprojektowano jako bezstanowe. Oznacza to, że każde żądanie klienta skierowane do serwera traktuje się jako niezależna, samodzielna interakcja. Serwer z natury nie przechowuje żadnej wiedzy o poprzednich żądaniach ani kontekście klienta, więc potrzebuje tokenów lub ciasteczek, aby rozróżniać użytkowników.
Rysunek 2 – działanie sesji, źródło:thesslstore.com
Jeśli atakujący jest w stanie pozyskać dane dotyczące sesji z przeglądarki np. poprzez atak MITM (ang. man-in-the-middle), instalację malware, wykonane makro czy nawet podpięcie zatrutego urządzenia do fizycznego komputera, to omija proces uwierzytelnienia. W takim przypadku uwierzytelnienie dwuskładnikowe jest bezskuteczne. Nie oznacza to jednak, że należy z niego rezygnować. Ataki przejęcia sesji wymagają dużo większych umiejętności technicznych i występują dużo rzadziej niż opisane wcześniej metody oszustwa.
Rysunek 3 – Atak session hijacking, źródło cyberhoot.com
Aby przedstawić analogię, wyobraź sobie, że kupiłeś bilet na festiwal. Kiedy przybywasz do punktu rejestracji, możesz być poproszony o okazanie dowodu tożsamości oraz dowodu zapłacenia za bilet. Przechodzisz więc przez proces uwierzytelniania. Po zarejestrowaniu twojej obecności, osoba obsługująca wręcza ci identyfikator, który zakładasz na rękę na czas trwania koncertów. Od tego momentu każdy pracownik ochrony może rzucić okiem na twój identyfikator i wiedzieć, że zostałeś już uwierzytelniony i masz dostęp do poszczególnych scen. Jeśli jednak ktoś ukradnie twój identyfikator, ma teraz taki sam dostęp do festiwalu jak Ty.
Pliki cookie działają w ten sam sposób. Są to po prostu cyfrowe wersje identyfikatorów.
Mamy nadzieję, że udało nam się przybliżyć pojęcia związane z uwierzytelnianiem i jak powinno się używać drugiego składnika. Pamiętajmy o tym, że klucze U2F są najbezpieczniejszą formą realizacji uwierzytelnienia dwuskładnikowego. Jeśli chcecie bardziej zadbać o swoje bezpieczeństwo zachęcamy do kontaktu z ekspertami lub dalszej lektury na naszym blogu. Szczególnie polecamy serię dotyczącą porad bezpieczeństwa. Do usłyszenia za tydzień!
Źródła:
Zarządzanie tożsamością i dostępem użytkownika, czyli o co chodzi z IDP?
Czym jest tożsamość użytkownika? Z czego wynika potrzeba zarządzania dostępem w firmie? Jak działa tzw. IDP? Odpowiedź na te pytania znajdziesz w artykule.
Bezpieczeństwo
Hej, hej... Programisto, to kolejny artykuł dla Ciebie! Druga część artykułu na temat wzorców projektowych. Poznaj Adapter oraz Memento.
Programowanie
Programisto, to artykuł dla Ciebie! Łap garść przydatnych informacji na temat wzorców projektowych.
Programowanie