Génération de clés OpenPGP sur l’appareil#

(Nitrokey Pro 2 - Linux)

The following instructions explain the generation of OpenPGP keys directly on the Nitrokey. This is done by using the command line interface of GnuPG. Thus, you need to have GnuPG installed on your system. The newest GnuPG version for Windows can be found here and the newest version for MacOS can be found here. Users of Linux systems please install GnuPG with help of the package manager.

Note

Ces instructions sont basées sur GnuPG version 2.2.6 ou supérieure. Certaines distributions Linux ont une version plus ancienne installée. Dans ce cas, veuillez choisir une autre méthode comme indiqué ici ou installer une version plus récente si possible.

Génération de clés#

Les descriptions suivantes expliquent la génération de clés de base sur le périphérique via l’interface de ligne de commande de GnuPG. Le comportement par défaut est de générer des clés RSA de 2048 bits. Si vous souhaitez modifier l’algorithme et la longueur de la clé, consultez d’abord la section suivante.

Ouvrez une ligne de commande et tapez gpg2 --card-edit.

Pour ouvrir la ligne de commande de Windows, appuyez sur la touche Windows et sur la touche R. Tapez ensuite “cmd.exe” dans le champ de texte et appuyez sur la touche Entrée. Pour ouvrir un terminal sous macOS ou GNU/Linux, utilisez la recherche d’applications (par exemple Spotlight sous macOS).

> gpg2 --card-edit

Reader ...........: 20A0:4108:0000320E0000000000000000:0
Application ID ...: D27600012401020100050000320E0000
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000320E
Name of cardholder: [not set]
Language prefs ...: de
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 32 32 32
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

gpg/card>

Maintenant vous êtes dans l’interface interactive de GnuPG. Activez les commandes d’administration avec admin et utilisez generate ensuite pour lancer la génération des clés.

gpg/card> admin
Admin commands are allowed

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

Please note that the factory settings of the PINs are
   PIN = '123456'     Admin PIN = '12345678'
You should change them using the command --change-pin

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: Jane Doe
Email address: jane@example.com
Comment:
You selected this USER-ID:
"Jane Doe <jane@doecom>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
gpg: key 817E149CA002B92F marked as ultimately trusted
gpg: revocation certificate stored as '/home/nitrokey//.gnupg/openpgp-revocs.d/E62F445E8BB4B5085C031F5381
7E149CA002B92F.rev'
public and secret key created and signed.


gpg/card>
</jane@doe.com></n></n></n></n>

Veuillez ne pas créer la sauvegarde hors carte suggérée. Cette « sauvegarde » enregistre uniquement la clé de chiffrement, mais pas les clés de signature et d’authentification. En cas de perte de l’appareil, vous ne serez pas en mesure de restaurer l’ensemble des clés. D’une part, il ne s’agit donc pas d’une sauvegarde complète (utilisez ces instructions à la place, si vous en avez besoin) et d’autre part, vous risquez que quelqu’un d’autre puisse entrer en possession de votre clé de chiffrement. L’avantage de générer des clés sur l’appareil est de s’assurer que les clés sont stockées en toute sécurité. Par conséquent, nous recommandons d’ignorer cette demi-sauvegarde.

Vous disposez maintenant d’un jeu de clés complet sur votre appareil qui peut être utilisé pour les variantes applications listées sur notre site. Tapez quit et appuyez sur la touche entrée pour sortir.

Modifier les attributs clés#

Cette section porte sur la modification des attributs des clés. Si vous souhaitez utiliser les valeurs par défaut, vous pouvez passer à la section suivante.

Ouvrez une ligne de commande et tapez gpg2 --card-edit --expert.

> gpg2 --card-edit --expert

Reader ...........: 20A0:4108:0000320E0000000000000000:0
Application ID ...: D27600012401020100050000320E0000
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000320E
Name of cardholder: [not set]
Language prefs ...: de
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 32 32 32
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

Vous êtes maintenant dans l’interface interactive de GnuPG. Comme vous pouvez le voir dans le champ « Key attributes » ci-dessus, la valeur par défaut rsa2048 est définie. Pour les changer, activez les commandes d’administration avec admin et utilisez key-attr ensuite pour changer les attributs des clés.

gpg/card> admin
Admin commands are allowed

gpg/card> key-attr
Changing card key attribute for: Signature key
Please select what kind of key you want:
&nbsp;&nbsp; (1) RSA
&nbsp;&nbsp; (2) ECC
Your selection? 1
What keysize do you want? (2048) 4096
The card will now be re-configured to generate a key of 4096 bits
Changing card key attribute for: Encryption key
Please select what kind of key you want:
&nbsp;&nbsp; (1) RSA
&nbsp;&nbsp; (2) ECC
Your selection? 1
What keysize do you want? (2048) 4096
The card will now be re-configured to generate a key of 4096 bits
Changing card key attribute for: Authentication key
Please select what kind of key you want:
&nbsp;&nbsp; (1) RSA
&nbsp;&nbsp; (2) ECC
Your selection? 1
What keysize do you want? (2048) 4096
The card will now be re-configured to generate a key of 4096 bits

Vous pouvez choisir l’attribut de chaque clé (c’est-à-dire la signature, le chiffrement et la clé d’authentification). La plupart des gens utiliseront les mêmes attributs pour chaque clé. Tapez list pour voir les résultats (regardez le champ « Key attributes », qui indique maintenant rsa4096).

gpg/card> list

Reader ...........: 20A0:4108:0000320E0000000000000000:0
Application ID ...: D27600012401020100050000320E0000
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000320E
Name of cardholder: [not set]
Language prefs ...: de
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa4096 rsa4096 rsa4096
Max. PIN lengths .: 32 32 32
PIN retry counter : 3 0 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

Tapez quit et appuyez sur la touche entrée pour sortir ou passez directement à la section précédente pour générer réellement les clés avec les attributs de clé que vous venez de définir.

Le tableau suivant illustre quel algorithme peut être utilisé sur quel dispositif.

Début

Pro + Stockage

Pro 2 + Stockage 2

rsa1024

rsa2048

rsa3072

rsa4096

curve25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Exportation de la clé publique et utilisation du serveur de clés#

Bien que vous puissiez commencer à utiliser votre Nitrokey immédiatement après avoir généré les clés sur votre système, vous devez importer votre clé publique sur chaque système sur lequel vous souhaitez utiliser la Nitrokey. Pour être prêt, tu as donc deux options : Soit tu enregistres la clé publique où tu veux et tu l’utilises sur un autre système, soit tu enregistres la clé publique sur une page Web/un serveur de clés.

Génération d’un fichier de clé publique#

Pour obtenir un simple fichier de votre clé publique, vous pouvez simplement utiliser gpg2 --armor --export keyID > pubkey.asc. Utilisez soit l’empreinte digitale comme « keyID » (regardez gpg -K pour l’obtenir) ou utilisez simplement votre adresse email comme identifiant.

Vous pouvez emporter ce fichier avec vous ou l’envoyer à qui vous voulez. Ce fichier n’est pas du tout secret. Si tu veux utiliser la Nitrokey sur un autre système, tu dois d’abord importer cette clé publique via gpg2 --import pubkey.asc et ensuite taper gpg2 --card-status pour que le système sache où chercher cette clé. C’est tout.

Téléchargement de la clé publique#

Si vous ne voulez pas transporter un fichier de clé publique avec vous, vous pouvez le télécharger sur keyserver. Vous pouvez le faire en tapant gpg --keyserver search.keyserver.net --send-key keyID. Si vous utilisez une autre machine, vous pouvez simplement l’importer en utilisant gpg --keyserver search.keyserver.net --recv-key keyID.

Une autre possibilité est de modifier le paramètre URL de votre carte. Lancez à nouveau gpg -card-edit et définissez d’abord l’URL où se trouve la clé (par exemple sur le serveur de clés ou sur votre page web, etc.) via la commande url. A partir de maintenant, vous pouvez importer la clé sur un autre système en utilisant simplement la commande fetch dans l’environnement gpg --card-edit.