Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:nitrokey:pro [21.11.2018 09:29. ] – [vorhandenen Schlüssel importieren] django | centos:nitrokey:pro [18.11.2024 18:59. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 50: | Zeile 50: | ||
===== Paketabhängigkeiten ===== | ===== 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**. | ||
+ | # | ||
+ | |||
+ | 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: | ||
===== udev-Regeln ===== | ===== udev-Regeln ===== | ||
Für den Betrieb unter [[https:// | Für den Betrieb unter [[https:// | ||
Zeile 180: | 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 | + | Wird jedoch die Admin-PIN mehr als 3x falsch eingegeben, wird die Smart-Card komplett |
Hierzu kopiert man sich folgende Datei auf den Rechner: | Hierzu kopiert man sich folgende Datei auf den Rechner: | ||
Zeile 192: | Zeile 199: | ||
</ | </ | ||
+ | === Ä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ü " | 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ü " | ||
Zeile 199: | Zeile 207: | ||
{{ : | {{ : | ||
+ | |||
+ | === Passwort-Safe === | ||
+ | Der Kryptostick bietet uns die Möglichkeit bis zu 16 Passwörter anzuspeichern, | ||
+ | |||
+ | Damit wir unser ersten Passwort auf dem Stick ablegen können, ist es notwendig den Stick zu entsperren. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Nach der eingabe der PIN wird unser Kryptostick entsperrt und wir können anschließend | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Ü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. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{ : | ||
+ | |||
==== Nitrokey Pro und GnuPG ==== | ==== Nitrokey Pro und GnuPG ==== | ||
Zeile 366: | Zeile 398: | ||
$ gpg --card-edit | $ gpg --card-edit | ||
- | < | + | < |
Version ..........: 3.3 | Version ..........: 3.3 | ||
Manufacturer .....: ZeitControl | Manufacturer .....: ZeitControl | ||
Zeile 386: | Zeile 418: | ||
gpg/ | gpg/ | ||
- | </ | ||
| | ||
Zeile 471: | Zeile 502: | ||
Ihr Name (" | Ihr Name (" | ||
- | Email-Adresse: | + | Email-Adresse: |
Kommentar: Bastard Operator from Hell | Kommentar: Bastard Operator from Hell | ||
Sie haben diese User-ID gewählt: | Sie haben diese User-ID gewählt: | ||
- | " | + | " |
Ändern: (N)ame, (K)ommentar, | Ändern: (N)ame, (K)ommentar, | ||
Zeile 522: | Zeile 553: | ||
Real name: Django aka BOfH | Real name: Django aka BOfH | ||
- | Email address: secmail@mailserver.guru | + | Email address: secmail@nausch.org |
Comment: | Comment: | ||
You selected this USER-ID: | You selected this USER-ID: | ||
- | " | + | " |
Change (N)ame, (C)omment, (E)mail or (O)kay/ | Change (N)ame, (C)omment, (E)mail or (O)kay/ | ||
Zeile 542: | Zeile 573: | ||
pub | pub | ||
Key fingerprint = FA63 2892 1925 65D3 E006 DC75 2ECB E36F D135 9446 | Key fingerprint = FA63 2892 1925 65D3 E006 DC75 2ECB E36F D135 9446 | ||
- | uid Django aka BOfH < | + | uid Django aka BOfH < |
sub | sub | ||
</ | </ | ||
Zeile 551: | Zeile 582: | ||
------------------------------ | ------------------------------ | ||
sec | sec | ||
- | uid Django aka BOfH < | + | uid Django aka BOfH < |
ssb | ssb | ||
Zeile 560: | Zeile 591: | ||
</ | </ | ||
+ | Werfen wir zur genaueren Betrachtung einfach einen Blick in unseren Schlüsselbund. | ||
+ | $ gpg2 --list-keys | ||
+ | < | ||
+ | ------------------------------ | ||
+ | pub | ||
+ | uid Django aka BOfH < | ||
+ | sub | ||
+ | </ | ||
+ | Obwohl wir zuvor "nur einen" // | ||
+ | Beide Schlüssel sehen wir auch, wenn wir uns den Inhalt des secrings anzeigen lassen: | ||
+ | $ gpg2 --list-secret-keys | ||
+ | < | ||
+ | ------------------------------ | ||
+ | sec | ||
+ | uid Django aka BOfH < | ||
+ | ssb | ||
+ | </ | ||
+ | * //**Worin besteht nun der genaue Unterschied? | ||
+ | * //**Warum nun der ganze Aufstand mit diesem Unterschlüssel? | ||
+ | Fragen wir den Status unseres Nitrokey Pro ab, so sehen wir dort am Ende drei Speicherplätze für unterschiedliche Unterschlüssel, | ||
+ | * **Signature key** : Unterschlüssel zum Signieren | ||
+ | * **Encryption key** : Unterschlüssel zum Verschlüsseln | ||
+ | * **Authentication key**: Unterschlüssel zum Authentifizieren | ||
+ | $ gpg2 --card-status | ||
+ | < | ||
+ | Version ..........: 3.3 | ||
+ | Manufacturer .....: ZeitControl | ||
+ | Serial number ....: 00006FDA | ||
+ | Name of cardholder: [not set] | ||
+ | Language prefs ...: de | ||
+ | Sex ..............: | ||
+ | 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] | ||
+ | </ | ||
+ | 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, | ||
+ | - Verschieben des //primären Signierungs Schlüssel// | ||
- | Nun verschieben wir den Schlüsel | + | Die öffentlichen Schlüssel bleiben nach wie vor im Schlüsselbund |
- | $ gpg --edit-key | + | |
+ | Bevor wir nun zum Punkt **1. Erstellen weiterer Unterschlüssel** widmen können rufen wir uns die **ID** des rimären Siegnierungs-Schlüssel | ||
+ | | ||
+ | |||
+ | / | ||
+ | pub | ||
+ | |||
+ | In unserem Konfigurationsbeispiel hier ist dies die Key-ID: **D1359446**. Zunächst erstellen wir besagten Unterschlüssel zum Signieren: | ||
+ | $ gpg2 --expert | ||
< | < | ||
This is free software: you are free to change and redistribute it. | This is free software: you are free to change and redistribute it. | ||
There is NO WARRANTY, to the extent permitted by law. | There is NO WARRANTY, to the extent permitted by law. | ||
- | Geheimer Schlüssel ist vorhanden. | + | Secret key is available. |
- | pub 4096R/1F8344FA | + | pub 4096R/D1359446 |
- | Vertrauen: uneingeschränkt Gültigkeit: uneingeschränkt | + | trust: ultimate |
- | sub 4096R/C35C8E4D | + | sub 4096R/564BA287 |
- | [ uneing.] (1). Django aka BOfH (Bastard Operator from Hell) < | + | [ultimate] (1). Django aka BOfH < |
gpg></ | gpg></ | ||
- | Nun wechseln | + | Das Erzeugen von Unterschlüssel erfolgt mit hilfe des Befehls '' |
- | gpg> toggle | + | gpg> addkey |
- | < | + | < |
- | sec | + | |
- | ssb | + | You need a passphrase to unlock the secret key for |
- | (1) Django aka BOfH (Bastard Operator from Hell) < | + | user: " |
+ | 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?</ | ||
+ | |||
+ | 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//, | ||
+ | |||
+ | Your selection? 4 | ||
+ | < | ||
+ | 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>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/ | ||
+ | | ||
+ | sub 4096R/ | ||
+ | sub 4096R/ | ||
+ | [ultimate] (1). Django aka BOfH < | ||
+ | |||
+ | gpg></ | ||
+ | |||
+ | Das Gleiche machen wir nun erneut für unseren Authentifizierungs-Unterschlüssel. | ||
+ | | ||
+ | < | ||
+ | |||
+ | You need a passphrase to unlock the secret key for | ||
+ | user: " | ||
+ | 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?</ | ||
+ | |||
+ | Für unseren Verschlüsselungs-Unterschlüssel wählen wir nun eben hier entsprechend die Option **8**. | ||
+ | |||
+ | Your selection? 8 | ||
+ | < | ||
+ | Current allowed actions: Sign Encrypt | ||
+ | |||
+ | (S) Toggle the sign capability | ||
+ | (E) Toggle the encrypt capability | ||
+ | (A) Toggle the authenticate capability | ||
+ | (Q) Finished | ||
+ | |||
+ | Your selection?</ | ||
+ | |||
+ | Uns wir nun angezeigt, dass aktuell Signierung | ||
+ | < | ||
+ | |||
+ | 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?</ | ||
+ | |||
+ | An der nun definierten Option '' | ||
+ | Your selection? q | ||
+ | < | ||
+ | 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>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 | ||
+ | | ||
+ | sub 4096R/ | ||
+ | sub | ||
+ | sub 4096R/ | ||
+ | [ultimate] | ||
+ | </ | ||
+ | |||
+ | 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, | ||
+ | |||
+ | 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 | ||
+ | < | ||
+ | ------------------------------ | ||
+ | sec | ||
+ | uid | ||
+ | ssb | ||
+ | ssb | ||
+ | ssb | ||
+ | |||
+ | == 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 ~/ | ||
+ | </ | ||
+ | |||
+ | == 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 **'' | ||
+ | $ gpg2 --edit-key D1359446 | ||
+ | < | ||
+ | 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/ | ||
+ | | ||
+ | sub 4096R/ | ||
+ | sub 4096R/ | ||
+ | sub 4096R/ | ||
+ | [ultimate] (1). Django aka BOfH < | ||
+ | |||
+ | 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> </ | gpg> </ | ||
- | Nun verschieben wir den ausgewählten Schlüssel in unseren Kryptostick mit dem Befehl | + | 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> |
+ | |||
+ | < | ||
+ | ssb 4096R/ | ||
+ | ssb 4096R/ | ||
+ | ssb 4096R/ | ||
+ | (1) Django aka BOfH < | ||
+ | |||
+ | Als erstes verschieben wir den privaten Verschlüsselungs-Unterschlüssel. Hierzu wählen wir diesen mit Eingabe von " | ||
+ | |||
+ | gpg> key 1 | ||
+ | < | ||
+ | ssb* 4096R/ | ||
+ | ssb 4096R/ | ||
+ | ssb 4096R/ | ||
+ | (1) Django aka BOfH < | ||
+ | |||
+ | Nun verschieben wir den ausgewählten Schlüssel in die SmartCard des Nitrokey. Als Ziel wählen wir dann richtiger Weise die Option | ||
+ | gpg> keytocard | ||
- | Den Hauptschlüssel wirklich verschieben? | ||
< | < | ||
Encryption key....: [none] | Encryption key....: [none] | ||
Authentication key: [none] | Authentication key: [none] | ||
- | Wählen Sie den Speicherort für den Schlüssel: | + | Please select where to store the key: |
- | (1) Signatur-Schlüssel | + | (2) Encryption key |
- | (3) Authentisierungs-Schlüssel< | + | Your selection? 2 |
- | Ihre Auswahl? 3 | + | |
- | < | + | |
- | Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. | + | |
- | Benutzer: " | + | |
- | 4096-Bit RSA Schlüssel, ID 1F8344FA, erzeugt 2018-11-17 | + | |
+ | You need a passphrase to unlock the secret key for | ||
+ | user: " | ||
+ | 4096-bit RSA key, ID 564BA287, created 2018-11-21 | ||
- | sec 4096R/ | ||
- | | ||
- | ssb 4096R/ | ||
- | (1) Django aka BOfH (Bastard Operator from Hell) < | ||
- | gpg> </ | + | sec 4096R/ |
- | Zu guter Letzt verlassen wir das Programm | + | ssb* 4096R/ |
- | | + | |
+ | ssb 4096R/ | ||
+ | ssb 4096R/ | ||
+ | (1) Django aka BOfH < | ||
+ | </ | ||
+ | |||
+ | 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. | ||
+ | | ||
+ | < | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb 4096R/ | ||
+ | ssb 4096R/ | ||
+ | (1) Django aka BOfH < | ||
+ | </ | ||
+ | gpg> key 2 | ||
+ | < | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb* 4096R/ | ||
+ | ssb 4096R/ | ||
+ | (1) Django aka BOfH < | ||
+ | </ | ||
+ | |||
+ | Nun verschieben wir den privaten Signierungs-Unterschlüssel in Richtung SmartCard des Nitrokey Pro. Hier wählen wir nun die **1** für // | ||
+ | gpg> keytocard | ||
+ | < | ||
+ | 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: " | ||
+ | 4096-bit RSA key, ID ACCE2639, created 2018-11-21 | ||
+ | |||
+ | |||
+ | sec 4096R/ | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb* 4096R/ | ||
+ | | ||
+ | ssb 4096R/ | ||
+ | (1) Django aka BOfH < | ||
+ | </ | ||
+ | |||
+ | Zu guter Letzt fehlt nun noch unser Authentifizierungs-Unterschlüssel. Wir wählen also wieder den Schlüssel | ||
+ | gpg> key 2 | ||
+ | < | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb 4096R/ | ||
+ | (1) Django aka BOfH < | ||
+ | </ | ||
+ | gpg> key 3 | ||
+ | < | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb* 4096R/ | ||
+ | (1) Django aka BOfH < | ||
+ | </ | ||
+ | |||
+ | Nun verschieben wir den privaten Authentifizierungs-Unterschlüssel in Richtung SmartCard des Nitrokey Pro. Hier wählen wir nun die **3** für // | ||
+ | gpg> keytocard | ||
+ | < | ||
+ | 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: " | ||
+ | 4096-bit RSA key, ID EC65030E, created 2018-11-21 | ||
+ | |||
+ | |||
+ | sec 4096R/ | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb 4096R/ | ||
+ | | ||
+ | ssb* 4096R/ | ||
+ | | ||
+ | (1) Django aka BOfH < | ||
+ | </ | ||
+ | |||
+ | Zum Abschluss | ||
+ | gpg> save | ||
+ | |||
+ | Wenn wir jetzt den Kartenstatus abfragen, werden unsere drei Unterschlüssel entsprechend mit angezeigt. | ||
+ | $ gpg2 --card-status | ||
+ | |||
+ | < | ||
+ | Version ..........: 3.3 | ||
+ | Manufacturer .....: ZeitControl | ||
+ | Serial number ....: 00006FDA | ||
+ | Name of cardholder: [not set] | ||
+ | Language prefs ...: de | ||
+ | Sex ..............: | ||
+ | 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/ | ||
+ | sec | ||
+ | ssb> | ||
+ | card-no: 0005 00006FDA | ||
+ | ssb> | ||
+ | card-no: 0005 00006FDA | ||
+ | ssb> | ||
+ | card-no: 0005 00006FDA | ||
+ | </ | ||
+ | |||
+ | === Öffentlichen Schlüssel ausgeben === | ||
+ | Damit wir später unseren öffentlichen Schlüssel auch weitergeben oder zu einem [[https:// | ||
+ | $ 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> | ||
+ | Version: GnuPG v2.0.22 (GNU/ | ||
+ | |||
+ | mQINBFv1H9kBEAC9GZO2QsMWqhP2SNcJ1X0eRpTtSM3rqbblmDCWovJjI8X4uCbq | ||
+ | ApvG8yKFAnGyqpgu5FRj7aNcrMRUbPqOUyZ1Q5R+Nx/ | ||
+ | oQKnimBUw4QoAIy/ | ||
+ | tHLaKbcJxePgw0QmjuD+8FIHX0keMZFjiutMPAmrRFpBdOdihBmPTPeJ1Qk6z37M | ||
+ | L6F+WE+kMGYGtb+v3rfbRzla2K+k/ | ||
+ | Zh8hDdczLTq5CJnQ4wFHLRRunR7LHg4DPv23NI7e6JedjvYU+v+/ | ||
+ | 3FFH6EMK/ | ||
+ | vb0HrARO+wVzyBVQuQsys2o3qCWpOPZ/ | ||
+ | 9eVkLUFAm/ | ||
+ | 9ENS2ZaBot+5MPGNqhxlbZh7zFxkf+g6rhpgwKqQT2CYjtXHYVa6m2J+9FWTHe4W | ||
+ | XxjU4Jvjc3LQYJCEsYpI5aTcj2EwH8ph8p2Q00W++kiuTwrTlBn+bfsjGwARAQAB | ||
+ | tClEamFuZ28gYWthIEJPZkggPHNlY21haWxAbWFpbHNlcnZlci5ndXJ1PokCOQQT | ||
+ | AQIAIwUCW/ | ||
+ | NZRGbZcP/ | ||
+ | l2PFSwLTsfxLTFRNem2Ra6QT2Ld5sHDIMk6V2rnxSTWZGDx6j5dlG1+GQXkX8MYL | ||
+ | Wr1WdPUFlyijYMzIwaeCtCrx0cBlufXxi3T/ | ||
+ | jThG8PqPI1imXu8X/ | ||
+ | IWuZ/ | ||
+ | Auw84V7Iyvk6o7sJsvf/ | ||
+ | s8+0LpSIcPkjrgVLqiS5NfW7r7leshCFt+gRZfno8XHAwbpMMHTOmxsHQZNHcmh4 | ||
+ | pMn5VCmwBvrFSlZDyzn/ | ||
+ | PX7bScXYiOgN/ | ||
+ | KnpE2btu7tR2AosSbo80j0JXYAgRf5RWJndvA4nbxB7mVcvKFHJ36C69V9U40p0E | ||
+ | fxCX7Z5rmQx+tsnhu7ltIh/ | ||
+ | EAD1QYpaiuEGwLG7oTX4V1AHkZ+nK5vINdfy5c7VoAIrftZ1dj6KdFoRmV2sKqZD | ||
+ | ulovSj7L4QGYd+SoR+ujKjm+M4QIciyLinmyPR0P1u6hag3Hfej/ | ||
+ | 7BRBe6rSu3XsCLI5IzQh5q+zc28zS4bZR3CvG+gRTzNkI/ | ||
+ | bK48rYKO7n9yWC7ufU1qieAtkeuBR9u/ | ||
+ | sqfvFYzyTSRAy8g4S3o1cFxIM53N3IrTZFv3F7rs43mONH1iBBrwkEz19g2y+gLJ | ||
+ | zHkIDZeAQ0ACVwR95ZWzukq/ | ||
+ | V39UaegXYoTd5YtFhMwNxQRmg0E3/ | ||
+ | RvQCYbyF4FKwVkq09ty20IN/ | ||
+ | BFDCjfkk8+iRvkH6S4aWlCieCY5Mdcx/ | ||
+ | Y9OkZYQZaVZTAZp8O4Nraj7JIZm1iIfq0NBVSMHhxus7+AfXrHdoaFo601OFJHlL | ||
+ | O+3sv9mVQYT1pBr/ | ||
+ | BQJb9R/ | ||
+ | M9CUanh8iEr+8QEiyj6oVhUaCr+WDxPj+c7xm/ | ||
+ | GbdpVh53vKRtUqddBn95yu3FMqmjh84iCIJi+NDnI1QiZTTW+uKQ2v1d+7m89kCf | ||
+ | nihpxWwbr+pw4KoCxo6cCSfQlODPXUVs+6gaSm5hg0tmFRQRkaH/ | ||
+ | 76rYuhwI0uaEB5pdb3j4eSyRnKg9carvSNQFUjPx/ | ||
+ | 77vS6/ | ||
+ | 2PEnF/ | ||
+ | 9c1taWTcGvqf7/ | ||
+ | gpT7RetllYqDBahIkzuTqlpySWNTJ+ABUl7mVx5Q3TyfiL8KC6U6ynqtALmTN1tb | ||
+ | 8PQo1Ep/ | ||
+ | ebwE7wQRewKtaO87+nt8ju4Bo5wPbO4UwAzjPnzX0nDCNlLC+/ | ||
+ | pEDFrIG+47gxuQINBFv1SHEBEADJGTXhgV8dTea4+nf+MPqoGYefE7ChgLnWdfhs | ||
+ | 51OPvoyFVmCtRVOuWAIoka5/ | ||
+ | B9Fo8lpbrygpal3dvZ1ZQ/ | ||
+ | Cvar5oJ/ | ||
+ | pXNZJhEKz789FLHFj2uXSkQvoh9VuyGxQcVyhdYmxDh37CepxyzNRcGiQx67BTWX | ||
+ | qmNWg6Cl1HLn/ | ||
+ | 3pcBud9Jvp+C2cpYVG/ | ||
+ | TCYzWcKYiaNcsedGn/ | ||
+ | abpDygntiydpnPfa1BsgnVYOMTndIwVYe0nIvw/ | ||
+ | iCH+2HwnkkpqlYyInJjQFsDuZxTe+ND7YDAJ+NnLNmYblcYYfhM2GG/ | ||
+ | kErHjicnhZo5tqQFFi9T6LvT4L7m1lznHDnDlsYtjiWlw/ | ||
+ | MrU5hQARAQABiQQ+BBgBAgAJBQJb9UhxAhsCAikJEC7L42/ | ||
+ | BQJb9UhxAAoJEH13PHSsziY5fKEP/ | ||
+ | iUTobK5Wm3sYR8d6suDJVa989vjB4l19W1k7pztFFuNPLmEPEirLsRYlJOS36l8g | ||
+ | OdjuFZBf/ | ||
+ | 9C72YQObIh7sZJXD1qH+OmynlHfpwI+B/ | ||
+ | RCLu/ | ||
+ | luNEVcnkOLI6qA2pYIKvCip86YjelQEN1LgjRv3x+3lEekm1jijdotxXuK57zwj/ | ||
+ | 3FfxK+k7n0PRr7LBnbGKYIGu2f05wqCXvCy2JqoOOIkgfyUQmlwEYZ8hKhj2V5v5 | ||
+ | Yb2JUO6ui8rG6MARewrnbLAIXgPqKV0LBRNlmAx3ohJ1t4keqyrPOyY7AlLj869W | ||
+ | S5yMS4zqRE6T9ATQjhnpauha5EOIUBhjvcOxTlYGa2znJvsfr7V4vTY1aBMYa+3m | ||
+ | plvLQb0LrqwLuvIvKGdsdOOrvcAhueX5kq5kk5dxzU7yiArprVcGYiOopaNmfAMO | ||
+ | WsTBWVHuz5VjukA0A9E/ | ||
+ | YB4420jk8VwP/ | ||
+ | 3C7uw8uhMRI4RUKtgeJs8/ | ||
+ | 7FKCzpMY6RQ4TeR5hVf20xqfzyic+1WPCtWVa1DrdznMwrrHM1TprVEcZj4mfORx | ||
+ | VrhydQ39L7GGC2HFI2rvwItxNm3okNq3WEnWPyCgswG76NVJKo6CXQpSSOwWINv7 | ||
+ | usjau8wUWal8eM7RcUcPiIkDknJQDRZD0npS/ | ||
+ | vlHrR6BxXKU8G7niPuDZwIItS8LwJAMn5EBhzb8IAVWZqJzfn6txpINTbybb8v9L | ||
+ | U+Km+yyFcNuG+BV7aCLuLEFjDkNLVnF6Le/ | ||
+ | jxGS9GnNJMeKqixbnKFtNmnK8sZ9khcjYswcOMbLloGNpkmsRU2JDywefmCz0eVz | ||
+ | kXMwv+4CQF8ODdS/ | ||
+ | Bx7tT2GuGQuN7UD9Zr8iO7c0LlDZ3NZbWDqvXLqNykF/ | ||
+ | fOGjqOOMfs16zb9lmxPz7NTddYwa/ | ||
+ | SQgBEACb/ | ||
+ | r9TEgzTBez3S4fd3KLxJXQbD0fXGoQ3R8yqSydfYiPgkMBdxpbWffrTXRCa5gNA0 | ||
+ | cFlrzj/ | ||
+ | xkZmsXLvlkzU1QExH5RLr9c3IDW6CfMFuKE5zBuoY4Ba1EXuayvpN+z1IMw0VwSZ | ||
+ | 334xCxXzpSq3dUoSJIS9yy6Sba3XMxzwmYG8RblceFhAC+ec6PVLQ4FukAwInRh6 | ||
+ | L/ | ||
+ | IFKwXS2D6fE0XX3Er0goq2JHZo7pYdUjnkaRFGsvghzHgTDWwcv5JILxHyuHHtrc | ||
+ | AeptL9/ | ||
+ | 6Vz0AT1aXmi5nM/ | ||
+ | rC5Xx3iG+Bs0nYF422wDmL1TgeIuQIjgtZWFSZ+qVLYtRieQgCCCFg1TfuOYq2+k | ||
+ | AUg0ADV/ | ||
+ | AgAJBQJb9UkIAhsgAAoJEC7L42/ | ||
+ | c7Fagw641qjIxJP1LhjlFiJfKx6zHFDrCDyWsy6JeNzjyJOmQQMgXcQ9I/ | ||
+ | G966p1HlPxRpKgbcgSKoCGgLXRwVEAwsngYKApQKFM11gGzeRTiPyOfYuhPXTstD | ||
+ | kr3zbdrlsLNdAs6lia55QxE+SkG7yXvMGO1IsbGzarGVvE4CmzmaFX01Y1eU/ | ||
+ | pdf6QqdfF0Z+4tP5Ej2Al3kwQNgNQxfus329VpMibhTpB7/ | ||
+ | sM+iVw8C7ZwJFmiVj+ZkXpYfSOHCp6ZBewojPEXlLBw4YLUf02aKHfZWeqOXvIqg | ||
+ | djphB+Ok4KeYAuRiZp0KlIGN5dhQA+d6wgxwKNvFiuIVxi7hxlT8RO/ | ||
+ | u1VdHLA5qxXsAC6iuZFwO/ | ||
+ | 1OY8ZSVVHmsObiFRyIogm6FXnfNh+5W8/ | ||
+ | lUuvBaEzMS0puUXq3VPl01WVYyg9b4P2XcRbSiWQmQ1AKT4Rf6fH7/ | ||
+ | lj2nm/ | ||
+ | MezibODnMrJixhyz | ||
+ | =ZvZy | ||
+ | -----END PGP PUBLIC KEY BLOCK-----</ | ||
+ | |||
+ | === 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. < | ||
+ | - Nun verschlüsseln wir dieses Textdokument: | ||
+ | -rw-rw-r-- 1 django django 962 Nov 21 14:37 testdatei.txt.pgp</ | ||
+ | �̯VK����ꠔ��oY]�T> | ||
+ | SZ, | ||
+ | =�Y����v, | ||
+ | MQ[Ce< | ||
+ | u�뇙�P����1< | ||
+ | ��߿�W.�-I����^�V�-��+A�i� | ||
+ | | ||
+ | *�]��-�t, | ||
+ | | ||
+ | | ||
+ | ��6��n�# | ||
+ | - Nun entschlüsseln wir unser Dokument wieder.< | ||
+ | " | ||
+ | |||
+ | === Schlüssel aus dem lokalen Schlüsselspeicher entfernen === | ||
+ | Löschen wir nun den kompletten Schlüssel aus der lokalen Schlüsseldatei, | ||
+ | $ gpg --delete-secret-key secmail@nausch.org | ||
+ | < | ||
+ | This is free software: you are free to change and redistribute it. | ||
+ | There is NO WARRANTY, to the extent permitted by law. | ||
+ | |||
+ | |||
+ | sec 4096R/ | ||
+ | |||
+ | Delete this key from the keyring? (y/N) y | ||
+ | This is a secret key! - really delete? (y/N) y | ||
+ | </ | ||
+ | |||
+ | <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! | ||
+ | </ | ||
+ | |||
+ | Der gpg-Befehl '' | ||
+ | |||
+ | 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 | ||
+ | < | ||
+ | ------------------------------ | ||
+ | sec | ||
+ | uid Django aka BOfH < | ||
+ | ssb> | ||
+ | ssb> | ||
+ | ssb> | ||
+ | </ | ||
+ | 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 | ||
+ | < | ||
+ | This is free software: you are free to change and redistribute it. | ||
+ | There is NO WARRANTY, to the extent permitted by law. | ||
+ | |||
+ | |||
+ | sec 4096R/ | ||
+ | |||
+ | Delete this key from the keyring? (y/N) y | ||
+ | This is a secret key! - really delete? (y/N) y</ | ||
+ | |||
+ | 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 | ||
+ | < | ||
+ | gpg: key D1359446: " | ||
+ | gpg: Total number processed: 1 | ||
+ | gpg: unchanged: 1 | ||
+ | gpg: | ||
+ | gpg: | ||
+ | |||
+ | Lassen wir uns nun den Inhalt des privaten Schlüsselbundes anzeigen, sehen wir die zurückgesicherten Unterschlüssel wieder. | ||
+ | $ gpg2 --list-secret-keys | ||
+ | < | ||
+ | ------------------------------ | ||
+ | sec# 4096R/ | ||
+ | uid Django aka BOfH < | ||
+ | ssb> | ||
+ | ssb> | ||
+ | ssb> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Beim passenden Konto wählen wir dann die Option **OpenPGP-Sicherheit** aus. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Hier wählen wir nun den Schlüssel aus, den wir zuvor erstellt und auf die SmartCard des Kryptostick Pro verschoben hatten. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Habne wir die PIN richtig eigegeben, wird die entschlüsselte Nachricht angezeigt. | ||
- | Änderungen speichern? (j/N) j | + | {{ : |