2009-03-07 2 views
2

Ich fragte einmal eine Frage here, wenn Windows DLLs von Microsoft signiert sind. Ich erkannte, dass sie es waren, und ein guter Freund sagte mir, dass das SigCheck Dienstprogramm Informationen über die Signatur von Dateien bereitstellen kann; Aber eine Frage blieb:Dateisignaturen: Wie stelle ich sicher, dass eine Windows DLL nicht geändert wird?

Während SigCheck mir sagt, wenn eine Datei signiert ist, muss ich sicher sein, dass Microsoft die Datei signiert hat und niemand anders später geändert hat. Ich meine, was ist, wenn jemand die Datei manipuliert und dann die Datei erneut signiert (natürlich mit dem Namen Microsoft auf der Signatur)?

Wie kann ich absolut sicher sein, dass die Datei echt ist?

Antwort

4

„Ich meine, was ist, wenn jemand die Datei Stampfer und signiert dann die Datei erneut (mit dem Namen von Microsoft auf der Signatur, natürlich)?“

Dies ist aufgrund der Art der digitalen Signaturen nicht möglich. Um die digitale Signatur zu generieren, hat Microsoft die Datei hashed und diesen Hash dann mit ihrem privaten Schlüssel (nur ihnen bekannt) verschlüsselt. Nach meinem Verständnis verwenden andere Anbieter private Schlüssel aus other Certificate Authorities, für die Windows standardmäßig vertrauenswürdig ist.

Wenn Windows die Datei überprüft, entschlüsselt sie die Signatur mit dem entsprechenden öffentlichen Schlüssel. Diese Signatur wird dann mit der aktuellen Signatur verglichen. Wenn sie übereinstimmen, stammt die Datei von Microsoft. Wenn sie nicht übereinstimmen, wurde die Datei manipuliert.

Die einzige Möglichkeit, eine Datei so aussehen zu lassen, als wäre sie von Microsoft "signiert", wäre, ihren privaten Schlüssel zu stehlen. Lesen Sie die digital signature article on Wikipedia.

Weitere Informationen dazu, wie der Prozess tatsächlich funktioniert, lesen Sie "Signing and Checking Code with Authenticode" und "Introduction to Code Signing" auf MSDN.

+0

ITYM verschlüsselt mit öffentlichen Schlüssel ... entschlüsselt mit öffentlichen Schlüssel. Dies ermöglicht auch Nicht-MS-Anbietern, zu signieren. – dirkgently

+0

Nein, digitale Signaturschemata sind immer privater Schlüssel und dann mit public verifizieren. Ich bin mir nicht sicher, wie MS genau funktioniert, damit externe Anbieter unterschreiben können. – ine

+0

Ah richtig! Ich verstehe es jetzt. Ich hatte Probleme, dies zu verstehen. Ich werde mein Verständnis posten. – dirkgently

0

Vom Speicher aus verwendet der Signierprozess public key cryptography.

This diagram von wikipedia erklärt den Prozess am besten.

Zusammengefasst

„eine Nachricht mit einer Absender privaten Schlüssel signiert kann von jedermann überprüft werden, der Zugriff auf den Absender der öffentlichen Schlüssel hat und beweist damit, dass der Sender Zugang zum privaten hatte Schlüssel (und ist daher wahrscheinlich die Person mit dem öffentlichen Schlüssel verwendet verwendet), und der Teil der Nachricht, die nicht manipuliert worden ist. "

dh. Sigheck führt die Überprüfung mit dem öffentlichen Schlüssel von Microsoft für Dateien durch, die zuvor mit dem privaten Schlüssel von Microsoft signiert wurden (und natürlich hat nur Microsoft Zugriff auf den privaten Schlüssel).

-1

zu bauen auf, was andere bereits gebucht haben:

Haftungsausschluss: MS Nutzung von öffentlichen/privaten Schlüssel Terminologie w.r.t Digitale Signaturen verwendet, um mich zu verwirren viel. Ich habe gerade ein 'Aha!' Moment. Ich werde versuchen, meine Gedanken zu teilen, falls es jemandem hilft.

Geben Sie PPK


Die allgemeine Public-Private-Key-System funktioniert, indem ein Schlüsselpaar zu erzeugen, die asymmetrisch sind. Sie können nicht voneinander ableiten (durch praktikable Mittel). Einer von ihnen wird der private Schlüssel und der andere der öffentliche Schlüssel genannt.

Bei der 1: n-Kommunikation bleiben Sie am privaten Schlüssel und teilen den öffentlichen Schlüssel. Ihre Freunde, die Dokumente mit Ihnen teilen möchten, signieren sie mit Ihrem öffentlichen Schlüssel. Sie werden diese mit Ihrem privaten Schlüssel entschlüsseln. Beachten Sie, dass es egal ist, welchen bestimmten Schlüssel Sie behalten und welchen Sie verteilen. Gib einfach nicht beide raus.

Warum sind DigSigs anders?


Digitale Signaturen sind ein bisschen seltsam. Es ist eine Viele-zu-Eins-Situation. Um mit dem vorherigen Beispiel fortzufahren: Denken Sie an die Situation, in der Sie Dokumente mit Ihren Freunden teilen möchten. Du musst sie unterschreiben, also verschlüsseln und deine Freunde müssen entschlüsseln können. Sie teilen also weiterhin Ihren öffentlichen Schlüssel, signieren aber stattdessen mit Ihrem öffentlichen Schlüssel und senden ihn aus. Ihre Freunde haben diesen Schlüssel bereits und sie entschlüsseln ihn gerne. In diesem Fall Ihr öffentlicher Schlüssel fungiert als privater Schlüssel und Ihr privater Schlüssel fungiert als öffentlicher Schlüssel.

Das oben genannte ist, was MS mit seinen dlls macht.

Client-seitige Validierung


nun für die Validierung Teil. Ein von MS generiertes Zertifikat ist nicht gut, bis eine Zertifizierungsstelle es als gut bezeichnet. Das gilt für jeden. Wenn Sie sicher Geschäfte machen möchten, müssen Sie ein Zertifikat von einer Zertifizierungsstelle erhalten. Sobald Ihr Client Ihre Anwendung installiert hat, rippt das Validierungsprogramm des Betriebssystems Ihr Zertifikat aus und testet es, indem es eine so genannte Vertrauenskette überprüft. Es wird überprüft, wer Ihre Unterschrift bestätigt hat. Dies ist das Elternzertifikat. Wenn das System den Eltern identifizieren kann, sind sie erledigt und Sie sind akzeptiert. Wenn jedoch der Elternteil nicht verifiziert werden kann, wird der Elternteil des Elternteils angerufen. Und die Kette wird fortgesetzt, bis ein Knoten gefunden wird, der verifiziert werden kann. Wenn kein Knoten gefunden wird, wird er als unsigniert und unsicher gemeldet.

Beachten Sie, dass Zertifikate widerrufen werden können. Ein Zertifikat bedeutet also nicht, dass du gut bist. Dies ist ein weiterer Grund, warum der Verifizierungsprozess wichtig wird.

+0

Ich fürchte, es gibt viele falsche Aussagen in Ihrer Antwort, was wahrscheinlich der Grund war, warum Sie abgelehnt wurden. Wenn ich es Ihnen freundlicherweise vorschlagen kann, verzichten Sie bitte darauf, Ihre eigenen Vermutungen darüber zu präsentieren, wie die Dinge funktionieren, als wären sie Fakten. Denken Sie daran, dass Sie anderen Menschen Probleme bereiten können, wenn sie sich irrtümlicherweise auf Ihre falschen Informationen verlassen. – Zero3

Verwandte Themen