He leído la descripción de Kerberos en sitios como este muy informativo: enlace Creo que entiendo en general cómo funciona:
- El usuario presenta la identidad al servidor de autenticación
- El servidor de autenticación le otorga al usuario un Ticket Granting Ticket (TGT), que incluye la clave de sesión TGS
- El usuario se conecta al TGS con la clave de sesión TGS
- TGS responde con una clave de sesión de servicio
- El usuario se conecta al servicio mediante la clave de sesión de servicio
(Me estoy saltando las partes sobre cómo se cifran los valores con varias claves secretas, para que cada máquina pueda verificar que la encriptación fue realizada por el AS o el TGS, que posee las claves secretas).
Lo que no entiendo es por qué no es más sencillo hacerlo en dos pasos, con cifrado de clave pública:
- El usuario "bennett" se autentica ante el AS y genera un par de claves públicas / privadas temporales. El AS firma digitalmente la clave pública de Bennett y dice: "La persona que usa esta clave pública realmente es Bennett, al menos durante las próximas 8 horas".
- El usuario "bennett" se conecta a un servicio, con la certificación de su clave pública firmada digitalmente por el AS, y utiliza el par de clave pública / privada para firmar su solicitud de un servicio. El servicio decide si permite al usuario "bennett" o no.
¿No es esto más simple? ¿Qué me estoy perdiendo?
Mi única idea fue que tal vez, dado que el cifrado de clave pública es más lento que el cifrado de clave secreta, Kerberos fue más eficiente por esa razón. Pero habría pensado que los viajes de ida y vuelta a la red fueron la parte más lenta de la operación y, por lo tanto, tres viajes de ida y vuelta que utilizan el cifrado de clave secreta aún serían más lentos que dos viajes de ida y vuelta que utilizan el cifrado de clave pública. ¿No es ese el caso?