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
public:gnupg:gnupg-card-howto [2015/02/25 11:22] – [Nutzung für Luks] ungewitterpublic:gnupg:gnupg-card-howto [2024/07/29 11:40] (aktuell) – [Hauptkey mit Subkeys] jankow@datenkollektiv.net
Zeile 2: Zeile 2:
  
 <WRAP center round box> <WRAP center round box>
 +
 ===== Andere Anleitungen ===== ===== Andere Anleitungen =====
  
Zeile 8: Zeile 9:
   * [[http://wiki.fsfe.org/Card_howtos/Card_with_subkeys_using_backups#Create_a_GnuPG_secret_key|Anleitung der Free Software Foundation Europe]]   * [[http://wiki.fsfe.org/Card_howtos/Card_with_subkeys_using_backups#Create_a_GnuPG_secret_key|Anleitung der Free Software Foundation Europe]]
   * [[http://spin.atomicobject.com/2013/09/25/gpg-gnu-privacy-guard/|Anleitung von spin.atimoicobject.com]]   * [[http://spin.atomicobject.com/2013/09/25/gpg-gnu-privacy-guard/|Anleitung von spin.atimoicobject.com]]
-  * +  * 
 ==== Best Practice (Nutzung von Haupt- und Subkeys) für gnupg ==== ==== Best Practice (Nutzung von Haupt- und Subkeys) für gnupg ====
  
-  * http://www.openpgp-schulungen.de/kurzinfo/schluesselqualitaet/ +  * [[http://www.openpgp-schulungen.de/kurzinfo/schluesselqualitaet/|http://www.openpgp-schulungen.de/kurzinfo/schluesselqualitaet/]] 
-  * http://www.openpgp-schulungen.de/inhalte/ +  * [[http://www.openpgp-schulungen.de/inhalte/|http://www.openpgp-schulungen.de/inhalte/]] 
-  * http://blog.andreas-haerter.com/2010/04/12/gnupg-schluesselhierarchie-passender-algorithmus-fuer-jede-aufgabe-schluesselaustausch-ohne-verlust-des-web-of-trust#fn__8 +  * [[http://www.hauke-laging.de/sicherheit/openpgp.html|http://www.hauke-laging.de/sicherheit/openpgp.html]] 
-  * https://alexcabal.com/creating-the-perfect-gpg-keypair/ +  * [[http://blog.andreas-haerter.com/2010/04/12/gnupg-schluesselhierarchie-passender-algorithmus-fuer-jede-aufgabe-schluesselaustausch-ohne-verlust-des-web-of-trust#fn__8|http://blog.andreas-haerter.com/2010/04/12/gnupg-schluesselhierarchie-passender-algorithmus-fuer-jede-aufgabe-schluesselaustausch-ohne-verlust-des-web-of-trust#fn__8]] 
-  * http://www.bootc.net/archives/2013/06/07/generating-a-new-gnupg-key/+  * [[https://alexcabal.com/creating-the-perfect-gpg-keypair/|https://alexcabal.com/creating-the-perfect-gpg-keypair/]] 
 +  * [[http://www.bootc.net/archives/2013/06/07/generating-a-new-gnupg-key/|http://www.bootc.net/archives/2013/06/07/generating-a-new-gnupg-key/]] 
 </WRAP> </WRAP>
 +
 +===== Nutzung der Gnupg Card =====
 +
 +  * Die verschiedenen [[:public:gnupg:gnupg-card-usage|Möglichkeiten zum Einsatz der Karte]]
  
 ===== Grundsätzliche Infos über Smart Cards ===== ===== Grundsätzliche Infos über Smart Cards =====
Zeile 24: Zeile 32:
 Es gibt zwei unterschiedliche Konzepte: Es gibt zwei unterschiedliche Konzepte:
  
-  * Die "pki cards" (PKCS#11), siehe hier: [[https://wiki.debian.org/Smartcards]] +  * Die "pki cards" (PKCS#11), siehe hier: [[https://wiki.debian.org/Smartcards|https://wiki.debian.org/Smartcards]] 
-  * und die vor allem unter Linux sehr gut nutzbaren Gnupg-Cards [[https://wiki.debian.org/Smartcards/OpenPGP]]+  * und die vor allem unter Linux sehr gut nutzbaren Gnupg-Cards [[https://wiki.debian.org/Smartcards/OpenPGP|https://wiki.debian.org/Smartcards/OpenPGP]]
  
 Während erstere den Quasi-Standard für x509 Zertfikate und eine [[http://de.wikipedia.org/wiki/Public-Key-Infrastruktur|Public-Key-Infrastructure]] darstellen scheint die gnupg Variante unter Linux einfacher einzurichten und besser unterstützt zu sein. Während erstere den Quasi-Standard für x509 Zertfikate und eine [[http://de.wikipedia.org/wiki/Public-Key-Infrastruktur|Public-Key-Infrastructure]] darstellen scheint die gnupg Variante unter Linux einfacher einzurichten und besser unterstützt zu sein.
Zeile 31: Zeile 39:
 Ähnliche Konzpete verfolgen auch Ähnliche Konzpete verfolgen auch
  
-  * der [[http://finninday.net/wiki/index.php/Yubikey|Yubikey]] - eine Mischung aus USB-smartcard und One-Time-Password Generator+  * der [[http://finninday.net/wiki/index.php/Yubikey|Yubikey]] 
 + - eine Mischung aus USB-smartcard und One-Time-Password Generator
   * und der [[https://www.nitrokey.com/de/einleitung|Cryptostick]] der Privacy-Foundation.   * und der [[https://www.nitrokey.com/de/einleitung|Cryptostick]] der Privacy-Foundation.
  
Zeile 40: Zeile 49:
 Unterschiede der verschiedenen Systeme: Unterschiede der verschiedenen Systeme:
  
-| **System** | **Vorteile** | **Nachteile**| +|**System** |**Vorteile** |**Nachteile** | 
-| Gnupg Card | Karten leicher erhältlich und preiswerter. Unterstützung unter Linux einfacher | Authentifizierung mit Clients wie Thunderbird etc. nicht so einfach \\ +|Gnupg Card|Karten leicher erhältlich und preiswerter. Unterstützung unter Linux einfacher|Authentifizierung mit Clients wie Thunderbird etc. nicht so einfach| 
-| PKCS#11 | De Facto Standard | komplizierter in der Einrichtung, Karten teurer?, Beschaffung komplizierter, Kompatibilität nicht immer gegeben |+|PKCS#11|De Facto Standard|komplizierter in der Einrichtung, Karten teurer?, Beschaffung komplizierter, Kompatibilität nicht immer gegeben|
  
-Vor- und Nachteile sind z.B. hier diskutiert worden: http://lists.gnupg.org/pipermail/gnupg-users/2006-February/027936.html+Vor- und Nachteile sind z.B. hier diskutiert worden: [[http://lists.gnupg.org/pipermail/gnupg-users/2006-February/027936.html|http://lists.gnupg.org/pipermail/gnupg-users/2006-February/027936.html]]
  
 </WRAP> </WRAP>
Zeile 57: Zeile 66:
   * einen kompatiblen [[https://wiki.debian.org/Smartcards|Cardreader]]   * einen kompatiblen [[https://wiki.debian.org/Smartcards|Cardreader]]
  
-Beides ist am einfachsten über den Shop von [[http://shop.kernelconcepts.de/|Kernel Concepts]] zu erhalten. Eine Gnupg-Card erhält auch, wer der [[https://fsfe.org/fellowship/|Free Software Foundation Europe]] beitritt. +Beides ist am einfachsten im [[https://www.floss-shop.de/|FLOSS Shop]] zu erhalten. Eine Gnupg-Card erhält auch, wer der [[https://fsfe.org/fellowship/|Free Software Foundation Europe]] beitritt.
  
 ===== Software installieren ===== ===== Software installieren =====
Zeile 64: Zeile 72:
 Als erstes installieren wir die Software. Wichtig: die gnupg-card funktioniert nur mit gnupg Version 2. Als erstes installieren wir die Software. Wichtig: die gnupg-card funktioniert nur mit gnupg Version 2.
  
-  apt-get install gnupg2 scdaemon gpgsm pcscd+<code> 
 +apt-get install gnupg2 scdaemon gpgsm pcscd 
 +</code> 
 <WRAP center round box> <WRAP center round box>
  
 Wenn der [[http://www.scute.org/|PKCS#11-Support]] verwendet werden soll evtl. auch: Wenn der [[http://www.scute.org/|PKCS#11-Support]] verwendet werden soll evtl. auch:
  
-  apt-get install gnupg-pkcs11-scd+<code> 
 +apt-get install gnupg-pkcs11-scd 
 +</code> 
 </WRAP> </WRAP>
  
 ===== Card-Reader einrichten ===== ===== Card-Reader einrichten =====
- 
  
 In der [[https://www.gnupg.org/howtos/card-howto/en/ch02s03.html|Anleitung der Free Software Foundation Europe]] wird beschrieben, wie der Card-Reader so eingerichtet wird, dass das USB-Device die richtigen Rechte und Gruppenzugehörigkeit erhält. In der [[https://www.gnupg.org/howtos/card-howto/en/ch02s03.html|Anleitung der Free Software Foundation Europe]] wird beschrieben, wie der Card-Reader so eingerichtet wird, dass das USB-Device die richtigen Rechte und Gruppenzugehörigkeit erhält.
  
-<WRAP center round info> +<WRAP center round info> Unter Debian Wheezy war das für den Gemalteo Shell Token nicht nötig. Der Card-Reader funktionierte nach der Installation der Software "Out of the Box"Das liegt möglicherweise daran, dass die ccid-library noch mal anders funktioniert als die gnupg built in ccid. </WRAP>
-Unter Debian Wheezy war das nicht nötig. Der Card-Reader funktionierte nach der Installation der Software "Out of the Box". +
-</WRAP>+
  
 Das Device des Card-Readers muss die richtigen Dateirechte erhalten, damit die User darauf zugreifen können. Das erfolgt mittels udev und wird [[http://wiki.fsfe.org/Card_howtos/Card_reader_setup_%28udev%29|hier beschrieben]] Das Device des Card-Readers muss die richtigen Dateirechte erhalten, damit die User darauf zugreifen können. Das erfolgt mittels udev und wird [[http://wiki.fsfe.org/Card_howtos/Card_reader_setup_%28udev%29|hier beschrieben]]
Zeile 85: Zeile 96:
 Als schneller Workaroundzum Testen oder zur Nutzung innerhalb von Live-Systemen (zur sicheren Generierung der Schlüssel) kann das folgendermaßen getan werden Als schneller Workaroundzum Testen oder zur Nutzung innerhalb von Live-Systemen (zur sicheren Generierung der Schlüssel) kann das folgendermaßen getan werden
  
-  lsusb +<code> 
-  Bus 001 Device 008: ID ... Card-Reader .... +lsusb 
-  +Bus 001 Device 008: ID ... Card-Reader .... 
 +</code> 
 damit wissen wir die Bus und Device ID: damit wissen wir die Bus und Device ID:
  
-  ls -l /dev/bus/usb/001/008 +<code> 
-   +ls -l /dev/bus/usb/001/008 
-als temporärer Workaround: +</code>
  
-  chmod 666 /dev/bus/usb/001/008+als temporärer Workaround: 
 + 
 +<code> 
 +chmod 666 /dev/bus/usb/001/008 
 +</code>
  
 ===== Schlüssel erzeugen und auf Karte transferrieren ===== ===== Schlüssel erzeugen und auf Karte transferrieren =====
Zeile 105: Zeile 122:
 ==== Hauptkey mit Subkeys ==== ==== Hauptkey mit Subkeys ====
  
-  * Eine ausführlichere Anleitung (incl. Backup der keys findet sich hier: http://www.bootc.net/archives/2013/06/07/generating-a-new-gnupg-key/)+  * Eine ausführlichere Anleitung (incl. Backup der keys findet sich hier: [[http://www.bootc.net/archives/2013/06/07/generating-a-new-gnupg-key/|http://www.bootc.net/archives/2013/06/07/generating-a-new-gnupg-key/]])
  
-Das Generieren der Schlüsselpaare findet vorzugsweise auf einem [[http://live.debian.net/|Live-System]] statt, damit sicher gestellt werden kann, dass die Schlüssel nicht bereits bei der Erstellung von Dritten gelesen werden können. Ist der geheime Schlüssel einmal auf der Karte, kann er, so zumindest die Theorie, diese nicht mehr verlassen. Alle Operationen finden auf der Karte statt. Daher lohnt es sich, bei der Erstellung der Schlüssel wirklich sehr sorgfältig vorzugehen: +Das Generieren der Schlüsselpaare findet vorzugsweise auf einem [[http://live.debian.net/|Live-System]] statt, damit sicher gestellt werden kann, dass die Schlüssel nicht bereits bei der Erstellung von Dritten gelesen werden können. Ist der geheime Schlüssel einmal auf der Karte, kann er, so zumindest die Theorie, diese nicht mehr verlassen. Alle Operationen finden auf der Karte statt. Daher lohnt es sich, bei der Erstellung der Schlüssel wirklich sehr sorgfältig vorzugehen:
  
   * vertrauensvolle Hardware   * vertrauensvolle Hardware
-  * Live-System möglichst ohne Netzwerkverbindungen +  * Live-System möglichst ohne Netzwerkverbindungen (wir empfehlen [[https://tails.net/|Tails]])
- +
-Ein angepasstes Live-System mit aller nötigen Software sowohl zum Erzeugen der Keys als auch für die Verwendung der Gnupg-Karte kann beim [[kontakt@datenkollektiv.net|Datenkollektiv]] bestellt werden. +
- +
-Ihr erhaltet einen Bootbaren USB-Stick mit +
- +
-  * angepasstem xfce4 Desktop und allen nötigen Crypto-Tools +
-  * einer zusätzlichen LUKS-verschlüsselten Partition, die z.B. für die Backups der privaten Schlüssel dienen kann.+
  
 === Hauptschlüssel-Paar generieren: === === Hauptschlüssel-Paar generieren: ===
Zeile 125: Zeile 135:
 Als erstes wird der Hauptschlüssel erstellt, der nur zum Signieren der Unterschlüssel dient: Als erstes wird der Hauptschlüssel erstellt, der nur zum Signieren der Unterschlüssel dient:
  
-  gpg2 --gen-key +<code> 
-  +gpg --full-generate-key 
 +</code> 
 Bei der Auswahl: Bei der Auswahl:
-  RSA (sign only)+ 
 +<code> 
 +RSA (sign only) 
 +</code>
  
   * ggf. unbegrenzte Haltbarkeit   * ggf. unbegrenzte Haltbarkeit
Zeile 136: Zeile 151:
 Mit Mit
  
-  gpg --list-keys+<code> 
 +gpg --list-keys 
 +</code>
  
 finden wir unsere neue Key-ID heraus. Diese nutzen wir nun zum Editieren des Schlüssels: finden wir unsere neue Key-ID heraus. Diese nutzen wir nun zum Editieren des Schlüssels:
  
-  gpg --expert --edit-key KEYIDXYZ+<code> 
 +gpg --expert --edit-key KEYIDXYZ 
 +</code>
  
 Im Anschluss generieren wir drei Subkeys für folgende Zwecke: Im Anschluss generieren wir drei Subkeys für folgende Zwecke:
Zeile 148: Zeile 167:
   - Authentifizieren   - Authentifizieren
  
-  gpg>  addkey+<code> 
 +gpg>  addkey 
 +</code>
  
-legt einen neuen Subschlüssel an. Wir müssen jetzt je einen zum Signieren, Verschlüsseln und Authentifizieren anlegen, d.h. die folgende Prozedur wird **dreimal** wiederholt.+legt einen neuen Subschlüssel an. Wir müssen jetzt je einen zum Signieren, Verschlüsseln und Authentifizieren anlegen, d.h. die folgende Prozedur wird **dreimal**  wiederholt.
  
 Bei der folgenden Auswahl: Bei der folgenden Auswahl:
Zeile 169: Zeile 190:
 Jetzt kann mit den angegebenen Buchstaben jeweils eine Fähigkeit zu- oder abgeschaltet werden. Jetzt kann mit den angegebenen Buchstaben jeweils eine Fähigkeit zu- oder abgeschaltet werden.
  
-Zuletzt sichert ein +Zuletzt sichert ein
  
-  gpg> save+<code> 
 +gpg> save 
 +</code>
  
 unsere Änderungen. unsere Änderungen.
 +
 +==== Backup ====
 +
 +Dieser Schritt muss unbedingt vorgenommen werden, **bevor**  die Subkeys auf die Karte transferriert werden, da das Kommando ''keytocard''  die Schlüssel aus dem Schlüsselbund auf die Karte verschiebt. Im Secring auf der Platte bleiben nur Stubs.
 +
 +  * Der gesamte Keyring (Unterverzeichnis .gnupg) sollte nach der Prozedur auf ein verschlüsseltes Medium bzw. in einem Container gesichert werden.
 +
 +  * eine weitere Variante zum Backup von Keys ist [[http://schnouki.net/posts/2010/03/22/howto-backup-your-gnupg-secret-key-on-paper/|paperkey]]
 + - ein Programm um ausdruckbare Daten zu erhalten und den key auf Papier auszudrucken.
  
 ==== Schlüssel auf die Gnupg-Karte kopieren ==== ==== Schlüssel auf die Gnupg-Karte kopieren ====
 +
 +<WRAP center round important> Achtung: Bitte sicher stellen, dass vor dem Kopieren auf die Karte ein Backup mit allen Subkeys auf einem sicheren Medium erstellt wurde. Die folgenden Kommandos löschen die Subkeys aus dem Schlüsselbund und verschieben sie auf die Karte, von der sie zwar benutzt - aber nicht wieder hergestellt werden können. </WRAP>
  
 Im nächsten Schritt kopieren wir unsere Subkeys auf die gnupg-Karte. Hierfür benötigen wir das Passwort für den geheimen Hauptschlüssel und die Admin-Pin für die Karte. Im nächsten Schritt kopieren wir unsere Subkeys auf die gnupg-Karte. Hierfür benötigen wir das Passwort für den geheimen Hauptschlüssel und die Admin-Pin für die Karte.
  
-  gpg --expert --edit-key KEYIDXYZ+<code> 
 +gpg --expert --edit-key KEYIDXYZ 
 +</code>
  
 Ein Ein
  
-  gpg> toggle+<code> 
 +gpg> toggle 
 +</code>
  
 schaltet in die Ansicht der privaten Schlüssel um. schaltet in die Ansicht der privaten Schlüssel um.
Zeile 189: Zeile 227:
 Jetzt markieren wir der Reihe nach unsere Subkeys: Jetzt markieren wir der Reihe nach unsere Subkeys:
  
-  gpg> key 1+<code> 
 +gpg> key 1 
 +</code>
  
 und kopieren sie auf die Karte: und kopieren sie auf die Karte:
  
-  gpg> keytocard+<code> 
 +gpg> keytocard 
 +</code>
  
 Das wiederholen wir jetzt mit Schlüssel 2 u. 3. (Die Schlüssel müssen jeweils wieder entsperrt werden.) Das wiederholen wir jetzt mit Schlüssel 2 u. 3. (Die Schlüssel müssen jeweils wieder entsperrt werden.)
Zeile 201: Zeile 243:
 Den öffentlichen Schlüssel (der nicht auf der Karte gespeichert ist) exportieren wir auf ein zugängliches Medium oder zu einem Keyserver. Wir brauchen diesen später. Den öffentlichen Schlüssel (der nicht auf der Karte gespeichert ist) exportieren wir auf ein zugängliches Medium oder zu einem Keyserver. Wir brauchen diesen später.
  
-  gpg --export --armor KEYID > public_key.asc+<code> 
 +gpg --export --armor KEYID> public_key.asc 
 +</code>
  
-===== Backup =====+==== Geheimen Schlüsselbund auf den Nutzer_innen Rechnern erstellen ====
  
-  * Der gesamte Keyring (Unterverzeichnis .gnupg) sollte nach der Prozedur auf ein verschlüsseltes Medium bzw. in einem Container gesichert werden.+Auch wenn die geheimen Schlüssel nun auf der Karte sind - und nicht auf den jeweiligen Computern: dennoch muss ein Schlüsselbund mit den Verweisen auf die geheimen Schlüsseln auf die Karte erstellt werden.
  
-  * eine weitere Variante zum Backup von Keys ist [[http://schnouki.net/posts/2010/03/22/howto-backup-your-gnupg-secret-key-on-paper/|paperkey]] - ein Programm um ausdruckbare Daten zu erhalten und den key auf Papier auszudrucken.+Während bei Smartcards, die von ''gnupg 1''  unterstützt werden ein einfacher Aufruf von
  
-===== Nutzung der Gnupg-Card =====+<code> 
 +gpg --card-status 
 +</code>
  
-Die Gnupg-Card kann vielfältig genutzt werden:+reicht, um Verweise auf die Karte zu generieren, muss bei ''gnupg 2''  folgender Aufruf erfolgen:
  
-  * Authentifizieren: +<code> 
-    * Login auf lokalen oder (per ssh) entfernten Servern +gpg2 --secret-keyring .gnupg/secring.gpg --card-status 
-    * Signieren und Verschlüsseln von E-Mails und Dateien +</code>
-    * In Zusammenarbeit mit Passwort-Managern als sichere Möglichkeit, Passwörter zu verwalten.+
  
-==== Verschlüsseln und Signieren ====+in manchen Fällen funktioniert dies jedoch nur über den internen Befehl ''fetch''
  
-Die Nutzung der GPG-Funktion funktioniert genau wie gewohntFür die Nutzung ist es allerdings noch notwendig, den öffentlichen Schlüssel der beim Erstellen des Schlüsselpaares gewonnen wurde in den jeweiligen Keyring zu kopierenAuf der Karte selbst sind nur die privaten Schlüssel.+<code> 
 +$ gpg2 --card-edit 
 +... 
 +gpg/card> fetch 
 +... 
 +gpg: Total number processed: 1 
 +gpg:               imported: 1 (RSA: 1) 
 +$ gpg2 --card-status 
 +... 
 +</code>
  
-==== Login und Authentifizierung ====+<WRAP center round tip 60%> Übrigens bei einer Erweiterung des öffentlichen Schlüssels mit neuen Schlüsseln, deren neue geheime Gegenstücke auf einer neuen Karte sind, müssen erst alle Verweise auf die alte Karte gelöscht werden. </WRAP>
  
-=== Login in lokalen Linux-Rechner ===+==== Karte wechseln ====
  
-Die Linux-Pam und die verschiedenen Session-Manager können mit GnuPG-Card umgehen.+Beim Ersetzen einer Karte muss folgendes beachtet werden:
  
-  * http://www.schiessle.org/howto/poldi.php+  - Die Keys müssen analog der Anleitung auf die neue Karte kopiert werden 
 +<del>  - der Verweis auf den privaten Schlüssel (also nur der Rest des privaten Schlüssels) muss auf den Rechnern, auf denen die Karte zum Einsatz kommt gelöscht werden. Ein ''gpg –delete-secret-keys KEYID''  erledigt das. **Sicher stellen, dass es der Schlüsselbund mit den Verweisen ist, der bearbeitet nicht - und nicht z.B. der mit den Originalschlüsseln**.</del> 
 +  - seit [[https://www.gnupg.org/faq/whats-new-in-2.1.html|gnpg2.1]] werden die secret Keys nicht mehr in secring.pgp gespeichert - sondern unter ''.gnupg/private-keys-v1.d/'' 
 +  - Die zu den privaten Keys der Karte passenden Verweise müssen aus ''.gnupg/private-keys-v1.d/'' gelöscht werden. 
 +  - Danach müssen die Verweise auf die neue Karte wieder erstellt werden: ''gpg2 –secret-keyring .gnupg/secring.gpg –card-status''
  
-Die dort verwendeten Optionen für poldi-ctrl scheinen in der wheezy-Version noch nicht zu existierenFolgendes Information hilft weiter:+**Anzeigen der zur gnupg-Karte passenden Dateien unter ''.gnupg/private-keys-v1.d/'':**
  
-  * http://walter.silvergeeks.com/rechner/howto/how-to-anmeldung-mit-smart-card-oder-usb-token-am-lokalen-linux-system/+Das ist hier von Werner beschrieben: https://lists.gnupg.org/pipermail/gnupg-users/2016-April/055766.html
  
-=== Nutzung für ssh ===+  gpg --with-keygrip -k KEYID
  
-  * http://www.ozonesolutions.com/programming/2014/04/pgp-smart-card-ssh-login-gpg-agent-ubuntu/ +Die ausgegebenen Keygrips beziehen sich auf die Dateien unter''.gnupg/private-keys-v1.d/''
-  * http://www.bootc.net/archives/2013/06/09/my-perfect-gnupg-ssh-agent-setup/ +
-  * https://grepular.com/Smart_Cards_and_SSH_Authentication+
  
-Wir müssen ssh-Support im gpg-agent konfigurieren:+  rm ''.gnupg/private-keys-v1.d/KEYGRIP.key''
  
-  echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf+**Achtung: immer Backup des .gnupg-Verzeichnisses machen, damit nicht aus Versehen andere secret Keys gelöscht werden.** 
 +===== Stolperstellen =====
  
-=== ssh über mehrere Server (ForwardAgent) ===+gnupg sollte aus [[https://wiki.gnupg.org/GnomeKeyring|diversen Gründen]] nicht mit dem gnome keyring genutzt werden. Dazu sollten zum einen die Autostart-Einträge der Desktop-Umgebung angepasst werden:
  
-  * http://livecipher.blogspot.co.uk/2013/02/ssh-agent-forwarding.html+<code> 
 +mv /etc/xdg/autostart/gnome-keyring-gpg.desktop /etc/xdg/autostart/gnome-keyring-gpg.desktop.inactive 
 +</code>
  
-Damit das funktioniert, muss der ssh-client so konfiguriert werden, dass er "agent-forwarding" untestützt:+beim Aufruf von
  
 +<code>
 +gpg2 --card-status
 +</code>
  
-  * /etc/ssh/ssh_config (sytemweit) +gibts ggfBeschwerden:
-  * /home/user/.ssh/config (per user)+
  
-  Host * +<code> 
-        ForwardAgent yes+gpg: selecting openpgp failed: Nicht unterstütztes Zertifikat 
 +gpg: OpenPGP Karte ist nicht vorhanden: Nicht unterstütztes Zertifikat 
 +</code>
  
-Eine ausführliche Beschreibung findet sich hier:+GrundDie Umgebungsvariable GPG_AGENT_INFO ist gesetzt. Erst ab Version 2.1 ignoriert gpg2 diese. Ein
  
-  * http://www.unixwiz.net/techtips/ssh-agent-forwarding.html+<code> 
 +unset GPG_AGENT_INFO 
 +</code>
  
-=== Innerhalb von screen-sessions ===+verschafft Linderung und sollte ggf in den Startscripten untergebracht werden.
  
-Hier steht was dazu:+<WRAP center round tip 60%> Update für Debian Stretch:
  
-  * http://www.bootc.net/archives/2013/06/09/my-perfect-gnupg-ssh-agent-setup/+Seit Debian Stretch wird der gpg-agent vom systemd in der user-Session gestartet. Das deaktivieren des gnome-keyring-daemons sollte hier nicht mehr nötig sein. </WRAP>
  
-Aber mit debian-wheezy sollte das out of the box funktinieren.+===== Erfahrungen mit Kartenlesegeräten =====
  
-===== Nutzung für X2Go =====+Übersicht über unterstützte Kartenlesegeräte:
  
-  * http://wiki.x2go.org/doku.php/wiki:advanced:authentication:passwordless-gpg-card+[[http://pcsclite.alioth.debian.org/ccid/supported.html|http://pcsclite.alioth.debian.org/ccid/supported.html]]
  
-Auch der x2goclient kann auf die ssh-Authentifizierung über gpg-agent mittels gpg-card zurück greifenx2goclient muss dazu mit der Option:+Bei der Wahl eines Kartenlesegerätes [[http://ludovicrousseau.blogspot.de/2011/05/extended-apdu-status-per-reader.html|sollte eines mit der Unterstützung]] sogenannter [[http://de.wikipedia.org/wiki/Application_Protocol_Data_Unit|"extended APDU"]] gewählt werden.
  
-  x2goclient --pgp-card+Ohne "extended APDU" Unterstützung [[https://bugs.g10code.com/gnupg/issue1105|sind Schlüsselgrößen ab 2048 Bit nicht möglich]].
  
-gestartet werden.+==== Vollständig unterstützte Kartenleser ====
  
-Allerdings beherrscht der x2goclient kein ssh-agent ForwardingD.hinnerhalb der x2go-Sitzung kann der  lokale gpg-agent für die ssh-Authentifizierung nicht genutzt werden.+**[[http://pcsclite.alioth.debian.org/ccid/supported.html#0x08E60x3438|gemalto usb shell token v2]]**
  
-Eleganter ist daher die Nutzung des alternativen X2go-Clients: [[http://wiki.x2go.org/doku.php/doc:usage:pyhoca-gui|pyhoca-gui]].+Ein USB-Kartenleser in USB-Stick Format ohne Keypad
  
-  apt-get install pyhoca-gui python-cups+  * funktioniert out of the box mit dem pcscd
  
-Dieser beherrscht nicht nur die Authentifizierung via smart-card out of the box - sondern auch ssh-forward-agent.+**[[http://pcsclite.alioth.debian.org/ccid/supported.html#0x046A0x003E|http://pcsclite.alioth.debian.org/ccid/supported.html#0x046A0x003E]]**
  
-===== Nutzung für Luks =====+Ein USB-Kartenleser mit Pinpad
  
-Praktisch wäre, die Gnupg-Card auch zum entschlüsseln von Luks-Partitionen beim Booten vollverschlüsselter Systeme nutzen zu können.+  * funktioniert out of the bos mit dem pcscd
  
-Es gibt dazu verschiedene Ansätze:+==== Nicht oder nicht vollständig unterstützte Kartenleser ====
  
-  http://digitalbrains.com/2014/gpgcryptroot+**[[https://www.reiner-sct.com/support/support-anfrage/?product=77304824&productGroup=77304735#choice3|ReinerSCT Secoder]]**
  
-Das Problem ist dabeidass im initramfs die Smartcard nicht erkannt wird. Das Entschlüsseln mit der symetrischen Verschlüsselung funktioniert dagegen gut. Im Folgenden Beitrag steht was zu dem Problem. Ein paar Lösungsansätze scheinen da auch dabei zu sein.+Für diesen Kartenleser sind zusätzliche Treiber nötig, die sich in den folgenden Debian-Paketen finden:
  
-  * http://www.gooze.eu/forums/support/full-disk-encryption-with-feitian-pki-cardtoken-and-luks-fixed+<code> 
 +apt-get install fxcyberjack libifd-cyberjack6 
 +</code>
  
-  * http://lists.gnupg.org/pipermail/gnupg-users/2009-November/037599.html -> hier wird gezeigt, wie mensch die vier private "DO" data auf der Karte verwenden kann+bzw. für Stretch:
  
-  * Hier eine komplette Anleitung für Ubuntu Luks mit 2-Faktor Authentifizierung: https://blog.kumina.nl/2010/07/two-factor-luks-using-ubuntu/+<code> 
 +apt-get install libifd-cyberjack6 
 +</code>
  
-===== Nutzung mit Passwortmanagern =====+Allerdings scheint trotzdem das Pinpad nicht unterstützt zu werden: [[https://blogs.fsfe.org/jzarl/2013/08/20/card-reader-reinersct-cyberjack-pinpad/|https://blogs.fsfe.org/jzarl/2013/08/20/card-reader-reinersct-cyberjack-pinpad/]]
  
-==== keepassX ==== +**[[http://pcsclite.alioth.debian.org/ccid/shouldwork.html#0x076B0x6622|Omnikey CardMan 6121]]**
-  https://www.keepassx.org/forum/viewtopic.php?f=2&t=2188+
  
-Die dort beschriebene Lösung funktioniert offensichtlich nicht mehr. Schuld daran scheint zu sein, dass der über socat gebildete Socket keine Informationen über die Kodierung des zur Verfügung gestellten Files ausgibt, keepassx darauf aber zurück greifen will.+Ein USB-Kartenleser in USB-Stick Format ohne Keypad
  
-Davon abgesehen, ist die Lösung über pipes nicht unbedingt ideal, weil diese auf einem Multi-User-System nicht wirklich sicher sind. +Lt. [[https://www.gnupg.org/howtos/card-howto/en/ch02s02.html|https://www.gnupg.org/howtos/card-howto/en/ch02s02.html]] sollte dieser Cardreader von der gnupg-internen libccid untersützt werden. Allerdings funktioniert das nur aufgrund fehlender [[http://pcsclite.alioth.debian.org/ccid/shouldwork.html#0x076B0x6622| Unterstützung von extended APDU]] nur mit Schlüsseln < 2048 BitBei Schlüsseln ab 2048 Bit wird ein keytocard mit folgendem Fehler beendet:
-==== pass ====+
  
-Ein Kommandozeilen Passwort-Manager, der Passwörter mittels gpg verschlüsselt und daher auch "smart-card kompatibel" ist[[http://www.passwordstore.org/|pass]] (in wheezy-backports)+<code> 
 +gpg: ccid_transceive failed: (0x10002) 
 +gpg: apdu_send_simple(0) failed: invalid value 
 +</code>
  
-  apt-get install -t wheezy-backports pass+Laut [[http://askubuntu.com/questions/529535/omnikey-6121-cannot-write-to-openpgp-smartcard|einem Ubuntu-User]] soll es möglich sein, das Gerät auch mit 2048 Bit Schlüsseln zu verwenden. Aufgrund der fehlenden APDU Unterstützung scheint das aber bei der angegebenen Schlüssellänge unwahrscheinlich.
  
-Dieses legt für jeden Passwort-Eintrag eine Datei unterhalb von ''.password-store'' anDie Baumstruktur wird mittels Unterverzeichnissen erzeugt.+**[[http://pcsclite.alioth.debian.org/ccid/shouldwork.html#0x076B0x3621|Omnikey 3621]]**
  
-Features (Auswahl):+Dieser Kartenleser mit Pinpad funktioniert nur mit dem gnupg internen ccid Treiber. Um diesen zu nutzen, muss der pcscd gestoppt werden. Beim Schreiben auf die Karte kommt es bei Schlüsseln ab 2048 Bit zu folgender Fehlermeldung:
  
-  * git-Integration +<code> 
-  * Mulitline-Passwörter (mit Kommentaren etc.+scdaemon[29150]: apdu_send_simple(0failed: unknown status error 
-  * Baum-Struktur +scdaemon[29150]: Der Fingerabdruck kann nicht gespeichert werden: Kartenfehler 
-  * Suchen in Passwörtern und Namen des Eintrags +gpg: Fehler beim Schreiben des Schlüssels auf die Karte: Kartenfehler 
-  * Verschlüsselung der Passwörter für mehrere User-IDs+</code>
  
-Mittels git und der gpg-Encryption für mehrere User-Ids ist der Passwort-Manager Multi-User fähigFür einzelne Unterordner können auch verschiedene gpg-IDs zum Verschlüsseln genutzt werden: Auf diese Art können Zugriffsbeschränkungen gesetzt werden.+Gleiche Ursache: Extended APDU sind nicht unterstütztDas Pinpad wird wohl auch nicht unterstützt.
  
-Eine Konvertierung aus einer keepassx xml-Export-Datei gelingt mit folgendem Python-Script:+\\
  
-  * http://git.zx2c4.com/password-store/tree/contrib/importers/keepassx2pass.py 
  
--> howto zu [[intern:doku:passwordstore|pass]]