Cómo OpenSSL / Mozilla NSS RSA signo y verificar (funciones PK11_Sign, PK11_Verify, PK11_VerifyRecover) de trabajo?
-
16-10-2019 - |
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()
yPK11_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á?
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.