nitrokey:arch: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
nitrokey:arch:start [04.06.2024 19:07. ] – [Verschlüsseln und entschlüsseln] djangonitrokey:arch:start [16.12.2024 20:35. ] (aktuell) – [erster Test] django
Zeile 43: Zeile 43:
 /0/100/1f.6              generic        Wildcat Point-LP Thermal Management Controller</code> /0/100/1f.6              generic        Wildcat Point-LP Thermal Management Controller</code>
  
-Mit Hilfe des Befehls ''lsusb'' aus dem RPM-Paket **usbutils** können wir auch die **Produkt-** und **Hersteller**-Identifikationsnummer des Nitrokey-Sticks ermitteln.+Mit Hilfe des Befehls ''lsusb'' aus dem Arch-Linux-Paket **usbutils** können wir auch die **Produkt-** und **Hersteller**-Identifikationsnummer des Nitrokey-Sticks ermitteln.
    # lsusb | grep Nitrokey    # lsusb | grep Nitrokey
   Bus 002 Device 020: ID 20a0:4211 Clay Logic Nitrokey Start    Bus 002 Device 020: ID 20a0:4211 Clay Logic Nitrokey Start 
Zeile 308: Zeile 308:
  
 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:
-    "Django aka [BOfH] (Bastard Operator from Hell) <secmail@mailserver.guru>"+    "Django aka [BOfH] (Bastard Operator from Hell) <secmail@nausch.org>"
  
 Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
Zeile 329: Zeile 329:
 pub   rsa2048 2020-08-04 [SC] pub   rsa2048 2020-08-04 [SC]
       E65B2BDF79A2E2E4C28F6E062E22436430385B49       E65B2BDF79A2E2E4C28F6E062E22436430385B49
-uid                      Django aka [BOfH] (Bastard Operator from Hell) <secmail@mailserver.guru>+uid                      Django aka [BOfH] (Bastard Operator from Hell) <secmail@nausch.org>
 sub   rsa2048 2020-08-04 [A] sub   rsa2048 2020-08-04 [A]
 sub   rsa2048 2020-08-04 [E]</code> sub   rsa2048 2020-08-04 [E]</code>
Zeile 482: Zeile 482:
  
 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:
Zeile 548: Zeile 548:
 === Öffentlichen Schlüssel ausgeben === === Öffentlichen Schlüssel ausgeben ===
 Damit wir später unseren öffentlichen Schlüssel auch weitergeben oder zu einem [[https://keys.openpgp.org/|Keyserver]] hoch laden, exportieren wir diesen in eine Datei. Damit wir später unseren öffentlichen Schlüssel auch weitergeben oder zu einem [[https://keys.openpgp.org/|Keyserver]] hoch laden, exportieren wir diesen in eine Datei.
-  $ gpg --export --armor django@nausch.org > ~/.gnupg/secmail@mailserver.guru.pubkey+  $ gpg --export --armor django@nausch.org > ~/.gnupg/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 ~/.gnupg/secmail@mailserver.guru.pubkey +  $ cat ~/.gnupg/secmail@nausch.org.pubkey 
-<file key secmail@mailserver.guru.pubkey>-----BEGIN PGP PUBLIC KEY BLOCK-----+<file key secmail@nausch.org.pubkey>-----BEGIN PGP PUBLIC KEY BLOCK-----
  
 mDMEZZXO7BYJKwYBBAHaRw8BAQdA++J6Astvcm2DsHDnzXGHKujQiokCxG+F3qPy mDMEZZXO7BYJKwYBBAHaRw8BAQdA++J6Astvcm2DsHDnzXGHKujQiokCxG+F3qPy
Zeile 909: Zeile 909:
 <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> <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.+**[[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. Detaillierte Informationen zur **[[https://martin.kleppmann.com/papers/curve25519.pdf|Implementierung von Curve25519/X25519: Ein Tutorial zur elliptischen Kurvenkryptografie]]** finden sich in dem verlinktem Dokument von [[https://martin.kleppmann.com/|Martin Kleppmann]]. 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> </WRAP>
  
Zeile 941: Zeile 941:
 </file> </file>
  
-FIXME  
  
 Im nächsten Schritt aktivieren wir die Option ''**enable-ssh-support**'' in der Konfigurationsdatei //**~/.gnupg/gpg-agent.conf Im nächsten Schritt aktivieren wir die Option ''**enable-ssh-support**'' in der Konfigurationsdatei //**~/.gnupg/gpg-agent.conf
 **// des GPG-Agenten. **// des GPG-Agenten.
    $ vim ~/.gnupg/gpg-agent.conf    $ vim ~/.gnupg/gpg-agent.conf
-<file bash ~/.gnupg/gpg-agent.conf># File re-created by pEp+<file bash ~/.gnupg/gpg-agent.conf># File re-created by pEp                                                                                                                                                                              
 # See backup in '/home/django/.gnupg/gpg-agent.conf.1.pep.bkp' # See backup in '/home/django/.gnupg/gpg-agent.conf.1.pep.bkp'
 + 
 # File re-created by pEp # File re-created by pEp
 # See backup in '/home/django/.gnupg/gpg-agent.conf.0.pep.bkp' # See backup in '/home/django/.gnupg/gpg-agent.conf.0.pep.bkp'
 + 
 default-cache-ttl 300 default-cache-ttl 300
 max-cache-ttl 999999 max-cache-ttl 999999
- +  
-Django : 2018-12-04 +Ansible generated, do not edit manual! 
-         SSH-Unterstützung beim gnupg-agent aktiviert  +# SSH-Support activated for gnupg-agent 
-enable-ssh-support</file>+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. 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.
Zeile 977: Zeile 977:
 # User specific aliases and functions # User specific aliases and functions
  
-# Django : 2018-12-04+# Django : 2024-05-25
 #          Definition des SSH_AUTH_SOCK für den Zugriff des SSH-Schlüssels auf dem Nitrokey Start #          Definition des SSH_AUTH_SOCK für den Zugriff des SSH-Schlüssels auf dem Nitrokey Start
 unset SSH_AGENT_PID unset SSH_AGENT_PID
Zeile 994: Zeile 994:
 Nun stecken wir unseren Nitrokey Start an den USB-Port und fragen den Kartenstatus ab. Nun stecken wir unseren Nitrokey Start an den USB-Port und fragen den Kartenstatus ab.
    $ gpg2 --card-status    $ gpg2 --card-status
-<code>Reader ...........: Nitrokey Nitrokey Start (FSIJ-1.2.10-43243711) 00 00+<code>Reader ...........: 20A0:4211:FSIJ-1.2.19-43243711:0
 Application ID ...: D276000124010200FFFE432437110000 Application ID ...: D276000124010200FFFE432437110000
 +Application type .: OpenPGP
 Version ..........: 2.0 Version ..........: 2.0
 Manufacturer .....: unmanaged S/N range Manufacturer .....: unmanaged S/N range
Zeile 1001: Zeile 1002:
 Name of cardholder: Michael Nausch Name of cardholder: Michael Nausch
 Language prefs ...: de Language prefs ...: de
-Sex ..............: männlich +Salutation .......: Mr
-URL of public key : http://keyserver.nausch.org/pks/lookup?op=get&search=0x9308FC78386863AC +URL of public key : [not set] 
-Login data .......: django +Login data .......: [not set] 
-Signature PIN ....: zwingend+Signature PIN ....: forced
 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 2 
-Signature counter : 15 +Signature counter : 23 
-Signature key ....: 3E61 A503 47B5 2382 4132  EC06 9308 FC78 3868 63AC +KDF setting ......: off 
-      created ....: 2018-11-27 21:26:26 +UIF setting ......: Sign=off Decrypt=off Auth=off 
-Encryption key....: FB2B D8AD 4660 EADE 0108  852D BF1E A3F7 0320 3D8A +Signature key ....: 2C08 2445 CDFB 72DE CD65  0350 610E D9AE E553 353F 
-      created ....: 2018-11-27 21:26:26 +      created ....: 2024-01-03 21:17:32 
-Authentication key: 9131 32BE D5AF D08E 4464  89B6 77F0 A5B2 F32A 76AE +Encryption key....: 9533 C548 589F F00B 8FFF  C93B B5E5 4345 BDA2 92A0 
-      created ....: 2018-11-27 21:26:26 +      created ....: 2024-01-03 21:17:32 
-General key info..: pub  ed25519/9308FC78386863AC 2018-11-27 Django aka [BOfH] (Bastard Operator from Hell) <secmail@mailserver.guru+Authentication key: D5AF 3627 1220 7A2A 54BD  6C47 C72E 74B8 1A5C 4549 
-sec>  ed25519/9308FC78386863AC  erzeugt2018-11-27  verfälltniemals    +      created ....: 2024-01-03 21:17:32 
-                                Kartennummer:FFFE 43243711 +General key info..: pub  ed25519/610ED9AEE553353F 2024-01-03 Django (Bastard Operator from Hell [BOfH]) <django@nausch.org
-ssb>  ed25519/77F0A5B2F32A76AE  erzeugt2018-11-27  verfälltniemals    +sec>  ed25519/610ED9AEE553353F  created2024-01-03  expiresnever      
-                                Kartennummer:FFFE 43243711 +                                card-no: FFFE 43243711 
-ssb>  cv25519/BF1EA3F703203D8A  erzeugt2018-11-27  verfälltniemals    +ssb>  ed25519/C72E74B81A5C4549  created2024-01-03  expiresnever      
-                                Kartennummer:FFFE 43243711+                                card-no: FFFE 43243711 
 +ssb>  cv25519/B5E54345BDA292A0  created2024-01-03  expiresnever      
 +                                card-no: FFFE 43243711
 </code> </code>
  
Zeile 1029: Zeile 1032:
   django    8766  0.0  0.0 364724   804 ?        Ss   21:57   0:00 gpg-agent --homedir /home/django/.gnupg --use-standard-socket --daemon   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   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 Authentication Keys, genauer gesagt die 4 letzten Zahlenreihen des nachfolgenden Aufrufs.
 +   $ gpg2 --card-status | grep Authentication\ key
 +
 +  Authentication key: D5AF 3627 1220 7A2A 54BD  6C47 C72E 74B8 1A5C 4549
 +In diesem Konfigurationsbeispiel ist die Schlüssel-ID des Autentication Keys also die Nummer ''**C72E74B81A5C4549**''.
 +
 +Nun exportieren wir den öffentlichen Schlüssel und schreiben diesen in eine separate Datei.
 +   $ gpg2 --export-ssh-key C72E74B81A5C4549 >> ~/.ssh/C72E74B81A5C4549.pub
 +
 +Der Öffentliche Schlüssel in diesen Konfigurationsbeispiel lautet also:
 +   $ cat ~/.ssh/C72E74B81A5C4549.pub
 +
 +  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHMD4OSvbbTRAs88C5jQeUX7HOR0TYd+EIQLcKmGCBll openpgp:0x1A5C4549
 +
 +Diesen Schlüssel kopieren wir nun auf das entsprechende Zielsystem an Ort und Stelle ''**~/.ssh/authorized_keys**''.
 +   $ scp ~/.ssh/C72E74B81A5C4549.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      1430  0.0  0.0 376092  3636 ?        SLsl 20:32   0:00 /usr/bin/gpg-agent --supervised
 +
 +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.
 +
 +{{ :nitrokey:arch:ssh_001.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 solange wir den USB-Hardwareschlüssel nicht 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>
 +
 +Anschliessend 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/arch/start.1717528052.txt.gz
  • Zuletzt geändert: 04.06.2024 19:07.
  • von django