2017-10-11 12 views
2

Je travaille sur un cas d'utilisation où OpenPGP est utilisé pour générer une paire de clés publiques sur une carte à puce (Yubikey).Comment obtenir une clé publique à partir d'une carte à puce OpenPGP sans utiliser de serveurs de clés?

La carte à puce doit ensuite être expédiée à l'utilisateur. Essayer d'imiter ce localement ce qui suit est fait:

  1. générer des clés sur la carte à puce
  2. supprimer GnuPG répertoire
  3. accès carte à puce pour re-générer GnuPG répertoire

Le problème est que je ne peux pas tester le cryptage d'un fichier après que les étapes ci-dessus ont été effectuées que la clé publique semble être manquant. fetch ne semble pas fonctionner.

À ce stade, je ne souhaite pas partager la clé publique sur un serveur en ligne. Existe-t-il un moyen de récupérer la clé publique de la carte à puce après la suppression des porte-clés?

Voici les étapes suivies:

$ gpg --card-edit                                      

Reader ...........: 1050:0404:X:0 
Application ID ...: D2760001240102010006046314290000 
Version ..........: 2.1 
Manufacturer .....: Yubico 
Serial number ....: 04631429 
Name of cardholder: sm sm 
Language prefs ...: en 
Sex ..............: unspecified 
URL of public key : [not set] 
Login data .......: sm 
Signature PIN ....: not forced 
Key attributes ...: rsa4096 rsa4096 rsa4096 
Max. PIN lengths .: 127 127 127 
PIN retry counter : 3 0 3 
Signature counter : 0 
Signature key ....: 54D4 E469 7056 B390 AE72 CAA1 A507 3320 7876 0302 
     created ....: 2017-10-11 13:16:52 
Encryption key....: ADA3 2D7F 8D66 4F34 C04A 457C DFEB E3E4 A8F1 8611 
     created ....: 2017-10-11 11:14:18 
Authentication key: 18B9 7AB4 0723 46F4 C23A 3DD7 E5C0 6A93 049E F6A8 
     created ....: 2017-10-11 11:14:18 
General key info..: [none] 

gpg/card> admin 
Admin commands are allowed 

gpg/card> generate 
Make off-card backup of encryption key? (Y/n) n 

gpg: Note: keys are already stored on the card! 

Replace existing keys? (y/N) y 
What keysize do you want for the Signature key? (4096) 
What keysize do you want for the Encryption key? (4096) 
What keysize do you want for the Authentication key? (4096) 
Key is valid for? (0) 0 
Is this correct? (y/N) y 
Real name: john doe 
Email address: [email protected] 
Comment: 
You selected this USER-ID: 
    "john doe <<[email protected]>" 

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o 

gpg: /home/xxx/.gnupg/trustdb.gpg: trustdb created 
gpg: key 6825CB0EBDA94110 marked as ultimately trusted 
gpg: directory '/home/xxx/.gnupg/openpgp-revocs.d' created 
gpg: revocation certificate stored as '/home/xxx/.gnupg/openpgp-revocs.d/6858F119E93FB74BB561DE556825CB0EBDA94110.rev' 
public and secret key created and signed. 


gpg/card> list 

Reader ...........: 1050:0404:X:0 
Application ID ...: D2760001240102010006046314290000 
Version ..........: 2.1 
Manufacturer .....: Yubico 
Serial number ....: 04631429 
Name of cardholder: sm sm 
Language prefs ...: en 
Sex ..............: unspecified 
URL of public key : [not set] 
Login data .......: sm 
Signature PIN ....: not forced 
Key attributes ...: rsa4096 rsa4096 rsa4096 
Max. PIN lengths .: 127 127 127 
PIN retry counter : 3 0 3 
Signature counter : 4 
Signature key ....: 6858 F119 E93F B74B B561 DE55 6825 CB0E BDA9 4110 
     created ....: 2017-10-11 13:18:11 
Encryption key....: BE05 7FDF 9ACD 05F0 B75A 570F 4711 4B69 A622 C1DC 
     created ....: 2017-10-11 13:18:11 
Authentication key: 7275 2C47 B1EF BFB5 1E6D 0E65 31C7 7DBE 2D22 7E32 
     created ....: 2017-10-11 13:18:11 
General key info..: pub rsa4096/6825CB0EBDA94110 2017-10-11  john doe <<[email protected]> 
sec> rsa4096/6825CB0EBDA94110 created: 2017-10-11 expires: never  
           card-no: 0006 04631429 
ssb> rsa4096/31C77DBE2D227E32 created: 2017-10-11 expires: never  
           card-no: 0006 04631429 
ssb> rsa4096/47114B69A622C1DC created: 2017-10-11 expires: never  
           card-no: 0006 04631429 

gpg/card> quit 

$ rm -rf .gnupg/ 

$ gpg --card-status                                      
gpg: directory '/home/smalatho/.gnupg' created 
gpg: new configuration file '/home/smalatho/.gnupg/dirmngr.conf' created 
gpg: new configuration file '/home/smalatho/.gnupg/gpg.conf' created 
gpg: keybox '/home/smalatho/.gnupg/pubring.kbx' created 
Reader ...........: 1050:0404:X:0 
Application ID ...: D2760001240102010006046314290000 
Version ..........: 2.1 
Manufacturer .....: Yubico 
Serial number ....: 04631429 
Name of cardholder: sm sm 
Language prefs ...: en 
Sex ..............: unspecified 
URL of public key : [not set] 
Login data .......: sm 
Signature PIN ....: not forced 
Key attributes ...: rsa4096 rsa4096 rsa4096 
Max. PIN lengths .: 127 127 127 
PIN retry counter : 3 0 3 
Signature counter : 4 
Signature key ....: 6858 F119 E93F B74B B561 DE55 6825 CB0E BDA9 4110 
     created ....: 2017-10-11 13:18:11 
Encryption key....: BE05 7FDF 9ACD 05F0 B75A 570F 4711 4B69 A622 C1DC 
     created ....: 2017-10-11 13:18:11 
Authentication key: 7275 2C47 B1EF BFB5 1E6D 0E65 31C7 7DBE 2D22 7E32 
     created ....: 2017-10-11 13:18:11 
General key info..: [none] 

Répondre

1

Les cartes à puce OpenPGP ne stockent pas suffisamment d'informations pour reconstruire une clé publique OpenPGP complète. Vous devez importer la clé publique séparément - le partager sur un serveur de clés est une solution, mais vous pouvez également utiliser la clé et ensuite la tester à nouveau.

+0

Je suppose que le serveur de clés stocke alors les mêmes informations que le porte-clés public local? – Stelios

+1

En effet, les serveurs clés fournissent simplement des clés non validées/non vérifiées avec une recherche basée sur des ID ou des empreintes digitales (les clés longues et les empreintes digitales définissent une clé donnée avec très peu de collisions) ou des ID utilisateur (aucune vérification). pour 'president @ whitehouse.gov'). En ce sens, la clé téléchargée dans le référentiel est une notion encore plus forte, car elle permet une «confiance lors de la première utilisation» comme discuté ci-dessus. Peu importe de quelle manière vous récupérez une clé (à partir du référentiel, à partir d'un serveur de clés), vous devez toujours vérifier la clé. –

+0

Merci pour toute l'aide Jens. – Stelios

0

Il demande à l'utilisateur d'exporter manuellement la clé publique avant de supprimer le répertoire GNUPGHOME puis réimporter la clé publique dans la carte à puce.

$ gpg --armor --export [email protected] > public.asc 
$ rm -rf ~/.gnupg 
$ gpg --import public.asc