quale formato è bouncycastle opengpg chiave pubblica?

0

Sto usando bouncycastle per accedere alle mie chiavi pubbliche in gpg. Attualmente la chiave pubblica, quando letto in base64 mi dà questo:

    mQENBFh1kBcBCADMUkNW2qFgeRnornjhT3lt73wTGcO9rt+Ktr1tcopmOPTfNq3
    feZNFHRUsBt0Nnuj9+vSD2cwFRoZDNulhnBD8lAJYOD427uvV+KBDF/5pCQKh2S
    mDK8tJI/ncLIlX4SFa8F9f36FySglpkzA59IFtHdUBz9w+PJRqUQ5MVRzNHYBbv
    6aeIWwl46KrL3eibRgBDVuEOKAoesdb+xErs9cqg3KSVi01XBgr+XMSgOBz4J3f
    J4HdibsJdz1+113aKT++4LUSuuyeVbw3K/ZgMkrsyeJw84sHhF2kDu61atSUsQE
    nJwBF2sPA9V/i28fftxodgg5qbEs8egdsw/wxGzsfABEBAAG0K0NocmlzIFpoZW
    5nIChjemhlbmcpIDxjemhlbmdAYXRsYXNzaWFuLmNvbT6JATkEEwEIACMFAlh1k
    BcCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRARY82BslwTrMvtB/4t
    LoRH91p09vM1sSQ77RC+XwQqhhvN1BAeqGxqZpgCO6Ld5KRh8f4mFY8nXjDCSyy
    ydTBzIUp6aG0f+2EBhArtk/oU/pi8D4zHoeBkrl23/234s1kBI5F2g2kd6itwP8
    ekimaUyNFdPIN1dPwdxhuspOUtFNR+HsT3BT32v4Afd7sWVNTFrkapxTdxxZkVb
    +FS0wbuzFzB2gb8AvEGevzF/hQXOf3r8QzUQoEZ14pigNu/arlXzEuzXJXXT/AQ
    nAzbVENoFrhojxqEU7RxH8J4nao8OfpYfL7w3T7PC3nFFSTYSwvYItGkl9DPPiZ
    GWZTrb6VfpFGNLHwCoLOaf8ShsAIAAA==

Ho pensato che questa dovrebbe essere una chiave RSA di lunghezza 4096 ma è la lunghezza sbagliata. Quello che voglio veramente fare è usare questa chiave pubblica per verificare una firma. Qualcuno potrebbe essere in grado di far luce su quale formato questo sia?

    
posta zcaudate 05.02.2017 - 06:31
fonte

1 risposta

2

Questa è base64 (ma non completa 'armatura') di un blocco a chiave pubblica in OpenPGP ( rfc4880 et pred) formato utilizzato da GPG. A parte: non esiste una cosa come opengpg; PGP è stato il software originale di Phil Zimmerman e la società a cui l'ha affidato, OpenPGP è lo standard, e GNU Privacy Guard aka GnuPG aka GPG implementa quello standard, come anche BouncyCastle.

OpenPGP e quindi i blocchi chiave GPG includono molto più della semplice chiave crittografica; in particolare le chiavi pubbliche (inclusa questa) sono quasi sempre associate a un user-id e portano una o più firme - almeno una "auto-firma" della chiave o dei suoi genitori, e spesso firme da parte di altri utenti (fidati) per formare la 'rete di fiducia'. Vedi 11.1 nella RFC collegata per una panoramica.

Dopo aver convertito questo base64 in binario, gpg --list-packets lo decodifica come:

:public key packet:
        version 4, algo 1, created 1484099607, expires 0
        pkey[0]: [2048 bits]
        pkey[1]: [17 bits]
        keyid: 1163CD81B25C13AC
:user ID packet: "Chris Zheng (czheng) <[email protected]>"
:signature packet: algo 1, keyid 1163CD81B25C13AC
        version 4, created 1484099607, md5len 0, sigclass 0x13
        digest algo 8, begin of digest cb ed
        hashed subpkt 2 len 4 (sig created 2017-01-11)
        hashed subpkt 27 len 1 (key flags: 03)
        hashed subpkt 11 len 6 (pref-sym-algos: 9 8 7 3 2 1)
        hashed subpkt 21 len 5 (pref-hash-algos: 8 2 9 10 11)
        hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)
        hashed subpkt 30 len 1 (features: 01)
        hashed subpkt 23 len 1 (key server preferences: 80)
        subpkt 16 len 8 (issuer key ID 1163CD81B25C13AC)
        data: [2046 bits]
:trust packet: flag=00 sigcache=00

Come puoi vedere è una chiave RSA a 2048 bit, non a 4096 bit. Il algo in un pacchetto pubkey o un pacchetto di firme è la codifica di OpenPGP di un algoritmo pubkey e 1 è RSA, vedere la sezione 9.1.

Non sono sicuro di sapere come il formato aiuti a verificare una firma, ma è quello che hai chiesto.

    
risposta data 05.02.2017 - 08:15
fonte

Leggi altre domande sui tag