(aktueller Source Code zum Auslesen der Krankenversicherungskarte)
Wollten Sie schon immer mal wissen, was wirklich auf Ihrer Krankenversicherungskarte steht ? Oder interessieren Sie sich einfach nur für Chipkarten-Technik unter Linux ? Dann ist dieser Artikel genau der richtige Einstieg für Sie !
Es gibt mittlerweile eine ganze Reihe von Chipkarten-Laufwerken, die
von Linux unterstützt werden. Unter anderem werden alle Laufwerke von
Towitoko (http://www.towitoko.de), die
die Bezeichnung CHIPDRIVE in ihrem
Namen führen und an der seriellen Schnittstelle angeschlossen werden
können, unterstützt. Weitere Hersteller kostengünstiger
Chipkarten-Terminals sind:
Es gibt drei grundlegende Kartentypen:
Da die oben angeführten Laufwerke nur die beiden letzten Typen unterstützen, gehe ich nicht weiter auf Magnetkarten (z.B. EC-Karten, Kreditkarten) ein.
Prozessorkarten sind Chipkarten, die einen eigenen Microprozessor, RAM, ROM und EEPROM (Electronically Erasable Read Only Memory) besitzen, um damit anspruchsvolle Anwendungen zu realisieren. Programmiert werden diese Karten in der Regel mit JAVA oder Basic-Dialekten programmiert, und die Programme werden im EEPROM abgelegt.
Speicherkarten besitzen kaum eigene Intelligenz und wenn, dann beschränkt sich diese auf eine Sicherung der gespeicherten Daten vor unbefugtem Zugriff. Anwendungsfelder dieser Karten sind z.B. Krankenversicherungskarten oder Telefonkarten.
Es gibt aber auch kontaktlose Chipkarten, wie sie z.B. von Legic (http://www.legic.de) angeboten werden. Diese eignen sich besonders für sicherheitskritische Bereiche wie Authentisierung oder bargeldlosen Zahlungsverkehr. Diese Karten sind deutlich komplexer, und auch die notwendige Hardware ist deutlich teurer. Der Vollständigkeit halber seien sie aber hier erwähnt.
Weitere Informationen zu Chipkartentypen sind unter http://www.heise.de/ix/artikel/2000/12/152/04.shtml zu finden.
Da ich zwei Towitoko Chipdrives mirco 120 besitze (das Linux-Pack aus
dem Online-Store von Towitoko), beziehen sich die weiteren Ausführungen
auf diese Modelle. Bei dem Linux Pack sind zwei Chipkarten enthalten:
eine Speicherkarte mit 256 Bytes Kapazität und eine Prozessorkarte mit
2048 Bytes Kapazität. Damit kann man wunderbar experimentieren.
Wer Kunde der Dresdner Bank war oder ist, kann sich dort für das Online-Banking registrieren und bekommt exakt das von mir hier verwendete Chipdrive micro 120 - kostenlos. Und benutzen muß man es ja nicht für das Online-Banking (wenn man etwas paranoid ist oder dem Online-Banking nicht vertraut ,-).
Um das Chipdrive unter Linux zu verwenden, benötigt man einen Treiber für das Laufwerk. Dieser übernimmt die Ansteuerung der seriellen Schnittstelle und stellt eine komfortable API (Application Programming Interface) zur Verfügung - die CTAPI (Card Terminal Application Programming Interface). Der Treiber ist hier erhältlich (oder lokal bei uns).
Der Treiber wird mit
>> tar -zxvf towitoko.tar.gzentpackt und danach im Towitoko-Verzeichnis mit
>> ./configure && makekonfiguriert und kompiliert.
make install
aus, um die Treiber an die richtige Stelle zu kopieren. Danach sollte man ein
ldconfig
ausführen um sicherzustellen, dass die neue Bibliothek auch gefunden
wird.
Jetzt kann man mit der Entwicklung eigener Programme beginnen. Es empfiehlt sich das Test-Programm, das den Towitoko-Treibern beiliegt, zu begutachten. Es sind da viele Zugriffe auf Chipkarten bereits implementiert - aber nur spärlich dokumentiert. Hier empfiehlt es sich, die Dokumentation zur CTAPI zu lesen. In dieser Dokumentation sind alle verfügbaren Befehle ausführlichst dokumentiert. Die Programmierung gestaltet sich insbesondere deshalb einfach, da nur drei Befehle zur Verfügung stehen:
Der prinzipielle Aufbau eines CT_data-Befehls ist wie folgt:
CT_data(ctn,dad,sad,commands,command,response)wobei die Parameter wie folgt definiert sind:
Nach dem ich auf freshmeat.net (http://www.freshmeat.net) kein (funktionierendes) Programm gefunden habe, mit dem man schnell und einfach seine Krankenversicherungskarte auslesen kann, habe ich dies als Beispiel implementiert.
medical-card-reader.c und die zugehörige Makefile
Die Dokumentation dazu findet sich im Source Code. Die Abhängigkeiten sind:
Der prinzipielle Aufbau des Programms ist wie folgt:
Da die Krankenversicherungskarten keinen Schreibschutz haben, habe ich keine Funktion zum Schreiben auf die Chipkarte implementiert. Wenn beabsichtigt ist, die Daten auf der Karte zu manipulieren, ist darauf zu achten, die Prüfsumme korrekt zu schreiben. Wie sich diese Prüfsumme errechnet, ist unter http://themen02.mytoday.de/user/member/chipcard/ (Download ganz unten) nachzulesen.
Der dort zum Download angebotene Source Code kompiliert allerdings (bei mir) nicht, aber die Funktion zur Berechnung der Prüfsumme ist enthalten. Achso, es dauert ungefähr zwei Wochen bis man von seiner Krankenkasse eine neue Karte zugestellt bekommt....*seufz*
Als weitere Anwendungen für Chipkarten sind denkbar:
Viel Spaß beim Spielen und Programmieren wünscht Euch Matthias Kranz
Treiber:
Dokumentation:
Informationen zu Kartenlesern:
Informationen zur Krankenversicherungskarten und Telefonkarten:
Software:
Newsgroups: