fedora:nitrokey:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
fedora:nitrokey:start [28.11.2018 08:05. ] – [ED25519-Schlüssel generieren] djangofedora:nitrokey:start [11.05.2023 20:04. ] (aktuell) – [ED25519-Schlüssel generieren] django
Zeile 1: Zeile 1:
 ====== Nitrokey Start in der Praxis unter Fedora 29 ====== ====== Nitrokey Start in der Praxis unter Fedora 29 ======
 {{:centos:nitrokey:nitrokey-start.png?nolink&280 |Bild: Nitrokey Start USB-Stick}} {{:centos:nitrokey:nitrokey-start.png?nolink&280 |Bild: Nitrokey Start USB-Stick}}
-In diesem Kapitel befassen wir uns eingehend mit dem [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-start-6|Nitrokey Start]] ([[https://www.nitrokey.com/files/doc/Nitrokey_Start_Infoblatt.pdf|Daten-/Infoblatt]]) unter **[[https://getfedora.org/|Fedora 29]]**. Weitere Informationen zum [[https://www.nitrokey.com/de/news/2018/neu-nitrokey-fido-u2f|Nitrokey-Stick]] findet findet man auch [[https://www.nitrokey.com/de/documentation/installation|hier]] bzw. im [[https://support.nitrokey.com/c/nitrokey-support|Support Forum]].+In diesem Kapitel befassen wir uns eingehend mit dem [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-start-6|Nitrokey Start]] ([[https://www.nitrokey.com/files/doc/Nitrokey_Start_Infoblatt.pdf|Daten-/Infoblatt]]) unter **[[https://getfedora.org/|Fedora 29]]**. Weitere Informationen zum [[https://www.nitrokey.com/de/news/2018/neu-nitrokey-fido-u2f|Nitrokey-Stick]] findet man auch [[https://www.nitrokey.com/de/documentation/installation|hier]] bzw. im [[https://support.nitrokey.com/c/nitrokey-support|Support Forum]].
  
 Mit Hilfe von asymmetrischen Schlüsselmaterials (PGP und S/MIME) können eMails sowie Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. Hierzu verwenden wir den [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-start-6|Nitrokey Start]] welcher [[https://shop.nitrokey.com/de_DE/shop|hier]] für einen überschaubaren Betrag von gerade mal 29€ erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Verwendung unter Fedora 29 ein. Hinweise zu den Besonderheiten bei der Verwendung unter CentOS 7.x sind **[[centos:nitrokey:start|hier]]** zu finden.  Mit Hilfe von asymmetrischen Schlüsselmaterials (PGP und S/MIME) können eMails sowie Dateien und ganze Festplatten verschlüsselt und natürlich auch wieder entschlüsselt werden. Hierzu verwenden wir den [[https://shop.nitrokey.com/de_DE/shop/product/nitrokey-start-6|Nitrokey Start]] welcher [[https://shop.nitrokey.com/de_DE/shop|hier]] für einen überschaubaren Betrag von gerade mal 29€ erstanden werden kann. In dem folgenden Beitrag gehen wir auf die Verwendung unter Fedora 29 ein. Hinweise zu den Besonderheiten bei der Verwendung unter CentOS 7.x sind **[[centos:nitrokey:start|hier]]** zu finden. 
Zeile 239: Zeile 239:
 sub   rsa2048 2018-11-26 [E]</code> sub   rsa2048 2018-11-26 [E]</code>
  
 +=== ED25519-Schlüssel generieren ===
  
 +In dem Artikel **[[https://www.nitrokey.com/de/news/2017/nitrokey-start-unterst%C3%BCtzt-elliptische-kurven-ecc|Nitrokey Start unterstützt elliptische Kurven (ECC)]]** wird sehr ausführlich das Zusammenspiel des Nitrokey Start und ECC beschrieben.
 +
 +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 ...........: 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 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://de.wikipedia.org/wiki/Curve25519|ED25519]]-Schlüssel generieren können, müssen wir unseren Stick erst einmal von den vorbelegten **RSA**-Schlüssel auf **ECC**-Schlüssel umstellen. 
 +Welcher Typ eingestellt ist können wir mit den Befehl ''**gpg2 --card-status**'' erfragen; die definierten Werte finden wir dann beim Punkt **Key attributes**.
 +   $ gpg2 --card-status | grep Key\ attributes
 +
 +  Key attributes ...: rsa2048 rsa2048 rsa2048
 +
 +Zum Ändern der Vorgabewerte benutzen wir die Option ''**%%--%%card-edit**'' beim Befehl ''**gpg2**''.
 +   $ gpg2 --card-edit 
 +
 +<code>Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43243711) 00 00
 +Application ID ...: D276000124010200FFFE432437110000
 +Version ..........: 2.0
 +Manufacturer .....: unmanaged S/N range
 +Serial number ....: 43243711
 +Name of cardholder: [not set]
 +Language prefs ...: [not set]
 +Sex ..............: unspecified
 +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/card> </code>
 +
 +Im Admin-Bereich finden wir den Befehl ''**key-attr**'' mit Hilfe dessen wir die Definition des Schlüsseltyps definieren können. Wir wechseln also erst einmal in den Admin Bereich.
 +  gpg/card> admin
 +
 +  Admin commands are allowed
 +
 +Hier rufen wir dann den Befehl ''**key-attr**'' auf.
 +  gpg/card> key-attr
 +
 +Im folgenden ändern wir dann für die drei (Unterschlüssel) die Schlüsselart von **ECC** und bei der Frage nach der elliptischer Kurve wählen wir dann die Option **Curve 25519**.
 +<code>Changing card key attribute for: Signature key
 +Please select what kind of key you want:
 +   (1) RSA
 +   (2) ECC
 +Your selection? 2
 +Please select which elliptic curve you want:
 +   (1) Curve 25519
 +   (4) NIST P-384
 +Your selection? 1
 +The card will now be re-configured to generate a key of type: ed25519
 +Note: There is no guarantee that the card supports the requested size.
 +      If the key generation does not succeed, please check the
 +      documentation of your card to see what sizes are allowed.
 +Changing card key attribute for: Encryption key
 +Please select what kind of key you want:
 +   (1) RSA
 +   (2) ECC
 +Your selection? 2
 +Please select which elliptic curve you want:
 +   (1) Curve 25519
 +   (4) NIST P-384
 +Your selection? 1
 +The card will now be re-configured to generate a key of type: cv25519
 +Changing card key attribute for: Authentication key
 +Please select what kind of key you want:
 +   (1) RSA
 +   (2) ECC
 +Your selection? 2
 +Please select which elliptic curve you want:
 +   (1) Curve 25519
 +   (4) NIST P-384
 +Your selection? 1
 +The card will now be re-configured to generate a key of type: ed25519
 +
 +gpg/card></code>
 +
 +Zum Schluss verlassen wir das Programm **gpg2** mit ''**quit**''.
 +  gpg/card> quit
 +
 +Fragen wir nun erneut mit den Befehl ''**gpg2 --card-status**'' welcher Schlüssel-Typ eingestellt ist, finden wir unsere geänderten Werte.
 +   $ gpg2 --card-status | grep Key\ attributes
 +
 +  Key attributes ...: ed25519 cv25519 ed25519
 +
 +Nun erstellen wir uns unsere gewünschten Schlüssel auf der SmartCard der Nitrokey Start. Wie schon beim [[fedora:nitrokey:start#rsa-schluessel_generieren|Gernerieren der RSA-Schlüssel]] werden wir dabei menügeführt durch eine Reihe von Standardfragen gelost, welche alle relevante Daten abfragen, die zur Generierung des Hauptschlüssels wie auch der Unterschlüssel die für die Aufgaben Signatur, Verschlüsselung und Authentifizierung benötigt werden.
 +
 +   $ gpg2 --card-edit 
 +<code>Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43243711) 00 00
 +Application ID ...: D276000124010200FFFE432437110000
 +Version ..........: 2.0
 +Manufacturer .....: unmanaged S/N range
 +Serial number ....: 43243711
 +Name of cardholder: [not set]
 +Language prefs ...: [not set]
 +Sex ..............: unspecified
 +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/card> </code>
 +
 +Die Schlüsselgenerierung erfolgt im Adminmenü, in welches wir nun erst einmal wechseln werden.
 +  gpg/card> admin
 +
 +  Admin commands are allowed
 +
 +Die Erzeugung der Schlüssel erfolgt wie immer mit dem Befehk ''**generate**''.
 +  gpg/card> generate
 +<code>Make off-card backup of encryption key? (Y/n) n
 +
 +Please note that the factory settings of the PINs are
 +   PIN = '123456'     Admin PIN = '12345678'
 +You should change them using the command --change-pin
 +
 +Please specify how long the key should be valid.
 +         0 = key does not expire
 +      <n>  = key expires in n days
 +      <n>w = key expires in n weeks
 +      <n>m = key expires in n months
 +      <n>y = key expires in n years
 +Key is valid for? (0) 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@mailserver.guru
 +Comment: Bastard Operator from Hell
 +You selected this USER-ID:
 +    "Django aka [BOfH] (Bastard Operator from Hell) <secmail@mailserver.guru>"
 +
 +Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
 +gpg: key 9308FC78386863AC marked as ultimately trusted
 +gpg: revocation certificate stored as '/home/django/.gnupg/openpgp-revocs.d/3E61A50347B523824132EC069308FC78386863AC.rev'
 +public and secret key created and signed.<code>
 +
 +Fragen wir nun den Inhalt der SmartCard mit dem Befehl ''**verify**'' ab, finden wir unsere gerade erstellten Schlüssel.
 +  gpg/card> verify 
 +<code>Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43243711) 00 00
 +Application ID ...: D276000124010200FFFE432437110000
 +Version ..........: 2.0
 +Manufacturer .....: unmanaged S/N range
 +Serial number ....: 43243711
 +Name of cardholder: [not set]
 +Language prefs ...: [not set]
 +Sex ..............: unspecified
 +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/9308FC78386863AC 2018-11-27 Django aka [BOfH] (Bastard Operator from Hell) <secmail@mailserver.guru>
 +sec>  ed25519/9308FC78386863AC  created: 2018-11-27  expires: never     
 +                                card-no: FFFE 43243711
 +ssb>  ed25519/77F0A5B2F32A76AE  created: 2018-11-27  expires: never     
 +                                card-no: FFFE 43243711
 +ssb>  cv25519/BF1EA3F703203D8A  created: 2018-11-27  expires: never     
 +                                card-no: FFFE 43243711</code>
 +Wir verlassen nun das Programm **''gpg2''** wieder und werden anschließend den Stick [[start#card-edit_-_stick_personalisieren|personalisieren]].
 +  gpg/card> quit
 +
 +<code>pub   ed25519 2018-11-27 [SC]
 +      3E61A50347B523824132EC069308FC78386863AC
 +uid                      Django aka [BOfH] (Bastard Operator from Hell) <secmail@mailserver.guru>
 +sub   ed25519 2018-11-27 [A]
 +sub   cv25519 2018-11-27 [E]
 +</code>
  
  
Zeile 615: Zeile 812:
  
  
-==== Nitrokey und Thunderbird ==== +==== 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.  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. 
  
Zeile 659: Zeile 856:
 {{ :fedora:nitrokey:fedora-nitrokey-09.png?nolink&585 |Bild: Thunderbird - Anzeige der Enigmail-Sicherheitsinformationen der entschlüsselten Nachricht }} {{ :fedora:nitrokey:fedora-nitrokey-09.png?nolink&585 |Bild: Thunderbird - Anzeige der Enigmail-Sicherheitsinformationen der entschlüsselten Nachricht }}
  
 +==== 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://www.golem.de/news/elliptische-kurven-die-herkunft-der-nist-kurven-1309-101567.html|RSA-Schlüssel]]** einsetzen kann und mag, muss natürlich jeder Admin für sich selbst entscheiden. 
 +
 +Der Sicherheitsguru Bruce Schneier hat in seinem **[[https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html#c1675929|Blog]]** hierzu eine eindeutige Aussage getätigt: 
 +
 +<wrap em>//"On the crypto bits in your guardian piece, I found especially interesting that you suggest classic discrete log crypto over ecc. I want to ask if you could elaborate more on that." __I no longer trust the constants. I believe the NSA has manipulated them through their relationships with industry.__//</wrap>
 +
 +**[[https://de.wikipedia.org/wiki/Curve25519|EED25519]]** ist ein Elliptic Curve Signature Schema, welches beste Sicherheit bei vertretbaren Aufwand verspricht, als ECDSA oder DSA dies der Fall ist. Zur Auswahl sicherer kryptografischer Kurven bei der //Elliptic-Curve Cryptography// findet man auf der Seite [[https://safecurves.cr.yp.to/|hier]] hilfreiche Erklärungen und eine Gegenüberstellung der möglichen verschiedenen Alternativen.
 +</WRAP>
 +
 +Auf RSA Schlüssel muss man aber nicht mehr zwingend zurückgreifen, stehen doch aktuellere und zeitgemäßere Cipher, MACs, Schlüssel Typen und Key Exchange Algorithmen zur Verfügung. Als Alternative zu einem RSA-Keys haben wir uns bereits im Abschnitt **[[start#ed25519-schluessel_generieren|Nitrokey Start und GnuPG - ED25519-Schlüssel generieren]]** Schlüsselmaterial auf Basis eliptischer Kurven erstellt, unter anderem auch einen //**Authentication Key**// erstellt. 
 +Diesen Schlüssel wollen wir nun auch zur Serveradministration verwenden.
 +
 +=== SSH Client vorbereiten ===
 +Damit wir beim Verbindungsaufbau auf den Authentication Key zugreifen können wüssen wir unseren Client entsprechend vorbereiten.
 +
 +In der Konfigurationsdatei //**~/.gnupg/gpg.conf**// setzen wir als erstes die Option ''**use-agent**''.
 +   $ vim ~/.gnupg/gpg.conf
 +<file bash ~/.gnupg/gpg.conf># File re-created by pEp
 +# See backup in '/home/django/.gnupg/gpg.conf.1.pep.bkp'
 +
 +# File re-created by pEp
 +# See backup in '/home/django/.gnupg/gpg.conf.0.pep.bkp'
 +
 +# Created by pEpEngine
 +keyserver hkp://keys.gnupg.net
 +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</file>
 +
 +Im nächsten Schritt aktivieren wir die Option ''**enable-ssh-support**'' in der Konfigurationsdatei //**~/.gnupg/gpg-agent.conf
 +**// des GPG-Agenten.
 +   $ vim ~/.gnupg/gpg-agent.conf
 +<file bash ~/.gnupg/gpg-agent.conf># File re-created by pEp
 +# See backup in '/home/django/.gnupg/gpg-agent.conf.1.pep.bkp'
 +
 +# File re-created by pEp
 +# See backup in '/home/django/.gnupg/gpg-agent.conf.0.pep.bkp'
 +
 +default-cache-ttl 300
 +max-cache-ttl 999999
 +
 +# Django : 2018-12-04
 +#          SSH-Unterstützung beim gnupg-agent aktiviert 
 +enable-ssh-support</file>
 +
 +Nun werden wir noch die Datei //**~/.bashrc**// erweitern, damit der **SSH_AUTH_SOCK** für den Zugriff des SSH-Schlüssels auf dem Nitrokey Start genutzt werden kann.
 +   $ vim ~/.bashrc
 +<file bash ~/.bashrc># .bashrc
 +
 +# Source global definitions
 +if [ -f /etc/bashrc ]; then
 +        . /etc/bashrc
 +fi
 +
 +# User specific environment
 +PATH="$HOME/.local/bin:$HOME/bin:$PATH"
 +export PATH
 +
 +# Uncomment the following line if you don't like systemctl's auto-paging feature:
 +# export SYSTEMD_PAGER=
 +
 +# User specific aliases and functions
 +
 +# Django : 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 [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
 +        export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
 +fi</file>
 +
 +Damit unsere Änderungen aktiv werden, müssen wir nun zum Schluss noch den **pgp-agent** restarten bzw. einen Neustart des Clients erwirken. Wir entscheiden uns der Einfachheit halber von einen Neustart des Agenten mit Hilfe des Befehls ''**pkill gpg-agent**''.
 +   $ pkill gpg-agent
 +
 +Ein Blick in die Prozessliste zeigt, dass der Agent nicht mehr läuft.
 +   $ ps aux | grep gpg-agent
 +
 +  django    8752  0.0  0.0 215740   820 pts/1    S+   21:56   0:00 grep --color=auto gpg-agent
 +
 +Nun stecken wir unseren Nitrokey Start an den USB-Port und fragen den Kartenstatus ab.
 +   $ gpg2 --card-status
 +<code>Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43243711) 00 00
 +Application ID ...: D276000124010200FFFE432437110000
 +Version ..........: 2.0
 +Manufacturer .....: unmanaged S/N range
 +Serial number ....: 43243711
 +Name of cardholder: Michael Nausch
 +Language prefs ...: de
 +Sex ..............: männlich
 +URL of public key : http://keyserver.nausch.org/pks/lookup?op=get&search=0x9308FC78386863AC
 +Login data .......: django
 +Signature PIN ....: zwingend
 +Key attributes ...: ed25519 cv25519 ed25519
 +Max. PIN lengths .: 127 127 127
 +PIN retry counter : 3 3 3
 +Signature counter : 15
 +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/9308FC78386863AC 2018-11-27 Django aka [BOfH] (Bastard Operator from Hell) <secmail@mailserver.guru>
 +sec>  ed25519/9308FC78386863AC  erzeugt: 2018-11-27  verfällt: niemals   
 +                                Kartennummer:FFFE 43243711
 +ssb>  ed25519/77F0A5B2F32A76AE  erzeugt: 2018-11-27  verfällt: niemals   
 +                                Kartennummer:FFFE 43243711
 +ssb>  cv25519/BF1EA3F703203D8A  erzeugt: 2018-11-27  verfällt: niemals   
 +                                Kartennummer:FFFE 43243711
 +</code>
 +
 +Ein erneuter Blick in die Prozessliste zeigt nun den neu gestarteten Agenten.
 +   $ ps aux | grep gpg-agent
 +
 +  django    8766  0.0  0.0 364724   804 ?        Ss   21:57   0:00 gpg-agent --homedir /home/django/.gnupg --use-standard-socket --daemon
 +  django    8853  0.0  0.0 215740   828 pts/1    S+   22:00   0:00 grep --color=auto gpg-agent
 +
 +=== 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 ''**77F0A5B2F32A76AE**''.
 +
 +Nun exportieren wir den öffentlichen Schlüssel und schreiben diesen in eine separate Datei.
 +   $ gpg2 --export-ssh-key 77F0A5B2F32A76AE >> ~/.ssh/77F0A5B2F32A76AE.pub
 +
 +Der Öffentliche Schlüssel in diesen Konfigurationsbeispiel lautet also:
 +   $ cat ~/.ssh/77F0A5B2F32A76AE.pub
 +
 +  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJA+NwP2KzxqkrhKxi6JDRDUyE/ofPtiWwOb0ZjbQJW7 openpgp:0xF32A76AE
 +
 +Diesen Schlüssel kopieren wir nun auf das entsprechende Zielsystem an Ort und Stelle ''**~/.ssh/authorized_keys**''.
 +   $ scp ~/.ssh/77F0A5B2F32A76AE.pub zielhost.dmz.nausch.org: && ssh zielhost.dmz.nausch.org 'cat authorized_keys >> ~/.ssh/authorized_keys'
 +
 +=== 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    3760  0.0  0.0 364724  3156 ?        Ss   18:30   0:00 gpg-agent --homedir /home/django/.gnupg --use-standard-socket --daemon. 
 +
 +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.
 +
 +{{ :fedora:nitrokey:fedora-nitrokey-ssh.png?nolink&280 |Bild: PIN Abfrage beim Zugriff auf den Authentication Key der SmartCard des Nitrokeys}}
 +
 +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 ''**ssh-add**'' wieder entladen! Wollen wir verhindern, dass auf den im Speicher vorgehaltenen Schlüssel zugegriffen wird, müssen wir manuell den GPG-Agenten beenden.
 +   $ pkill gpg-agent
 +
 +</WRAP>
 +
 +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!
 +
 +==== Nitrokey Start und X.509 / S/MIME ====
 +/*
 +https://github.com/OpenSC/OpenSC/wiki/OpenPGP-card
 +
 +   $ openpgp-tool
 +
 +  Using reader with a card: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00
 +
 +[django@T410 Schreibtisch]$ gpg2 --card-status
 +Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00
 +Application ID ...: D276000124010200FFFE432108430000
 +Version ..........: 2.0
 +Manufacturer .....: unmanaged S/N range
 +Serial number ....: 43210843
 +Name of cardholder: [nicht gesetzt]
 +Language prefs ...: [nicht gesetzt]
 +Sex ..............: unbestimmt
 +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]
 +[django@T410 Schreibtisch]$ gpg2 --card-edit
 +
 +Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00
 +Application ID ...: D276000124010200FFFE432108430000
 +Version ..........: 2.0
 +Manufacturer .....: unmanaged S/N range
 +Serial number ....: 43210843
 +Name of cardholder: [nicht gesetzt]
 +Language prefs ...: [nicht gesetzt]
 +Sex ..............: unbestimmt
 +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/card> 
 +
 +Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00
 +Application ID ...: D276000124010200FFFE432108430000
 +Version ..........: 2.0
 +Manufacturer .....: unmanaged S/N range
 +Serial number ....: 43210843
 +Name of cardholder: [nicht gesetzt]
 +Language prefs ...: [nicht gesetzt]
 +Sex ..............: unbestimmt
 +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/card> admin
 +Admin-Befehle sind erlaubt
 +
 +gpg/card> help
 +quit           Menü verlassen
 +admin          Zeige Admin-Befehle
 +help           Diese Hilfe zeigen
 +list           Alle vorhandenen Daten auflisten
 +name           Kartenbesitzernamen ändern
 +url            Schlüssel-holen-URL ändern
 +fetch          Holen des Schlüssels mittels der URL auf der Karte
 +login          Ändern der Logindaten
 +lang           Ändern der Spracheinstellungen
 +sex            Ändern des Geschlechts des Kartenbesitzers
 +cafpr          Ändern des CA-Fingerabdrucks
 +forcesig       Umschalten des "Signature-force-PIN"-Schalters
 +generate       neue Schlüssel erzeugen
 +passwd         Menü für Ändern oder Entsperren der PIN
 +verify         überprüfe die PIN und liste alle Daten auf
 +unblock        die PIN mit dem Rückstellcode wieder freigeben
 +factory-reset  alle Schlüssel und Daten löschen
 +kdf-setup      Einrichten der KDF zur Authentifizierung
 +key-attr       Das Schlüsselattribut ändern
 +
 +gpg/card> name
 +Familienname des Kartenbesitzers:Nausch
 +Vorname des Kartenbesitzers:Michael
 +
 +gpg/card> lang
 +Spracheinstellungende
 +
 +gpg/card> sex
 +Geschlecht: (Männlich (M), Weiblich (F) oder Leerzeichen): m
 +
 +gpg/card> passwd
 +gpg: OpenPGP Karte Nr. D276000124010200FFFE432108430000 erkannt
 +
 +1 - change PIN
 +2 - unblock PIN
 +3 - change Admin PIN
 +4 - set the Reset Code
 +Q - quit
 +
 +Ihre Auswahl? 3
 +PIN changed.
 +
 +1 - change PIN
 +2 - unblock PIN
 +3 - change Admin PIN
 +4 - set the Reset Code
 +Q - quit
 +
 +Ihre Auswahl? 1
 +Error changing the PIN: Nutzungsvorraussetzungen nicht erfüllt
 +
 +1 - change PIN
 +2 - unblock PIN
 +3 - change Admin PIN
 +4 - set the Reset Code
 +Q - quit
 +
 +Ihre Auswahl? 
 +
 +1 - change PIN
 +2 - unblock PIN
 +3 - change Admin PIN
 +4 - set the Reset Code
 +Q - quit
 +
 +Ihre Auswahl? q
 +
 +gpg/card> list
 +
 +Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00
 +Application ID ...: D276000124010200FFFE432108430000
 +Version ..........: 2.0
 +Manufacturer .....: unmanaged S/N range
 +Serial number ....: 43210843
 +Name of cardholder: Michael Nausch
 +Language prefs ...: de
 +Sex ..............: männlich
 +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/card> quit
 +
 +
 +$ 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
 +
 +
 +$ 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]> 
 +
 +
 +$ openpgp-tool --erase
 +Using reader with a card: Nitrokey Nitrokey Start (FSIJ-1.2.10-43210843) 00 00
 +Erase card
 +
 +
 +$ 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 [<string> ..]                         display arguments
 +  ls [<pattern> ..]                          list files in the current DF
 +  find [<start id> [<end id>]]               find all files in the current DF
 +  find_tags [<start tag> [<end tag>]]        find all tags of data objects in the current context
 +  cd {.. | <file id> | aid:<DF name>       change to another DF
 +  cat [<file id> | sfi:<sfi id>            print the contents of an EF
 +  info [<file id>                          display attributes of card file
 +  create <file id> <size>                    create a new EF
 +  mkdir <file id> <size>                     create a new DF
 +  delete <file id>                           remove an EF/DF
 +  rm <file id>                               remove an EF/DF
 +  verify {CHV|KEY|AUT|PRO}<key ref> [<pin> present a PIN or key to the card
 +  change CHV<pin ref> [[<old pin>] <new pin> change a PIN
 +  unblock CHV<pin ref> [<puk> [<new pin>]]   unblock a PIN
 +  put <file id> [<input file>              copy a local file to the card
 +  get <file id> [<output file>             copy an EF to a local file
 +  do_get <hex tag> [<output file>          get a data object
 +  do_put <hex tag> <data>                    put a data object
 +  erase                                      erase card
 +  random <count>                             obtain <count> random bytes from card
 +  update_record <file id> <rec no> <rec offs> <data>  update record
 +  update_binary <file id> <offs> <data>      update binary
 +  apdu <data>                              send a custom apdu command
 +  asn1 [<file id>                          decode an ASN.1 file
 +  sm open|close                              call SM 'open' or 'close' handlers, if available
 +  debug [<value>                           get/set the debug level
 +  quit                                       quit this program
 +  exit                                       quit this program
 +  help                                       show this help
 +OpenSC [3F00]> exit
 +
 +
 +Pairs of key & certificate from P12 file:
 +$ pkcs15-init --verbose --delete-objects privkey,pubkey --id 3 --store-private-key michael.nausch.p12 --format pkcs12 --auth-id 3 --verify-pin
 +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't find privkey 03 to delete
 +NOTE: couldn't find pubkey 03 to delete
 +Deleted 0 objects
 +About to store private key.
 +error:23076071:PKCS12 routines:PKCS12_parse:mac verify failure
 +Please enter passphrase to unlock secret key: 
 +Importing 3 certificates:
 +  0: /C=DE/CN=Michael Robert Nausch/emailAddress=michael@nausch.org
 +  1: /OU=GlobalSign Root CA - R3/O=GlobalSign/CN=GlobalSign
 +  2: /C=BE/O=GlobalSign nv-sa/CN=GlobalSign PersonalSign 2 CA - SHA256 - G3
 +Failed to store private key: Invalid arguments
 +
 +Vermutliche Ursache, private key zu groß!
 +
 +*/
 +
 +... coming soon!
  
  • fedora/nitrokey/start.1543392354.txt.gz
  • Zuletzt geändert: 28.11.2018 08:05.
  • von django