Estoy tratando de entender la autenticación Kerberos.
Hasta ahora mi entendimiento es:
Suponiendo que 'Alice' (A) quiere hablar con 'Bob' (B).
Paso 1:
A - > S: {A, B, Ninguna} K (A, S) donde S es el servidor Kerberos, y K (A, S) es una clave para comunicarse entre A y S.Paso 2:
S - > A {K (A, B), {K (A, B), A} K (B, S)} K (A, S) El servidor devuelve la clave utilizada para comunicarse entre A y B y una segunda copia de dicha clave cifrada con una clave utilizada para compartir información entre B y S K (B, S). K (B, S) es Desconocido para A. Todo esto está encriptado con K (A, S).Paso 3:
{K (A, B), A} K (B, S) A envía a B la clave que usarán cifrada con K (B, S)Paso 4:
B- > A {Nonce} K (A, B) B descifra el mensaje y envía un Nonce cifrado utilizando K (A, B)Paso 5:
A- > B {Nonce + 1} K (A, B) Prueba de cordura de que están en la misma clave
Por lo tanto:
Si S no autoriza la comunicación entre A y B, no habría certificado la clave K (A, B) a B. Al cifrar {K (A, B) A} K (B, S) Garantizamos que S ha validado el proceso. A no tiene K (B, S), por lo que no pudo validarlo.
Si 'A' usara una clave diferente, diga K (B, S) 'que intentaron pasar, estarían enviando: {K (A, B) A} K (B, S)'. Cuando B lo descifra utilizando K (B, S), ya que el mensaje se habría cifrado con una clave diferente, no se obtendría K (A, B), sino algo de K (A, B) '. Entonces, cuando B devolvió {Nonce} K (A, B) 'A no podría recuperar el Nonce y completar la autenticación.
¿Lo he entendido correctamente?
También (creo que esto puede ser una pregunta aparte): ¿Cómo configura Kerberos de forma independiente K (A, S) y K (B, S) de forma segura? ¿Y cómo se asegura Kerberos de que 'A' sea quien dicen ser?