Al generar un par de claves RSA de 4096 bits, ¿las claves privada y pública siempre tienen exactamente 4096 bits, por lo tanto no comienzan con un 0 en representación binaria?
Al generar un par de claves RSA de 4096 bits, ¿las claves privada y pública siempre tienen exactamente 4096 bits, por lo tanto no comienzan con un 0 en representación binaria?
Como preliminar, en RSA la clave pública es el par (N, e)
y la clave privada es d
. Como se ha dicho, el tamaño de bits del módulo N
es a lo que se refiere el 4096. N
solo forma parte de la clave pública, junto con e
. No hay ningún requisito para el tamaño de bit e
. El único requisito para el cifrado seguro en RSA es que la exponenciación del mensaje m
a la potencia e
"envuelve el módulo", es decir, m^e > N
. Así que en la práctica se han usado valores de e
tan pequeños como 3 (2 bits). El valor actual más común para e
es 65537 (17 bits), de hecho, la mayoría de los certificados SSL que usted ve tienen este valor, por ejemplo. google.com
El tamaño de bits de d
, la clave privada, no está establecido y puede variar mucho, ya que es simplemente el inverso multiplicativo de e
en el grupo phi(N)
donde phi es la función principal. En la mayoría de los casos, será mucho menor que 4096 bits.
4096 se refiere al módulo de n. La clave pública y la clave privada deben tener una longitud de bit "similar" para proporcionar la seguridad deseada. La elección de un valor significativamente menor para p o q permite la factorización de n (es decir, mediante el forzado brutal) y, por lo tanto, se puede utilizar para recuperar la clave secreta
En consecuencia, es necesario que ambos parámetros tengan la longitud mencionada.
Espere que aparezcan ceros en el MSB o LSB del BigInteger. (cualquier extremo de la salida binaria)
Escribí el código RSA en C # y tuve que dar cuenta de un cero inicial en BouncyCastle BigInteger y .NET Big Integer. Lo interesante de las dos bibliotecas es que una es Big Endian, la otra Little Endian.
Lea otras preguntas en las etiquetas rsa