2011-01-17 9 views
8

Ich habe eine C++ Windows App. Ich unterzeichne unser Installationsprogramm und meine ausführbare Datei, unterzeichne jedoch derzeit keine DLLs (z. B. zlib1.dll). Es ist keine große Sache, diese auch zu unterschreiben, aber kann jemand erklären, was der Vorteil ist? Wird mein Programm beispielsweise anders aussehen als AV oder Firewall, wenn alle seine Abhängigkeiten signiert sind? Erhalten Benutzer unterschiedliche Warnungen?Sollte ich meine DLLs signieren?

+0

Warum sie nicht unterschreiben? Sie haben das Zertifikat bereits bezahlt - es dauert also nur noch ein paar Sekunden, um sie zu signieren. Warum überspringen Sie es? – Tim

+1

Tim, ich werde es wahrscheinlich sowieso machen, ich bin hauptsächlich nur neugierig darauf, was der Effekt ist. – twk

Antwort

6

Ihr Programm wird nicht anders zu AV oder Firewall erscheinen. Sie prüfen auf Signaturen auf Ihrer ausführbaren Datei, die Sie bereits signiert haben. Das Signieren Ihrer DLLs ist am sinnvollsten, wenn Sie diese Signaturen vor dem Laden überprüfen. Dies gewährleistet die Integrität aller DLLs zur Laufzeit. Es ist eine empfohlene sichere Methode, alle von Ihnen gelieferten Binärdateien zu signieren und ihre Signaturen zur Laufzeit zu validieren. Wenn Ihre DLLs von anderen Produkten verwendet werden sollen, müssen Sie sie unterschreiben, da diese Produkte ihre Authentizität und Integrität überprüfen möchten.

+5

Wie sieht es mit der impliziten Verknüpfung aus? Gibt es eine Möglichkeit, die Signatur in dieser Einstellung zu überprüfen, oder ist es erforderlich, alle DLL-Ladevorgänge in explizite Verknüpfung (d. H. LoadLibraryEx-Aufrufe) zu konvertieren? –

+1

Große Frage, Brent. Ich würde gerne die Antwort wissen. – twk

+1

Ich glaube nicht, es möglich ist, Unterschriften für implizit verknüpfte DLLs, um zu überprüfen, wie die DLLs, bevor Sie Ihren Code Tritt in geladen werden. Aber ich weiß von einem Produkt, das den DLLs explizit lädt sie verbindet implizit mit nur die Signatur zu verifizieren . – 341008

Verwandte Themen