Wie funktionieren OpenSSL/Mozilla NSS RSA -Zeichen und verifizieren (PK11_SIGN, PK11_VERIFY, PK11_VERIFYRECOVER -Funktionen)?
-
16-10-2019 - |
Frage
Ich habe meine RSA -öffentlichen und privaten Schlüssel (alle P, Q, E, N, D) im PEM -Format. Ich bin neugierig zu wissen:
- Wie
PK11_Sign()
,PK11_Verify()
undPK11_VerifyRecover()
(aus OpenSSL/Mozilla NSS -Bibliothek) Mit RSA arbeiten? - Wie wird die Polsterung auf die zu signierende Eingabenachricht angewendet?
Der Kontext meiner Frage lautet: Ich habe gesehen, dass PK11_SIGN () meine Eingabedaten während der Unterschrift etwas Polsterung hinzugefügt hat. Zum Beispiel (angesichts der Schlüsselgröße beträgt 162 Bit):
my input = 31323334353036373839 padded input = 1FFFFFFFFFFFFFFFF0031323334353036373839
Ich würde gerne wissen:
- Wie heißt dieses Padding -System und Hinweise darauf, wie es funktioniert?
- Was ist das Standardpolsterschema für die oben genannten OpenSSL -Funktionen? Zum Beispiel, wenn ich ausführe "
openssl rsautl -in input.txt -inkey mykey.pem -out signed.txt
", Welches Polsterprogramm wird verwendet?
Lösung
PK11_Sign
usw. verwendet PKCS#1 V.1.5 Signaturen, einschließlich der von Ihnen erwähnten Polsterung.Das Padding-Schema ist Teil des Algorithmus namens EMSA-PKCS1-V1_5 -Code. Ich glaube nicht, dass er einen Namen hat, obwohl es informell "PKCS#1 V.1.5 Signature Polsterding" genannt wird. Es ist definiert in der PKCS#1 Standard.
Entsprechend die Dokumentation die Standardeinstellung für
openssl rsautl
ist die Verwendung von PKCS#1 V.1.5 Signatur, was diese Polsterung impliziert.