Acabo de comenzar a aprender sobre los certificados digitales, su arquitectura y cómo funciona internamente. ¿Qué pasará si alguien me envía un certificado genuino de autenticación que realmente no le pertenece?
Acabo de comenzar a aprender sobre los certificados digitales, su arquitectura y cómo funciona internamente. ¿Qué pasará si alguien me envía un certificado genuino de autenticación que realmente no le pertenece?
¿Qué ocurrirá si alguien me envía un certificado genuino de autenticación que realmente no le pertenece?
Un certificado es realmente solo una clave pública que alguien selló con su aprobación. Teniendo esto en cuenta, las propiedades especiales de los pares de claves públicas / privadas (por ejemplo, cada una puede descodificar de forma única lo que la otra codificación) se utilizan para probar la "pertenencia".
Ese certificado "pertenece a" la persona que posee la clave privada correspondiente. Cuando se usa para la autenticación, se usa un certificado para decodificar algo que fue codificado con la clave privada correspondiente, lo que demuestra que la conexión está en manos de la persona a la que pertenece el certificado "; porque nadie más tiene la clave privada requerida.
Es por eso que los certificados (claves públicas) pueden ser públicos: si alguien le entrega un certificado que no posee, no pueden "respaldarlo" con una prueba privada generada por clave, y la autenticación fallará.
Si alguien le envía un certificado que no posee y usted encripta un mensaje, simplemente no podrá desencriptar ese mensaje sin tener la clave privada asociada con el certificado.
En el contexto de HTTPS / TLS, el cliente autentica el host enviándoles algo que solo ellos saben (generalmente aleatorio) cifrado con la clave pública del certificado y el host debe probar que tiene la clave privada descifrando ese elemento. El algo es con frecuencia una clave que debe utilizarse con un algoritmo de cifrado simétrico como AES. (Los detalles exactos aquí dependen del conjunto de cifrado utilizado)
Un certificado es básicamente algo que te dice algo como:
La siguiente clave pública pertenece a example.com, y ha sido verificada por SEA (Some Example Authority)
Clave pública: 348abb1c ...
Firma de SEA en este documento: 72ff541c ...
Los certificados son públicos, no están destinados a ser secretos. Ahora, ¿qué sucede si un sitio web malicioso diferente le otorgó ese certificado, pretendiendo ser example.com? Debería cifrar sus datos con esa clave pública (que pertenece a example.com) y enviar los datos cifrados al sitio web malicioso. Pero el sitio web malintencionado no puede descifrarlo, ya que necesitarían la clave privada para eso, y solo lo tiene example.com.
El atacante podría poner su propia clave pública en el certificado, de modo que podrán usar su propia clave privada para descifrar los datos. Pero si cambian la clave pública en el certificado, entonces la firma de la Autoridad ya no es válida, por lo que el certificado no es válido (recibe advertencias en los navegadores, etc.) y no debería aceptarla.
Sin embargo, hay tipos especiales de certificados que debe manejar con cuidado, y esos son los certificados raíz o cualquier certificado autofirmado. Básicamente dicen:
La siguiente clave pública pertenece a example.com, y ha sido verificada por example.com. ¡Solo confía en ello!
En general, no debería confiar en tales certificados. Sin embargo, algunos certificados como este son de confianza automática para su navegador o su sistema operativo, por ejemplo. ¿Por qué? Porque necesita las claves públicas de algunas autoridades para verificar las firmas en los certificados. Por lo tanto, su sistema operativo y algunas de sus aplicaciones confían en las claves públicas de algunas autoridades.
Lea otras preguntas en las etiquetas public-key-infrastructure digital-signature certificates