¿En qué consiste una firma OpenPGP?

4

No entiendo cómo funcionan las firmas de OpenPGP. Tengo una foto que quiero firmar y un certificado digital que consta de mi nombre y dirección de correo electrónico y mi clave pública. Además, una firma digital (hash de la clave pública, nombre y dirección, cifrada con mi clave privada).

Este certificado se importa a mi sistema y se configura como confiable.

Ahora estoy firmando mi foto (estoy usando Kleopatra, pero eso no importa). Abro una foto y selecciono mi certificado. El programa genera un pequeño archivo picture.sig en la carpeta de destino. ¿Qué contiene este archivo? Lo que supongo es que contiene un hash de la imagen, que fue cifrada por la clave privada. Entonces, comparar el hash de la imagen y la firma descifrada mostrará si la imagen es lo que pensamos que es.

Pero el archivo .sig también debe contener el certificado completo, o tal vez una huella digital de él. ¿Qué contiene? ¿Cómo elige Kleopatra automáticamente el certificado correcto?

Además, si exporto este certificado, lo elimino del sistema y luego lo importo, será imposible verificar la integridad del archivo hasta que no firme este certificado importado por uno de mis propios certificados.

    
pregunta yanpas 27.01.2016 - 15:25
fuente

1 respuesta

3

Firmas OpenPGP

  

El programa envía un pequeño archivo picture.sig a la carpeta de destino. ¿Qué contiene este archivo?

     

[...]

     

Pero el archivo .sig también debe contener un certificado completo, o tal vez una huella digital del mismo. ¿Qué contiene? ¿Cómo elige Kleopatra automáticamente el certificado correcto?

Las firmas de OpenPGP pueden contener el documento original, o no. Parece que, Kleopatra creó una llamada firma separada sin el documento original (en la línea de comandos, esto se crea ejecutando gpg --detach --sign ).

Las firmas de OpenPGP se calculan en un hash del documento que se firmará. Técnicamente, una firma es el hash del documento cifrado mediante la clave privada , por lo que se puede descifrar con la clave pública. Dado que el descifrado produce el hashsum correcto, el archivo debe haber sido firmado por alguien con acceso a la clave privada (con suerte, el propietario de la clave). Recuerde, el cifrado normal funciona a la inversa: el mensaje (o, para ser más específico, una clave de sesión para el cifrado simétrico) se cifra mediante la clave pública, y solo se puede descifrar con la clave privada.

Además, las firmas de OpenPGP incluyen varios metadatos, entre ellos el ID de clave larga de la clave de firma (no la huella digital). El certificado completo / clave pública no se incluye, y debe ser recuperado (por ejemplo, de la red del servidor de claves) en función de esta ID cuando no esté disponible localmente.

Puede ver el contenido del archivo de firma usando los comandos gpg --list-packets y pgpdump , que ofrecen resultados similares. pgpdump muestra algunos detalles más cuando se usa junto con la opción -l (imprime datos literales, el mensaje original, si está disponible) y -i (imprime los números reales como resultado de las operaciones criptográficas). Un ejemplo para un archivo firmado con mi propia clave:

Old: Signature Packet(tag 2)(540 bytes)
    Ver 4 - new
    Sig type - Signature of a binary document(0x00).
    Pub alg - RSA Encrypt or Sign(pub 1)
    Hash alg - SHA1(hash 2)
    Hashed Sub: signature creation time(sub 2)(4 bytes)
        Time - Wed Jan 27 16:36:30 CET 2016
    Sub: issuer key ID(sub 16)(8 bytes)
        Key ID - 0x8E78E44DFB1B55E9
    Hash left 2 bytes - 7d 3c 
    RSA m^d mod n(4093 bits) - 18 1d d5 3f 6d f1 3e bb 93 08 8d 83 1a 3b a7 7a 70 56 f4 2c cb 92 cf a9 d1 f0 21 cd 7a f0 f8 5d 3e 75 46 d1 6a 14 56 27 a3 05 4a 6c 31 ee d4 8d 22 c6 d1 8a 41 6c 22 30 e4 90 19 1a 3f 18 ca 76 a3 1d d3 c1 f5 4a b7 54 9e 5f 83 dd 43 25 6b 80 66 65 34 36 80 4d 69 c7 fd 2a 3b 5b e8 a5 d8 c5 5a 26 a5 a8 19 b6 74 bc 47 69 e0 b7 a8 14 4b e7 51 5e e6 65 18 67 69 3e c8 5f 1b 78 8e f2 60 fa 15 a0 a0 be 7e 71 2f 68 19 07 af f7 d2 21 dc fb 3f f6 67 fd de eb ed c0 29 93 b7 59 5e 0a 35 1f 28 f4 89 51 43 a9 33 a9 f1 75 d6 6b 37 6b 3e a1 04 76 c5 43 b7 a8 05 3f 1a 08 b0 83 76 73 1e 61 78 e6 3b be 69 ca 60 93 5b e2 28 6c 53 65 63 ef 4b 06 df ce d4 81 47 ce 29 ea e3 06 a0 2a 13 30 98 00 8b 81 4d af 3d 5f 91 a0 26 e5 be 35 49 95 b3 7f 01 76 47 29 5e 8c 78 2b 22 c7 49 3a a1 b8 c5 48 ec 86 41 9b 34 65 a3 f1 3b f2 a4 8f 2c 2f 56 cd 72 86 42 7c 0d 08 51 8c 26 ee 91 1b 5a fc 6f 60 70 88 f8 d5 83 ea 89 c6 5c 13 0c 32 03 7b e2 82 50 77 f7 0d 2d 10 8c c9 95 05 b2 c7 99 ed 74 e4 46 75 95 00 6d d4 1b fc 4d 77 cf 7d f0 3f 1c 48 fa ab 8e 83 26 9c 09 e2 da e0 92 42 c6 8a df f6 3f 68 54 3a 02 49 d8 0a 1b 32 49 73 13 db 46 28 3a a1 aa 02 9a 9c cf 90 61 a5 ed 3f 7b 16 d3 64 1a cc 76 19 7e 84 62 ce 70 5a a7 cd be 40 28 72 f1 f0 16 7d fb 5a 84 69 d5 dc f9 f8 03 f7 5a ab a5 24 08 da a2 f3 14 1e e4 72 f9 62 72 d7 e0 52 07 b3 7c 1d 72 e5 6b 6f 43 9f 47 24 61 ab a3 c5 9a 6b c0 38 fb 8f 21 38 79 b5 2c 7f e8 1b 25 34 fd ce d5 2c e7 cd f8 57 43 b6 68 47 76 9e 03 70 f5 1e 30 21 83 12 bf fc d4 44 b9 dd 05 fc a0 2b f1 c0 56 3b 92 af 97 08 16 95 01 0d 12 c2 
        -> PKCS-1

Confianza

  

Además, si exporto este certificado, lo elimino del sistema y luego lo importo; será imposible verificar la integridad del archivo hasta que no firme este certificado importado por uno de mis propios certificados.

Este es otro tema que tiene en cuenta la confianza, y tiene que discriminar entre dos operaciones: verificar una firma (en términos de que la firma fue emitida por una clave de entrega y el documento no fue manipulado) en comparación con validándolo (si la clave es confiable, según las certificaciones). Tan pronto como la clave pública esté disponible, puede probar muy bien si la firma fue emitida por esta clave (con otras palabras, descifrar el hash con la clave pública y compararla), pero no necesariamente tiene la información requerida sobre si Para confiar en la llave o no. Una forma de hacerlo es comparando la huella digital de la clave con la otra parte y emitiendo una certificación.

    
respondido por el Jens Erat 27.01.2016 - 17:03
fuente

Lea otras preguntas en las etiquetas