Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
nitrokey:linuxmint:3cnfc [11.05.2023 18:34. ] – [Browser] djangonitrokey:linuxmint:3cnfc [18.11.2024 18:55. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== Nitrokey 3C NFC in der Praxis unter Linux Mint 20.2 Cinnamon ====== +====== Nitrokey 3C NFC und Nitrokey 3A mini in der Praxis unter Linux Mint 21.2 (Victoria) ====== 
-{{:nitrokey:linuxmint:nitrokey_3c_nfc.png?nolink&280 |Bild: Nitrokey 3C NFC USB-Stick}} In diesem Kapitel befassen wir uns eingehend mit dem [[https://shop.nitrokey.com/de_DE/shop/product/nk3cn-nitrokey-3c-nfc-148|Nitrokey 3C NFC]] unter **[[https://linuxmint.com/|Linux Mint 20.2 Cinnamon]]**. Weitere Informationen zu den [[https://www.nitrokey.com/de#comparison|Nitrokey-Sticks]] findet man auch [[https://www.nitrokey.com/de/documentation/installation|hier]] bzw. im [[https://support.nitrokey.com/c/nitrokey-support|Support Forum]].+{{:nitrokey:linuxmint:nitrokey_3.png?300 |Bild: Nitrokey 3C NFC und 3A mini USB-Stick}} In diesem Kapitel befassen wir uns eingehend mit dem [[https://shop.nitrokey.com/de_DE/shop/product/nk3cn-nitrokey-3c-nfc-148|Nitrokey 3C NFC]] und [[https://shop.nitrokey.com/de_DE/shop/product/nk3am-nitrokey-3a-mini-149|Nitrokey 3A mini]] unter **[[https://linuxmint.com/|Linux Mint 21.2 (Victoria)]]**. Weitere Informationen zu den [[https://www.nitrokey.com/de#comparison|Nitrokey-Sticks]] findet man auch [[https://www.nitrokey.com/de/documentation/installation|hier]] bzw. im [[https://support.nitrokey.com/c/nitrokey-support|Support Forum]].
  
-//**Der neue Nitrokey 3 mit NFC, USB-CRust, Common Criteria EAL 6+**+//**Der neue Nitrokey 3 wahlweise mit mit NFC, USB-C oder USB-A Mini sowie Rust, Common Criteria EAL 6+**
 \\ \\
 Der neue Nitrokey 3 ist der beste Nitrokey den wir je entwickelt haben. Er bietet erstmals NFC, USB-C. Der Nitrokey 3 vereint die Funktionen vorheriger Nitrokey Modelle: FIDO2, Einmalpasswörter, OpenPGP Chipkarte, Curve25519, Passwort-Manager, Common Criteria EAL 6+ zertifiziertes Secure Element, Firmware-Updates. Damit werden Ihre Accounts zuverlässig gegen Phishing und Passwort-Diebstahl geschützt und Ihre Kommunikation und Daten verschlüsselt. Mit starker Hardware-Verschlüsselung, vertrauenswürdig dank Open Source, Qualität made in Germany.// <sup>\\ Quelle: https://shop.nitrokey.com/de_DE/shop/product/nk3cn-nitrokey-3c-nfc-148</sup> Der neue Nitrokey 3 ist der beste Nitrokey den wir je entwickelt haben. Er bietet erstmals NFC, USB-C. Der Nitrokey 3 vereint die Funktionen vorheriger Nitrokey Modelle: FIDO2, Einmalpasswörter, OpenPGP Chipkarte, Curve25519, Passwort-Manager, Common Criteria EAL 6+ zertifiziertes Secure Element, Firmware-Updates. Damit werden Ihre Accounts zuverlässig gegen Phishing und Passwort-Diebstahl geschützt und Ihre Kommunikation und Daten verschlüsselt. Mit starker Hardware-Verschlüsselung, vertrauenswürdig dank Open Source, Qualität made in Germany.// <sup>\\ Quelle: https://shop.nitrokey.com/de_DE/shop/product/nk3cn-nitrokey-3c-nfc-148</sup>
  
-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 [[https://shop.nitrokey.com/de_DE/shop/product/nk3cn-nitrokey-3c-nfc-148|Nitrokey 3C NFC]] welcher [[https://shop.nitrokey.com/de_DE/shop|hier]] für einen Betrag von 49 € erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Verwendung unter [[https://linuxmint.com/|Linux Mint 20.2 Cinnamon]] ein.  +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 [[https://shop.nitrokey.com/de_DE/shop/product/nk3cn-nitrokey-3c-nfc-148|Nitrokey 3C NFC]] welcher [[https://shop.nitrokey.com/de_DE/shop|hier]] für einen Betrag von 49 € erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Verwendung unter [[https://linuxmint.com/|Linux Mint 21.2 (Victoria)]] ein. 
- +
-===== WICHTIGER HINWEIS (Stand Nov. 2021) ===== +
-<WRAP center round alert 85%> +
-**Stand November 2021**: \\  +
-Bei der aktuelle Auslieferung((Stand : 01.11.2021)) der **Nitrokey 3C NFC** handelt sich um eine Vorbestellung. Das ausgelieferte Gerät wird erst einmal **__nur__** **FIDO2** sowie **FIDO U2F** unterstützen und bereits die Hardware (inkl. Secure Element) für alle aufgeführten Funktionen beinhalten. \\ +
-Weitere Funktionen wie //Einmalpasswörter//, //Passwortmanager// und //OpenPGP Chipkarte// sind noch **__nicht__** implementiert, sondern werden erst später per Firmware-Updates bereitgestellt! +
-</WRAP>+
  
  
Zeile 36: Zeile 29:
 I:  If#= 3 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm I:  If#= 3 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
 E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
 +E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
 +</code>
 +
 +Beziehungsweise hier exeplarisch die Ausgabe beim **Nitrokey 3A mini**:
 +<code>T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 26 Spd=12  MxCh= 0
 +D:  Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
 +P:  Vendor=20a0 ProdID=42b2 Rev=01.05
 +S:  Manufacturer=Nitrokey
 +S:  Product=Nitrokey 3
 +C:  #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=100mA
 +I:  If#= 0 Alt= 0 #EPs= 2 Cls=0b(scard) Sub=00 Prot=00 Driver=usbfs
 +E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
 +E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
 +I:  If#= 1 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
 +E:  Ad=02(O) Atr=03(Int.) MxPS=  64 Ivl=5ms
 +E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=5ms
 +I:  If#= 2 Alt= 0 #EPs= 1 Cls=02(commc) Sub=02 Prot=00 Driver=cdc_acm
 +E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
 +I:  If#= 3 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
 +E:  Ad=03(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
 E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
 </code> </code>
Zeile 49: Zeile 62:
    # lsusb    # lsusb
  
-  Bus 001 Device 005: ID 20a0:42b2 Clay Logic+  Bus 001 Device 027: ID 20a0:42b2 Clay Logic Nitrokey 
  
 Im Syslog wird uns beim Anstecken des Sticks dies entsprechend protokolliert: Im Syslog wird uns beim Anstecken des Sticks dies entsprechend protokolliert:
-<code>Nov  3 17:34:33 djangos-thinkpad-x230 kernel: [108360.162781] thinkpad_acpi: battery 1 registered (start 0, stop 0) +<code>Jul 22 11:43:25 djangos-thinkpad-x230 kernel: [26709.462049] usb 1-1.2: new full-speed USB device number 28 using ehci-pci 
-Nov  3 17:34:33 djangos-thinkpad-x230 kernel: [113260.203649] usb 1-1.2: new full-speed USB device number using ehci-pci +Jul 22 11:43:25 djangos-thinkpad-x230 kernel: [26709.574335] usb 1-1.2: New USB device found, idVendor=20a0, idProduct=42b2, bcdDevice= 1.05 
-Nov  3 17:34:33 djangos-thinkpad-x230 kernel: [113260.314951] usb 1-1.2: New USB device found, idVendor=20a0, idProduct=42b2, bcdDevice= 1.00 +Jul 22 11:43:25 djangos-thinkpad-x230 kernel: [26709.574348] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 
-Nov  3 17:34:33 djangos-thinkpad-x230 kernel: [113260.314956] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 +Jul 22 11:43:25 djangos-thinkpad-x230 kernel: [26709.574353] usb 1-1.2: Product: Nitrokey 3 
-Nov  3 17:34:33 djangos-thinkpad-x230 kernel: [113260.314958] usb 1-1.2: Product: Nitrokey 3 +Jul 22 11:43:25 djangos-thinkpad-x230 kernel: [26709.574356] usb 1-1.2: Manufacturer: Nitrokey 
-Nov  3 17:34:33 djangos-thinkpad-x230 kernel: [113260.314961] usb 1-1.2: Manufacturer: Nitrokey +Jul 22 11:43:25 djangos-thinkpad-x230 kernel: [26709.577711] hid-generic 0003:20A0:42B2.0014hiddev0,hidraw0: USB HID v1.11 Device [Nitrokey Nitrokey 3] on usb-0000:00:1a.0-1.2/input1 
-Nov  3 17:34:33 djangos-thinkpad-x230 kernel: [113260.316882] hid-generic 0003:20A0:42B2.0015hiddev3,hidraw0: USB HID v1.11 Device [Nitrokey Nitrokey 3] on usb-0000:00:1a.0-1.2/input1 +Jul 22 11:43:25 djangos-thinkpad-x230 kernel: [26709.578121] cdc_acm 1-1.2:1.2: ttyACM3: USB ACM device 
-Nov  3 17:34:33 djangos-thinkpad-x230 kernel: [113260.317184] cdc_acm 1-1.2:1.2: ttyACM3: USB ACM device +Jul 22 11:43:25 djangos-thinkpad-x230 mtp-probe: checking bus 1, device 28: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2" 
-Nov  3 17:34:33 djangos-thinkpad-x230 mtp-probe: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2" +Jul 22 11:43:25 djangos-thinkpad-x230 mtp-probe: bus: 1, device: 28 was not an MTP device 
-Nov  3 17:34:33 djangos-thinkpad-x230 mtp-probe: bus: 1, device: was not an MTP device +Jul 22 11:43:25 djangos-thinkpad-x230 snapd[999]: hotplug.go:200: hotplug device add event ignored, enable experimental.hotplug 
-Nov  3 17:34:33 djangos-thinkpad-x230 snapd[1106]: hotplug.go:199: hotplug device add event ignored, enable experimental.hotplug +Jul 22 11:43:25 djangos-thinkpad-x230 mtp-probe: checking bus 1, device 28: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2" 
-Nov  3 17:34:33 djangos-thinkpad-x230 mtp-probe: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2" +Jul 22 11:43:25 djangos-thinkpad-x230 mtp-probe: bus: 1, device: 28 was not an MTP device</code>
-Nov  3 17:34:33 djangos-thinkpad-x230 mtp-probe: bus: 1, device: was not an MTP device</code>+
  
 ===== Paketabhängigkeiten ===== ===== Paketabhängigkeiten =====
Zeile 73: Zeile 85:
  
 ===== udev-Regeln ===== ===== udev-Regeln =====
-Für den Betrieb unter **[[https://linuxmint.com/|Linux Mint 20]]** insbesondere beim **[[nitrokey:nitropadx230|NitroPad X230]]** müssen wir uns noch passende udev-Definitionen **[[https://www.nitrokey.com/sites/default/files/41-nitrokey.rules|hier]]** besorgen.+Für den Betrieb unter **[[https://linuxmint.com/|Linux Mint 21.2]]** insbesondere beim **[[nitrokey:nitropadx230|NitroPad X230]]** müssen wir uns noch passende udev-Definitionen **[[https://www.nitrokey.com/sites/default/files/41-nitrokey.rules|hier]]** besorgen.
  
 Wir wechseln also erst einmal in das entsprechende Konfigurationsverzeichnis ''/etc/udev/rules.d/''. Wir wechseln also erst einmal in das entsprechende Konfigurationsverzeichnis ''/etc/udev/rules.d/''.
Zeile 159: Zeile 171:
 <code>Command line tool to interact with Nitrokey devices 0.4.27</code> <code>Command line tool to interact with Nitrokey devices 0.4.27</code>
  
-===== Browser =====+===== Nitrokey App 2 ===== 
 +Den Update der Firmware auf den jeweiligen Nitrokey nehmen wir am Besten mit Hilfe der **[[https://github.com/Nitrokey/nitrokey-app2|Nitrokey App V2]]** vor. 
 + 
 +Dieses Hilfsprogramm holen wir uns nun in der aktuellen Version von der GitHub-Seite mit Hilfe von **''wget''**. 
 +   $ wget https://github.com/Nitrokey/nitrokey-app2/releases/download/v2.1.2/nitrokey-app-v2.1.2-x64-linux-binary.tar.gz 
 + 
 +Anschliessend entpacken wir das heruntergeladene **''tar.gz''**. 
 +   $ tar -zvxf nitrokey-app-v2.1.2-x64-linux-binary.tar.gz -C ~/bin/ 
 + 
 +Zu guter Letzt geben wir dem Programm noch die x-Rechte, damit wir es direkt ausführen können. 
 +   $ chmod +x ~/bin/nitrokey-app-v2.1.2-x64-linux-binary 
 + 
 +<WRAP center round important 90%> 
 +Unter **Ubuntu 22.04  LTS** und auch unter **Linux Mint 21.2 (Victoria)** scheitert aktuell((Stand: Juli 2023)) der Start des Programms leider noch mit der Fehlermeldung: 
 +<code>Traceback (most recent call last): 
 +  File "nitrokeyapp/__main__.py", line 6, in <module> 
 +ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.36' not found (required by /tmp/_MEIENQdbd/libstdc++.so.6) 
 +[41746] Failed to execute script '__main__' due to unhandled exception!</code> 
 + 
 +Daher legen wir uns kurzer Hand einfach ein kleines Start-Script an: 
 +   $ vim bin/nitrokey-app-v2 
 +<file bash bin/nitrokey-app-v2>#!/bin/bash 
 +export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 
 +~/bin/nitrokey-app-v2.1.2-x64-linux-binary</file> 
 + 
 +Auch dieses Script verpassen wir nun noch die **x**-Rechte zum einfachen ausführen. 
 +   $ chmod +x bin/nitrokey-app-v2 
 + 
 +</WRAP> 
 +    
 +Zum Starten der **Nitrokey-App v2** rufen wir nun einfach das angelegte Script auf. 
 +   $ nitrokey-app-v2 
 + 
 +{{ :nitrokey:linuxmint:nitrokey_app_v2_01.png?nolink&601 |Bild: Nitrokey App V2}} 
 + 
 +Über die Auswahl der angezeigten **UUID** auf der linken Seite des angesteckten Nitrokey 3 kann mann dann menügeführt einen Update der Firmware vornehmen. 
 + 
 +{{ :nitrokey:linuxmint:nitrokey_app_v2_02.png?nolink&600 |Bild: Nitrokey App V2}} 
 + 
 +Der erfolgreiche Update der Firmware wird entsprechend angezeigt. 
 + 
 +{{ :nitrokey:linuxmint:nitrokey_app_v2_03.png?nolink&600 |Bild: Nitrokey App V2}} 
 + 
 +===== Anwendungsfälle - Software ===== 
 +==== GnuPG  ==== 
 +Da es sich bei der Chipkarte der beiden **Nitrokey 3C und 3A** jeweils um eine standardkompatible OpenPGP-Karte handelt, kann der Kryptostick mit Hilfe von **[[https://www.gnupg.org/|GnuPG]]** verwaltet werden. Hierzu installieren wir uns das Paket **gnupg2**, sofern es nicht bereits bei der Erstkonfiguration unseres Rechner installiert wurde. 
 +   $ sudo apt 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.  
 + 
 +<WRAP center round tip 90%> 
 +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 
 +</WRAP> 
 + 
 +=== card-status === 
 +Mit der Option **card-status** können wir uns mit dem Befehl ''**gpg --card-status**'' den Kartenstatus ausgeben lassen. 
 +   $ gpg --card-status 
 + 
 +<code>Reader ...........: Nitrokey Nitrokey 3 [CCID/ICCD Interface] 00 00 
 +Application ID ...: D276000421030104000F662D73BB0000 
 +Application type .: OpenPGP 
 +Version ..........: 3.4 
 +Manufacturer .....: unknown 
 +Serial number ....: 762D73BE 
 +Name of cardholder: [not set] 
 +Language prefs ...: [not set] 
 +Salutation .......:  
 +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 0 3 
 +Signature counter : 0 
 +KDF setting ......: off 
 +Signature key ....: [none] 
 +Encryption key....: [none] 
 +Authentication key: [none] 
 +General key info..: [none]</code> 
 + 
 + 
 +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 (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 [[https://www.gnupg.org/howtos/card-howto/en/smartcard-howto.html|Dokumentation]] auf der Projektseite von https://www.gnupg.org/
 + 
 +   $ gpg --card-edit 
 +<code>Reader ...........: Nitrokey Nitrokey 3 [CCID/ICCD Interface] 00 00 
 +Application ID ...: D276000421030104000F662D73BB0000 
 +Application type .: OpenPGP 
 +Version ..........: 3.4 
 +Manufacturer .....: unknown 
 +Serial number ....: 762D73BE 
 +Name of cardholder: [not set] 
 +Language prefs ...: [not set] 
 +Salutation .......:  
 +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 0 3 
 +Signature counter : 0 
 +KDF setting ......: off 
 +Signature key ....: [none] 
 +Encryption key....: [none] 
 +Authentication key: [none] 
 +General key info..: [none]</code> 
 + 
 +== 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 
 +<code>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</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 
 +<code>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 
 +sex            change card holder's sex 
 +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</code> 
 + 
 +=== RSA-Schlüssel generieren ==== 
 +Wir wollen uns nun einen neuen PGP-Schlüssel in der SmartCard erzeugen und rufen hierzu den Befehl **generate** auf. Der **Nitrokey 3C NFC** unterstützt **__RSA__-Schlüssellängen** von **2048** und maximal von **4096**. 
 + 
 +<WRAP center round tip 80%> 
 +Laut der [[https://github.com/Nitrokey/opcard-rs/blob/v1.1.1/README.md|opencard-rs]]((**v1.1.1** - Stand Juli 2023)) werden folgende Algorithmen unterstützt: 
 +  * RSA-2048 
 +  * RSA-3072 (**__nur__** Schlüssel-Import, **__keine__** Schlüssel-Generierung!) 
 +  * RSA-4096 (**__nur__** Schlüssel-Import, **__keine__** Schlüssel-Generierung!) 
 +  * EcDSA und ECDH für P256 
 +  * EdDSA und ECDH für Curve25519 
 +</WRAP> 
 + 
 +Mit Hinblick auf die möglichen Unsicherheiten im Bezug auf die [[https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102.pdf|RSA-Schlüssellänge]] werden wir uns später noch eingehend mit der Erstellung eines [[3cnfc#ed25519-schluessel_generieren|ED25519]] beschäftigen. 
 + 
 +Welche **__RSA__-Schlüssellänge** eingestellt ist, können wir mit den Befehl ''**gpg2 --card-status**'' erfragen; die definierten Werte finden wir dann beim Punkt **Key attributes**. 
 +   $ gpg2 --card-status | grep Key\ attributes 
 + 
 +  Key attributes ...: rsa2048 rsa2048 rsa2048 
 + 
 +Bevor wir nun unseren RSA-Schlüssel erzeugen, werden wir noch die Schlüssellänge von **2048** auf **4096** abändern. 
 +Zum Ändern der Vorgabewerte benutzen wir die Option ''**%%--%%card-edit**'' beim Befehl ''**gpg2**''
 +   $ gpg2 --card-edit 
 +<code>Reader ...........: Nitrokey Nitrokey 3 [CCID/ICCD Interface] 00 00 
 +Application ID ...: D276000421030104000F662D73BB0000 
 +Application type .: OpenPGP 
 +Version ..........: 3.4 
 +Manufacturer .....: unknown 
 +Serial number ....: 762D73BE 
 +Name of cardholder: [not set] 
 +Language prefs ...: [not set] 
 +Salutation .......:  
 +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 0 3 
 +Signature counter : 0 
 +KDF setting ......: off 
 +Signature key ....: [none] 
 +Encryption key....: [none] 
 +Authentication key: [none] 
 +General key info..: [none]</code> 
 + 
 +Im Admin-Bereich finden wir den Befehl ''**key-attr**'' mit Hilfe dessen wir die Definition des Schlüsseltyps definieren können. Wir wechseln also erst einmal in den Admin Bereich. 
 +  gpg/card> admin 
 + 
 +  Admin commands are allowed 
 + 
 + 
 +Hier rufen wir dann den Befehl ''**key-attr**'' auf. 
 +  gpg/card> key-attr 
 + 
 +Im folgenden ändern wir dann für die drei (Unterschlüssel) die Schlüssellänge der **RSA**-Keys von **2048** auf **4096** . 
 +<code>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</code> 
 +Die Default-Admin-Pin die hier abgefragt wird, lautet **''12345678''**. 
 + 
 +Zum Schluss verlassen wir das Programm **gpg2** mit ''**quit**''
 +  gpg/card> quit 
 + 
 +Fragen wir nun erneut mit den Befehl ''**gpg2 --card-status**'' welcher Schlüssel-Typ eingestellt ist, finden wir unsere geänderten Werte. 
 +   $ gpg2 --card-status | grep Key\ attributes 
 + 
 +  Key attributes ...: rsa4096 rsa4096 rsa4096 
 + 
 +Nun erstellen wir uns unsere gewünschten Schlüssel auf der SmartCard der Nitrokey 3C NFC. Wie schon beim [[fedora:nitrokey:start#rsa-schluessel_generieren|Gernerieren der RSA-Schlüssel]] werden wir dabei menügeführt durch eine Reihe von Standardfragen gelost, welche alle relevante Daten abfragen, die zur Generierung des Hauptschlüssels wie auch der Unterschlüssel die für die Aufgaben Signatur, Verschlüsselung und Authentifizierung benötigt werden. 
 +Hilfreiche Informationen zur Schlüsselerzeugung auf dem Kryptostick findet man  in der **[[https://www.nitrokey.com/documentation/openpgp-create-on-device|offiziellen Doku]]** auf der [[https://www.nitrokey.com|Nitrokey Webseite]].  
 +   $ gpg2 --card-edit 
 +<code>Reader ...........: Nitrokey Nitrokey 3 [CCID/ICCD Interface] 00 00 
 +Application ID ...: D276000421030104000F662D73BB0000 
 +Application type .: OpenPGP 
 +Version ..........: 3.4 
 +Manufacturer .....: unknown 
 +Serial number ....: 762D73BE 
 +Name of cardholder: [not set] 
 +Language prefs ...: [not set] 
 +Salutation .......:  
 +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 0 3 
 +Signature counter : 0 
 +KDF setting ......: off 
 +Signature key ....: [none] 
 +Encryption key....: [none] 
 +Authentication key: [none] 
 +General key info..: [none]</code> 
 + 
 +Die Schlüsselgenerierung erfolgt im Admin-Menü, in welches wir nun erst einmal wechseln werden. 
 +  gpg/card> admin 
 + 
 +  Admin commands are allowed 
 + 
 +Die Erzeugung der Schlüssel erfolgt wie immer mit dem Befehl ''**generate**''
 +  gpg/card> generate 
 + 
 +   gpg/card> generate 
 +<code>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: Django aka [BOfH] 
 +Email address: secmail@nausch.org 
 +Comment: Bastard Operator from Hell 
 +You selected this USER-ID: 
 +    "Django aka [BOfH] (Bastard Operator from Hell) <secmail@nausch.org>" 
 + 
 +Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
 +</code> 
 + 
 +Nun wird auf der Karte der gewählte Schlüssel erzeugt.  
 + 
 +<WRAP center round tip 95%> 
 +Die Erzeugung eines Schlüssels mit einer Länge von **2048** dauert ca. 5 Minuten, also keinesfalls den Nitrokey 3C NFC abziehen oder die Generierung abbrechen! Während der Erzeugung der Schlüssel leuchtet die LED im Stick. 
 +</WRAP> 
 + 
 +<code>gpg: key 2E22436430385B49 marked as ultimately trusted 
 +gpg: revocation certificate stored as '/home/django/.gnupg/openpgp-revocs.d/E65B2BDF79A2E2E4C28F6E062E22436430385B49.rev' 
 +public and secret key created and signed. 
 + 
 +gpg/card> quit 
 +pub   rsa2048 2018-11-26 [SC] 
 +      E65B2BDF79A2E2E4C28F6E062E22436430385B49 
 +uid                      Django aka [BOfH] (Bastard Operator from Hell) <secmail@nausch.org> 
 +sub   rsa2048 2018-11-26 [A] 
 +sub   rsa2048 2018-11-26 [E]</code> 
 + 
 + 
 +=== ED25519-Schlüssel generieren === 
 +In dem Artikel **[[https://www.nitrokey.com/de/news/2017/nitrokey-start-unterst%C3%BCtzt-elliptische-kurven-ecc|Nitrokey Start unterstützt elliptische Kurven (ECC)]]** wird sehr ausführlich das Zusammenspiel des Nitrokey und ECC beschrieben. 
 + 
 +Damit auf einem **Nitrokey 3C NFC** Schlüssel auf Basis elliptischer Kurven generiert werden können, muss dieser mindestens die Firmware Version 1.2 verfügen. Dies kontrolliert man am einfachsten mit Folgendem Befehl. 
 +   $ gpg2 --card-status | grep Reader 
 + 
 +  Reader ...........: Nitrokey Nitrokey 3 [CCID/ICCD Interface] 00 00 
 + 
 +Ferner muss auf dem Rechner, an dem der Stick angesteckt und administriert werden soll, GnuPG in Version 2.1.16 oder höher installiert sein. Bei Linux Mint 21.2 ist dies kein Problem da aktuell((Mai '23)) die Version 2.2.27 bereitgestellt wird. Bei Bedarf können wir die Version z.B. wie folgt abfragen. 
 +   $ gpg2 --version | grep gpg 
 + 
 +  gpg (GnuPG) 2.2.27 
 + 
 +Nun werden wir uns Schlüsselpaar auf Basis elliptischer Kurven auf dem Nitrokey 3C NFC generieren. Bevor wir die eigentlichen [[https://de.wikipedia.org/wiki/Curve25519|ED25519]]-Schlüssel generieren können, müssen wir unseren Stick erst einmal von den vorbelegten **RSA**-Schlüssel auf **ECC**-Schlüssel umstellen.  
 +Welcher Typ eingestellt ist können wir mit den Befehl ''**gpg2 --card-status**'' erfragen; die definierten Werte finden wir dann beim Punkt **Key attributes**. 
 +   $ gpg2 --card-status | grep Key\ attributes 
 + 
 +  Key attributes ...: rsa2048 rsa2048 rsa2048 
 + 
 +Zum Ändern der Vorgabewerte benutzen wir die Option ''**%%--%%card-edit**'' beim Befehl ''**gpg2**''
 +   $ gpg2 --card-edit  
 + 
 +<code>Reader ...........: Nitrokey Nitrokey 3 [CCID/ICCD Interface] 00 00 
 +Application ID ...: D276000124010304000F762D73BE0000 
 +Application type .: OpenPGP 
 +Version ..........: 3.4 
 +Manufacturer .....: unknown 
 +Serial number ....: 762D73BE 
 +Name of cardholder: [not set] 
 +Language prefs ...: [not set] 
 +Salutation .......:  
 +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 0 3 
 +Signature counter : 0 
 +KDF setting ......: off 
 +Signature key ....: [none] 
 +Encryption key....: [none] 
 +Authentication key: [none] 
 +General key info..: [none] 
 + 
 +gpg/card> </code> 
 + 
 +Im Admin-Bereich finden wir den Befehl ''**key-attr**'' mit Hilfe dessen wir die Definition des Schlüsseltyps definieren können. Wir wechseln also erst einmal in den Admin Bereich. 
 +  gpg/card> admin 
 + 
 +  Admin commands are allowed 
 + 
 +Hier rufen wir dann den Befehl ''**key-attr**'' auf. 
 +  gpg/card> key-attr 
 + 
 +Im folgenden ändern wir dann für die drei (Unterschlüssel) die Schlüsselart von **ECC** und bei der Frage nach der elliptischer Kurve wählen wir dann die Option **Curve 25519**. 
 +<code>Changing card key attribute for: Signature key 
 +Please select what kind of key you want: 
 +   (1) RSA 
 +   (2) ECC 
 +Your selection? 2 
 +Please select which elliptic curve you want: 
 +   (1) Curve 25519 
 +   (4) NIST P-384 
 +Your selection? 1 
 +The card will now be re-configured to generate a key of type: ed25519 
 +Note: There is no guarantee that the card supports the requested size. 
 +      If the key generation does not succeed, please check the 
 +      documentation of your card to see what sizes are allowed. 
 +Changing card key attribute for: Encryption key 
 +Please select what kind of key you want: 
 +   (1) RSA 
 +   (2) ECC 
 +Your selection? 2 
 +Please select which elliptic curve you want: 
 +   (1) Curve 25519 
 +   (4) NIST P-384 
 +Your selection? 1 
 +The card will now be re-configured to generate a key of type: cv25519 
 +Changing card key attribute for: Authentication key 
 +Please select what kind of key you want: 
 +   (1) RSA 
 +   (2) ECC 
 +Your selection? 2 
 +Please select which elliptic curve you want: 
 +   (1) Curve 25519 
 +   (4) NIST P-384 
 +Your selection? 1 
 +The card will now be re-configured to generate a key of type: ed25519 
 + 
 +</code> 
 + 
 +Zum Schluss verlassen wir das Programm **gpg2** mit ''**quit**''
 +  gpg/card> quit 
 + 
 +Fragen wir nun erneut mit den Befehl ''**gpg2 --card-status**'' welcher Schlüssel-Typ eingestellt ist, finden wir unsere geänderten Werte. 
 +   $ gpg2 --card-status | grep Key\ attributes 
 + 
 +  Key attributes ...: ed25519 cv25519 ed25519 
 + 
 +Nun erstellen wir uns unsere gewünschten Schlüssel auf der SmartCard der **Nitrokey 3C NFC**. Wie schon beim [[#rsa-schluessel_generieren|Gernerieren der RSA-Schlüssel]] werden wir dabei menügeführt durch eine Reihe von Standardfragen gelost, welche alle relevante Daten abfragen, die zur Generierung des Hauptschlüssels wie auch der Unterschlüssel die für die Aufgaben Signatur, Verschlüsselung und Authentifizierung benötigt werden. 
 +   $ gpg2 --card-edit  
 +<code>Reader ...........: Nitrokey Nitrokey 3 [CCID/ICCD Interface] 00 00 
 +Application ID ...: D276000124010304000F762D73BE0000 
 +Application type .: OpenPGP 
 +Version ..........: 3.4 
 +Manufacturer .....: unknown 
 +Serial number ....: 762D73BE 
 +Name of cardholder: [not set] 
 +Language prefs ...: [not set] 
 +Salutation .......:  
 +URL of public key : [not set] 
 +Login data .......: [not set] 
 +Signature PIN ....: forced 
 +Key attributes ...: ed25519 cv25519 ed25519 
 +Max. PIN lengths .: 127 127 127 
 +PIN retry counter : 3 0 3 
 +Signature counter : 0 
 +KDF setting ......: off 
 +Signature key ....: [none] 
 +Encryption key....: [none] 
 +Authentication key: [none] 
 +General key info..: [none]</code> 
 + 
 + 
 +Die Schlüsselgenerierung erfolgt im Adminmenü, in welches wir nun erst einmal wechseln werden. 
 +  gpg/card> admin 
 + 
 +  Admin commands are allowed 
 + 
 +Die Erzeugung der Schlüssel erfolgt wie immer mit dem Befehk ''**generate**''
 +  gpg/card> generate 
 + 
 +<code>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) o 
 +invalid value 
 +Key is valid for? (0) 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: Django [BOfH] 
 +Email address: secmail@nausch.org 
 +Comment: Bastard Operator from Hell 
 +You selected this USER-ID: 
 +    "Django [BOfH] (Bastard Operator from Hell) <secmail@nausch.org>" 
 + 
 +Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
 +gpg: key 8A088B4A80BBD384 marked as ultimately trusted 
 +gpg: revocation certificate stored as '/home/django/.gnupg/openpgp-revocs.d/4FEC76FF42F8B44C6903D0A88A088B4A80BBD384.rev' 
 +public and secret key created and signed. 
 +<code> 
 + 
 +Fragen wir nun den Inhalt der SmartCard mit dem Befehl ''**verify**'' ab, finden wir unsere gerade erstellten Schlüssel. 
 +  gpg/card> verify  
 +<code>Version ..........: 3.4 
 +Manufacturer .....: unknown 
 +Serial number ....: 762D73BE 
 +Name of cardholder: [not set] 
 +Language prefs ...: [not set] 
 +Salutation .......:  
 +URL of public key : [not set] 
 +Login data .......: [not set] 
 +Signature PIN ....: forced 
 +Key attributes ...: ed25519 cv25519 ed25519 
 +Max. PIN lengths .: 127 127 127 
 +PIN retry counter : 3 0 3 
 +Signature counter : 4 
 +KDF setting ......: off 
 +Signature key ....: 4FEC 76FF 42F8 B44C 6903  D0A8 8A08 8B4A 80BB D384 
 +      created ....: 2023-05-13 20:29:18 
 +Encryption key....: A413 7445 540B F65E 128C  C9A1 50D1 C567 0D74 A52F 
 +      created ....: 2023-05-13 20:29:18 
 +Authentication key: BC6A CA82 9949 01CB 5925  78A8 F64E 773E 877E 941A 
 +      created ....: 2023-05-13 20:29:18 
 +General key info..:  
 +pub  ed25519/8A088B4A80BBD384 2023-05-13 Django [BOfH] (Bastard Operator from Hell) <secmail@nausch.org> 
 +sec>  ed25519/8A088B4A80BBD384  created: 2023-05-13  expires: never      
 +                                card-no: 000F 762D73BE 
 +ssb>  ed25519/F64E773E877E941A  created: 2023-05-13  expires: never      
 +                                card-no: 000F 762D73BE 
 +ssb>  cv25519/50D1C5670D74A52F  created: 2023-05-13  expires: never      
 +                                card-no: 000F 762D73BE 
 +</code> 
 +Wir verlassen nun das Programm **''gpg2''** wieder und werden anschließend den Stick [[start#card-edit_-_stick_personalisieren|personalisieren]]. 
 +  gpg/card> quit 
 + 
 +<code>pub   ed25519 2023-05-13 [SC] 
 +      4FEC76FF42F8B44C6903D0A88A088B4A80BBD384 
 +uid                      Django [BOfH] (Bastard Operator from Hell) <secmail@nausch.org> 
 +sub   ed25519 2023-05-13 [A] 
 +sub   cv25519 2023-05-13 [E] 
 +</code> 
 + 
 +=== privaten Schlüsselbund === 
 +Fragen wir nun den privaten Schlüsselbund ab, finden wir den gerade angelegten Schlüssel bzw. den zugehörigen Proxy-Eintrag mit dem Verweis auf den Kryptostick. Dazu verwenden wir den Befehl ''**gpg2 %%--%%list-secret-key**'' bzw. die Kurzform dieses Befehls ''**gpg2 -K**''.  
 + 
 +   $ gpg2 -K 
 +<code>gpg: checking the trustdb 
 +gpg: marginals needed: 3  completes needed: 1  trust model: pgp 
 +gpg: depth: 0  valid:    signed:    trust: 0-, 0q, 0n, 0m, 0f, 3u 
 +/home/django/.gnupg/pubring.kbx 
 +------------------------------- 
 +sec>  ed25519 2023-05-13 [SC] 
 +      4FEC76FF42F8B44C6903D0A88A088B4A80BBD384 
 +      Card serial no. = 000F 762D73BE 
 +uid           [ultimate] Django [BOfH] (Bastard Operator from Hell) <secmail@nausch.org> 
 +ssb>  ed25519 2023-05-13 [A] 
 +ssb>  cv25519 2023-05-13 [E] 
 + 
 +</code> 
 + 
 +=== öffentlichen Schlüsselbund === 
 +Fragen wir nun den öffentlichen Schlüsselbund ab, finden wir den gerade angelegten Schlüssel. Dazu verwenden wir den Befehl ''**gpg2 %%--%%list-public-key**'' bzw. die Kurzform dieses Befehls ''**gpg2 -k**''.  
 + 
 +   $ gpg2 --list-public-key 
 +<code>/home/django/.gnupg/pubring.kbx 
 +------------------------------- 
 +pub   ed25519 2023-05-13 [SC] 
 +      4FEC76FF42F8B44C6903D0A88A088B4A80BBD384 
 +uid           [ultimate] Django [BOfH] (Bastard Operator from Hell) <secmail@nausch.org> 
 +sub   ed25519 2023-05-13 [A] 
 +sub   cv25519 2023-05-13 [E] 
 + 
 +</code> 
 + 
 +=== Öffentlichen Schlüssel ausgeben === 
 +Damit wir später unseren öffentlichen Schlüssel auch weitergeben oder zu einem [[https://keyserver.nausch.org|Keyserver]] hoch laden, exportieren wir diesen in eine Datei. 
 +  $ gpg --export --armor secmail@nausch.org > secmail@nausch.org.pubkey 
 + 
 +Diese Datei enthält unseren Schlüssel in ASCII-lesbarer Form. 
 +  $ cat secmail@nausch.org.pubkey 
 +<file key secmail@nausch.org.pubkey>-----BEGIN PGP PUBLIC KEY BLOCK----- 
 + 
 +mDMEZF/zHhYJKwYBBAHaRw8BAQdAEOQB0s+yG70M1P9yAck5asjV1acQirjk6Bzo 
 +gYrfHgC0RERqYW5nbyBbQk9mSF0gKEJhc3RhcmQgT3BlcmF0b3IgZnJvbSBIZWxs 
 +KSA8c2VjbWFpbEBtYWlsc2VydmVyLmd1cnU+iJAEExYIADgWIQRP7Hb/Qvi0TGkD 
 +0KiKCItKgLvThAUCZF/zHgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCK 
 +CItKgLvThKXPAP90D5rhiWccU9cmMM5T9RaqE1Ep4gfUctqXdt64WfsW0AEA1V8g 
 +rTprSNDUMX9Tw62Ko3JFHCiToqNrxUKqIDePHQ64MwRkX/MeFgkrBgEEAdpHDwEB 
 +B0A4swxnk2PG9J1EN7LKQaNYeLlRnTO86mGOVEe6ye/j+4h4BBgWCAAgFiEET+x2 
 +/0L4tExpA9CoigiLSoC704QFAmRf8x4CGyAACgkQigiLSoC704RQ0QEA5AE5k4Cf 
 +8MEquXdAJeL7h7R93SC0y0eiPRQwiTh1gaYA/2wbNV3tPWuoKo5by0cAOHq01AJL 
 +BV5HSvn1JmCg8LQLuDgEZF/zHhIKKwYBBAGXVQEFAQEHQKZsynr3A9/c85P/Fo5T 
 +QhZ6qIh8eRXfM9Lo1PWpYhcAAwEIB4h4BBgWCAAgFiEET+x2/0L4tExpA9CoigiL 
 +SoC704QFAmRf8x4CGwwACgkQigiLSoC704QD4gEAlNCgutORJhmHM4OXujuSihNM 
 +SFOruQ0p30cb136eLfoBAKoOV+jsBzixXc14c0Yg+ewgukc+4ewKF81zn7SdAJEK 
 +=Jk/+ 
 +-----END PGP PUBLIC KEY BLOCK-----</file> 
 + 
 +<WRAP center round tip 60%> 
 +Diese Datei benötigen wir später, wenn wir den public-key im [[#nitrokey_3c_nfc_und_thunderbird|Thunterbird-Mailclient]] installieren wollen! 
 +</WRAP> 
 + 
 + 
 +=== change-pin === 
 +Wie schon mit der **[[centos:nitrokey:pro#nitrokey-app|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. 
 + 
 +<WRAP center round important 80%> 
 +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 (Verlust aller Kartendaten!) zurück gesetzt werden! 
 +</WRAP> 
 + 
 +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 Nutzer 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 
 +<code>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?</code> 
 + 
 +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. 
 + 
 +{{ :nitrokey:nitropad_057.png?nolink&240 |Bild: PIN-Eingabedialog beim Abändern der Benutzer-/Admin-PIN}} 
 + 
 +=== Verschlüsseln und entschlüsseln ===  
 +Nun werden wir kurz einmal testen, ob wir mit Hilfe der Hardware-Schlüssel-Karte eine Datei ver- und wieder entschlüsseln können. 
 + 
 +  - Zunächst legen wir uns erst einmal ein beliebiges Testdokument an. <code> $ date >> testdatei.txt</code> Die Datei hat nun folgenden Inhalt:<code> $ cat testdatei.txt</code><code>Sat May 13 06:25:41 PM CEST 2023</code> 
 +  - Nun verschlüsseln wir dieses Textdokument: <code> $ gpg2 -o testdatei.txt.pgp -a -r django@nausch.org -e testdatei.txt</code><code>gpg: checking the trustdb 
 +gpg: marginals needed: 3  completes needed: 1  trust model: pgp 
 +gpg: depth: 0  valid:    signed:    trust: 0-, 0q, 0n, 0m, 0f, 4u</code> Wir haben also nun zwei Dokumente auf der Platte liegen. <code> $ ll testdatei.txt*</code><code>-rw-rw-r-- 1 django django  33 May 13 18:25 testdatei.txt 
 +-rw-rw-r-- 1 django django 573 May 13 18:26 testdatei.txt.pgp</code>Die Datei **testdatei.txt.pgp** können wir nun soweit nicht mehr lesen.<code> $ cat testdatei.txt.pgp</code><code>-----BEGIN PGP MESSAGE----- 
 + 
 +hQEMA+fq0wZY6Y4UAQf9GLHhNN5BdDZNmX6Gq3eDIVnNEnZX3fuqr/A4RVBmcZtC 
 +AQXTu0ZKdHRJztOcnu8UtBlbPCK54950xcOmH2TzpAM0+AMIsnDttdG8rykJW2/
 ++Rvp4D49vK4wJrn367U3slTHggK3IVGKds+MB4SDvR4FxaroorC9TeFBF/xu7Tql 
 +hV9DAmpHLfhHgLjMs6OuS2WJSTKGXL8PMQg1JuZavYaeyBP1wkDY/TCPGDolNghT 
 +UYXksbKu4HR7BTeNqtQVDg8+zrCsEpCAKQiGyftI+jerHpeXhpLxvVakQj8r074d 
 +H4h44TV4ufXB7AiIari8DcuUD1sZGb4/BxeFK4ugM9JpAWFRpE6GLonMNqOz2B/
 ++ELcXqw4/pjhrPGU/3y0KszlVSo3FMEBfgvrk6hrdCqCK/rXfgBVQem5h75Q3jL3 
 +jf5te63+BtJrphbSoY3qFK+zOMCxbnHCBS0L5BYV4YfcwNg/SXS9/mvt 
 +=U5Ad 
 +-----END PGP MESSAGE-----</code> 
 +  - Nun entschlüsseln wir unser Dokument wieder.<code> $ gpg2 --decrypt testdatei.txt.pgp > testdatei-entschlüsselt.txt</code><code>gpg: encrypted with 2048-bit RSA key, ID E7EAD30658E98E14, created 2023-05-13 
 +      "Django <django@nausch.org>"</code> Den Inhalt dieser Datei können wir nun nach erfolgter Entschlüsselung natürlich wieder lesen.<code> $ cat testdatei-entschlüsselt.txt</code><code>Sat May 13 06:25:41 PM CEST 2023</code> 
 + 
 +=== Signieren ===  
 +Nun werden wir kurz einmal testen, ob wir mit Hilfe der Hardware-Schlüssel-Karte eine Datei signieren und die Signatur auch wieder prüfen können. 
 + 
 +  - Wir legen uns also erst einmal ein beliebiges Testdokument an. <code> $ date >> textdatei.txt</code> Die Datei hat nun folgenden Inhalt:<code> $ cat textdatei.txt</code><code>Sat May 13 06:35:49 PM CEST 2023</code> 
 +  - Nun signieren wir dieses Textdokument: <code> $ gpg --sign textdatei.txt</code><code>gpg: detected reader `Nitrokey Nitrokey 3C NFC (FSIJ-1.2.10-43243711) 00 00' 
 +gpg: signatures created so far: 5 
 + 
 +Please enter the PIN 
 +[sigs done: 5]</code> Wir haben also nun zwei Dokumente auf der Platte liegen. <code> $ ll textdatei.txt*</code><code>-rw-rw-r-- 1 django django  33 May 13 18:35 textdatei.txt 
 +-rw-rw-r-- 1 django django 383 May 13 18:36 textdatei.txt.gpg</code>Die Datei **textdatei.txt.pgp** können wir nun soweit nicht lesen.<code> $ cat textdatei.txt.pgp</code><code>��������u�� 
 +y���kL�xKR+JRKR3�J���=���% 
 +��� 
 +�� 
 +fVƦV&� 
 +� 
 +ή�! 
 +FF�\���, 
 +        � 
 +         �b�,O��4k3����|f,+�.N���i��u ׸%u^ȼ.)2)�ͤ�����f\�7 �j���� f�G�*�����>_�q��*o]��9'���w����.��|�����J��y'��H�l�.�Z���a� 
 +                                                                                                                                   ����цi�����\ʝ�l΄Y�-���}�vqR����M"�Z��]�.�>5��o[�+��?���v������V��Y�K��� D�E�"� 
 +                                        �<�SU�`�z�����K��r5�4 
 +9�.��j2�$�K+�;qW�3���/a��w�Lg�N��;�c+���^�z��</code> Die Datei beinhaltet die Signatur zu unserer Datei, also entsprechender Zahlensalat.<code> $ file textdatei.txt.gpg</code><code>textdatei.txt.gpg: data</code>  Dieses Vorgehen macht jedoch nur Sinn, wenn mit der Option ''%%--%%encrypt'' gleichzeitig die Datei verschlüsselt werden soll. Wir signieren nun die Datei mit dem privat-key und verschlüsseln die Datei mit dem public-key unseres eigenen Schlüssels auf dem Nitrokey 3C NFC. So kann die Datei nur von uns selbst wieder aufgemacht werden, sofern man im Besitz des Nitrokey 3C NFC und der zugehörigen PIN ist!<code> $ gpg --encrypt --sign -r secmail@nausch.org textdatei.txt</code><code>gpg: detected reader `Nitrokey Nitrokey 3CNFC (FSIJ-1.2.10-43243711) 00 00' 
 +gpg: signatures created so far: 8 
 + 
 +Please enter the PIN 
 +[sigs done: 8]</code>Wir haben nunmehr eine neue verschlüsselte und signierte Datei.<code> $ file textdatei.txt.gpg</code><code>textdatei.txt.gpg: PGP RSA encrypted session key - keyid: E7EAD306 58E98E14 RSA (Encrypt or Sign) 2048b .</code>Im nun folgendem Beispiel signieren wir unsere Datei und konvertieren sie so, dass wir sie einfach per eMail verschicken können. Hierzu nutzen wir die Option ''%%--%%armor''.<code> $ gpg --sign --armor textdatei.txt</code><code>gpg: detected reader `Nitrokey Nitrokey 3C NFC (FSIJ-1.2.10-43243711) 00 00' 
 +gpg: signatures created so far: 9 
 + 
 +Please enter the PIN 
 +[sigs done: 9]</code>Nun können wir uns die erstellte signierte Datei ansehen. <code> $ cat textdatei.txt.asc</code><code>-----BEGIN PGP MESSAGE----- 
 + 
 +owGbwMvMwMHodeDVCnmP9POMa0ySeEtSK0pSEktSM/VKgIz4vd+CE0sUfBMrFQyN 
 +FQzMrIxNrUwsFQJ8FZxdg0MUjAyMjLk6GY1ZGBg5GGTFFFmetK9p1ma28W85+vkq 
 +zFhWJpAxDFycAjCRB94cDPvZpr5pP26SIV+TsFxoAvOXFSd2KnyVmtVfeepx8rLH 
 +Wk0nTuXMenX7D2/7htilogHtpkcExK97Mm50e5Sjss7jz2bVP7xu2Uyb7p+T9H3o 
 +PDfycH/WAgU1LqGvdgxFG6ZtfGHoqb259wPDi5eV1160SH69/SM5t5d3wY0M4Zqb 
 +93zEz4UxN1mtm/Njnn2SY/Xb/VY3fq+eNaFYbGdvyvTutvBlzXN69evv2lxfuDrc 
 +5npJrsZpfteyuhP/Tm6wkHue46Dj53JmZ1Voz8KHRUJ1s7UnM/6ecnEB++VYw17e 
 +mdc09kzSlotkCFOSFul9IFy6e1brMaNb9+1Zf0+0Nnbr52wN/SiYc35KhbCmMgA= 
 +=qGsv 
 +-----END PGP MESSAGE-----</code> Soll die Originaldatei zusammen mit der Signatur in der erzeugten Datei stehen, so verwendet man die Option ''%%–-%%clearsign''.<code> $ gpg --clearsign --armor textdatei.txt</code>Die erzeugte Testdatei.asc enthält dann sowohl den Originaltext, wie auch die Dateisignatur: <code> $ cat textdatei.txt.asc</code><code>-----BEGIN PGP SIGNED MESSAGE----- 
 +Hash: SHA256 
 + 
 +Sat May 13 06:35:49 PM CEST 2023 
 +-----BEGIN PGP SIGNATURE----- 
 + 
 +iQEzBAEBCAAdFiEE5IesgysDPE+ExfPVSsDqqB9IZ88FAmRfvjYACgkQSsDqqB9I 
 +Z89a+wf9G8p8WwMI7YiOwD73qV0XmDovBd4DFc13Jm+0Rocz3W54MdGhcgsk3u0t 
 +4cg5cqX4S4DxYIL15u9yYv5LVWlWqCiTyxUAiN7qxY42lUtR0+9w3Eizc6MuR7YX 
 +0Va54V5o8jd/LoftibrUaEGVYcBw5/6M8jr2Pj0snYZqhXAYZVZ9lqiB+tqfaR0o 
 +AlAXEZb+xNni38wuClvqz03v0kL6+m9DTyLwmoGOUHEtaZIn7OR1XHv7W52v9bA6 
 +rfhcY1xXERfjuNd6oe8SBGR428GZzbhw4m/SZqTUXlX0GHJVk0nsYbWAmQhHoY6G 
 +TDTH3OGzdvgSZl2vAd0KSzJ7i4+Dvg== 
 +=TCtk 
 +-----END PGP SIGNATURE-----</code> Mit ''gpg %%-–%%verify'' können wir die Signatur der Datei überprüfen:<code> $ gpg --verify textdatei.txt.asc</code><code>gpg: Signature made Sat 13 May 2023 06:43:34 PM CEST 
 +gpg:                using RSA key E487AC832B033C4F84C5F3D54AC0EAA81F4867CF 
 +gpg: Good signature from "Django <django@nausch.org>" [ultimate] 
 +gpg: WARNING: not a detached signature; file 'textdatei.txt' was NOT verified!</code>Wir verändern nun zu Testzwecken den Inhalt der Testdatei, in dem wir den Text verfälschen. <code> $ vim textdatei.txt.asc</code><code>-----BEGIN PGP SIGNED MESSAGE----- 
 +Hash: SHA256 
 + 
 +Sat May 13 06:35:49 PM CEST 2023 
 +-----BEGIN PGP SIGNATURE----- 
 + 
 +IQEzBAEBCAAdFiEE5IesgysDPE+ExfPVSsDqqB9IZ88FAmRfvjYACgkQSsDqqB9I 
 +Z89a+wf9G8p8WwMI7YiOwD73qV0XmDovBd4DFc13Jm+0Rocz3W54MdGhcgsk3u0t 
 +4cg5cqX4S4DxYIL15u9yYv5LVWlWqCiTyxUAiN7qxY42lUtR0+9w3Eizc6MuR7YX 
 +0Va54V5o8jd/LoftibrUaEGVYcBw5/6M8jr2Pj0snYZqhXAYZVZ9lqiB+tqfaR0o 
 +AlAXEZb+xNni38wuClvqz03v0kL6+m9DTyLwmoGOUHEtaZIn7OR1XHv7W52v9bA6 
 +rfhcY1xXERfjuNd6oe8SBGR428GZzbhw4m/SZqTUXlX0GHJVk0nsYbWAmQhHoY6G 
 +TDTH3OGzdvgSZl2vAd0KSzJ7i4+Dvg== 
 +=TCtk 
 +-----END PGP SIGNATURE-----</code>Nun überprüfen wir die Signatur der Testdatei, was natürlich postwendend als **BAD signature** angeprangert wird. <code> $ gpg --verify textdatei.txt.asc</code><code>gpg: Signature made Sat 13 May 2023 06:43:34 PM CEST 
 +gpg:               using RSA key ID E487AC832B033C4F84C5F3D54AC0EAA81F4867CF 
 +gpg: BAD signature from "Django aka [BOfH] (Bastard Operator from Hell) <secmail@nausch.org>"</code> 
 + 
 +==== Nitrokey 3C NFC und Thunderbird ====  
 +Nachdem wir nun unsere Schlüssel auf dem Kryptostick erstellt haben, wollen wir diesen nun verwenden um bei Thunderbird unsere elektronische Kommunikation per eMail abzusichern.  
 + 
 +=== Schlüssel einem Konto zuweisen === 
 +Damit wir unser Kryptodevice unter Thunderbird nutzen können müssen wir unsere zuvor erzeugten Schlüsse unserem betreffenden Konto zuweisen.  
 +Über das Menü wählen wir den Punkt **Konten-Einstellungen** aus. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_01.png?nolink&851 |Bild: Thunderbird - Menüpunkt Konten-Einstellungen}} 
 + 
 +Beim passenden Konto wählen wir dann die Option **Ende-zu-Ende-Verschlüsselung** aus. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_02.png?nolink&850 |Bild: Thunderbird - Menüpunkt Ende-zu-Ende-Verschlüsselung}} 
 + 
 +Hier wählen wir den letzten Menüpunkt **__E__xternen Schlüssel mittels GnuPG benutzen** (z.B. von einer Smartcard) aus. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_03.png?nolink&500 |Bild: Thunderbird - Menüpunkt Ende-zu-Ende-Verschlüsselung}} 
 + 
 +In dem nun angezeigten Fenster, tragen wir nun die Long-Key-ID unseres Schlüssels ein. Dazu holen wir uns die Key-ID aus unserem Krypto-Device wie folgt. 
 +   $ gpg2 --card-status | grep sec\>  
 +<code>sec>  ed25519/8A088B4A80BBD384  created: 2023-05-13  expires: never</code> 
 + 
 +In diesem Beipiel haben wir also die Key-ID: **8A088B4A80BBD384**. Diese tragen wir ein und klicken auf die Schaltfläche **[ Schlüssel-ID Speichern ]**. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_04.png?nolink&500 |Bild: Thunderbird - Menüpunkt Ende-zu-Ende-Verschlüsselung}}. 
 + 
 +Schritt eins ist erledigt, der Schlüssel unseres Krypto-Devices ist nun Thunderbird bekannt. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_05.png?nolink&850 |Bild: Thunderbird - Menüpunkt Ende-zu-Ende-Verschlüsselung}}. 
 + 
 +===  Öffentlichen Schlüssel importieren === 
 +Damit wir unseren PGP-Schlüssel unseres **Nitrokey 3C NFC** zum Verschlüsseln und auch zum Signieren verwenden können, müssen wir noch den öffentlichen Schlüssel dem Thunderbird bekannt machen. Wie bereits beim Abschnitt [[#oeffentlichen_schluessel_ausgeben|GnuPG - Öffentlichen Schlüssel ausgeben]] angesprochen, holen wir uns nun noch unseren public-key aus dem **Nitrokey 3C NFC** und speichern diesen in eine Datei. 
 +   $ gpg --export --armor secmail@nausch.org > secmail@nausch.org.pubkey 
 + 
 +Rechts im sog. "Hamburger-Menü" finden wir den Auswahlpunkt **Extras**. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_06.png?nolink&850 |Bild: Thunderbird - Menüpunkt Extras}}. 
 + 
 +Dieses wählen wir aus und klicken dann als nächstes auf den Menüpunkt **O__p__enPGP-Schlüssel verwalten**. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_07.png?nolink&850 |Bild: Thunderbird - Menüpunkt OpenPGP Schlüssel verwalten}} 
 + 
 +Unter dem Menüpunkt **Datei** wählen wir nun **Öffentliche(n) Schlüssel aus __D__atei importieren** aus. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_09.png?nolink&500 |Bild: Thunderbird - Fenster OpenPGP Schlüssel verwalten}} 
 + 
 +Wir wählen unsere zuvor exportierte Schlüsseldatei mit dem öffentlichen Schlüssel aus und wählen die Option **Akzeptiert (nicht verifiziert)**   aus und klicken auf die Schaltfläche **[ Importieren ]**. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_10.png?nolink&500 |Bild: Thunderbird - Fenster OpenPGP Schlüssel verwalten}} 
 + 
 +Bevor wir nun den Import mit einem Klick auf die Schaltfläche **[ OK ]** abschliessen, bearbeiten wir noch die Schlüsselakzeptanz, in dem wir den blau hinterlegten Link **Details anzeigen und Schlüsselakzeptanz verwalten** an. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_11.png?nolink&400 |Bild: Thunderbird - Fenster OpenPGP Schlüssel verwalten}} 
 + 
 +Da wir ja unseren Schlüssel selbst aus dem **Nitrokey 3C NFC** exportiert und im Thunderbird importiert hatten, spricht nichts dagegen, diesem Schlüssel das entsprechende Vertrauen auszusprechen. Natürlich prüfen wir hier auch den entsprechenden Fingerprint, des Kryptodevices und vergleichen diesen mit der Angabe im Fenster. 
 +   $ gpg2 --card-status | grep Signature\ key 
 +<code>Signature key ....: 4FEC 76FF 42F8 B44C 6903  D0A8 8A08 8B4A 80BB D384</code> 
 +Stimmen die Daten überein, wählen wir nun den Punkt **Ja, ich selbst habe geprüft, dass der Schlüssel über den korrekten Fingerabdruck verfügt** und klicken auf die Schaltfläche **[OK ]**.  
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_12.png?nolink&500 |Bild: Thunderbird - Fenster OpenPGP Schlüssel verwalten}} 
 + 
 +Unser öffentlicher Schlüssel ist im Keyring nun auch unserem MUA((**M**ail **U**ser **A**gent)) Thunderbird bekannt und wir können nun eMails signieren, verschlüsseln und auch empfangene verschlüsselte Nachrichten auch wieder entschlüsseln wie gewohnt. 
 + 
 +{{ :nitrokey:linuxmint:thunderbird_nitrokey_3c_13.png?nolink&400 |Bild: Thunderbird - Fenster OpenPGP Schlüssel verwalten}} 
 + 
 +==== Nitrokey 3C NFC und Nitrokey 3A mini und Secure Shell ==== 
 +<WRAP center round important 90%> 
 +Ob man in Zeiten von Überwachungsphantasten in Unternehmen und vor allem auch bei einer NSA oder BND, noch **[[http://www.golem.de/news/elliptische-kurven-die-herkunft-der-nist-kurven-1309-101567.html|RSA-Schlüssel]]** einsetzen kann und mag, muss natürlich jeder Admin für sich selbst entscheiden.  
 + 
 +Der Sicherheitsguru Bruce Schneier hat in seinem **[[https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html#c1675929|Blog]]** hierzu eine eindeutige Aussage getätigt:  
 + 
 +<wrap em>//"On the crypto bits in your guardian piece, I found especially interesting that you suggest classic discrete log crypto over ecc. I want to ask if you could elaborate more on that." __I no longer trust the constants. I believe the NSA has manipulated them through their relationships with industry.__//</wrap> 
 + 
 +**[[https://de.wikipedia.org/wiki/Curve25519|EED25519]]** ist ein Elliptic Curve Signature Schema, welches beste Sicherheit bei vertretbaren Aufwand verspricht, als ECDSA oder DSA dies der Fall ist. Zur Auswahl sicherer kryptografischer Kurven bei der //Elliptic-Curve Cryptography// findet man auf der Seite [[https://safecurves.cr.yp.to/|hier]] hilfreiche Erklärungen und eine Gegenüberstellung der möglichen verschiedenen Alternativen. 
 +</WRAP> 
 + 
 +Auf RSA Schlüssel muss man aber nicht mehr zwingend zurückgreifen, stehen doch aktuellere und zeitgemässere Cipher, MACs, Schlüssel Typen und Key Exchange Algorithmen zur Verfügung. Als Alternative zu einem RSA-Keys haben wir uns bereits im Abschnitt **[[#ed25519-schluessel_generieren|Nitrokey 3 und GnuPG - ED25519-Schlüssel generieren]]** Schlüsselmaterial auf Basis elliptischer Kurven erstellt, unter anderem auch einen //**Authentication Key**// erstellt.  
 +Diesen Schlüssel wollen wir nun auch zur Serveradministration verwenden. 
 + 
 +=== SSH Client vorbereiten === 
 +Damit wir beim Verbindungsaufbau auf den Authentication Key zugreifen können, müssen wir unseren Client entsprechend vorbereiten. 
 + 
 +Hierzu aktivieren wir zunächst die Option ''**enable-ssh-support**'' in der Konfigurationsdatei //**~/.gnupg/gpg-agent.conf 
 +**// des GPG-Agenten. 
 +   $ vim ~/.gnupg/gpg-agent.conf 
 +<file bash ~/.gnupg/gpg-agent.conf># File re-created by pEp 
 +# See backup in '/home/django/.gnupg/gpg-agent.conf.1.pep.bkp' 
 + 
 +# File re-created by pEp 
 +# See backup in '/home/django/.gnupg/gpg-agent.conf.0.pep.bkp' 
 + 
 +default-cache-ttl 300 
 +max-cache-ttl 999999 
 + 
 +# Django : 2023-07-21 
 +#          SSH-Unterstützung beim gnupg-agent aktiviert  
 +enable-ssh-support</file> 
 + 
 +Anschließend müssen wir noch die Datei //**~/.bashrc**// erweitern, damit der **SSH_AUTH_SOCK** für den Zugriff des SSH-Schlüssels auf dem Nitrokey Start genutzt werden kann. 
 +   $ vim ~/.bashrc 
 +<file bash ~/.bashrc># .bashrc 
 + 
 +# Source global definitions 
 +if [ -f /etc/bashrc ]; then 
 +        . /etc/bashrc 
 +fi 
 + 
 +# User specific environment 
 +PATH="$HOME/.local/bin:$HOME/bin:$PATH" 
 +export PATH 
 + 
 +# Uncomment the following line if you don't like systemctl's auto-paging feature: 
 +# export SYSTEMD_PAGER= 
 + 
 +# User specific aliases and functions 
 + 
 +# Django : 2023-07-27 
 +#          Definition des SSH_AUTH_SOCK für den Zugriff des SSH-Schlüssels auf dem Nitrokey Start 
 +unset SSH_AGENT_PID 
 +        if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then 
 +        export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" 
 +fi</file> 
 + 
 +Damit unsere Änderungen aktiv werden, müssen wir nun zum Schluss noch den **pgp-agent** restarten bzw. einen Neustart des Clients erwirken. Der Einfachheit halber für den pragmatischen weg und melden uns einmal von unserer X-Session an unserem Clientrechner ab und wieder an! 
 + 
 +=== Public-Key des ED25519 SSH exportieren === 
 +Für den Zugriff auf unser Ziel-System mit Hilfe der **SSH** benötigen wir noch den öffentlichen Schlüssel unseres Authentication Keys, den wir nun exportieren werden. 
 +Zunächst besorgen wir uns die betreffende Schlüsselkennung des Autentication Keys, genauer gesagt die 4 letzten Zahlenreihen des nachfolgenden Aufrufs. 
 +   $ gpg2 --card-status | grep Authentication\ key 
 + 
 +  Authentication key: 52A9 FF83 7DAF 9A77 7914  C5B1 B2DC 29E1 28F5 834D 
 + 
 +In diesem Konfigurationsbeispiel ist die Schlüssel-ID des Autentication Keys also die Nummer ''**52A9FF837DAF9A777914C5B1B2DC29E128F5834D**''
 + 
 +Nun exportieren wir den öffentlichen Schlüssel und schreiben diesen in eine separate Datei. 
 +   $ keyid=$(gpg2 --card-status | grep Authentication\ key | sed 's/ //g' | sed 's/^.\{18\}//g') ; \ 
 +             gpg2 --export-ssh-key $keyid >> ~/.ssh/$keyid.ssh.pubkey 
 +Der Öffentliche Schlüssel in diesen Konfigurationsbeispiel lautet also: 
 +   $ cat .ssh/52A9FF837DAF9A777914C5B1B2DC29E128F5834D.ssh.pubkey 
 + 
 +  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJA+NwP2KxzqkrhKxi6JDRDUyE/ofPtiWwOb0ZjbQJW7 openpgp:0xF32A76AE 
 + 
 +Diesen Schlüssel kopieren wir nun auf das entsprechende Zielsystem an Ort und Stelle ''**~/.ssh/authorized_keys**''
 +   $ scp ~/.ssh/52A9FF837DAF9A777914C5B1B2DC29E128F5834D.ssh.pubkey zielhost.dmz.nausch.org: && \  
 +     ssh zielhost.dmz.nausch.org 'cat authorized_keys >> ~/.ssh/authorized_keys' 
 + 
 +<WRAP round info>Das Kopieren des Public-Keys auf unseren Zielhost mit Anpassen der Dateiberechtigungen kann man natürlich auch einfacher vornehmen. Man benutzt hierzu einfach den Befehl **ssh-copy-id** aus dem Paket //**openssh-clients**//
 +  * ed25519-Key <code> $ ssh-copy-id -i ~/.ssh/52A9FF837DAF9A777914C5B1B2DC29E128F5834D.ssh.pubkey testhost.intra.nausch.org</code> 
 + 
 +Mit der Angabe von ''~/.ssh/id_ed25519_dmz'' kopiert dann der Befehl **ssh-copy-id** den zugehörigen öffentlichen Schlüssel auf den Zielhost ''testhost.intra.nausch.org''
 +</WRAP> 
 + 
 + 
 + 
 +=== SSH-Verbindung aufbauen === 
 +Nun können wir wie gewohnt eine Verbindung zu unserem entfernten System aufbauen.  
 +   $ ssh zielhost.dmz.nausch.org 
 + 
 +Da der SSH-Key zur Authentication nicht im Dateisystem liegt, sondern auf der SmartCard des Nitrokey werden wir nun nach der User-PIN gefragt, damit auf den privaten Schlüssel der Karte zugegriffen werden kann. 
 + 
 +{{ :suse:nitrokey:nitrokey-start-suse-01.png?direct&350 |Bild: PIN Abfrage beim Zugriff auf den Authentication Key der SmartCard des Nitrokeys}} 
 + 
 +Der entsperrte Schlüssel der SmartCard des Nitrokey Start wird nur für den Verbindungsaufbau zum Zielsystem verwendet. Bei jedem erneuten SSH-Verbindung müssen wir **__erneut__** bei angestecktem Nitrokey Start die PIN Nummer zum Entsperren eingeben! 
 + 
 + 
 +===== Web(-server)-Anwendung ===== 
 +==== Browser ====
 Verwenden wir den Browser **[[https://www.google.com/chrome/|Google Chrome]]** bzw. Chromium müssen wir nichts besonderes unternehmen, da diese bereits bestens vorbereitet sind. Auch beim Browser **Firefox //78.0.2esr (64-bit)//** bedarf es keiner gesonderten Konfiguration mehr. Im Zweifelsfall kann man sich aber auch vergewissern, ob die Option hier richtig gesetzt ist. Verwenden wir den Browser **[[https://www.google.com/chrome/|Google Chrome]]** bzw. Chromium müssen wir nichts besonderes unternehmen, da diese bereits bestens vorbereitet sind. Auch beim Browser **Firefox //78.0.2esr (64-bit)//** bedarf es keiner gesonderten Konfiguration mehr. Im Zweifelsfall kann man sich aber auch vergewissern, ob die Option hier richtig gesetzt ist.
  
Zeile 165: Zeile 1076:
  
 {{ :suse:nitrokey:firefox_fido2.png?nolink&625 |Bild: Bildschirmhardcopy Firefox "about:config"}} {{ :suse:nitrokey:firefox_fido2.png?nolink&625 |Bild: Bildschirmhardcopy Firefox "about:config"}}
- 
  
 Mit einem Doppelklick würden wir die Option aktivieren indem wir den Parameter auf auf **//true//** setzen.. Mit einem Doppelklick würden wir die Option aktivieren indem wir den Parameter auf auf **//true//** setzen..
  
-===== Webserver/Anwendung ===== 
 ==== Nextcloud ==== ==== Nextcloud ====
 === Vorbereitende Arbeiten === === Vorbereitende Arbeiten ===
-Bevor wir unseren **Nitrokey 3C NFC** als zusätzliches Authentifizierungs-Gerät verwenden können, melden wir uns wie gewohnt an unserem Konto an. +Bevor wir unseren **Nitrokey 3C NFC** als zusätzliches Authentifizierungs-Gerät verwenden können, sind noch ein paar vorbereitende Arbeiten notwendig. So benötigen wir zum einen eine entsprechende Erweiterung für die Nutzung der Zweifaktorauthentifizierung und zum anderen müssen wir unseren Key anmelden und zur Sicherheit noch Backup-Codes erzeugen, falls der **Nitrokey 3C NFC** verloren oder defekt gehen sollte. 
-{{ :nitrokey:linuxmint:nextcloud_2fa_1.png?801 |Bild: Bildschirmhardcopy  Anmelden an unserer Cloud}}+ 
 +Zuerst installieren wir uns, angemeldet als User mit entsprechenden Admin-Rechten, das Plugin **Two-Factor WebAuthn** aus der Gruppe **Sicherheit**. 
 + 
 +{{ :nitrokey:linuxmint:firefox_nitrokey_3c_07.png?nolink&850 |Bild: Nextcloud - Plugin Installation}} 
 + 
 +Anschliessend melden wir uns wie gewohnt mit den altbekannten Anmeldedaten unseren Benutzerkontos an unserer [[https://cloud.nausch.org|Nextcloud]] an. 
 + 
 +{{ :nitrokey:linuxmint:firefox_nitrokey_3c_01.png?nolink&850 |Bild: Nextcloud Anmeldebildschirm}}
  
 Die Einrichtung unseres **Nitrokey 3C NFC** erfolgt über das Menü **[ Einstellungen ]** und **Sicherheit**. Hier finden wir im Abschnitt **Zwei-Faktor-Authentifizierung** den entsprechenden Abschnitt. Die Einrichtung unseres **Nitrokey 3C NFC** erfolgt über das Menü **[ Einstellungen ]** und **Sicherheit**. Hier finden wir im Abschnitt **Zwei-Faktor-Authentifizierung** den entsprechenden Abschnitt.
  
-{{ :nitrokey:linuxmint:nextcloud_2fa_2.png?801 |Bild: Bildschirmhardcopy  Menü der Sicherheitseinstellungen im Cloud-Konto}}+{{ :nitrokey:linuxmint:firefox_nitrokey_3c_10.png?nolink&850 |Bild: Nextcloud Sicherheits-Einstellungen - Zwei-Faktor-Authentifizierung}}
  
-Zum Anbzw. Einbinden unseres **Nitrokey 3C NFC** klicken wir auf die Schaltfläche **[U2F-Gerät hinzufügen]**.+Den Hinweisen entsprechend stecken wir nun den Kryptostick an den USB-C Port des Rechners und berühren die grünbläulich leuchtende Fläche auf dem Kryptostick.
  
-{{ :nitrokey:linuxmint:nextcloud_2fa_3.png?801 |Bild: Bildschirmhardcopy  Hinweis beim Anlernen des Nitrokey 3C NFC}}+{{ :nitrokey:linuxmint:firefox_nitrokey_3c_11.png?nolink&850 |Bild: Nextcloud Sicherheits-Einstellungen - Zwei-Faktor-Authentifizierung}}
  
-Den Hinweisen entsprechend stecken wir nun den Kryptostick an den USB-C Port des Rechners und berühren die grün leuchtende Fläche auf dem Kryptostick.+Unserem nun angemeldeten Stick verpassen wir nun noch einen sprechenden Namen und schliessen damit die Erstkonfiguration ab.
  
-{{ :nitrokey:linuxmint:nextcloud_2fa_4.png?801 |Bild: Bildschirmhardcopy  Hinweis beim Anlernen des Nitrokey 3C NFC}}+{{ :nitrokey:linuxmint:firefox_nitrokey_3c_12.png?nolink&850 |Bild: Nextcloud Sicherheits-Einstellungen - Zwei-Faktor-Authentifizierung}}
  
-Anschließend vergeben wir noch einen Namen für das verbundene Krypto-Device.+Da wir ab sofort nun unseren **Nitrokey 3C NFC** zum Anmelden brauchen, erzeugen wir uns nun noch entsprechende Backup-Codes, damit wir uns bei Verlust oder Defekt des Krypto-Devices noch anmelden können. 
 + 
 +{{ :nitrokey:linuxmint:firefox_nitrokey_3c_13.png?nolink&850 |Bild: Nextcloud - Sicherheits-Einstellungen - Backup-Codes}}
  
 === Anmelden mit zwei Faktor-Authentifizierung === === Anmelden mit zwei Faktor-Authentifizierung ===
 Wenn wir uns nun zukünftig an unserer Cloud anmelden, werden wir wie gewohnt nach dem User und Passwort gefragt. Wenn wir uns nun zukünftig an unserer Cloud anmelden, werden wir wie gewohnt nach dem User und Passwort gefragt.
  
-{{ :nitrokey:linuxmint:nextcloud_2fa_1.png?801 |Bild: Bildschirmhardcopy -  Anmelden an unserer Cloud}}+{{ :nitrokey:linuxmint:firefox_nitrokey_3c_14.png?nolink&800 |Bild: Bildschirmhardcopy -  Anmelden an unserer Cloud}}
  
 Nach dem Bestätigen der Daten werden wir nun gebeten unseren **Nitrokey 3C NFC**-Stick anzustecken und die Touch-Taste darauf zu drücken bzw. genauer gesagt zu berühren. Nach dem Bestätigen der Daten werden wir nun gebeten unseren **Nitrokey 3C NFC**-Stick anzustecken und die Touch-Taste darauf zu drücken bzw. genauer gesagt zu berühren.
  
-{{ :nitrokey:linuxmint:nextcloud_2fa_6.png?801 |Bild: Bildschirmhardcopy -  Anmelden an unserer Cloud}}+{{ :nitrokey:linuxmint:firefox_nitrokey_3c_15.png?nolink&800 |Bild: Bildschirmhardcopy -  Anmelden an unserer Cloud}}
  
 Nach einer Sekunde werden wir automatisch angemeldet und wir können den Stick wieder vom USB-Port abziehen. Nach einer Sekunde werden wir automatisch angemeldet und wir können den Stick wieder vom USB-Port abziehen.
Zeile 203: Zeile 1121:
 Im nächsten Konfigurationsbeispiel wollen wir unseren GitHub-Account mit einer Zweifaktorathentifizierungsoption mit Hilfe unseres **Nitrokey 3C NFC** ausstatten. Im nächsten Konfigurationsbeispiel wollen wir unseren GitHub-Account mit einer Zweifaktorathentifizierungsoption mit Hilfe unseres **Nitrokey 3C NFC** ausstatten.
 === Vorbereitende Arbeiten === === Vorbereitende Arbeiten ===
-Das Einrichten eines zweiten Faktors ist [[https://docs.github.com/en/github/authenticating-to-github/configuring-two-factor-authentication#configuring-two-factor-authentication-using-fido-u2f|hier]] ausfürlich beschrieben und mit Hilfe der dort beschreibenen Vorgehen werden wir nun auch vorgehen.+Das Einrichten eines zweiten Faktors ist [[https://docs.github.com/en/github/authenticating-to-github/configuring-two-factor-authentication#configuring-two-factor-authentication-using-fido-u2f|hier]] ausführlich beschrieben und mit Hilfe der dort beschriebenen Vorgehen werden wir nun auch vorgehen.
  
 Bevor wir unser Krypto-Gerät als zweiten Faktor einrichten und verwenden können, müssen wir bei **[[https://github.com/|GitHub]]** zunächst Textnachricht/SMS als zweiten Faktor aktivieren. Dazu gehen wir wie folgt **[[https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages|beschrieben]]** vor: Bevor wir unser Krypto-Gerät als zweiten Faktor einrichten und verwenden können, müssen wir bei **[[https://github.com/|GitHub]]** zunächst Textnachricht/SMS als zweiten Faktor aktivieren. Dazu gehen wir wie folgt **[[https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-text-messages|beschrieben]]** vor:
Zeile 210: Zeile 1128:
   - Links finden wir nun in den persönlichen Einstellungsmöglichkeiten die Option **Account security**. {{ :nitrokey:linuxmint:github_2fa_02.png?600 |Bild: GitHub Settings-Einstellungsmenüpunkt }}   - Links finden wir nun in den persönlichen Einstellungsmöglichkeiten die Option **Account security**. {{ :nitrokey:linuxmint:github_2fa_02.png?600 |Bild: GitHub Settings-Einstellungsmenüpunkt }}
   - Hier aktivieren wir nun den Punkt **[ Enable two-factor authentication ]**. {{ :nitrokey:linuxmint:github_2fa_03.png?600 |Bild: GitHub Einstellungsoption: Two-factor authentication }}   - Hier aktivieren wir nun den Punkt **[ Enable two-factor authentication ]**. {{ :nitrokey:linuxmint:github_2fa_03.png?600 |Bild: GitHub Einstellungsoption: Two-factor authentication }}
-  - Beim Einstellunkspunkt **Two-factor authentication** wählen wir die Option **Set up using SMS** und klicken auf die Schaltfläche **[ Continue ]**. {{ :nitrokey:linuxmint:github_2fa_04.png?525 |Bild: GitHub Einstellungsoption: Set up using SMS }} +  - Beim Einstellungspunkt **Two-factor authentication** wählen wir die Option **Set up using SMS** und klicken auf die Schaltfläche **[ Continue ]**. {{ :nitrokey:linuxmint:github_2fa_04.png?525 |Bild: GitHub Einstellungsoption: Set up using SMS }} 
-  - Unter **Authentication verification**, wählen wir den **Country Code** unseres Landes aus und geben unsere Mobiltelefonnummer (ohne führende Null) ein und klicken anschließend auf die Schaltfläche **[ Send authentication code ]**. {{ :nitrokey:linuxmint:github_2fa_05.png?525 |Bild: GitHub Einstellungsoption: Set up using SMS }} +  - Unter **Authentication verification**, wählen wir den **Country Code** unseres Landes aus und geben unsere Mobiltelefonnummer (ohne führende Null) ein und klicken anschliessend auf die Schaltfläche **[ Send authentication code ]**. {{ :nitrokey:linuxmint:github_2fa_05.png?525 |Bild: GitHub Einstellungsoption: Set up using SMS }} 
-  - Den sechsstelligen Code, den wir nun als SMS auf unser Mobiltelefon gesendet bekommen tragen wir nun in das Feld **Enter the six-digit code sent to your phone** ein und klicken anschließend auf die Schaltfläche **[ Continue ]**. Anschließend erhalten wir die **recovery codes**, die es ermöglichen im Notfall, falls z.B. der **Nitrokey 3C NFC** verloren gehen sollte, auf unser GitHub-Konto zuzugreifen. {{ :nitrokey:linuxmint:github_2fa_06.png?525 |Bild: GitHub Einstellungsoption: Set up using SMS }} +  - Den sechsstelligen Code, den wir nun als SMS auf unser Mobiltelefon gesendet bekommen tragen wir nun in das Feld **Enter the six-digit code sent to your phone** ein und klicken anschliessend auf die Schaltfläche **[ Continue ]**. Anschliessend erhalten wir die **recovery codes**, die es ermöglichen im Notfall, falls z.B. der **Nitrokey 3C NFC** verloren gehen sollte, auf unser GitHub-Konto zuzugreifen. {{ :nitrokey:linuxmint:github_2fa_06.png?525 |Bild: GitHub Einstellungsoption: Set up using SMS }} 
-  - Die Codes speichern wir am besten auf einem sicheren Speichergerät ab. Anschließend klicken wir auf die Schaltfläche **[ I have saved my recovery codes ]** zum Aktivieren der Zweifaktorauthentifizierung unseres Bneutzerkontos. {{ :nitrokey:linuxmint:github_2fa_07.png?525 |Bild: GitHub Erfolgreiche Aktivierung der SMS-2FA }}+  - Die Codes speichern wir am besten auf einem sicheren Speichergerät ab. Nun klicken wir auf die Schaltfläche **[ I have saved my recovery codes ]** zum Aktivieren der Zweifaktorauthentifizierung unseres Benutzerkontos. {{ :nitrokey:linuxmint:github_2fa_07.png?525 |Bild: GitHub Erfolgreiche Aktivierung der SMS-2FA }}
   - Zu guter Letzt melden wir uns einmal ab und erneut bei GitHub an. Nach Eingabe des Passwortes wird uns nun per SMS der Zugangscode zugeschickt den wir in das betreffende Feld eingeben. {{ :nitrokey:linuxmint:github_2fa_07.png?525 |Bild: GitHub Abfrage des per SMS zugesandten Zugangscode bei SMS-2FA }}   - Zu guter Letzt melden wir uns einmal ab und erneut bei GitHub an. Nach Eingabe des Passwortes wird uns nun per SMS der Zugangscode zugeschickt den wir in das betreffende Feld eingeben. {{ :nitrokey:linuxmint:github_2fa_07.png?525 |Bild: GitHub Abfrage des per SMS zugesandten Zugangscode bei SMS-2FA }}
   - Nun können wir endlich unseren **Nitrokey 3C NFC** als zweiten Faktor einbinden. Die ggf. nötige originale Beschreibung hierzu findet sich [[https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key|hier]]. Zunächst verbinden wir unseren Krypto-Stck mit dem USB-C Port unseres Rechners. In der rechten oberen Ecke unseres Browserfensters klicken wir auf den Menüpunkt **Settings**. {{ :nitrokey:linuxmint:github_2fa_01.png?160 |Bild: GitHub Settings-Einstellungsmenüpunkt }}   - Nun können wir endlich unseren **Nitrokey 3C NFC** als zweiten Faktor einbinden. Die ggf. nötige originale Beschreibung hierzu findet sich [[https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key|hier]]. Zunächst verbinden wir unseren Krypto-Stck mit dem USB-C Port unseres Rechners. In der rechten oberen Ecke unseres Browserfensters klicken wir auf den Menüpunkt **Settings**. {{ :nitrokey:linuxmint:github_2fa_01.png?160 |Bild: GitHub Settings-Einstellungsmenüpunkt }}
Zeile 219: Zeile 1137:
   - Hier wählen wir die Option **Security Keys** aus in dem wir auf die Schaltfläche **[  Add ]** klicken. {{ :nitrokey:linuxmint:github_2fa_09.png?600 |Bild: GitHub Hinzufügen eines Hardware-Sicherheits-Schlüssels }}   - Hier wählen wir die Option **Security Keys** aus in dem wir auf die Schaltfläche **[  Add ]** klicken. {{ :nitrokey:linuxmint:github_2fa_09.png?600 |Bild: GitHub Hinzufügen eines Hardware-Sicherheits-Schlüssels }}
   - Unter **Security keys** wählen wir nun die Schaltfläche **[ Register new security key ]** an. {{ :nitrokey:linuxmint:github_2fa_10.png?600 |Bild: GitHub Hinzufügen eines Hardware-Sicherheits-Schlüssels }}   - Unter **Security keys** wählen wir nun die Schaltfläche **[ Register new security key ]** an. {{ :nitrokey:linuxmint:github_2fa_10.png?600 |Bild: GitHub Hinzufügen eines Hardware-Sicherheits-Schlüssels }}
-  - Anschließend geben wir einen "sprechenden Namen" für unseren Krypto-Stick an, damit wir es bei ggf. mehreren Geräten leichter haben, diesen zuzuordnen. {{ :nitrokey:linuxmint:github_2fa_11.png?600 |Bild: GitHub Hinzufügen eines Hardware-Sicherheits-Schlüssels }}+  - Nun geben wir einen "sprechenden Namen" für unseren Krypto-Stick an, damit wir es bei ggf. mehreren Geräten leichter haben, diesen zuzuordnen. {{ :nitrokey:linuxmint:github_2fa_11.png?600 |Bild: GitHub Hinzufügen eines Hardware-Sicherheits-Schlüssels }}
   - Nach Eingabe des Namen werden wir nun gebeten unseren **Nitrokey 3C NFC**-Stick anzustecken bzw. die Touch-Taste darauf zu drücken bzw. genauer gesagt zu berühren. {{ :nitrokey:linuxmint:github_2fa_12.png?610 |Bild: GitHub Hinzufügen eines Hardware-Sicherheits-Schlüssels }}   - Nach Eingabe des Namen werden wir nun gebeten unseren **Nitrokey 3C NFC**-Stick anzustecken bzw. die Touch-Taste darauf zu drücken bzw. genauer gesagt zu berühren. {{ :nitrokey:linuxmint:github_2fa_12.png?610 |Bild: GitHub Hinzufügen eines Hardware-Sicherheits-Schlüssels }}
   - Wurde der **Nitrokey 3C NFC** erkannt, wird dies in unserem Benutzerkonto entsprechend positiv vermerkt.  {{ :nitrokey:linuxmint:github_2fa_13.png?610 |Bild: GitHub definierter Nitrokey 3C NFC als 2FA }}   - Wurde der **Nitrokey 3C NFC** erkannt, wird dies in unserem Benutzerkonto entsprechend positiv vermerkt.  {{ :nitrokey:linuxmint:github_2fa_13.png?610 |Bild: GitHub definierter Nitrokey 3C NFC als 2FA }}
Zeile 228: Zeile 1146:
 {{ :nitrokey:linuxmint:github_2fa_14.png?280 |Bild: Anmeldedialog bei GitHub }} {{ :nitrokey:linuxmint:github_2fa_14.png?280 |Bild: Anmeldedialog bei GitHub }}
  
-Anschließend werden wir aufgefordert den **Nitrokey 2C NFC** anzustecken und die Touch-Taste darauf zu drücken bzw. genauer gesagt zu berühren.+Anschliessend werden wir aufgefordert den **Nitrokey 2C NFC** anzustecken und die Touch-Taste darauf zu drücken bzw. genauer gesagt zu berühren.
  
 {{ :nitrokey:linuxmint:github_2fa_15.png?250 |Bild: Anmeldedialog bei GitHub }} {{ :nitrokey:linuxmint:github_2fa_15.png?250 |Bild: Anmeldedialog bei GitHub }}
Zeile 241: Zeile 1159:
   * **[[wiki:start#sicherheit-_und_vertraulichkeit|Zurück zu Projekte und Themenkapitel]]**   * **[[wiki:start#sicherheit-_und_vertraulichkeit|Zurück zu Projekte und Themenkapitel]]**
   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
 +
  • nitrokey/linuxmint/3cnfc.1683830088.txt.gz
  • Zuletzt geändert: 11.05.2023 18:34.
  • von django