Los certificados son útiles porque incluso si tiene un par de claves, eso no significa que solo puede enviar a alguien su clave pública y el receptor sabrá que usted controla la clave privada correspondiente. Debe haber alguna forma para que el receptor asocie esa clave con su identidad (su "yo"). De lo contrario, un atacante podría simplemente enviar al servidor su clave pública, afirmando que es suya, y el mensaje se le enviaría a él (o, a la inversa, podría recibir una clave pública de un servidor falso y recibir un mensaje que esté correctamente cifrado). , firmado, pero no vino de quien crees que vino).
Una forma de intercambiar las claves de forma segura sería en persona, pero eso es engorroso y no siempre es factible. Otra opción es utilizar un tercero de confianza en el proceso: la Persona A firmó las claves públicas de la Persona B y la Persona C y asoció cada clave con el ID del titular, siempre que B tenga una copia de la clave pública de A puede verificar que la clave de C coincide con la ID de C (incluso si esa clave / certificado se envió a través de un canal inseguro). Por lo tanto, B puede enviar mensajes confidenciales a C (y, como se señala en la la respuesta de AJ Henderson , lo contrario también es necesario si B quiere firmar el mensaje: C debe tener la clave pública de A para verificar la identidad de B).
Entonces, respondiendo a su pregunta, los certificados juegan un papel en su proceso en la fase de intercambio de claves públicas, todo lo demás es como lo describió. El contenido de un certificado es una clave pública asociada a un identificador (ya sea un nombre de dominio u otra cosa que lo identifique de manera única, y que un tercero honesto no firmaría si no lo conociera / no confiara en usted). Y para quién posee qué, normalmente ambos poseen una lista de terceros de confianza, utilizada para la verificación, pero nada le impide tener también una lista de certificados conocidos de personas de confianza (en cuyo caso no importa si un tercero o no) partido los firmó).
Actualización: un ejemplo completo, diseñado para adaptarse a su escenario:
Alice (Servidor A) quiere enviar un mensaje a Bob (Persona B), con la ayuda de su conocido común Charles Augustus . Cada uno tiene un par de claves, compuesto por una clave privada (AA, BA y CA) y una clave pública (AB, BB y CB), y un certificado que asocia su clave pública a sus nombres (AC, BC y CC). Charlie firmó su propio certificado (CC $ C) con su clave privada.
Cuando Alice y Charlie se conocieron en persona, Charlie firmó el certificado de Alice usando su clave privada (AC $ C), luego de confirmar que Alice controlaba la clave privada correspondiente (AA), que el certificado contenía el nombre de Alice (el nombre de dominio del servidor ) más la clave pública (AB) y que ella no era una impostora. Alice también recibió una copia del certificado de Charlie. Algún tiempo después, Bob hizo lo mismo (obtener BC $ C, usar su identificación o alguna otra prueba de identidad, ya que las personas no tienen nombres de dominio).
Cuando Alice quiere enviar un mensaje a Bob, esto es lo que sucede:
- Bob envía su certificado (BC $ C) a Alice;
- Alice confirma que el certificado tiene el nombre de Bob y que fue firmado por Charlie;
- Como Alice tiene el certificado de Charlie (CC $ C), usa la clave pública (CB) que contiene para verificar la firma (hecha con la clave privada CA);
- ahora confía en que Bob controla la clave privada (BA) que empareja la clave pública (BB) que contenía el certificado de Bob.
- "Ahora firmo el mensaje con la clave privada AA y lo cifro con la clave pública BB en el servidor A. La persona B verifica la firma con la clave pública AB y la desencripta con la clave privada BA".
- Ahora Bob tiene el mensaje, pero necesita estar seguro de que realmente vino de Alice. Por cierto, Alice también envió su certificado (AC $ C) junto con el mensaje (así es como Bob obtuvo la clave pública AB);
- Bob confirma que el certificado tiene el nombre de Alice y que fue firmado por Charlie;
- Como Bob tiene el certificado de Charlie (CC $ C), usa la clave pública (CB) que contiene para verificar la firma (hecha con la clave privada CA);
- ahora confía en que Alice controla la clave privada (AA) que empareja la clave pública (AB) que contiene su certificado de Alicia.