5

Ho un'applicazione creata utilizzando una varietà di librerie di terze parti come JSON.NET.Devo firmare digitalmente DLL di terze parti come JSON.NET?

Vorrei assicurare che tutte le DLL che compongono la mia domanda sono digitalmente firmato, compresi quelli di terze parti. Dato che questi non sono firmati dall'autore, posso/dovrei semplicemente firmare io stesso i terzi?

risposta

2

Stai parlando forte denominazione o sulle firme Authenticode? Il problema con questi ultimi è quando viene caricato l'assembly firmato con authenticode, .NET convalida il certificato e in alcune configurazioni (ad esempio quando OCSP deve essere controllato e non è raggiungibile) questo può richiedere decine di secondi. Abbiamo dovuto smettere di firmare i nostri assembly con certificati authenticode e X.509 a causa di questo.

Un altro svantaggio è che se l'assembly firmato è utilizzato dal malware, in qualche modo, alcuni wanna-be-specialisti non competenti in società antivirus possono (a) contrassegnare l'assembly come malware e (b) quel che è peggio, si lamentano all'autorità di certificazione che ha emesso il certificato di firma del codice e il certificato verrà revocato.

.NET forte denominazione (con una coppia di chiavi senza certificato) è più o meno il vostro business privato.

Aggiornamento: Authenticode è di solito applicata al file PE (in formato EXE e DLL), SYS e CAB. la denominazione forte è pura tecnica .NET.

Il messaggio di avviso parla di firma Authenticode. La firma del programma di installazione è necessaria (questo è sicuro) ed è sufficiente per sbarazzarsi del messaggio a meno che i criteri di sistema non siano impostati per consentire solo l'esecuzione di applicazioni firmate (nel qual caso anche l'EXE dell'applicazione deve essere firmato).

+0

@EugeneMayevskiEldoS: Grazie. Non sono sicuro - la differenza non è qualcosa di cui ero a conoscenza. Tutto quello che sto cercando di fare è installare/eseguire la mia applicazione senza causare alcun avviso "questa applicazione non è firmata". –

+0

Forse dovrei firmare l'installer, piuttosto che le DLL stesse? –

+0

Aggiunto un aggiornamento per rispondere alle tue domande –

5

solo cercato di (senza successo) a trovare una risposta alla stessa domanda in Internet.

Quello che ho fatto come risultato è controllato come Google e Adobe consegnano i loro prodotti e hanno scoperto che ogni binario nelle loro cartelle è firmato, compresi quelli di terze parti.

Coppia di esempi: 1. Google Chrome include pepflashplayer.dll, che è protetto da copyright di Adobe, ma firmato digitalmente da "Google Inc." 2. Adobe Reader include icudt40.dll, che è protetto da copyright da IBM, ma firmato digitalmente da "Adobe Systems"

Pertanto, suppongo che la migliore pratica sia quella di firmare tutti i file binari che compongono la tua applicazione, incluso il terzo -party ones. Ha senso in quanto aiuta a evitare o almeno a rilevare facilmente la manomissione, se accade sulla macchina del cliente.

Problemi correlati