Molti file scaricati non hanno firme digitali. I file potrebbero essere infettati o qualcuno potrebbe modificarli intenzionalmente sul nostro disco rigido.
Così ho scritto un semplice programma di hashing di file in c # che crea un hash SHA-256 di ogni file & lo memorizza in un documento XML firmato. La chiave privata viene prelevata dall'archivio certificati di Windows con un livello di sicurezza elevato. (Cioè, ogni volta che uso la chiave privata mi chiede la password.) Ho anche creato una scheda delle proprietà per le cartelle & icona sovrapposizioni (in pratica mostra un'immagine di controllo sull'icona di un file se l'hash è ok) in modo da poter vedere a colpo d'occhio quali file sono ok. Questo programma esegue anche il backup dell'elenco di hash su Google Drive e sincronizza automaticamente il nostro database hash. Ho anche aggiunto Authenticode ai miei file di programma.
Quindi ho alcune domande in mente:
-
È possibile che malware o qualsiasi tipo di exploit in esecuzione con i privilegi di amministratore esegua il dump della chiave privata senza la password? (Le chiavi sono in User Store con alta sicurezza.)
-
È possibile sfruttare il mio programma in modo che anche se un file viene modificato, lo mostrerà come corrispondente all'hash memorizzato? (Sono su Windows 8 x64 con DEP e ASLR attivo.)
-
L'eseguibile del programma controlla la propria firma digitale & altre DLL caricate. Quindi se non è valido esiste. Va bene?
-
Se il programma non è sicuro, come posso migliorarlo per sicurezza?
Principalmente, voglio assicurarmi che i file che uso non vengano manomessi anche se il mio computer è compromesso. (Conosco Open PGP ma voglio solo archiviare hash di file e altri attributi come lunghezza del file in byte, che l'utente ha creato ogni firma, data / ora in chiaro in XML firmato, in modo che i miei amici possano anche controllare l'hash con altri software, ecc.)