export-secret-key dopo aver collegato Yubikey

10

Ho un Yubikey Neo e gira GPGTools (GnuPG / MacGPG2 2.0.28) su OS X (10.11.2). Ho generato una chiave master con abilità SC e chiavi separate di firma e crittografia che ho spostato su Yubikey tramite il comando keytocard . Questi sono fatti su un computer offline separato.

Nel mio computer giorno per giorno, ho solo importato la mia chiave pubblica. Quando inserisco il mio Yubikey ed eseguo gpg --card-status , come previsto, mostra due sottochiavi segrete. Tuttavia, una volta rimosso Yubikey, posso eseguire gpg --list-secret-keys e mostrerà sia la mia firma che la crittografia delle sottochiavi segrete. Inoltre, posso gpg --export-secret-key e anche reimportarli, sebbene queste chiavi dei segreti non siano in grado di eseguire alcuna firma o decifrare alcun file (di nuovo, con Yubikey rimosso dal computer). Si tratta di un comportamento molto strano, in quanto sembra che il computer stia leggendo le chiavi private da Yubikey e lo memorizzi localmente (anche se queste chiavi private non sono valide).

Passaggi da riprodurre:

  1. Inizia con il portachiavi GPG vuoto, verifica per gpg --list-keys .
  2. Inserisci Yubikey con sottochiavi su di esso, verifica queste sottochiavi di gpg --card-status .
  3. Rimuovi Yubikey.
  4. Esegui gpg --list-secret-key e appariranno le sottochiavi da Yubikey.
  5. Puoi anche eseguire gpg --armor --export-secret-key <key> e verrà stampata una chiave privata (questa chiave privata non sembra essere in grado di eseguire alcuna azione).

Sto interpretando erroneamente qualsiasi informazione?

    
posta Andrew Henderson 15.12.2015 - 09:58
fonte

1 risposta

12

Dopo che le chiavi private sono su Yubikey, non sono esportabili. Quello che puoi esportare sono i stubs della chiave segreta, che praticamente dicono solo che questa chiave è su una smartcard. Erano il metodo principale per far funzionare la chiave su un altro computer (con la smartcard), ma in questi giorni, poiché vi sono sufficienti informazioni memorizzate sulla chiave, tutto ciò che serve è usare --card-status per recuperare lo stesso stub dalla chiave hardware e importa la chiave pubblica.

Puoi provare a vedere quali informazioni si trovano nello stub esportato con

% gpg --list-packets --verbose <exported-stub.bin

# off=1796 ctb=9d tag=7 hlen=3 plen=294
:secret sub key packet:
    version 4, algo 1, created NNNNNNNNN, expires 0
    pkey[0]: [2048 bits]
    pkey[1]: [17 bits]
    gnu-divert-to-card S2K, algo: 0, simple checksum, hash: 0
    serial-number:  <ELIDED>
    keyid: <KEYID>
# off=2093 ctb=89 tag=2 hlen=3 plen=293
:signature packet: algo 1, keyid <KEYID>
    version 4, created NNNNNNNNNN, md5len 0, sigclass 0x18
    digest algo 8, begin of digest 7c 79
    hashed subpkt 2 len 4 (sig created <YYYY-MM-DD>)
    hashed subpkt 27 len 1 (key flags: 20)
    hashed subpkt 9 len 4 (key expires after <TIME>)
    subpkt 16 len 8 (issuer key ID <KEYID>)
    data: [2048 bits]

Anche se sembra che la "sottocappa chiave segreta" abbia una pkey , ma la voce gnu-diver-to-card indica che non è presente alcuna chiave segreta. La firma è la firma della chiave, che garantisce che possa essere verificata con la chiave pubblica e non contenga la chiave privata.

Un altro suggerimento che tutto è sicuro che gpg non richiede una passphrase per esportare le chiavi segrete in questo caso.

Aggiornamento: confermato tramite la fonte che pkey si riferisce effettivamente alla chiave pubblica, non alla chiave privata - quelli sono chiamati skey s all'interno di gnupg. Un pacchetto contenente la password protetta da password sarà simile a:

off=557 ctb=9c tag=7 hlen=2 plen=134
:secret sub key packet:
    version 4, algo 22, created NNNNNNNNNN, expires 0
    pkey[0]: [80 bits] ed25519 (1.3.6.1.4.1.11591.15.1)
    pkey[1]: [263 bits]
    iter+salt S2K, algo: 7, SHA1 protection, hash: 2, salt: HHHHHHHHHHHHHHHH
    protect count: NNNNNNN (NNN)
    protect IV:  <IV>
 >> skey[2]: [v4 protected] <<
    keyid: <KEYID>

Quindi, in conclusione, la chiave privata è sicura, il contenuto crittografico non viene esportato come indicato sopra quando si utilizza una smartcard come Yubikey.

    
risposta data 15.12.2015 - 11:23
fonte

Leggi altre domande sui tag