¿Cómo obtener el número primo de una clave secreta en GnuPG?

2

Cuando uso GnuPG puedo obtener una clave secreta guardada como un archivo. Al abrir este archivo en un editor de texto, veo que la clave está codificada con base64. ¿Cómo puedo encontrar el número primo real de la clave secreta? Es decir, ¿cómo puedo pasar de, digamos una clave de 2048 bits al número primo?

Me gustaría ver un algoritmo que tome el archivo y dé el número primo.

También me gustaría saber cómo hacer que el archivo de clave secreta tenga un número primo real.

    
pregunta Thomas 30.03.2013 - 02:39
fuente

2 respuestas

4

Puede usar pgpdump para inspeccionar claves públicas y privadas. La opción "Dump integer" ( pgpdump -i ) mostrará los valores utilizados para la clave. Los valores utilizados para la clave privada ( p, d, q, u ) sin embargo, solo serán se muestra si la clave privada no está protegida por una frase de contraseña.

Ya que pgpdump solo funciona con claves blindadas ascii, primero tendrás que exportar tus claves.

    
respondido por el twobeers 30.03.2013 - 12:25
fuente
3

En primer lugar, es poco probable que una clave secreta en GnuPG sea un número primo. Para las claves RSA, la clave pública contiene dos enteros ( n y e ), mientras que la clave privada contiene cuatro enteros ( d , p , q y u , en la terminología de OpenPGP; p y q son primos y su producto es igual a n ). Para las claves ElGamal o DSA, la clave pública contiene tres o cuatro enteros ( p , q , g , y ) y la clave privada es un entero ( x ) que no es necesariamente primo (la primalidad de la clave privada de ElGamal no tiene importancia).

El formato real se describe en detalle en el estándar . Si implementa algún código para analizar archivos como se describe en este estándar, obtendrá toda la información que desee. Para acelerar el esfuerzo (un resultado más rápido, a costa de una menor comprensión, implementar un protocolo desde cero es una excelente manera de aprenderlo), es posible que desee utilizar algunas bibliotecas existentes que harán el análisis por usted. Por ejemplo, Bouncy Castle (en Java), o GnuPG (en C).

    
respondido por el Tom Leek 30.03.2013 - 20:50
fuente

Lea otras preguntas en las etiquetas