Me cuesta mucho encontrar los beneficios prácticos de transmitir un certificado autofirmado a través de una clave pública. Entiendo que un certificado autofirmado prueba la integridad de la clave pública y la identificación del usuario (es decir, la prueba de que el firmante puede descifrar los mensajes cifrados por la clave pública), pero ¿cuál es el beneficio práctico de seguridad de este conocimiento?
Por lo que entiendo, tanto el envío de un certificado autofirmado como el envío simple de la clave pública son susceptibles de ataques de intermediario:
- Alice y Bob quieren comunicarse en privado.
- Mallory está entre Alice y Bob.
- Mallory intercepta las claves públicas o los certificados autofirmados.
- Mallory crea un nuevo par de llaves y se autofirma en el caso de certificados autofirmados.
- Mallory transmite la nueva clave pública o los certificados autofirmados a Alice y Bob respectivamente.
- Mallory ahora está transparente entre Alice y Bob.
- Alice y Bob creen erróneamente que su comunicación es privada.
Ya que Mallory solo puede generar nuevos par de llaves y autofirmarse, un ataque de hombre en el medio puede ejecutarse tan directamente como si solo se intercambiaran claves públicas.
También he considerado un ataque de denegación de servicio, donde Mallory puede corromper el ID de usuario o la clave pública para que Alice / Bob no pueda descifrar mensajes y, por lo tanto, no pueda comunicarse. Un certificado autofirmado permitiría a Alice / Bob decir que hay un daño tan pronto como llega el certificado, mientras que una clave pública solo se descubrirá como dañada una vez que se reciba la respuesta.
Sin embargo, Mallory no obtiene ningún beneficio al realizar esta intrincada denegación de servicio: Alice y Bob no revelan secretos, ya que no pueden comunicarse, y simplemente bloquear paquetes de red es una forma mucho más sencilla de negarle el servicio a Alice y Bob.
Entonces, ¿de qué manera práctica es más seguro transmitir un certificado autofirmado que transmitir una clave pública solo?