¿Cómo GnuPG cifra las claves secretas?

5

Al crear una clave secreta con GnuPG, se le solicita una contraseña para protegerla. ¿Qué algoritmo de cifrado se utiliza para lograr esto? El manual solo dice que se utiliza un algoritmo de cifrado simétrico.

    
pregunta moe1 01.04.2016 - 21:46
fuente

3 respuestas

7

GnuPG 2.x tiene un gpg-agent separado que es el custodio de las claves secretas y que no ofrece ningún control sobre los parámetros de encriptación de las claves secretas dentro.

Además, --s2k son aceptados pero ignorados al establecer una frase de contraseña o exportar una clave secreta.

Hay un problema en el rastreador de errores acerca de esto y, cuando se realiza un seguimiento en el lista de correo , la respuesta fue

  

No, eso no es posible. En este momento el agente siempre usa AES y S2K.   parámetros que requieren en la máquina en ejecución unos 100 ms para el descifrado.

Por lo tanto, creo que la situación actual es que el agente retiene las claves, ya que el agente decide que es mejor cumplir su objetivo de velocidad en la máquina en ejecución y no hay forma de controlarlo o exportar de forma diferente. Todas las exportaciones que he intentado dan como resultado atributos clave que se pueden ver de esta forma:

$ gpg --export-secret-key DEADBEEF | gpg --list-packets
iter+salt S2K, algo: 7, SHA1 protection, hash: 2, salt: ...

Esto revela la clave simétrica ( algo ) y el hashing (hash ) algoritmos en uso, como se define en RFC4880 . Lo anterior muestra que algo: 7 es AES con clave de 128 bits y hash: 2 es SHA-1 .

La etiqueta iter+salt es el modo string-to-key que GnuPG usa para convertir el frase de contraseña (cadena) en una clave. El valor predeterminado iter+salt significa que se agrega una sal a la frase de contraseña y que la cadena se revisa varias veces (una técnica llamada estiramiento de la tecla que tiene como objetivo aumentar la dificultad de las frases de contraseña de fuerza bruta).

Eso ilustra cómo GnuPG cifra las claves secretas y resalta el hecho de que no tienes control sobre ellas si estás usando la versión 2.x debido a su uso de gpg-agent .

    
respondido por el starfry 25.01.2017 - 10:47
fuente
5

Fase 1: Derivación de clave simétrica

Primero, la frase de contraseña se usa para derivar una clave para el cifrado simétrico usando una función cadena a tecla . Se pueden ajustar varias configuraciones en GnuPG considerando esto, como el algoritmo de hashing y el número de repeticiones. En el manual de GnuPG :

  

--s2k-digest-algo name

     

Use el nombre como el algoritmo de resumen utilizado para modificar las frases de contraseña de   cifrado simétrico. El valor predeterminado es SHA-1.

     

--s2k-mode n

     

Selecciona cómo se modifican las frases de contraseña para el cifrado simétrico. Si n es   0 una frase de contraseña simple (que en general no se recomienda) será   usado, un 1 agrega una sal (que no debe usarse) a la frase de contraseña y   un 3 (el valor predeterminado) itera todo el proceso varias veces (ver    --s2k-count ).

     

--s2k-count n

     

Especifique cuántas veces se modifican las frases de contraseña para simétrico   El cifrado se repite. Este valor puede oscilar entre 1024 y 65011712.   inclusivo. El valor predeterminado se solicita a gpg-agent. Tenga en cuenta que no todos   Los valores en el rango 1024-65011712 son legales y si un valor ilegal es   seleccionado, GnuPG se redondeará al valor legal más cercano. Esta opción   solo tiene sentido si --s2k-mode se establece en el valor predeterminado de 3.

Fase 2: cifrado simétrico

Usando esta clave simétrica, la clave privada se cifra simétricamente. También se puede elegir el algoritmo de cifrado, mientras que AES-128 es el predeterminado en GnuPG.

  

--s2k-cipher-algo name

     

Utilice el nombre como algoritmo de cifrado para el cifrado simétrico con un   frase de contraseña si --personal-cipher-preferences y --cipher-algo son   no dado. El valor predeterminado es AES-128.

Los cifrados admitidos se pueden mostrar ejecutando gpg --version , por ejemplo:

$ gpg --version
[...]
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256

A diferencia de los algoritmos de clave pública-privada (donde GnuPG 2.1 agregó curvas elípticas), los algoritmos simétricos compatibles son los mismos entre todas las versiones actuales de GnuPG.

Todas esas opciones también se pueden configurar en ~/.gnupg/gpg.conf , donde se anotan sin el prefijo -- .

    
respondido por el Jens Erat 01.04.2016 - 22:08
fuente
0

Según este artículo , puede elegir cuál cifrado para usar para el cifrado de datos (que supongo que incluye el cifrado de clave, ya que es solo un archivo, ¿verdad?) de la siguiente lista:

  

Cypher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128,           CAMELLIA192, CAMELLIA256

EDITAR:

Después de investigar un poco en las páginas de comando man y en google, puede cambiar la configuración predeterminada a través de una serie de configuraciones (consulte esta pregunta para obtener más información: ¿Cómo cambiar el cifrado predeterminado en GnuPG tanto en Linux como en Windows? )

No puedo encontrar nada que mencione específicamente el cifrado de claves privadas, por lo que asumo que solo usa lo que se establece como el cifrado simétrico predeterminado.

    
respondido por el Mike Ounsworth 01.04.2016 - 21:51
fuente

Lea otras preguntas en las etiquetas