Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| centos:nitrokey:pro [17.11.2018 20:58. ] – [Schlüssel generieren] django | centos:nitrokey:pro [18.11.2024 18:59. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| {{: | {{: | ||
| - | In diesem Kapitel befassen wir uns eingehend mit dem [[https:// | + | In diesem Kapitel befassen wir uns eingehend mit dem [[https:// |
| - | Hierzu verwenden wir den [[https:// | + | Hierzu verwenden wir den [[https:// |
| 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 | + | * **Sicheres Login** \\ Einmalpassworte |
| * **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, | + | * **Verschlüsselung von Dateien und Massenspeichern(Festplatten)** \\ Auch hier wird das geheime Schlüsselmaterial, |
| Weitere Informationen zum USB-Stick [[https:// | Weitere Informationen zum USB-Stick [[https:// | ||
| Zeile 49: | Zeile 49: | ||
| Nov 16 17:49:39 T410 systemd: Starting Smart C</ | Nov 16 17:49:39 T410 systemd: Starting Smart C</ | ||
| + | ===== 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 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 | + | 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 191: | 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 198: | 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 365: | Zeile 398: | ||
| $ gpg --card-edit | $ gpg --card-edit | ||
| - | < | + | < |
| Version ..........: 3.3 | Version ..........: 3.3 | ||
| Manufacturer .....: ZeitControl | Manufacturer .....: ZeitControl | ||
| Zeile 385: | Zeile 418: | ||
| gpg/ | gpg/ | ||
| - | </ | ||
| | | ||
| Zeile 470: | 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 480: | Zeile 512: | ||
| <WRAP center round alert 90%> | <WRAP center round alert 90%> | ||
| - | Leider bricht die Generierung des Schlüssels an dieser Stelle mit dem folgenden Fehler ab:< | + | Leider bricht die Generierung des Schlüssels an dieser Stelle mit dem folgenden Fehler ab: < |
| - | Schlüsselerzeugung fehlgeschlagen: | + | Schlüsselerzeugung fehlgeschlagen: |
| 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: | ||
| + | |||
| </ | </ | ||
| + | === vorhandenen Schlüssel importieren === | ||
| + | Da aktuell((Stand: | ||
| + | |||
| + | == PGP-Schlüssel generieren == | ||
| + | Zunächst erzeugen wir uns also einen PGP-Schlüssel, | ||
| + | $ gpg --gen-key | ||
| + | < | ||
| + | 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>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: | ||
| + | " | ||
| + | |||
| + | Change (N)ame, (C)omment, (E)mail or (O)kay/ | ||
| + | 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: | ||
| + | pub | ||
| + | Key fingerprint = FA63 2892 1925 65D3 E006 DC75 2ECB E36F D135 9446 | ||
| + | uid Django aka BOfH < | ||
| + | sub | ||
| + | </ | ||
| + | |||
| + | In unserem PGP-Schlüsselbund befinden sich nun unser gerade angelegt Schlüssel. | ||
| + | $ gpg2 --list-secret-keys | ||
| + | < | ||
| + | ------------------------------ | ||
| + | sec | ||
| + | uid Django aka BOfH < | ||
| + | ssb | ||
| + | |||
| + | |||
| + | == PGP-Unterschlüssel - subkeys == | ||
| + | <WRAP center round tip 95%> | ||
| + | Bei der **[[https:// | ||
| + | </ | ||
| + | |||
| + | 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// | ||
| + | |||
| + | Die öffentlichen Schlüssel bleiben nach wie vor im Schlüsselbund auf unserer Festplatte // | ||
| + | |||
| + | 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 | ||
| + | |||
| + | / | ||
| + | pub | ||
| + | |||
| + | In unserem Konfigurationsbeispiel hier ist dies die Key-ID: **D1359446**. Zunächst erstellen wir besagten Unterschlüssel zum Signieren: | ||
| + | $ gpg2 --expert --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/ | ||
| + | [ultimate] (1). Django aka BOfH < | ||
| + | |||
| + | gpg></ | ||
| + | Das Erzeugen von Unterschlüssel erfolgt mit hilfe des Befehls '' | ||
| + | gpg> addkey | ||
| + | < | ||
| + | |||
| + | 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?</ | ||
| + | |||
| + | 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 und Verschlüsselung vorausgewählt wurde: '' | ||
| + | < | ||
| + | |||
| + | 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 4096R/ | ||
| + | | ||
| + | sub 4096R/ | ||
| + | sub 4096R/ | ||
| + | sub 4096R/ | ||
| + | [ultimate] (1). Django aka BOfH < | ||
| + | </ | ||
| + | |||
| + | 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 Django aka BOfH < | ||
| + | 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> </ | ||
| + | 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 **2** = // | ||
| + | gpg> keytocard | ||
| + | |||
| + | < | ||
| + | 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: " | ||
| + | 4096-bit RSA key, ID 564BA287, created 2018-11-21 | ||
| + | |||
| + | |||
| + | sec 4096R/ | ||
| + | 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. | ||
| + | gpg> key 1 | ||
| + | < | ||
| + | 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 **2** ab und den Schlüssel **3** aus. | ||
| + | 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 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 | ||
| + | |||
| + | < | ||
| + | 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/Linux) | ||
| + | |||
| + | 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. | ||
| + | |||
| + | {{ : | ||