# GlobalTester

Der GlobalTester ist ein Software-Testwerkzeug für Chipkarten. Der GlobalTester ist unter der GNU General Public License (GPL) frei verfügbar und wird von der secunet Security Networks AG entwickelt. Die Software steht als Plugin für die weit verbreitete Entwicklungsplattform Eclipse zur Verfügung.

## Geschichte

Als die Europäische Union entschieden hat, elektronische Reisepässe (e-Passports, MRTD) weltweit einzuführen, hat man schnell erkannt, dass umfangreiche Konformitätstests nötig sind, um eine reibungslose Funktion der Pässe zu gewährleisten. Zu diesem Zweck haben die internationale Luftfahrtbehörde ICAO und das Bundesamt für Sicherheit in der Informationstechnik (BSI) umfangreiche Tests spezifiziert, die jeweils mehrere hundert Testfälle enthalten. Um diese Testfälle in Software umzusetzen und dadurch auch zu verifizieren, hat die secunet am Standort Paderborn ein Werkzeug, basierend auf Open-Source-Komponenten, bereitgestellt. Mit dieser Software lassen sich die Tests nicht nur erstellen, sondern auch direkt ausführen. Benötigt wird hierfür lediglich ein Standard-PC, auf dem Eclipse läuft und ein PC/SC-kompatibler Kartenleser, mit dem die Kommunikation zur Karte realisiert werden kann.

## Tests mit Chipkarten

Beim Testen einer Chipkarte ist es einerseits wichtig, die Funktionen zu prüfen, die von der Karte bereitgestellt werden müssen. Diese Positivfälle dienen dazu, die zugesicherten Leistungen der Karte zu verifizieren. Daneben spielen auf der anderen Seite die Negativfälle eine noch größere Rolle. Zu diesem Zweck werden Fehlerfälle konstruiert, um das Verhalten der Karte beim Auftreten eines solchen Fehlers zu überprüfen. Auf diese Weise kann das Verhalten des Chips in Extremsituation untersucht werden. So kann man untersuchen, wie die Karte beispielsweise reagiert, wenn die Applikation versucht, über das Dateiende hinaus zu lesen. Oder es wird verifiziert, wie sich der Chip verhält, wenn die Applikation auf eine Datei zugreift, die gar nicht existiert oder keine Zugriffsrechte bestehen. Beim Testen wird, nachdem die Fehlerzustände konstruiert sind, geprüft, ob sich die Chipkarte in einem per Spezifikationen vorgegebenen Fehlerstatus befindet.
Ein weiterer Test ist das Prüfen auf undefinierte Kommandos. So kann man in einer einfachen Schleife alle Möglichkeiten, ein Kommando (eine sogenannte APDU) an den Chip zu schicken, konstruieren und dann die Reaktion des Chips überprüfen. Auf diese Weise lassen sich undefinierte und nicht vorgesehene Kommandos finden.
An dieser Stelle kommt der GlobalTester ins Spiel. Dieses Werkzeug ermöglicht dem Anwender das einfache Erstellen von Skripten, um diese Tests automatisiert durchzuführen und somit auch mit unterschiedlichen Chipkarten zu wiederholen.

## Architektur

Im GlobalTester wird auf verschiedene frei-verfügbare Komponenten zurückgegriffen. Die wichtigsten Bestandteile sind:
* Eclipse: Laufzeitumgebung
* SmartCard Shell: Teil der Open Smart Card Development Platform
* GlobalPlatform: Spezifikation der Karten-Kommandos und -strukturen sowie der entsprechenden Protokolle
* Open Card Framework: Kommunikation zwischen Karte und Leser
* Rhino: JavaScript-Engine
* JDOM: XML-Parser
* Bouncy Castle: Kryptographische Bibliothek