Überprüfen Sie die Authenticode-Signatur als von unserer Firma für den automatischen Updater

9

Ich implementiere eine automatische Update-Funktion und benötige einige Ratschläge, wie dies mit bewährten Methoden sicher durchgeführt werden kann. Ich möchte die Authenticode-Signatur der heruntergeladenen Datei verwenden, um zu überprüfen, ob sie sicher ausgeführt werden kann (d. H. Von unserer Firma stammt und nicht manipuliert wurde). Meine Frage ist der Frage # 2008519 sehr ähnlich.

Die entscheidende Frage: Was ist der beste und sicherste Weg, um Authenticode-Signaturen auf eine automatische Update-Funktion zu überprüfen? Welche Felder im Zertifikat sollten überprüft werden? Die Anforderungen sind: (1) Überprüfen Sie die Signatur ist gültig, (2) überprüfen Sie es ist meine Unterschrift, (3) alte Clients können immer noch aktualisieren, wenn mein Zertifikat abläuft und ich ein neues bekomme.

Hier ein paar Hintergrundinformationen / Ideen aus meiner Forschung: Ich glaube, das könnte in zwei Schritte unterteilt werden:

  1. Überprüfen Sie, ob die Signatur gültig ist. Ich glaube, dies sollte einfach mit WinVerifyTrust sein, wie in Ссылка beschrieben erwarte hier keine Probleme.

  2. Vergewissern Sie sich, dass die Signatur unserer Firma und nicht einer anderen Firma entspricht. Dies scheint eine schwierigere Frage zu sein:

Eine Möglichkeit besteht darin, einige Zeichenfolgen in der Signatur zu überprüfen. Könnte über Code im MS KB Artikel # 323809 erhalten werden, aber dieser Artikel gibt keine Empfehlungen darüber, welche Felder für diese Art von Anwendung (oder andere, für diese Angelegenheit) überprüft werden sollten. Die Frage # 1072540 zeigt auch, wie Sie einige Zertifikatsinformationen erhalten, empfiehlt aber nicht, welche Felder tatsächlich überprüft werden sollen. Meine Sorge ist, dass die Zeichenfolgen möglicherweise nicht die beste Prüfung sind: Was, wenn eine andere Person beispielsweise ein Zertifikat mit demselben Namen erhalten kann? Oder wenn es einen triftigen Grund für uns gibt, die Zeichenfolgen in der Zukunft zu ändern?

Die Person in Frage # 2008519 hat eine sehr ähnliche Anforderung. Sein Bedarf für eine "TrustedByUs" -Funktion ist identisch mit meiner. Er macht jedoch die Überprüfung, indem er öffentliche Schlüssel vergleicht. Während dies kurzfristig funktionieren würde, scheint es, dass es für eine automatische Update-Funktion nicht funktionieren wird. Dies liegt daran, dass Codesignaturzertifikate nur für 2 bis 3 Jahre gültig sind. Wenn wir also in den nächsten zwei Jahren ein neues Zertifikat kaufen, können die alten Clients aufgrund der Änderung des öffentlichen Schlüssels nicht mehr aktualisiert werden.

    
James Johnston 04.01.2011, 15:50
quelle

1 Antwort

4
  

Die Person in Frage # 2008519 hat a   sehr ähnliche Anforderung. Sein Bedürfnis nach   Eine "TrustedByUs" -Funktion ist identisch   zu minen. Aber er macht es   Überprüfen Sie, indem Sie öffentliche Schlüssel vergleichen.   Während dies in der funktionieren würde   Kurzfristig scheint es nicht so   arbeiten für eine automatische Update-Funktion.   Dies liegt an der Codesignierung   Zertifikate sind nur für 2 - 3 gültig   Jahre max. Deshalb, in der Zukunft,   wenn wir ein neues Zertifikat in 2 kaufen   Jahre wären die alten Kunden nicht   in der Lage, mehr zu aktualisieren aufgrund der   Ändern Sie den öffentlichen Schlüssel.

Da Sie davon überzeugt sind, dass die Anwendung Ihnen vertraut, anstatt dass Ihnen eine Person vertraut, könnten Sie einfach die Selbstsignierung verwenden und alle öffentlichen Schlüssel einbetten, die in den Anwendungen selbst benötigt werden. Dies gibt Ihnen viel mehr Kontrolle über den Prozess. Dies ist unangemessen, wenn Sie einen Benutzer oder eine Anwendung bitten, der Sie nicht vertrauen können, aber in diesem Fall liegt die Anwendung unter Ihrer Kontrolle, also wird es gut funktionieren. Auf diese Weise können Sie sehr leicht vermeiden, dass Sie das ähnlich aussehende Zertifikat eines anderen für Ihr Eigenes halten.

    
Brian 04.01.2011, 16:41
quelle