Dies ist eine alte Version des Dokuments!


GnuPG-Card Anleitung

Sogenannte Smart Cards können zur Authentifizierung, Verschlüsselung und Signatur mit unterschiedlichen Diensten und Programmen dienen.

Es gibt zwei unterschiedliche Konzepte:

Während erstere den Quasi-Standard für x509 Zertfikate und eine Public-Key-Infrastructure darstellen scheint die gnupg Variante unter Linux einfacher einzurichten und besser unterstützt zu sein.

Ähnliche Konzpete verfolgen auch

  • der Yubikey - eine Mischung aus USB-smartcard und One-Time-Password Generator
  • und der Cryptostick der Privacy-Foundation.

Ein Überblick über SmartCard, Cryptostick und Yubikey findet sich im Privacy-Handbuch

Unterschiede der verschiedenen Systeme:

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
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

Diese Anleitung beschäftigt sich nur mit der Einrichtung der Gnupg-Card.

Wir benötigen

Beides ist am einfachsten über den Shop von Kernel Concepts zu erhalten. Eine Gnupg-Card erhält auch, wer der Free Software Foundation Europe beitritt.

Als erstes installieren wir die Software. Wichtig: die gnupg-card funktioniert nur mit gnupg Version 2.

apt-get install gnupg2 scdaemon gpgsm pcscd

Wenn der PKCS#11-Support verwendet werden soll evtl. auch:

apt-get install gnupg-pkcs11-scd

In der 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.

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 hier beschrieben

Als schneller Workaroundzum Testen oder zur Nutzung innerhalb von Live-Systemen (zur sicheren Generierung der Schlüssel) kann das folgendermaßen getan werden

lsusb
Bus 001 Device 008: ID ... Card-Reader ....

damit wissen wir die Bus und Device ID:

ls -l /dev/bus/usb/001/008

als temporärer Workaround:

chmod 666 /dev/bus/usb/001/008

Es gibt grundsätzlich mehrere Möglichkeiten, die Schlüssel für die Karte zu erzeugen

  1. Keypair (Hauptkey) kann direkt auf der Karte erzeugt werden
  2. Ein Keypair wird außerhalb erzeugt werden. Anschließend werden Subkey generiert (für signieren, verschlüsseln und Authentifizieren) und auf die Karte importiert. Diese Variante ist die von der empfohlene und im Folgenden beschriebene.

Das Generieren der Schlüsselpaare findet vorzugsweise auf einem 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
  • 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 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:

Ist alles so weit vorbereitet, geht es jetzt an das eigentliche Erstellen der Schlüssel. In einem Terminal werden jeweils die markierten Kommandos ausgeführt.

Als erstes wird der Hauptschlüssel erstellt, der nur zum Signieren der Unterschlüssel dient:

gpg2 --gen-key

Bei der Auswahl:

RSA (sign only)
  • ggf. unbegrenzte Haltbarkeit

Erstellen der Unterschlüssel (Subkeys)

Mit

gpg --list-keys

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:

  1. Signieren
  2. Verschlüsseln
  3. Authentifizieren
gpg>  addkey

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:

Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
Your selection?

nutzen wir „8“ „Set your own capabilities“. Signieren und Verschlüsseln funktioniert zwar auch mit den vorgegebenen, Authentifizieren funktioniert aber nur mit benutzerdefinierten Fähigkeiten.

Jetzt kann mit den angegebenen Buchstaben jeweils eine Fähigkeit zu- oder abgeschaltet werden.

Zuletzt sichert ein

gpg> save

unsere Änderungen.

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

gpg> toggle

schaltet in die Ansicht der privaten Schlüssel um.

Jetzt markieren wir der Reihe nach unsere Subkeys:

gpg> key 1

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.)

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
  • 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 paperkey - ein Programm um ausdruckbare Daten zu erhalten und den key auf Papier auszudrucken.

gemalto usb shell token v2

  • funktioniert out of the box

Omnikey CardMan 6121

Lt. https://www.gnupg.org/howtos/card-howto/en/ch02s02.html sollte dieser Cardreader untersützt werden. Evtl. funktioniert dieser nicht zusammen mit PC/SC (pcscd). Muss mal mit dem internen gnupg-Treiber getestet werden.

  • Fehler
gpg: ccid_transceive failed: (0x10002)
gpg: apdu_send_simple(0) failed: invalid value

Hinweise zu dem Problem finden sich hier: http://askubuntu.com/questions/529535/omnikey-6121-cannot-write-to-openpgp-smartcard. Dort beschriebene Lösung hat aber nicht funktioniert.

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information