Preocupación con respecto al texto repetible en Git se compromete a reducir el espacio de nombres y debilitar la clave GPG

3

Necesito ayuda con dos problemas de PGP / GPG:

  1. Asegurarme de que mi pensamiento sea correcto (es decir, realmente necesito otra subclave GPG para mi escenario)
  2. Asegurarme de crear la subclave correctamente sin comprometer mis claves actuales (bonificación a cualquier crítica / sugerencia constructiva adicional de los datos expuestos).

GPG SUBKEY SCENARIO

Utilizo mi clave GPG para:

  1. Encriptar y / o firmar algunas conversaciones de correo electrónico
  2. firmando mis confirmaciones de Git

Ha habido algo que me ha molestado por un tiempo ahora con respecto al uso de la misma clave para ambos.

Como se señaló en la película de Alan Turing, "The Imitation Game" (2014), los mensajes codificados de Enigma se rompieron solo después de que el espacio de nombres se redujo drásticamente. La máquina que construyó Turing no pudo probar suficientes combinaciones antes de cambiar las cifras. Sin embargo, al reducir drásticamente el espacio de nombres, pudieron descifrar los mensajes.

La forma en que se redujo el espacio de nombres fue mediante la búsqueda de una frase conocida en cada mensaje codificado. De nuevo, refiriéndome a la película de Turing, si recuerdo correctamente, esta frase era "Heil Hitler" firmada al final de cada mensaje alemán.

El cifrado de un mensaje de correo electrónico no me preocupa, ya que los encabezados de correo electrónico típicos no forman parte del mensaje que se está cifrando. Sin embargo, si se observa la estructura interna de un Git commit, siempre contiene "árbol", "autor" y "comentarista". Y, a excepción de un compromiso, también siempre incluye "padre".

Además, podemos asumir que el "autor" y el "comentarista" a menudo serán los mismos. En el siguiente ejemplo "Glen Jarvis". Este es un ejemplo de un mensaje de confirmación firmado que he hecho recientemente (los mensajes de confirmación sin firma tenían la misma estructura que los mensajes de confirmación firmados; solo faltan la clave "gpgsig" y su siguiente valor de varias líneas):

    tree 29d37a46658eaeb764b587a105be5eabc2d6a641
    parent 45646279562c74461e7237104e9f335ac3054635
    author Glen Jarvis <[email protected]> 1500272497 -0700
    committer Glen Jarvis <[email protected]> 1500272497 -0700
    gpgsig -----BEGIN PGP SIGNATURE-----

     iQIcBAABAgAGBQJZbFd3AAoJEJF24vsEed5ckiEP/26n9kfkwx2i0z+hhlDTytYP
     qlFvHRgv4djOQCZkbDiRU5PS3G5dS9LQpVJ/bHrXLKfUPhB/pux64XEv+mTRqrk3
     ncgGt0sEWoIaZhHhY5Cyc+2MCoNgDCIxSexP7X5bvxRwO1cGeuJ4AfmcL/Fp+xRz
     vFaPINSZJMvXqJBFnnNFltFFSe4HRA+wloTLyk9zpJ7LnOKMHNbkPCxmf2dqBjmL
     ZEi9VFM9r0EYmXmZSF1KThCXy2dZDMPhRhe8VwPXQ8jXMSChhwSD+wFT79+xF/Fg
     hq2vpD9vkqcYUfucobNzz7T17Fr7ICuZvhGXxOwYk079p9SyPpN9U3VuqayEyV6O
     B49J8tcblu1XfrGh151Lhp6Fjr2TbKecnB2q/XgaH7MsaR99xt1UFaKVlMtbTn95
     vqTSieyG3IPSjp+17oXev83IHXMvIKCetx5r3D9vUrKd4HVPAzzjfDjSO99Smz2J
     2UKHep7da0SOpN/bn/x13CzYW9MCtN0FFAYogIuDu61HnlhOik+WqMm+uCvgmtzm
     0BdSEPAn9udvpAkHRcEd3a2JYABvheEjgDhqWLy9iL1Z+wKP9Sz5Mh9xYVI6AA8V
     Cs6vyYJqoS5GRGh0UNR26hafpCcIbXZLjXVkxWVzZGYqHpf+adBOiOmrtRF87Fz4
     3hgDVlhzTagHBw3HEmWD
     =juvL
     -----END PGP SIGNATURE-----

    Switch to Wheel format

Mi preocupación es que, al usar la misma clave GPG para firmar estos mensajes de confirmación y cifrar / firmar los mensajes de correo electrónico, estoy debilitando mi clave para que mis mensajes de correo electrónico puedan ser descifrados más fácilmente. Mis confirmaciones de Git están disponibles públicamente en GitHub. ¿Mi pensamiento es correcto?

CREANDO SUBKEY

Suponiendo que mi razonamiento anterior es correcto y esto es una preocupación, necesito ayuda para crear la subclave correcta. Puedo cifrar mis mensajes de correo electrónico con F27C . Y puedo firmar mis mensajes de confirmación con una subclave si puedo crearlos correctamente. Ya entiendo cómo configurar Git para elegir qué subclave usar en la firma.

Aquí hay una lista de mis claves públicas (algunas han caducado claramente, han sido rotadas con el tiempo y están aquí solo como referencia):

    $ gpg --list-keys [email protected]
    pub   rsa2048 2012-05-28 [SCEA]
          F27CA351FD010F450D2B1431DBCBDF2F36703FB2
    uid           [ unknown] Glen Jarvis (glenjarvis.com) <[email protected]>
    uid           [ unknown] [jpeg image of size 7125]
    sub   rsa4096 2016-06-05 [S] [expires: 2021-06-04]

    pub   rsa2048 2012-05-07 [SCEA]
          B560A0D698E1E0267AA81F7DACD3887417F3CCD7

    pub   dsa1024 2008-05-25 [SCA]
          8D6D27687BA839C9C88F4FE50B00116142CE11B6

    pub   dsa1024 2010-04-03 [SC]
          63A1BBC8DCC51CA5E7CA1A4889B35CEFA08FF5FD
    uid           [ unknown] Glen Jarvis <[email protected]>
    sub   elg1024 2010-04-03 [E]

También está disponible en Keybase

BONIFICACIÓN

Cualquier consejo no solicitado (de los datos expuestos en esta pregunta) también es bienvenido.

    
pregunta Glen Jarvis 21.08.2017 - 05:34
fuente

2 respuestas

2

TL; DR: No.

Cuando estás firmando tus confirmaciones, lo que estás haciendo es cifrar un hash sobre un texto con tu clave privada (lo que permite a otros descifrar esto con tu clave pública y comparar el hash con el hash que construyen sobre el mismo texto).

Debido a que las funciones hash criptográficamente seguras cambian significativamente en el resultado cuando las porciones pequeñas de la entrada cambian, la repetición de palabras en el texto sin formato firmado no es un problema.

Además, comparar la criptografía moderna con el enigma no es realmente razonable.

Incluso si encriptó el mismo texto en diferentes ocasiones, terminaría con diferentes encriptaciones. Esto se debe a que la criptografía moderna está diseñada para resistir los llamados ataques conocidos de texto simple (y cada encriptación es indistinguible de los datos aleatorios). Esto tiene algo que ver con los modos de operación de cifrado de bloque.

No estoy muy seguro de si ese es el valor predeterminado en GPG pero, por lo general, los sistemas criptográficos asimétricos como GPG en realidad usan encriptación híbrida: creas una clave aleatoria y la cifras con la clave pública del destinatario. Luego, el mensaje se cifra con un cifrado de bloque (como AES) en un buen modo de operación (como CBC, donde el resultado de cada bloque influye en el siguiente bloque) utilizando la clave creada al azar desde antes.

Por lo tanto, incluso el mismo mensaje exacto para el mismo destinatario no producirá el mismo texto cifrado, como en el enigma. Los mensajes parcialmente iguales tampoco son un problema.

Editar para obtener bonificaciones: las subclaves no son parte del protocolo OpenPGP y, por lo tanto, no son compatibles con todas las implementaciones de OpenPGP, así que prepárate para tener problemas cuando alguien no esté usando GPG pero PGP.

    
respondido por el Tobi Nary 21.08.2017 - 06:15
fuente
0

¡Me alegra que la película de Alan Touring te haya hecho pensar en el cifrado! Pero eso fue hace 70 años y la criptografía ha recorrido un largo camino desde entonces.

El tipo de ataque del que habla es un ataque de falsificación de firma digital . Ambos algoritmos de firma que estás utilizando, RSA y DSA son (hasta donde sé) completamente inmunes a este tipo de ataques de fuga de datos.

En este día y edad es bastante raro que un atacante descifre una clave privada; es mucho más fácil encontrar algún software sin parchear en su computadora portátil que tenga una vulnerabilidad conocida, piratear y copiar el archivo de clave privada;)

Para ser serio por un minuto, también debe considerar si vale la pena el tiempo y el esfuerzo para un atacante. ¿Poder falsificar su firma tiene alguna ventaja económica para ellos? Por ejemplo, ¿utiliza esa clave para firmar paquetes para apt o yum ?

    
respondido por el Mike Ounsworth 21.08.2017 - 06:12
fuente

Lea otras preguntas en las etiquetas