¿Qué hace realmente "revocar" una clave?

13

Actualmente estoy cifrando cierta información personal usando gpg ( gpgdir en realidad). Tengo una copia de mi clave privada impresa en una hoja de papel en forma de una matriz de datos para que no pierda la copia digital de mi clave privada.

Sin embargo, al leer sobre las mejores prácticas de cifrado, a menudo me he topado con la noción de "revocar" mi clave. En gpg , puedo generar una clave de revocación usando gpg --gen-revoke KEY , que luego se puede usar para "revocar" mi clave.

¿Pero qué significa eso realmente? ¿Y para qué sirve? He encontrado una gran cantidad de información en línea sobre cómo para revocar mi clave y generar claves de revocación, pero ninguna sobre lo que realmente sucede cuando "revoco" mi clave.

¿Es esta funcionalidad útil si soy el único usuario previsto de los datos cifrados?

    
pregunta quant 01.01.2016 - 13:36
fuente

2 respuestas

7

Piense en revocar una clave como un comentario agregado al archivo de claves. Este comentario, si está presente, le dirá a otros usuarios de tu clave (alguien que te envía correos electrónicos en gpg cifrados, por ejemplo) que la clave ha sido revocada y que no deberían usarla.

Revocar una clave solo es útil cuando la envía a servidores clave, para que otros sepan que está revocada.

    
respondido por el WayToDoor 01.01.2016 - 13:43
fuente
3

Gnupg es de código abierto (¡sí!) y, por lo tanto, puede consultarse qué sucede. Cuando creas un certificado de revocación para una clave, es decir, a través de 'gpg --gen-revocar nombre "

se mueve internamente a través de las siguientes funciones / pasos clave

  1. main() en gpg.c (la herramienta de línea de comando gpg) se llama, luego
  2. los parámetros se analizaron y luego gen_revoce( const char *uname) en revoce.c se llama,
  3. dentro, luego recupera la clave secreta y pública para la uname
  4. luego llama a make_keysig_packet en sign.c como este
        rc = make_keysig_packet( &sig, pk, NULL, NULL, sk, 0x20, 0,
                                  opt.force_v4_certs?4:0, 0, 0,
                                  revocation_reason_build_cb, reason );
    
    con el par de llaves (public pk y secret sk ) y proporciona además un puntero de función a revocation_reason_build_cb y una cadena con la revocación reason ).
  5. internamente, make_keysig_packet luego usa un hash_algo para crear un md de resumen de mensaje, que finalmente se proporciona a complete_sig( sig, sk, md ); que internamente va a do_sign y usa cifrado asimétrico en el md .
  6. se crea el certificado de revocación creado (que es una especie de tipo firmado con el mensaje de clave privada / secreto).

Luego, en este certificado proporcionado a un servidor de claves, esto permitirá (como @WayToDoor) redactar el comentario a la clave en el servidor.

Solo la persona en posesión de la clave privada secreta puede firmar los mensajes que deben verificarse con la clave pública y, por lo tanto, una revocación es un "envío de un mensaje firmado de clave privada, hash del mensaje generado y cifrado asimétricamente". .

Mi opinión sobre lo que sigue es que, una vez revocada, el par de llaves se quema (no vale la pena).

Por lo tanto, sería inteligente haber utilizado una subclave para una clave de cifrado maestra más segura (con espacio de aire), lo que permite la reemisión de una nueva subclave de trabajo para reemplazar la clave revocada, sin la necesidad de un canal seguro verificar la clave pública de el nuevo subkey-keypair.

    
respondido por el humanityANDpeace 22.01.2016 - 11:55
fuente

Lea otras preguntas en las etiquetas