¿Cómo verificar que el certificado de un archivo es confiable?

0

¿Qué pasos debo seguir para asegurarme de que se pueda confiar en el certificado de un archivo? ¿O hay realmente una manera de estar absolutamente seguro de eso?

Actualmente estoy implementando esta validación utilizando WinAPI. La validación de la firma digital de un archivo se realiza utilizando WinVerifyTrust . Como la verificación del certificado, estoy extrayendo toda la información sobre el certificado (como su huella digital, todas las entidades emisoras de certificados raíz, etc.). Sin embargo, no sé cómo usarlo para verificar su autenticidad.

Se agradece cualquier otro consejo e información sobre la verificación de la firma digital y el certificado de un archivo.

    
pregunta akz 20.11.2016 - 18:25
fuente

1 respuesta

1

Esta respuesta tiene una implementación en C ++:

BOOL bIsSuccess;
DWORD dwEncoding, dwContentType, dwFormatType;
HCERTSTORE hStore = NULL;
HCRYPTMSG hMsg = NULL;
PVOID pvContext = NULL;

// fill szFileName
...

// Get message handle and store handle from the signed file.
bIsSuccess = CryptQueryObject (CERT_QUERY_OBJECT_FILE,
                               szFileName,
                               CERT_QUERY_CONTENT_FLAG_ALL,
                               CERT_QUERY_FORMAT_FLAG_ALL,
                               0,
                               &dwEncoding,
                               &dwContentType,
                               &dwFormatType,
                               &hStore,
                               &hMsg,
                               &pvContext);
  

Para verificar la firma del archivo, le recomendaría que utilice CertGetCertificateChain y CertVerifyCertificateChainPolicy para verificar no solo que el certificado es válido en general, sino que (o todos sus padres) es válido para authenticode (szOID_PKIX_KP_CODE_SIGNING). CertGetCertificateChain se puede utilizar para diferentes escenarios de revocación. Debes hacer dos llamadas separadas con CERT_CHAIN_POLICY_AUTHENTICODE y CERT_CHAIN_POLICY_AUTHENTICODE_TS para verificar que tanto la política de cadena Authenticode como la política de cadena Authenticode Time Stamp son válidas.

    
respondido por el J.A.K. 20.11.2016 - 20:23
fuente

Lea otras preguntas en las etiquetas