2010-07-13 13 views
5

Siento que me falta algo obvio aquí, pero no lo veo escrito en ningún lado.Verificación de la firma del authenticode tras la ejecución de la aplicación .NET

Firmo mis ejecutables usando un certificado Authenticode, pero cuando comencé a aprender un poco más sobre él, estoy cuestionando el valor tal como está.

  • Un exe firmado tiene un certificado digital que muestra como un certificado "válido". Cuando descarga un archivo de Internet, muestra una advertencia en Windows que dice que está a punto de ejecutar un programa desde una ubicación potencialmente insegura publicada por Xyz Corporation.
  • Sin la firma, el archivo descargado dará una advertencia de recuadro totalmente de aspecto diferente diciendo que el archivo no es de confianza

Ahora, lo que me preocupa, es:

  • Si un exe firmado es alterado, cuando vaya a Propiedades> Firmas digitales> Seleccionar firma> Detalles ... muestra "Esta firma digital no es válida". Esa es una forma bastante oscura de ver lo que probablemente sea un problema grave, y un gran indicador de que no debes ejecutar el archivo.

    • Si ejecuta este archivo desde Windows (no descargado), se ejecutará perfectamente. Ninguna advertencia o indicación de que haya algo mal
    • No he comprobado qué sucede si descarga el archivo y luego intenta ejecutarlo.
  • Si se tira de la firma del archivo (usando delcert), no hay ninguna indicación de que algo está mal tampoco. De nuevo, puede ejecutar el archivo, y simplemente no se muestra ningún certificado en el cuadro de diálogo de propiedades.


Para que esto sea más útil, estoy pensando que un archivo firmado tiene que comprobarse. Al iniciar, debe verificar que haya una firma válida y que la huella digital sha1 de la firma coincida con la firma esperada para el certificado de Xyz Corporation.

(Por supuesto, esto todavía no se ocupa de la situación en la que alguien quita el certificado, y luego edita el archivo para eliminar el cheque certificado)


no puedo encontrar a alguien hablar acerca de cómo hacer esto (al menos no en .NET, y ciertamente no con una simple llamada a la API como yo esperaría) - por lo que esto lleva a un par de preguntas:

  1. ¿hay alguna razón la firma no se comprueba? ¿Qué otros beneficios hay para firmar sin este cheque?
  2. Está tratando de verificar la firma como un medio de detección de manipulación tan inútil que no tiene sentido intentarlo?
  3. ¿Cómo verifica el certificado del ejecutable actual en .NET?
+1

para .NET que debe utilizar el nombre de firma fuerte, no Authenticode. –

Respuesta

Cuestiones relacionadas