cryptography - tutorial - pgp
GnuPG lĂmite de 4096 bits (4)
¿Por qué las claves RSA en GnuPG están limitadas a 4096 bits?
¿Sería ilegal para mí modificar la fuente para aumentar el tamaño máximo?
ssh-keygen no tiene esta limitación (por ejemplo, puedo crear una clave de 32768 bits de longitud). ¿Porqué es eso?
¿Por qué no soporta nada más grande? Tal vez en el momento del desarrollo de GnuPG (y el desarrollo continuo de RSA para el caso) y los tamaños clave, los límites informáticos en el momento, tanto para los casos de uso del lado del cliente como para el potencial de las agencias gubernamentales que pueden romper una clave 4096 , los desarrolladores y criptógrafos sentían que una clave 4096 era lo suficientemente grande. Realmente, 4096 es una clave muy grande y tomaría mucho tiempo romper con la tecnología actual. Si una agencia gubernamental lo persiguiera y realmente deseara recibir sus mensajes, ellos (en los EE. UU.) Obtendrían una orden judicial para poner un rootkit en sus máquinas para que ni siquiera se preocupen por romper el cifrado.
Ahora, no he mirado el código fuente específicamente, pero si cambia el tamaño de la clave a algo más grande que 4096, es posible que tenga problemas con otros usuarios que usan su clave si su software no admite un tamaño de clave mayor. Por ejemplo, tengo una clave 4096, un amigo mío no puede enviarme mensajes desde un dispositivo Android porque no puede encontrar una aplicación que admita nada más grande que 3072. Mantenlo en mente.
En keylength.com hay esto:
Para proteger una clave simétrica de 256 bits (por ejemplo, AES-256), puede considerar usar como mínimo un sistema asimétrico de 17120 bits (por ejemplo, RSA).
El límite de 4096 bits se puede aumentar como se describe en un breve artículo titulado " Generar claves grandes con GnuPG ", que se reproduce a continuación. Esto se hizo para el paquete gnupg en homebrew para permitir claves de 8192 bits: PR 4201 . Una advertencia sobre la asignación de memoria para las claves más grandes: comp.security.pgp.tech .
Generar teclas grandes con GnuPG | David norman
Si desea generar claves más grandes que 4096 bits con GnuPG, puede compilar una nueva versión que aumente el límite superior de 4096. Probablemente se encontrará generándolo como RSA. Descargue el parche en su directorio gnupg-1.4.19 sin tarar y aplíquelo con:
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ patch -p0 < gnupg_1.4.19_large_keygen.patch
patching file g10/keygen.c
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ ./configure --enable-large-secmem
[...]
checking whether to allocate extra secure memory... yes
[...]
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ make -j2
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ make check
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ sudo make install
usbdrive@sandisk-extreme64:~/gnupg-1.4.19$ gpg --gen-key --enable-large-rsa
Sin el indicador --enable-large-rsa, el proceso de generación de claves degradará automáticamente la clave a 4096.
Para compilar en una Mac, primero deberá descargar Xcode de la App Store. El parche aumenta el límite superior del tamaño de la clave a 15489 bits. Sin aumentar el límite de memoria segura, la generación de una clave mayor de aproximadamente 7680 bits fallará porque no podrá asignar suficiente memoria al proceso. Generar claves más grandes que alrededor de 7680 bits (equivalente simétrico de 192 bits) también puede hacer que sea imposible descifrar mensajes con límites de memoria segura estándar establecidos en tiempo de compilación porque el binario gpg no podrá asignar suficiente memoria segura para descifrar el mensaje , incluso los pequeños.
gnupg_1.4.19_xlarge_key_gen.patch
--- g10/keygen.c 2015-02-26 12:24:21.000000000 -0500
+++ g10/keygen.c 2015-03-02 22:12:09.028419377 -0500
@@ -1041,8 +1041,9 @@
nbits = 2048;
log_info(_("keysize invalid; using %u bits/n"), nbits );
}
- else if (nbits > 4096) {
- nbits = 4096;
+ else if (nbits > 15489) {
+ /* fallback to RFC3766 256-bit symmetric equivalency */
+ nbits = 15489;
log_info(_("keysize invalid; using %u bits/n"), nbits );
}
@@ -1251,7 +1252,8 @@
PKT_public_key *pk;
MPI skey[6];
MPI *factors;
- const unsigned maxsize = (opt.flags.large_rsa ? 8192 : 4096);
+ /* New large key limit RFC3766 256-bit symmetric equivalency */
+ const unsigned maxsize = (opt.flags.large_rsa ? 15489 : 4096);
assert( is_RSA(algo) );
@@ -1578,7 +1580,7 @@
static unsigned int
ask_keysize (int algo, unsigned int primary_keysize)
{
- unsigned nbits, min, def=2048, max=4096;
+ unsigned nbits, min, def=2048, max=15489;
int for_subkey = !!primary_keysize;
int autocomp = 0;
gnupg_1.4.19_xlarge_secmem.patch
--- configure 2015-02-27 03:37:52.000000000 -0500
+++ configure 2015-03-02 22:28:31.488401783 -0500
@@ -5076,7 +5076,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $large_secmem" >&5
$as_echo "$large_secmem" >&6; }
if test "$large_secmem" = yes ; then
- SECMEM_BUFFER_SIZE=65536
+ SECMEM_BUFFER_SIZE=131072
else
SECMEM_BUFFER_SIZE=32768
fi
Artículo finaliza. Obtenido el 2016-02-26 de una copia archivada del original .
Hay una explicación bastante sensata (para una pregunta similar) de Fire Ant en los foros de seguridad:
http://www.security-forums.com/viewtopic.php?p=317962#317962
Todos los derechos reservados allí, pero la cita de uso justo del extracto corto no debería ser un método inapropiado:
Los tamaños de clave superiores a 4096 no se admiten actualmente en GPG. La razón de esto es que las 8192 teclas son muy lentas. Si necesita una clave de más de 4096 bits, ¿debería realmente pensar en qué está utilizando esa clave?
Si desea modificar el código fuente, puede hacerlo fácilmente en Debian Linux con este script: Elevar los límites de tamaño de las claves de GnuPG y crear los archivos .conf ideales.
Aquí hay un enlace a un script de bash que aumenta el límite de tamaño de la clave GnuPG más allá de 4096 bits. La página también proporciona un archivo .conf ideal para GnuPG. https://gist.github.com/anonymous/3d928a0bcbb3ed92c454
Por favor, proporcione información y cambios recomendados.