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?
Antwort
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.
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? –
Große Frage, Brent. Ich würde gerne die Antwort wissen. – twk
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
- 1. Soll ich DLLs von Drittanbietern wie JSON.NET digital signieren?
- 2. Sollte ich DLLs für Modularität erstellen?
- 3. Sollte ich IdPs benötigen, um SAML2 SSO-Antworten zu signieren?
- 4. Warum sollte ich meine HTMLHelpers testen?
- 5. Wo sollte ich meine DbCommand-Instanzen erstellen?
- 6. Wo sollte ich meine Datenmodelle speichern?
- 7. Sollte ich Schnittstellen für meine Entitäten machen?
- 8. Sollte ich meine Controller (MVC) testen?
- 9. Wo sollte ich meine Funktionen einstellen?
- 10. Sollte ich meine Konstanten groß schreiben?
- 11. Wo sollte ich meine BaseActivity-Klasse finden?
- 12. Wo sollte ich meine Testwerte aufbewahren?
- 13. Sollte ich meine Unit-Testmethoden dokumentieren?
- 14. Sollte ich .CutCopyMode wieder einschalten, bevor ich meine Subprozedur verlasse?
- 15. Kann ich meine Aktivität instanziieren ... und sollte ich?
- 16. Authentifizieren von DLLs in C#
- 17. Mail signieren und verschlüsseln
- 18. Warum zeigen meine C# - und C++ - DLLs ein unterschiedliches Verhalten?
- 19. So signieren Sie meine Blackberry App mit LWUIT 1.5 GUIBuilder
- 20. Sollte meine Sitzungsklasse statisch sein?
- 21. Welche Qt-DLLs sollte ich kopieren, um mein Programm eigenständig zu machen?
- 22. Wie finde ich die Quelle der dlls und js Dateien?
- 23. Warum sollte (sollte ich nicht) ich meine neue Website in HTML 5 und CSS3 schreiben?
- 24. Laden benutzerdefinierter DLLs anstelle von ursprünglichen DLLs
- 25. Wie sollte ich meine GUI in Qt bauen?
- 26. Wie sollte ich potenzielle Bedrohungen für meine Website überwachen?
- 27. Wie sollte ich meine Solr filterCache, FirstSearcher und NewSearcher konfigurieren?
- 28. sollte ich alle meine abstrakten Klassen nennen AbstractFoo
- 29. Wann sollte ich meine Objekte in .NET ablegen?
- 30. Sollte ich benutzerdefinierte Kategorien in meine Open Source-Projekte aufnehmen?
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
Tim, ich werde es wahrscheinlich sowieso machen, ich bin hauptsächlich nur neugierig darauf, was der Effekt ist. – twk