Crea il backup Yubikey con chiavi PGP identiche

8

Recentemente ho acquistato due Yubikeys Neo che mi piacerebbe utilizzare principalmente per la crittografia e l'autenticazione utilizzando la funzionalità smartcard con GnuPG. Ho letto alcuni suggerimenti sull'argomento (in particolare qui e qui ) e sono riuscito a generare ed esportare in Yubikey un portachiavi con le 3 sottochiavi per la firma, la crittografia e l'autenticazione. Usando questi, sono stato in grado di crittografare un file usando la mia chiave pubblica che ho potuto decodificare solo collegando Yubikey. Grande.

Ora voglio duplicare questa configurazione sull'altro Yubikey per fungere da backup nel caso in cui perdo il mio dispositivo principale. Dato che il comando "keytocard" di gpg cancella le chiavi locali, ero in grado di esportare le stesse chiavi sull'altro Yubikey effettuando e ripristinando un backup della mia directory .gnupg (che non sembra corretto), e anche così, quando provo per decifrare il mio file di test, gpg chiede specificamente la chiave con un numero seriale e non decifrerà con la chiave di backup.

C'è un modo per utilizzare due diversi Yubikeys come backup come questo? In caso contrario, qual è il modo migliore per procedere? (che significa: tenere una chiave di backup che posso usare per decodificare i miei file nel caso in cui perdo la chiave principale).

    
posta Foaly 14.03.2018 - 17:43
fonte

4 risposte

3

Dopo molte prove ed errori, ho finalmente trovato un modo per raggiungere questo obiettivo. Ecco una risposta alla mia domanda nel caso in cui aiuti qualcuno:

Il trucco era di non provare ad esportare le stesse sottochiavi nei due Yubikeys (a gpg non piace) ma generare diverse sottochiavi. Nel mio portachiavi ho 6 sottochiavi: 3 per il principale Yubikey (Sign, Encrypt, Auth) e 3 per il backup Yubikey. Ho esportato le chiavi private corrispondenti agli Yubikeys, che questa volta non avevano bisogno dell'hack per ripristinare un backup di .gnupg . Infine, crittografo i miei file usando entrambi chiavi pubbliche, quindi posso decrittografarli con Yubikeys:

gpg -e -r [keyid1]! -r [keyid2]! [file]

Non dimenticare il punto esclamativo alla fine di ogni ID chiave. Altrimenti, per qualche motivo, gpg capirà che per ogni destinatario desideri "una chiave nello stesso portachiavi" e selezionerai la stessa chiave due volte per impostazione predefinita.

Ora gpg accetta la chiave privata per decodificare il file. Nel caso di Yubikeys, ti chiederà di collegare il primo, e se annulli, chiederà il secondo, quindi puoi usare uno dei due. Ho specificato la chiave principale nel primo -r , quindi gpg chiede direttamente il Yubikey principale e non mi disturba con quello di backup. Per semplificare le cose, ho ridimensionato l'intero comando gpg con entrambi i keyids a yk_encrypt .

    
risposta data 15.03.2018 - 19:46
fonte
3

Invece di eseguire il backup di un'intera directory, puoi esportare (creare una copia di backup della) chiave utilizzando ad es.

gpg -a -o seckey.asc --export-secret-key ABCD1234

e importalo di nuovo (dopo esserti trasferito sulla prima carta) con

gpg --import seckey.asc

GPG sta chiedendo la scheda specifica perché dopo aver spostato la chiave sulla scheda memorizza un tasto stub sul tuo sistema, che lega quella chiave a quella carta. Se elimini la chiave da gpg (ad es. Gpg --delete-secret-and-public-key ABCD1234) e il riferimento (uno di potenzialmente molti in ad esempio

C: \ users \ someUser \ AppData \ Roaming \ gnupg \ private-keys-v1.d o

/home/someUser/.gnupg/private-keys-v1.d

) quindi è possibile inserire il backup Yubikey e

gpg --card-status

per creare uno stub che faccia riferimento a quel tasto sul secondo Yubikey invece del primo.

potresti anche solo tenere la chiave esportata al sicuro e usarla come backup, ma non era quella la domanda posta.

    
risposta data 26.03.2018 - 19:57
fonte
2

ha trovato questo blurb che dice che esiste un comando che puoi eseguire e che essenzialmente dice all'app gpg locale di scansionare la nuova scheda e usarla invece se le cose si gelano. quindi, nel caso di utilizzare una scheda di backup, non è il caso peggiore per eseguire un "init" per farlo funzionare.

link

Running

gpg-connect-agent "scd serialno" "learn --force" /bye

will update the secret key stubs for the PGP keys on the currently inserted key. So running that after key insertion will cause gpg to use the currently inserted key.

    
risposta data 13.08.2018 - 02:09
fonte
0

È possibile.

  1. Genera le chiavi localmente nel tuo portachiavi. Ancora nessun Yubikey.
  2. Esporta le chiavi segrete (incluso il master e tutte le sottochiavi). (Ricorda la password che hai usato per crittografare le tue chiavi, poiché il blob esportato verrà crittografato con esso)
  3. Dopo aver esportato e archiviato le chiavi private in un posto sicuro, imposta una chiave per ogni chiave nel menu dei tasti di modifica.
  4. Rimuovi Yubikey 1, quindi inserisci il menu dei tasti di modifica del tasto appena spostato.
  5. Utilizza il comando grip per trovare le manopole di ciascun tasto.
  6. Troverai un file .key per ogni keygrip nella tua cartella ~/.gnupg/private-keys-v1.d/* ... eliminali, facendo attenzione a non cancellare altro (non vuoi cancellare le chiavi private per gli anelli non correlati)
  7. gpg2 --import delle chiavi private esportate che hai effettuato nel passaggio 2.
  8. Ora hai di nuovo le chiavi private nel tuo keyring locale. Inserisci yubikey 2 e ripeti il passaggio 3.
  9. Ora ecco la parte difficile da spiegare ... quei file di chiavi private keygrip.key in pratica dicono a gpg "questa chiave privata è in Yubikey con numero di serie xxxxx" quindi non puoi semplicemente scambiare le carte e usare o ... devi eseguire alcuni comandi tra lo swapping ... che va bene dato che probabilmente non cambierai e vuoi solo un secondo per un backup ... ma 2 anni dopo quando hai bisogno del tuo backup, potresti inciampare perché hai dimenticato questo piccolo problema. Un modo per farlo è cancellare tutte le chiavi private tramite il metodo keygrip che ti ho mostrato. Quindi esegui una volta gpg2 --card-edit e rileverà automaticamente + connetti la tua carta alle chiavi private dei pubkey nel tuo mazzo di chiavi (eliminando le keygrip non rimuove i pubkeys ...) o esegui gpg-connect-agent "scd serialno" "learn --force" /bye come MrTristan suggerisce di reimpostare la scheda seriale x informazioni sulla relazione sulla chiave privata.

Una volta che hai inserito una chiave privata in yubikey, non riesci a uscirne, quindi per qualcuno che hai già fatto è troppo tardi.

Inoltre, un grosso problema lampante con questo metodo: come fai a sapere che nessuno è keylogging + rubare il backup della tua chiave privata mentre lo stai facendo ...

Tuttavia, questo metodo è migliore della semplice memorizzazione di chiavi private sul disco. Poiché la superficie di attacco viene ridotta solo alla configurazione iniziale ... e ogni volta che è necessario estrarre il backup.

    
risposta data 18.10.2018 - 08:25
fonte

Leggi altre domande sui tag