--- marp: true theme: default paginate: true size: 16:9 style: | section { font-size: 24px; } section h1 { color: #1a5276; } section h2 { color: #2980b9; } section table { font-size: 20px; } section small { font-size: 18px; } --- # Wykład 14 ## Autoryzacja i uwierzytelnianie **Systemy Zarządzania Treścią** Politechnika Poznańska --- # Część 1 ## Podstawy bezpieczeństwa --- ## Dlaczego bezpieczeństwo ma znaczenie? Bezpieczeństwo systemów informatycznych jest kluczowe z powodu: | Zagrożenie | Opis | |---|---| | **Luki bezpieczeństwa** | Podatności umożliwiające atak | | **Manipulacja danymi** | Nieautoryzowana zmiana danych | | **Piractwo i oszustwa** | Kradzież i nadużycia | | **Nieautoryzowany dostęp** | Dostęp do informacji bez uprawnień | ### Kluczowa obserwacja - Informacja jest **najważniejszym towarem** na czarnym rynku, - Praktycznie **wszystkie przypadki naruszeń bezpieczeństwa** w Internecie obejmują przestępstwa określone w obowiązującym prawie. --- ## Podstawowe właściwości bezpieczeństwa (CIA) Trzy fundamentalne właściwości bezpieczeństwa informacji: | Właściwość | Ang. | Znaczenie | |---|---|---| | **Poufność** | Confidentiality | Informacja dostępna tylko dla uprawnionych | | **Integralność** | Integrity | Informacja nie może być zmieniona bez autoryzacji | | **Dostępność** | Availability | Informacja dostępna dla uprawnionych, gdy potrzebna | > Triada **CIA** (Confidentiality, Integrity, Availability) to fundament każdego systemu bezpieczeństwa. Bezpieczeństwo w kontekście CMS (OWASP, dobre praktyki) omówione w **wykładzie 15**. --- ## Uwierzytelnianie vs autoryzacja Dwa pojęcia często mylone, ale **fundamentalnie różne**: ### Uwierzytelnianie (Authentication) > **Uwierzytelnianie** polega na **weryfikacji poświadczeń** (credentials) próby połączenia. Proces obejmuje przesłanie poświadczeń klienta do serwera (w formie jawnej lub szyfrowanej) przy użyciu protokołu uwierzytelniania. ### Autoryzacja (Authorization) > **Autoryzacja** to **sprawdzenie, czy próba połączenia jest dozwolona**. Autoryzacja następuje **po udanym uwierzytelnieniu**. ### Kolejność 1. Najpierw **uwierzytelnienie** — "kim jesteś?", 2. Potem **autoryzacja** — "co możesz robić?". > Autoryzacja to **proces nadawania praw** użytkownikowi (dostępu do zasobów). --- ## Uwierzytelnianie — typy ### 1. Uwierzytelnianie jednostronne (one-way) Tylko **klient** przedstawia poświadczenia serwerowi. ### 2. Uwierzytelnianie dwukierunkowe (bi-directional) Obie strony się uwierzytelniają: | Wariant | Opis | |---|---| | **Dwustopniowe** | Najpierw serwer uwierzytelnia klienta, potem klient serwer | | **Jednoetapowe** | Obie strony uwierzytelniają się jednocześnie | ### 3. Uwierzytelnianie przez zaufaną trzecią stronę - klient przesyła poświadczenia zaufanej stronie, - strona wystawia **oświadczenie** (statement), - oświadczenie służy do uwierzytelnienia w innych systemach. --- ## Metody uwierzytelniania | Metoda | Opis | |---|---| | **Klasyczna** | Login + hasło | | **Single Sign-On (SSO)** | Jedno logowanie do wielu systemów | | **One-Time Password (OTP)** | Hasło jednorazowe | | **Synchronizacja czasu** | Hasła zmienne w czasie | | **Challenge-Response** | Serwer rzuca wyzwanie, klient odpowiada | | **Tokeny bezpieczeństwa** | Fizyczne urządzenia generujące kody | | **Biometria** | Odcisk palca, skan tęczówki | > Nowoczesne systemy łączą metody — np. **dwuskładnikowe uwierzytelnianie** (2FA): "co wiesz" + "co masz". --- # Część 2 ## Kryptografia --- ## Szyfrowanie — podstawy ```mermaid flowchart LR A["Użytkownik A\n(tekst jawny)"] --> B["🔒 Szyfrowanie\n(Metoda + Klucz)"] B --> C["Kryptogram"] C --> D["🔓 Deszyfrowanie\n(Metoda + Klucz)"] D --> E["Użytkownik B\n(tekst jawny)"] ``` ### Proste szyfry | Typ | Opis | |---|---| | **Szyfr podstawieniowy** | Zastępowanie znaków innymi | | **Szyfr przestawieniowy** | Zmiana kolejności znaków | > Nowoczesna kryptografia opiera się na **silnych algorytmach** i **kluczach** — nie na tajności metody. --- ## Szyfrowanie symetryczne Do szyfrowania i deszyfrowania używa się **tego samego klucza** (lub pary kluczy). ### Problemy | Problem | Opis | |---|---| | **Tajność klucza** | Klucz musi pozostać tajny | | **Dystrybucja klucza** | Jak bezpiecznie przekazać klucz drugiej stronie | ### Algorytmy DES, 3DES, CAST, RC{2,4,5,7}, Blowfish, Rijndael, **AES**. > Szyfrowanie symetryczne jest **szybkie**, ale ma problem z bezpieczną wymianą klucza. --- ## Szyfrowanie asymetryczne Odbiorca posiada **parę kluczy**: klucz prywatny i klucz publiczny. ### Zasada - znajomość **klucza publicznego** nie wystarcza do złamania poufności szyfrogramu, - szyfruje się kluczem publicznym, deszyfruje kluczem prywatnym. ### Zalety | Zaleta | Opis | |---|---| | **Poufność** | Zapewnienie poufności bez wymiany tajnego klucza | | **Autentyczność** | Zapewnienie autentyczności (podpis cyfrowy) | ### Algorytmy **RSA**, **ElGamal**. > Asymetria rozwiązuje problem dystrybucji klucza — klucz publiczny może być jawny. --- # Część 3 ## Uwierzytelnianie mobilne i dwuskładnikowe --- ## Uwierzytelnianie mobilne — przykład Comarch MobileID Nowoczesne uwierzytelnianie mobilne (np. Comarch MobileID) wykorzystuje telefon jako **token bezpieczeństwa**. ### Komponenty | Komponent | Rola | |---|---| | **Aplikacja** | Aplikacja mobilna na telefonie | | **Serwer weryfikujący** | Weryfikacja poświadczeń | | **API** | Interfejs programistyczny | | **Konsola zarządzania** | Zarządzanie użytkownikami | ### Bezpieczeństwo | Element | Opis | |---|---| | **Silna kryptografia** | Zaawansowane algorytmy | | **Hasło jednorazowe (OTP)** | One-Time Passcode | | **Generator 60-sekundowy** | Hasło zmienia się co 60 sekund | --- ## Dwuskładnikowe uwierzytelnianie (2FA) Dwuskładnikowe uwierzytelnianie łączy **dwa niezależne czynniki**: | Czynnik | Pytanie | Przykład | |---|---|---| | **Co wiesz?** | Wiedza użytkownika | Hasło, PIN | | **Co masz?** | Posiadanie | Telefon, token, karta | ### Dodatkowe czynniki - **Kim jesteś?** — biometria (odcisk, tęczówka), - **Gdzie jesteś?** — lokalizacja. ### Formy kodu - **QR code** — skanowanie kodu, - **Code** — wpisanie kodu. ### Radius **RADIUS** (Remote Authentication Dial-In User Service) — protokół uwierzytelniania, autoryzacji i rozliczania dostępu do sieci. --- # Część 4 ## OpenID i OAuth --- ## OpenID **OpenID** to **rozproszona architektura uwierzytelniania** i dystrybucji tożsamości w usługach Web. ### Jak działa 1. Użytkownik podaje **identyfikator OpenID** (URL), 2. Serwis przekierowuje do **dostawcy OpenID**, 3. Dostawca uwierzytelnia użytkownika, 4. Dostawca potwierdza tożsamość serwisowi. ### Zalety | Zaleta | Opis | |---|---| | **Łatwość użycia** | Jedno logowanie do wielu serwisów | | **Decentralizacja** | Brak centralnego punktu kontroli | | **Kontrola prywatności** | Użytkownik kontroluje dane | | **Łatwość aktualizacji** | Zmiana danych w jednym miejscu | ### Wady / ryzyka | Wada | Opis | |---|---| | **Kradzież tożsamości** | Przejęcie konta OpenID | | **Koncentracja danych** | Dostawca gromadzi dane o użytkowniku | --- ## Dostawcy OpenID ### Dostawcy oparci na haśle | Dostawca | Identyfikator | |---|---| | **Google** | google.com/accounts/o8/id | | **Yahoo!** | me.yahoo.com/username | | **WordPress** | username.wordpress.com | | **Wirtualna Polska** | openid.wp.pl/username | ### Dostawcy silnego uwierzytelniania | Dostawca | Identyfikator | |---|---| | **PIP (VeriSign Labs)** | username.pip.verisignlabs.com | | **MyOpenID** | username.myopenid.com | --- ## OAuth **OAuth (Open Authorization)** to **otwarty standard autoryzacji**. Pozwala użytkownikom udostępniać prywatne zasoby (zapisane w jednym serwisie) innemu serwisowi **bez przekazywania poświadczeń** (nazwy użytkownika i hasła). ### OAuth a OpenID OAuth jest usługą **uzupełniającą, ale odrębną** od OpenID: - **OpenID** — uwierzytelnianie (kim jesteś?), - **OAuth** — autoryzacja (co możesz udostępnić?). ### Jak działa OAuth 1. Użytkownik prosi aplikację o dostęp do zasobów, 2. Aplikacja przekierowuje do **dostawcy OAuth**, 3. Użytkownik autoryzuje dostęp, 4. Dostawca wydaje **token dostępu**, 5. Aplikacja używa tokenu do dostępu do zasobów. --- ## OAuth — zalety i wady ### Zalety | Zaleta | Opis | |---|---| | **Bez ujawniania hasła** | Aplikacja nie zna nazwy użytkownika i hasła | | **Odwołanie dostępu** | Użytkownik może cofnąć dostęp aplikacji | | **Dodatkowe funkcje** | Dostęp do danych udostępnionych przez dostawcę | ### Wady / ryzyka | Wada | Opis | |---|---| | **Brak personalizacji profilu** | Użytkownik nie może dostosować profilu dla aplikacji | ### Kto używa OAuth? Google, Facebook, Twitter, GitHub i wiele innych — OAuth jest standardem **delegowania dostępu** w nowoczesnych usługach. --- # Część 5 ## Standardy WS-Security --- ## WS-Security — standardy ochrony IBM, Microsoft i inne organizacje stworzyły standardy ochrony komunikacji **na poziomie komunikatu**: - podpisy cyfrowe, - uwierzytelnianie, - szyfrowanie komunikatów **SOAP**. ### Rodzina standardów WS-* | Standard | Opis | |---|---| | **WS-Policy** | Deklarowanie polityk bezpieczeństwa | | **WS-Security** | Podstawowe mechanizmy bezpieczeństwa komunikatów | | **WS-Trust** | Zarządzanie zaufaniem i tokenami | | **WS-SecureConversation** | Bezpieczne sesje | | **WS-ReliableMessaging** | Niezawodna wymiana komunikatów | | **WS-AtomicTransactions** | Transakcje rozproszone | --- ## Zalety WS-* | Zaleta | Opis | |---|---| | **Bezpieczeństwo end-to-end** | Szyfrowanie i podpis na poziomie komunikatu — pośrednicy nie łamią bezpieczeństwa | | **Selektywne szyfrowanie** | Częściowe szyfrowanie i podpisywanie — lepsza wydajność | | **Niezależność od transportu** | Może działać z dowolnym protokołem transportowym | | **Szeroki zestaw poświadczeń** | Wspiera tokeny, umożliwia bezpieczeństwo federacyjne | ### Implementacje | Platforma | Biblioteka | |---|---| | **Java** | WSS4J, Apache Rampart | | **.NET** | WCF (Windows Communication Foundation) | | **Interoperacyjność** | WSIT (Java ↔ WCF) | --- ## WS-* — przykład WCF (strona serwera) Konfiguracja bezpieczeństwa usługi WCF (Web.config): ```xml ``` ### Kluczowe elementy | Element | Znaczenie | |---|---| | `security mode="Message"` | Bezpieczeństwo na poziomie komunikatu | | `clientCredentialType="UserName"` | Uwierzytelnianie nazwą użytkownika | | `reliableSession` | Niezawodna sesja | | `serviceCertificate` | Certyfikat usługi | --- ## WS-* — szyfrowany komunikat Przechwycony zaszyfrowany komunikat WCF zawiera: | Element | Opis | |---|---| | `` | Token urządzenia | | `` | Odwołanie do tokenu | | `` | Metoda szyfrowania (np. AES 256) | | `` | Zaszyfrowana informacja (dane użytkownika) | > Komunikat jest szyfrowany i podpisywany — przechwycenie go nie ujawnia danych ani nie pozwala na ich modyfikację. --- ## Podsumowanie | Temat | Kluczowe wnioski | |---|---| | **Triada CIA** | Poufność, integralność, dostępność | | **Uwierzytelnianie vs autoryzacja** | Najpierw "kim jesteś", potem "co możesz" | | **Typy uwierzytelniania** | Jednostronne, dwukierunkowe, przez zaufaną trzecią stronę | | **Metody** | Klasyczna, SSO, OTP, tokeny, biometria | | **Kryptografia** | Symetryczna (wspólny klucz) vs asymetryczna (para kluczy) | | **2FA** | "Co wiesz" + "co masz" | | **OpenID** | Rozproszone uwierzytelnianie tożsamości | | **OAuth** | Delegowanie autoryzacji bez ujawniania hasła | | **WS-Security** | Bezpieczeństwo na poziomie komunikatu SOAP | --- # Dziękuję za uwagę **Systemy Zarządzania Treścią** Politechnika Poznańska