Angriffe gegen Smartcards
Scosh

1. Einleitung

Smartcards oder auch Prozessorkarten genannt tauchen immer häufiger im täglichen Leben auf. Die wohl bekanntesten Einsatzformen dieser Karten sind Simkarten (Handytelephonkarten) und die Geldkarte (die goldenen Kontakte auf der ec-card). Darüber hinaus existieren aber zahlreiche weitere Anwendungen unter anderem zur Realisierung von Zugangskontrollen für Gebäude und Computerterminals, zur Speicherung von personenbezogenen Daten und Passwörtern, Mautsysteme, ect. .

Die Flexibilität dieser Karten ist in bezug auf ihre Größe unübertroffen und ihre Einsatzmöglichkeiten aus diesem Grund auch weit gestreut.

Mit dem vorliegenden Text möchte und kann ich daher auch nicht auf alle Anwendungsgebiete eingehen, desweiteren werden auch keine Grundlagen der Smartcardtechnologie erläutert (sondern vorausgesetzt ;-) ).

Für Informationen zu den Grundlagen dieser Technologie kann ich persönlich das Buch von Rankl/Effing [1] empfehlen, welches eine gute Grundlage vermittelt. Weiterhin sei auf die Webseiten der scard Organisation [2] und der gsho [5] hingewiesen und eine Suche im Web lohnt sich allemal ...

Desweiteren werden in diesem Text keine detailierten Anleitungen zu finden sein, wie man eine Telephonkarte klont, eine Premierekarte freischaltet ...

... vielmehr sollen generelle Angriffsmöglichkeiten diskutiert werden, die mit einem geringen finanzielllen Aufwand zu realisieren sind.

So long ...

2. Hardware

Um mit Smartcards arbeiten zu können, benötigt man zuerst mal ein Interface, welches die Smartcard mit einem Computer verbindet. Die Baupläne der hier vorgestellten Hardwarelösungen sind im Netz frei verfügbar und nutzen die serielle Schnittstelle.

Die holländische Gruppe HIP [6] realisierte einen einfach zu handhabenden Kartenleser mit dem schönen Namen DumbMouse. Dessen Baupläne sind unter:

http://cuba.xs4all.nl/~hip/dumbmouse.html

zu finden. Dieses Interface ist kompatibel zur Smartmouse.

Der CCC entwickelte ein Gerät, mit dem man nicht nur Karten (aller Art) sondern auch eeproms bearbeiten kann. Näheres unter:

http://www.ccc.de/Library/HPA/ChipCards/UniProg/index.html

Der UniProg ist etwas komplizierter aufzubauen, aber auch vielseitiger einzusetzen.

Um Karten nach einem erfolgreichen Angriff zu klonen benötigt man ein SEASON - Interface (oft auch inverse reader genannt). Dieses Gerät wird an die serielle Schnittstelle angeschlossen und verhält sich mit entsprechender Software angesteuert fast wie eine richtige SmartCard.

Die Erweiterung der SEASON ist die SEASON II (SEASON Typ 2 oder auch Logger). Dieses Gerät wird genau wie die SEASON über die serielle Schnittstelle an den Computer angeschlossen, hat aber zusätzlich noch einen Kartenadapter, in den eine SmartCard eingeschoben wird. Mit dieser Konfiguration ist es möglich, den Datenverkehr zwischen Terminal und SmartCard aufzuzeichnen (die entsprechend richtige Baudrateneinstellung vorausgesetzt).

Zusätzlich zu der schon beschriebenen Hardware können ein Oszilloscope und eventuell ein Logicanalyser gute Dienste leisten (wenn man damit umgehen kann).

3. Software

Die scard - Organisation [2] stellt das sio - Paket zur freien Verfügung, das eine Bibliothek zur einfachen Ansprache der oben beschriebenen Reader zur Verfügung stellt. Diese Bibliothek sollte auf den meisten UNIX Systemen compilierbar sein. Mit im Paket ist eine einfaches aber feines Programm mit dem Namen stest. Ich empfehle einen Blick in die Anleitung.

Für einige der beschrieben Angriffe ist manchmal ein direkter Zugriff auf PC - Hardware erforderlich. Beispielweise zum Einstellen einer seltsamen Baudrate oder auf Grund von Zeitproblemen. In diesem Falle ist ein pures DOS unschlagbar.

Im Netz kursieren zahlreiche (gute) Programme zum Auslesen und Schreiben von SmartCards eine der guten Seiten ist die von Goran Vlaski [7]. Ein Blick lohnt sich.

4. Angriffe

4.1 Einleitung

Ahm ... was soll ich hier schreiben ?

Also, im folgenden werden nun einfache und einfachste Angriffe auf SmartCards beschrieben, welche mit den oben erwähnten Tools und Geräten durchführbar sind. Darüber hinaus existieren noch eine große Anzahl weiterer Möglichkeiten, die aber einen Zugang zu richtig teuren Geräten vorausetzen und dadurch für einen "Hobbyhacker" ausscheiden.

Nichts desto trotz sollte man aber über diese Möglichkeiten informiert sein. Ein Blick in das Papier von Anderson/Kuhn [3] ist da ein netter Anfang.

Also mit Blick auf den Schreibtisch und das vorliegende "lowcost" Equipment nun zu den einfachen Methoden.

4.2 Scanning

Steht man vor einer unbekannten Karte, so gilt wahrscheinlich der erste Angriff der Ermittlung der Befehlsklassen und Befehle, besonders derer welche nicht in einer bestimmten Norm definiert sind. Es soll ja Fälle geben in denen undokumentierte Befehle die ganze Karte offenlegen BG;-).

Das dabei verwendete Verfahren frei nach Rankl/Effing [1] funktioniert wie im folgenden beschrieben.

Man bildet zuerst einen Befehl der folgenden Form:

    ----------------------------
    | CLA | INS | P1 | P2 | P3 |
    ----------------------------

Dieser Befehl wird nun an die SmartCard gesendet wobei man das Classbyte (CLA) von 0x00 - 0xff nach oben zählt. Antwortet die Karte mit einem anderen Wert als "Class ungültig" (0x6E00) hat man ein gültiges Classbyte gefunden.

Ausgehend von den gültigen Classbytes inkrementiert man in einem weiteren Schritt das Instructionbyte von 0x00 - 0xff und untersucht den Responce nach dem Wert für "ungültige instruction" (0x6D00).

Auf diese Weise ist es in den meisten Fällen möglich, den gesamten Befehlsvorrat einer Karte zu ermitteln und mit ein wenig neuronaler Unterstützung kann man sich dann an die Entschlüsselung der Parameterbytes machen.

Für diese Art des Angriffs eignet sich stest hervorragend.

4.3 Stromfluss

In vielen Fällen muss sich ein Nutzer gegenüber der SmartCard anhand einer PIN authentifizieren. Dabei wird im Fehlerfall (falsche PIN) ein Zähler im eprom der SmartCard verändert.

Dieser Zugriff auf das eprom lässt sich anhand einer erhöhten Stromaufnahme der Karte feststellen.

Folgendes Szenario soll einen derartigen Angriff verdeutlichen:

Wird bei der Authentifizierung eine falsche PIN eingegeben, so sendet die Karte einen Fehlercode und ein Zähler im eprom wird verändert. Die daraus resultierende Erhöhung des Stromflusses lässt sich messen. Wird nun der Zähler erst nach dem Aussenden des Returncodes erhöht, was sich ja anhand der gemessenen Stromaufnahme feststellen lässt, so ist es möglich, das Erhöhen des Fehlerzählers im eprom zu verhindern indem die Spannungsversorgung sofort nach Empfang des Returncodes (Falsch PIN) abgeschalten wird.

Durch diese Methode ist es möglich die Menge aller PIN-Nummern zu testen, ohne den Fehlerzähler zu erhöhen und damit die Karte möglicherweise komplett zu sperren.

Um das oben erwähnte Verfahren aber zu relativieren sei gesagt, dass es gute Methoden gibt, welche einen derartigen Angriff unmöglich machen.

4.4 Sniffing

Eine weitere Methode, ein Chipkartensystem zu unterwandern, ist das Sniffing. Der Angriff zielt dabei auf die Kommunikation zwischen Karte und Terminal ab wobei ein sogenannter Logger (s.o.) zum Einsatz kommen könnte.

Durch eine einfache Terminalsoftware kann der Datenverkehr zwischen dem Chipkartenterminal und der Chipkarte aufgezeichnet werden. Diese so gesammelten Daten ermöglichen, entsprechend ausgewertet, einen Überblick über den Ablauf der Komunikation. Diese Auswertung wiederrum bildet dann die Basis zur Emulation des Übertragungsprotokolls.

Können genügend Daten gesammelt werden, so bildet diese Art des Angriffes eine ernste Bedrohung für einfache SmartCard-Anwendungen. In vielen Fällen ist nur eine einmalige Sniffingsession nötig um das Zielsystem zu unterwandern.

Gegen solche einfache Sniffingangriffe kann man sich durch eine entsprechende Verschlüsselung der Datenkomunikation schützen. Allerdings sollte man aber auch bedenken dass, solche Verschlüsselungen, solang nicht sehr sorgfältig programmiert, angreifbar sind ...

4.5 Extrem Stress

Es ist relativ einfach eine Karte unter Stress zu setzen. Etwa durch Erhöhung der Taktrate, durch Hitze sowie Kälte, oder durch anlegen von hohen oder niedrigen Spannungen. Dieser Stress führt zu unerwarteten Verhaltensweisen einer SmartCard, welche für einen Angriff ausgenutzt werden können.

Durch Stressing ist es beispielsweise möglich, Fehler in internen Berechnungen zu erzeugen und somit die Abarbeitung von Programmen auf der Karte zu beeinflussen. Eine weiterere Möglichkeit wäre, dass durch interne Fehler die Berechnung von kryptographischen Algorithmen beeinflusst wird, und so möglicherweise Schlüssel erraten werden können.

Um solchen Angriffen vorzubeugen, werden in moderne Chipkarten Detektoren verwendet, die bei außerhalb der Norm liegenden äußeren Bedingungen (Spannung, Temperatur, Taktrate, etc.) das System abschalten.

Diese Detektoren versagen aber meist, wenn ein Extremzustand nur kurzzeitig auftritt. Diese kurzzeitigen Parameteränderungen z.B verkürzte Clockimpulse führen aber dennoch zu einem undefinierten Verhalten der Karte, womit ein Stressing mit all seinen Konsequenzen wieder möglich wird.

4.6 Die Zeit und der Rausch

In einigen älteren SmartCards werden kryptologische Verfahren eingesetzt, welche für unterschiedliche Schlüssel eine verschieden lange Bearbeitungszeit benötigen. Diesen Unterschied kann man auch als Rauschen bezeichnen. Ist der Kryptoalgorithmus bekannt, so kann man durch Messen des Zeitraumes, der für eine Berechnung der Antwort notwendig ist, Rückschlüsse auf den verwendeten Schlüssel ziehen und so möglicherweise das System knacken.

Es gilt dabei: Je größer die Zeitunterschiede (also das Rauschen) bei der Berechnung, umso besser kann der verwendete Schlüssel geraten werden.

Eine solcher Angriff ließe sich mit einer modifizierten Version der sio - Bibliothek durchführen, wobei aber Aufgrund genauerer Zeitmessungen ein DOS Programm vorzuziehen wäre. (Probleme mit buffering der seriellen Schnittstelle)

Der Erfolg einer solchen Attacke ist allerdings bei modernen SmartCards eher zweifelhaft, da das Problem der rauschbehafteten Kryptoalgorithmen schon lange bekannt ist.

4.7 Unsichere Kryptoalgorithmen

Eine ernst zunehmende Bedrohung für die Sicherheit eine SmartCard-Anwendung stellen unsichere Kryptoalgorithmen dar. Ein schon klassisches Beispiel hierfür ist der Standardalgorithmus zur Verschlüsselung der geheimen KI in SIM - Karten (in Deutschland nur D2).

Ich möchte mich an dieser Stelle nicht weiter dazu äußern und verweise an den Caos Computer Club [4] und die scard - Organisation [2].

5. Der Versuch eines Schlußwortes

In diesem kurzen Artikel wurden bei weitem nicht alle Möglichkeiten des Angriffs auf SmartCard-Systeme erwähnt. Die hier vorgestellten Methoden sind alle relativ alt und sollten in modernen Systemen nicht mehr oder nur eingeschränkt zum "Erfolg" führen.

Auch wurden solche Methoden wie das Abhören von Terminals und der zugehörigen Leitungen gar nicht erst erörtert.

Ich hoffe aber trotzdem den Blick für die Angreifbarkeit solcher Systeme etwas geschärft zu haben. Wer sich intensiver mit dieser Problematik auseinandersetzen möchte, dem empfehle ich das Buch von Rankl/Effing [1] für das Lernen der Grundlagen, eine Suche nach den teilweise sehr guten Artikeln im Netz und vor allen Dingen viel Zeit ...

A - Resources

[1] W. Rankl, W. Effing, 'Handbuch der Chipkarten', Carl Hanser Verlag, 1996; ISBN 3-446-18893-2
[2] www.scard.org (source of SIO)
[3] Ross Anderson (rja14@cl.cam.ac.uk), Markus Kuhn (kuhn@cs.purdue.edu), "Tamper Resistance - a Cautionary Note"
[4] www.ccc.de/D2Pirat/index.html
[5] www.gsho.de
[6] http://cuba.xs4all.nl/~hip/index.html
[7] www.digital-laboratory.de
[8] www.bellcore.com

Scosh