Unter Windows habe ich einen Kartenleser "Towitoko Chipdrive extern 320 V4.30 seriell" dazu benutzt die Telefonnummern auf einer SIM-Karte zu editieren.
Nun wollte ich diesen Kartenleser auch unter Ubuntu nutzen und habe im Netz nach einer Beschreibung gesucht. Hier in ubuntuusers, in der Wiki, habe ich auch eine Beschreibung gefunden:
http://wiki.ubuntuusers.de/Authentifizierung_OpenPGP_SmartCard
aber das hat so nicht unter Lucid funktioniert.
Bei kernel concepts http://shop.kernelconcepts.de/ habe ich eine OpenPGP-SmartCard V2.0 bestellt. Ich habe bei der Bestellung nicht aufgepasst und eine Karte mit "SIM Ausfräsung" bestellt, was nicht nötig gewesen wäre und ich meine, die Karte ist dann auch nicht so stabil.
Informationen zur Karte gibt es bei:
http://www.g10code.de/de/p-card.html
Nun zur Installation und Konfiguration der Software.
Pakete für den Zugriff auf Kartenleser installieren:
sudo aptitude install pcscd pcsc-tools
installierte Abhängigkeiten: libpcsc-perl libccid
sudo aptitude install opensc
installierte Abhängigkeiten: libopenct1 libopensc2
Für den Towitoko kartenleser wird das Paket libtowitoko2 benötigt.
sudo aptitude install libtowitoko2
Nicht benötigte Treiber deaktivieren und den Kartenleser nicht für andere Anwendungen sperren (nach den Einträgen mit vorangestellter Raute suchen und den ersten Eintrag darunter kopieren, beim zweiten Eintrag die Raute entfernen):
sudo gedit /etc/opensc/opensc.conf
# reader_drivers = openct, pcsc, ctapi; reader_drivers = pcsc; ... # Default: true lock_login = false;
Den pcscd neu starten:
sudo service pcscd restart
Angeschlossene Kartenleser listen:
opensc-tool --list-readers
Readers known about: Nr. Driver Name 0 pcsc Towitoko Chipdrive Reader 00 00
Prüfen ob Chipkarten erkannt werden:
pcsc_scan
Karte einstecken (z.B. Krankenkassenkarte, OpenPGP-SmartCard ...) und Karte ziehen. Programm beenden mit Strg + c
GnuPG 2
GnuPG in der Version 1 kann keine 3 2048er Schlüssel auf der Karte speichern (generate), es speichert 2 x 2048 und 1 x 1024.
Nur mit GnuPG 2 können die Schlüssel richtig (3 x 2048) auf die Karte geschrieben werden, deshalb nur gpg2 verwenden:
sudo aptitude install gnupg2 gpgsm xloadimage
xloadimage ist zum Passbild anzeigen
installierte Abhängigkeit: gnupg-agent libksba8 pinentry-gtk2
Aus Gmome ausloggen (abmelden) und wieder einloggen.
Informationen der OpenPGP-SmartCard anzeigen, die OpenPGP-SmartCard stecken:
gpg2 --card-status
Informationen zur Karte
Auslieferungszustand Karten-PIN's:
PIN: 123456
Admin PIN: 12345678
Wird die PIN 3 mal falsch eingegeben, kann die PIN mit der Admin-PIN entsperrt werden. Wird die Admin-PIN 3 mal falsch eingegeben ist die Karte unbrauchbar.
Karte personalisieren und Schlüssel erstellen
gpg2 --card-edit Befehl> help admin help name sex list
Neuen Schlüssel erstellen (nur bei einer neuen Karten oder wenn der vorhandene Schlüssel überschrieben werden soll):
generate Sicherung des Verschlüsselungsschlüssel ausserhalb der Karte erstellen? (J/n) J
Diese Sicherung wird benötigt, wenn die Karte defekt ist und die Schlüssel auf eine neue Karte geschrieben werden sollen.
Welche Länge wünschen Sie für den Signaturschlüssel? (2048) <-| Welche Länge wünschen Sie für den Verschlüsselungsschlüssel? (2048) <-| Welche Länge wünschen Sie für den Authentifizierungsschlüssel? (2048) <-|
Die Gültigkeit des Schlüssels kann auch 5 Jahre begrenzt werden muss aber nicht:
Wie lange bleibt der Schlüssel gültig? (0) 5y Ist dies richtig? (j/N) j ... Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? F
Eine gute Passphrase eingeben, diese wird benötigt, wenn z.B. die Karte defekt ist und eine Sicherungskopie des Schlüssels auf eine neue Karte geladen werden soll.
list
PIN's ändern:
passwd 1 ... 3 ... quit
Daten sichern
Die Daten auf einen USB-Stick sichern (usbxxx durch den richtigen Pfadnamen ersetzen) der mit dem Dateisystem ext3 oder ext4 Formatiert ist:
mv ~/.gnupg/sk_*.gpg /media/usbxxx/
Bei Beschädigung oder Verlust der Karte kann der gesicherte Schlüssel in eine neue Karte importiert werden.
Die Key-Id ermitteln und sichern:
gpg2 --card-status | grep 'sec>' > /media/usbxxx/Key-ID.txt
Ohne die Dateien ~/.gnupg/pubring.gpg und ~/.gnupg/secring.gpg sind (soweit ich das verstehe) die Schlüssel auf der Karte nicht mehr zu gebrauchen, diese beiden Dateien müssen auch gesichert werden!
cp -p ~/.gnupg/*ring.gpg /media/usbxxx/
Die Sicherheitskopie des Schlüssels an einem sicheren Ort (Stick) aufbewahren!
Man kann auch nachträglich ein Passbild in den öffentlichen Schlüssel einfügen (Format JPEG sollte 120x150 Pixel haben, max 240x288). Es ist auch möglich den Namen (Format: "Vorname Nachname") oder die E-Mail Adresse anstatt der Key-ID zu verwenden:
gpg2 --edit-key <Key-ID> addphoto quit
Danach sollten die Dateien pubring.gpg secring.gpg wieder auf dem USB-Stick gesichert werden.
Grafische Oberflächen
Seahorse (Zubehör > Passwörter und Verschlüsselung) kann zur Schlüsselverwaltung verwendet werden, es benutzt scheinbar gpg1 aber es funktioniert. Seahorse kann aber die PIN's der Karte nicht verwalten, klickt man auf "Kennwort ändern" erscheint eine Fehlermeldung.
PIN's ändern über die Grafische Oberfläche in einem Terminal:
Ubuntumenü > System > Einstellungen > Hauptmenü
Unter Menüs: Zubehör markieren | + Neuer Eintrag
Typ: Amnwendung im Terminal Name: Chipkarte PIN Befehl: /usr/bin/gpg2 --change-pin Kommentar: PIN der Chipkarte ändern links oben auf das Icon klicken und auswählen: gdu-encrypted-lock.svg
Zum verschlüsseln/signieren auf dem Desktop oder in Nautilus das Plugin installieren:
sudo aptitude install seahorse-plugin
Wenn Thunderbird als E-Mail Klient benutzt wird, kann das Enigmail Add-on installiert werden. Damit können E-Mail's verschlüsselt und signiert werden.
sudo aptitude install enigmail enigmail-locale-de
Den richtigen Pfad zu gpg2 einstellen:
OpenPGP > Einstellungen ...
Anderer Pfad: /usr/bin/gpg2
Authentifizierung, z.B. Anmelden bei Gnome mit OpenPGP-SmartCard
Benötigte Pakete, installieren:
sudo aptitude install libpam-poldi
installierte Abhängigkeiten: gpgsm libksba8
PAM Poldi vorbereiten:
Seriennummer der Karte und Benutzername in die Poldi-Datenbank eintragen (/etc/poldi/localdb/users), die Karte muss im Kartenleser stecken. Der Eintrag darf nicht in Anführungszeichen eingeschlossen werden, wie im Beispiel unten in der Datei!
poldi-ctrl -s > ~/ksnr.txt echo -e "`cat ~/ksnr.txt`\t$USERNAME" | sudo tee -a /etc/poldi/localdb/users cat /etc/poldi/localdb/users
Den öffentlichen Schlüssel der Karte auslesen und in /etc/poldi/localdb/keys/ unter dem Namen der Seriennummer der Karte speichern, die Schlüsseldatei muss dem Benutzer gehören, dem der öffentliche Schlüssel gehört:
poldi-ctrl -k > `cat ~/ksnr.txt` sudo mv ~/`cat ~/ksnr.txt` /etc/poldi/localdb/keys/ ll /etc/poldi/localdb/keys/ rm ~/ksnr.txt
GDM-Login und Bildschirmschoner konfigurieren
sudo gedit /etc/pam.d/gdm
#@include common-auth auth required pam_poldi.so
sudo gedit /etc/pam.d/gnome-screensaver
#@include common-auth auth required pam_poldi.so
Leider wird der Bildschirmschoner nicht aktiviert, wenn man die Karte aus dem Leser zieht.
Wenn man dem Benutzer das Passwort nicht mitteilt, kann er nur mit der Karte einloggen und nicht in der Konsole (Strg + Alt + F1) oder über SSH.
Wird die Anmeldung am PC über eine Smartcard durchgeführt, sollte auch darüber nachgedacht werden, das Bios zu schützen, damit beim Booten nicht einfach von einer Knoppix-CD oder einem USB-Stick ... gebootet werden kann!
Mögliche Situationen und Lösungen
1. Karte defekt oder verloren.
Eine neue Karte besorgen und die gesicherten Schlüssel wieder auf die Karte schreiben, dazu muss die Key-ID (XXXXXXXX), der Name oder die E-Mail Adresse
bekannt sein:
gpg2 --edit-key XXXXXXXX
Befehl> toggle bkuptocard /media/usbxxx/sk_*.gpg 1 2 3 quit Änderungen speichern? (y/N) y
Daten der Karte listen:
gpg2 --card-status
2. Festplatte defekt
Nach der Neuinstallation, die Dateien pubring.gpg secring.gpg vom USB-Stick in das ~/.gnupg -Verzeichnis kopieren:
cp -p /media/usbxxx/*ring.gpg ~/.gnupg/
In Thunderbird sollte der Assisten unter Opengpg > OpenGPG-Assistent ausgeführt werden, damit der neue Schlüssel als Standard verwendet wird.
OpenPGP-SmartCard V2.0 zurücksetzen (Factory reset)
Hier habe ich folgende Beschreibung gefunden:
http://lists.gnupg.org/pipermail/gnupg-users/2009-September/037413.html
ACHTUNG: Die Beschreibung setzt eine Karte der Version 2.0 voraus, NICHT mit einer Karte der Version 1 ausführen da die Karte sonst zerstört wird.
*** Frage ***
Hat das jemand von Euch auch so konfiguriert und wenn ja, mit anderen Kartenlesern?