Chipkarten-Leser #

Chipkarten werden für verschiedene Zwecke eingesetzt. Zumeist handelt es sich um Identitätsnachweise durch Karten mit Verschlüsselungsfunktion (HBCI-Karte, Pay-TV-Karte), oder Guthabenkarten (Geldkarte, Telefonkarte) aber auch Speicherkarten mit einigen Kilobyte Daten (Krankenkassen-Karte) sind erhältlich. Meine eigene Intention war die Nutzung von OpenHBCI, um HomeBanking damit zu betreiben.

Die Grundlage, um Chipkarten unter Linux lesen zu können, ist die libchipcard. Auf deren Homepage steht auch eine Liste der unterstützten Kartenleser. Ich habe bisher Erfahrung mit folgenden Geräten, die bei mir gut liefen:

  • Towitoko Chipdrive micro (serieller Anschluss mit Stromversorgung über PS/2-Stecker)

Die Bibliothek unterstützt serielle und USB-Leser und hat auch Unterstützung für Klasse-2-Leser (mit Tastatur zur PIN-Eingabe). (Erst Klasse-2-Leser bieten die 100%ige Sicherheit z.B. bei HomeBanking per HBCI).

Installation #

Das Problem mit nicht getesteten Chipkarten-Lesern ist, daß es einen (unter Linux lauffähigen) Hardware-Treiber geben muss, der eine sog. CT-API Schnittstelle zur Verfügung stellt. Für Towitoko-Geräte findet sich ein solcher Treiber Opensource unter http://www.geocities.com/cprados/. Also vor dem Kauf eines neuen Lesers eventuell dort mal nachsehen, welche Geräte unterstützt werden.

Unter Debian-Linux habe ich nun insgesamt die folgenden Pakete installiert:

  apt-get install libtowitoko2 chipcard-tools libchipcard20 libchipcard-doc

Konfiguration #

Auf der Webseite http://www.libchipcard.de gibt es auch Konfigurations- und Anzeigeprogramme für KDE. Leider sind diese nicht als Debian-Paket verfügbar. Deshalb habe ich es von Hand gemacht. Dafür habe ich in der Datei /etc/libchipcard/libchipcardd.conf folgende Änderungen vorgenommen:

  enabled="1"
  port="COM1"     (mein Leser sitzt an der ersten seriellen Schnittstelle)

Danach habe ich mit /etc/init.d/chipcard-tools restart den Chipcard-Server neu gestartet.

Nun kann man z.B. eine Geldkarte nehmen (hat wohl jeder in Form der EC-Karte, eignet sich also gut zum testen) und mit geldkarte loaded den enthaltenen Betrag ansehen. Wer keine Geldkarte hat, kann auch eine Krankenkassen-Karte mit memcard read -s 128 lesen. In dem Zeichensalat sollte der Name der Krankenkasse auftauchen. Wer soweit ist, hat auch schon gewonnen.

Probleme #

Bei Schwierigkeiten lohnt sich ein Blick mit dpkg -L chipcard-tools, welche Programme alle mitgeliefert werden. Dabei ist auch z.B. readertest, mit dem man den Reader ohne den Server testen kann (nicht vergessen, diesen vorher zu beenden) oder auch ctfstool, mit dem man Speicherkarten lesen und schreiben kann.

Unter Umständen kann es auch einfacher sein, die graphischen Konfigurationsprogramme zu benutzen. Bis man diese unter Debian selbst kompiliert hat, hat man IMHO jedoch schneller die Kommandozeilentools "besiegt". Wer eine andere Distribution hat, kann jedoch mal nach <nowiki>KCardSetup</nowiki> suchen und dieses benutzen.

-- ThomasBayen

aktuelle (Ende 2007) Installation mit Netzwerkzugriff #

Ich habe mit einer neuen Installation ein wenig herumexperimentiert, weil ich den Chipkarten-Reader an einen anderen Rechner (einen ThinClient) anschliessen wollte, als den, auf dem die Applikation läuft. Das lief recht gut, half mir aber letztlich nicht, weil die von mir verwendete HBCI4Java-Bibliothek nicht den chipcardd benutzt, sondern direkt auf den Kartenleser zugreift. Dennoch wollte ich die gewonnenen Erkenntnisse hier festhalten:

Chipkarten-Zugriff #

Die Chipkarte soll, wenn möglich, nicht an diesem Rechner angeschlossen werden müssen. Erstens handelt es sich um ein virtuelles System im XenServer und zweitens soll die Chipkarte ja nicht am Server, sondern am Arbeitsplatz eingesteckt werden können.

Chipkarten-Server #

Dies ist der Rechner, an dem das Chipkarten-Terminal hängt. Hier habe ich folgendes installiert:

  aptitude install libchipcard2-tools libtowitoko2

(letzteres ist der Treiber zu meinem konkreten Chipkarten-Terminal der Firma Towitoko). Ich habe allerdings auch mit einem Reinert SCT experimentiert, der auch klaglos lief.

Um den Reader jetzt einzubinden, kann eine Zeile wie diese nötig sein:

chipcardd2 addreader -C /etc/chipcard2-server/chipcardd2.conf --dtype tow_ctapi --rtype tow_cdm --rname towitoko --rport COM1

Viele (insbesondere USB-)Reader sollen aber auch von selbst erkannt werden (So auch mein serieller, wenn er über einen USB-RS232-Wandler angeschlossen ist, weshalb obige Zeile dann nicht nötig ist). Mit den Befehlen

  chipcard-tool list
  chipcard-tool check

kann man anzeigen, welche Reader die Client-Bibliothek erkennen kann und ob der Reader auch wirklich angesprochen werden kann. Bei Problemen mit der Einrichtung von neuen Readern oder anderem hilft ein Blick auf http://www.libchipcard.de .

Nachdem der Reader nun erstmal grundsätzlich erkannt wird, will ich ihn im Netzwerk freigeben. Dazu füge ich folgendes in /etc/chipcard2-server/chipcardd2.conf ein:

  server {
    typ="public"
    addr="192.168.1.8"
    port="55555"
  } # server

Chipkarten-Client #

  aptitude install libchipcard2-tools

Hier kann in /etc/chipcard2-server/chipcardd2.conf die enabled-Einstellung auf 0 gesetzt werden, da wir auf diesem System nur den Client benötigen.

Nun kommt in die Datei /etc/chipcard2-client/chipcardc2.conf der gleiche "server"-Block wie oben auf dem Server. Das war es dann auch schon. Man sollte zur Absicherung noch mit SSL und Authentifizierung durch Zertifikate arbeiten, was aber vielleicht nicht immer nötig ist, wenn man nur verschlüsselte oder virtuelle Netzwerke sowie eine gute Firewall benutzt.

Um nun testweise auf meine HBCI-Karte zugreifen zu können, habe ich folgendes gemacht:

  aptitude install libgwenhywfar38-dev libchipcard2-libgwenhywfar38-plugins
  gct-tool showuser -t ddvcard

Nun muss man die PIN seiner Karte bereithalten und kann einige Userdaten wie den Namen seiner Bank und seine Kundennummer lesen. Das sollte reichen, um die libchipcard für funktionsfähig zu erklären.

Verschlüsselung #

Der chipcardd bietet auch die Möglichkeit, die Verbindung zum Server SSL-verschlüsselt aufzubauen. Dies habe ich nicht getestet, empfehle es im richtigen Betrieb aber dringend, weil der Einsatz einer Chipkarte ja meinstens bedeutet, daß man es mit der Sicherheit ernst nehmen will. Soweit ich die Protokolle verstanden habe, ist Verschlüsselung übrigens nicht unbedingt nötig, wenn man HBCI mit einem Klasse-2-Leser nutzen will (also mit Eingabe der PIN an einem Pinpad auf dem Leser).

-- ThomasBayen

Tags:  Hardware

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-5) was last changed on 25-Jan-2008 13:08 by ThomasBayen