OpenHBCI #

HBCI ist ein Datenübertragungsstandard, der von deutschen Banken entwickelt wurde, um HomeBanking-Bankgeschäfte erledigen zu können. Er hat sich in Deutschland weitgehend etabliert. Unter Linux gibt es eine Implemetierung namens OpenHBCI (http://openhbci.sourceforge.net). Diese unterstützt leider nicht alle Verschlüsselungs- und Authentifizierungsverfahren. Näheres dazu gibts auf der Website. In der Praxis sind die beiden unterstützten Verfahren mit DDV-Karten und RDH-Dateien (Disketten) jedoch wohl recht weit verbreitet. Also keine Angst!

Funktionsweise #

Im Prinzip funktioniert die Authentifizierung per HBCI ungefähr so: Die Bank schickt dem Kunden einen sog. "INI-Brief". In diesem steht eine Kundennummer und ein Hash mit mehreren Hex-Zahlen. Der Kunde nimmt nun sein Banking-Programm, trägt dort die Kundennummer, BLZ und den Namen des Banken-HBCI-Servers ein. Dieses Programm besorgt sich nun übers Netz den öffentlichen Schlüssel der Bank. Dieser sollte anhand des Hashs aus dem INI-Brief der Bank verglichen werden (Stimmt er überein, hat kein Hacker den Bank-Server übernommen.). Danach erzeugt das Programm einen eigenen (geheimen) Schlüssel für den Kunden und sendet diesen der Bank. Daraufhin wird ein INI-Brief für den Kunden erzeugt und ausgedruckt. Den unterschreibt der Kunde (sozusagen "rechtsgültig") und schickt ihn der Bank. In diesem steht ein Hashwert, den die Bank nun mit dem Schlüssel vergleicht, den sie übers Netz bekommen hat. Stimmt er überein, ist die Authentifizierung abgeschlossen. Der Bankmitarbeiter kann den HBCI-Zugang für das Konto freigeben.

Nun kann man alle gängigen Abfragen und Transaktionen online durchführen. Der private Schlüssel ist immer nochmal mit einer PIN geschützt, so daß der Kunde bei jedem Zugriff auf den geheimen Schlüssel dies nochmals mit der PIN bestätigen muss.

Chipkarte / ChipkartenLeser #

Bisher war nur die Rede von einem "privaten" Schlüssel des Kunden. Dieser besteht aus einer RSH-verschlüsselten Datei, die man am besten auf eine Diskette schreibt, die man herausnehmen und wegschliessen kann. Damit ist der Kontozugang durch die Diskette und die PIN geschützt.

Allerdings kann eine Diskette natürlich immer dann vom "Feind" gelesen werden, wenn man sie in den Rechner steckt (und ohne dies ist sie ziemlich wertlos). Ausserdem kann natürlich auch jemand theoretisch meine Tastatureingaben "mitschneiden" und so an meine PIN gelangen. Wer seinen Linux-Rechner immer 100%ig unter Kontrolle hat, braucht da natürlich keine Angst zu haben. Alle anderen (d.h. jeder, der seinen Rechner ab und zu ans Internet anschliesst...) können die Sicherheit auch durch einen Chipkarte (mit ChipkartenLeser) erhöhen.

Hier liegt der private Schlüssel auf der Karte. Die Karte verschlüsselt selbständig die Daten - ohne daß der Schlüssel in den Computer gelangt. Dazu benötigt die Karte lediglich die PIN. Bei sog. "Klasse-1-Lesern" (also allen normalen handelsüblichen billig-Lesern) kommt diese PIN vom Homebanking-Programm, das den User jeweils auffordert, diese einzugeben. Bei sog. "Klasse-2-Lesern" ist am Leser eine Tastatur angebracht, in die die PIN eingegeben wird. Hier hat ein Hacker, selbst wenn er den Rechner komplett übernommen hat, gar keine Chance mehr, den Schlüssel oder die PIN abzugreifen.

Die Erst-Authentifizierung läuft im Prinzip identisch zur Schlüssel-Datei ab. Es ist lediglich so, daß der private Schlüssel direkt in der Chipkarte verschwindet und damit nie mehr an die Öffentlichkeit gelangt (bzw. überhaupt erst in der Karte erzeugt wird, das weiss ich auch nicht so genau). Ansonsten ist das Verfahren das Gleiche. Für Linux heisst das allerdings, daß noch einige Hardware-Treiber und Bibliotheken mehr vorhanden sein müssen (und ein ChipkartenLeser). Aber wir lassen uns doch nicht von ein paar Debian-Paketen erschrecken, oder?!?

Installation unter Debian #

Zuerstmal sollte der ChipkartenLeser installiert sein und mit dem Tool "hbcicard" sollte die Karte erkannt werden. Falls man nicht mit Chipkarte, sondern mit Schlüsseldatei arbeiten will, kann man das natürlich auch weglassen. Dann die benötigten Debian-Pakete installieren:

  apt-get install aqmoney libopenhbci libopenhbci-plugin-ddvcard

aqmoney ist ein Kommandozeilen-HomeBanking-Programm, das von den OpenHBCI-Entwicklern benutzt wird, um die Bibliothek zu testen. Ich installiere es hier als "kleinsten gemeinsamen Nenner" mit. Ausserdem benutzen meine Beispiele unten dieses Programm. Wer ein anderes Programm benutzt: Es kann nur einfacher werden! Insbesondere für GNUCash kann ich sagen, daß die entsprechenden Dialoge wirklich einfach zu bedienen sind. Trotzdem kann es nicht schaden, hier zu sehen, wie es "unter der Haube" funktioniert. :-) (Sind wir hier die LUG oder die LUG???)

Initialisierung eines Kontos mit Schlüsseldatei #

Als meinen ersten Gehversuch habe ich eine Kennung mit Schlüsseldatei bei der Volksbank Krefeld erzeugt. Die zuständigen Herren in der Beratung zum "electronic Banking" waren recht freundlich aber (leider, aber zu erwarten) nicht sehr hilfreich, nachdem ich das Wort Linux benutzt hatte. Dennoch haben sie Fragen zum Verfahren sehr kompetent beantwortet und haben mir auch sofort mitgeteilt, daß eine Verschlüsselung per RDH-Datei kein Problem darstellt. Das ist doch schonmal kundenfreundlich. Gut! Also bin ich nach einigem Lesen (der Website und der manpage) und herumprobieren auf folgenden Ablauf mit aqmoney gekommen.

Dazu sei (für nicht-Profis) übrigens nochmals gesagt, daß alle diese Schritte auch mit dem HomeBanking-Programm GNUCash in einer hübschen graphischen Umgebung möglich sind, die einem die komplizierten Schritte ziemlich vereinfacht. Der einzige kurze Knackpunkt war der Name des Bankservers. Wenn Ihr Euren INI-Brief bei der Bank bestellt, solltet Ihr ggf. direkt danach fragen... (Ich vermute, daß gängige Windows-Homebanking-Programme in der meist enthaltenen BLZ-Datenbank diese Serveradressen eingebaut haben)

Um eine Authentifizierung zu bekommen, sind folgende Schritte nötig:

  • Anruf oder Besuch bei der Bank, damit man einen INI-Brief zugeschickt bekommt
  • Öffnen dieses INI-Briefs und sammeln der nötigen Informationen
hier sind die Bankleitzahl, die Benutzerkennung und der Hashwert wichtig. Dazu benötigt man noch den Server des Kreditinstituts (der bei der Volksbank Krefeld nicht dabei stand, aber nach einigem Raten "hbci.gad.de" ist. "GAD" ist das Rechenzentrum der Volksbanken und dürfte bei allen anderen Volksbanken auch gehen.) Im Zweifel die Bank löchern.
  • Erzeugen eines neuen Benutzers für aqmoney mit einer neuen Schlüssel-Datei
<tt>aqmoney --command="createuser" --institute=32060362
--user=1234567890123456789 --medium=/floppy/tbayen.medium --mediumtype=file --server="hbci.gad.de"</tt>
  • Setzen der Permissions, damit die Schlüsseldatei nicht von anderen Usern gelesen werden kann
<tt>chmod go-rwx /floppy/tbayen.medium</tt>
  • Holen des öffentlichen Instituts-Schlüssels
<tt>aqmoney getkeys --institute=32060362
--user=1234567890123456789</tt>
  • Versenden des eigenen öffentlichen Schlüssels
<tt>aqmoney sendkeys --institute=32060362
--user=1234567890123456789</tt>
  • Ausgabe des INI-Briefs der Bank zum Vergleich mit dem (unterschriebenen) Original der Bank in Papierform
<tt>aqmoney iniletter --institute=32060362
--user=1234567890123456789 --key=institute</tt>
  • Ausdruck des eigenen INI-Briefs in Papierform (zum Versand an die Bank)
<tt>aqmoney iniletter --institute=32060362
--user=1234567890123456789 --key=user --outfile="iniletter.txt"</tt>
<tt>lpr iniletter.txt</tt>
-- ThomasBayen

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-2) was last changed on 14-Nov-2006 09:40 by MarkusMonderkamp