suse:nitrokey:start

Dies ist eine alte Version des Dokuments!


Nitrokey Start in der Praxis unter open SUSE leap 15.2

Bild: Nitrokey Start USB-Stick In diesem Kapitel befassen wir uns eingehend mit dem Nitrokey Start (Daten-/Infoblatt) unter openSUSE Leap 15.2. Weitere Informationen zu den Nitrokey-Sticks findet man auch hier bzw. im Support Forum.

Mit Hilfe von asymmetrischen Schlüsselmaterials (PGP und S/MIME) können eMails sowie Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. Hierzu verwenden wir den Nitrokey Start welcher hier für einen überschaubaren Betrag von gerade mal 29€ erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Verwendung unter openSUSE Leap 15.2 ein.

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=02 Dev#= 16 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=20a0 ProdID=4211 Rev=02.00
S:  Manufacturer=Nitrokey
S:  Product=Nitrokey Start
S:  SerialNumber=FSIJ-1.2.10-14081967
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 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 erlkannt wird. Da der USB-Stick unter die Klasse generic fällt suchen wir gezielt nach diesen Geräte-Typus.

 # lshw -short -C generic
H/W path                   Device     Class          Description
================================================================
/0/100/b                              generic        Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller
/0/100/14/0/3/2                       generic        Nitrokey Start
/0/100/1a                             generic        Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Trusted Execution Engine

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 016: ID 20a0:4211 Clay Logic 

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

2020-08-04T19:04:25.081522+02:00 localhost kernel: [35273.158119] usb 1-3.2: new full-speed USB device number 17 using xhci_hcd
2020-08-04T19:04:25.285566+02:00 localhost kernel: [35273.363947] usb 1-3.2: New USB device found, idVendor=20a0, idProduct=4211, bcdDevice= 2.00
2020-08-04T19:04:25.285603+02:00 localhost kernel: [35273.363954] usb 1-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2020-08-04T19:04:25.285608+02:00 localhost kernel: [35273.363957] usb 1-3.2: Product: Nitrokey Start
2020-08-04T19:04:25.285610+02:00 localhost kernel: [35273.363959] usb 1-3.2: Manufacturer: Nitrokey
2020-08-04T19:04:25.285612+02:00 localhost kernel: [35273.363963] usb 1-3.2: SerialNumber: FSIJ-1.2.10-140181967
2020-08-04T19:04:25.304993+02:00 localhost mtp-probe: checking bus 1, device 17: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.2"
2020-08-04T19:04:25.330612+02:00 localhost mtp-probe: bus: 1, device: 17 was not an MTP device
2020-08-04T19:04:25.383546+02:00 localhost systemd[1]: Reached target Smart Card.

Für den Betrieb unter openSUSE Leap 15.2 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

Damit unser System die neue udev-Regel auch erkennt und anwendet, lassen wir diese nun erneut einlesen; hierzu verwenden wir folgenden Befehl:

 # udevadm control --reload-rules

Sobald wir nun unseren Nitrokey Start in einen USB-Port stecken können wir den Status der Karte z.B. mit der Option –card-status beim Befehl gpg2abfragen.

 $ gpg2 --card-status
Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-14081967) 00 00
Application ID ...: D276000124010200FFFE140819670000
Version ..........: 2.0
Manufacturer .....: unmanaged S/N range
Serial number ....: 43243711
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

Für den Zugriff auf die SmartCard bzw. auf den Nitrokey Start benötigen wir z.B. für GPG den SmartCard-Daemon scdeamon welcher bei openSUSE leap 15.x mit Hilfe es Pakets gpg2 bereitgestellt wird.

In der Regel wurde das Paket bei der Erstinstallation bereits mitinstalliert. Sollte es noch fehlen können wir mit Hilfe vomn zypper das dieses Paket einfach nach installieren.

 # zypper install gpg2
 $ gpg2 --version
gpg (GnuPG) 2.2.5
libgcrypt 1.8.2
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/django/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

Da es sich bei der Chipkarte des Nitrokey Start um eine standardkompatible OpenPGP-Karte handelt, kann der Kryptostick mit Hilfe von GnuPG verwaltet werden.

Alle Sicherheitsfunktionen wie z.B. das Erzeugen/Speichern von PGP-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 bzw. gpg2 gesteuert werden.

card-status

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

 $ gpg2 --card-status
Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43243711) 00 00
Application ID ...: D276000124010200FFFE140819670000
Version ..........: 2.0
Manufacturer .....: unmanaged S/N range
Serial number ....: 14081967
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 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 herunter gesetzt. 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 Signatur-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 (Signatur-)Schlüssels.
created Datum und Uhrzeit an dem der Schlüssel erzeugt wurde
Authentication key Authentifizierung-Schlüssel (Unterschlüssel des primären (Signatur-)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.

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 ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-14081967) 00 00
Application ID ...: D276000124010200FFFE140819670000
Version ..........: 2.0
Manufacturer .....: unmanaged S/N range
Serial number ....: 14081967
Name of cardholder: [not set]
Language prefs ...: [not set]
Sex ..............: unspecified
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 0
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]

gpg/card>
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
  • suse/nitrokey/start.1596561841.txt.gz
  • Zuletzt geändert: 04.08.2020 17:24.
  • von django