Cómo OpenSSL / Mozilla NSS RSA signo y verificar (funciones PK11_Sign, PK11_Verify, PK11_VerifyRecover) de trabajo?

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

Pregunta

tengo mi público RSA y claves privadas (todos p, q, e, n, d) en formato PEM. Tengo curiosidad por saber:

  • ¿Cómo PK11_Sign(), PK11_Verify() y PK11_VerifyRecover() ( de la biblioteca OpenSSL / Mozilla NSS ) de trabajo con RSA?
  • ¿Cómo se aplica el relleno para el mensaje de entrada que se firmó?

El contexto de mi pregunta es: He visto PK11_Sign () añade un poco de acolchado a mis datos de entrada durante la firma. Por ejemplo (dado el tamaño de la clave es de 162 bits):

my input = 31323334353036373839
padded input = 1FFFFFFFFFFFFFFFF0031323334353036373839

Me gustaría saber:

  • ¿Cuál es el nombre de este esquema de relleno y punteros sobre cómo funciona?
  • ¿Cuál es el esquema de relleno por defecto de los anteriores funciones OpenSSL mencionados? Por ejemplo, si realizo "openssl rsautl -in input.txt -inkey mykey.pem -out signed.txt", que esquema de relleno se utilizará?
¿Fue útil?

Solución

  • PK11_Sign etc. utiliza firmas PKCS # 1 v.1.5, que incluye el relleno que usted menciona.

  • El esquema de relleno es parte del algoritmo llamado EMSA-PKCS1-v1_5-ENCODE. No creemos que tiene un nombre, aunque podría ser informalmente llamado "PKCS # 1 v.1.5 firma relleno". Se define en el estándar PKCS # 1 .

  • De acuerdo con la documentación el valor predeterminado para openssl rsautl es para uso PKCS # 1 v.1.5 firma, lo que implica este relleno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top