Ob / wie SHA-1 signierte Zeitstempel bei der Code-Signatur vermieden werden können?

8

Wir haben gerade von einem SHA-1 zu einem SHA-2 Code Signing-Zertifikat gewechselt. (Als Hintergrundinformationen signieren wir EXE- und .XAP-Dateien unter Windows mit signtool.exe unter Verwendung von COMODO-Codesignaturzertifikaten.) Wir verwenden dazu einen zertifizierten Zeitstempel, um sicherzustellen, dass Windows der Codesignatur nach dem Codesignaturzertifikat weiterhin vertraut abläuft.

Jetzt habe ich bemerkt, dass das Zeitstempel-Zertifikat immer noch ein SHA-1-Zertifikat ist , wenn Ссылка verwendet wird . (Details: Es ist df946a5 ... mit Betreff 'CN = COMODO Zeitstempel Signierer, O = COMODO CA begrenzt, L = Salford, S = Größeres Manchester, C = GB'.)

(Unter Windows kann man dieses Zertifikat sehen, indem man eine signierte .exe nimmt, dann im Dialogfeld Eigenschaften von Explorer auf die Registerkarte Digitale Signaturen gehen, die Signatur auswählen und auf Details klicken, dann im Dialogfeld Digitale Signatur Details auf die Gegensignatur klicken und Klicken Sie auf Details, und klicken Sie dann im zweiten Dialogfeld Details der digitalen Signatur auf Zertifikat anzeigen. Das Zertifikat ist ein SHA-1-Zertifikat, wenn der Signatur-Hash-Algorithmus "sha1" ist.)

Wird dies ein Problem sein? Mit anderen Worten, nachdem unser aktuelles Codesignaturzertifikat abgelaufen ist und nachdem Microsoft Windows SHA-1 als einen fehlerhaften Algorithmus behandelt (der spätestens 2020 ist) Werden unsere aktuellen Signaturen immer noch vertrauenswürdig sein? Oder wird Windows sagen: "Der Zeitstempel liegt im Gültigkeitsbereich des Codesignaturzertifikats, aber der Zeitstempel wurde mit einem SHA-1-Zertifikat signiert, daher vertraue ich dem Zeitstempel nicht und vertraue daher dieser Signatur nicht"?

Gibt es einen anderen Service, den wir nutzen können / sollten? (Nicht Verisigns Ссылка , da sie auch noch ein SHA-1 Zeitstempel-Zertifikat verwenden, nämlich 6543992 ... )

    
Marnix Klooster 03.06.2015, 11:06
quelle

2 Antworten

1

Update: Sieht so aus, als wären Sie in Ordnung bis 01.01.2017 .

Möglicherweise, aber dank this < Ich habe herausgefunden, wie man ein SHA-256-Timestamp-Zertifikat erhält. Ich habe nur einen Zeitstempel-Server gefunden, der es tun kann: Ссылка

Die signtool / td Flagge ist ebenfalls wichtig (und schlecht dokumentiert).

Unterzeichnung wie folgt:

signtool sign /fd SHA256 /tr http://timestamp.globalsign.com/?signature=sha2 /td SHA256 /a filename.exe

führt zu einer ausführbaren Datei mit einem Code-Sign-Zertifikat und einem Zeitstempel-Zertifikat mit SHA-256-Signatur-Hash-Algorithmus.

    
Kyle Alons 19.10.2015, 03:17
quelle
1

Sie können Ihr SHA-2-Zertifikat verwenden, um Code doppelt zu signieren, damit er unter XPsp3 und Vista (die SHA-2 nicht verstehen) sowie späteren Betriebssystemen (Win 7, 8, 10) validiert wird.

Es ist ein zweistufiger Prozess, der zuerst mit SHA-1 signiert und dann eine SHA-256-Signatur anfügt. Obwohl es nicht explizit ist, wird bei der ersten Ausführung von signtool standardmäßig SHA-1 signiert. Im zweiten Lauf fordern Sie den Algorithmus sha256 digest mit der Option / fd an. Die Zeitserver in diesem Beispiel sind Comodos.

%Vor%

Sie müssen eine Version von signtool verwenden, die das duale Signieren unterstützt (die Option / as). Ich glaube, das ist Windows SDK Version 8.1 oder höher.

Wenn Sie dies getan haben, überprüfen Sie die Sicherheitseigenschaften der ausführbaren Datei, und Sie sollten sowohl SHA-1- als auch SHA-256-Signaturen (unter späteren Betriebssystemen) sehen, aber nur die SHA-1-Signatur unter XP / VISTA.

Beachten Sie, dass andere Zeitserver verschiedene Optionen zum Festlegen des Digest-Algorithmus haben. Ihre ausstellende Zertifizierungsstelle sollte in der Lage sein, die entsprechenden URLs anzugeben.

    
EBlake 11.10.2016 08:28
quelle