Come segno OpenSSL / Mozilla NSS RSA e verificare (funzioni PK11_Sign, PK11_Verify, PK11_VerifyRecover) lavoro?

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

Domanda

ho il mio RSA pubbliche e chiavi private (tutti p, q, e, n, d) in formato PEM. Sono curioso di sapere:

  • Come PK11_Sign(), PK11_Verify() e PK11_VerifyRecover() ( dalla libreria OpenSSL / Mozilla NSS ) lavoro con RSA?
  • Come l'imbottitura viene applicata al messaggio di input da firmare?

Il contesto della mia domanda è: ho visto PK11_Sign () aggiunge un po 'di imbottitura per i miei dati di input durante la firma. Ad esempio (data la dimensione della chiave è 162 bit):

my input = 31323334353036373839
padded input = 1FFFFFFFFFFFFFFFF0031323334353036373839

vorrei sapere:

  • Qual è il nome di questo sistema di imbottitura e indicazioni su come funziona?
  • Qual è lo schema imbottitura di default per quanto sopra funzioni OpenSSL menzionati? Per esempio, se mi esibisco "openssl rsautl -in input.txt -inkey mykey.pem -out signed.txt", quale schema di imbottitura sarà utilizzato?
È stato utile?

Soluzione

  • PK11_Sign ecc utilizza PKCS # 1 firme v.1.5, che comprende l'imbottitura si parla.

  • Lo schema di imbottitura è parte del algoritmo chiamato EMSA-PKCS1-v1_5-ENCODE. Io non credo che abbia un nome, anche se potrebbe essere informalmente chiamato "PKCS # 1 v.1.5 firma imbottitura". Essa è definita in PKCS # 1 di serie .

  • Secondo la documentazione il valore predefinito per openssl rsautl è quello di utilizzare PKCS # 1 firma v.1.5, che implica questa imbottitura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top