In Kerberos, Authentication Server (AS) e Ticket Granting Server (TGS) sono generalmente implementati sullo stesso server. Questa macchina è chiamata Key Distribution Center (KDC).
Sicuramente ha senso implementare questi servizi sulla stessa macchina fisica, poiché nelle reti di piccole e medie dimensioni sarebbe eccessivo separare questi due servizi. Inoltre, ho una fonte relativamente affidabile, che dice (tradotto):
TGS e AS devono accedere allo stesso DB => non ha molto senso implementare TGS e AS su macchine diverse
Tuttavia, non vedo quale database debba essere condiviso tra i due.
Questa è la mia idea, come separerei AS e TGS, non ci sono database condivisi:
- Poiché AS e TGS sono separati, hanno un Master Secret diverso
- L'AS ha un database con tutti gli utenti con il rispettivo segreto principale (utilizzato quando l'utente effettua l'accesso, per crittografare la chiave di sessione), nonché il segreto principale del TGS (per crittografare i TGT richiesti).
- Il TGS ha un database, che consente di determinare a quale utente è consentito utilizzare quale servizio (ACL, elenco di revoca, ...), nonché un database con tutti i servizi con i rispettivi segreti principali (per crittografare i ticket).
Quando un utente desidera utilizzare un servizio (semplificato):
- Autenticare presso l'AS
- Ottieni un Ticket Granting Ticket (TGT), crittografato con il Master Secret TGS, così come la chiave di sessione, crittografato con il Master Master dell'utente.
- Contatta il TGS con il TGT
- Ottieni un biglietto, crittografato con il Master Secret del servizio
- Contatta il servizio con il biglietto
Mi sto perdendo qualcosa o non c'è davvero alcun problema a separare l'AS e il TGS?