Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
public:gnupg:gnupg-card-howto [2015/03/26 15:59] – [Erfahrungen mit Kartenlesegeräten] jankow@datenkollektiv.net | public: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:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
- | * | + | * |
==== Best Practice (Nutzung von Haupt- und Subkeys) für gnupg ==== | ==== Best Practice (Nutzung von Haupt- und Subkeys) für gnupg ==== | ||
- | * http:// | + | * [[http:// |
- | * http:// | + | * [[http:// |
- | * http:// | + | * [[http:// |
- | * http:// | + | * [[http:// |
- | * https:// | + | * [[https:// |
- | * http:// | + | * [[http:// |
</ | </ | ||
===== Nutzung der Gnupg Card ===== | ===== Nutzung der Gnupg Card ===== | ||
- | * Die verschiedenen [[gnupg-card-usage|Möglichkeiten zum Einsatz der Karte]] | + | * Die verschiedenen [[: |
===== Grundsätzliche Infos über Smart Cards ===== | ===== Grundsätzliche Infos über Smart Cards ===== | ||
Zeile 29: | Zeile 32: | ||
Es gibt zwei unterschiedliche Konzepte: | Es gibt zwei unterschiedliche Konzepte: | ||
- | * Die "pki cards" (PKCS#11), siehe hier: [[https:// | + | * Die "pki cards" (PKCS#11), siehe hier: [[https:// |
- | * und die vor allem unter Linux sehr gut nutzbaren Gnupg-Cards [[https:// | + | * und die vor allem unter Linux sehr gut nutzbaren Gnupg-Cards [[https:// |
Während erstere den Quasi-Standard für x509 Zertfikate und eine [[http:// | Während erstere den Quasi-Standard für x509 Zertfikate und eine [[http:// | ||
Zeile 36: | Zeile 39: | ||
Ähnliche Konzpete verfolgen auch | Ähnliche Konzpete verfolgen auch | ||
- | * der [[http:// | + | * der [[http:// |
+ | - eine Mischung aus USB-smartcard und One-Time-Password Generator | ||
* und der [[https:// | * und der [[https:// | ||
Zeile 45: | 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, | + | |PKCS#11|De Facto Standard|komplizierter in der Einrichtung, |
- | Vor- und Nachteile sind z.B. hier diskutiert worden: http:// | + | Vor- und Nachteile sind z.B. hier diskutiert worden: |
</ | </ | ||
Zeile 62: | Zeile 66: | ||
* einen kompatiblen [[https:// | * einen kompatiblen [[https:// | ||
- | Beides ist am einfachsten | + | Beides ist am einfachsten |
===== Software installieren ===== | ===== Software installieren ===== | ||
Zeile 69: | 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 | ||
+ | </ | ||
<WRAP center round box> | <WRAP center round box> | ||
Wenn der [[http:// | Wenn der [[http:// | ||
- | | + | < |
+ | apt-get install gnupg-pkcs11-scd | ||
+ | </ | ||
</ | </ | ||
===== Card-Reader einrichten ===== | ===== Card-Reader einrichten ===== | ||
- | |||
In der [[https:// | In der [[https:// | ||
- | <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. </ |
- | 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. | + | |
- | </ | + | |
Das Device des Card-Readers muss die richtigen Dateirechte erhalten, damit die User darauf zugreifen können. Das erfolgt mittels udev und wird [[http:// | Das Device des Card-Readers muss die richtigen Dateirechte erhalten, damit die User darauf zugreifen können. Das erfolgt mittels udev und wird [[http:// | ||
Zeile 90: | 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 | ||
- | | + | < |
- | Bus 001 Device 008: ID ... Card-Reader .... | + | lsusb |
- | + | Bus 001 Device 008: ID ... Card-Reader .... | |
+ | </ | ||
damit wissen wir die Bus und Device ID: | damit wissen wir die Bus und Device ID: | ||
- | | + | < |
- | + | ls -l / | |
- | als temporärer Workaround: | + | </ |
- | | + | als temporärer Workaround: |
+ | |||
+ | < | ||
+ | chmod 666 / | ||
+ | </ | ||
===== Schlüssel erzeugen und auf Karte transferrieren ===== | ===== Schlüssel erzeugen und auf Karte transferrieren ===== | ||
Zeile 110: | Zeile 122: | ||
==== Hauptkey mit Subkeys ==== | ==== Hauptkey mit Subkeys ==== | ||
- | * Eine ausführlichere Anleitung (incl. Backup der keys findet sich hier: http:// | + | * Eine ausführlichere Anleitung (incl. Backup der keys findet sich hier: [[http:// |
- | Das Generieren der Schlüsselpaare findet vorzugsweise auf einem [[http:// | + | Das Generieren der Schlüsselpaare findet vorzugsweise auf einem [[http:// |
* vertrauensvolle Hardware | * vertrauensvolle Hardware | ||
- | * Live-System möglichst ohne Netzwerkverbindungen | + | * Live-System möglichst ohne Netzwerkverbindungen |
- | + | ||
- | 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 130: | 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 | + | < |
- | + | gpg --full-generate-key | |
+ | </ | ||
Bei der Auswahl: | Bei der Auswahl: | ||
- | | + | |
+ | < | ||
+ | RSA (sign only) | ||
+ | </ | ||
* ggf. unbegrenzte Haltbarkeit | * ggf. unbegrenzte Haltbarkeit | ||
Zeile 141: | Zeile 151: | ||
Mit | Mit | ||
- | | + | < |
+ | gpg --list-keys | ||
+ | </ | ||
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 | ||
+ | </ | ||
Im Anschluss generieren wir drei Subkeys für folgende Zwecke: | Im Anschluss generieren wir drei Subkeys für folgende Zwecke: | ||
Zeile 153: | Zeile 167: | ||
- Authentifizieren | - Authentifizieren | ||
- | | + | < |
+ | gpg> | ||
+ | </ | ||
- | 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** |
Bei der folgenden Auswahl: | Bei der folgenden Auswahl: | ||
Zeile 174: | 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 | ||
+ | </ | ||
unsere Änderungen. | unsere Änderungen. | ||
+ | ==== Backup ==== | ||
- | ===== Backup ===== | + | Dieser Schritt muss unbedingt vorgenommen werden, **bevor** |
- | + | ||
- | Dieser Schritt muss unbedingt vorgenommen werden, **bevor** die Subkeys auf die Karte transferriert werden, da das Kommando '' | + | |
* Der gesamte Keyring (Unterverzeichnis .gnupg) sollte nach der Prozedur auf ein verschlüsseltes Medium bzw. in einem Container gesichert werden. | * 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:// | + | * eine weitere Variante zum Backup von Keys ist [[http:// |
+ | - 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> | ||
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 | ||
+ | </ | ||
Ein | Ein | ||
- | | + | < |
+ | gpg> toggle | ||
+ | </ | ||
schaltet in die Ansicht der privaten Schlüssel um. | schaltet in die Ansicht der privaten Schlüssel um. | ||
Zeile 204: | Zeile 227: | ||
Jetzt markieren wir der Reihe nach unsere Subkeys: | Jetzt markieren wir der Reihe nach unsere Subkeys: | ||
- | | + | < |
+ | gpg> key 1 | ||
+ | </ | ||
und kopieren sie auf die Karte: | und kopieren sie auf die Karte: | ||
- | | + | < |
+ | gpg> keytocard | ||
+ | </ | ||
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 216: | 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 | ||
+ | </ | ||
+ | |||
+ | ==== Geheimen Schlüsselbund auf den Nutzer_innen Rechnern erstellen ==== | ||
+ | |||
+ | 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. | ||
+ | |||
+ | Während bei Smartcards, die von '' | ||
+ | |||
+ | < | ||
+ | gpg --card-status | ||
+ | </ | ||
+ | |||
+ | reicht, um Verweise auf die Karte zu generieren, muss bei '' | ||
+ | |||
+ | < | ||
+ | gpg2 --secret-keyring .gnupg/ | ||
+ | </ | ||
+ | |||
+ | in manchen Fällen funktioniert dies jedoch nur über den internen Befehl '' | ||
+ | |||
+ | < | ||
+ | $ gpg2 --card-edit | ||
+ | ... | ||
+ | gpg/ | ||
+ | ... | ||
+ | gpg: Total number processed: 1 | ||
+ | gpg: | ||
+ | $ gpg2 --card-status | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> Übrigens bei einer Erweiterung des öffentlichen Schlüssels mit neuen Schlüsseln, | ||
+ | |||
+ | ==== Karte wechseln ==== | ||
+ | |||
+ | Beim Ersetzen einer Karte muss folgendes beachtet werden: | ||
+ | |||
+ | - Die Keys müssen analog der Anleitung auf die neue Karte kopiert werden | ||
+ | < | ||
+ | - seit [[https:// | ||
+ | - Die zu den privaten Keys der Karte passenden Verweise müssen aus '' | ||
+ | - Danach müssen die Verweise auf die neue Karte wieder erstellt werden: '' | ||
+ | |||
+ | **Anzeigen der zur gnupg-Karte passenden Dateien unter '' | ||
+ | |||
+ | Das ist hier von Werner beschrieben: | ||
+ | |||
+ | gpg --with-keygrip -k KEYID | ||
+ | |||
+ | Die ausgegebenen Keygrips beziehen sich auf die Dateien unter: '' | ||
+ | |||
+ | rm '' | ||
+ | |||
+ | **Achtung: immer Backup des .gnupg-Verzeichnisses machen, damit nicht aus Versehen andere secret Keys gelöscht werden.** | ||
+ | ===== Stolperstellen ===== | ||
+ | |||
+ | gnupg sollte aus [[https:// | ||
+ | |||
+ | < | ||
+ | mv / | ||
+ | </ | ||
+ | |||
+ | beim Aufruf von | ||
+ | |||
+ | < | ||
+ | gpg2 --card-status | ||
+ | </ | ||
+ | |||
+ | gibts ggf. Beschwerden: | ||
+ | |||
+ | < | ||
+ | gpg: selecting openpgp failed: Nicht unterstütztes Zertifikat | ||
+ | gpg: OpenPGP Karte ist nicht vorhanden: Nicht unterstütztes Zertifikat | ||
+ | </ | ||
+ | |||
+ | Grund: Die Umgebungsvariable GPG_AGENT_INFO ist gesetzt. Erst ab Version 2.1 ignoriert gpg2 diese. Ein | ||
+ | |||
+ | < | ||
+ | unset GPG_AGENT_INFO | ||
+ | </ | ||
+ | |||
+ | verschafft Linderung und sollte ggf in den Startscripten untergebracht werden. | ||
+ | |||
+ | <WRAP center round tip 60%> Update für Debian Stretch: | ||
+ | |||
+ | 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. </ | ||
===== Erfahrungen mit Kartenlesegeräten ===== | ===== Erfahrungen mit Kartenlesegeräten ===== | ||
Zeile 222: | Zeile 336: | ||
Übersicht über unterstützte Kartenlesegeräte: | Übersicht über unterstützte Kartenlesegeräte: | ||
- | http:// | + | [[http:// |
Bei der Wahl eines Kartenlesegerätes [[http:// | Bei der Wahl eines Kartenlesegerätes [[http:// | ||
Ohne " | Ohne " | ||
+ | |||
+ | ==== Vollständig unterstützte Kartenleser ==== | ||
**[[http:// | **[[http:// | ||
Zeile 233: | Zeile 349: | ||
* funktioniert out of the box mit dem pcscd | * funktioniert out of the box mit dem pcscd | ||
+ | |||
+ | **[[http:// | ||
+ | |||
+ | Ein USB-Kartenleser mit Pinpad | ||
+ | |||
+ | * funktioniert out of the bos mit dem pcscd | ||
+ | |||
+ | ==== Nicht oder nicht vollständig unterstützte Kartenleser ==== | ||
+ | |||
+ | **[[https:// | ||
+ | |||
+ | Für diesen Kartenleser sind zusätzliche Treiber nötig, die sich in den folgenden Debian-Paketen finden: | ||
+ | |||
+ | < | ||
+ | apt-get install fxcyberjack libifd-cyberjack6 | ||
+ | </ | ||
+ | |||
+ | bzw. für Stretch: | ||
+ | |||
+ | < | ||
+ | apt-get install libifd-cyberjack6 | ||
+ | </ | ||
+ | |||
+ | Allerdings scheint trotzdem das Pinpad nicht unterstützt zu werden: [[https:// | ||
**[[http:// | **[[http:// | ||
Zeile 238: | Zeile 378: | ||
Ein USB-Kartenleser in USB-Stick Format ohne Keypad | Ein USB-Kartenleser in USB-Stick Format ohne Keypad | ||
- | Lt. https:// | + | Lt. [[https:// |
< | < | ||
Zeile 257: | Zeile 397: | ||
</ | </ | ||
- | Gleiche Ursache: Extended APDU sind nicht unterstützt. | + | Gleiche Ursache: Extended APDU sind nicht unterstützt. |
+ | |||
+ | \\ | ||
+ |