2017-08-29 2 views
-1

Ich habe eine Datei mit folgendem Befehl unterzeichnet werden:Gibt es einen entsprechenden Befehl, um die sha256withRSA-Signatur von openssl zu berechnen?

$ openssl sha256 -sign privatekey.pem myfile.txt > right.result 

Gibt es einen entsprechenden Befehl das gleiche Ergebnis zu erhalten? Ich habe die folgende Methode ausprobiert (zuerst den sha256 Digest berechnen, dann den Digest unterschreiben). Aber es kann nicht funktionieren:

$ openssl sha256 -binary myfile.txt > my.digest 
$ openssl rsautl -sign -inkey privatekey.pem -in my.digest > wrong.result 

Der Inhalt "wrong.result" ist immer verschieden von "right.result". Kann mir jemand den Grund nennen? Vielen Dank!

+1

Dupe https://StackOverflow.com/Questions/38767660/multiple-openssl-rs-a-signing-methods-produce-different-results/38768455 und andere, die dort verlinkt sind –

Antwort

-1

Mit openssl sha256 -sign ... macht openssl den PKCS # 1 "SHA256withRSA" -Algorithmus, vollständig spezifiziert durch RFC-8017.

Dies bedeutet nicht einfach, einen SHA-256-Digest zu erstellen und ihn mit RSA zu signieren, wie Sie es im zweiten Teil Ihres Beispiels getan haben. Hier

Deshalb:

Nach dieser RFC muss die Signatur die gleiche Länge als die RSA-Modul hat. Ihr RSA-Modul ist 512 Bit lang (Standardwert unter Verwendung von openssl genrsa) oder mehr, sodass die berechnete Signatur eine Länge von 512 Bit (oder mehr) haben muss. Selbst wenn die Hash-Funktion (HMAC-SHA256) Werte von 256 Bit Länge zurückgibt.

Um also eine Signatur mit 512 Bits zu berechnen, benötigt RFC-8017 aus einem nur 256 Bit langen HMAC-SHA256 Digest das I2OSP Integer-zu-Octet-String Primitiv, das 2 Argumente benötigt: Ihre 256 Bits Hash und die Ganzzahl 512 (die Länge Ihres RSA-Moduls). I2OSP gibt eine Oktett-Zeichenfolge mit einer Länge von 512 Bit aus. Schließlich ist dies die Oktetts-Zeichenfolge, die mit Ihrem privaten RSA-Schlüssel verschlüsselt wird.

Sie haben diesen Zwischenwert für Integer-to-Octet-String jedoch nicht berechnet. Aus diesem Grund stimmen Ihre Signaturen nicht überein.

Verwandte Themen