Wie funktionieren OpenSSL/Mozilla NSS RSA -Zeichen und verifizieren (PK11_SIGN, PK11_VERIFY, PK11_VERIFYRECOVER -Funktionen)?

StackOverflow https://stackoverflow.com/questions/4756018

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() und PK11_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?
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top