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