¿Cómo la incrustación de la clave pública en un certificado digital la protege de los imitadores?

Un certificado digital es un documento justo que ha sido firmado por un tercero confiable, que se supone que verificó que todo lo que está en el documento es válido. Entonces, no es que mágicamente proteja el material criptográfico de los imitadores, es solo que algunas personas (que hacen negocios de ese tipo de cosas y supuestamente son buenas en eso) han verificado que la clave realmente pertenece a la entidad o persona que parece a, y responder por ello. Es tan seguro como confiar en el tercero.

Por ejemplo, mientras navego por esta página, puedo examinar el certificado del sitio web Quora HTTPS. Contiene, entre otras cosas:

  • Una clave pública
  • La identidad del titular de la clave (Quora, Inc., Mountain View, California, EE. UU.) Y
  • Los dominios en los que es válido (* .quora.com)
  • La identidad del tercero que entregó el certificado (la autoridad de certificación, o CA), en este caso se llama DigiCert

Todo lo que significa es que Quora pagó a una compañía llamada DigiCert para que emitiera el certificado. Les proporcionaron su clave pública, una lista de dominios válidos, su identidad y, presumiblemente, algunas pruebas de identidad y documentación que establecen que son los usuarios legítimos del dominio http://quora.com y que desean utilizar esa clave pública para eso. DigiCert verificó todo y firmó todo el certificado con su propia clave privada.

Cuando visite Quora, debe establecer una conexión segura. Para esto, su navegador utiliza criptografía de clave pública para intercambiar claves de sesión; por lo tanto, necesita la clave pública de Quora y búsquela en el certificado. ¿Es válido este certificado? Básicamente no tiene idea (cualquiera puede hacer un certificado), pero este certificado ha sido firmado por DigiCert, que probablemente sea una compañía para la cual su navegador conoce la clave pública y está configurada para considerarla confiable para cosas como la firma de certificados. El navegador valida la firma del certificado con la clave pública y, por lo tanto, utiliza la clave pública contenida en el interior, confiando en que DigiCert haya verificado que es legítimo.

¿Por qué su navegador confía en DigiCert? Porque es una compañía de autoridad de certificación acreditada que ha estado en el negocio por un tiempo y es reconocida como seria y segura. ¿Deberías confiar en ellos? Para cosas como navegar por Quora, probablemente. Podrían violar su seguridad, claro (deliberadamente o involuntariamente a través de la seguridad descuidada), pero su negocio se basa en que todos confían en ellos para que eso no suceda, por lo que tienen todo que perder y nada que ganar al hacerlo.

En última instancia, lo relevante es que su autoridad tiene el incentivo y los medios para protegerlo de las personas que lo amenazarían. Si usted es Quora y desea proteger su sitio contra estafadores aleatorios, usar ese tipo de CA tiene sentido.

Permíteme llamarte ‘A’ y asumir que no tienes un Certificado Digital, y supongamos que uno, ‘X’ quiere comunicarse contigo en secreto (Confidencialmente). Luego necesita su clave pública y le solicita la misma.

Permítanme suponer que estas conversaciones están siendo escuchadas por ‘Y’ (Man-in-the-Middle). Y se vuelve demasiado curioso para saber qué X va a compartir contigo. Y genera un par de claves (claves asimétricas) y envía la clave pública a X, alegando que él es ‘A’ (ese es usted).

Ahora X no tiene forma de verificar el reclamo hecho por Y, y simplemente confía en él como ‘A’ y envía mensajes cifrados a Y utilizando la clave pública enviada por Y. Y lo lee descifrando con su clave privada.

Y va un paso más allá y quiere que creas que realmente estás recibiendo los mensajes de X. Entonces intercepta la clave pública que estás enviando a X y la usa para encriptar los mensajes que recibió de X (recuerda que él había ya descifró los mensajes recibidos de X) y los envía a usted.

Ahora, Y. X y You (A) han lanzado un exitoso ataque de “Man-in-the-Middle” y creen que se están comunicando entre sí directa y secretamente, pero en realidad Y se había interpuesto entre ustedes y transmitiendo ¡las conversaciones!

¿Cómo evitar esto?

La respuesta está en la “confianza”. En el escenario anterior, todo comenzó con X confiando en la clave pública de Y como tuya (A). Si X tuviera una manera de verificar confiablemente la clave pública, entonces esto podría haberse evitado.

Entonces, si alguien en quien X confía, puede ‘certificar’ la clave pública suya, entonces el problema está resuelto y alguien es la Autoridad de Certificación (CA) que le emite un Certificado Digital, certificando su clave pública (y no en el sentido de “incrustación”). Ahora, en este caso, ‘Y’ no puede engañar a la CA de que él es ‘A’, ya que la CA (generalmente) exigirá la identidad (e incluso puede verificar físicamente) antes de emitir un Certificado Digital.

Hay más en un certificado digital además de solo una clave pública incrustada. También tiene una o más afirmaciones sobre la identidad del propietario de la clave.

Aquí está la parte más importante. El certificado digital también contiene una firma digital de lo anterior, generada por una parte confiable. Esta firma digital es una función de tres cosas:

  1. La clave pública que se está certificando.
  2. Información sobre el propietario de la clave pública anterior (por “propietario”, me refiero a quien esté en posesión legítima de la clave privada correspondiente)
  3. Clave privada de la parte de confianza que está generando la firma

Debido a que (3) no se conoce públicamente, la firma digital no se puede falsificar ni alterar. Sin embargo, cualquiera puede validarlo porque lo único que se necesita para validar la firma digital es la clave pública de la parte de confianza. Por lo tanto, el certificado digital une (1) y (2) de manera no impersonal.

En el contexto de los certificados digitales, estas partes de confianza se denominan Autoridades de certificación (CA). Sus claves públicas están ampliamente distribuidas e incluso se incluyen con software como navegadores que necesitan validar certificados digitales para funcionar.

Un certificado digital solo adquiere significado y confiabilidad porque está firmado digitalmente por una autoridad de certificación (CA) confiable. Esto asegura que la clave pública en el certificado no haya sido reemplazada y pertenezca al propietario / organización que se muestra en el certificado (que fue validado por la CA). El certificado no puede ser robado y utilizado por un imitador, porque esa persona no tendría la clave privada asociada con ese certificado.

Cuando una parte que confía se presenta con un certificado digital, puede navegar por la cadena de confianza del certificado hasta la CA raíz y determinar si confía en esa raíz. La mayoría de los navegadores web confían automáticamente en cualquier certificado que esté encadenado a una CA raíz en su almacén de confianza. Sin embargo, esto ha sido una crítica frecuente de los navegadores web durante años, ya que un usuario no tiene información para decidir si los certificados de CA precargados en su navegador son realmente confiables o no.