Cualquier atacante que intercepte el archivo podría reemplazar o eliminar cualquier mecanismo de autoverificación incluido en el archivo ejecutable. Por lo tanto, debemos dejar la verificación de la firma en un sistema externo al ejecutable descargado, por ejemplo, el sistema operativo.
Hay tres resultados posibles que un sistema de verificación puede producir:
- La firma es definitivamente válida (la firma y los datos coinciden)
- La firma definitivamente es no válida (la firma y los datos no coinciden)
- No se proporciona ninguna firma (el ejecutable no está firmado)
En Windows, es posible que haya visto ventanas de confirmación emergentes como esta cuando intenta ejecutar un ejecutable:
Aquí, el ejecutable se ha firmado y Windows tiene ambos
- verificó la firma en el ejecutable, y
- verificó la identidad del propietario de la clave de verificación pública, utilizando una cadena de confianza basada en una de las autoridades de certificación de confianza del sistema operativo.
Sabemos con certeza criptográfica que una entidad llamada WinZip Computing firmó este ejecutable, exactamente como existe ahora en nuestro disco duro. Ese es el caso # 1, arriba.
Así es como un usuario preocupado por la seguridad puede verificar que algo está definitivamente sin modificar desde su publicación original. De manera similar, el sistema operativo puede detectar el caso # 2 con mucha facilidad: intenta verificar la firma y encuentra una falta de coincidencia en lugar de una coincidencia. En ese caso, el sistema operativo puede decirle severamente al usuario que no ejecute el software porque es increíblemente poco confiable.
Sin embargo, desea saber cómo evitar que un usuario ejecute algo que haya sufrido modificaciones arbitrarias. Es fácil para un atacante generar un caso # 3 (sin firma): simplemente reemplace su ejecutable firmado por un ejecutable modificado sin firmar.
network
certificates