Ho letto la descrizione di Kerberos in siti come questo molto informativo: /explain-like-im-5-kerberos/"> link Penso di capire in generale come funziona:
- L'utente presenta identità al server di autenticazione
- Authentication Server offre all'utente un Ticket Granting Ticket (TGT), che include la chiave di sessione TGS
- L'utente si connette al TGS con il tasto di sessione TGS
- TGS risponde con una chiave di sessione di servizio
- L'utente si connette al servizio utilizzando la chiave di sessione del servizio
(Salto le parti su come i valori vengono crittografati con varie chiavi segrete, affinché ogni macchina possa verificare che la crittografia sia stata eseguita dall'AS o dal TGS, che possiede le chiavi segrete.)
Ciò che non capisco è il motivo per cui non è più semplice farlo in due passaggi, con la crittografia a chiave pubblica:
- L'utente "bennett" si autenticano sull'AS e genera una coppia di chiavi pubblica / privata temporanea. L'AS firma digitalmente la chiave pubblica di bennett dicendo: "La persona che usa questa chiave pubblica è davvero bennett, almeno per le prossime 8 ore."
- L'utente "bennett" si connette a un servizio, con la certificazione della propria chiave pubblica firmata digitalmente dall'AS, e utilizza la coppia di chiavi pubblica / privata per firmare la richiesta di un servizio. Il servizio decide se consentire all'utente "bennett" o meno.
Non è più semplice? Cosa mi manca?
La mia unica idea era che forse dal momento che la crittografia a chiave pubblica è più lenta della crittografia a chiave segreta, Kerberos era più efficiente per questo motivo. Ma avrei pensato che i roundtrip della rete fossero la parte più lenta dell'operazione, e quindi che tre roundtrips usando la crittografia a chiave segreta sarebbero ancora più lenti di due roundtrip usando la crittografia a chiave pubblica. Non è questo il caso?