In che modo un cliente sa se sta parlando con un KDC reale o falso? Si basa sulla configurazione del sistema, simile a DNS?
Penso che ci siano due risposte diverse ma correlate alla tua domanda. Inizialmente, il client deve sapere quali sono i KDC esistenti per gestire le richieste di autenticazione. In un ambiente Windows Active Directory questo viene gestito tramite record di servizio Kerberos in DNS. Il client si fida del DNS per fornire un elenco valido di KDC. Ma questo apre la possibilità di un pirata informatico che compromette il DNS in quell'ambiente e aggiunge un record di Kerberos per il loro falso KDC.
Tuttavia, l'autenticazione "reale" si basa sul modo in cui il KDC dimostra al cliente che si tratta di un KDC valido durante il processo di autenticazione iniziale. Nella sua risposta alla richiesta del cliente, il KDC invia al client una chiave di sessione crittografata con la chiave segreta del cliente o una chiave a lungo termine. Quella chiave segreta si basa su un hash della password del client. Quindi, se il client non può decifrare la chiave di sessione, sa che c'è un problema e il KDC con cui sta parlando potrebbe essere falso (o semplicemente non sincronizzato con l'ultima chiave segreta). Il processo di autenticazione fallisce.
A quel punto il client non ha nemmeno inviato il proprio hash della password al falso KDC, quindi anche un compromesso di DNS non espone realmente il client a rischi irragionevoli a questo proposito.
Leggi altre domande sui tag authentication kerberos