Come verificare che il certificato di un file sia affidabile?

0

Quali misure dovrei fare per assicurarmi che il certificato di un file possa essere considerato affidabile. O c'è davvero un modo per esserne assolutamente sicuri?

Attualmente sto implementando questa convalida usando WinAPI. La convalida della firma digitale di un file viene eseguita utilizzando WinVerifyTrust . Come verifica del certificato, sto estraendo tutte le informazioni sul certificato (come la sua identificazione personale, tutte le autorità di certificazione radice, ecc.). Tuttavia, non so come usarlo per verificarne l'autenticità.

Sono graditi altri suggerimenti e informazioni sulla verifica della firma digitale e del certificato di un file.

    
posta akz 20.11.2016 - 18:25
fonte

1 risposta

1

Questa risposta ha un'implementazione in 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);

To verify the signature of the file I would recommend you to use CertGetCertificateChain and CertVerifyCertificateChainPolicy to verify not only that the certificate is valid in general, but that it (or all its parents) is valid for authenticode (szOID_PKIX_KP_CODE_SIGNING). CertGetCertificateChain can be used for different revocation scenarios. You should do two separate calls with CERT_CHAIN_POLICY_AUTHENTICODE and CERT_CHAIN_POLICY_AUTHENTICODE_TS to verify that both Authenticode chain policy and Authenticode Time Stamp chain policy are valid.

    
risposta data 20.11.2016 - 20:23
fonte