ubuntuusers.de

OpenPGP-SmartCard V2.0 unter Lucid

Status: Ungelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

axelr

Anmeldungsdatum:
26. Oktober 2009

Beiträge: 11

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?

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Wohnort: Bremen

Hi!

Na, das sieht ja schwer nach eigenem Wiki-Artikel aus 😉.

Könntest du das nach den Vorgaben von Wiki/Syntax und Wiki/Referenz überarbeiten, (ist gar nicht so viel Aufwand!), und als Artikel fürs Wiki fassen? Das wäre echt gut!

so long
hank

axelr

(Themenstarter)

Anmeldungsdatum:
26. Oktober 2009

Beiträge: 11

Habe heute einen günstigen "USB Stick-Kartenleser" bestellt.

Wenn die Geschichte auch damit läuft, werde ich mir mal die Wiki/Syntax und Wiki/Referenz anschauen. Einen Wiki-Artikel zu erstellen, wenn ich das nur mit dem seriellen und nicht mehr erhältlichen Towitoko-Kartenleser getestet habe finde ich zu verfrüht.

Hoffentlich klappt es, also bis später
Axel

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Wohnort: Bremen

Hi!

axelr schrieb:

Habe heute einen günstigen "USB Stick-Kartenleser" bestellt.

Wenn die Geschichte auch damit läuft, werde ich mir mal die Wiki/Syntax und Wiki/Referenz anschauen. Einen Wiki-Artikel zu erstellen, wenn ich das nur mit dem seriellen und nicht mehr erhältlichen Towitoko-Kartenleser getestet habe finde ich zu verfrüht.

OK, das ist natürlich ein Argument 😉

Hoffentlich klappt es, also bis später

Wollen wir schwer hoffen!

So long
hank

rUMPel

Anmeldungsdatum:
23. Dezember 2006

Beiträge: 189

Hallo,

ich hab Konsolen & GDM- Login mit dem CryptoStick v1.2 (entspricht dem Chip der OpenPGP Card Version 2) unter Ubuntu 10.04 wie folgt zum laufen bekommen. OpenSC habe ich nicht (!) installiert. Ich gehe von einem funktionierenden CrytoStick mit drauf schon vorhandenen GPG-Schlüssel aus...

PAM-Poldi installieren

sudo apt-get install libpam-poldi

Seriennummer auslesen

poldi-ctrl -s > ~/ksnr.txt
echo -e "$( cat ~/ksnr.txt )\t${USER}" | sudo tee -a /etc/poldi/localdb/users

öffentlichen Schlüssel auslesen

poldi-ctrl -k > $( cat ~/ksnr.txt )
sudo mv ~/$( cat ~/ksnr.txt ) /etc/poldi/localdb/keys/
#ggf. die Besitzerrechte anpassen!
ls -l /etc/poldi/localdb/keys/
rm ~/$( cat ~/ksnr.txt )
rm ~/ksnr.txt

in /etc/pam.d/common-auth die Zeile

auth   [success=1 default=ignore]      pam_unix.so nullok_secure

durch

auth    sufficient      pam_poldi.so
auth    [success=1 default=ignore]      pam_unix.so nullok_secure

ersetzen.

Nun werde ich bei gesteckten CryptoStick beim Login (Konsole, GDM) oder Entsperren (gnome-screensaver) nach meinem PIN gefragt, ansonsten funktioniert als "fallback" mein normales Passwort.

Antworten |