Un par de claves RSA consiste en lo siguiente:
- El módulo n , un entero grande que es igual al producto de dos enteros primos grandes, p y q .
- El exponente público e .
- El exponente privado d . d es tal que ed = 1 cuando se toma el módulo p-1 , y también cuando se toma el módulo q-1 .
- El primer factor p .
- El segundo factor q .
- El valor d p = d mod p-1 .
- El valor d q = d mod q-1 .
- El valor q '= q -1 mod p .
La clave pública contiene solo n y e .
La clave privada contiene todos los valores especificados anteriormente. Stricto sensu , solo se necesitan n y d para una implementación de RSA simple, pero los otros valores permiten una operación más rápida y también "enmascaramiento" (protección contra fugas de canal lateral), por lo que el RSA standard define que una clave privada contiene todos los valores (consulte apéndice A.1 ).
A partir del valor que tiene, asumiendo que su "m" es realmente el módulo RSA, los otros valores pueden volver a calcularse con algún esfuerzo (menos de un segundo de CPU, pero más tiempo humano del que deseo invertir) eso). De todos estos valores, podría codificar claves públicas y privadas RSA que cumplen con los estándares; pero esto requiere un cierto conocimiento de ASN.1 . Finalmente, una clave RSA de 512 bits es débil; use al menos 1024 bits, preferiblemente más (2048 bits deberían estar bien). Algunas implementaciones de RSA se negarán a trabajar con claves RSA de menos de 1024 bits.
Línea inferior: no genere la clave usted mismo; utilice OpenSSL . Con la herramienta de línea de comandos:
openssl genrsa -out rsakey.pem 2048
generará una clave privada de RSA de 2048 bits con toda la codificación adecuada; entonces esto:
openssl rsa -in rsakey.pem -pubout
imprimirá la clave pública , nuevamente con la codificación hecha.