UniTO/anno2/YearI/FirstSem/CS/lesson5-06112017.md
Francesco Mecca 5e286062f8 MCAD 2019
2018-11-22 13:09:11 +01:00

47 lines
2.1 KiB
Markdown

# Kerberos v4
Introduce un terzo elemento (**Ticket Granting Service**). E' attualmente usato da Microsoft, sviluppato dall'MIT, ottimo per reti locali. L'utilizzo estensivo di Timestamps rende vano il replay attack. L'utilizzo di messaggi **authenticator**, assicurano l'identita' del client. Complesso.
## Funzionamento
E' un dialogo tra 4 soggetti: **Client, Authentication Service, Ticket Granting Service, Server**. Ogni soggetto condivide alcune chiavi con gli altri soggetti (non tutti) che sono generate *manualmente*, in maniera sicura. Il Ticket Granting Service e' utilizzato per generare ticket che permettano l'accesso al server.
```
V = servizio richiesto (server)
LT = lifetime
T = timestamp
```
Sequenza:
1. C manda ad AS `(IDc, IDtgs, T1)`
2. L'AS risponde con `(E[kc,as](Kc,tgs, IDtgs, T2, LT2, ticket[tgs]))`
* il ticket[tgs] e' `E[Kc,tgs] (Kc,tgs, IDc, MACc, T2, LT2, IDtgs)`
3. C manda al TGS `(IDv, ticket[tgs], authenticator[c])`
* authenticator[c] e' `E[Kc,tgs] (IDc, MACc, T3)`. E' usato per dimostrare l'identita' di C.
4. Il TGS risponde con `E[ktgs,v] (Kc,v, IDv, T4, ticket[v])`.
* il ticket[v] e' `E[Ktgs,v] (Kc,v, IDc, MACc, T5, LT5, IDv)`.
5. C a questo punto comunica direttamente con V, mandando `(IDc, ticket[v], authenticator2[c])`.
* authenticator[c] e' `E[Kc,v] (IDc, MACc, T6)`. E' usato per dimostrare l'identita' di C.
6. V risponde con `E[kc,v] (T5 + 1)`
* il T5 viene restituito modificato (una qualunque funzione va bene, basta che C e V ne siano a conoscenza).
# Autenticazione con chiave asimmetrica (SSL/TLS)
In applicativi in cui non e' possibile condividere chiavi simmetriche a priori (ecommerce, banking) e' necessario un protocollo a chiavi asimmetriche.
### Digressione: autenticazione HTTP
Il protocollo HTTP utilizza una catena di servizi: **Client/Browser, Proxy/Tunnel **(un numero vario)**, Gateway **(traduce richieste)**, Server**.
#### Autenticazione in HTTP
Vari metodi, in ordine di sicurezza:
* keep-alive: non un vero e proprio sistema di sessione, semplicemente un timeout e un numero di richieste/risposte massimo per mantenere aperta una connessione.
* Cookie / URL rewriting
* SSL / TLS