Die Absicherung von Bank-Transaktionen ist eine große Herausforderung. Wir alle sind dankbar, dass wir uns oft den Weg zum Geldinstitut mit den wohl merkwürdigsten Öffnungszeiten sparen können. Ebenso sind wir froh, dass die Zeiten der TAN-Listen, auf denen wir mit dem Stift nach und nach Zahlenkolonnen ausgestrichen haben, vorbei sind.
Aber was ist heute noch die Herausforderung bei Bank-Transaktionen?
Die Unveränderbarkeit der Transaktionsdaten
Der Bankkunde teilt der Bank über ein Webinterface mit, wieviel Geld an welches Konto geschickt werden soll. Ein Trojaner, den sich der Benutzer im Browser eingefangen hat, kann diese Daten verändern. Kurz gesagt, würde der Bankkunde 100 Euro für Konto 1234567890 eingeben und überweisen wollen und der Trojaner im Browser würde nach dem Klick auf den Button “Überweisung senden” ungesehen daraus 10.000 Euro für Konto 666.666.XX machen. Die Bank bekommt von dem Vorfall im Browser des Benutzers nichts mit. Sie erhält die Daten 10.000 Euro für 666.666.XX und muss annehmen, dass dies das ist, was ihr Kunde will.
Geld weg.
TAN-Listen und OTP-Token
In früheren Zeiten wurden TAN-Listen verwendet. Manche Bank (die sich eher im nicht-deutschsprachigen Raum befindet), setzt auf OTP-Token. Doch TAN-Listen (obwohl bisweilen auch anderes behauptet wird) und OTP-Token können die Unveränderbarkeit der Transaktionsdaten nicht sicherstellen. Der OTP-Token kann dazu dienen, dass die Bank weiß, dass diese Transaktion von genau dem Bankkunden, der im Besitz dieses Gerätes ist, diese Transaktion angestoßen wurde, jedoch kann die Bank nicht sicher wissen, dass die Transaktionsdaten von einem Trojaner im Browser oder anderen Angriffen verändert wurden, ohne dass der Bankkunde und ohne dass die Bank dies weiß.
Es besteht keine kryptographische Verbindung zwischen den Transaktionsdaten und dem Einmal-Passwort.
OCRA: Die Verbindung zwischen Transaktion und TAN
Hier setzt z.B. der OATH Challenge Response Algorithm (kurz OCRA) an, der in RFC 6287 definiert ist. OCRA wurde genau wie HOTP und TOTP von der Initiative for Open Authentication definiert. Grob gesagt ist OCRA ein etwas erweiterter HOTP-Altgorithmus.
Beim HOTP-Algorithmus ist das einzige Eingangsdatum ein Zähler, der kontinuierlich hochgezählt wird. Zusammen mit einem geheimen Schlüssel (der in diesem Fall den Besitz repräsentiert) wird nun ein 6 oder 8-stelliges Einmalpasswort berechnet. D.h. das Einmalpasswort hängt ab vom geheimen Schlüssel und von dem Eingangsdatum “Zähler”. (Für die, die lieber Dinge wie HMAC und mod lesen, sei hier auf das RFC4226 verwiesen).
Grob gesprochen können im Falle von OCRA noch mehr Daten außer dem “Zähler” in den Algorithmus hineingepackt werden. So zum Beispiel die Kontonummer des Empfängers und der zu überweisende Betrag. Das aus dem OCRA-Algorithmus resultierende Einmalpasswort ist nun also abhängig vom geheimen Schlüssel und den Transaktionsdaten. Andere Transaktionsdaten generieren ein anderes Einmalpasswort.
Wie kann man sich dies nun bei der Überweisung zu Nutze machen?
Die Bank händigt dem Kunden einmalig einen geheimen Schlüssel aus. Entweder in Form eines Hardware-Gerätes oder einer Smartphone-App. Die Bank kennt den geheimen Schlüssel des Kunden.
Der Kunde gibt nun auf der Banking-Website die Transaktionsdaten ein. Gleichzeitig überträgt er die Transaktionsdaten an sein Gerät (mit dem geheimen Schlüssel). Diese Übertragung könnte auch manuell erfolgen, es sind aber viele unterschiedliche Methoden mit QR-Code, Netzwerk oder Bluetooth denkbar, die die Bedienfreundlichkeit erhöhen.
Auf dem Gerät kann der Kunde nochmal überprüfen, ob dies die richtigen Transaktionsdaten sind, falls sich ein Angreifer auch in diesen Übertragungsweg eingeklinkt hätte. Nur wenn es die richtigen Daten sind, lässt er das Gerät die TAN berechnen und er fährt mit der Überweisung fort. Nun gibt er die TAN in die Banking Webseite ein und die Daten werden zur Bank geschickt.
Die Bank erhält die Transaktionsdaten und die TAN. Die TAN hängt aber genau von den Transaktionsdaten ab, die der Kunden nochmal auf dem Gerät verifiziert hat. Die Bank errechnet mit dem geheimen Schlüssel des Kunden und den erhaltenen Transaktionsdaten ebenfalls die TAN. Sollte sich ein Angreifer eingeklinkt und die Transaktionsdaten auf dem Weg zur Bank verändert haben, so erhält die Bank eine andere TAN als der Kunde geschickt hat und wird die Transaktion nicht durchführen.
In diesem Szenario ist jede einzelne Transaktion kryptographisch gesichert. Etwas provokativ gesprochen kommt es gar nicht so sehr darauf an, die Online-Zugangsdaten zu schützen, weil ohne das Gerät mit dem geheimen Schlüssel sowieso keine kryptographisch gesicherte Transaktion durchgeführt werden kann.
privacyIDEA, OCRA und DisplayTAN
privacyIDEA unterstützt schon lange den OCRA Algorithmus in Form des TiQR tokens. In Version 2.20 wurde die Anwendung des OCRA-Algorithmus derart erweitert, dass bspw. die DisplayTAN-Karte problemlos genutzt werden kann.
Banken brauchen also nicht das komplette Schlüsselmanagement in ihre Web-Applikation zu integrieren sondern können die OCRA-gesicherte TAN erzeugen über eine einzige einfache REST API an privacyIDEA auslagern.
Die DisplayTAN-Karten sind für den Bankkunden sehr attraktiv, da sie die eigentliche Bank-Karte komplett ersetzen können aber zusätzlich die Nutzung des sicheren TAN-Verfahren ermöglichen.