Ist es möglich SHA1-Digest in java-Manifest-Datei, ohne tatsächlich mit einem Schlüssel
Derzeit verwenden wir jarsigner zu signieren unsere jar. Wir zeigen dann einige SHA1-Digest-Werte für bestimmte Klassen zu beweisen, dass ein externer auditor, dass der code hat sich nicht geändert zwischen den Versionen.
Wir nur verlassen sich auf die META-INF/xxx.SF
- Datei, um die digest Informationen, und wir nie verwenden, die META-INF/xxx.DSA
signature-block-Datei.
Da brauchen wir nur die digest-Berechnung im code, ich Frage mich, ob es möglich ist, die .SF
- Datei generiert, mit einigen java-tool, ohne tatsächlich mit einem Schlüssel.
Lese ich http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html aber es sieht aus wie der Schlüssel ist obligatorisch.
InformationsquelleAutor cbliard | 2012-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte dies möglich sein. Das MANIFEST.MF-Datei enthält eine Base64-kodierte SHA-1 des jeweiligen class-Datei.
Aus Ihrem Dokument:
So, Iteration über alle class-Dateien, berechnen Sie die SHA-1 -, format -, so erscheint es im MANIFEST.MF, dann hash, und format, wie Sie in der SF-Datei.
Gibt es keine Schlüssel involviert bei der Berechnung.
Beispiel: betrachten "jce1_2_2.jar" (oder was auch immer Sie haben, ordnungsgemäß unterzeichnet ist). Diese enthält
MANIFESTIEREN.MF Einträge in der form
sind die Base64(SHA1-1) "KeyAgreement.class" (Pfad ist nicht relevant). Hinweis: die Dritte leere Zeile. Zeilenenden sind CRLF (Windows).
META-INF/4JCEJARS.SF Eintrag
ist der hash nicht in der Datei, aber diese drei oben genannten Zeilen.
Ich bin keine Kenntnis von einem solchen tool. Als Sie heraus fand, jarsigner funktioniert nur Unterschreiben-plus-hashing nicht hasing allein. Sollte nicht schwer sein, zu schreiben, wie "jarhash" - Werkzeug, obwohl. Ist es sicher nicht Java sein, natürlich. Mein test für die obige Antwort erfolgte mit anderen Befehl Linie Werkzeuge, d.h. unzip.exe, base64.exe, hex2bin.exe etc. Ein bisschen batch-scripting sollte den job tun, wie gut. Sind Sie sicher, dass Sie müssen eine Java-Lösung?
Richtig ist, brauche ich nicht ein Java-Lösung. Ja ich habe auch ein paar Kommandozeilen-tools, um zu überprüfen, wie der digest berechnet und zu sehen, wenn ich könnte berechnen den gleichen Wert leicht. Es sollte nicht zu kompliziert zu schreiben, ein 'jarhash" - tool. Vielen Dank!
haben Sie irgendwelche Fortschritte?
Ich habe versucht zu studieren, die Theorie dahinter auch, aber bevor ich könnte programmgesteuert es bekommen, ich habe stecken zu bleiben, auf "Schritt-2": kein problem bei der Berechnung einer gültigen sha1-hash für eine java-Klasse, dann kann ich aber nicht kommen mit einer entsprechenden gültigen Eintrag für die .sf-Datei. Immer wenn ich versuche zu berechnen, Hashwert für diese 3-Zeilen-oben (carriage ret. im Lieferumfang enthalten) bekomme ich ein "falsch" sha1-hash (im Vergleich zu dem aus der .sf-Datei in eine jar erstelle ich mit dem jar-Befehl und jarsigner). Weiß jemand, wie genau berechnen? Googeln rund fand ich, dass es scheinbar etwas unterschiedliche Meinungen, was genau zu hash!
InformationsquelleAutor mgaert
Überprüfung der Signatur fehl...
Warum?
JAR-Datei-Verifikation -> Überprüfen der Signatur des .SF-Datei selbst.
Ist, die überprüfung wird sichergestellt, dass die Signatur gespeichert, die in jeder Signatur block - (.DSA-Datei) war in der Tat erzeugt unter Verwendung des privaten Schlüssels entsprechend dem öffentlichen Schlüssel mit dem Zertifikat (oder Zertifikat-Kette) erscheint auch in der .DSA-Datei. Es wird auch sichergestellt, dass die Signatur gültig Signatur der entsprechenden Signatur (.SF-Datei), und damit die .SF-Datei nicht manipuliert wurde.
Weitere Infos
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jarsigner.html
InformationsquelleAutor Nik theGeeK