Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
fedora:nitrokey:start [28.11.2018 07:01. ] – [ED25519-Schlüssel generieren] django | fedora:nitrokey:start [18.11.2024 18:58. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Nitrokey Start in der Praxis unter Fedora 29 ====== | ====== Nitrokey Start in der Praxis unter Fedora 29 ====== | ||
{{: | {{: | ||
- | In diesem Kapitel befassen wir uns eingehend mit dem [[https:// | + | In diesem Kapitel befassen wir uns eingehend mit dem [[https:// |
Mit Hilfe von asymmetrischen Schlüsselmaterials (PGP und S/MIME) können eMails sowie Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. Hierzu verwenden wir den [[https:// | Mit Hilfe von asymmetrischen Schlüsselmaterials (PGP und S/MIME) können eMails sowie Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. Hierzu verwenden wir den [[https:// | ||
Zeile 214: | Zeile 214: | ||
Real name: Django aka [BOfH] | Real name: Django aka [BOfH] | ||
- | Email address: secmail@mailserver.guru | + | Email address: secmail@nausch.org |
Comment: Bastard Operator from Hell | Comment: Bastard Operator from Hell | ||
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 235: | Zeile 235: | ||
pub | pub | ||
E65B2BDF79A2E2E4C28F6E062E22436430385B49 | E65B2BDF79A2E2E4C28F6E062E22436430385B49 | ||
- | uid Django aka [BOfH] (Bastard Operator from Hell) < | + | uid Django aka [BOfH] (Bastard Operator from Hell) < |
sub | sub | ||
sub | sub | ||
+ | === ED25519-Schlüssel generieren === | ||
+ | In dem Artikel **[[https:// | ||
+ | |||
+ | Damit auf einem **Nitrokey Start** Schlüssel auf Basis elliptischer Kurven generiert werden können, muss dieser mindestens die Firmware Version 1.2 verfügen. Dies kontrolliert man am einfachsten mit Folgendem Befehl. | ||
+ | $ gpg2 --card-status | grep Reader | ||
+ | |||
+ | Reader ...........: | ||
+ | |||
+ | Ferner muss auf dem Rechner, an dem der Stick angesteckt und administriert werden soll, GnuPG in Version 2.1.16 oder höher installiert sein. Bei Fedora 29 ist dies kein Problem da aktuell((November 18)) die Version 2.2.9 bereitgestellt wird. Bei Bedarf können wir die Version z.B. wie folgt abfragen. | ||
+ | $ gpg2 --version | grep gpg | ||
+ | |||
+ | gpg (GnuPG) 2.2.9 | ||
+ | |||
+ | Nun werden wir uns Schlüsselpaar auf Basis elliptischer Kurven auf dem Nitrokey Start generieren. Bevor wir die eigentlichen [[https:// | ||
+ | Welcher Typ eingestellt ist können wir mit den Befehl '' | ||
+ | $ gpg2 --card-status | grep Key\ attributes | ||
+ | |||
+ | Key attributes ...: rsa2048 rsa2048 rsa2048 | ||
+ | |||
+ | Zum Ändern der Vorgabewerte benutzen wir die Option '' | ||
+ | $ gpg2 --card-edit | ||
+ | |||
+ | < | ||
+ | Application ID ...: D276000124010200FFFE432437110000 | ||
+ | Version ..........: 2.0 | ||
+ | Manufacturer .....: unmanaged S/N range | ||
+ | Serial number ....: 43243711 | ||
+ | Name of cardholder: [not set] | ||
+ | Language prefs ...: [not set] | ||
+ | Sex ..............: | ||
+ | URL of public key : [not set] | ||
+ | Login data .......: [not set] | ||
+ | Signature PIN ....: forced | ||
+ | Key attributes ...: rsa2048 rsa2048 rsa2048 | ||
+ | Max. PIN lengths .: 127 127 127 | ||
+ | PIN retry counter : 3 3 3 | ||
+ | Signature counter : 0 | ||
+ | Signature key ....: [none] | ||
+ | Encryption key....: [none] | ||
+ | Authentication key: [none] | ||
+ | General key info..: [none] | ||
+ | |||
+ | gpg/ | ||
+ | |||
+ | Im Admin-Bereich finden wir den Befehl '' | ||
+ | gpg/ | ||
+ | |||
+ | Admin commands are allowed | ||
+ | |||
+ | Hier rufen wir dann den Befehl '' | ||
+ | gpg/ | ||
+ | |||
+ | Im folgenden ändern wir dann für die drei (Unterschlüssel) die Schlüsselart von **ECC** und bei der Frage nach der elliptischer Kurve wählen wir dann die Option **Curve 25519**. | ||
+ | < | ||
+ | Please select what kind of key you want: | ||
+ | (1) RSA | ||
+ | (2) ECC | ||
+ | Your selection? 2 | ||
+ | Please select which elliptic curve you want: | ||
+ | (1) Curve 25519 | ||
+ | (4) NIST P-384 | ||
+ | Your selection? 1 | ||
+ | The card will now be re-configured to generate a key of type: ed25519 | ||
+ | Note: There is no guarantee that the card supports the requested size. | ||
+ | If the key generation does not succeed, please check the | ||
+ | documentation of your card to see what sizes are allowed. | ||
+ | Changing card key attribute for: Encryption key | ||
+ | Please select what kind of key you want: | ||
+ | (1) RSA | ||
+ | (2) ECC | ||
+ | Your selection? 2 | ||
+ | Please select which elliptic curve you want: | ||
+ | (1) Curve 25519 | ||
+ | (4) NIST P-384 | ||
+ | Your selection? 1 | ||
+ | The card will now be re-configured to generate a key of type: cv25519 | ||
+ | Changing card key attribute for: Authentication key | ||
+ | Please select what kind of key you want: | ||
+ | (1) RSA | ||
+ | (2) ECC | ||
+ | Your selection? 2 | ||
+ | Please select which elliptic curve you want: | ||
+ | (1) Curve 25519 | ||
+ | (4) NIST P-384 | ||
+ | Your selection? 1 | ||
+ | The card will now be re-configured to generate a key of type: ed25519 | ||
+ | |||
+ | gpg/ | ||
+ | |||
+ | Zum Schluss verlassen wir das Programm **gpg2** mit '' | ||
+ | gpg/ | ||
+ | |||
+ | Fragen wir nun erneut mit den Befehl '' | ||
+ | $ gpg2 --card-status | grep Key\ attributes | ||
+ | |||
+ | Key attributes ...: ed25519 cv25519 ed25519 | ||
+ | |||
+ | Nun erstellen wir uns unsere gewünschten Schlüssel auf der SmartCard der Nitrokey Start. Wie schon beim [[fedora: | ||
+ | |||
+ | $ gpg2 --card-edit | ||
+ | < | ||
+ | Application ID ...: D276000124010200FFFE432437110000 | ||
+ | Version ..........: 2.0 | ||
+ | Manufacturer .....: unmanaged S/N range | ||
+ | Serial number ....: 43243711 | ||
+ | Name of cardholder: [not set] | ||
+ | Language prefs ...: [not set] | ||
+ | Sex ..............: | ||
+ | URL of public key : [not set] | ||
+ | Login data .......: [not set] | ||
+ | Signature PIN ....: forced | ||
+ | Key attributes ...: ed25519 cv25519 ed25519 | ||
+ | Max. PIN lengths .: 127 127 127 | ||
+ | PIN retry counter : 3 3 3 | ||
+ | Signature counter : 0 | ||
+ | Signature key ....: [none] | ||
+ | Encryption key....: [none] | ||
+ | Authentication key: [none] | ||
+ | General key info..: [none] | ||
+ | |||
+ | gpg/ | ||
+ | |||
+ | Die Schlüsselgenerierung erfolgt im Adminmenü, in welches wir nun erst einmal wechseln werden. | ||
+ | gpg/ | ||
+ | |||
+ | Admin commands are allowed | ||
+ | |||
+ | Die Erzeugung der Schlüssel erfolgt wie immer mit dem Befehk '' | ||
+ | gpg/ | ||
+ | < | ||
+ | |||
+ | Please note that the factory settings of the PINs are | ||
+ | PIN = ' | ||
+ | You should change them using the command --change-pin | ||
+ | |||
+ | 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: Bastard Operator from Hell | ||
+ | You selected this USER-ID: | ||
+ | " | ||
+ | |||
+ | Change (N)ame, (C)omment, (E)mail or (O)kay/ | ||
+ | gpg: key 9308FC78386863AC marked as ultimately trusted | ||
+ | gpg: revocation certificate stored as '/ | ||
+ | public and secret key created and signed.< | ||
+ | |||
+ | Fragen wir nun den Inhalt der SmartCard mit dem Befehl '' | ||
+ | gpg/ | ||
+ | < | ||
+ | Application ID ...: D276000124010200FFFE432437110000 | ||
+ | Version ..........: 2.0 | ||
+ | Manufacturer .....: unmanaged S/N range | ||
+ | Serial number ....: 43243711 | ||
+ | Name of cardholder: [not set] | ||
+ | Language prefs ...: [not set] | ||
+ | Sex ..............: | ||
+ | URL of public key : [not set] | ||
+ | Login data .......: [not set] | ||
+ | Signature PIN ....: forced | ||
+ | Key attributes ...: ed25519 cv25519 ed25519 | ||
+ | Max. PIN lengths .: 127 127 127 | ||
+ | PIN retry counter : 3 3 3 | ||
+ | Signature counter : 4 | ||
+ | Signature key ....: 3E61 A503 47B5 2382 4132 EC06 9308 FC78 3868 63AC | ||
+ | created ....: 2018-11-27 21:26:26 | ||
+ | Encryption key....: FB2B D8AD 4660 EADE 0108 852D BF1E A3F7 0320 3D8A | ||
+ | created ....: 2018-11-27 21:26:26 | ||
+ | Authentication key: 9131 32BE D5AF D08E 4464 89B6 77F0 A5B2 F32A 76AE | ||
+ | created ....: 2018-11-27 21:26:26 | ||
+ | General key info..: pub ed25519/ | ||
+ | sec> | ||
+ | card-no: FFFE 43243711 | ||
+ | ssb> | ||
+ | card-no: FFFE 43243711 | ||
+ | ssb> | ||
+ | card-no: FFFE 43243711</ | ||
+ | Wir verlassen nun das Programm **'' | ||
+ | gpg/ | ||
+ | |||
+ | < | ||
+ | 3E61A50347B523824132EC069308FC78386863AC | ||
+ | uid Django aka [BOfH] (Bastard Operator from Hell) < | ||
+ | sub | ||
+ | sub | ||
+ | </ | ||
Zeile 250: | Zeile 447: | ||
E65B2BDF79A2E2E4C28F6E062E22436430385B49 | E65B2BDF79A2E2E4C28F6E062E22436430385B49 | ||
Card serial no. = FFFE 43243711 | Card serial no. = FFFE 43243711 | ||
- | uid | + | uid |
ssb> | ssb> | ||
ssb> | ssb> | ||
Zeile 263: | Zeile 460: | ||
pub | pub | ||
E65B2BDF79A2E2E4C28F6E062E22436430385B49 | E65B2BDF79A2E2E4C28F6E062E22436430385B49 | ||
- | uid | + | uid |
sub | sub | ||
sub | sub | ||
Zeile 269: | Zeile 466: | ||
=== Öffentlichen Schlüssel ausgeben === | === Öffentlichen Schlüssel ausgeben === | ||
Damit wir später unseren öffentlichen Schlüssel auch weitergeben oder zu einem [[https:// | Damit wir später unseren öffentlichen Schlüssel auch weitergeben oder zu einem [[https:// | ||
- | $ gpg --export --armor secmail@mailserver.guru > secmail@mailserver.guru.pubkey | + | $ gpg --export --armor secmail@nausch.org > secmail@nausch.org.pubkey |
Diese Datei enthält unseren Schlüssel in ASCII-lesbarer Form. | Diese Datei enthält unseren Schlüssel in ASCII-lesbarer Form. | ||
- | $ cat secmail@mailserver.guru.pubkey | + | $ cat secmail@nausch.org.pubkey |
- | <file key secmail@mailserver.guru.pubkey> | + | <file key secmail@nausch.org.pubkey> |
mQENBFv8ZM0BCADIZ1us1KDfrl+VVZTmjgVDb9XLSJDWOCjjhngzkBNVIYpPRL9P | mQENBFv8ZM0BCADIZ1us1KDfrl+VVZTmjgVDb9XLSJDWOCjjhngzkBNVIYpPRL9P | ||
Zeile 354: | Zeile 551: | ||
created ....: 2018-11-26 21:25:33 | created ....: 2018-11-26 21:25:33 | ||
General key info..: | General key info..: | ||
- | pub 2048R/ | + | pub 2048R/ |
sec> | sec> | ||
card-no: FFFE 43243711 | card-no: FFFE 43243711 | ||
Zeile 418: | Zeile 615: | ||
created ....: 2018-11-26 21:25:33 | created ....: 2018-11-26 21:25:33 | ||
General key info..: | General key info..: | ||
- | pub 2048R/ | + | pub 2048R/ |
sec> | sec> | ||
card-no: FFFE 43243711 | card-no: FFFE 43243711 | ||
Zeile 535: | Zeile 732: | ||
- Zunächst Wir legen uns erst einmal ein beliebiges Testdokument an. < | - Zunächst Wir legen uns erst einmal ein beliebiges Testdokument an. < | ||
- | - Nun verschlüsseln wir dieses Textdokument: | + | - Nun verschlüsseln wir dieses Textdokument: |
-rw-rw-r--. 1 django django 573 Nov 26 22:57 testdatei.txt.pgp</ | -rw-rw-r--. 1 django django 573 Nov 26 22:57 testdatei.txt.pgp</ | ||
Zeile 549: | Zeile 746: | ||
-----END PGP MESSAGE-----</ | -----END PGP MESSAGE-----</ | ||
- Nun entschlüsseln wir unser Dokument wieder.< | - Nun entschlüsseln wir unser Dokument wieder.< | ||
- | " | + | " |
=== Signieren === | === Signieren === | ||
Zeile 564: | Zeile 761: | ||
." | ." | ||
| | ||
- | �b �v�©]/ | + | �b �v�©]/ |
gpg: signatures created so far: 8 | gpg: signatures created so far: 8 | ||
Zeile 597: | Zeile 794: | ||
=ld6o | =ld6o | ||
-----END PGP SIGNATURE-----</ | -----END PGP SIGNATURE-----</ | ||
- | gpg: Good signature from " | + | gpg: Good signature from " |
gpg: WARNING: not a detached signature; file ' | gpg: WARNING: not a detached signature; file ' | ||
Hash: SHA1 | Hash: SHA1 | ||
Zeile 612: | Zeile 809: | ||
=ld6o | =ld6o | ||
-----END PGP SIGNATURE-----</ | -----END PGP SIGNATURE-----</ | ||
- | gpg: BAD signature from " | + | gpg: BAD signature from " |
- | === ED25519-Schlüssel generieren === | ||
- | In dem Artikel **[[https:// | + | ==== Nitrokey Start und Thunderbird ==== |
+ | Nachdem wir nun unsere Schlüssel auf dem Kryptostick erstellt haben, wollen wir diesen nun verwenden um bei Thunderbird unsere elektronische Kommunikation per eMail abzusichern. | ||
- | Damit auf einem **Nitrokey Start** Schlüssel auf Basis elliptischer Kurven generiert werden können, muss dieser mindestens die Firmware Version 1.2 verfügen. Dies kontrolliert man am einfachsten mi Folgendem Befehl. | + | === Schlüssel einem Konto zuweisen === |
- | $ gpg2 --card-status | grep Reader | + | Damit wir unser Kryptodevice unter Thunderbird nutzen können müssen wir erst einmal den Schlüssel dem betreffenden Konto zuweisen. |
+ | Über das Menü wählen wir den Punkt **Konten-Einstellungen** aus. | ||
- | Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43243711) 00 00 | + | {{ : |
- | Ferner muss auf dem Rechner, an dem der Stick angesteckt und administriert werden soll, GnuPG in Version 2.1.16 oder höher installiert sein. Bei Fedora 29 ist dies kein Problem da aktuell((November 18)) die Version 2.2.9 bereitgestellt wird. Bei Bedarf können | + | Beim passenden Konto wählen |
- | $ gpg2 --version | grep gpg | + | |
- | gpg (GnuPG) 2.2.9 | + | {{ : |
- | Nun werden | + | Hier wählen |
- | $ gpg2 --card-status | grep Key\ attributes | + | |
- | Key attributes ...: rsa2048 rsa2048 rsa2048 | + | {{ : |
- | Zum Ändern der Vorgabewerte benutzen | + | === eMail signieren === |
- | $ gpg2 --card-edit | + | Nun erstellen |
+ | {{ : | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | === eMail entschlüsseln === | ||
+ | Bekommen wir nun eine verschlüsselte Nachricht, die mit dem öffentlichen Schlüssel unseres Schlüssels der sich auf dem Nitrokey Start befindet, benötigen wir natürlich zum Entschlüsseln unseren Kryptostick. Falls der Stick noch nicht angesteckt wurde, werden wir entsprechend aufgefordert dies nachzuholen. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Haben wir die PIN richtig eingegeben, wird die entschlüsselte Nachricht angezeigt. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Über das Schlosssymbol in der Nachricht können wir uns Details zu den Enigmail-Sicherheitsinformationen anzeigen lassen. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ==== Nitrokey Start und Secure Shell ==== | ||
+ | |||
+ | <WRAP center round important 90%> | ||
+ | Ob man in Zeiten von Überwachungsphantasten in Unternehmen und vor allem auch bei einer NSA oder BND, noch **[[http:// | ||
+ | |||
+ | Der Sicherheitsguru Bruce Schneier hat in seinem **[[https:// | ||
+ | |||
+ | <wrap em>//" | ||
+ | |||
+ | **[[https:// | ||
+ | </ | ||
+ | |||
+ | Auf RSA Schlüssel muss man aber nicht mehr zwingend zurückgreifen, | ||
+ | Diesen Schlüssel wollen wir nun auch zur Serveradministration verwenden. | ||
+ | |||
+ | === SSH Client vorbereiten === | ||
+ | Damit wir beim Verbindungsaufbau auf den Authentication Key zugreifen können wüssen wir unseren Client entsprechend vorbereiten. | ||
+ | |||
+ | In der Konfigurationsdatei // | ||
+ | $ vim ~/ | ||
+ | <file bash ~/ | ||
+ | # See backup in '/ | ||
+ | |||
+ | # File re-created by pEp | ||
+ | # See backup in '/ | ||
+ | |||
+ | # Created by pEpEngine | ||
+ | keyserver hkp:// | ||
+ | cert-digest-algo SHA256 | ||
+ | no-emit-version | ||
+ | no-comments | ||
+ | personal-cipher-preferences AES AES256 AES192 CAST5 | ||
+ | personal-digest-preferences SHA256 SHA512 SHA384 SHA224 | ||
+ | ignore-time-conflict | ||
+ | allow-freeform-uid | ||
+ | |||
+ | # Django : 2018-12-04 | ||
+ | # Option use-agent für Authentication Key Nutzung des Nitrokey Start bei SSH | ||
+ | use-agent</ | ||
+ | |||
+ | Im nächsten Schritt aktivieren wir die Option '' | ||
+ | **// des GPG-Agenten. | ||
+ | $ vim ~/ | ||
+ | <file bash ~/ | ||
+ | # See backup in '/ | ||
+ | |||
+ | # File re-created by pEp | ||
+ | # See backup in '/ | ||
+ | |||
+ | default-cache-ttl 300 | ||
+ | max-cache-ttl 999999 | ||
+ | |||
+ | # Django : 2018-12-04 | ||
+ | # SSH-Unterstützung beim gnupg-agent aktiviert | ||
+ | enable-ssh-support</ | ||
+ | |||
+ | Nun werden wir noch die Datei // | ||
+ | $ vim ~/.bashrc | ||
+ | <file bash ~/ | ||
+ | |||
+ | # Source global definitions | ||
+ | if [ -f /etc/bashrc ]; then | ||
+ | . /etc/bashrc | ||
+ | fi | ||
+ | |||
+ | # User specific environment | ||
+ | PATH=" | ||
+ | export PATH | ||
+ | |||
+ | # Uncomment the following line if you don't like systemctl' | ||
+ | # export SYSTEMD_PAGER= | ||
+ | |||
+ | # User specific aliases and functions | ||
+ | |||
+ | # Django : 2018-12-04 | ||
+ | # Definition des SSH_AUTH_SOCK für den Zugriff des SSH-Schlüssels auf dem Nitrokey Start | ||
+ | unset SSH_AGENT_PID | ||
+ | if [ " | ||
+ | export SSH_AUTH_SOCK=" | ||
+ | fi</ | ||
+ | |||
+ | Damit unsere Änderungen aktiv werden, müssen wir nun zum Schluss noch den **pgp-agent** restarten bzw. einen Neustart des Clients erwirken. Wir entscheiden uns der Einfachheit halber von einen Neustart des Agenten mit Hilfe des Befehls '' | ||
+ | $ pkill gpg-agent | ||
+ | |||
+ | Ein Blick in die Prozessliste zeigt, dass der Agent nicht mehr läuft. | ||
+ | $ ps aux | grep gpg-agent | ||
+ | |||
+ | django | ||
+ | |||
+ | Nun stecken wir unseren Nitrokey Start an den USB-Port und fragen den Kartenstatus ab. | ||
+ | $ gpg2 --card-status | ||
< | < | ||
Application ID ...: D276000124010200FFFE432437110000 | Application ID ...: D276000124010200FFFE432437110000 | ||
Zeile 641: | Zeile 952: | ||
Manufacturer .....: unmanaged S/N range | Manufacturer .....: unmanaged S/N range | ||
Serial number ....: 43243711 | Serial number ....: 43243711 | ||
- | Name of cardholder: | + | Name of cardholder: |
- | Language prefs ...: [not set] | + | Language prefs ...: de |
- | Sex ..............: | + | Sex ..............: |
- | URL of public key : [not set] | + | URL of public key : http:// |
- | Login data .......: | + | Login data .......: |
- | Signature PIN ....: forced | + | Signature PIN ....: zwingend |
Key attributes ...: ed25519 cv25519 ed25519 | Key attributes ...: ed25519 cv25519 ed25519 | ||
Max. PIN lengths .: 127 127 127 | Max. PIN lengths .: 127 127 127 | ||
PIN retry counter : 3 3 3 | PIN retry counter : 3 3 3 | ||
- | Signature counter : 0 | + | Signature counter : 15 |
- | Signature key ....: [none] | + | Signature key ....: 3E61 A503 47B5 2382 4132 EC06 9308 FC78 3868 63AC |
- | Encryption key....: | + | created ....: 2018-11-27 21:26:26 |
- | Authentication key: [none] | + | Encryption key....: |
- | General key info..: [none] | + | created ....: 2018-11-27 21:26:26 |
+ | Authentication key: 9131 32BE D5AF D08E 4464 89B6 77F0 A5B2 F32A 76AE | ||
+ | created ....: 2018-11-27 21:26:26 | ||
+ | General key info..: | ||
+ | sec> | ||
+ | Kartennummer: | ||
+ | ssb> | ||
+ | Kartennummer: | ||
+ | ssb> | ||
+ | Kartennummer: | ||
+ | </ | ||
- | gpg/ | + | Ein erneuter Blick in die Prozessliste zeigt nun den neu gestarteten Agenten. |
- | Admin commands are allowed | + | $ ps aux | grep gpg-agent |
- | gpg/ | + | |
- | Changing card key attribute for: Signature key | + | |
- | Please select what kind of key you want: | + | |
- | | + | |
- | | + | |
- | Your selection? 2 | + | |
- | Please select which elliptic curve you want: | + | |
- | | + | |
- | (4) NIST P-384 | + | |
- | Your selection? 1 | + | |
- | The card will now be re-configured to generate a key of type: ed25519 | + | |
- | Note: There is no guarantee that the card supports the requested size. | + | |
- | If the key generation does not succeed, please check the | + | |
- | documentation of your card to see what sizes are allowed. | + | |
- | Changing card key attribute for: Encryption key | + | |
- | Please select what kind of key you want: | + | |
- | | + | |
- | | + | |
- | Your selection? 2 | + | |
- | Please select which elliptic curve you want: | + | |
- | | + | |
- | (4) NIST P-384 | + | |
- | Your selection? 1 | + | |
- | The card will now be re-configured to generate a key of type: cv25519 | + | |
- | Changing card key attribute for: Authentication key | + | |
- | Please select what kind of key you want: | + | |
- | (1) RSA | + | |
- | (2) ECC | + | |
- | Your selection? 2 | + | |
- | Please select which elliptic curve you want: | + | |
- | (1) Curve 25519 | + | |
- | (4) NIST P-384 | + | |
- | Your selection? 1 | + | |
- | The card will now be re-configured to generate a key of type: ed25519 | + | |
- | gpg/card> quit</ | + | === Public-Key des ED25519 SSH exportieren === |
+ | Für den Zugriff auf unser Ziel-System mit Hilfe der SSH benötigen wir noch den öffentlichen Schlüssel unseres Authentication Keys, den wir nun exportieren werden. | ||
+ | Zunächst besorgen wir uns die betreffende Schlüsselkennung des Autentication Keys, genauer gesagt die 4 letzten ZAhlenreihen des nachfolgenden Aufrufs. | ||
+ | $ gpg2 --card-status | grep Authentication\ key | ||
+ | Authentication key: 9131 32BE D5AF D08E 4464 89B6 77F0 A5B2 F32A 76AE | ||
+ | In diesem Konfigurationsbeispiel ist die Schlüssel-ID des Autentication Keys also die Nummer '' | ||
- | Erst einmal befassen | + | Nun exportieren |
+ | $ gpg2 --export-ssh-key 77F0A5B2F32A76AE >> ~/.ssh/77F0A5B2F32A76AE.pub | ||
+ | Der Öffentliche Schlüssel in diesen Konfigurationsbeispiel lautet also: | ||
+ | $ cat ~/ | ||
+ | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJA+NwP2KzxqkrhKxi6JDRDUyE/ | ||
+ | Diesen Schlüssel kopieren wir nun auf das entsprechende Zielsystem an Ort und Stelle '' | ||
+ | $ scp ~/ | ||
+ | === SSH-Verbindung aufbauen === | ||
+ | Nun können wir wie gewohnt eine Verbindung zu unserem entfernten System aufbauen, sofern der GPG-Agent am laufen ist. Wir können dazu entweder erst einmal abfragen, ob dieser gestartet wurde, mit Hilfe des folgenden Aufrufs: | ||
+ | $ ps -aux | grep gpg-agent | ||
+ | django | ||
+ | Oder wir fragen einfach den Karten-Status ab, was unweigerlich den Neustart des GPG-Agenten nach sich zieht. | ||
+ | $ gpg2 --card-status | ||
+ | Nun können wir die gewünschte Verbindung zum Zielsystem aufbauen. | ||
+ | $ ssh zielhost.dmz.nausch.org | ||
+ | Da der SSH-Key zur Authentication nicht im Dateisystem liegt, sondern auf der SmartCard des Nitrokey werden wir nun nach der User-PIN gefragt, damit auf den privaten Schlüssel der Karte zugegriffen werden kann. | ||
+ | {{ : | ||
+ | Der entsperrte Schlüssel der SmartCard des Nitrokey Start wird nun im Speicher gehalten und wir können die USB-Adapter auch so wieder abziehen. | ||
+ | <WRAP center round important 90%> | ||
+ | **WICHTIG: | ||
+ | Da wir den Schlüssel **__nicht__** aus einer Datei geladen hatten, können wir diese auch nicht mit Hilfe von '' | ||
+ | $ pkill gpg-agent | ||
+ | </ | ||
- | $ gpg2 --card-edit | + | Anschließend lassen sich Verbindungen zu unseren Remote-Systemen erst wieder aufbauen, wenn der GPG-Agent geladen und die Karte nach Eingabe der PIN entsperrt wurde! |
- | < | + | |
- | Application ID ...: D276000124010200FFFE432437110000 | + | ==== Nitrokey Start und X.509 / S/MIME ==== |
+ | /* | ||
+ | https:// | ||
+ | |||
+ | $ openpgp-tool | ||
+ | |||
+ | Using reader with a card: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00 | ||
+ | |||
+ | [django@T410 Schreibtisch]$ gpg2 --card-status | ||
+ | Reader ...........: | ||
+ | Application ID ...: D276000124010200FFFE432108430000 | ||
Version ..........: 2.0 | Version ..........: 2.0 | ||
Manufacturer .....: unmanaged S/N range | Manufacturer .....: unmanaged S/N range | ||
- | Serial number ....: 43243711 | + | Serial number ....: 43210843 |
- | Name of cardholder: [not set] | + | Name of cardholder: [nicht gesetzt] |
- | Language prefs ...: [not set] | + | Language prefs ...: [nicht gesetzt] |
- | Sex ..............: | + | Sex ..............: |
- | URL of public key : [not set] | + | URL of public key : [nicht gesetzt] |
- | Login data .......: [not set] | + | Login data .......: [nicht gesetzt] |
- | Signature PIN ....: forced | + | Signature PIN ....: zwingend |
- | Key attributes ...: ed25519 cv25519 ed25519 | + | Key attributes ...: rsa2048 rsa2048 rsa2048 |
Max. PIN lengths .: 127 127 127 | Max. PIN lengths .: 127 127 127 | ||
PIN retry counter : 3 3 3 | PIN retry counter : 3 3 3 | ||
Zeile 731: | Zeile 1057: | ||
Authentication key: [none] | Authentication key: [none] | ||
General key info..: [none] | General key info..: [none] | ||
+ | [django@T410 Schreibtisch]$ gpg2 --card-edit | ||
- | gpg/card> admin | + | Reader ...........: |
- | Admin commands are allowed | + | Application ID ...: D276000124010200FFFE432108430000 |
+ | Version ..........: 2.0 | ||
+ | Manufacturer .....: unmanaged S/N range | ||
+ | Serial number ....: 43210843 | ||
+ | Name of cardholder: [nicht gesetzt] | ||
+ | Language prefs ...: [nicht gesetzt] | ||
+ | Sex ..............: | ||
+ | URL of public key : [nicht gesetzt] | ||
+ | Login data .......: [nicht gesetzt] | ||
+ | Signature PIN ....: zwingend | ||
+ | Key attributes ...: rsa2048 rsa2048 rsa2048 | ||
+ | Max. PIN lengths .: 127 127 127 | ||
+ | PIN retry counter : 3 3 3 | ||
+ | Signature counter : 0 | ||
+ | Signature key ....: [none] | ||
+ | Encryption key....: [none] | ||
+ | Authentication key: [none] | ||
+ | General key info..: [none] | ||
- | gpg/ | + | gpg/ |
- | Make off-card backup of encryption key? (Y/n) n | + | |
- | Please note that the factory settings | + | Reader ...........: |
- | | + | Application ID ...: D276000124010200FFFE432108430000 |
- | You should change them using the command --change-pin | + | Version ..........: 2.0 |
+ | Manufacturer .....: unmanaged S/N range | ||
+ | Serial number ....: 43210843 | ||
+ | Name of cardholder: [nicht gesetzt] | ||
+ | Language prefs ...: [nicht gesetzt] | ||
+ | Sex ..............: | ||
+ | URL of public key : [nicht gesetzt] | ||
+ | Login data .......: [nicht gesetzt] | ||
+ | Signature | ||
+ | Key attributes ...: rsa2048 rsa2048 rsa2048 | ||
+ | Max. PIN lengths .: 127 127 127 | ||
+ | PIN retry counter : 3 3 3 | ||
+ | Signature counter : 0 | ||
+ | Signature key ....: [none] | ||
+ | Encryption key....: [none] | ||
+ | Authentication key: [none] | ||
+ | General key info..: [none] | ||
- | Please specify how long the key should be valid. | + | gpg/card> admin |
- | 0 = key does not expire | + | Admin-Befehle sind erlaubt |
- | <n> = key expires in n days | + | |
- | < | + | |
- | <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. | + | gpg/ |
+ | quit Menü verlassen | ||
+ | admin Zeige Admin-Befehle | ||
+ | help Diese Hilfe zeigen | ||
+ | list Alle vorhandenen Daten auflisten | ||
+ | name | ||
+ | url Schlüssel-holen-URL ändern | ||
+ | fetch Holen des Schlüssels mittels der URL auf der Karte | ||
+ | login Ändern der Logindaten | ||
+ | lang | ||
+ | sex Ändern des Geschlechts des Kartenbesitzers | ||
+ | cafpr Ändern des CA-Fingerabdrucks | ||
+ | forcesig | ||
+ | generate | ||
+ | passwd | ||
+ | verify | ||
+ | unblock | ||
+ | factory-reset | ||
+ | kdf-setup | ||
+ | key-attr Das Schlüsselattribut ändern | ||
- | Real name: Django aka [BOfH] | + | gpg/ |
- | Email address: secmail@mailserver.guru | + | Familienname des Kartenbesitzers:Nausch |
- | Comment: Bastard Operator from Hell | + | Vorname des Kartenbesitzers:Michael |
- | You selected this USER-ID: | + | |
- | " | + | |
- | Change (N)ame, (C)omment, (E)mail or (O)kay/ | + | gpg/card> lang |
- | gpg: key 9308FC78386863AC marked as ultimately trusted | + | Spracheinstellungende |
- | gpg: revocation certificate stored as '/ | + | |
- | public and secret key created and signed. | + | |
+ | gpg/ | ||
+ | Geschlecht: (Männlich (M), Weiblich (F) oder Leerzeichen): | ||
- | gpg/ | + | gpg/ |
+ | gpg: OpenPGP Karte Nr. D276000124010200FFFE432108430000 erkannt | ||
- | Reader ...........: | + | 1 - change PIN |
- | Application ID ...: D276000124010200FFFE432437110000 | + | 2 - unblock |
- | Version ..........: | + | 3 - change Admin PIN |
- | Manufacturer .....: unmanaged S/N range | + | 4 - set the Reset Code |
- | Serial number ....: 43243711 | + | Q - quit |
- | Name of cardholder: [not set] | + | |
- | Language prefs ...: [not set] | + | |
- | Sex ..............: | + | |
- | URL of public key : [not set] | + | |
- | Login data .......: [not set] | + | |
- | Signature | + | |
- | Key attributes ...: ed25519 cv25519 ed25519 | + | |
- | Max. PIN lengths .: 127 127 127 | + | |
- | PIN retry counter : 3 3 3 | + | |
- | Signature counter : 4 | + | |
- | Signature key ....: 3E61 A503 47B5 2382 4132 EC06 9308 FC78 3868 63AC | + | |
- | created ....: 2018-11-27 21:26:26 | + | |
- | Encryption key....: FB2B D8AD 4660 EADE 0108 852D BF1E A3F7 0320 3D8A | + | |
- | created ....: 2018-11-27 21:26:26 | + | |
- | Authentication key: 9131 32BE D5AF D08E 4464 89B6 77F0 A5B2 F32A 76AE | + | |
- | created ....: 2018-11-27 21:26:26 | + | |
- | General key info..: pub ed25519/ | + | |
- | sec> | + | |
- | card-no: FFFE 43243711 | + | |
- | ssb> | + | |
- | card-no: FFFE 43243711 | + | |
- | ssb> | + | |
- | card-no: FFFE 43243711 | + | |
- | gpg/ | + | Ihre Auswahl? 3 |
- | pub | + | PIN changed. |
- | 3E61A50347B523824132EC069308FC78386863AC | + | |
- | uid Django aka [BOfH] (Bastard Operator from Hell) < | + | |
- | sub | + | |
- | sub | + | |
- | </ | + | |
- | ==== Nitrokey und Thunderbird ==== | + | |
- | Nachdem wir nun unsere Schlüssel auf dem Kryptostick erstellt haben, wollen wir diesen nun verwenden um bei Thunderbird unsere elektronische Kommunikation per eMail abzusichern. | + | |
- | === Schlüssel einem Konto zuweisen === | + | 1 - change PIN |
- | Damit wir unser Kryptodevice unter Thunderbird nutzen können müssen wir erst einmal den Schlüssel dem betreffenden Konto zuweisen. | + | 2 - unblock PIN |
- | Über das Menü wählen wir den Punkt **Konten-Einstellungen** aus. | + | 3 - change Admin PIN |
+ | 4 - set the Reset Code | ||
+ | Q - quit | ||
- | {{ : | + | Ihre Auswahl? 1 |
+ | Error changing the PIN: Nutzungsvorraussetzungen nicht erfüllt | ||
- | Beim passenden Konto wählen wir dann die Option **OpenPGP-Sicherheit** aus. | + | 1 - change PIN |
+ | 2 - unblock PIN | ||
+ | 3 - change Admin PIN | ||
+ | 4 - set the Reset Code | ||
+ | Q - quit | ||
- | {{ : | + | Ihre Auswahl? |
- | Hier wählen wir nun den Schlüssel aus, den wir zuvor erstellt und auf die SmartCard des Kryptostick Start verschoben hatten. | + | 1 - change PIN |
+ | 2 - unblock PIN | ||
+ | 3 - change Admin PIN | ||
+ | 4 - set the Reset Code | ||
+ | Q - quit | ||
- | {{ : | + | Ihre Auswahl? q |
- | === eMail signieren === | + | gpg/ |
- | Nun erstellen wir eine Testnachricht und wählen die Option **Signieren** aus. | + | |
- | {{ :fedora:nitrokey: | + | Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00 |
+ | Application ID ...: D276000124010200FFFE432108430000 | ||
+ | Version | ||
+ | Manufacturer .....: unmanaged S/N range | ||
+ | Serial number ....: 43210843 | ||
+ | Name of cardholder: Michael Nausch | ||
+ | Language prefs ...: de | ||
+ | Sex ..............: | ||
+ | URL of public key : [nicht gesetzt] | ||
+ | Login data .......: [nicht gesetzt] | ||
+ | Signature PIN ....: zwingend | ||
+ | Key attributes ...: rsa2048 rsa2048 rsa2048 | ||
+ | Max. PIN lengths .: 127 127 127 | ||
+ | PIN retry counter : 3 3 3 | ||
+ | Signature counter : 0 | ||
+ | Signature key ....: [none] | ||
+ | Encryption key....: [none] | ||
+ | Authentication key: [none] | ||
+ | General key info..: [none] | ||
- | 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. | + | gpg/ |
- | {{ : | ||
+ | $ opensc-explorer | ||
+ | OpenSC Explorer version 0.19.0 | ||
+ | Using reader with a card: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00 | ||
+ | Failed to connect to card: Reader in use by another application | ||
- | === eMail entschlüsseln === | ||
- | Bekommen wir nun eine verschlüsselte Nachricht, die mit dem öffentlichen Schlüssel unseres Schlüssels der sich auf dem Nitrokey Start befindet, benötigen wir natürlich zum Entschlüsseln unseren Kryptostick. Falls der Stick noch nicht angesteckt wurde, werden wir entsprechend aufgefordert dies nachzuholen. | ||
- | {{ : | + | $ opensc-explorer |
+ | OpenSC Explorer version 0.19.0 | ||
+ | Using reader with a card: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00 | ||
+ | OpenSC [3F00]> | ||
- | 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. | ||
- | {{ : | + | $ openpgp-tool --erase |
+ | Using reader with a card: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00 | ||
+ | Erase card | ||
- | Haben wir die PIN richtig eingegeben, wird die entschlüsselte Nachricht angezeigt. | ||
- | {{ :fedora:nitrokey: | + | $ opensc-explorer |
+ | OpenSC Explorer version 0.19.0 | ||
+ | Using reader with a card: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00 | ||
+ | OpenSC [3F00]> help | ||
+ | Supported commands: | ||
+ | echo [< | ||
+ | ls [< | ||
+ | find [<start id> [<end id> | ||
+ | find_tags [<start tag> [<end tag> | ||
+ | cd {.. | <file id> | aid:<DF name>} | ||
+ | cat [<file id> | sfi:<sfi id> | ||
+ | info [<file id> | ||
+ | create <file id> < | ||
+ | mkdir <file id> < | ||
+ | delete <file id> | ||
+ | rm <file id> | ||
+ | verify {CHV|KEY|AUT|PRO}<key ref> [< | ||
+ | change CHV<pin ref> [[<old pin>] <new pin> | ||
+ | unblock CHV<pin ref> [< | ||
+ | put <file id> [<input file> | ||
+ | get <file id> [<output file> | ||
+ | do_get <hex tag> [<output file> | ||
+ | do_put <hex tag> < | ||
+ | erase erase card | ||
+ | random < | ||
+ | update_record <file id> <rec no> <rec offs> < | ||
+ | update_binary <file id> < | ||
+ | apdu < | ||
+ | asn1 [<file id> | ||
+ | sm open|close | ||
+ | debug [< | ||
+ | quit quit this program | ||
+ | exit quit this program | ||
+ | help show this help | ||
+ | OpenSC [3F00]> exit | ||
- | Über das Schlosssymbol in der Nachricht können wir uns Details zu den Enigmail-Sicherheitsinformationen anzeigen lassen. | ||
- | {{ :fedora:nitrokey: | + | Pairs of key & certificate from P12 file: |
+ | $ pkcs15-init --verbose --delete-objects privkey, | ||
+ | Using reader with a card: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00 | ||
+ | Connecting to card in reader Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00... | ||
+ | Using card driver OpenPGP card. | ||
+ | Found OpenPGP card | ||
+ | User PIN required. | ||
+ | Please enter User PIN [Admin PIN]: | ||
+ | About to delete object(s). | ||
+ | NOTE: couldn' | ||
+ | NOTE: couldn' | ||
+ | Deleted 0 objects | ||
+ | About to store private key. | ||
+ | error: | ||
+ | Please enter passphrase to unlock secret key: | ||
+ | Importing 3 certificates: | ||
+ | 0: / | ||
+ | 1: / | ||
+ | 2: / | ||
+ | Failed to store private key: Invalid arguments | ||
+ | |||
+ | Vermutliche Ursache, private key zu groß! | ||
+ | |||
+ | */ | ||
+ | ... coming soon! | ||