Análisis de paquetes gpg2

2

Quiero mentalmente visualizar o simplemente entender una firma de gpg. Cuando se ejecuta

$ gpg2 --list-packets --verbose < test.sig

la salida es

# off=0 ctb=89 tag=2 hlen=3 plen=540
:signature packet: algo 1, keyid C109A1FD84E2C2E5
    version 4, created 1510595093, md5len 0, sigclass 0x00
    digest algo 8, begin of digest cd 94
    hashed subpkt 2 len 4 (sig created 2017-11-13)
    subpkt 16 len 8 (issuer key ID C109A1FD84E2C2E5)
    data: 6198169E372BE3023D812F6E7AB24E600C326D77D6F8E690CDE45027F402F20325DEA9FEE9D2E32E04F798F5DB8700F734D65972C150DDF2B8ADD823D00190A5C9722E39C699D45D237343C741D991B78476270D5C5FBD996F032671BCA20890B0B994B4997A500D3AFC8B7446EAE3FF4F66A32DF8ED8E0B7741E4DD17B15D265D19C13D7349CC09E1094381C2BAE20375454A3825C842CC1E968428ABB451AA1B26555F081CE9D3C3A4F0222F86BAD0597A61B2B2FC4846FF400F52D3C58C7E29B2379E6022FBF0FC4C539421F4445EA7C905ABD98380D1218D82EB1ABCB9756B4A5F45AC668499E1405C72BEB5D2BF4F732EF0129B4EFE90C4F4308C4C6B6883A1A44A4A03C355A1D50F8E6172BCEC5F3A0D95696A1481F02D98D68A4CB52DD70E24C3535E2BCEE1DCD4D39DCFD0185DB06CE7BDE45DF5A723FB309819C79F27FBE602C26443D5E68F73911233E71C62D03099CCEF94431B37E17197E45475849938BDD6486E91204D17FE2E56C20F2B083FF44F6B1F63E747B73AAC9E21AFB2C15BD345D3F79AAA6F058D6D1288136727390879509928D874DEA5E285C6952F74137173AC2454FAAC06AEE90F94EC812E449C8E5F09F3419A8BE6981CBF9FB5D4E2DD6424AC316A7EDAB3AE98B9BD8979BB85E97328E882803C8AA522630C4E19B583682BA9F0575DDE642BA2BA3B7FECBCFFEF99C95B2D322B7FFDC30D2D

¿Qué es data aquí? [Tiene 4095 bits de longitud. (Mi clave privada también tiene esta longitud.)]

¿Es data la firma real (sha256-hash)?

    
pregunta user1511417 14.11.2017 - 13:45
fuente

2 respuestas

3

Estás viendo un paquete de firma de la versión 4.

De RFC 4880 :

5.2.3.  Version 4 Signature Packet Format

   The body of a version 4 Signature packet contains:

     - One-octet version number (4).

     - One-octet signature type.

     - One-octet public-key algorithm.

     - One-octet hash algorithm.

     - Two-octet scalar octet count for following hashed subpacket data.
       Note that this is the length in octets of all of the hashed
       subpackets; a pointer incremented by this number will skip over
       the hashed subpackets.

     - Hashed subpacket data set (zero or more subpackets).

     - Two-octet scalar octet count for the following unhashed subpacket
       data.  Note that this is the length in octets of all of the
       unhashed subpackets; a pointer incremented by this number will
       skip over the unhashed subpackets.

     - Unhashed subpacket data set (zero or more subpackets).

     - Two-octet field holding the left 16 bits of the signed hash
       value.

     - One or more multiprecision integers comprising the signature.
       This portion is algorithm specific, as described above.

Arriba dice:

   Algorithm-Specific Fields for RSA signatures:

     - multiprecision integer (MPI) of RSA signature value m**d mod n.

Entonces, lo que estás viendo es, de hecho, el entero que denota la firma RSA (que, naturalmente, no puede ser más grande que tu clave, que es el módulo RSA).

    
respondido por el Arminius 14.11.2017 - 15:50
fuente
1

He leído la mayor parte de la sección "5.2. Paquete de firmas" de RFC 4880 , la RFC que especifica los datos Formato de PGP. No puedo citar nada que diga "finalmente, se agregaron los datos de la firma", pero se han explicado todas las demás cosas de su cita list-packets . Solo la parte de datos que no puedo encontrar, y no parece que se mencione dónde van los datos de la firma, por lo que este es el único lugar donde tiene sentido.

La entropía de los datos es muy alta, por lo que podría ser la salida de un algoritmo de cifrado. Calculé esto con el comando ent (asegúrese de descodificar el hexágono primero) y lo comparé con la entropía de 512 bytes de datos de /dev/urandom . Coincide perfectamente.

El algoritmo 1, que se menciona después del "paquete de firma" en la segunda línea, es RSA. Supongo que tendrías que ver cómo se utiliza RSA para generar datos de firma.

    
respondido por el Luc 14.11.2017 - 14:58
fuente

Lea otras preguntas en las etiquetas