C'è un modo per dire a GPG che, se ha bisogno di decodificare qualcosa, può trovare la chiave di crittografia privata su una delle due smart card?
La mia configurazione (semplificata) è la seguente:
- Generata una chiave master offline con una sottochiave di crittografia.
- Trasferito la sottochiave di crittografia su Yubikey 1.
- Su Yubikey 1, generato l'autenticazione e firma le sottochiavi.
- Trasferito la sottochiave di crittografia su Yubikey 2.
- Su Yubikey 2, generato auth e firma sottochiavi.
Quindi mi rimane:
gpg2 --list-keys
/Users/scott/.gnupg/pubring.gpg
-------------------------------
pub 3072R/600955C7 2016-09-09
uid [ultimate] Scott Cariss
uid [ultimate] Scott Cariss (msn.com)
uid [ultimate] Scott Cariss (bigfish.co.uk)
uid [ultimate] [jpeg image of size 12378]
sub 2048R/6FE6415F 2016-09-09
sub 2048R/D6DBBCAC 2016-09-09
sub 2048R/01A208C9 2016-09-09
sub 2048R/8D2A1368 2016-10-23
sub 2048R/65B08C5B 2016-10-23
La mia sottochiave di crittografia è condivisa tra le smart card e dispone di singole chiavi di autenticazione e firma su ciascuna smart card.
Ma quando decrypt qualcosa va sempre alla prima smart card e non troverà la chiave di crittografia sull'altra smart card. La voce gpg-agent / pin mi chiederà solo di inserire la smart card corretta.
UPDATE (soluzione alternativa)
Come già risposto, non è qualcosa che supporta GPG ma ho trovato una soluzione funzionante che funziona per me.
Su Mac OS XI usa link per rilevare l'arrivo di una delle mie smart card (yubikeys) e falla eseguire uno script :
#!/bin/bash
{
killall -9 ssh-agent gpg-agent
for keystub in $(/usr/local/MacGPG2/bin/gpg2 --with-keygrip --list-secret-keys {{EMAIL ADDRESS}} | grep Keygrip | awk '{print $3}'); do rm /Users/{{USERNAME}}/.gnupg/private-keys-v1.d/$keystub.key; done;
/usr/local/MacGPG2/bin/gpg2 --card-status
eval $(/usr/local/MacGPG2/bin/gpgconf --launch gpg-agent)
ssh-add -l
} &> /Users/{{USERNAME}}/bin/gpg-card-change-log.txt
exit 0
Poiché le chiavi segrete sono tutte mantenute offline, non c'è nulla di male nell'eliminarle e quindi eseguire --card-status
che porta gli stub delle chiavi segrete dalla smart card attualmente collegata.