Convalida codice Firma certificato root offline

1

Sto sviluppando una libreria distribuita come una DLL di Windows per essere chiamata da eseguibili di terze parti. Mi aspetto che l'EXE chiamante sia firmato digitalmente e che sia necessario verificarlo.

Non ho il controllo del computer su cui verrà eseguito il mio codice. Come convalidare se l'eseguibile chiamante è firmato da una CA nota e attendibile come Verisign o Symantec nella parte superiore della catena di certificati? Devo farlo offline.

Ho preso in considerazione quanto segue:

  1. Cerca le stringhe "Verisign" e "Symantec" nel certificato soggetto.
  2. Confronta i numeri seriali dei certificati. contro una lista di numeri seriali. conosciuto essere valido.
  3. Confronta l'identificazione personale del certificato con un elenco di thumbprint noti.

Tuttavia, so che 1 e 2 possono essere falsificati. Circa 3, non sono sicuro dello spoofing ma quanto è affidabile quando si considerano la scadenza e la revoca?

    
posta Agnel Kurian 20.05.2016 - 07:46
fonte

1 risposta

2

Per prima cosa, devi chiedere a Windows di convalidare la firma sul file EXE. La tua DLL può farlo utilizzando l'API WinVerifyTrust () e Microsoft fornisce il codice di esempio per fare questo qui .

Questo ti dirà che il Windows su cui stai lavorando è felice con la firma sul file EXE. Una macchina configurata maliziosamente può avere un EXE firmato con un certificato auto-emesso che è stato installato sulla macchina, quindi questo non soddisfa tutti i requisiti, ma costringe l'avversario a fare il suo lavoro a fondo.

Quindi, per verificare i certificati, utilizzare CertGetCertificateChain (), seguito da CertVerifyCertificateChainPolicy (). Puoi chiedere a queste funzioni di verificare la revoca e fare diversi altri tipi di controllo: vale la pena leggere la loro documentazione da vicino. C'è un programma di esempio qui .

Attraverso queste API, puoi ottenere le strutture CERT_INFO per i certificati nella catena appropriata e puoi controllare quelle che preferisci.

    
risposta data 27.09.2016 - 16:54
fonte

Leggi altre domande sui tag