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
centos:nitrokey:pro [17.11.2018 21:01. ] – [Schlüssel generieren] djangocentos:nitrokey:pro [18.11.2024 18:59. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 2: Zeile 2:
  
 {{:centos:nitrokey:nitrokey_pro.jpg?nolink&200 |Bild: Nitrokey Pro USB-Stick}}  {{:centos:nitrokey:nitrokey_pro.jpg?nolink&200 |Bild: Nitrokey Pro USB-Stick}} 
-In diesem Kapitel befassen wir uns eingehend mit dem [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-pro-2-3|Nitrokey Pro]] unter CebtOS 7.x. Neben der verbesserten Absicherung von Login mit einmalpasswörtern können eMails mit Hilfe von asymetrischen Schlüsselmaterials (PGP und S/MIME) auch Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. +In diesem Kapitel befassen wir uns eingehend mit dem [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-pro-2-3|Nitrokey Pro]] unter CentOS 7.x. Neben der verbesserten Absicherung von Login mit Einmalpasswörtern können eMails mit Hilfe von asymmetrischen Schlüsselmaterials (PGP und S/MIME) auch Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. 
-Hierzu verwenden wir den [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-pro-2-3|Nitrokey Pro]] welcher [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-pro-2-3|hier]] für einen überschaubaren Bettrag von nicht einmal 50€ erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Besonderheiten bei der Verwendung unter CentOS 7.x ein. +Hierzu verwenden wir den [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-pro-2-3|Nitrokey Pro]] welcher [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-pro-2-3|hier]] für einen überschaubaren Betrag von nicht einmal 50€ erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Besonderheiten bei der Verwendung unter CentOS 7.x ein. 
  
 Der **Nitrokey Pro** Cryptostick vereint in einem kleinen Plastikgehäuse einen Kartenleser mit zugehöriger manipulationssicheren OpenPGP Chipkarte, einem zu 100% Open Source und Open Hardware Device. Wie schon erwähnt wird das geheime Schlüsselmaterial (RSA 2048-4096 Bit, ECC 256-512 Bit) im manipulations- und PIN-geschützten integrierten Chipkarte gespeichert und somit bestens gegen Schadcode oder Verlust bzw. Diebstahl und gegen Hardware-Angriffe geschützt. Der **Nitrokey Pro** Cryptostick vereint in einem kleinen Plastikgehäuse einen Kartenleser mit zugehöriger manipulationssicheren OpenPGP Chipkarte, einem zu 100% Open Source und Open Hardware Device. Wie schon erwähnt wird das geheime Schlüsselmaterial (RSA 2048-4096 Bit, ECC 256-512 Bit) im manipulations- und PIN-geschützten integrierten Chipkarte gespeichert und somit bestens gegen Schadcode oder Verlust bzw. Diebstahl und gegen Hardware-Angriffe geschützt.
  
 Anwendungsfälle und Einsatzszenarien: Anwendungsfälle und Einsatzszenarien:
-  * **Sicheres Login** \\ Einmallpassworte können zur Zweitauthentisierung bei vielen Webanwendungen oder Web-Diensten genutzt werden. Darüber hinaus ist auch eine Verwendung bei der Anmeldung an Rechnern oder z.B. bei der Anmeldung an entfernten Systemen mittels Zertifikaten und Schlüsseln bei **[[centos:ssh_c7|SSH]]** umsetzbar.+  * **Sicheres Login** \\ Einmalpassworte können zur Zweitauthentisierung bei vielen Webanwendungen oder Web-Diensten genutzt werden. Darüber hinaus ist auch eine Verwendung bei der Anmeldung an Rechnern oder z.B. bei der Anmeldung an entfernten Systemen mittels Zertifikaten und Schlüsseln bei **[[centos:ssh_c7|SSH]]** umsetzbar.
   * **Verschlüsselung rund um eMails** \\ Zur vertraulichen Kommunikation via eMail kann das benötigte Schlüsselmaterial auf dem Kryptostick Nitrokey Pro erzeugt und sicher verwahrt werden. Eine Verwendung unter GnuPG, OpenPGP oder S/MIME ist somit gegeben.   * **Verschlüsselung rund um eMails** \\ Zur vertraulichen Kommunikation via eMail kann das benötigte Schlüsselmaterial auf dem Kryptostick Nitrokey Pro erzeugt und sicher verwahrt werden. Eine Verwendung unter GnuPG, OpenPGP oder S/MIME ist somit gegeben.
-  * **Verschlüsselung von Dateien und Massenspeichern(Festplatten)** \\ Auch hier wird das geheime Schlüsselmaterial, wie auch schon beim Anwendungsfall eMail-Kommunikation, auf dem Kryptostick generiert und sicher vorgehalten. Eine Ver- und Entschlüsselung unserer Daten mit Hilfe von TrueCrypt, GnuPG Tools oder weiteren Anwendungen sthet also nichts im Wege.+  * **Verschlüsselung von Dateien und Massenspeichern(Festplatten)** \\ Auch hier wird das geheime Schlüsselmaterial, wie auch schon beim Anwendungsfall eMail-Kommunikation, auf dem Kryptostick generiert und sicher vorgehalten. Eine Ver- und Entschlüsselung unserer Daten mit Hilfe von TrueCrypt, GnuPG Tools oder weiteren Anwendungen steht also nichts im Wege.
  
 Weitere Informationen zum USB-Stick [[https://www.nitrokey.com/de/news/2018/nitrokey-pro-2-verf%C3%BCgbar|Nitrokey Pro]] findet findet man auch [[https://www.nitrokey.com/de/documentation/installation#linux|hier]] bzw. im [[https://support.nitrokey.com/c/nitrokey-support|Support Forum]].  Weitere Informationen zum USB-Stick [[https://www.nitrokey.com/de/news/2018/nitrokey-pro-2-verf%C3%BCgbar|Nitrokey Pro]] findet findet man auch [[https://www.nitrokey.com/de/documentation/installation#linux|hier]] bzw. im [[https://support.nitrokey.com/c/nitrokey-support|Support Forum]]. 
Zeile 49: Zeile 49:
 Nov 16 17:49:39 T410 systemd: Starting Smart C</code> Nov 16 17:49:39 T410 systemd: Starting Smart C</code>
  
 +===== Paketabhängigkeiten =====
 +
 +Für den Zugriff auf die SmartCard bzw. auf den Nitrokey Pro benötigen wir z.B. für GPG den SmartCard-Daemon **scdeamon** welcher bei CentOS 7 mit Hilfe es Pakets **gnupg2-smime** bereitgestellt wird. 
 +
 +Dieses Paket installieren wir nun noch via **yum**.
 +   #  yum install gnupg2-smime -y
 +
 +Leider ist das Paket an sich aus Sicht der Entwickler des Kryptostick in einer nicht aktuellen Version bei CentOS 7 verfügbar (CentOS 7: 2.0.22 - aktuelle Version: 2.2.11)((Stand November 2018)). Das hat leider zur Folge, dass wir die PGP-Schlüssel __nicht__ direkt [[centos:nitrokey:pro#schluessel_generieren|auf der SmartCard]] generieren können, sondern diesen wie gewohnt [[centos:nitrokey:pro#vorhandenen_schluessel_importieren|auf dem Rechner]] erzeugen und anschliessend auf den Nitrokey Pro Stick verschoben werden muss.
 ===== udev-Regeln ===== ===== udev-Regeln =====
 Für den Betrieb unter [[https://www.centos.org/|CentOS 7]] müssen wir uns noch passende udev-Definitionen **[[https://www.nitrokey.com/sites/default/files/41-nitrokey.rules|hier]]** besorgen und unserer Umgebung anpassen. Dies ist notwendig, da sonst die Gerätedatei nicht mit den entsprechenden Benutzer-Rechten angelegt wird! Für den Betrieb unter [[https://www.centos.org/|CentOS 7]] müssen wir uns noch passende udev-Definitionen **[[https://www.nitrokey.com/sites/default/files/41-nitrokey.rules|hier]]** besorgen und unserer Umgebung anpassen. Dies ist notwendig, da sonst die Gerätedatei nicht mit den entsprechenden Benutzer-Rechten angelegt wird!
Zeile 179: Zeile 187:
 Wird die Benutzer-PIN mehr als 3x falsch eingeben, wird die Karte für den Benutzer gesperrt. Mit der Admin-PIN kann der Fehleingabezähler zurückgesetzt bzw. eine neue Benutzer-PIN vergeben werden.  Wird die Benutzer-PIN mehr als 3x falsch eingeben, wird die Karte für den Benutzer gesperrt. Mit der Admin-PIN kann der Fehleingabezähler zurückgesetzt bzw. eine neue Benutzer-PIN vergeben werden. 
 <WRAP center round alert 80%> <WRAP center round alert 80%>
-Wird jedoch die Admin-PIN mehr als 3x falsch eingegeben, wird die Smart-Crad komsperrt und der Stick ist anschließend nur noch durch einen Master-Reset in den Auslieferungszustand zu versetzen.+Wird jedoch die Admin-PIN mehr als 3x falsch eingegeben, wird die Smart-Card komplett und der Stick ist anschliessend nur noch durch einen Master-Reset in den Auslieferungszustand zu versetzen.
  
 Hierzu kopiert man sich folgende Datei auf den Rechner: Hierzu kopiert man sich folgende Datei auf den Rechner:
Zeile 191: Zeile 199:
 </WRAP> </WRAP>
  
 +=== Änderung der Default-PINs ===
 Wir werden also zuerst einmal die beiden **PIN**s abändern. Hierzu klicken wir mit der rechten Maustaste auf das Nitrokey-Symbol oben auf dem Desktop und wählen Sie das Menü "Konfigurieren". Dort können wir nun sowohl die Benutzer- als auch Admin-PINs ändern. Wir werden also zuerst einmal die beiden **PIN**s abändern. Hierzu klicken wir mit der rechten Maustaste auf das Nitrokey-Symbol oben auf dem Desktop und wählen Sie das Menü "Konfigurieren". Dort können wir nun sowohl die Benutzer- als auch Admin-PINs ändern.
  
Zeile 198: Zeile 207:
  
 {{ :centos:nitrokey:nitrokey-app_06.png?nolink&325 |Bild: Nitrokey-App Bildschirmhardcopy - Dialog zum PIN Ändern}} {{ :centos:nitrokey:nitrokey-app_06.png?nolink&325 |Bild: Nitrokey-App Bildschirmhardcopy - Dialog zum PIN Ändern}}
 +
 +=== Passwort-Safe ===
 +Der Kryptostick bietet uns die Möglichkeit bis zu 16 Passwörter anzuspeichern, die wir dann später einfach bei entsperrtem Nitrokey Pro Stick abrufen, in den Zwischenspeicher kopieren um es dann bei den (Web)Anwendungen einzufügen.
 +
 +Damit wir unser ersten Passwort auf dem Stick ablegen können, ist es notwendig den Stick zu entsperren.
 +
 +{{ :centos:nitrokey:nitrokey-app_07.png?nolink&200 |Bild: Nitrokey Pro entsperren}}
 +
 +Nach der eingabe der PIN wird unser Kryptostick entsperrt und wir können anschließend  den Menüpunkt **Konfiguration** erreichen.
 +
 +{{ :centos:nitrokey:nitrokey-app_09.png?nolink&275 |Bild: Nitrokey Pro entsperren}}
 +
 +Über den Menüpunkt **Konfiguration** gelangen wir zu den Einstellungen und wiederum auf dem Reiter **Passwort-Safe** dann die einstellungen zu den Anmeldedaten im Passwort-Safe. 
 +
 +{{ :centos:nitrokey:nitrokey-app_08.png?nolink&800 |Bild: Nitrokey Pro entsperren}}
 +
 +Wollen wir uns nun später an einer (Web)-Anwendung anmelden, wählen wir aus der oberen Statusleiste die Nitrokey App aus und wählen beim Menüpunkt **Paswörter** den hinterlegte Passworteintrag aus.
 +
 +{{ :centos:nitrokey:nitrokey-app_10.png?nolink&260 |Bild: Nitrokey Pro entsperren}}
 +
 +Sobald wir diesen Eintrag anklicken wird das zugehörige Passwort in die Zwischenablage kopiert und wir können dies dann in das zugehörige Eingabemaske einfügen. 
 +
 +{{ :centos:nitrokey:nitrokey-app_11.png?nolink&290 |Bild: Nitrokey Pro entsperren}}
 +
  
 ==== Nitrokey Pro und GnuPG  ==== ==== Nitrokey Pro und GnuPG  ====
Zeile 365: Zeile 398:
    $ gpg --card-edit    $ gpg --card-edit
  
-<code><code>Application ID ...: D276000124010303000500006FDA0000+<code>Application ID ...: D276000124010303000500006FDA0000
 Version ..........: 3.3 Version ..........: 3.3
 Manufacturer .....: ZeitControl Manufacturer .....: ZeitControl
Zeile 385: Zeile 418:
  
 gpg/card></code> gpg/card></code>
-</code> 
  
    gpg/card> admin    gpg/card> admin
Zeile 470: Zeile 502:
  
 Ihr Name ("Vorname Nachname"): Django aka BOfH Ihr Name ("Vorname Nachname"): Django aka BOfH
-Email-Adresse: secmail@mailserver.guru+Email-Adresse: secmail@nausch.org
 Kommentar: Bastard Operator from Hell Kommentar: Bastard Operator from Hell
 Sie haben diese User-ID gewählt: Sie haben diese User-ID gewählt:
-    "Django aka BOfH (Bastard Operator from Hell) <secmail@mailserver.guru>"+    "Django aka BOfH (Bastard Operator from Hell) <secmail@nausch.org>"
  
 Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(A)bbrechen? f</code> Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(A)bbrechen? f</code>
Zeile 484: Zeile 516:
  
 Dabei ist es unerheblich ob nun eine Schlüssellänge von **2048** oder **4096** ausgewählt wird. Auch auf einem aktuellen **//Fedora 29//** System tritt der gleiche fatale Fehler auf! Dabei ist es unerheblich ob nun eine Schlüssellänge von **2048** oder **4096** ausgewählt wird. Auch auf einem aktuellen **//Fedora 29//** System tritt der gleiche fatale Fehler auf!
 +
 +Ähnlich wie schon beim Vorgängermodell **[[centos:cryptos-manag#schluessel_generieren|GPF Cryptostick]]** sollte eigentlich das Schlüsselmaterial auf dem Nitrokey Pro-Stick generiert worden sein.
 +
 </WRAP> </WRAP>
  
 +=== vorhandenen Schlüssel importieren ===
 +Da aktuell((Stand: November 2018: [[https://support.nitrokey.com/t/nitrokey-pro-rhel-centos-7-key-generation-failed-card-error/1450/11|Nitrokey Pro - RHEL / CentOS 7 - Key generation failed: Card error]] )) die Generierung der Schlüsseldaten direkt auf der SmartCard scheitert, werden wir zunächste den Schlüssel [[centos:openpgp_beim_mua#schluesselgenerierung|wie gewohnt]] generieren und anschliessend in den **Nitrokey Pro** verschieben.
 +
 +== PGP-Schlüssel generieren ==
 +Zunächst erzeugen wir uns also einen PGP-Schlüssel, wie wir das sonst auch auf der Konsole machen würden.
 +   $ gpg --gen-key
 +<code>gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +Please select what kind of key you want:
 +   (1) RSA and RSA (default)
 +   (2) DSA and Elgamal
 +   (3) DSA (sign only)
 +   (4) RSA (sign only)
 +Your selection? 1
 +RSA keys may be between 1024 and 4096 bits long.
 +What keysize do you want? (2048) 4096
 +Requested keysize is 4096 bits
 +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) 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: 
 +You selected this USER-ID:
 +    "Django aka BOfH <secmail@nausch.org>"
 +
 +Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
 +You need a Passphrase to protect your secret key.
 +
 +We need to generate a lot of random bytes. It is a good idea to perform
 +some other action (type on the keyboard, move the mouse, utilize the
 +disks) during the prime generation; this gives the random number
 +generator a better chance to gain enough entropy.
 +gpg: key D1359446 marked as ultimately trusted
 +public and secret key created and signed.
 +
 +gpg: checking the trustdb
 +gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
 +gpg: depth: 0  valid:    signed:    trust: 0-, 0q, 0n, 0m, 0f, 1u
 +pub   4096R/D1359446 2018-11-21
 +      Key fingerprint = FA63 2892 1925 65D3 E006  DC75 2ECB E36F D135 9446
 +uid                  Django aka BOfH <secmail@nausch.org>
 +sub   4096R/564BA287 2018-11-21
 +</code>
 +
 +In unserem PGP-Schlüsselbund befinden sich nun unser gerade angelegt Schlüssel.
 +   $ gpg2 --list-secret-keys
 +<code>/home/django/.gnupg/secring.gpg
 +------------------------------
 +sec   4096R/D1359446 2018-11-21
 +uid                  Django aka BOfH <secmail@nausch.org>
 +ssb   4096R/564BA287 2018-11-21</code>
 +
 +
 +== PGP-Unterschlüssel - subkeys ==
 +<WRAP center round tip 95%>
 +Bei der **[[https://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem|Public-Key-Verschlüsselungsverfahren]]** denken wir in erster Linie an die beiden Schlüssel, den public-key, den wir z.B. zum Verschlüsseln von Informationen verwenden und dem secret-key, den wir zum Signieren und zum Entschlüsseln verwenden. Ganz so [[https://de.wikipedia.org/wiki/Trivialit%C3%A4t|trivial]] ist das aber bei genauerer Betrachtung doch nicht und wir müssen uns, bevor wir mit dem Verschieben der Schlüssel aus dem Dateisystem in Richtung SmarctCard des Nitrokeys beschäftigen, mit dem Konzept der Unterschlüssel vertraut machen!
 +</WRAP>
 +
 +Werfen wir zur genaueren Betrachtung einfach einen Blick in unseren Schlüsselbund. 
 +   $ gpg2 --list-keys
 +
 +<code>/home/michi/.gnupg/pubring.gpg
 +------------------------------
 +pub   4096R/D1359446 2018-11-21
 +uid                  Django aka BOfH <secmail@nausch.org>
 +sub   4096R/564BA287 2018-11-21
 +</code>
 +
 +Obwohl wir zuvor "nur einen" //[[centos:nitrokey:pro#schluessel_generieren|PGP-Schlüssel generiert]]// generiert hatten, sehen wir nun aber plötzlich zwei Schlüssel. Der eine ist mit dem Wert **pub** gekennzeichnet und hat die Schlüssel-ID **D1359446** und der zweite Schlüssel ist als **sub** gekennzeichnet und hat die Schlüssel-ID **564BA287**. 
 +
 +Beide Schlüssel sehen wir auch, wenn wir uns den Inhalt des secrings anzeigen lassen:
 +   $ gpg2 --list-secret-keys
 +<code>/home/django/.gnupg/secring.gpg
 +------------------------------
 +sec   4096R/D1359446 2018-11-21
 +uid                  Django aka BOfH <secmail@nausch.org>
 +ssb   4096R/564BA287 2018-11-21
 +</code>
 +
 +  * //**Worin besteht nun der genaue Unterschied?**// \\ Nun, der erste Schlüssel ist der **primäre Signierungs-Schlüssel** und der zweite Schlüssel ist  ein Unterschlüssel für die Verschlüsselung, der **Verschlüsselung-Schlüssel**. \\ \\
 +  * //**Warum nun der ganze Aufstand mit diesem Unterschlüssel?**// \\ Stellen wir uns einmal folgendes Szenario vor: Eines Tagen wollen oder müssen wir den privaten Schlüssel wechseln, da dieser kompromittiert wurde, oder wir stellen fest, dass die ursprünglich gewählte Schlüssellänge nicht mehr unserem gesteigertem Sicherheitsbewusstsein entspricht. Wir können natürlich den alten Schlüssel verwerfen, zurückziehen und löschen, damit dieser unbrauchbar wird. Nur verlieren wir dadurch natürlich sämtliche beglaubigte Unterschriften unserer Kontaktpersonen und Freunde, die ja einen gewissen Vertrauensstatus bezeugen -der Hintergrund zum **[[centos:openpgp_beim_mua#openpgp_versus_s_mime|WoT]]**-Gedanken((**W**eb **o**f **T**rust)). Als Folge daraus müssten wir erneut den ganzen Aufwand mit dem Key-Signing betreiben, was mit unter sehr aufwändig werden könnte! \\ Mit Unterschlüssel müssen wir nicht alles über Bord werden, sondern können z.B. weiterhin die beglaubigten Unterschriften unserer Freunde und Bekannten beibehalten und verwenden. Diese Signatur-Informationen sind, genau so wie die primäre User-ID, mit dem primären Signierungsschlüssel verknüpft! Subkeys selbst haben keine eigene Vertrauensstellung, sprich diese werden nicht selbst signiert. Der grosse Vorteil ist nun, dass wir diese Unterschlüssel für genau spezifizierte Einsatzzwecke definieren und nutzt können: //Verschlüsselung//, //Signierung// oder //Authentifizierung//. Diese Schlüssel können wir nun gezielt erneuern und dann an unsere Kontaktpersonen über den Master-Schlüssel verteilen können. Die Änderungen werden dann automatisch in deren Key-Rings als Aktualisierung des bestehenden Schlüssels übernommen, da die Unterschlüssel mit unserem Primary Signing Key signiert sind, dem unsere Kommunikationspartner ja schon bereits vertrauen.
 +
 +Fragen wir den Status unseres Nitrokey Pro ab, so sehen wir dort am Ende drei Speicherplätze für unterschiedliche Unterschlüssel, genauer gesagt der private Teil der Unterschlüssel, die auf dem Nitrokey Pro gespeichert sind, nämlich den :
 +  * **Signature key**     : Unterschlüssel zum Signieren
 +  * **Encryption key**    : Unterschlüssel zum Verschlüsseln
 +  * **Authentication key**: Unterschlüssel zum Authentifizieren
 +
 +   $ gpg2 --card-status
 +<code>Application ID ...: D276000124010303000500006FDA0000
 +Version ..........: 3.3
 +Manufacturer .....: ZeitControl
 +Serial number ....: 00006FDA
 +Name of cardholder: [not set]
 +Language prefs ...: de
 +Sex ..............: unspecified
 +URL of public key : [not set]
 +Login data .......: [not set]
 +Signature PIN ....: forced
 +Key attributes ...: 2048R 2048R 2048R
 +Max. PIN lengths .: 64 64 64
 +PIN retry counter : 3 0 3
 +Signature counter : 0
 +Signature key ....: [none]
 +Encryption key....: [none]
 +Authentication key: [none]
 +General key info..: [none]
 +</code>
 +
 +Damit wir nun die drei benötigten Unterschlüssel an die richtige Stelle unseres Nitrokey Pro verschieben können, müssen wir noch ein paar Vorbereitungen treffen:
 +  - Erstellen weiterer Unterschlüssel für die Themen:
 +    - Signierung
 +    - Authentifizierung
 +  - Verschieben der privaten Unterschlüssel aus dem Schlüsselbund, der auf der Festplatte gespeichert waren in die SmartCArd des Nitrokey Pros.
 +  - Verschieben des //primären Signierungs Schlüssel// auf ein sicheres Sicherungsmedium.
 +
 +Die öffentlichen Schlüssel bleiben nach wie vor im Schlüsselbund auf unserer Festplatte //**/home/~/.gnupg/pubring.gpg**// gespeichert, lediglich die privaten Unterschlüssel werden durch Proxy-Einträge im Schlüsselbund ersetzt!
 +
 +Bevor wir nun zum Punkt **1. Erstellen weiterer Unterschlüssel** widmen können rufen wir uns die **ID** des rimären Siegnierungs-Schlüssel in Erinnerung.
 +   $ gpg2 --list-keys | grep pub
 +
 +  /home/michi/.gnupg/pubring.gpg
 +  pub   4096R/D1359446 2018-11-21
 +
 +In unserem Konfigurationsbeispiel hier ist dies die Key-ID: **D1359446**. Zunächst erstellen wir besagten Unterschlüssel zum Signieren:
 +  $ gpg2 --expert --edit-key D1359446
 +<code>gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +Secret key is available.
 +
 +pub  4096R/D1359446  created: 2018-11-21  expires: never       usage: SC  
 +                     trust: ultimate      validity: ultimate
 +sub  4096R/564BA287  created: 2018-11-21  expires: never       usage: E   
 +[ultimate] (1). Django aka BOfH <secmail@nausch.org>
 +
 +gpg></code>
 +Das Erzeugen von Unterschlüssel erfolgt mit hilfe des Befehls ''**addkey**''.
 +  gpg> addkey
 +<code>Key is protected.
 +
 +You need a passphrase to unlock the secret key for
 +user: "Django aka BOfH <secmail@nausch.org>"
 +4096-bit RSA key, ID D1359446, created 2018-11-21
 +
 +Please select what kind of key you want:
 +   (3) DSA (sign only)
 +   (4) RSA (sign only)
 +   (5) Elgamal (encrypt only)
 +   (6) RSA (encrypt only)
 +   (7) DSA (set your own capabilities)
 +   (8) RSA (set your own capabilities)
 +Your selection?</code>
 +
 +Da wir einen **RSA**-Unterschlüssel zum Signieren erzeugen möchten, wählen wir hier die Option **4**. Bei der Schlüssellänge verwenden wir wie auch schon bei der Erstellung des initialen Schlüsselpaares **4096**; die Laufzeit des Unterschlüssels wählen wir entsprechend gleich oder kürzer wie beim //primären Signierungs-Schlüssel//, in inserem Beispiel also unendlich. 
 +
 +  Your selection? 4
 +<code>RSA keys may be between 1024 and 4096 bits long.
 +What keysize do you want? (2048) 4096
 +Requested keysize is 4096 bits
 +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
 +Really create? (y/N) y
 +We need to generate a lot of random bytes. It is a good idea to perform
 +some other action (type on the keyboard, move the mouse, utilize the
 +disks) during the prime generation; this gives the random number
 +generator a better chance to gain enough entropy.
 +
 +pub  4096R/D1359446  created: 2018-11-21  expires: never       usage: SC  
 +                     trust: ultimate      validity: ultimate
 +sub  4096R/564BA287  created: 2018-11-21  expires: never       usage: E   
 +sub  4096R/ACCE2639  created: 2018-11-21  expires: never       usage: S   
 +[ultimate] (1). Django aka BOfH <secmail@nausch.org>
 +
 +gpg></code>
 +
 +Das Gleiche machen wir nun erneut für unseren Authentifizierungs-Unterschlüssel.
 +   gpg> addkey
 +<code>Key is protected.
 +
 +You need a passphrase to unlock the secret key for
 +user: "Django aka BOfH <secmail@nausch.org>"
 +4096-bit RSA key, ID D1359446, created 2018-11-21
 +
 +Please select what kind of key you want:
 +   (3) DSA (sign only)
 +   (4) RSA (sign only)
 +   (5) Elgamal (encrypt only)
 +   (6) RSA (encrypt only)
 +   (7) DSA (set your own capabilities)
 +   (8) RSA (set your own capabilities)
 +Your selection?</code>
 +
 +Für unseren Verschlüsselungs-Unterschlüssel wählen wir nun eben hier entsprechend die Option **8**.
 +
 +  Your selection? 8
 +<code>Possible actions for a RSA key: Sign Encrypt Authenticate 
 +Current allowed actions: Sign Encrypt 
 +
 +   (S) Toggle the sign capability
 +   (E) Toggle the encrypt capability
 +   (A) Toggle the authenticate capability
 +   (Q) Finished
 +
 +Your selection?</code>
 +
 +Uns wir nun angezeigt, dass aktuell Signierung und Verschlüsselung vorausgewählt wurde: ''Current allowed actions: Sign Encrypt''. Wir wählen nun nacheinander die Optionen für Signierung mit "**S**" und Verschlüsselung mit "**E**" ab und Signierung mit "**A**" an.
 +<code>Your selection? s
 +
 +Possible actions for a RSA key: Sign Encrypt Authenticate 
 +Current allowed actions: Encrypt 
 +
 +   (S) Toggle the sign capability
 +   (E) Toggle the encrypt capability
 +   (A) Toggle the authenticate capability
 +   (Q) Finished
 +
 +Your selection? e
 +
 +Possible actions for a RSA key: Sign Encrypt Authenticate 
 +Current allowed actions: 
 +
 +   (S) Toggle the sign capability
 +   (E) Toggle the encrypt capability
 +   (A) Toggle the authenticate capability
 +   (Q) Finished
 +
 +Your selection? a
 +
 +Possible actions for a RSA key: Sign Encrypt Authenticate 
 +Current allowed actions: Authenticate 
 +
 +   (S) Toggle the sign capability
 +   (E) Toggle the encrypt capability
 +   (A) Toggle the authenticate capability
 +   (Q) Finished
 +
 +Your selection?</code>
 +
 +An der nun definierten Option ''Current allowed actions: Authenticate'' sehen wir, dass nun nachfolgend ein Authentifizierungs-Unterschlüssel generiert werden soll. Mit **Q** Verlassen wir diesen Dialog und generieren den besagten Authentifizierungs-Unterschlüssel.
 +  Your selection? q
 +<code>RSA keys may be between 1024 and 4096 bits long.
 +What keysize do you want? (2048) 4096
 +Requested keysize is 4096 bits
 +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
 +Really create? (y/N) y
 +We need to generate a lot of random bytes. It is a good idea to perform
 +some other action (type on the keyboard, move the mouse, utilize the
 +disks) during the prime generation; this gives the random number
 +generator a better chance to gain enough entropy.
 +
 +pub  4096R/D1359446  created: 2018-11-21  expires: never       usage: SC  
 +                     trust: ultimate      validity: ultimate
 +sub  4096R/564BA287  created: 2018-11-21  expires: never       usage: E   
 +sub  4096R/ACCE2639  created: 2018-11-21  expires: never       usage: S   
 +sub  4096R/EC65030E  created: 2018-11-21  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH <secmail@nausch.org>
 +</code>
 +
 +GnuPG listet nun den Primary Schlüssel zum Signieren und alle Unterschlüssel auf mit dem jeweiligen Verwendungszweck **usage** auf. **E** steht für Verschlüsseln, **S** für Signieren und **A** für Athentifizierung.
 +
 +Zu guter letzt speichern wir nun mit dem Befehl **save** unsere gerade erstellen Unterschlüssel im Schlüsselspeicher auf der Festplatte ab.
 +  gpg> save
 +
 +Fragen wir nun erneut den Schlüsselbund mit den secret-keys ab sehen wir nun unsere drei Unterschlüssel.
 +   $ gpg2 --list-secret-keys
 +<code>/home/django/.gnupg/secring.gpg
 +------------------------------
 +sec   4096R/D1359446 2018-11-21
 +uid                  Django aka BOfH <secmail@nausch.org>
 +ssb   4096R/564BA287 2018-11-21
 +ssb   4096R/ACCE2639 2018-11-21
 +ssb   4096R/EC65030E 2018-11-21</code>
 +
 +== backup des vorhandenen Keyrings aus dem Userverzeichnis == 
 +<WRAP center round important 95%>
 +Bevor wir unseren Schlüsselspeicher im Userverzeichnis bei den späteren Verschiebeaktionen nicht versehentlich schrotten, kann für Restore-Zwecke ein Backup und ein sicheres Verwahren des Schlüsselspeichers angeraten sein.
 +
 +   $ cp -a ~/.gnupg ~/.gnupg_181121
 +</WRAP>
 +
 +== Schlüssel in die ChipCard des Nitrokey Pro verschieben == 
 +Nun werden wir die vorhin generierten Schlüssel an Ort und Stelle in die SmartCard des Nitrokey Pro verschieben. Hierzu verwenden wir den Befehl **''keytocard''** des Programms **gpg2**. Wie schon beim **[[centos:nitrokey:pro#pgp-unterschluessel_-_subkeys|Generieren der Unterschlüssel]]** müssen wir angeben, welche **primäre Schlüssel-ID** bearbeitet oder genauer gesagt verschoben werden soll. In unserem Konfigurationsbeispiel ist das die ID **D1359446**.
 +   $ gpg2 --edit-key D1359446
 +<code>gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +Secret key is available.
 +
 +pub  4096R/D1359446  created: 2018-11-21  expires: never       usage: SC  
 +                     trust: ultimate      validity: ultimate
 +sub  4096R/564BA287  created: 2018-11-21  expires: never       usage: E   
 +sub  4096R/ACCE2639  created: 2018-11-21  expires: never       usage: S   
 +sub  4096R/EC65030E  created: 2018-11-21  expires: never       usage: A   
 +[ultimate] (1). Django aka BOfH <secmail@nausch.org>
 +
 +Für später merken wir uns nun in Welcher Reichenfolge die Unterschlüssel aufgelistet werden bzw. welche Key-ID zu welcher Aktion gehört. Die Key-ID **0** ist die des primären Signierungs-Schlüssel!
 +  * Sub-Key **1** - **564BA287** - **E** = encrypt = verschlüsseln
 +  * Sub-Key **2** - **ACCE2639** - **S** = sign = signieren
 +  * Sub-Key **3** - **EC65030E** - **A** = authorize = authentifizieren
 +
 +gpg> </code>
 +Da wir die privaten Schlüssel unserer drei Unterschlüssel verschieben wollen, wechseln wir von der Ansicht der öffentlichen in die Ansicht der privaten Schlüssel.
 +  gpg> 
 +
 +<code>sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb  4096R/564BA287  created: 2018-11-21  expires: never     
 +ssb  4096R/ACCE2639  created: 2018-11-21  expires: never     
 +ssb  4096R/EC65030E  created: 2018-11-21  expires: never     
 +(1)  Django aka BOfH <secmail@nausch.org></code>
 +
 +Als erstes verschieben wir den privaten Verschlüsselungs-Unterschlüssel. Hierzu wählen wir diesen mit Eingabe von "1" ein. Die Auswajhl wird uns dann durch den ** * ** angezeigt.
 +
 +  gpg> key 1
 +<code>sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb* 4096R/564BA287  created: 2018-11-21  expires: never     
 +ssb  4096R/ACCE2639  created: 2018-11-21  expires: never     
 +ssb  4096R/EC65030E  created: 2018-11-21  expires: never     
 +(1)  Django aka BOfH <secmail@nausch.org></code>
 +
 +Nun verschieben wir den ausgewählten Schlüssel in die SmartCard des Nitrokey. Als Ziel wählen wir dann richtiger Weise die Option **2** = //**Encryption key**// aus
 +  gpg> keytocard
 +
 +<code>Signature key ....: [none]
 +Encryption key....: [none]
 +Authentication key: [none]
 +
 +Please select where to store the key:
 +   (2) Encryption key
 +Your selection? 2
 +
 +You need a passphrase to unlock the secret key for
 +user: "Django aka BOfH <secmail@nausch.org>"
 +4096-bit RSA key, ID 564BA287, created 2018-11-21
 +
 +
 +sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb* 4096R/564BA287  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb  4096R/ACCE2639  created: 2018-11-21  expires: never     
 +ssb  4096R/EC65030E  created: 2018-11-21  expires: never     
 +(1)  Django aka BOfH <secmail@nausch.org>
 +</code>
 +
 +Als nächstes verschieben wir den privaten Signierungs-Unterschlüssel aus, in dem wir erst den bereits ausgewählten Verschlüsselungs-Key abwählen und dann den Signierungs-Key anwählen.
 +  gpg> key 1
 +<code>sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb  4096R/564BA287  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb  4096R/ACCE2639  created: 2018-11-21  expires: never     
 +ssb  4096R/EC65030E  created: 2018-11-21  expires: never     
 +(1)  Django aka BOfH <secmail@nausch.org>
 +</code>
 +  gpg> key 2
 +<code>sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb  4096R/564BA287  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb* 4096R/ACCE2639  created: 2018-11-21  expires: never     
 +ssb  4096R/EC65030E  created: 2018-11-21  expires: never     
 +(1)  Django aka BOfH <secmail@nausch.org>
 +</code>
 +
 +Nun verschieben wir den privaten Signierungs-Unterschlüssel in Richtung SmartCard des Nitrokey Pro. Hier wählen wir nun die **1** für //**Signature key**// aus.
 +  gpg> keytocard
 +<code>Signature key ....: [none]
 +Encryption key....: A7CC 2F9D 0D39 92B6 B03A  A878 06CC CCAF 564B A287
 +Authentication key: [none]
 +
 +Please select where to store the key:
 +   (1) Signature key
 +   (3) Authentication key
 +Your selection? 1
 +
 +You need a passphrase to unlock the secret key for
 +user: "Django aka BOfH <secmail@nausch.org>"
 +4096-bit RSA key, ID ACCE2639, created 2018-11-21
 +
 +
 +sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb  4096R/564BA287  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb* 4096R/ACCE2639  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb  4096R/EC65030E  created: 2018-11-21  expires: never     
 +(1)  Django aka BOfH <secmail@nausch.org>
 +</code>
 +
 +Zu guter Letzt fehlt nun noch unser Authentifizierungs-Unterschlüssel. Wir wählen also wieder den Schlüssel **2** ab und den Schlüssel **3** aus.
 +  gpg> key 2
 +<code>sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb  4096R/564BA287  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb  4096R/ACCE2639  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb  4096R/EC65030E  created: 2018-11-21  expires: never     
 +(1)  Django aka BOfH <secmail@nausch.org>
 +</code>
 +  gpg> key 3
 +<code>sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb  4096R/564BA287  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb  4096R/ACCE2639  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb* 4096R/EC65030E  created: 2018-11-21  expires: never     
 +(1)  Django aka BOfH <secmail@nausch.org>
 +</code>
 +
 +Nun verschieben wir den privaten Authentifizierungs-Unterschlüssel in Richtung SmartCard des Nitrokey Pro. Hier wählen wir nun die **3** für //**Authentication key**// aus.
 +  gpg> keytocard
 +<code>Signature key ....: C78C 3294 2822 BFE2 3A0C  BF5B 7D77 3C74 ACCE 2639
 +Encryption key....: A7CC 2F9D 0D39 92B6 B03A  A878 06CC CCAF 564B A287
 +Authentication key: [none]
 +
 +Please select where to store the key:
 +   (3) Authentication key
 +Your selection? 3
 +
 +You need a passphrase to unlock the secret key for
 +user: "Django aka BOfH <secmail@nausch.org>"
 +4096-bit RSA key, ID EC65030E, created 2018-11-21
 +
 +
 +sec  4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb  4096R/564BA287  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb  4096R/ACCE2639  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +ssb* 4096R/EC65030E  created: 2018-11-21  expires: never     
 +                     card-no: 0005 00006FDA
 +(1)  Django aka BOfH <secmail@nausch.org>
 +</code>
 +
 +Zum Abschluss speichern wir nun unsere Änderungen im lokalen key-ring mit dem Befehl **save**.
 +  gpg> save
 +
 +Wenn wir jetzt den Kartenstatus abfragen, werden unsere drei Unterschlüssel entsprechend mit angezeigt.
 +   $ gpg2 --card-status
 +
 +<code>Application ID ...: D276000124010303000500006FDA0000
 +Version ..........: 3.3
 +Manufacturer .....: ZeitControl
 +Serial number ....: 00006FDA
 +Name of cardholder: [not set]
 +Language prefs ...: de
 +Sex ..............: unspecified
 +URL of public key : [not set]
 +Login data .......: [not set]
 +Signature PIN ....: forced
 +Key attributes ...: 4096R 4096R 4096R
 +Max. PIN lengths .: 64 64 64
 +PIN retry counter : 3 0 3
 +Signature counter : 0
 +Signature key ....: C78C 3294 2822 BFE2 3A0C  BF5B 7D77 3C74 ACCE 2639
 +      created ....: 2018-11-21 11:58:41
 +Encryption key....: A7CC 2F9D 0D39 92B6 B03A  A878 06CC CCAF 564B A287
 +      created ....: 2018-11-21 09:05:29
 +Authentication key: 268A DDA5 30FD 8FE7 DD86  2C5B 4E9B 2B65 EC65 030E
 +      created ....: 2018-11-21 12:01:12
 +General key info..: pub  4096R/ACCE2639 2018-11-21 Django aka BOfH <secmail@nausch.org>
 +sec   4096R/D1359446  created: 2018-11-21  expires: never     
 +ssb>  4096R/564BA287  created: 2018-11-21  expires: never     
 +                      card-no: 0005 00006FDA
 +ssb>  4096R/ACCE2639  created: 2018-11-21  expires: never     
 +                      card-no: 0005 00006FDA
 +ssb>  4096R/EC65030E  created: 2018-11-21  expires: never     
 +                      card-no: 0005 00006FDA
 +</code>
 +
 +=== Öffentlichen Schlüssel ausgeben ===
 +Damit wir später unseren öffentlichen Schlüssel auch weitergeben oder zu einem [[https://keyserver.nausch.org|Keyserver]] hochladen, exportieren wir diesen in eine Datei.
 +  $ gpg --export --armor secmail@nausch.org > secmail@nausch.org.publickey
 +
 +Diese Date enthält unseren Schlüssel in ASCCI-lesbarer Form.
 +  $ cat  secmail@nausch.org.publickey
 +<file key secmail@nausch.org.publickey>-----BEGIN PGP PUBLIC KEY BLOCK-----
 +Version: GnuPG v2.0.22 (GNU/Linux)
 +
 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
 +MezibODnMrJixhyz
 +=ZvZy
 +-----END PGP PUBLIC KEY BLOCK-----</file>
 +
 +=== 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 Wir legen uns erst einmal ein beliebiges Testdokument an. <code> $ cat /etc/redhat-release > testdatei.txt</code> Die Date hat nun folgenden Inhalt:<code> $ cat testdatei.txt</code><code>CentOS Linux release 7.5.1804 (Core)</code>
 +  - Nun verschlüsseln wir dieses Textdokument: <code> $ gpg2 -o testdatei.txt.pgp -a -r secmail@nausch.org -e testdatei.txt</code> Wir haben also nun zwei Dokumente auf der Platte liegen. <code> $ ll testdatei.txt*</code><code>-rw-rw-r-- 1 django django  38 Nov 21 14:21 testdatei.txt
 +-rw-rw-r-- 1 django django 962 Nov 21 14:37 testdatei.txt.pgp</code>Die Datei **testdatei.txt.pgp** können wir nun soweit nicht mehr lesen.<code> $ cat testdatei.txt.pgp</code><code>�
 +  �̯VK����ꠔ��oY]�T>Jm��c������76]Ԛ�a&H
 +SZ,(��                                    ��w��+�Ao؃�l|
 +=�Y����v,C���}z�狒*�fU�H=��J�l�O�������颣�*�ݴ'��ɟ
 +                              MQ[Ce<��)X�yS$�2��`=�
 +                                                    u�뇙�P����1<�R�cE���2cTj���|�@}~.t!���V?���q]�ѻ��MӚ��W�$
 +��߿�W.�-I����^�V�-��+A�i�                                                                                        �f��mi�pPw��mh����]���38n�w�Iб]��
 +                           L�����\�v�R
 +*�]��-�t,-�A�9�6>�ZW�m������-�S{$�(}C@)��hZ
 +                                             ��QUw�~�[�F�%�:BB�TnD�8���`!� 'J�w�������!���LJ�PH�kj���k�����Q��u���s_���@�G��ʁ}!?D7݈.%w�[�xX�ِ����U��;���15���d����n�-;Z����x�3-MTt�i�L1̣�E�+���
 +                                   ��}��w�St�ls�
 +��6��n�#?��*('�㔛��y�, �j� �ᡞ���M/��YW��ݤ�r؎�B$�</code>
 +  - Nun entschlüsseln wir unser Dokument wieder.<code> gpg2 --decrypt testdatei.txt.pgp > testdatei-entschlüsselt.txt</code><code>gpg: encrypted with 4096-bit RSA key, ID 564BA287, created 2018-11-21
 +      "Django aka BOfH <secmail@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>CentOS Linux release 7.5.1804 (Core)</code>
 +
 +=== Schlüssel aus dem lokalen Schlüsselspeicher entfernen === 
 +Löschen wir nun den kompletten Schlüssel aus der lokalen Schlüsseldatei, können wir folgenden Befehl verwenden.
 +   $ gpg --delete-secret-key secmail@nausch.org
 +<code>gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +
 +sec  4096R/D1359446 2018-11-21 Django aka BOfH <secmail@nausch.org>
 +
 +Delete this key from the keyring? (y/N) y
 +This is a secret key! - really delete? (y/N) y
 +</code>
 +
 +<WRAP center round alert 95%>
 +__**Doch Achtung:**__
 +Hier wird der komplette Schlüssel gelöscht, also den **privaten Primären Signing Key** und nicht nur die Proxy-Einträge! Dies kann zu Problemen bei der späteren Verwendung des Nitrokey Pro auf der Konsole führen, da das gpg-Programm versucht den Schlüssel im Schlüsselbund zu finden!
 +</WRAP>
 +
 +Der gpg-Befehl ''**%%--%%delete-secret-keys**'' hat als Bezugspunkt den primären Signierungsschlüssel und würde beim entfernen dieses Schlüssels natürlich auch die Unterschlüssel entfernen. Da wir nur den privaten primären Signierungsschlüssel aus dem Schlüsselbund löschen wollen, exportieren wir die privaten Unterschlüssel, bevor wir den privaten Primary Signing Key löschen und werden diese dann anschließend wieder importieren.
 +
 +Wir exportieren also erst einmal die Unterschlüssel und legen diese in einer lokalen Datei ab. Zunächst holen wir uns aber noch die Schlüssel-IDs da wir diese beim Exportieren eiegns angeben müssen.
 +   $ gpg2 --list-secret-keys
 +<code>/home/django/.gnupg/secring.gpg
 +------------------------------
 +sec   4096R/D1359446 2018-11-21
 +uid                  Django aka BOfH <secmail@nausch.org>
 +ssb>  4096R/564BA287 2018-11-21
 +ssb>  4096R/ACCE2639 2018-11-21
 +ssb>  4096R/EC65030E 2018-11-21
 +</code>
 +Nun exportieren wir die Unterschlüssel mit Hilfe folgenden Aufrufs, bei dem wir die IDs der Unterschlüssel gfolgt von einem **!** jeweils angeben:
 +   $ gpg2 -o subkeys --export-secret-subkeys 564BA287! ACCE2639! EC65030E!
 +
 +Nun löschen wir den primären Signierungsschlüssel inkl. der Unterschlüssel.
 +   $ gpg2 --delete-secret-key secmail@nausch.org
 +<code>gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
 +This is free software: you are free to change and redistribute it.
 +There is NO WARRANTY, to the extent permitted by law.
 +
 +
 +sec  4096R/D1359446 2018-11-21 Django aka BOfH <secmail@nausch.org>
 +
 +Delete this key from the keyring? (y/N) y
 +This is a secret key! - really delete? (y/N) y</code>
 +
 +Ein erneuter Aufruf des privaten Schlüsselspeichers zeigt und, dass dort nun keine Einträge mehr vorhanden sind.
 +   $ gpg2 --list-secret-keys
 +
 +Nun importieren wir wieder die zuvor gesicherten privaten Unterschlüssel
 +   $ gpg2 --import subkeys
 +<code>gpg: key D1359446: secret key imported
 +gpg: key D1359446: "Django aka BOfH <secmail@nausch.org>" not changed
 +gpg: Total number processed: 1
 +gpg:              unchanged: 1
 +gpg:       secret keys read: 1
 +gpg:   secret keys imported: 1</code>
 +
 +Lassen wir uns nun den Inhalt des privaten Schlüsselbundes anzeigen, sehen wir die zurückgesicherten Unterschlüssel wieder.
 +   $ gpg2 --list-secret-keys
 +<code>/home/django/.gnupg/secring.gpg
 +------------------------------
 +sec#  4096R/D1359446 2018-11-21
 +uid                  Django aka BOfH <secmail@nausch.org>
 +ssb>  4096R/564BA287 2018-11-21
 +ssb>  4096R/ACCE2639 2018-11-21
 +ssb>  4096R/EC65030E 2018-11-21</code>
 +
 +Zu guter letzt vernichten wir die Datei mit den gesicherten privaten Unterschlüsseln.
 +   $ shred --zero --removesubkeys
 +
 +==== Nitrokey und Thunderbird ==== 
 +Unseren zuvor präparierten Kryptostick wollen wir nun verwenden um bei Thunderbird unsere elektronische Kommunikation per eMail abzusichern. Hierzu werden wir nun den schlüssel dem betreffenden Konto zuweisen. 
 +Über das Menü wählen wir den Punkt **Konten-Einstellungen** aus.
 +
 +{{ :centos:nitrokey:nitrokey-gpg_10.png?nolink&850 |Bild: Thunderbird - Menüpunkt Konten-Einstellungen }}
 +
 +Beim passenden Konto wählen wir dann die Option **OpenPGP-Sicherheit** aus.
 +
 +{{ :centos:nitrokey:nitrokey-gpg_11.png?nolink&800 |Bild: Thunderbird - Menüpunkt OpenPGP-Sicherheit }}
 +
 +Hier wählen wir nun den Schlüssel aus, den wir zuvor erstellt und auf die SmartCard des Kryptostick Pro verschoben hatten.
 +
 +{{ :centos:nitrokey:nitrokey-gpg_12.png?nolink&850 |Bild: Thunderbird - Auswahl des Schlüssels auf dem Kryptostick. }}
 +
 +Sobald wir nun eine Nachricht verschicken die signiert werden soll, wird vor dem Versand die PIN abgefragt und die Nachricht mit dem Signatur-Unterschlüssel unterschrieben.
 +
 +{{ :centos:nitrokey:nitrokey-gpg_13.png?nolink&850 |Bild: Thunderbird - Signieren und Versenden einer Nachricht. }}
 +
 +Sobald wir eine verschlüsselte Nachricht öffnen, werden wir nach der PIN gefragt, damit der Schlüssel zum Entschlüsseln auf der SmartCard freigeschalten werden kann.
 +
 +{{ :centos:nitrokey:nitrokey-gpg_14.png?nolink&850 |Bild: Thunderbird - Abfrage der PIN zum Entschlüsseln der Nachricht }}
 +
 +Habne wir die PIN richtig eigegeben, wird die entschlüsselte Nachricht angezeigt.
 +
 +{{ :centos:nitrokey:nitrokey-gpg_15.png?nolink&850 |Bild: Thunderbird - Anzeige der entschlüsselten Nachricht }}
  
  
  • centos/nitrokey/pro.1542488466.txt.gz
  • Zuletzt geändert: 17.11.2018 21:01.
  • von django