nitrokey:linuxmint:pro

Dies ist eine alte Version des Dokuments!


Nitrokey Pro in der Praxis unter Linux Mint 20

Bild: Nitrokey Pro USB-Stick In diesem Kapitel befassen wir uns eingehend mit dem Nitrokey Pro unter Linux Mint 20 insbesondere beim NitroPad X230 ein. Neben der verbesserten Absicherung von Login mit Einmalpasswörtern können eMails mit Hilfe von asymmetrischen Schlüsselmaterials (PGP und S/MIME) auch Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. Hierzu verwenden wir den Nitrokey Pro welcher hier für einen überschaubaren Betrag von nicht einmal 50€ erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Besonderheiten bei der Verwendung unter Linux Mint 20 ein.

Der Nitrokey Pro Cryptostick vereint in einem kleinen Plastikgehäuse einen Kartenleser mit zugehöriger manipulationssicheren OpenPGP Chipkarte, einem zu 100% Open Source und Open Hardware Device. Wie schon erwähnt wird das geheime Schlüsselmaterial (RSA 2048-4096 Bit, ECC 256-512 Bit) im manipulations- und PIN-geschützten integrierten Chipkarte gespeichert und somit bestens gegen Schadcode oder Verlust bzw. Diebstahl und gegen Hardware-Angriffe geschützt.

Anwendungsfälle und Einsatzszenarien:

  • Sicheres Login
    Einmalpassworte können zur Zweitauthentisierung bei vielen Webanwendungen oder Web-Diensten genutzt werden. Darüber hinaus ist auch eine Verwendung bei der Anmeldung an Rechnern oder z.B. bei der Anmeldung an entfernten Systemen mittels Zertifikaten und Schlüsseln bei SSH umsetzbar.
  • Verschlüsselung rund um eMails
    Zur vertraulichen Kommunikation via eMail kann das benötigte Schlüsselmaterial auf dem Kryptostick Nitrokey Pro erzeugt und sicher verwahrt werden. Eine Verwendung unter GnuPG, OpenPGP oder S/MIME ist somit gegeben.
  • Verschlüsselung von Dateien und Massenspeichern(Festplatten)
    Auch hier wird das geheime Schlüsselmaterial, wie auch schon beim Anwendungsfall eMail-Kommunikation, auf dem Kryptostick generiert und sicher vorgehalten. Eine Ver- und Entschlüsselung unserer Daten mit Hilfe von TrueCrypt, GnuPG Tools oder weiteren Anwendungen steht also nichts im Wege.

Weitere Informationen zum USB-Stick Nitrokey Pro findet findet man auch hier bzw. im Support Forum.

Darüber hinaus ist das 100%-Open PCB-Hardware-Design, sowie die Firmware und der Software SourceCode der Nitrokey-Familie in Github hinterlegt und einsehbar.

Informationen über den Stick können wir mit Hilfe des Befehls usb-devices aus dem RPM-Paket usbutils dem System abverlangen.

 # usb-devices
T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 13 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=20a0 ProdID=4108 Rev=01.00
S:  Manufacturer=Nitrokey
S:  Product=Nitrokey Pro
S:  SerialNumber=0000D34DB33F000000000000
C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=(none)
I:  If#=0x1 Alt= 0 #EPs= 3 Cls=0b(scard) Sub=00 Prot=00 Driver=(none)

Mit dem Befehl lshw können wir uns ebenso anzeigen lassen, ob der Stick angesteckt und erkannt wird. Da der USB-Stick unter die Klasse input fällt suchen wir gezielt nach diesen Geräte-Typus.

 # lshw -short -C input
H/W path               Device     Class          Description
============================================================
/0/100/1a/1/1/2                   input          Nitrokey Pro

Mit Hilfe des Befehls lsusb aus dem RPM-Paket usbutils können wir auch die Produkt- und Hersteller-Identifikationsnummer des Nitrokey-Sticks ermitteln.

 # lsusb
Bus 001 Device 013: ID 20a0:4108 Clay Logic

Im Syslog wird uns beim Anstecken des Sticks dies entsprechend protokolliert:

Aug 23 20:57:44 Djangos-ThinkPad-X230 kernel: [13990.183533] usb 1-1.2: new full-speed USB device number 14 using ehci-pci
Aug 23 20:57:44 Djangos-ThinkPad-X230 kernel: [13990.293264] usb 1-1.2: New USB device found, idVendor=20a0, idProduct=4108, bcdDevice= 1.00
Aug 23 20:57:44 Djangos-ThinkPad-X230 kernel: [13990.293276] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Aug 23 20:57:44 Djangos-ThinkPad-X230 kernel: [13990.293282] usb 1-1.2: Product: Nitrokey Pro
Aug 23 20:57:44 Djangos-ThinkPad-X230 kernel: [13990.293285] usb 1-1.2: Manufacturer: Nitrokey
Aug 23 20:57:44 Djangos-ThinkPad-X230 kernel: [13990.293289] usb 1-1.2: SerialNumber: 000034DB33F000000000000
Aug 23 20:57:44 Djangos-ThinkPad-X230 kernel: [13990.295273] input: Nitrokey Nitrokey Pro as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:20A0:4108.000A/input/input19
Aug 23 20:57:44 Djangos-ThinkPad-X230 kernel: [13990.351850] hid-generic 0003:20A0:4108.000A: input,hidraw0: USB HID v1.10 Keyboard [Nitrokey Nitrokey Pro] on usb-0000:00:1a.0-1.2/input0
Aug 23 20:56:37 Djangos-ThinkPad-X230 systemd-resolved[881]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.
Aug 23 20:57:44 Djangos-ThinkPad-X230 mtp-probe: checking bus 1, device 14: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2"
Aug 23 20:57:44 Djangos-ThinkPad-X230 mtp-probe: bus: 1, device: 14 was not an MTP device
Aug 23 20:57:44 Djangos-ThinkPad-X230 mtp-probe: checking bus 1, device 14: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2"
Aug 23 20:57:44 Djangos-ThinkPad-X230 mtp-probe: bus: 1, device: 14 was not an MTP device

Für den Zugriff auf die SmartCard bzw. auf den Nitrokey Pro benötigen wir z.B. für GPG den SmartCard-Daemon scdeamon und die Bibliothek libccid welche bei Linux Mint bereits in der Basisinstallation enthalten ist und mit Hilfe der Pakets scdaemon und libccid bereitgestellt werden.

Diese Pakete installieren wir, falls diese nicht bereits im System vorhanden sind, bei Bedarf mit Hilfe von apt.

 # apt-get install scdaemon libccid

Für den Betrieb unter Linux Mint 20 insbesondere beim NitroPad X230 müssen wir uns noch passende udev-Definitionen hier besorgen.

Wir wechseln also erst einmal in das entsprechende Konfigurationsverzeichnis /etc/udev/rules.d/.

 # cd /etc/udev/rules.d/

Dann holen wir uns die entsprechende Musterdatei auf unseren Rechner.

 # wget https://www.nitrokey.com/sites/default/files/41-nitrokey.rules

Zum Aktivieren unserer neuen udev-Regeldatei lassen wir diese nun erneut einlesen; hierzu verwenden wir folgenden Befehl:

 # udevadm control --reload-rules

Für die Verwaltung des Sticks stellt uns Nitrokey eine entsprechende Anwendung bzw. App zur Verfügung. Die Softwarequellen finden wir im GitHub-Reposoitory. Auf der Downloadseite zu Ubuntu finden wir Angaben zum eigenen Repository, von dem wir ein passenden RPM-Paket installieen können.

Beim Auslieferungsstand eines NitroPad x320 ist das passende Repository ppa:nitrokey/nitrokey bereits eingebunden. Hat man einen Systemupgrade durchgeführt und dabei wie empfohlen vor einem Systemupgrade die Drittrepositories entfernt oder man möchte unter Linux Mint das Nitrokey-Repository selbst, z.B. nach dem Systemupgrade wieder einbinden, geht man wie folgt vor:

Als normaler Benutzer:

 $ sudo add-apt-repository ppa:nitrokey/nitrokey

Oder als Benutzer mit root-Rechten:

 # add-apt-repository ppa:nitrokey/nitrokey

Bild: Linux Mint Software Sources

Nun installieren wir uns das Paket nitrokey-app mit Hilfe des Paketverwaltungswerkzeugs apt.

 # apt install nitrokey-app

Die installierte Version können wir bei Bedarf wie folgt ermitteln:

 # dpkg -l nitrokey-app

Was uns das Paket alles mitgebracht hat können wir mit Hilfe nachfolgenden Befehls erkunden.

 # dpkg -L nitrokey-app

Nun können wir die Anwendung starten. Hierzu klicken wir auf das Linx Mint Logo links unten und geben in dem Suchfeld nitro ein und wählen anschließend die angezeigte Applikation Nitrokey App mit einem Mausklick aus.

Bild: Linux Mint - Auswahl Programm-/Startmenü

Alternativ können wir natürlich das Programm auch direkt auf der Konsole starten:

 $ nextcloud-app

Ein Hinweis zur Nitrokey App wird ausgegeben.

Bild: Linux Mint - Auswahl Programm-/Startmenü

In der Statusleiste rechts taucht nun das Icon der Nitrokey App auf, welches wir nun mit meinem Mausklick aus-/anwählen.

Bild: Linux Mint - Auswahl der Nitrokey App über die Statusleiste

Wird der Nitrostick Pro angesteckt erfolgt ein entsprechender Hinweise angezeigt.

Bild: Linux Mint - Auswahl Programm-/Startmenü

Wird der Nitrostick Pro abgesteckt erfolgt ein entsprechender Hinweise angezeigt.

Bild: Linux Mint - Auswahl Programm-/Startmenü

Die Smartcard, die im Nitrokey Pro bebaut wurde, ist mit zwei PINs geschützt, der Benutzer-PIN (Standard: 123456) und Admin-PIN (Standard: 12345678).

Wird die Benutzer-PIN mehr als 3x falsch eingeben, wird die Karte für den Benutzer gesperrt. Mit der Admin-PIN kann der Fehleingabezähler zurückgesetzt bzw. eine neue Benutzer-PIN vergeben werden.

Wird jedoch die Admin-PIN mehr als 3x falsch eingegeben, wird die Smart-Card komplett und der Stick ist anschliessend nur noch durch einen Master-Reset in den Auslieferungszustand zu versetzen.

Hierzu kopiert man sich folgende Datei auf den Rechner:

 $ wget https://www.nitrokey.com/sites/default/files/nitrokey-reset.txt

Anschließend führt man einen Factory-Reset aus und benutzt folgenden Befehl:

 $ gpg-connect-agent < nitrokey-reset.txt

Beim Umgang mit diesen PINs ist also unbedingt Vorsicht walten lassen! Ein so strenger PIN-basierter Hardware-Schutz ist unerlässlich, wenn die SmartCard vor dem Zugriff durch die falschen Hände geschützt werde soll.

User- und Admin PIN des Nitrokey Sticks ändern

Was nun noch fehlt ist die Änderung der beiden Default PINs für den Benutzer (123456) und für den Admin-Zugriff (12345678).

Als erstes ändern wir über den betreffenden Menüpunkt die Admin-PIN.

Bild: Linux Mint - Nitrokey App Änderungsdialog Admin-PIN

Nach Eingabe der default PIN 12345678 und unserer individuellen Admin-PIN klicken wir auf die Schaltfläche [ OK ].

Bild: Linux Mint - Nitrokey App Bestätigung der PIN-Änderung

Anschließend machen wir das Gleiche mit der User-PIN.

Bild: Linux Mint - Nitrokey App Änderungsdialog User-PIN

Nach Eingabe der default PIN 123456 und unserer individuellen Admin-PIN klicken wir auf die Schaltfläche [ OK ].

Bild: Linux Mint - Nitrokey App Bestätigung der PIN-Änderung

Passwort-Safe

Der Kryptostick bietet uns die Möglichkeit bis zu 16 Passwörter anzuspeichern, die wir dann später einfach bei entsperrtem Nitrokey Pro Stick abrufen, in den Zwischenspeicher kopieren um es dann bei den (Web)Anwendungen einzufügen.

Über das Programmicon in der Statusleiste erreichen wir die gestartete Nitrokey-App.

Bild: Nitrokey App - Menü via Statusleiste

Wir müssen also erst einmal den Passwort-Safe entsperren damit wir einen Passwort dort generieren und oder hinterlegen können. Zum entsperren müssen wir die von uns vergebene individuelle User-PIN eingeben.

Bild: Nitrokey App - Abfrage der User-PIN

Wurde der Nitrokey Pro noch nicht für den Passworts-Safe Funktion präpariert, da dieser z.B. neu ausgeliefert war, erfolgt ein Hinweis zum benötigten AES-Schlüssel, der für die Passwort-Safe Funktion des Nitrokey Pro benötigt wird.

Bild: Nitrokey App - Hinweis zum noch fehlenden AES-SAchlüssel

Wir werden also aufgefordert unsere individuelle Admin-PIN einzugeben.

Bild: Nitrokey App - Abfrage der Admin-PIN zum Erstellen des AES-Schlüssels

Nach Eingabe der Admin-Pin wird der Schlüssel generiert.

Bild: Nitrokey App - Hinweis zum erstellten AES-SAchlüssel

Da wir zum Entsperren des Passwortsafes zur Eingabe der User-PIN aufgefordert werden, kommen wir dieser Bitte entsprechend nach.

Bild: Nitrokey App - Abfrage der User-PIN

Das entsperren des Passwort-Safes wird uns mit einer Popup-Nachricht angezeigt.

Bild: Nitrokey App - Ninweis zum entsperrten Passwort-Safe

Nun können wir unseren Passwort-Safe generieren. Über das prkgramm-Icon in der unteren Statusleiste erreichen wir nun beim entsperrten Nitrokey Pro diese Funktion.

Bild: Nitrokey App - Menü via Statusleiste

Auf dem Reiter Passwort-Safe finden wir alle benötigten Einstellungspunkte. Hier können wir nun bis zu 16 Passworte sicher versperren und auf bedarf darauf zurückgreifen.

Bild: Nitrokey App - Menüpunkt/Reiter zum definieren der Passworte

Haben wir alle Daten richtig eingetragen sichern wir diese über einen Klick auf die Schaltfläche [ Speichern ].

Bild: Nitrokey App - Ninweis zum erfolgreichen Sichern der Passwort-Safe Daten

Bei entsperrten Passwort-Safe können wir nun über das App-Menü, welches wir über die Statusleiste erreichen, jederzeit auf die gesicherten Passworte zugreifen.

Bild: Nitrokey App - Ninweis zum erfolgreichen Sichern der Passwort-Safe Daten

Bei Bedarf kopieren wir dann das betreffende Passwort und fügen es auf der Eingabemaske ein.

Bild: Nitrokey App - Ninweis zum erfolgreichen Kopieren des Passortes aus dem Passwort-Safe

Da es sich bei der Chipkarte des Nitrokey Pro um eine standardkompatible OpenPGP-Karte handelt, kann der Kryptostick mit Hilfe von GnuPG verwaltet werden. Hierzu installieren wir uns das Paket gnupg2, sofern es nicht bereits bei der Erstkonfiguration unseres Rechner installiert wurde.

 # apt-get install gpg

Alle Sicherheitsfunktionen wie z.B. das Erzeugen/Speichern von GPG-Schlüsseln, das Verschlüsseln/Entschlüsseln einer Datei, das Signieren einer Nachricht, die auf der Hardware ausgeführt werden, können mit Hilfe des Befehls gpg gesteuert werden.

Sollte beim Aufruf des Befehls gpg die Karte nicht sofort angesprochen werden können, einfach den Befehl nochmals ausführen:

 $ gpg --card-status
gpg: selecting openpgp failed: Karte nicht vorhanden
gpg: OpenPGP Karte ist nicht vorhanden: Karte nicht vorhanden

card-status

Mit der Option card-status können wir uns mit dem Befehl gpg –card-status den Kartenstatus ausgeben lassen.

 $ gpg --card-status
Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
Application ID ...: D27600012701020100066000425D0000
Application type .: OpenPGP
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000425D
Name of cardholder: [not set]
Language prefs ...: de
Salutation .......: 
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]

Die einzelnen Datenfelder haben hierbei folgende Bedeutung:

Datenfeld Beschreibung
Application ID Individuelle (unique) KartenID, diese beinhaltet:
° den Kartentyp
° die Version der Spezifikation
° den Hersteller und
° die Seriennummer des Cryptosticks
Diese Application ID ist einmalig und bei jeder Karte anders.
Version verwendete OpenPGP Version
Manufacturer Hersteller der Karte
Serial number Seriennummer der Karte, die vom Hersteller vergeben wurde.
Name of cardholder Vorname und Nachname des Karteninhabers ( Es sind hier derzeit nur reines ASCII erlaubt, also keine deutschen Umlaute). Dieses Feld wird von GPG nicht verwendet.
Language prefs Gewählte/bevorzugte Sprache (Muttersprache) des Karteninhabers. Dieses Feld wird von GPG nicht verwendet.
Sex Geschlecht des Karteninhabers.: (Männlich (M), Weiblich (F) oder Leerzeichen)
URL of public key Angabe einer URL, mit der der public-key mit Hilfe des Befehls fetch unter gpg --edit-card auf die Karte geladen werden kann.
Login data Bei diesem Feld kann der Account-Name des Karteninhabers abgelegt werden, der bei Anmeldeversuchen genutzt werden kann. GPG führt hier keinerlei Abgleiche zwischen diesem Namen und dem Namen der in einem Schlüssel angegeben und verwendet wird durch!
Signature PIN Hier kann über die beiden Schalter zwingend und nicht zwingend eingestellt werden, ob bei jedem Signatur-Vorgang die PIN abgefragt werden soll, oder nicht. Bei der Option nicht zwingend kann GPG die PIN zwischenspeichern, solange der Nitrokey-Stick angesteckt bleibt.
Key attributes Angaben über Art und Umfang der hinterlegten Schlüssel
Max. PIN lengths Maximale Länge der einzelnen PINs, kann nicht verändert werden!
PIN retry counter Zähler für die verbleibenden Versuche zur Eingabe der richtigen PIN. Der max. Zählwert von 3 wird bei jeder Falscheingabe um eins heruntergesetzt. Sobald die richtige Admin-PIN eingegeben wurde, wir der max. Wert von 3 wieder zurück gesetzt. Die beiden ersten Werte (von links gesehen) werden für die User-PIN verwendet. GPG stellt hierbei sicher, dass beide werde synchronisiert werden. Der zweite (mittlere) Wert wird lediglich für Besonderheiten aus dem ISO-Standard 7816 (https://de.wikipedia.org/wiki/ISO_7816) verwendet. Der dritte (rechte) Wert wird als Fehlversuchszähler für die Admin_PIN verwendet.
Signature counter Zähler der generierten Signaturen bzw. Signaturvorgänge mit der KArte. Der Zähler kann nicht manipuliert werden und wird lediglich zurückgesetzt, sobald ein neuer Signature-Schlüssel erzeugt oder auf die Karte geladen wird.
Signature key Signatur-Schlüssel (primärer OpenPGP-Schlüssel)
created Datum und Uhrzeit an dem der Schlüssel erzeugt wurde
Encryption key Entschlüsselungs-Schlüssel (Unterschlüssel des primären (Signature-)Schlüssels.
created Datum und Uhrzeit an dem der Schlüssel erzeugt wurde
Authentication key Authentifizierung-Schlüssel (Unterschlüssel des primären (Signature-)Schlüssels.
created Datum und Uhrzeit an dem der Schlüssel erzeugt wurde
General key info Diese primäre USer ID wird angezeigt, sobald ein entsprechender öffentlicher Schlüssel (public-key) verfügbar ist.

change-pin

Wie schon mit der Nitrokey App können wir auch mit Hilfe des Befehls gpg --change-pin die Benutzer- und die Admin-PIN, wie auch die PIN zum Zurücksetzen der Benutzer-PIN, ändern.

Die Benutzer-PIN (Menüpunkt 1) wird benötigt für den täglichen Betrieb wie z.B. zum Entsperren des Token, oder zum Signieren und Verschlüsseln. Die Mindestlänge für den User-Pin beträgt 6 Zeichen.

Die Admin-PIN (Menüpunkt 3) wird für die Karten-/Token-Verwaltung verwendet, so z.B. für das Laden von Schlüsseln auf den Krypto-Stick, das Erzeugen von Schlüsseln oder das Ändern von Informationen wie die Inhaberdaten auf der Karte. Die Mindestlänge für die Admin-PIN beträgt 8 Zeichen.

Wird die Benutzer-PIN 3x falsch eingeben, wird die Karte gesperrt und kann dann nur mit der Admin-PIN oder dem Reset-Code zurückgesetzt werden. Wenn Sie den falschen Admin-Pin dreimal eingeben, wird die Karte unbrauchbar und kann dann lediglich mit einem Factory-Reset (Verlußt aller Kartendaten!) zurück gesetzt werden!

Die Reset-PIN (Menüpunkt 4) kann nur zum Zurücksetzen der Benutzer-PIN verwendet werden. Die Mindestlänge für den Reset-Code beträgt 8 Zeichen. Der Reset-Code Fehlerzähler kann wiederum mit der Admin-PIN zurückgesetzt werden. Wird nach zweimaliger Falscheingabe der Benutzer- wie auch der Admin-PIN und dann die richtige PIN eingeben, wird der Fehlerzähler zurückgesetzt.

Worin besteht nun aber der genaue Unterschied zwischen dem Reset-Code und der Admin-PIN? Möchte man in einer Organisation Nitrokey Pro an seine Mitarbeiter ausgeben, werden bestimmte Daten, wie z.B. Namen, die Public Key URL oder auch das erzeugte Schlüsselmaterial zentral vorgegeben. Da der Benutzer selbst diese Daten nicht verändern können soll, wird dieser auch nicht Kenntnis von der Admin-PIN haben. Sperrt sich nun der Mitarbeiter aus, weil er die Benutzer-PIN 3x falsch eingegeben hat, kann der Neutzer natürlich nicht die Admin-PIN eingeben, da er diese nicht kennt. Hier kommt nun der Reset-Code ins Spiel. Mit Hilfe dieses Codes kann der Benutzer nun die Benutzer-PIN zurücksetzen.

 $ gpg --change-pin
gpg: OpenPGP Karte Nr. D276000124010303000500006FDA0000 erkannt

1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit

Ihre Auswahl?

Beim Menüpunkt 1 können wir z.B. die Benutzer-PIN abändern. Wir werden dann nach der aktuellen PIN gefragt und müssen die neue PIN 2x eingeben zum Abändern.

Bild: PIN-Eingabedialog beim Abändern der Benutzer-/Admin-PIN

card-edit

Mit Hilfe des Befehls gpg --card-edit haben wir entsprechend umfangreiche Zugriffs-, Erstellungs- und Änderungsoptionen auf die Daten und das Schlüsselmaterial, welches auf der Smartcard gespeichert wurden und werden. Viele hilfreiche Informationen zum Umgang mit den Befehlen die uns das Programm gpg bietet, findet man in der zugehörigen Dokumentation auf der Projektseite von https://www.gnupg.org/.

 $ gpg --card-edit
Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
Application ID ...: D27600012701020100066000425D0000
Application type .: OpenPGP
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 000034D4
Name of cardholder: [not set]
Language prefs ...: de
Salutation .......: 
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>
User-Befehle

Mit Hilfe des Befehls help können wir uns anzeigen lassen, welche Optionen im jeweiligen Modus Benutzer oder Admin zur Verfügung stehen.

gpg/card> help
quit           quit this menu
admin          show admin commands
help           show this help
list           list all available data
fetch          fetch the key specified in the card URL
passwd         menu to change or unblock the PIN
verify         verify the PIN and list all data
unblock        unblock the PIN using a Reset Code
Admin-Befehle

Mit dem Befehl admin können wir in den Admin-Modus/-Bereich wechseln und auch dort alle Befehle mit Hilfe von help anzeigen lassen.

gpg/card> admin
Admin commands are allowed
gpg/card> help
quit           quit this menu
admin          show admin commands
help           show this help
list           list all available data
name           change card holder's name
url            change URL to retrieve key
fetch          fetch the key specified in the card URL
login          change the login name
lang           change the language preferences
salutation     change card holder's salutation
cafpr          change a CA fingerprint
forcesig       toggle the signature force PIN flag
generate       generate new keys
passwd         menu to change or unblock the PIN
verify         verify the PIN and list all data
unblock        unblock the PIN using a Reset Code
factory-reset  destroy all keys and data
kdf-setup      setup KDF for PIN authentication
key-attr       change the key attribute

Stick personalisieren

Zunächst wollen wir unseren Stick personalisieren, also mit den Benutzerspezifischen Daten versorgen:

Name of cardholder Vorname und Nachname des Karteninhabers (Es sind hier derzeit nur reines ASCII erlaubt, also keine deutschen Umlaute). Dieses Feld wird von GPG nicht verwendet.
Language prefs Gewählte/bevorzugte Sprache (Muttersprache) des Karteninhabers. Dieses Feld wird von GPG nicht verwendet.
Sex Geschlecht des Karteninhabers.: (Männlich (M), Weiblich (F) oder Leerzeichen)
URL of public key Angabe einer URL, mit der der public-key mit Hilfe des Befehls fetch unter gpg --edit-card auf die Karte geladen werden kann.
Login data Bei diesem Feld kann der Account-Name des Karteninhabers abgelegt werden, der bei Anmeldeversuchen genutzt werden kann. GPG führt hier keinerlei Abgleiche zwischen diesem Namen und dem Namen der in einem Schlüssel angegeben und verwendet wird durch!

Zum Ändern dieser Daten müssen wir nach der Anmeldung an der Karte mit dem Befehl adminin den Admin Bereich wechseln.

 $ gpg --card-edit
Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
Application ID ...: D27600012701020100066000425D0000
Application type .: OpenPGP
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000425D
Name of cardholder: [not set]
Language prefs ...: de
Salutation .......: 
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>
 gpg/card> admin
Admin commands are allowed

Wir ändern zunächst den Namen des Karteninhabers Name of cardholder:

 gpg/card> name
Cardholder's surname: aka Bastard Operator from Hell
Cardholder's given name: Django

Als nächstes definieren wir die Sprache des Kartenbenutzers:

 gpg/card> lang
Language preferences: de

Im nächsten Schritt setzen wir das Geschlecht des Karteninhabers:

 gpg/card> sex
Salutation (M = Mr., F = Ms., or space): m

Nun setzen wir noch den Anmelde-/Loginnamen entsprechend unserer Umgebung:

 gpg/card> login
Login data (account name): django

Zu guter Letzt setzen wir nun die URL, von der der public-key mit Hilfe des Befehls fetch unter gpg --edit-card auf die Karte geladen werden kann.

 gpg/card> url
URL to retrieve public key: https://keyserver.nausch.org/pks/lookup?op=get&search=0x074ECF6150A6BFED

Somit ergeben sich folgende benutzerindividuellen Daten auf der Karte:

 gpg/card> verify 
Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
Application ID ...: D27600012701020100066000425D0000
Application type .: OpenPGP
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 0000425D
Name of cardholder: Django aka Bastard Operator from Hell
Language prefs ...: de
Salutation .......: Mr.
URL of public key : https://keyserver.nausch.org/pks/lookup?op=get&search=0x074ECF6150A6BFED
Login data .......: django
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 können wir die Erstinitialisierung abschließen und den Einstellungsdialog mit dem Befehl quit verlassen.

 gpg/card> quit

Schlüsseleigenschaften definieren

Beim Public-Key-Verschlüsselungsverfahren denken wir in erster Linie an die beiden Schlüssel, den public-key, den wir z.B. zum Verschlüsseln von Informationen verwenden und dem secret-key, den wir zum Signieren und zum Entschlüsseln verwenden. Im Nitrokey werden dazu drei verschiende Schlüssel-/slots bereitgestellt:

  1. Signature key
  2. Encryption key
  3. Authentication key

Für alle drei Schlüssel ist im Auslieferungszustand bzw. nach einem Facory Reset jeweils ein RSA-Schlüssel mit einer Schlüssellänge von 2048 vordefiniert. Wir sehen dies bei den Key attributes …: rsa2048 rsa2048 rsa2048 wenn wir den Status des angestckten Nitro Key-Sticks einsehen oder beim Aufruf der Editieroption.

Mit Hinblick auf die möglichen Unsicherheiten im Bezug auf die RSA-Schlüssellänge1) werden wir uns ersteinmal nicht mit diesen Defaultwerten begnügen, sondern die maximale RSA-Schlüssell#nge von 4096 bit verwenden.

Zum Ändern der Schlüssel und deren Länge verwenden wir den Befehl gpg --card-edit.

 $ gpg --card-edit 
Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
Application ID ...: D27600012701020100066000425D0000
Application type .: OpenPGP
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 000034D4
Name of cardholder: Django aka Bastard Operator from Hell
Language prefs ...: de
Salutation .......: Mr.
URL of public key : https://keyserver.nausch.org/pks/lookup?op=get&search=0x074ECF6150A6BFED
Login data .......: django
Signature PIN ....: not 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>
django@Djangos-ThinkPad-X230:~$ gpg --card-edit 

Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
Application ID ...: D27600012701020100066000425D0000
Application type .: OpenPGP
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 000034D4
Name of cardholder: Django aka Bastard Operator from Hell
Language prefs ...: de
Salutation .......: Mr.
URL of public key : https://keyserver.nausch.org/pks/lookup?op=get&search=0x074ECF6150A6BFED
Login data .......: django
Signature PIN ....: not 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> admin
Admin commands are allowed

gpg/card> key-attr 
Changing card key attribute for: Signature key
Please select what kind of key you want:
   (1) RSA
   (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:
   (1) RSA
   (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:
   (1) RSA
   (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

gpg/card> verify 

Reader ...........: 20F0:4109:0000D34DB33F000000000000:0
Application ID ...: D27600012701020100066000425D0000
Application type .: OpenPGP
Version ..........: 2.1
Manufacturer .....: ZeitControl
Serial number ....: 000034D4
Name of cardholder: Django aka Bastard Operator from Hell
Language prefs ...: de
Salutation .......: Mr.
URL of public key : https://keyserver.nausch.org/pks/lookup?op=get&search=0x074ECF6150A6BFED
Login data .......: django
Signature PIN ....: not 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]

gpg/card> quit

Bild: Admin-PIN Entry Dialog

Bild: User-PIN Entry Dialog


1)
BSI TR-02102-1 „Kryptographische Verfahren: Empfehlungen und Schlüssellängen“ Version: 2020-01 vom 02.04.2020
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • nitrokey/linuxmint/pro.1598729700.txt.gz
  • Zuletzt geändert: 29.08.2020 19:35.
  • von django