OpenPGP-Schlüsselerzeugung auf dem Gerät#

Die folgende Anleitung erklärt die Erzeugung von OpenPGP-Schlüsseln direkt auf dem Nitrokey. Dies geschieht über die Kommandozeilenschnittstelle von GnuPG. Sie müssen also GnuPG auf Ihrem System installiert haben. Die neueste GnuPG-Version für Windows finden Sie hier und die neueste Version für MacOS finden Sie hier. Nutzer von Linux-Systemen installieren GnuPG bitte mit Hilfe des Paketmanagers.

Bemerkung

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.

Schlüsselerzeugung#

Die folgenden Beschreibungen erklären die grundlegende Schlüsselerzeugung auf dem Gerät über die Kommandozeilenschnittstelle von GnuPG. Das Standardverhalten ist die Erzeugung von RSA-Schlüsseln der Größe 2048 Bit. Wenn Sie den Schlüsselalgorithmus und die Schlüssellänge ändern wollen, schauen Sie sich zuerst den nächsten Abschnitt an.

Öffnen Sie eine Kommandozeile und geben Sie gpg2 --card-edit ein.

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>

Nun befinden Sie sich in der interaktiven Oberfläche von GnuPG. Aktivieren Sie die Admin-Befehle mit admin und verwenden Sie anschließend generate, um die Erzeugung der Schlüssel zu 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>

Bitte erstellen Sie nicht das vorgeschlagene Off-Card-Backup. Dieses „Backup“ speichert nur den Verschlüsselungsschlüssel, nicht aber die Signatur- und Authentifizierungsschlüssel. Im Falle eines Geräteverlustes können Sie nicht den gesamten Schlüsselsatz wiederherstellen. Es handelt sich also einerseits um kein vollständiges Backup (verwenden Sie stattdessen diese Anleitung, wenn Sie eines benötigen) und andererseits riskieren Sie, dass jemand anderes in den Besitz Ihres Schlüssels kommt. Der Vorteil der Schlüsselgenerierung auf dem Gerät besteht darin, dass die Schlüssel sicher gespeichert werden. Wir empfehlen daher, diese halbe Sicherung zu überspringen.

Jetzt haben Sie einen kompletten Schlüsselsatz auf Ihrem Gerät, der für die verschiedenen Anwendungen, die auf unserer Website aufgeführt sind, verwendet werden kann. Geben Sie quit ein und drücken Sie die Eingabetaste zum Beenden.

Schlüsselattribute ändern#

In diesem Abschnitt geht es um das Ändern der Tastenattribute. Wenn Sie die Standardwerte verwenden möchten, können Sie mit dem nächsten Abschnitt fortfahren.

Öffnen Sie eine Kommandozeile und geben Sie gpg2 --card-edit --expert ein.

> 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]

Nun befinden Sie sich in der interaktiven Oberfläche von GnuPG. Wie Sie im Feld „Schlüsselattribute“ oben sehen können, ist der Standardwert rsa2048 eingestellt. Um diese zu ändern, aktivieren Sie die Admin-Befehle mit admin und verwenden anschließend key-attr, um die Attribute der Schlüssel zu ändern.

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

Sie können das Attribut für jeden Schlüssel (d. h. Signatur-, Verschlüsselungs- und Authentifizierungsschlüssel) auswählen. Die meisten Leute werden die gleichen Attribute für jeden Schlüssel verwenden. Geben Sie list ein, um die Ergebnisse angezeigt zu bekommen (sehen Sie sich das Feld „Schlüsselattribute“ an, das jetzt rsa4096 lautet).

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]

Geben Sie quit ein und drücken Sie die Eingabetaste, um den Vorgang zu beenden, oder fahren Sie direkt mit dem vorherigen Abschnitt fort, um die Schlüssel mit den gerade eingestellten Schlüsselattributen tatsächlich zu erzeugen.

Die folgende Tabelle zeigt, welcher Algorithmus auf welchem Gerät verwendet werden kann.

Start

Pro + Storage

Pro 2 + Storage 2

rsa1024

rsa2048

rsa3072

rsa4096

Kurve25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Exportieren des öffentlichen Schlüssels und Keyserver-Verwendung#

Obwohl Sie Ihren Nitrokey sofort nach der Schlüsselerzeugung auf Ihrem System verwenden können, müssen Sie Ihren öffentlichen Schlüssel auf jedes System importieren, auf dem Sie den Nitrokey verwenden möchten. Um vorbereitet zu sein, haben Sie also zwei Möglichkeiten: Entweder Sie speichern den öffentlichen Schlüssel an einem beliebigen Ort und verwenden ihn auf einem anderen System oder Sie speichern den öffentlichen Schlüssel auf einer Webseite/Schlüsselserver.

Erzeugen einer Public-Key-Datei#

Um eine einfache Datei mit Ihrem öffentlichen Schlüssel zu erhalten, können Sie einfach gpg2 --armor --export keyID > pubkey.asc verwenden. Verwenden Sie entweder den Fingerabdruck als „keyID“ (schauen Sie sich gpg -K an, um ihn zu erhalten) oder verwenden Sie einfach Ihre E-Mail-Adresse als Bezeichner.

Sie können diese Datei mit sich führen oder an jeden senden, den Sie mögen. Diese Datei ist überhaupt nicht geheim. Wenn Sie den Nitrokey auf einem anderen System verwenden wollen, importieren Sie zunächst diesen öffentlichen Schlüssel über gpg2 --import pubkey.asc und geben dann gpg2 --card-status ein, damit das System weiß, wo es nach diesem Schlüssel suchen muss. Das war’s schon.

Hochladen des öffentlichen Schlüssels#

Wenn Sie eine öffentliche Schlüsseldatei nicht mit sich führen wollen, können Sie sie auf den Keyserver hochladen. Dies können Sie tun, indem Sie gpg --keyserver search.keyserver.net --send-key keyID eingeben. Wenn Sie einen anderen Rechner benutzen, können Sie es einfach importieren, indem Sie gpg --keyserver search.keyserver.net --recv-key keyID eingeben.

Eine andere Möglichkeit ist, die URL-Einstellung auf Ihrer Karte zu ändern. Starten Sie erneut gpg --card-edit und stellen Sie zunächst mit dem Befehl url die URL ein, unter der sich der Schlüssel befindet (z.B. auf dem Keyserver oder auf Ihrer Webseite etc.). Von nun an können Sie den Schlüssel auf einem anderen System importieren, indem Sie einfach den Befehl fetch innerhalb der gpg --card-edit Umgebung verwenden.