OpenPGP-sleutelgeneratie op apparaat#

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.

Notitie

These instructions are based on GnuPG version 2.2.6 or higher. Some Linux Distributions have an older version installed. In this case please choose a different method as listed here or install a newer version if possible.

Sleutel generatie#

De volgende beschrijvingen verklaren de basis sleutelgeneratie op het apparaat via de commandoregelinterface van GnuPG. Het standaard gedrag is het genereren van RSA sleutels van 2048 bit grootte. Als u het sleutelalgoritme en de sleutellengte wilt veranderen, kijk dan eerst naar de volgende sectie.

Open een opdrachtregel en typ gpg2 --card-edit.

To open the Windows command line please push the Windows-key and R-key. Now type ‘cmd.exe’ in the text field and hit enter. To open a Terminal on macOS or GNU/Linux please use the application search (e.g. spotlight on 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>

Nu bent u in de interactieve interface van GnuPG. Activeer de admin commando’s met admin en gebruik daarna generate om het genereren van sleutels te starten.

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>

Maak niet de voorgestelde off-card backup. Deze “backup” slaat alleen de encryptie sleutel op, maar niet de handtekening en authenticatie sleutels. In geval van verlies van het apparaat, zult u niet in staat zijn om de hele sleutelset te herstellen. Dus enerzijds is het geen volledige backup (gebruik deze instructies in plaats daarvan, als u er een nodig hebt) en anderzijds loopt u het risico dat iemand anders in het bezit van uw encryptie-sleutel kan komen. Het voordeel van het genereren van sleutels op het apparaat is dat u er zeker van bent dat de sleutels veilig worden opgeslagen. Daarom raden wij aan om deze halve back-up over te slaan.

Nu hebt u een complete sleutelset op uw toestel die kan worden gebruikt voor de verschillende toepassingen die op onze site worden vermeld. Typ quit en druk op enter om af te sluiten.

Wijzig Hoofdkenmerken#

Deze sectie gaat over het veranderen van de sleutelattributen. Als u de standaardwaarden wilt gebruiken, kunt u verder gaan met de volgende sectie.

Open een opdrachtregel en typ 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]

U bent nu in de interactieve interface van GnuPG. Zoals u kunt zien in het “Sleutel attributen” veld hierboven, is de standaard waarde rsa2048 ingesteld. Om deze te wijzigen, activeert u de admin commando’s met admin en gebruikt u key-attr om daarna de attributen van de sleutels te wijzigen.

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

U kunt het attribuut voor elke sleutel kiezen (dat wil zeggen, handtekening, encryptie en authenticatie sleutel). De meeste mensen zullen dezelfde attributen gebruiken voor elke sleutel. Typ list om de resultaten te zien (kijk naar het “Sleutelattributen” veld, dat nu rsa4096 aangeeft).

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]

Typ quit en druk op enter om af te sluiten of ga direct verder met de vorige sectie om de sleutels daadwerkelijk te genereren met de sleutelattributen die u zojuist hebt ingesteld.

De volgende tabel illustreert welk algoritme op welk apparaat kan worden gebruikt.

Start

Pro + Storage

Pro 2 + Storage 2

RSA1024

RSA2048

rsa3072

RSA4096

curve25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Exporteren van publieke sleutel en Keyserver-gebruik#

Hoewel u uw Nitrokey meteen kunt gebruiken nadat u de sleutels op uw systeem hebt gegenereerd, moet u uw publieke sleutel importeren op elk systeem waarop u de Nitrokey wilt gebruiken. Dus om voorbereid te zijn heb je twee opties: Of u slaat de publieke sleutel op waar u maar wilt en gebruikt deze op een ander systeem, of u slaat de publieke sleutel op een webpagina/sleutelserver op.

Een bestand met openbare sleutels genereren#

Om een eenvoudig bestand van uw publieke sleutel te krijgen, kunt u gewoon gpg2 --armor --export keyID > pubkey.asc gebruiken. Gebruik ofwel de vingerafdruk als “keyID” (kijk naar gpg -K om het te krijgen) of gebruik gewoon uw email adres als identifier.

U kunt dit bestand bij u dragen of opsturen naar wie u maar wilt. Dit bestand is helemaal niet geheim. Als je de Nitrokey op een ander systeem wilt gebruiken, importeer je eerst deze publieke sleutel via gpg2 --import pubkey.asc en typt dan gpg2 --card-status, zodat het systeem weet waar het deze sleutel moet zoeken. Dat is alles.

De openbare sleutel uploaden#

Als u geen publiek sleutelbestand bij u wilt dragen, kunt u het uploaden naar de keyserver. U kunt dit doen door gpg --keyserver search.keyserver.net --send-key keyID te typen. Als u een andere machine gebruikt, kunt u het gewoon importeren door gpg --keyserver search.keyserver.net --recv-key keyID te gebruiken.

Another possibility is to change the URL setting on your card. Start gpg –card-edit again and first set the URL where the key is situated (e.g. on the keyserver or on your webpage etc.) via the url command. From now on you can import the key on another system by just using the fetch command within the gpg --card-edit environment.