Mobile Geräte als Terminal für sicherheitsrelevante Transaktionen
Transcription
Mobile Geräte als Terminal für sicherheitsrelevante Transaktionen
Mobile Geräte als Terminal für sicherheitsrelevante Transaktionen Diplomarbeit ausgeführt am Lehrstuhl für Datenverarbeitung Technische Universität München Prof. Dr. techn. J. Swoboda von Albert Deindl Betreuer: Dipl.-Ing. Andreas Pilz, Dipl.-Ing. Michael Pramateftakis Beginn: Abgabe: 22. November 2. Oktober 2000 2001 ii iii Erklärung: Hiermit erkläre ich, daß ich die Diplomarbeit selbständig verfaßt und keine anderen als die angegebenen Quellen und Hilfsmittel verwendet habe. München, den 2. Oktober 2001 Albert Deindl iv Kurzfassung Durch die zunehmende Automatisierung vieler Vorgänge im täglichen Leben gewinnt eine zuverlässige und sichere maschinelle Feststellung der Identität einer Person zunehmende Bedeutung. Dafür existieren derzeit viele verschiedene Systeme wie z.B. Chipkarten, PINs, Login-/Passwortkombinationen, mechanische Schlüssel, u.v.m.. Alle diese Systeme sind mit Vor- und Nachteilen behaftet; in jedem Fall stellt jedoch die Anzahl der unterschiedlichen Sicherheitstoken ein Problem dar. Es wäre wünschenswert mit einem System alle Authentifikationsaufgaben abdecken zu können. Intelligente mobile Geräte wie z.B. Mobiltelefone oder PDAs bieten sich, besonders aufgrund ihrer hohen Verbreitung, als Plattform für ein derartiges System an. Sie verfügen darüberhinaus über die Ressourcen, um neben der Authentifikation auch als sicheres Terminal für beliebige Aufgaben dienen zu können. Aufgabe dieser Diplomarbeit war es neben der Einarbeitung in die Grundlagen der Kryptologie, lokalen Übertragungstechnologien und Protokollen, die Eignung der derzeitig am Markt verfügbaren mobilen Geräte als Plattform zur mobilen Authentifikation zu diskutieren, sowie notwendige Änderungen und Erweiterungen vorzuschlagen. Auf diesen Erkenntnissen aufbauend sollte ein Systemkonzept entwickelt werden, welches vor allem die Flexibilität und gleichzeitig die Sicherheit eines solchen Vorhabens berücksichtigt. Abschließend sollte dieses Konzept anhand eines Demonstrationssystems prototypenhaft in die Praxis umgesetzt werden. Die Untersuchung ergab, daß prinzipiell alle heute auf dem Markt befindlichen mobilen Geräte die Voraussetzungen mitbringen, ein derartiges System zu realisieren. Aus Sicherheitsgründen ist zur Speicherung der persönlichen Schlüssel und zur Ausführung sicherheitsrelevanter kryptographischer Operationen jedoch eine Chipkarte vorzusehen. Da heute kaum ein mobiles Gerät über die notwendige Lese-Hardware verfügt, müssen die Geräte um diese Komponente erweitert werden. Darüberhinaus ist eine Infrastruktur mit Trustcentern zur Sicherstellung der Benutzer-Identitäten aufzubauen. Mein Konzept spezifiziert die einzelnen Systemkomponenten, sowie ihr Zusammenwirken. Damit Geräte unterschiedlichster Hersteller zusammenarbeiten können, entstand zur Abwicklung des Authentifikationsvorgangs ein hardwareunabhängiges Protokoll. Die zentrale personifizierende Komponente des Systementwurfs ist die Chipkarte, deren Funktionen und Schnittstellen ebenfalls festgelegt worden sind. Der Benutzer kann somit - solange er diese Karte verwendet - unterschiedliche mobile Geräte benutzen, v vi um sich an beliebigen kompatiblen Stellen zu authentifizieren. Das Ergebnis dieser Arbeit ist ein flexibles Konzept, sowie ein Satz von Kommunikationsprotokollen und Schnittstellen, mit Hilfe welcher auf heute verfügbaren Technologien ein mobiles auf lokalen Übertragungsmedien basierendes Authentifikationsystem realisiert werden kann. Nach erfolgreicher Authentifikation besteht eine gesicherte und verschlüsselte Verbindung zwischen den beiden Kommunikationspartnern, auf die beliebige sicherheitsrelevante Anwendungen aufsetzen können. Zur Demonstration des Systementwurfs entstand ferner eine Implementierung dieses Konzepts in Form einer drahtlosen Rechneranmeldung basierend auf einem Handspring Visor PDA. Inhaltsverzeichnis Einleitung 1 I 3 Theoretischer Teil 1 Grundlagen 1.1 1.2 1.3 5 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.1 Ausgangssituation . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.2 Aufgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Authentifizierungssysteme . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.1 Allgemeiner Authentifikationsprozeß . . . . . . . . . . . . . . . 7 1.2.2 Sicherheitstoken . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.2.1 Untergliederung . . . . . . . . . . . . . . . . . . . . . . 8 1.2.2.2 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Überblick - Mobile Geräte . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.1 Leistungsmerkmale handelsüblicher mobiler Geräte . . . . . . . 10 1.3.1.1 Mobiltelefone . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.1.2 Handhelds . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3.1.3 Digitalkameras . . . . . . . . . . . . . . . . . . . . . . 14 1.3.1.4 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Lokale Übertragungstechnologien . . . . . . . . . . . . . . . . . 16 1.3.2.1 IrDA 16 1.3.2.2 Wireless LAN 1.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii 17 viii INHALTSVERZEICHNIS 1.4 1.3.2.3 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.3.2.4 Weitere Verfahren . . . . . . . . . . . . . . . . . . . . 21 1.3.2.5 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Kryptologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.4.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.4.2 Kryptographische Grundverfahren . . . . . . . . . . . . . . . . . 23 1.4.2.1 Stromverschlüsselung . . . . . . . . . . . . . . . . . . . 23 1.4.2.2 Blockverschlüsselung . . . . . . . . . . . . . . . . . . . 23 1.4.2.3 Symmetrische Verfahren . . . . . . . . . . . . . . . . . 24 1.4.2.4 Asymmetrische Verfahren . . . . . . . . . . . . . . . . 24 1.4.2.5 Hybride Verfahren . . . . . . . . . . . . . . . . . . . . 25 1.4.2.6 Hash Funktionen . . . . . . . . . . . . . . . . . . . . . 25 1.4.2.7 Digitale Signatur . . . . . . . . . . . . . . . . . . . . . 26 Ausgewählte Algorithmen . . . . . . . . . . . . . . . . . . . . . 26 1.4.3.1 DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4.3.2 IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.4.3.3 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.4.3.4 ElGamal Methode . . . . . . . . . . . . . . . . . . . . 28 1.4.3.5 EEC elliptische Kurven . . . . . . . . . . . . . . . . . 28 1.4.4 Kryptoanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.4.5 Kryptographische Protokolle . . . . . . . . . . . . . . . . . . . . 30 1.4.5.1 Schlüsseltausch - Diffie-Hellmann Verfahren . . . . . . 30 1.4.5.2 Authentifikation - Challenge-Response Methode . . . . 30 Zertifikate - PKI Infrastruktur . . . . . . . . . . . . . . . . . . . 31 Chipkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.5.1 Entstehungsgeschichte . . . . . . . . . . . . . . . . . . . . . . . 33 1.5.2 Arten von Chipkarten . . . . . . . . . . . . . . . . . . . . . . . 33 1.5.3 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1.5.4 Lebenszyklus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1.4.3 1.4.6 1.5 INHALTSVERZEICHNIS 1.5.5 ix Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Das OBEX Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.6.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.6.2 Session Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . 39 1.6.3 Objektmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 1.6.4 Application Framework . . . . . . . . . . . . . . . . . . . . . . . 45 1.6.5 Authentifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 1.6.6 Multiplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 1.6.7 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 1.7 Das Konzept mSign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 1.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 1.8.1 Anforderungen an ein universelles Authentifizierungstoken . . . 47 1.8.2 Lösungsansatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 1.6 2 Konzept 51 2.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.2 Gliederung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.3 Systembeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.4 Aufgaben der mAuth Systemkomponenten . . . . . . . . . . . . . . . . 56 2.4.1 Das Trustcenter . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.4.2 Die Chipkarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.4.3 Das mobile Gerät . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2.4.3.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.4.3.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Der PoA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 2.4.4.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . 61 2.4.4.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . 62 2.4.4.3 Übergeordnetes Institut oder Organisation . . . . . . . 64 2.5 Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 2.4.4 2.5.1 Zertifikatsaustellung . . . . . . . . . . . . . . . . . . . . . . . . 64 x INHALTSVERZEICHNIS 2.6 2.7 2.8 2.5.2 Authentifikationsprozess . . . . . . . . . . . . . . . . . . . . . . 66 2.5.3 Anmelden bei PoAs . . . . . . . . . . . . . . . . . . . . . . . . . 68 2.5.4 Peer Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Kommunikationsmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.6.1 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.6.2 Benutzer - Trustcenter . . . . . . . . . . . . . . . . . . . . . . . 72 2.6.3 Trustcenter - Chipkarte . . . . . . . . . . . . . . . . . . . . . . . 73 2.6.4 Benutzer - mobiles Gerät . . . . . . . . . . . . . . . . . . . . . . 73 2.6.5 Mobiles Gerät - Chipkarte . . . . . . . . . . . . . . . . . . . . . 74 2.6.6 PTD - PoA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.6.7 Benutzer - PoA . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.6.8 Zusammenwirken . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 2.7.1 Chipkarte - Kartenlesegerät Schnittstelle . . . . . . . . . . . . . 78 2.7.2 Mensch - Maschine Schnittstelle . . . . . . . . . . . . . . . . . . 80 2.7.3 PoA - PTD-Schnittstelle . . . . . . . . . . . . . . . . . . . . . . 85 Spezifikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 2.8.1 Chipkarten APDU Format . . . . . . . . . . . . . . . . . . . . . 85 2.8.1.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . 85 2.8.1.2 Command codes . . . . . . . . . . . . . . . . . . . . . 87 2.8.1.3 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . 87 2.8.1.4 Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 2.8.1.5 Responses . . . . . . . . . . . . . . . . . . . . . . . . . 91 Zertifikatsformat . . . . . . . . . . . . . . . . . . . . . . . . . . 93 2.8.2.1 Inhalt . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 2.8.2.2 Format . . . . . . . . . . . . . . . . . . . . . . . . . . 94 2.8.2.3 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Erweitertes OBEX Protokoll - mAuth OBEX . . . . . . . . . . 97 2.8.3.1 97 2.8.2 2.8.3 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . INHALTSVERZEICHNIS 2.9 II xi 2.8.3.2 Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . 99 2.8.3.3 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 2.8.4 Chipkarten-Applikation - Zustände und Automat . . . . . . . . 107 2.8.5 PTD-Anwendung - Zustände und Automat . . . . . . . . . . . . 108 2.8.6 PoA-Server - Zustände und Automat . . . . . . . . . . . . . . . 109 Application Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 2.9.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 2.9.2 Applikationsmodelle . . . . . . . . . . . . . . . . . . . . . . . . 113 2.9.3 Verwendung des mAuth-OBEX Protokolls . . . . . . . . . . . . 114 Praktischer Teil 3 Grundlagen des Demonstrationssytems 115 117 3.1 Die praktische Umsetzung des Konzepts . . . . . . . . . . . . . . . . . 117 3.2 Die IrDA-Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 3.3 IrDA-Unterstützung auf Personal Computern 3.4 3.5 3.6 . . . . . . . . . . . . . . 120 3.3.1 Bau eines IrDA-Transceivers für den PC . . . . . . . . . . . . . 121 3.3.2 Linux-IrDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Die Pluggable Authentification Modules - PAM . . . . . . . . . . . . . 126 3.4.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 3.4.2 PAM Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . 127 3.4.3 Anforderungen an ein PAM Modul . . . . . . . . . . . . . . . . 130 Giesecke und Devrient Sm@rtcafé Javacard . . . . . . . . . . . . . . . . 131 3.5.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 3.5.2 Javacard Applikationen . . . . . . . . . . . . . . . . . . . . . . . 132 3.5.3 Leistungsmerkmale der Sm@rtcafé Karte . . . . . . . . . . . . . 134 3.5.4 Die Sm@rtcafé Entwicklungsumgebung . . . . . . . . . . . . . . 134 3.5.5 Das Main Loader Konzept . . . . . . . . . . . . . . . . . . . . . 135 Chipkarten-Lesegerät Towitoko Chipdrive micro 100 . . . . . . . . . . . 137 3.7 PalmOS-PDAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 xii INHALTSVERZEICHNIS 3.8 3.9 3.7.1 Entwicklungsgeschichte . . . . . . . . . . . . . . . . . . . . . . . 138 3.7.2 Unterschiede zwischen Handspring- und Palm-Modellen . . . . . 140 3.7.3 Der Handspring Visor Platinum . . . . . . . . . . . . . . . . . . 141 Programmentwicklung unter PalmOS . . . . . . . . . . . . . . . . . . . 142 3.8.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 3.8.2 Einschränkungen und Besonderheiten . . . . . . . . . . . . . . . 142 3.8.3 Speicherorganisation . . . . . . . . . . . . . . . . . . . . . . . . 144 3.8.4 Ereignis gesteuerte Programmausführung . . . . . . . . . . . . . 146 3.8.5 Das User Interface . . . . . . . . . . . . . . . . . . . . . . . . . 149 3.8.6 Das PRC-Format . . . . . . . . . . . . . . . . . . . . . . . . . . 149 3.8.7 Libraries unter PalmOS . . . . . . . . . . . . . . . . . . . . . . 150 3.8.7.1 PalmOS-Version 2 shared Libraries - SysLib . . . . . . 151 3.8.7.2 GNU GLib Shared Libraries . . . . . . . . . . . . . . . 152 GNU-PalmOS-Entwicklungswerkzeuge . . . . . . . . . . . . . . . . . . 153 3.9.1 Alternative Entwicklungs-Tools . . . . . . . . . . . . . . . . . . 153 3.9.2 Verschiedene Versionen des PalmOS-SDKs . . . . . . . . . . . . 153 3.9.3 PRC-Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 3.9.3.1 Verschiedene Versionen . . . . . . . . . . . . . . . . . . 154 3.9.4 Der Pilot Resource Compiler PilRC . . . . . . . . . . . . . . . . 155 3.9.5 Handspring-spezifische Erweiterungen des PalmOS . . . . . . . 156 3.10 Der PalmOS-Emulator POSE . . . . . . . . . . . . . . . . . . . . . . . 157 3.10.1 Entwicklungsgeschichte . . . . . . . . . . . . . . . . . . . . . . . 157 3.10.2 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 3.10.3 Probleme beim Ansprechen der emulierten seriellen Schnittstelle 160 3.10.4 Auslesen eines ROM Images aus dem Visor . . . . . . . . . . . . 161 3.10.5 Schwierigkeiten bei der Ausführung eines Handspring Visor Platinum ROMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 3.11 Anschluß des Chipkarten-Lesegeräts an den PDA . . . . . . . . . . . . 163 3.11.1 Die serielle Schnittstelle des Handspring Visors . . . . . . . . . 163 3.11.2 Kopplung über serielles Cradle mit RS-232-Pegelwandler . . . . 163 INHALTSVERZEICHNIS xiii 3.11.3 Direkte Kopplung . . . . . . . . . . . . . . . . . . . . . . . . . . 165 4 Das mAuth Demonstrationssystem 4.1 4.2 169 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 4.1.1 Implementierte Systemkomponenten . . . . . . . . . . . . . . . 169 4.1.2 Implementierte Funktionalität . . . . . . . . . . . . . . . . . . . 169 Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 4.2.1 Die Chipkartenapplikation . . . . . . . . . . . . . . . . . . . . . 170 4.2.2 Der PoA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 4.2.3 4.2.2.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . 171 4.2.2.2 Das PAM Modul . . . . . . . . . . . . . . . . . . . . . 175 4.2.2.3 Modifikation des Mingetty Programms . . . . . . . . . 175 Der PTD-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 4.2.3.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . 176 4.2.3.2 Anpassung der SCEZ Chipcard Library . . . . . . . . 177 4.2.3.3 Probleme bei der gleichzeitigen Verwendung von IrDA und der seriellen Schnittstelle . . . . . . . . . . . . . . 178 4.2.3.4 SSLeay Crypto-Library für PalmOS 4.2.3.5 Entwicklung eigener IrDA-Funktionen in Form der MyIrLib . . . . . . . . . . . . . . . . . . . . . . . . . . 180 . . . . . . . . . . 180 4.3 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 4.3.1 4.3.2 Chipkarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 4.3.1.1 notwendige Tools . . . . . . . . . . . . . . . . . . . . . 185 4.3.1.2 Übersetzen und Installieren . . . . . . . . . . . . . . . 186 PTD-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 4.3.2.1 notwendige Tools . . . . . . . . . . . . . . . . . . . . . 187 4.3.2.2 Übersetzen und Installieren . . . . . . . . . . . . . . . 187 4.3.3 PoA-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 4.3.4 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . 188 4.3.4.1 Übersetzen und Installieren . . . . . . . . . . . . . . . 188 4.4 Bedienung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 xiv INHALTSVERZEICHNIS 4.4.1 Chipkarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 4.4.1.1 Ändern von PIN und Schlüssel . . . . . . . . . . . . . 190 4.4.1.2 Modifikation der Main Loader Sicherheitsoptionen . . . 190 4.4.2 PoA-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 4.4.3 PTD-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 4.4.3.1 Normaler Authentifikations Ablauf . . . . . . . . . . . 193 4.4.3.2 Fehlermeldungen . . . . . . . . . . . . . . . . . . . . . 198 5 Zusammenfassung und Ausblick 203 5.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 5.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 EINLEITUNG 1 Einleitung Leistungsfähige mobile elektronische Geräte wie z.B. Mobiltelefone, elektronische Terminplaner oder Digitalkameras werden immer mehr zu unseren alltäglichen Wegbegleitern. Dabei nimmt ihre Leistungsfähigkeit und ihr Funktionsumfang ständig zu. Annähernd jedes mobile Gerät besitzt heute schon eine drahtlose Schnittstelle wie z.B. IrDA1 oder Bluetooth zur Kommunikation mit seinem Umfeld. Zudem ist abzusehen, daß diese Geräte in Zukunft zu einer Einheit zusammenwachsen werden. Erste multifunktionale mobile Begleiter sind bereits auf der Cebit 2001 vorgestellt worden. In Anbetracht der Wachstumsraten auf dem Mobilfunksektor ist es nicht utopisch davon auszugehen, daß in sehr naher Zukunft annähernd jeder einen solchen universellen PDA2 bei sich tragen wird. Da diese Geräte trotz ihrer geringen Größe über eine Rechenleistung und Erweiterungsmöglichkeiten verfügen wie sie vor nicht allzulanger Zeit nur von PCs geboten wurden, eröffnen sich damit neue Anwendungsbereiche, die weit über die derzeitige Nutzung hinausreichen. Als neue Einsatzmöglichkeiten bieten sich zunächst Aufgaben an, zu deren Durchführung es bisher notwendig war, weitere Gegenstände mit sich zu führen. Solche Gegenstände sind insbesondere die wachsende Anzahl an persönlichen Sicherheitstoken. Es ist heute üblich eine Vielzahl an kartenbasierenden Token wie Kreditkarten, ECKarten, Bibliotheksausweise, Krankenversicherungskarte sowie diverse Magnetstreifenoder Chipkarten als Zugangskontrolle bei sich zu tragen. Ein Blick in die eigene Brieftasche wird dies in den meisten Fällen verifizieren. Dabei ist diese Aufzählung oftmals noch lange nicht vollständig. Dazu kommen noch konventionelle, mechanische Schlüssel und wissensbasierende Token wie PINs und Login/Passwort-Kombinationen. Intelligente mobile Geräte sind die optimale Plattform, um diese Token in ein System mit adäquater Sicherheit zu vereinen. Zudem ergibt sich durch die dabei entstehende vertrauenswürdige Mensch-Maschine-Schnittstelle“ ein weiterer Mehrwert. Selbst eine ” Schnittstelle zur Kommunikation mit Systemen, welche ansonsten direkten Kontakt mit entsprechenden Token gehabt hätten, ist bereits in den meisten Fällen vorhanden. 1 2 Infrared Data Associaton Personal Digital Assistant 2 EINLEITUNG Das Ziel der Arbeit ist die Entwicklung eines allgemeines Konzept zur Verwirklichung eines universellen mobilen Authentifikationssystems. Dafür werden zuerst unterschiedliche mobile Gerät im Hinblick auf ihre Tauglichkeit zur Verwirklichung dieser Idee untersucht, sowie eventuell dazu notwendige Erweiterungen diskutiert. Im ersten Kapitel des theoretischen Teils der Arbeit sind diese Ergebnisse, sowie die Grundlagen der für dieses Projekt relevanten Technologien und Protokolle zusammengefaßt. Auf diesen Erkenntnissen aufbauend wird ein konkretes Konzept für ein mobiles Authentifikationsystems entworfen. Die Beschreibung aller Systembestandteile ebenso wie die Spezifikation der verwendeten Kommunikationsprotokolle und aller Systemablaufe sind im darauffolgenden Kapitel dargestellt. Abschließend ist die praktische Implementierung eines Demonstrationssystems dieses Konzepts beschrieben. Damit ist die Anmeldung an ein Rechnersystem mittels eines elektronischen Terminplaners möglich. Teil I Theoretischer Teil 3 5 Kapitel 1 Grundlagen 1.1 1.1.1 Einführung Ausgangssituation Bereits heute sind im alltäglichen Leben viele verschiedene Sicherheitstoken notwendig. Diese Entwicklung weist eine wachsender Tendenz auf. So verschieden diese Token sind, so verschieden ist auch deren Sicherheit. Allen gemeinsam ist jedoch die Tatsache, daß sie in der Regel für eine spezielle Anwendung konzipiert und ausschließlich für diese nutzbar sind. So paßt ein Schlüssel in der Regel nur genau in ein Schloß. SmartCard SmartCard SmartCard Magnetstreifenkarte Magnetstreifenkarte Magnetstreifenkarte Login-Passwort Login-Passwort Kombinationen Kombinationen BANKOMAT EC Abbildung 1.1: Vielzahl spezialisierter Sicherheitstoken 6 KAPITEL 1. GRUNDLAGEN Abgesehen von dem Aufwand alle, diese Token ständig mit sich zu tragen und dem Problem, dabei leicht den Überblick zu verlieren, verleitet eine so große Menge den Anwender dazu, leichtfertiger mit geheimen Daten umzugehen. So soll es vorgekommen sein, daß sich Personen die geheime PIN Nummer direkt auf ihrer EC Karte notiert haben, da sie sich nicht alle Geheimnummern merken konnten. Dies ist natürlich ein extremer Fall, jedoch zeigt dieses Beispiel, daß ein Bedarf existiert, Authentifizierungsprozesse für den Benutzer einfach zu halten, ohne dabei jedoch Abstriche im Bereich der Sicherheit zu machen. Es wäre daher vorteilhaft, möglichst viele Token auf ein gemeinsames, multifunktionales System zu vereinen. Öffentliche Terminals wie z.B. an Geldautomaten, an denen sicherheitsrelevante Transaktionen durchgeführt werden, stellen immer ein Risiko für den Benutzer dar. Der Anwender hat keinerlei Wissen noch Kontrolle über das benutzte Gerät. Manipulationen an Teilen oder gar am gesamten Gerät sind für ihn kaum zu erkennen. Dadurch wird das Ausspähen oder Verändern geheimer Daten möglich. Dies stellt ein erheblich größeres Problem als der Verlust oder Diebstahl eines Sicherheitstoken dar. In letzterem Falle kann der Benutzer Maßnahmen wie die Sperrung einer EC-Karte oder den Austausch von Schlössern vornehmen, um weiteren Mißbrauch zu verhindern. Werden jedoch geheime sicherheitsrelevante Daten an manipulierten Terminals erspäht, so geschieht das, ohne daß der Anwender es bemerkt. Somit wird er auch keine Gegenmaßnahmen einleiten. Es gab Fälle, in welchen ein kompletter EC Geldautomat durch einen Nachbau, der alle Kundendaten direkt an den Betrüger übermittelte, ersetzt wurde. Daher wäre es wünschenswert, persönliche sicherheitsrelevante Daten nur in Geräte eingeben zu müssen, welche sich im persönlichen Besitz befinden und über die der Nutzer selbst die Kontrolle hat. 1.1.2 Aufgabe Mobile Geräte wie z.B. Mobiltelefone, welche immer mehr zu Gegenständen des alltäglichen Gebrauchs werden, scheinen als Plattform zur Lösung dieser beiden Probleme geeignet zu sein. Aufgabe dieser Diplomarbeit ist es zu untersuchen, inwieweit mobile Geräte bereits heute zur Erfüllung dieser Aufgabe geeignet sind und wie sie gegebenenfalls erweitert werden müssen. Auf Grundlage dieser Ergebnisse ist ein Konzept entstanden, welches mobile Geräte zu einer Plattform für ein universelles Authentifikationsystem und ver” trauenswürdiges“ Terminal erweitert. 1.2. AUTHENTIFIZIERUNGSSYSTEME 1.2 7 Authentifizierungssysteme Um die Anforderungen für ein solches Vorhaben zu definieren, ist es notwendig die einzelnen Schritte und die beteiligten Komponenten an einem Authentifikationsprozeß zu analysieren. 1.2.1 Allgemeiner Authentifikationsprozeß Für jede Art von sicherheitsrelevanten Vorgängen ist ein Authentifizierungsprozeß notwendig. Im einfachsten Falle sind daran beteiligt: • Benutzer • Token • Point of Authentification • Interaktions-Medium Je nach Anwendungsfall und geforderter Sicherheit weist sich der Nutzer gegenüber dem Point of Authentification (PoA) mittels eines Tokens als berechtigt aus und umgekehrt. Einfacher Authentifikationsprozeß anhand eines einfachen Beispiels Allgemeines Authentifikations-Schema Benutzer PoA Point of Authentication Benutzer initieren Point of Authentication Token Token authentifiziert sich mittels Authentifikation beim überprüfen überprüfen Authentifikation überprüft Token agieren gewährt Zutritt Token InteraktionsMedium agieren Abbildung 1.2: Authentifizierung Grundschema Eine Partei, in der Regel der Benutzer, initiiert den Authentifizierungsprozeß. Dies kann wie in Abbildung 1.2 durch direkten mechanischen Einsatz des Tokens am PoA geschehen. Nach erfolgreicher Überprüfung der Authentizität durch den PoA, kann zwischen Benutzer und PoA jede Form von Interaktion stattfinden. Im obigen Beispiel ist dies die Entscheidung zwischen dem Auf- oder Abschließen einer Türe. Sie findet hier durch die Drehrichtung des Schlüssels statt. Sie kann aber auch einen komplexen Vorgang wie die Bedienung eines Geldautomaten beinhalten. Schließlich findet am Ende des Prozesses eine Reaktion statt. Im Beispielfall das Öffnen bzw. Schließen der Türe. 8 KAPITEL 1. GRUNDLAGEN Die einzelnen Schritte eines Authentifikationsprozesses sind somit: • initiieren • überprüfen • interagieren • reagieren Der gesamte Vorgang erfordert die Kommunikation von Benutzer und PoA. Dazu ist eine Form von Interaktions-Medium notwendig, welches im Abbildung 1.2 als breiter gelber Pfeil dargestellt ist. Bei erhöhten Sicherheitsanforderungen kann die Authentifikation auch gegenseitig erfolgen (mutual Authentification), indem auch der PoA seine Identität dem Benutzer gegenüber nachweisen muß. 1.2.2 Sicherheitstoken 1.2.2.1 Untergliederung Der einfachste und natürlichste Authentifizierungsfall ist jener, bei dem eine Person der anderen persönlich bekannt ist und sie alleine an ihrem Aussehen erkannt wird. Da dies jedoch in den seltensten Fällen möglich ist, führt man standardisierte, meist auch maschinenlesbare Token ein, welche die Authentifizierung ermöglichen. Dabei können grob zwei Gruppen von Token unterschieden werden: • gegenständliche Token • personengebundene Token Die gebräuchlichste Form sind heute gegenständliche Token. Allein deren Besitz wird als Authentifizierungsmerkmal herangezogen. Beispiele hierfür sind Schlüssel, Magnetstreifen-Karten oder der Studentenausweis. Personengebundene Token identifizieren eine Person durch Merkmale, welche nur sie haben kann. Dies wird heute meist in Form wissensbasierender Token realisiert. Das Wissen einer eindeutigen Kennung und eines geheimen Passworts beweist die Berechtigung der Person. Zu dieser Gruppe gehören auch die biometrischen Verfahren, welche unveränderliche und eindeutige physikalische Merkmale einer Person wie z.B. Fingerabdruck, Sprachspektrum oder das Muster der Augeniris auswerten. Diese Verfahren zählen zu den sichersten und vielversprechendsten für die Zukunft. Sie sind im Augenblick jedoch noch weitgehend Gegenstand der Forschung. Für Systeme, in welchen erhöhte Sicherheit gefordert ist, wird meist eine Kombination aus gegenständlichen und wissensbasierenden Token eingesetzt. So ist zum Betrieb eines 1.2. AUTHENTIFIZIERUNGSSYSTEME 9 Mobiltelefons der Besitz einer Chipkarte und das Wissen einer geheimen PIN Nummer notwendig. 1.2.2.2 Beispiele • Magnetstreifen-Karte Magnetstreifen-Karten bestehen aus einem Plastik-Trägermaterial mit einem auf ihrer Rückseite angebrachten Magnetstreifen, welcher auf 3 Spuren permanent Informationen speichern kann. Diese sind ohne weitere Sicherheitsvorkehrungen zu lesen und zu beschreiben. Da Kartenleser und Leerkarten“ frei erhältlich sind, ist es problemlos möglich ” einfache Magnetkarten zu kopieren. Zur Erhöhung der Sicherheit wurde bei den EC-Karten ein zusätzliches moduliert maschinenfähiges Merkmal“ (MM) außer” halb des Magnetstreifens in das Kartenträgermaterial eingebracht. Dieses Merkmal kann weder trivial kopiert noch ausgelesen werden. Da die darin enthaltenen Informationen in die Berechnung einer Prüfsumme über die auf der Karte gespeicherten Daten einfließen, kann der Karteninhalt auch nicht unbemerkt verändert werden. Dieses Merkmal wird jedoch an Geldautomaten im Ausland nicht überprüft, womit auch dies kein wirksamer Schutz vor Betrug ist. • wissensbasierende Token Wissensbasierende Token sind zwar in hohem Maße personengebunden, jedoch weisen sie in der realen Nutzung erhebliche Schwachpunkte auf. Aus Gründen der einfacheren Merkbarkeit wählen viele Nutzer oft schwache“ Paßwörter, wel” che mit geringem Wissen aus dem persönlichem Umfeld der jeweiligen Person leicht durch raten herauszufinden sind. Beispiele hierfür sind z.B. Namen der Frau/Freundin, Geburtsdaten oder Telefonnummern. Dazu kommt, daß diese Paßwörter in irgendeiner Form in den PoA eingegeben werden müssen. Da dies meist über frei zugängliche Tastaturen erfolgt, ist hier auch das Ausspähen ein ernstzunehmendes Problem. • mechanische Schlüssel Das unerlaubte Kopieren konventioneller Schlüssel kann zwar durch mechanische Maßnahmen erheblich erschwert, jedoch, genügend technischen Aufwand und handwerkliches Geschick vorausgesetzt, nicht verhindert werden. Da allein der Besitz des Schlüssels zur Authentifikation ausreicht, ist hier keinerlei Personenbindung vorhanden. 10 KAPITEL 1. GRUNDLAGEN 1.3 Überblick - Mobile Geräte Ein wichtiger Bestandteil dieser Arbeit ist die Bestandsaufnahme der heute im mobilen Bereich verfügbaren Technologien sowie die Untersuchung ihrer Tauglichkeit als Plattform für ein zentrales Authentifizierugssystem. Dazu werden in diesem Abschnitt typische Vertreter aus den einzelnen Gerätebereichen kurz vorgestellt und die relevanten Ergebnisse am Ende in tabellarischer Form zusammengefaßt. Vielfach sind in mobilen Geräten bereits lokale Übertragungstechnologien integriert, die sich zur Kommunikation mit dem PoA nutzen lassen. Auch diese werden jeweils in Form einer kurzen Einführung behandelt. 1.3.1 Leistungsmerkmale handelsüblicher mobiler Geräte Dieser Abschnitt soll keine einzelnen Produkte vollständig vorstellen. Vielmehr werden gezielt Eigenschaften, welche im Hinblick auf ein Authentifizierungssystem relevant sind, herausgegriffen. Die Auswahl der betrachteten Geräte erfolgte zwar mit der Vorgabe, für die einzelnen Gerätebereiche repräsentative Vertreter zu finden, ansonsten aber vollkommen willkürlich. Anstelle der hier vorgestellten, hätten mit der selben Berechtigung ebenso Geräte anderer Hersteller untersucht werden können. Die Betrachtung erfolgte dabei im Hinblick auf folgende Merkmale: • Fähigkeiten zum Benutzerdialog • Marktverbreitung • Chipkartenleser • Hardware-Erweiterungsmöglichkeiten • lokale Kommunikationsschnittstellen • Programmierbarkeit 1.3.1.1 Mobiltelefone Mobiltelefone haben von all den untersuchten Geräten die größte Verbreitung in der Bevölkerung. Laut Forester Research gibt es zum Entstehungszeitpunkt dieser Arbeit allein in Europa 117 Millionen Mobiltelefonbenutzer. Darüberhinaus besitzen diese, als einzige Geräteklasse, bereits eindeutige Identifizierungsmerkmale in Form der persönlichen Daten der SIM Karte und der IMEI Gerätenummer. Auch wenn die meisten Mobiltelefone heute bereits das WAP 1.1 Protokoll unterstützen, sind die Darstellungsmöglichkeiten ihrer Displays noch sehr beschränkt. Durchschnittlich können sie 4 bis 6 Zeilen Text zu je 16 bis 20 Zeichen darstellen. 1.3. ÜBERBLICK - MOBILE GERÄTE 11 Neuere Geräte haben vermehrt graphikfähige Displays und eine menugestützte Bedienungsführung. Eine Infrarotschnittstelle zur Kommunikation mit anderen Geräten ist bei Mobiltelefonen ab Geräten der Mittelklasse Standardaustattung. Noch nicht alle Hersteller unterstützen dabei auch IRDA OBEX, jedoch setzt sich dieser Standard auch hier immer mehr durch. Mittels seperat erhältlicher Datenkabel steht bei den Vielfach auch eine serielle RS232 Schnittstelle zur Verfügung. Abbildung 1.3: Beispiele weit verbreiteter Mobiltelefone Abbildung 1.3 zeigt mit dem Siemens S35 und dem Nokia 6210 zwei weitverbreitete Vertreter dieser Gerätekathegorie. Die Besonderheit des Nokia 6210 ist seine Erweiterbarkeit um eine Bluetooth Schnittstelle. Dies geschieht, wie bei Nokia üblich, durch einen Funktions-Akku“. Es gehöhrt damit zu einem der ersten Mobiltelefone, welche ” den Bluetooth Standard unterstützen. 1.3.1.2 Handhelds Handhelds waren ursprünglich als elektronischer Ersatz für Terminplaner, Notizblock und Adreßbuch gedacht. Sie entwickelten sich jedoch schnell zu universellen und leistungsfähigen Taschencomputern. Heute besitzen solche Geräte leistungsfähige Betriebssysteme, graphische Bedienoberflächen, Schnittstellen zur Hardwareerweiterung, genügend Arbeitsspeicher und Rechenleistung auch für komplexere Anwendungen und es existieren ausgezeichnete Werkzeuge zur Entwicklung eigener Software. PalmOS-Geräte 1996 kamen die ersten Geräte der Palm Serie auf den Markt. Ursprünglich von U.S. Robotics entwickelt, wurden sie nach Übernahme der Firma durch 3COM unter de- 12 KAPITEL 1. GRUNDLAGEN ren Namen weitervertrieben. Die Geräte basieren auf der Motorola Dragonball CPU, welche im Grunde ein Prozessor aus der 68000er Reihe mit etlichen integrierten Peripheriecontrollern ist. Die Eingabe erfolgt über eine Handschrifterkennung. Bis heute sind einige neue Generationen dieser Modellreihe entwickelt worden. So verfügen aktuelle Geräte über 8 MB Speicher, Standard-Infrarotschnittstelle mit Unterstützung des OBEX Protokolls, Erweiterungsmodule sowie schnellere CPUs. Das Betriebsystem PalmOS ist eine Eigenentwicklung des Herstellers. Da es speziell auf die Anforderungen mobiler Geräte ausgelegt ist, kennzeichnen es eine sehr effiziente Nutzung der vorhandenen Resourcen und eine hohe Stabilität. Abbildung 1.4: Beispiele von PalmOS-Geräten Auch von anderen Herstellern wie z.B. Handspring werden Geräte, welche PalmOS als Betriebsystem nutzen, hergestellt. Die Handspring-Geräte zeichenen sich durch eine sehr gute Erweiterbarkeit mittels eines integrierten Expansionsslots aus. Es existieren dafür bereits Module, die einen solchen PDA zum vollständigen Mobiltelefon erweitern. An Geräte, welche nicht über diesen speziellen Slot verfügen, können Erweiterungsmodule über die RS232 Schnittstelle angeschlossen werden. Die PalmOS-Geräte gehören heute zu den am weit verbreitetsten PDAs. WindowsCE-Geräte Handhelds, die WindowsCE als Betriebsystem verwenden, sind im Sektor der Pocket PCs angesiedelt. Sie tendieren vom Leistungsumfang und Preis mehr zu Notebooks. Ein typischer Vertreter dieser Geräteklasse ist der Compaq iPAQ. Mit einer CPUTaktfrequenz von 206 MHz (Intel StrongARM SA-1110 32-Bit-RISC-Prozessor), 16 MB 1.3. ÜBERBLICK - MOBILE GERÄTE 13 Hauptspeicher und 16 MB Flash Memory liegt er deutlich über den Leistungsdaten der Palm PDAs. Abbildung 1.5: Beispiele von WindowsCE-Geräten Auch diese Geräte sind mit einer Standard-Infrarotschnittstelle und OBEX Unterstützung ausgestattet. Desweiteren verfügen sie über serielle RS232 und USB Ports. Mittels sogenannter Expansionpacks, auch Jackets genannt, lassen sie sich prinzipiell um beliebige Hardware erweitern. Diese Jackets sind Plastikhüllen, in welche das gesamte Gerät eingesteckt wird. Sie enthalten die Erweiterungshardware. Mit den derzeit erhältlichen Jackets läßt sich der iPAQ um die Fähigkeit PC-Cards1 und CF-Cards2 verwenden zu können erweitern. Damit ist z.B. die Unterstützung des Bluetooth-Standards jederzeit realisierbar. EPOC-Geräte EPOC ist ein 32-Bit-Multitasking-Betriebsystem und wurde von der Firma Psion für deren Handheld Geräteserie entwickelt. Der auffälligste Unterschied zu den anderen Handhelds ist die vollwertige alphanumerische Tastatur dieser Geräte. Zusätzlich ist auch die Eingabe mittels Pen“ und Touchscreen“ möglich. ” ” Von Rechenleistung und Speicheraustattung liegen sie zwischen den PalmOS und den WindowsCE-Geräten. Zur Kommunikation stehen IrDA und RS232 Schnittstelle zur Verfügung. Mittels eines Compact Flashcard Slots kann ihre Speicherfähigkeit erweitert werden. Weitere Erweiterungsports existieren jedoch nicht. 1 2 PCMCIA Compact Flash Cards 14 KAPITEL 1. GRUNDLAGEN Abbildung 1.6: Beispiele von EPOC-Geräten Obwohl EPOC-Geräte sehr gut auf die mobilen Anforderungen zugeschnitten sind, haben sie nicht zuletzt wegen ihres vergleichsweise hohen Preises keine so große Verbreitung gefunden wie ihre Mitbewerber. 1.3.1.3 Digitalkameras Digitalkameras erfahren seit kurzem durch den Preisverfall und die verbesserte Bildqualität bei Privatanwendern einen Verkaufsboom. Auch diese Geräte bringen grundsätzlich die notwendigen technischen Voraussetzungen mit, welche sie für ein mobiles Autentifizierungssystem geeignet machen. Sehr viele dieser Kameras besitzen ein relativ hochauflösendens Farbdisplay zur Begutachtung der aufgenommenen Bilder. Darauf ist eine sehr gute Darstellung von Informationen möglich. Abbildung 1.7: Beispiel einer Digitalkamera Durch die wenigen Bedientasten ist nur eine menügeführte Eingabe sinnvoll. Damit gibt es keine Möglichkeit, eine PIN Nummer direkt mittels eines Zifferntastenblocks einzugeben. Die Rechenleistung der integrierten CPU dürfte (hier waren leider keine Herstellerangaben über die verwendeten Typen, den zur Verfügung stehenden Infor- 1.3. ÜBERBLICK - MOBILE GERÄTE 15 mationsmaterialien zu entnehmen) problemlos für Authentifikationsanwendungen ausreichen. Zur Kommunikation mit dem Heim PC verfügen Digitalkameras über serielle RS232 oder USB Schnittstellen. Diese können, geeignete Firmware vorausgesetzt, auch zur Erweiterung um andere Hardwarekomponenten genutzt werden. Manche Kameras bieten darüberhinaus auch eine IrDA Schnittselle. 1.3.1.4 Fazit Grundsätzlich bringen alle betrachteten Geräte die Voraussetzungen für eine mobile Authentifikation mit sich. Jedoch bedarf es in allen Fällen zusätzlicher Software bzw. Erweiterungen der integrierten Firmware. Siemens S35 Nokia 6210 Palm Vx Compaq iPAQ H3100 Cannon Powershot S20 (Mobiltelefon) (Mobiltelefon) (PDA) (PDA) (Digitalkamera) Dialogfähigkeit gut (ausreichnd. Display, Zifferntastatur) gut (ausreichnd. Display, Zifferntastatur) sehr gut sehr gut eingeschränkt (nur wenige Bedientasten) Marktverbreitung sehr hoch sehr hoch relativ hoch steigende Tendenz relativ hoch steigende Tendenz eher gering - jedoch steigend Chipkartenleser vorhanden - nur SIM vorhanden - nur SIM nicht vorhanden - erweiterbar nicht vorhanden - erweiterbar nicht vorhanden - theoretisch erweiterbar Hardware Erweiterbarkeit eingeschränkt eingeschränkt gut gut sehr eingeschränkt lokale Kommunikationsschnittstellen IrDA IrDA und Bluetooth IrDA IrDA keine Programmierbarkeit nur SIM Toolkit nur SIM Toolkit sehr gut sehr gut keine Tabelle 1.1: Vergleich verschiedener mobiler Gräte Aufgrund der freien Programmierbarkeit läßt sich dies am einfachsten mit PDAs realisieren. Die notwendige Software kann einfach in Form einer neuen Applikation installiert werden. Darüberhinaus besitzt diese Geräteklasse auch die beste HardwareErweiterungsfähigkeit und die, abgesehen von Laptops, welche aufgrund ihrer Größe gar nicht erst in die Betrachtung einbezogen wurden, komfortabelste Mensch-Maschine Schnittstelle. Digitale Kameras werden voraussichtlich trotz steigender Verkaufszahlen wie auch nor” male“ Fotoapparate nicht zum täglichen mobilen Begleiter werden. Aus diesem Grund und wegen ihrer relativ schlechten Eingabemöglichkeiten scheinen sie als mobiles Authentifzierungssystem wenig erfolgversprechend. 16 KAPITEL 1. GRUNDLAGEN Mobiltelefone sind die derzeit weit verbreitetsten mobilen Geräte. Zwar sind sie nicht so einfach programmierbar und ihr human Interfaces“ ist nicht so flexibel wie das ” der PDAs, jedoch im ausreichendem Maße geeignet. Notwendige Software muß derzeit noch als Erweiterung der Firmware realisiert werden. Mit dem absehbaren Zusammenwachsen der Produktgruppen PDA und Mobiltelefon wird diese neue Gerätegeneration die optimale Plattform für ein System zur mobilen Authentifikation sein. Der Mobiltelefonhersteller Sagem hat mit dem Modell WA 3050 bereits ein derartiges Gerät vorgestellt. Es handelt sich um eine Kombination aus GSM Mobiltelefon und WindowsCE basierendem Pocket PC. 1.3.2 Lokale Übertragungstechnologien Nahezu alle PDAs und immer mehr Mobiltelefone sind mit lokalen Übertragungstechnologien ausgerüstet. Diese werden heute meist zum drahtlosen Anschluß von Peripheriegeräten wie z.B. Modem oder Drucker, zum Austausch von Datenobjekten oder zur Synchronisation mit dem PC genutzt. Entsprechend ausgerüstete Mobiltelefone können auf diese Weise PDAs als Modem dienen. Die Möglichkeiten lokaler Kommunikation gehen jedoch weit über die heutige Verwendung hinaus. 1.3.2.1 IrDA Die IrDA Technologie ist hiervon die bisher am weitesten verbreitete Technik. Sie wurde ursprünglich von der Firma Hewlett-Packard ins Leben gerufen, welche immer noch das Patent auf die physikalische Schicht des Protokolls besitzt. Die weitere Entwicklung wird von der Infrared Data Association, einem Konsortium aus Hard- und Softwareherstellern, getragen. Sie hat zum Ziel eine kostengünstige, zuverlässige, energiesparende und herstellerübergreifend-kompatible Technologie zu etablieren, mittels welcher Computer und Peripheriegeräte, ohne Kabel verbunden werden können Das physikalische Medium zur Kommunikation ist Infrarotstrahlung. Es existieren zwei Standards zur Implementierung der physikalischen Schicht. IrDA SIR3 ermöglicht eine asynchrone halb-duplex Verbindung mit Datenraten von 2400 bis 115200 Bit/s. Dagegen ermöglicht FIR4 einen synchronen Datenaustausch mit bis zu 4 MBit/s. Es gibt bisher nur sehr wenige Geräte, welche den FIR Standard unterstützen. Der große Erfolg von IrDA SIR läßt sich mit der sehr einfachen und kostengünstigen Hardwareimplementierung erklären. Neben dem eigentlichen Ir-Transceiverbaustein ist ein serieller UART5 Baustein notwendig. Ein solcher UART ist bereits in den meisten Geräten, die mit einer serielle Schnittstelle wie z.B. RS-232 ausgestattet sind, vorhanden. 3 Serial Infrared Fast (Serial) Infrared 5 Universal Asynchronous Receiver-Transmitter 4 1.3. ÜBERBLICK - MOBILE GERÄTE 17 Mittels IrDA können Daten bis zu einer Entfernung von maximal zwei Meter übertragen werden. Darüberhinaus ist eine direkte Ausrichtung der beiden IrTransceiver aufeinander sowie freie Sichtverbindung notwendig. Die exakten Spezifikationen sind in [PQT98] nachzulesen. Applications IrLAN OBEX IrCOMM IAS Tiny TP IrLMP IrLAP physical layer Abbildung 1.8: IrDA Protokoll-Stack Fester Bestandteil einer IrDA konformen Implementierung sind auch die beiden Protokolle IrLAP [WHN+ 96] und IrLMP [SWN96] auf Schicht zwei des ISO/OSI Netzwerkmodells. Darüberhinaus existieren noch eine Vielzahl an weiteren Protokollspezifikationen auf höheren Schichten, die ein weites Feld an Einsatzmöglichkeiten abdecken [MSK]. 1.3.2.2 Wireless LAN Die Entwicklung des Wireless LAN Standards hatte zum Ziel, den Zugriff auf LAN Infrastrukturen unabhängig von Kabeln zu ermöglichen. 1997 veröffentlichte das IEEE6 dazu den endgültigen Entwurf mit der Bezeichnung IEEE 802.11 [oEE99a]. Wie bereits seine Bezeichnung zeigt, stellt dies eine Erweiterung des bekannten EthernetStandards auf eine drahtlose Variante dar. Zur Implementierung der physikalischen Übertragung existieren Spezifikationen für zwei unterschiedliche Medien. • Infrarotstrahlung • Funkwellen Die auf Infrarot basierende physikalische Schicht nutzt, ähnlich wie bei IrFIR, PPM7 zur Übertragung und erlaubt Datenraten bis zu 2 MBit/s. Diese Technik hat jedoch heute kaum Bedeutung. 6 7 Institute of Electrical and Electronic Engineering Pulse Position Modulation 18 KAPITEL 1. GRUNDLAGEN Die Übertragungstechnik via Funk arbeitet im 2,4 GHz ISM8 Band, welches weltweit lizenzfrei genutzt werden darf. Diese Nutzung ist an einige Auflagen gebunden. Abgesehen davon, daß die Sendeenergie beschränkt ist, muß sie auch gleichmäßig über das gesammte dafür vorgesehene Spektrum verteilt werden. Um das zu erreichen, erlaubt IEEE 802.11 zwei sogenannte Spread Spectrum Verfahren. • FHSS:9 Diese Technik nutzt herkömmliche Schmalband-Übertragungsverfahren, wechselt jedoch, einem dem Sender und Empfänger bekannten Schema folgend, die Übertragungsfrequenz. Es müssen 79 unterschiedliche Trägerfrequenzen verwendet werden, wobei die maximale Verweildauer auf einer Frequenz 20 ms beträgt. Der Betrieb mehrerer unabhängiger Funk LANs, innerhalb gegenseitiger Reichweite, ist durch die Verwendung unterschiedlicher Sprungsequenzen möglich. Die angewendete Modulationstechnik ist GFSK10 • DSSS:11 Hierbei wird die Bandbreite des Nutzsignals künstlich verbreitert, indem man es mit einem Spreizcode faltet. IEEE 802.11 verwendet dazu eine sog. Barker-Sequence, dabei wird jedes Nutzbit durch eine 11 Bit lange Sequenz repräsentiert, wodurch die Information über das gesammte Spektrum verteilt wird. Durch Kenntnis des Spreizcodes kann der Empfänger aus dem, unter dem Rauschpegel liegendem Übertragungssignal, das Nutzsignal wiedergewinnen. Der gegenseitig störungsfreie Betrieb unterschiedlicher WLANs12 ist durch unterschiedliche Barker-Sequenzen möglich. Es können BPSK13 und QPSK14 als Modulationstechniken verwendet werden. Mittels beider Verfahren kann eine maximale Datenrate von 2 MBit/s erreicht werden. Die Spezifikation beinhaltet neben der physikalischen Schicht auch die beiden Schicht2-Protokolle MAC15 und LLC16 . Während in diesen unteren Schichten viele Besonderheiten des drahtlosen Mediums berücksichtigt werden müssen, verhalten sich IEEE 802.11 Netzwerkkarten für Anwendungen oberer Schichten wie normale kabelgebundene Ethernet-Schnittstellen. Im September 1999 wurde mit dem Standard IEEE 802.11b [oEE99c] eine Erweiterung der physikalischen Schicht verabschiedet. Diese beschränkt sich auf das DSSS Verfahren und erhöht durch ein weiterentwickeltes Kodierungsverfahren CCK17 die Übertragungsdatenrate auf bis zu 11 MBit/s. 8 Industry, Scientific, and Medical - 2,402 bis 2,480 GHz Frequency Hopping Spread Spectrum 10 Gaussian Frequency Shift Keying 11 Direct Sequence Spread Spektrum 12 Wireless LANs 13 Binary Phase Shift Keying 14 Quadrature Phase Shift Keying 15 Media Access Control 16 Logical Link Control 17 Complementary Code Keying 9 1.3. ÜBERBLICK - MOBILE GERÄTE 19 Applications OBEX HTTP SMTP ... TCP/IP Logical Link Control (LLC) Medium Access Control (MAC) DSSS physical FHSS physical IR physical Abbildung 1.9: IEEE 802.11 Wireless LAN Protokoll-Stack Darüberhinaus existiert die Norm IEEE802.11a [oEE99b], welche eine Übertragung im 5 GHz Band mit bis zu 54 MBit/s definiert. Bisher waren Hersteller, vor allem aus Kostengründen, sehr zurückhaltend derartige Geräte zu entwickeln. Mit der Verfügbarkeit preisgünstiger geeigneter Chipsets in CMOS Technologie in naher Zukunft wird sich dies voraussichtlich rasch ändern. IEEE 802.11 konforme Geräte verschiedener Hersteller sind, sofern sie dieselbe Übertragungstechnik nutzen, prinzipiell untereinander kompatibel, was sich jedoch in der Praxis oft als schwierig erweist. 1.3.2.3 Bluetooth 1994 wurde bei der Firma Erricson eine Studie in Auftrag gegeben welche Technologien zum drahtlosen Ersatz von Verbindungskabeln zwischen elektronischen Geräten untersuchen sollte. Aufgrund der vielversprechenden Ergebnisse wurde 1998 die Bluetooth SIG18 gegründet. Gründungsmitglieder waren die Firmen Erricson, Nokia, IBM, Toshiba und Intel. Diese veröffentlichten im September 1999 die verbindlichen Spezifikationen [SIG01a] [SIG01b] in der Version 1.0. Der Name Bluetooth rührt im übrigen vom Harald Blåtand (engl. Bluetooth) einem Vikingerkönig des 10. Jahrhunderts her, welcher große Teile Skandinaviens christianisierte. Diese Namensgebung zollt dem großen skandinavischen Anteil an der Entwicklung Tribut. Der ursprüngliche Einsatzzweck dieser Technologie ähnelt dem von IrDA sehr. Ihr Ansatz ist jedoch universeller und soll als Kabelersatz für alle Informationen transportierenden Kabelverbindungen dienen. Durch die Verwendung von Funkwellen als Kommunikationsmedium umgeht es die Einschränkungen, der direkten Sichtverbindung und 18 Special Interest Group 20 KAPITEL 1. GRUNDLAGEN der exakten Ausrichtung der Kommunikationspartner, welche IrDA anhaften. Im Gegensatz zu IrDA unterstützt Bluetooth auch Point-to-Multipoint Verbindungen und bietet mit etwa 1 MBit/s im Vergleich zu IrDA SIR eine wesentlich höhere Übertragungsgeschwindigkeit. Wie IrDA ist Bluetooth als Technologie für den Einsatz in Massenprodukten“ konzipiert. Daher wurde auf eine preisgünstige Implementierung ” Wert gelegt. Komplette Bluetooth Module kosten heute zwischen 20 und 30 US Dollar. In einer erwarteten Massenproduktion wird der Preis auf einen Bruchteil davon sinken. Zudem sind mehrere Betriebsmodi spezifiziert, mittels welcher sich der Stromverbrauch auf das minimal Benötigte beschränken läßt. Dies ist im Haupteinsatzbereich, den mobilen Geräten, äußerst wichtig. Bluetooth arbeitet wie auch Wireless LAN IEEE 802.11 im lizenzfreien 2,4 GHz ISM Band. Die Verteilung der Sendeenergie wird hier ausschließlich durch das Frequenzsprung Verfahren FHSS erreicht. Eine weitere Gemeinsamkeit mit IEEE 802.11 ist die GFSK Modulation des Signals. Innerhalb des gegeben Rahmens von drei Leistungsklassen lassen sich mit Bluetooth-Geräten Reichweiten zwischen 10 cm und 100 m erreichen. Der typische Einsatzradius liegt bei etwa 10 m, wobei die Auslegung auf die Kommunikation im Nahfeld deutlich wird. Bluetooth spezifiziert verschiedene Übertragungskanäle. Eine Kommunikationsverbindung kann aus bis zu 3 synchronen Kanälen SCO19 mit jeweils 64 kBit/s und einem asynchronen Kanal ACL20 mit typischerweise 721 kBit/s und 57,6 kBit/s in der Gegenrichtung bestehen. Der asynchrone Kanal kann wahlweise auch symmetrisch mit 432,6 kBit/s in beiden Richtungen betrieben werden. Die synchronen Kanäle sind hauptsächlich zur Sprachübertragung gedacht. Auf ihnen findet bei Paketverlust, im Gegensatz zum ACL Kanal, keine Neuübertragung statt. Applications JINI SDP OBEX TCP/IP RFCOMM L2CAP Link Manager ACL SCO baseband bluetooth radio Abbildung 1.10: Bluetooth Protokoll Stack Bluetoothfähige Geräte haben die Eigenschaft selbständig zu erkennen, ob ein geeigneter Kommunikationspartner in Reichweite ist, um automatisch eine Verbindung zu 19 20 Synchronous Connection Orientated Asynchronous Connectionless 1.4. KRYPTOLOGIE 21 diesem aufzubauen. Einen Zusammenschluß von Geräten, die auf dem selben Übertragungskanal arbeiten, bezeichnet man als Piconet. Ein solches Piconet kann aus maximal 8 Geräten bestehen. Ein Gerät ist hierbei immer der Master, welcher die Kommunikation der übrigen Slaves steuert. Mehrere Piconet können sich zu einem Scatternet zusammenschließen, indem sie einen gemeinsamen Slave zur Kommunikation nutzen. Insgesamt bietet Bluetooth, durch eine hohe Frequenzsprungfrequenz und einer im Vergleich zu Wireless LAN kürzeren Packetlänge, eine sehr robuste Übertragungstechnik. Bei einer hohen Verbreitung von Bluetooth Anwendungen ist daher im Nahbereich eher mit Störungen von IEEE 802.11 Installationen zu rechnen als umgekehrt. 1.3.2.4 Weitere Verfahren Weitere in diesem Zusammenhang nennenswerte lokale Übertragungsverfahren sind: • HyperLAN2 • HomeRF Aufgrund der derzeit geringen Verbreitung dieser Technologien werden diese hier nicht weiter betrachtet. 1.3.2.5 Fazit Prinzipiell sind alle vorgestellten Verfahren als Kommunikationsmittel für ein Authentifizierungsystem nutzbar. Wireless LAN ist von seiner Zielsetzung mehr auf klassische LAN Anwendungen ausgelegt und daher mit einem durchschnittlichen Preis von derzeit ca. 300 DM pro Netzwerkadapter für Geräte der betrachteten Kategorie weniger geeignet. IrDA und Bluetooth sind von ihren Eigenschaften gleichermaßen gut einsetzbar. Wobei IrDA kurzfristig aufgrund seiner bereits hohen Verbreitung die aussichtsreichere Technologie ist. Bluetooth ist dagegen die universellere und komfortablere Variante. Sie hat die Voraussetzungen in Zukunft weitgehend IrDA abzulösen. Während einer Übergangsphase werden beide Technologien nebeneinander existieren. 1.4 1.4.1 Kryptologie Einführung Kryptologie ist der Oberbegriff für die beiden wissenschaftlichen Disziplinen Kryptographie und Kryptoanalyse. Während die Kryptologie Verfahren entwickelt, die es ermöglichen, Nachrichten über öffentliche Kanäle zwischen Parteien auszutauschen, 22 KAPITEL 1. GRUNDLAGEN ohne daß Unbefugte den Inhalt erfahren können, versucht die Kryptoanalyse diese Verfahren zu brechen. Die Verschlüsselung ist der Vorgang, welcher die ungeschützte Nachricht im Klartext (Plaintext) in den Chiffretext (Cipertext) überführt. Die Entschlüsselung kehrt dies wieder um. Damit zwei Partner auf diese Weise sicher miteinander kommunizieren können, müssen sie sich zuvor über ein einheitliches Verschlüsselungsverfahren geeinigt haben. Darüber hinaus benötigen sie ein Geheimnis, den sogenannten Schlüssel. Ob Sender und Empfänger über ein gemeinsames Geheimnis verfügen müssen, hängt vom eingesetzten Verfahren ab. Die Menge aller, für ein Verfahren möglicher Schlüssel, heißt Schlüsselraum. Es ist immer davon auszugehen, daß ein möglicher Angreifer Kenntnis über den zur Verschlüsselung verwendeten Algorithmus erlangen wird, daher prägte bereits im 19. Jahrhundert Kerckhoff die Maxime: Die Sicherheit eines Kryptosystems darf nicht von der Geheimhaltung des Algorithmus abhängen. Die Sicherheit gründet sich nur auf die Geheimhaltung des Schlüssels. Abgesehen von der reinen Verschlüsselung, sind mit den Methoden der Kryptographie auch folgende wichtige Sicherheitsdienste zu realisieren: • Vertraulichkeit: Dies ist obig beschriebene Grundmotivation der Kryptologie. Der Inhalt eines Dokuments oder einer Nachricht ist vor unbefugter Kenntnisnahme zu schützen. • Authentikation: Der Empfänger muß sich von der Identität des Absenders oder Verfassers einer Nachricht, zweifelsfrei überzeugen können. • Integrität: Wichtig ist hierbei auch die Sicherstellung, daß der Inhalt einer Nachricht während der Übertragung nicht, etwa durch Einwirkung Dritter, verändert worden ist. • Verbindlichkeit: Ist die Identität eines Verfassers festgestellt, soll er auch nicht die Möglichkeit besitzen sie zu leugnen. Kryptographische Verfahren sind die Grundlage zur Authentikation und zur sicheren Kommunikation zwischen Nutzer und PoA im Konzept dieser Arbeit. Dieses Kapitel soll einen Überblick über die Methoden der Kryptologie vermitteln, indem es wichtige Verfahren kurz vorstellt. Es erhebt keinen Anspruch auf Vollständigkeit. Eine umfassendere Betrachtung dieses Gebietes und vor allem auch der mathematischen Grundlagen ist in [Beu91] und [ldv00] zu finden. 1.4. KRYPTOLOGIE 1.4.2 23 Kryptographische Grundverfahren Die in der Einführung erwähnten Dienste, werden durch die verschiedenen kryptographischen Methoden und deren Kombinationen realisiert. 1.4.2.1 Stromverschlüsselung Stromverschlüsselungsverfahren behandeln den Eingabetext zeichen- bzw. bitweise. Sie sind gut in Hardware implementierbar und eigenen sich besonders zur Verschlüsselung in Echtzeit. Ein Beispiel hierfür ist der Vernam-Ciper. Er basiert auf der Theorie des one-time-pads. Ein one-time-pad bietet theoretisch und praktisch vollkommene Sicherheit. Jedes Bit der Nachricht wird mit einem zufällig erzeugtem Bit verknüpft. Das hat jedoch zur Folge, daß der zur Dekodierung notwendige Schlüssel dieselbe Länge wie die Nachricht selbst hat. Zudem ist es notwendig, diesen Schlüssel auf sicherem Wege zu übertragen, was den Sinn der Verschlüsselung weitgehend in Frage stellen würde, da mit demselben Aufwand auf dem sicheren Kanal die Nachricht selbst hätte übertragen werden können. Daher wird keine echte Zufallsfolge erzeugt, sondern ein PseudoZufallsgenerator mit bekannten Konfigurationsparametern verwendet. Diese Parameter reichen zur Reproduktion der Zufallsfolge auf der Empfängerseite aus. Somit sind sie der verwendete Schlüssel, womit sich die Sicherheit wieder auf die Kenntnis dieses Schlüssels reduziert. 1.4.2.2 Blockverschlüsselung In diese Kategorie fallen die meisten heute gebräuchlichen Verschlüsselungsmethoden. Dabei wird der Klartext in Blöcke gleicher Größe aufgeteilt, welche dem verwendeten Algorithmus als Eingabe dienen. Da gleiche Klartextblöcke in gleiche Chiffretextblöcke überführt werden, ließen sich Rückschlüsse auf den Nachrichteninhalt ziehen. Bei der Verschlüsselung von Kommunikationsprotokollen treten in Form von Paket-Headern in regelmäßigen Abständen gleiche Informationen auf. Um diese offensichtliche Schwachstelle zu umgehen gibt es verschiedene Verfahren der Blockbildung: • ECB (Electronic Code Book): Hier werden keinerlei Maßnahmen gegen dieses Problem unternommen. Das hat den Vorteil, daß jeder Block unabhängig vom anderen ist, und Übertragungsfehler sich nur auf den aktuellen Block beziehen. • CBC (Ciper Block Chaining): Bei diesem Verfahren wird das Ergebnis der Verschlüsselung des vorhergehenden Blocks in die Verschlüsselung des nächsten miteinbezogen. Dadurch wird erreicht, daß gleiche Klartextblöcke niemals in gleichen Cipertext Blöcken resultieren. Von Übertragungsfehlern sind jeweils der aktuelle und der darauffolgende Block betroffen. • CFB (Ciper Feedback): Dies ist eine stromorientierte Variante des CBC Verfahrens. Der vorangehende Chiffreblock dient als Eingabe. Das Ergebnis wird mit 24 KAPITEL 1. GRUNDLAGEN einem Teil des nächsten Klartextblockes verknüpft. Die Eigenschaften sind ähnlich dem CBC, jedoch ist die Fehlerfortpflanzung nur noch die Blocklänge plus der Länge des Teils des Klartextblockes. • OFB (Output Feedback ): Auch dies ist eine stromorientierte Variante des CBC, jedoch ohne Fehlerfortpflanzung. Der Empfänger muß selbstverständlich neben dem korrekten Schlüssel auch über eine entsprechend inverse Implementierung der Blockbildung verfügen, um den Klartext wiederherzustellen. 1.4.2.3 Symmetrische Verfahren Symmetrische Verschlüsselungen sind die am längsten bekannten Verfahren. Sie beruhen darauf, daß sowohl Sender als auch Empfänger über den selben Schlüssel verfügen, welcher zum Ver- und Entschlüsseln benutzt wird. Es ist notwendig dieses Geheimnis einmal auf sicherem Wege ausgetauscht zu haben, bevor eine verschlüsselte Kommunikation möglich wird. Ein Nachteil ist dabei, daß, sobald eine große Personengruppe auf diese Weise miteinander kommunizieren möchte, eine sehr hohe Zahl an Schlüsseln auszutauschen sind. Möchten N Personen jeweils mit jeder Person auf diese Weise N Nachrichten versenden, sind 2 = N (N2−1) Schüssel notwendig. Bei 1000 Personen sind das bereits 499500 Schlüssel, die auf sicherem Wege übertragen worden sein müssen. Eine spontane Kommunikation mit bisher unbekannter Partnern ist damit, ohne spezielle Schlüsselaustausch-Protokolle, unmöglich. 1.4.2.4 Asymmetrische Verfahren Asymmetrische Verfahren können diese beiden Probleme lösen und ermöglichen erst Dienste wie z.B. die digitale Signatur. Mit ihrer Entdeckung“ 1976 durch Whitfield ” Diffie und Martin Hellmann sind sie eine relativ junge Technologie. Jeder Teilnehmer eines asymmetrischen Verschlüsselungssystems benötigt zwei Schlüssel. Einen geheimen private key, den nur er kennt und einen öffentlichen publickey. Das Verfahren wird deshalb als asymmetrisch bezeichnet, da eine, mit einem der beiden Schlüssel kodierte Nachricht, nicht mit dem selben Schlüssel wieder dekodierbar ist, sondern nur mit dem zugehörigem anderen Schlüssel. Der public-key kann somit bedenkenlos veröffentlicht, und etwa in Form einer telefonbuchartigen Datenbank jedermann zugänglich gemacht werden. Möchten nun zwei Partner A und B miteinander kommunizieren, so benötigen sie gegenseitig die jeweils öffentlichen Schlüssel. Wenn A nun eine Nachricht mit dem public-key von B verschlüsselt, kann nicht einmal er selbst sie wieder entschlüsseln, sondern nur B mit seinem private-key. Ein Kreis von N Personen benötigt somit nur noch 2N Schlüssel. Davon werden jeweils nur die öffentlichen Schlüssel getauscht, wofür kein sicherer Kanal notwendig ist. 1.4. KRYPTOLOGIE 25 Zwischen private- und public-key besteht ein mathematischer Zusammenhang. Damit das Verfahren sicher ist, muß das zugrundeliegende Problem jedoch so komplex sein, daß eine Ableitung des privaten Schlüssels auch bei Einsatz hoher Rechenleistung nicht in angemessener Zeit berechenbar ist (z.B. mehr als 109 Jahre in Anspruch nähme). Solche komplexen Probleme sind z.B. die Faktorisierung großer Zahlen oder die Berechnung des diskreten Logartithmus. 1.4.2.5 Hybride Verfahren Alle heute bekannten asymmetrischen Algorithmen besitzen den Nachteil, daß sie sehr viel Rechenleistung benötigen, und daher besonders auf Systemen mit eingeschränkten Resourcen langsam sind. Hybride Verfahren umgehen diesen Nachteil und erhalten trotzdem die Vorteile asymmetrischer Verfahren. Sie nutzen asymmetrische Verschlüsselung zu Beginn der Kommunikation um einen, zufällig gewählten, Session Key für die folgende Übertragung auszutauschen. Dieser Session Key wird als Schlüssel für die synchrone Verschlüsselung der eigentlichen Übertragung eingesetzt. Durch seine, im Vergleich zur eigentlichen Nachricht mit 56 bis 128 Bit geringen Länge, ist dessen asymmetrische Verschlüsselung nicht zeitkritisch. 1.4.2.6 Hash Funktionen Einwege-Hash Funktionen bilden zu einer beliebig langen Nachricht eine individuelle Prüfsumme fester Länge. Diese Prüfsumme ist eine Art einmaliger Fingerabdruck einer Nachricht, mittels welcher die Integrität der Nachricht nachgewiesen werden kann. Typische Längen für einen Hashwert sind zwischen 64 und 256 Byte. Damit ein Algorithmus als Einwege-Hash Funktion brauchbar ist, muß er folgenden Anforderungen genügen: • Es darf nicht möglich sein, ausgehend von einem gegebenen Hashwert, eine passende Nachricht zu konstruieren! • Der Hashwert muß von der gesamten Nachricht abhängen! • Eine kleine Änderung im Nachrichtentext muß eine große Änderung im Hashwert verursachen! • Die Funktion soll kollisonsfrei sein, d.h. es soll praktisch nicht möglich sein zwei Nachrichten zu finden, die den selben Hashwert haben! Eine Sonderform einer Hash Funktion stellt der MAC (Message Authentification Code) dar. Dieser benötigt zur Bildung des Hashwerts einen geheimen Schlüssel. Somit ist neben der Integrität auch die Authentizität sichergestellt. Jede Einwege-Hash Funktion kann zu einer MAC Funktion erweitert werden, indem ihr Ergebnis mit einem Kryptoalgorithmus verschlüsselt wird. 26 KAPITEL 1. GRUNDLAGEN 1.4.2.7 Digitale Signatur Mit den Methoden der Hashwert-Bildung und asymmetrischer Verschlüsselung lassen sich die Dienste Integrität, Authentikation und Verbindlichkeit erreichen. Dies sind die geforderten Leistungen für eine elektronische Unterschrift (digitale Signatur). Um eine Nachricht zu unterzeichnen, wird von dieser der Hashwert gebildet und mittels dem privaten Schlüssel seines Urhebers chiffriert. Der Unterschied zu einem auf symmetrischer Verschlüsselung basierendem MAC besteht darin, daß die digitale Signatur von jedermann mittels dem öffentlichen Schlüssel des Verfassers verifiziert werden kann. Eine derartige Signatur ist darüberhinaus untrennbar mit der eigentlichen Nachricht verknüpft und wird nicht, wie die handschriftliche Unterschrift, nur hinzugefügt. Um das Verfahren wirklich gegen Betrug abzusichern, ist unbedingt sicherzustellen, daß der veröffentlichte public key auch wirklich an die Person des Verfassers gebunden ist (siehe dazu 1.4.6). 1.4.3 Ausgewählte Algorithmen 1.4.3.1 DES DES21 ist ein symmetrischer Blockverschlüsselungs-Algorithmus. Er verwendet in seiner ursprünglichen Form eine Blocklänge von 64 Bit und einen 56 Bit langen Schlüssel. Die Verschlüsselung beruht auf einer Folge von Transpositionen und Substitutionen, die in mehreren Verschlüsselungsrunden durchgeführt werden. Das Verfahren wurde ursprünglich von IBM entwickelt und 1974 veröffentlicht. Nach ausgiebiger öffentlicher Diskussion und einigen Verbesserungen wurde es 1977 vom NBS22 zum StandardVerschlüsselungsalgorithmus der USA erklärt. DES ist einer der am weitesten verbreiteten Kryptoalgorithmen. Es existieren viele Implementierungen in Hardware, jedoch ist dieser Algorithmus auch in Software ausreichend schnell. Die geringe Schlüssellänge von nur 56 Bit macht ihn allerdings, mit den heute verfügbaren Rechenleistungen, für Brute-Force Attacken anfällig, so daß DES mit 56 Bit Schlüssel heute als nicht mehr sicher angesehen werden kann. Triple-DES (3DES) erhöht die Schlüssellänge auf das zwei- bzw. dreifache. 3DES führt das bekannte DES Verfahren dreimal hintereinander durch, womit jedoch nicht nur die Sicherheit, sondern auch die Verarbeitungszeit stark ansteigen. Durch Verwendung heute bekannter Angriffsmethoden und gemessen an der voraussichtlichen Entwicklung der Rechnertechnik, ist diese Schlüssellänge für absehbare Zeit als sicher anzusehen. 21 22 Data Encryption Standard National Bureau of Standards 1.4. KRYPTOLOGIE 1.4.3.2 27 IDEA IDEA23 ist wie DES eine symmetrische Blockchiffre mit einer Blocklänge von 64 Bit. Im Gegensatz zu DES nutzt dieser aber 128 Bit lange Schlüssel. Dieser Algorithmus wurde 1990 von Xuejia Lai und James Massey entwickelt und 1991 in einer verbesserten Version standardisiert. Er ist weitgehend resistent gegen Brute-Force Attacken und differentielle Kryptoanalyse. Trotz seines geringen Alters wurde er schon vielen Analysen unterzogen und könnte ein möglicher Nachfolger des DES Verfahrens werden. 1.4.3.3 RSA Beim RSA24 Verfahren handelt es sich um eine asymmetrische Verschlüsselung (publickey-Kryptosystem). Die Namensgeber des Verfahrens setzten damit 1978 die Idee eines asymmetrischen Kryptosystems, wie es von Diffie und Hellmann 1976 vorgeschlagen wurde, mittels klassischer Zahlentheorie um. Obwohl es eine Reihe weiterer Implementierungen asymmetrischer Kryptosysteme gibt, ist RSA das bekannteste und am meisten diskutierte Verfahren. Es beruht im wesentlichen auf dem Satz von Euler. Es verwendet einen öffentlichen Schlüssel, bestehend aus dem eigentlichen publickey e und dem Modul n. Die Wahl von e ist nicht von Bedeutung und kann somit auf einen, die Berechnungen vereinfachenden, Wert von z.B. e = 216 + 1 = 65537 = 10001h festgesetzt werden. Das Modul n ist das Produkt zweier Primzahlen p und q. Seine Länge bildet die eigentliche Schlüssellänge. Es ist für die Sicherheit relevant, daß p und q echte Zufallszahlen sind und sich in ihrer Länge um mindestens 20 Bit unterscheiden. Zwischen dem Modul n und dem private-key d besteht über die Euler’sche Funktion Φ(n) ein Zusammenhang: Φ(n) = (p − 1)(q − 1) e · d ≡ 1 mod Φ(n) Die Sicherheit des Verfahrens hängt damit von der Schwierigkeit der Faktorisierung des Moduls n, d.h. von der Ermittlung der beiden Primzahlen p und q ab. Eine solche Faktorisierung ist, bei genügend großem n, ein mathematisch schwierig zu lösendes Problem. Ab einer bestimmten Größe von n ist eine Berechnung nicht mehr in einem praktikablen Zeitraum durchzuführen. 1999 wurde erstmals eine 512 Bit lange Zahl mittels 300 Computern in 7 Monaten faktorisiert. Schüssel, ab einer Länge von 768 Bit, werden heute für weniger kritische Anwendungen als ausreichend sicher eingeschätzt. Bei erhöhten Anforderungen sollten Schlüssellängen zwischen 1024 und 2048 Bit verwendet werden. 23 24 International Data Encryption Algorithm Rivest, Shamir und Adleman 28 KAPITEL 1. GRUNDLAGEN Auch RSA ist ein Blockalgorithmus. Die Blocklänge darf dabei maximal der Länge des Moduls n entsprechen. Jeder Nachrichtenblock m wird als natürliche Zahl interpretiert und gemäß: c = (me ) mod n kodiert d e d (c ) mod n = (m ) mod n = m dekodiert Im Vergleich zu symmetrichen Algorithmen sind hier, zur Erreichung der gleichen Sicherheit, wesentlich längere Schlüssel notwendig. Das resultiert aus der Tatsache, daß während bei symmetrischer Verschlüsselung i.d.R. nur Brute-Force Attacken 1.4.4 anwendbar sind, zur Faktorisierung großer Zahlen im Vergleich dazu relativ effektives Verfahren existieren. 1.4.3.4 ElGamal Methode Auch der 1985 von Taher El Gamal entwickelte Algorithmus ist ein asymmetrisches Verfahren. Seine Sicherheit beruht auf dem Problem des diskreten Logarithmus, welches noch schwieriger zu lösen ist, als die Faktorisierung großer Zahlen. Daher werden derzeit bei dieser Methode bereits Schlüssellängen von mehr als 512 Bits als sicher eingestuft. Eine Variante dieses Verfahrens zur digitalen Signatur wurde 1991 von der NIST25 zum einheitlichen DSS26 der USA erklärt. 1.4.3.5 EEC elliptische Kurven Seit etwa 1985 befaßt sich die Kryptologie mit Verschlüsselungsverfahren basierend auf elliptischen Kurven über endliche Körper. Eine elliptische Kurve ist eine mathematische Struktur mit den Parametern a und b der Menge von Punkten, welche eine Gleichung der Form: y 2 = x3 + ax + b erfüllen. Als Nebenbedingung muß die Diskriminante 4a3 + 27b2 6= 0 sein. Die Kurve E(k), ein Punkt P auf dieser Kurve und der eigentliche öffentliche Schlüssel Q (ebenfalls ein Kurvenpunkt) werden zur Verschlüsselung verwendet. Q ist dabei aus P durch mehrfache Addition um den Faktor k auf der Kurve hervorgegangen. Nur mit Kenntnis von k ist eine Entschlüsselung möglich. k ist somit der private Schlüssel in diesem Verfahren. Das Problem k aus den öffentlich bekannten Parametern zu berechnen, ist ähnlich wie beim ElGamal Verfahren, das des (additiven) diskreten Logarithmus. Da jedoch für die Berechnung des diskreten Logarithmus in einer Punktegruppe elliptischer Kurven 25 26 National Institute of Standards and Technology Digital Signature Standard 1.4. KRYPTOLOGIE 29 nur sehr allgemeine Verfahren existieren, sind die bisher bekannten schnellen diskreten Logarithmus Algorithmen hier nicht anwendbar. Somit reichen wesentlich geringere Schlüssellängen aus, um eine, zu anderen asymmetrischen Verfahren äquivalente, Sicherheit zu bieten. Ein 97 Bit langer Schlüssel eines EEC Verfahrens ist schwieriger zu brechen, als ein 512 Bit Schlüssel einer, auf dem Problem der Faktorisierung basierenden Methode. Diese Tatsache macht EEC Verfahren besonders für Plattformen, auf denen nur sehr beschränkte Resourcen an Speicherplatz und Rechenleistung zur Verfügung stehen wie z.B. bei Mobiltelefonen interessant. 1.4.4 Kryptoanalyse Kryptoanalyse ist ein wichtiger Bestandteil der Kryptologie. Erst wenn bewiesen ist, daß ein Verschlüsselungsverfahren gegen alle bekannten Angriffsformen immun ist, kann es als sicher eingestuft werden. Je nach den gegebenen Voraussetzungen existieren folgende Angriffsmethoden: • Cipertext-only-Attack: Dies ist der klassische Angriff. Dem Angreifer steht ein, z.B. durch Abhören erbeutetes, Stück des verschlüsselten Textes zur Verfügung. • Known-plaintext-Attack: Hier ist neben dem verschlüsselten Text auch das zugehörige Stück des Klartextes vorhanden. • Choosen-plaintex-Attack: Bei dieser Form des Angriffs verfügt der Gegner über Zugang zum Verschlüsselungssystem mit dem Schlüssel k. Er kann k jedoch nicht auslesen, aber beliebige Texte damit verschlüsseln. Durch geschickte Wahl der Eingabetexte lassen sich so leichter Rückschlüsse auf den Schlüssel ziehen. • Choosen-cipertext-Attack: Dies ist ähnlich dem Choosen-plaintex-Attack, nur daß hier Zugang zum Entschlüsselungsystem besteht. • Brute-Force-Attack: Diese Form des Angriffs ist eigentlich ein Spezialfall der Cipertext-only-Attack. Wegen seiner Bedeutung ist er hier jedoch separat aufgeführt. Wie der Name schon andeutet ist dies kein sonderlich intelligentes Verfahren, sondern probiert systematisch alle möglichen Schlüssel durch, bis ein sinnvoller Klartext gefunden wird. Ist dies der Fall, ist der gesuchte Schlüssel gefunden. Diese Methode ist prinzipiell auf jedes Verschlüsselungsverfahren anwendbar. Es ist nur eine Frage der Zeit, bis der Schlüssel gefunden ist. 30 KAPITEL 1. GRUNDLAGEN 1.4.5 Kryptographische Protokolle 1.4.5.1 Schlüsseltausch - Diffie-Hellmann Verfahren Ein Schlüsselaustausch ist immer dann notwendig, wenn zwei Parteien zum ersten Mal (in der Praxis finden sogenannte Session-Keys Verwendung, welche nicht nur bei der ersten Kommunikation getauscht werden, sondern aus Sicherheitsgründen vor jeder Kommunikation neu) mittels symmetrischer Verschlüsselung kommunizieren möchten. Ist dafür bei Verbindungsaufbau noch kein sicherer Kanal vorhanden, benötigt man Verfahren welche trotzdem einen sicheren Austausch gewährleisten. Mittels asymmetrischer Verfahren ist dies möglich. Eine Partei wählt eine Zufallszahl als Session-Key, verschlüsselt diese mit dem öffentlichen Schlüssel der anderen Partei und überträgt das Ergebnis. Nur die entsprechende Gegenstelle kann mittels seinem private key den Session-Key entschlüsseln. g ∈ [2,n-1] ∈ GF(p) sind öffentlich bekannt A k= a B wählt Zufallszahl a und berechnet =g a mod p wählt Zufallszahl b und berechnet =g b mod p berechnet mod p=g ab mod p berechnet k= b mod p=g ab mod p Abbildung 1.11: Diffie-Hellmann Schlüsseltausch Bei diesem Verfahren muß einer der Kommunikationspartner die aktive Rolle ergreifen und einen Session-Key bestimmen. Das Diffie-Hellmann Verfahren dagegen erreicht beim Schlüsseltausch völlige Gleichberechtigung beider Partner. Das 1976 erstmals veröffentlichte Protokoll arbeitet auf der Basis des diskreten Logarithmus. Zu dessen Durchführung müssen eine Primzahl p und eine Basis g öffentlich bekannt sein. Beide Partner wählen dann eine Zufallszahl. Nach Beendigung des Protokolls besitzen beide einen gemeinsamen geheimen Schlüssel k, welcher aus diesen Parametern entsteht. Ein Angreifer erfährt durch Abhöhren dieser Austauschs jedoch keine brauchbaren Informationen. In [ldv00] ist der Ablauf anschaulich dargestellt. 1.4.5.2 Authentifikation - Challenge-Response Methode Dieses Verfahren bietet die Möglichkeit einen Benutzer zu authentifizieren, ohne geheime Schlüssel zu übertragen. Es löst damit das Problem jemanden vom Besitz eines Geheimnisses zu überzeugen, ohne dabei das Geheimnis preisgeben zu müssen. 1.4. KRYPTOLOGIE 31 Dazu sendet das Authentikationsystem eine Zufallszahl (Challenge) an den Benutzer. Diese wird mit dem geheimen Schlüssel k des Benutzers verschlüsselt und an das Authentifikationssystem zurückgesendet (Response). Das Authentikationsystem kann nun durch die Entschlüsselung der Antwort mit dem selben Schlüssel k und dem anschließenden Vergleich, die Authentizität feststellen. A B wählt Zufallszahl r challenge = r berechnet crypt (r) response = crypt (r) überprüft ob r = crypt-1(response) Abbildung 1.12: Das Challenge-Response Verfahren Somit ist dieses Verfahren im Grunde ein two-way protocol. Handelt es sich jedoch um eine Mehrbenutzersystem, ist es zusätzlich notwendig in einem vorangehenden Schritt eine eindeutige Benutzer ID zu senden, damit das Zugangssystem den korrekten Schlüssel auswählen kann. Durch die Verwendung von Zufallszahlen ist ein Angriff durch Mithören und Wiederausenden der Response unmöglich, da sich die Zufallszahlen von mal zu mal ändern. Dieses Verfahren funktioniert sowohl mit symmetrischer, als auch mit asymmetrischer Verschlüsselung. Im letzteren Falle verschlüsselt der Benutzer die challenge mit seinem private key und das Anmeldesystem entschlüsselt mit dem korrespondierenden public key. 1.4.6 Zertifikate - PKI Infrastruktur Eine bisher noch nicht besprochene aktive Angriffsmethode macht asymmetrische Verschlüsselungsysteme verwundbar. Ein Angreifer, dem es gelingt einem Kommunikationspartner seinen öffentlichen Schlüssel anstelle des public-keys des eigentlichen Partners unterzuschieben, kann dadurch sowohl, mittels falscher Identität, eine geheime Kommunikation führen, als auch gefälschte digitale Signaturen ausstellen. Es ist somit von außerordentlicher Wichtigkeit von der Bindung eines öffentlichen Schlüssels an eine Person überzeugt sein zu können. Die Einbeziehung eines vertrauenswürdigen Dritten reduziert dieses Problem auf das Vertrauen in diese Stelle. Eine sogenannte Zertifizierungsinstanz CA27 nimmt eine Identitätsbestätigung eines Benutzer A vor. Durch die digitale Signatur dessen öffentlichen Schlüssels eA , zusammen mit eindeutigen Identifikationsdaten (IDA , IDCA ) des Nutzer und der CA 27 Certification Authority 32 KAPITEL 1. GRUNDLAGEN und einer Gültigkeitsdauer T , wird ein öffentlicher Schlüssel eindeutig und verbindlich einer Person zugeordnet. Tabelle 1.2 zeigt den minimalen Inhalt eines solchen Zertifikats. Durch den öffentlichen Schlüssel der CA können Zertifikate jederzeit überprüft Cert(CA, A) = {IDCA , IDA , eA , T, sigCA } sigCA = dCA [h(IDCA , IDA , eA , T )] CA: A: IDCA : IDA : eA : T: dCA : sigCA Zertifikatsstelle (Certification Authority) Benutzer A eindeutige Bezeichnung der CA eindeutige Bezeichnung des Benutzers öffentlicher Schlüssel von A Gültigkeitsdauer private key der CA digitale Signatur der CA Tabelle 1.2: Bestandteile eines Zertifikats werden. Die Sicherheit dieses Systems hängt zu einem großen Teil von der Sicherheit des privaten Schlüssels dCA der Zertifizierungsinstanz ab. Er muß daher ausreichend lang und gut geschützt sein. Der öffentliche Schlüssel der CA muß dazu überall bekannt sein. Die Zertifikate selbst können in Form eines öffentlichen Verzeichnisses bereitgestellt werden oder vom Benutzer selbst gespeichert werden. Bei großen Benutzergruppen wird eine einzige Zertifizierungsstelle schon aus organisatorischen Gründen nicht ausreichen. In Systemen mit mehreren CAs muß das Vertrauen untereinander sichergestellt werden. Dazu gibt es hierarchische Modelle, welche auf einer Root CA, von der ausgehend weitere untergeordnete CAs authorisiert werden, basieren und ein gleichberechtigtes“ Modell auf der Basis von Cross-Certificates. ” Beide Strukturen bilden eine sogenannte PKI28 . Über diese Aufgaben hinaus kann eine Zertifizierungsinstanz noch weitergehende Aufgaben übernehmen. Das Schlüsselmanagement ist hierbei eine der wichtigsten. Es umfaßt folgende Funktionen: • Schlüsselgenerierung • Schlüsselspeicherung • Schlüsselrücknahme (Revocation) 28 Public Key Infrastructure 1.5. CHIPKARTEN 33 • Schlüsselverteilung • Schlüssellöschung Zertifizierungsinstanzen, welche auch solche Funktionen abdecken, werden auch als Trustcenter bezeichnet. 1.5 1.5.1 Chipkarten Entstehungsgeschichte Obwohl Chipkarten erst seit gut einem Jahrzehnt weite Verbreitung im täglichen Leben gefunden haben, ist diese Technologie keineswegs neu. Bereits 1968 erhielten die deutschen Erfinder Jürgen Dethloff und Helmut Gröttrup das Patent mit der Nummer DE 19 45 777 C3 auf einen kartenbasierenden Identikanden, welcher eine integrierte ” Schaltung enthalten sollte“. In die Praxis umgesetzt werden konnte diese Idee jedoch erst mit der Weiterentwicklung der Mikroelektronik in den folgenden Jahren. 1974 wurde dem französischen Wirtschaftsjournalisten Roland Moreno ein Patent auf ein System zur Speicherung von Daten in einem unabhängigen tragbaren Gegenstand“ ” erteilt. Seit dieser Zeit begann der Siegeszug der Chipkarten weltweit. Noch bevor in Deutschland erstmals, mit der Einführung der Telefonkarte im Jahre 1985, Chipkarten weite Verbreitung in der Bevölkerung fanden, setzten sich in Frankreich Chipkarten vom Typ CP 8 der Firma Bull durch. Mittlerweile wird diese Technologie auf vielfältige Weise verwendet. Krankenversicherungskarten, GSM Mobilfunkkarten, Geldkarten und Pay-TV-Karten nutzen diese Technik. In Zukunft sind noch eine Vielzahl weiterer Anwendungen denkbar. 1.5.2 Arten von Chipkarten Speicherkarten Speicherkarten haben, wie bereits der Name andeutet, nur die Fähigkeit zur Speicherung von Daten. Diese können gelesen und geschrieben werden. Erweiterte Formen dieser Kartenart besitzen eine Sicherheitslogik, um den Zugriff zu beschränken. Damit ist es z.B. möglich nur das Lesen oder, wie bei den Telefonkarten, nur die Erniedrigung eines Zählers, nicht aber dessen Erhöhung zu erlauben. Durch diese eingeschränkten Fähigkeiten sind Speicherkarten nicht sehr flexibel jedoch billig. Ihr Hauptvorteil ist somit der geringe Preis. 34 KAPITEL 1. GRUNDLAGEN Smartcards Hierbei handelt es sich um intelligente Chipkarten, welche auch als Prozessorkarten bezeichnet werden. Sie bestehen aus einer CPU mit Speicher und Ein-/Ausgabeeinheit. Spezielle Varianten besitzen Coprozessoren, um die Berechnung von synchronen und asynchronen Verschlüsselungs Algorithmen zu beschleunigen. Alle modernen Prozessorkarten verfügen über eigene Betriebssysteme. Das Karten Betriebsystem regelt die Verwaltung und den Schutz des Speichers und der Daten, steuert die Kommunikation mit dem Kartenterminal und kontrolliert die Ausführung der eigentlichen Chipkartenanwendungen. Moderne Bertiebssysteme erlauben das Unterbringen und gezielte Ausführung mehrerer Anwendungen auf einer Karte. Aufgrund der sehr begrenzten Resourcen einer Prozessorkarte, ist das Betriebsystem sehr klein und auf seine Umgebung optimiert. Es ist auf dem internen ROM der Karte untergebracht. Darüberhinaus verfügt eine SmartCard über RAM zur Ablage von Zwischenergebnissen oder temporären Daten und einem EEPROM zur Speicherung der Anwendung. Diese Art von Karten ist durch ihre freie Programmierbarkeit universell einsetzbar. Dadurch, daß solche Karten geheime Schlüssel, vor unbefugtem Zugriff geschützt, sicher speichern können und gleichzeitig die Fähigkeit besitzen, kryptographische Algorithmen direkt auszuführen, eignen sie sich besonders für Authentifizierungsanwendungen. Der geheime Schlüssel darf hierbei die sichere Karte nie verlassen. 1.5.3 Aufbau Der physikalische Aufbau von Chipkarten ist in den ISO29 Normen 7816-2 und 7816-3 spezifiziert. Eine Karte besteht im wesentlichen aus drei Komponenten. Das Trägermaterial aus Plastik hat die Abmessungen 85,6mm x 53,98mm x 0,76mm. Darüberhinaus existiert noch ein kleineres plug-in Format, welches vor allem für den Einsatz in kleinen Mobiltelefonen geschaffen wurde. In diesen Trägerkörper wird der eigentliche Mikrokontroller eingesetzt. Darauf wird eine gedruckte Schaltung aufgebracht, die im wesentlichen aus 8 Kontaktfläche besteht, welche zum einen den Chip nach oben abschließen und schützen und zum anderen den Kontakt zur Außenwelt“ herstellen. ” Neben der Kommunikationsfähigkeit muß der Chip über diese Kontakte auch mit Spannung und Taktfrequenz versorgt werden. Typische Taktfrequenzen für Chipkarten liegen heute zwischen 3 und 10 MHz. Daneben existieren auch kontaktlose Chipkarten. Sie stellen die Verbindung zum Terminal über kapazitive oder induktive Koppelung her. Ihre Reichweite liegt typischerweise bei 10 cm. Die Kartenhardware wird durch verschiedene Maßnahmen gegen Angriffe und unerlaubtes Abhören geschützt. So wird keiner der internen Adress- oder Datenbusse nach außen geführt. Busleitungen werden grundsätzlich mehrfach überkreuzt und die Stromaufnahme ist für die Ausführung jedes Befehls gleich. 29 International Standardisation Organisation 1.5. CHIPKARTEN 1.5.4 35 Lebenszyklus Beginnend mit der Herstellung der Karte bis zum Wegwerfen kann ihr Lebenszyklus in fünf Phasen eingeteilt werden. • Herstellungsphase: Diese Phase umfaßt die Herstellung des eigentlichen Chips. Diese erfolgt unter stengen Sicherheitsvorkehrungen. Zudem wird auf jedem Chip eine Hersteller ID aufgebracht. Diese ID wird von einem Herstellerschlüssel abgeleitet und ist für jeden Chip einzigartig. Mit der Auslieferung des Chips an den Kartenhersteller endet diese Phase. • Vor-Personalisierungsphase: In dieser Phase bringt der Kartenhersteller den Mikrokontroller in das Kartenträgermaterial ein und verschließt es mit den Kontaktflächen. Die Hersteller ID wird durch eine Personalisierungs ID ersetzt. Gleichzeitig werden die Befehle zum physikalischen Speicherzugriff deaktiviert. Fortan kann der Speicher nur noch mittels logischer Adressen angesprochen werden. • Personalisierungsphase: Diese Phase führt der Aussteller der Karten durch. Hier werden die Anwendungen und die benötigten Datenstrukturen im EEPROM der Karte untergebracht. Auch sicherheitsrelevante Daten wie Schlüssel oder PINs werden in dieser Phase gespeichert. • Nutzungsphase: Dies ist die eigentliche Benutzung der Karte. Hier werden die Anwendungen ausgeführt sowie Daten geschrieben und gelesen. • Beendigungsphase: Diese Phase schließt den Lebenszyklus ab. Das kann auf verschiedene Art und Weise geschehen. Aus Sicherheitsgründen wird bei mehrmaliger Falscheingabe von PIN30 und PUK31 die Karte dauerhaft deaktiviert, da in diesem Falle von einem Diebstahl auszugehen ist. Es ist auch möglich, daß eine Karte eine vorherbestimmte Gültigkeit besitzt. Nach deren Ablauf versetzen die internen Anwendung die Karten in diese Lebensphase. Der naheliegendste Weg den Lebenszyklus einer Karte zu beenden, ist schlicht dessen Zerstörung. 1.5.5 Protokolle Die Kommunikation mit Prozessorkarten erfolgt seriell und asynchron über einen Kontakt. Die Bitübertragungsschicht verwendet ein Startbit und zwei Stopbits sowie ein Paritätsbit zur Fehlererkennung. Sie ist in der ISO Norm 7816-3 spezifiziert und arbeitet üblicherweise mit einer Übertragungsrate von 9600 Bit/s. Für die Sicherungsschicht (OSI-Referenzmodell Schicht 2) definiert ebenfalls ISO 7816-3 16 verschiedene Protokollvarianten (T0 bis T15). Hiervon sind derzeit nur 30 31 Personal Identification Number Personal Unblocking Key 36 KAPITEL 1. GRUNDLAGEN die Protokolle T0, T1 und T14 von Bedeutung. T14 wird von Telefonkarten der deutschen Telekom genutzt. GSM SIM Karten kommunizieren über T0. Von immer grösser werdender Bedeutung ist das international genormte T1 Protokoll. Es ist weit verbreitet und im Gegensatz zum byteorientierten T0 blockorientiert. Welches Protokoll letztendlich benutzt wird, legt das Kartenbetriebsystem fest und teilt dies beim ATR32 , mit welchem jede Kommunikation mit einer Chipkarte beginnt, dem Terminal mit. Auch für die Struktur der Kommunikation auf der Anwendungsschicht gibt es mit ISO 7816-4 eine internationale Norm. Eine Kommunikation geht immer vom Kartenterminal aus. Es sendet Befehle, auf welche die Karte antwortet. Somit stehen beide in einer strengen Master-Slave Beziehung zueinander. Dieses Verfahren wird auch als Command-Response Modell bezeichnet. Eine so definierte APDU33 besteht, sofern es sich um einen Befehl handelt, aus einem Header und einem Body. Der Header enthält neben dem Befehlscode selbst, bis zu zwei Parameter. Der Body besteht aus der Angabe der Länge des Datenfelds und den Daten selbst. Ein Befehl hat folgendes Format: ClassByte (1 Byte) Instruction (1 Byte) Par1 Par2 Length Data (1 Byte) (1 Byte) (1 Byte) (n Byte) Tabelle 1.3: Befehls APDU Die Antwort enthält einen Returncode, bestehend aus zwei Status-Bytes (SW1 und SW2), die Auskunft über das Ergebnis der Befehlsausführung geben, und gegebenenfalls einem Datenblock. Data (n Byte) SW1 SW2 (1 Byte) (1 Byte) Tabelle 1.4: Antwort APDU 32 33 Answer to Reset Application Protocol Data Unit 1.6. DAS OBEX PROTOKOLL 1.6 1.6.1 37 Das OBEX Protokoll Einführung Im Rahmen der Standardisierungsbemühungen der Infrared Data Association entstand 1997 aus der Motivation heraus, eine einfache und flexible Möglichkeit zum Austausch von Datenobjekten zwischen IrDA fähigen Geräten zu schaffen, das OBEX34 Protokoll. Sein Konzept ist auf Push and Pull-Applikation“ ausgelegt und kann als eine Art ” binäres http-Protokoll angesehen werden. OBEX ist dabei jedoch kompakter und nicht so einseitig auf Pull Aktionen ausgelegt. Da es vornehmlich auf mobilen Geräten mit eingeschränkten Resourcen zum Einsatz kommen sollte, wurde darauf geachtet, OBEX möglichst einfach zu halten und nur sehr wenige Operationen verbindlich vorzuschreiben. Das ermöglicht sehr kompakte Implementierung. OBEX ist dabei aber flexibel genug, um bei Bedarf auch umfangreiche und komplexe Applikationen realisieren zu können. Application Application OBEX Session Protocol OBEX Session Protocol RFCOMM SDP Tiny TP / Ultra Transports IAS Service LMP L2CAP Baseband Bluetooth IrLAP IrLMP IrPHY IrDA Abbildung 1.13: Eingliederung von OBEX in den IrDA and Bluetooth Protokollstack OBEX ist ein Session Protokoll und somit keinesfalls auf die Anwendung in IrDAfähigen Geräten beschränkt. Es kann nahezu auf jedes beliebige Transportprotokoll aufgesetzt werden. Durch die Konzeption als offener Standard“ ist dies auch ge” wollt. Die IrDA weist in der Spezifikation zu OBEX sogar explizit darauf hin. Es existiert z.B. eine Definition für OBEX über TCP/IP und auch die Bluetooth SIG hat OBEX in die Core Specification des Bluetooth Standards mit aufgenommen. Abbildung 1.13 zeigt die Einordnung in den IrDA und den Bluetooth Protokollstack. Durch diese Unabhängigkeit von Protokollen tieferer Schichten, und damit von der eingesetzten Übertragungstechnologie, ist OBEX für die Entwicklung plattformübergreifender und weitgehend herstellerunabhängiger Anwendungen geeignet. Da sowohl 34 Object Exchange 38 KAPITEL 1. GRUNDLAGEN IrDA als auch Bluetooth, die auf absehbare Zeit dominierenden lokalen Übertragungstechniken in mobilen Geräten, dieses Protokoll unterstützen, bildet es die Grundlage des Kommunikationsprotokolls im Konzept dieser Diplomarbeit. Die exakten Spezifikationen sind in [MSK99] nachzulesen. Dort werden auch folgende Designziele von OBEX definiert: • Einfache Anwendungsentwicklung • Kompaktheit • Plattformunabhängigkeit • Intelligenter Umgang mit Datenobjekten • Einfache Eingliederung in Internet Protokolle • Erweiterbarkeit • Einfach zu testen und debuggen OBEX Application Framework •Stellt das Zusammenarbeiten von Geräten, die OBEX nutzen, sicher •Strafft die Verwendung des sehr flexibel definierten Protokolls •definiert einen Satz von Standarddiensten z.B. default OBEX Server, INBOX Service, Capability Service Session Level Protocol OSI-ISO Model – Schicht 5 Modell zur Objektdarstellung •Informationen über Objekte •Einfach zu parsende Header •Das eigentliche Objekt selbst Session Protokoll •Strukturvorgabe für den Dialog der Geräte •binäres, paketbasierendes, Client / Server, Request / Response Modell Abbildung 1.14: OBEX - Bestandteile Die OBEX Spezifikation definiert ein Session Protokoll, das den Dialog der Geräte regelt, ein Objekt Modell, welches die Darstellung der Objekte festlegt und ein Application Framework. Das Framework gibt Richtlinien zur Implementierung von OBEX konformen Diensten vor, um die Zusammenarbeit verschiedenster Geräte auch auf Applikations-Ebene sicherzustellen. Dabei spezifiziert es einige Grunddienste und Erweiterungsmöglichkeiten. 1.6. DAS OBEX PROTOKOLL 1.6.2 39 Session Protokoll Das Session Protokoll folgt einem strengen Request-Response Modell. Der Client sendet Request Pakete aus, auf die der Server mit einem Response Paket antworten muß. Jedem Request Paket muß unmittelbar ein Response Paket folgen, bevor das nächste Paket ausgesandt werden darf. Ein solches Paar wird als Operation bezeichnet. Alle Operationen werden immer vom Client initiiert. OBEX Request Server Client Response Abbildung 1.15: OBEX Request-Response Modell In der Spezifikation zu OBEX sind hierfür keine Timeouts festgelegt, jedoch deren Verwendung auch nicht untersagt. In manchen Fällen z.B. in Anwendungen, die über kein Userinterface verfügen, kann es aber zweckmäßig sein, angemessene Timeouts zu definieren, um eine Blockierung der Anwendung zu verhindern. Paketformat Request: Kommando Länge 1 Byte 2 Byte Request Daten Header ... Header n Byte optional Response: Response Code Länge 1 Byte 2 Byte Antwort Daten n Byte Abbildung 1.16: Aufbau von OBEX Paketen Jeder Request besteht aus einem 1 Byte langen Befehl, gefolgt von einer 2 Byte großen Längenangabe über die Länge des gesamten Pakets, einschließlich dem Befehlscode und der Längenangabe selbst. Daran anschließend sind, je nach verwendetem Befehl, noch weitere Datenfelder vorhanden. Der Rest ist eine Folge von optionalen Headern (siehe 1.6.3). Das eigentliche Objekt, der Payload, ist in speziellen Headern enthalten. Tabelle 1.5 zeigt eine Übersicht der wichtigsten OBEX Kommandos und deren Kodierung. 40 KAPITEL 1. GRUNDLAGEN Opcode 0x80 0x81 0x02 0x03 0x85 0xFF 0x10 to 0x1F Befehl CONNECT DISCONNECT PUT GET SETPATH ABORT User definable Bedeutung Verbindungsaufbau, Parameter Aushandlung Aufforderung zum Verbindungsabbau Objekt senden Objekt anfordern Pfad auf Empfängerseite setzen Abbruch der aktuellen Operation frei definierbar Tabelle 1.5: OBEX Befehle Der Aufbau der Response ist ähnlich. Anstelle des Befehls steht hier ein 1 Byte langer Response-Code. Dieser ist von den HTTP Status-Codes übernommen worden. Die dreistelligen ASCII Codes sind bei OBEX binär in 7 Bit kodiert. In Tabelle 1.6 sind die wichtigsten Response-Codes aufgeführt. Diesem Code folgt auch hier eine Längenangabe des gesamten Pakets sowie optionale Daten oder Header. Response Code (mit final Bit) 0x10 (0x90) 0x20 (0xA0) 0x41 (0xC1) 0x51 (0xD1) 0x53 (0xD3) korrespondierender HTTP Status Code 100 200 401 501 503 Bedeutung Continue OK, Success Unauthorisized Not Implimented Service Unavailable Tabelle 1.6: OBEX Response-Codes Sowohl bei Opcodes als auch bei Response-Codes hat das höchstwertige Bit eine besondere Bedeutung. Dies ist das sogenannte Final Bit. Während es bei Response-Paketen in der derzeitigen OBEX Spezifikation immer gesetzt ist, kennzeichnet es bei RequestPaketen das letzte Paket eines aus mehreren Paketen bestehenden Requests. Wichtige Request-Befehle • CONNECT Ein CONNECT-Request ist das erste Paket einer Kommunikation bei der verbindungsorientierten Variante von OBEX. 0x80 Paket Versions Länge Nummer (1 Byte) (2 Byte) (1 Byte) Flags max. OBEX Paketlänge (1 Byte) (2 Byte) Tabelle 1.7: OBEX Connect Request opt. Header (n Byte) 1.6. DAS OBEX PROTOKOLL Response Code (1 Byte) Paket Versions Länge Nummer (2 Byte) (1 Byte) 41 Flags max. OBEX Paketlänge (1 Byte) (2 Byte) opt. Header (n Byte) Tabelle 1.8: OBEX Connect Response Dieser Request kann neben verbindungsrelevanter Parameter wie der maximalen Paketlänge, Header enthalten, die weitergehende Informationen über Kommunikationspartner liefern, oder zur Authentifizierung notwendig sind. Nur der Response-Code 0xA0 kennzeichnet einen erfolgreichen Verbindungsaufbau. Alles Andere bedeutet einen Fehlschlag. Der Server teilt im Response u.a. die maximale von ihm akzeptierte Paketlänge mit. Die OBEX Spezifikation empfiehlt dabei die Unterstützung minimaler Standardparameter, welche gewissermaßen den kleinsten gemeinsamen Nenner aller Obex konformen Geräte darstellen, um auch eine Kommunikation ohne vorangegangene Connect Operation zu ermöglichen. • DISCONNECT Ein DISCONNECT-Request und eine erfolgreiche Antwort darauf schließen eine OBEX Verbindung. Außer dem Opcode bzw. dem Response-Code können noch Header enthalten sein. • PUT und GET PUT und GET dienen zum Senden bzw. Anfordern von Objekten. Übersteigt die Größe des Objekts die maximale Paketlänge, wird die Übertragung auf mehrere Pakete aufgeteilt. Im Falle einer PUT-Operation, kennzeichnet das nicht gesetzte Final Bit das Folgen weiterer Pakete. Benötigt eine GET-Operation mehrere Pakete, so sendet der Server den Continue-Response-Code, was den Client veranlaßt durch einen weiteren GET-Request diese Pakete anzufordern. • ABORT Der ABORT Befehl bildet die einzige Ausnahme im strengen Request-Response Prinzip. Er kann von Client und Server zu einem beliebigen Zeitpunkt der Kommunikation gesendet werden und bewirkt den Abbruch der gerade laufenden Operation. Er beendet jedoch nicht die Verbindung. • USER definable Für die Anforderungen spezieller OBEX Applikationen sind einige KommandoCodes reserviert, um bei Bedarf benutzerspezifische Erweiterungen zu ermöglichen, die durch die standardisierten Codes nicht abgedeckt werden. 42 KAPITEL 1. GRUNDLAGEN Beispielhafter Kommunikationsablauf Abbildung 1.17 zeigt eine OBEX Kommunikation am Beispiel einer, auf mehrere Pakete aufgeteilten, PUT-Operation. Client Server CONNECT Request + optionale Header CONNECT Response mit final Bit PUT ohne final Bit mit Body Header CONTINUE mit final Bit ... PUT mit final Bit SUCCESS mit final Bit DISCONNECT SUCCESS Abbildung 1.17: Beispiel einer OBEX PUT Operation 1.6.3 Objektmodell Das Objektmodell beschreibt wie in OBEX Objekte dargestellt werden. Es verwendet dazu eine Folge von Headern. Das eigentliche Objekt ist dabei im Body Header enthalten, während weitere Header Informationen über das Objekt liefern. Darüberhinaus können Header auch zum Transport protokollrelevanter Daten genutzt werden wie z.B. der Authentication Header. OBEX Header Ein Header besteht aus der Header ID (HI) und der Header value (HV). Die 1 Byte lange Header Id beschreibt den Inhalt des Headers, dabei legen die höchstwertigen 2 Bit die Kodierung fest und die übrigen 6 Bit beschreiben seine Art. Das Header Value ist abgesehen von seiner Kodierung nicht weiter spezifiziert. Sein Aufbau muß dem Kommunikationspartner durch die HI bekannt sein. Die Verwendung aller Header ist optional. Durch ihren Aufbau aus HI und HV sind sie für den Empfänger einfach zu erkennen und zudem unabhängig in ihrer Reihenfolge. Unbekannte Header-Typen können so einfach übersprungen werden. 1.6. DAS OBEX PROTOKOLL 43 HI, Header ID HV, Header Value 1 Byte 1..n Byte Bits 8 and 7 of HI 00 (0x00) length Unicode text 0x00 2 Byte n Byte 1 Byte length 01 (0x40) Byte sequence 2 Byte 10 (0x80) n Byte 1 Byte quantity 1 Byte 11 (0xC0) 4 Byte quantity 4 Byte Header Identifier HI Bits 8 and 7 Bits 0 to 6 Header encoding Header meaning Abbildung 1.18: Aufbau von OBEX Headern Durch die Verwendung von Headern stehen dem Kommunikationspartner viele Informationen über das Objekt zur Verfügung, wodurch eine sehr effiziente Weiterverarbeitung empfangener Daten möglich wird. Tabelle 1.10 enthält die wichtigsten Header zusammen mit einer Kurzbeschreibung ihrer Funktionen. Triplet 1 Triplet 2 Triplet ... Tag1 Length Value Tag2 Length Value Tag2 Length Value Tabelle 1.9: TLV-Triplet Soll in einem Header-Value mehr als nur ein Wert“ übertragen werden, wird oft ei” ne als TLV35 -Triplet bezeichnete Struktur verwendet. Ihr Aufbau ist in Tabelle 1.9 dargestellt. Die Tag-Werte unterscheiden die einzelnen Bestandteile des Header-Value und müssen nur innerhalb dieses Headers eindeutig sein. Das Length-Feld ist genau wie der Tag 1 Byte groß, was die maximale Länge der Triplet-Value auf 255 Byte beschränkt. Solche Strukturen werden z.B. beim Application Parameter- und Authentification Challenge-Header verwendet. 35 Tag-Lenght-Value 44 KAPITEL 1. GRUNDLAGEN HI 0x01 0x42 0xC3 0x46 0x48 0x49 0x4A Name Name Type Length Target Body End of Body Who 0xCB 0x4C Connection Id App. Parameter 0x4D Auth. Challenge 0x4E Auth. Response 0x30 to 0x3F User definable Bedeutung Objektname z.B. Filename MIME Type Objektlänge in Bytes Auswahl des Zieldienstes Ein Teil des Objekts Letzter Objektteil Bestätigung der Dienstauswahl als Antwort auf Target Session-level multiplexing Daten von Applikationen oder Protokollen höherer Schichten Pfad auf Empfängerseite setzen Abbruch der aktuellen Operation Frei definierbar (hierin sind auch alle Kombinationen der höchtswertigen 2 Bit eingeschlossen Tabelle 1.10: Wichtige OBEX Header Objekte Objekte sind in OBEX beliebige binäre Dateneinheiten. Jeder verschiedene Objekttyp wird durch einen zugeordneten MIME36 -Type identifiziert. OBEX verwendet dabei die von der IANA37 registrierten Typen und erweitert sie durch eigene Typ-Definitionen. Alle in OBEX definierten oder dem OBEX Protokoll zuzuordnenden MIME-TypeDefinitionen beginnen mit x-obex/“. ” In OBEX sind auch einige eigene Objektstrukturen definiert: • Folder Listing Object: Dieses Objekt dient der Übertragung des detailierten Inhaltes eines Verzeichnisses. Seine Syntax ist XML38 . • Capability Object: Auch dieses Objekt ist in XML aufgebaut. Es enthält Informationen über das Gerät und dessen Fähigkeiten, sowie eine Auflistung der unterstützten Objekt-Typen. • Object Profile Object: In Zusammenhang mit dem Capability Object beschreibt es die Struktur einzelner Objekte. Weitere oft in Verbindung mit OBEX verwendete Objekte sind vCard, vCalendar und vMessage. Sie gehen alle auf die IrMC39 Arbeitsgruppe zurück und spielen eine wichtige 36 Multipart Internet Mail Extension Internet Assigned Numbers Authority 38 Extensible Markup Language 39 Infrared Mobile Communications 37 1.6. DAS OBEX PROTOKOLL 45 Rolle im Bereich der mobilen Geräte. 1.6.4 Application Framework Das Application Framework versucht durch die Festlegung einiger Regeln und Standarddiensten das Zusammenarbeiten OBEX-basierender Applikationen sicherzustellen. Default OBEX Server Auf einem Transportprotokoll setzen unterschiedliche Session Protokolle auf. Auch mehrere unterschiedliche OBEX Server sind hier denkbar. Der default OBEX Server ist der Standard Server“. Er wird über einen festgelegten Bezeichner“ im Trans” ” portprotokoll, vergleichbar mit dem Port 80 bei TCP/IP basierenden HTTP Servern, angesprochen. Im Falle von IrOBEX ist dies der IAS40 Class-Name OBEX“. Der Ba” sisdienst des default OBEX Servers ist der Inbox Service. Inbox Service Seine Aufgabe ist es, beliebige Objekte zu empfangen und abzulegen. Er berücksichtigt dabei die mitgesendeten Informationen. Fehlen genauere Angaben, verwendet er Standardvorgaben. Durch einen GET Request ohne Typenangabe kann er aufgefordert werden, sofern vorhanden, Default Objekte wie z.B. eine vCard, auszusenden. Capability Service Dieser Dienst bietet einen standardisierten Weg Informationen über das betreffende Gerät und seine Fähigkeiten zu erfragen. Die Grundlage dazu bilden die Objekte Capability-Object und Object-Profile-Object. Er wird über den default OBEX Server mittels eines GET-Requests mit einem Type-Header vom MIME-Type x-obex/capability angesprochen. 1.6.5 Authentifikation Mittels der beiden Header Authentification Challenge und Authentification Response kann eine OBEX Verbindung authentifiziert werden. Dies geschieht gewöhnlich in der Connect-Phase. Durch Hinzufügen dieser Header zu beliebigen PUT- oder GETRequests kann aber auch jede einzelne Operation authentifiziert werden. 1.6.6 Multiplexing Um verschiedene OBEX Dienste gleichzeitig auf einem Gerät verwirklichen und unterscheiden zu können, existieren folgende Möglichkeiten: 40 Information Access Service 46 KAPITEL 1. GRUNDLAGEN • Multiplexing auf Transportschicht Ebene: Hier findet die Unterscheidung außerhalb von OBEX, eine Protokollschicht tiefer, statt. Durch verschiedene Bezeichner“ auf Transportschicht-Ebene werden un” terschiedliche OBEX Server angesprochen. Der Bezeichner des entsprechenden Servers muß dem Kommunikationspartner dabei bekannt sein. • Multiplexing auf OBEX Kommando Ebene: Mittels Target, Who und Connection Id Header kann ein OBEX Server, meist der default Server, verschiedene Dienste unterscheiden und betreffende Pakete dementsprechend behandeln. Dieses Verfahren hat den Vorteil, daß es unabhängig von den Mechanismen unterer Protokollschichten und damit plattformunabhängig ist. Weiterhin benötigt es nur einen gemeinsamen OBEX Parser. Die Umlenkung einer einzelnen Operation wird als directed operation“ be” zeichnet. Dies geschieht durch Einfügen eines Target Headers in einen Request. Er enthält einen eindeutigen Bezeichner für den gewünschten Service. Verfügt der Kommunikationspartner über den passenden Dienst, sendet er in der Antwort einen Who Header mit demselben Bezeichner zurück. Sollen mehrere Operationen umgelenkt werden, ist die Verwendung einer directed connection effizienter. Dazu enthält bereits der CONNECT-Request einen Target Header. Die erfolgreiche Antwort besteht aus einem entsprechenden Who Header und einem Connection Id Header. Dieser Connection Id Header wird im weiteren bei jedem Request mitgesendet. So entsteht eine virtuelle Ver” bindung“. 1.6.7 Fazit OBEX ist ein sehr flexibles Protokoll. Fast alle Spezifikationen sind optional. Ein minimaler OBEX Server umfaßt die Befehle CONNECT und entweder PUT oder GET. Eine solche eingeschränkte Implementierung ist mit weniger als 1 KByte Programmcode möglich, und damit hervorragend für den Einsatz in mobilen Geräten mit beschränkten Resourcen geeigent. Durch die vorgesehene Erweiterungsmöglichkeit um benutzerdefinierte Kommandos und Header, eignet sich OBEX als Protokoll für spezielle Anwendungen, wobei es die grundlegende Struktur für die Kommunikation bildet. Derartige OBEX Applikationen dürfen aber bei der Transportschicht nicht als default OBEX Server“ registriert ” werden. 1.7. DAS KONZEPT MSIGN 1.7 47 Das Konzept mSign Das mobile Electronic Signature Consortium mSign“ versucht einen Standard ” für digitale mobile Signatur zu schaffen. Dieser Organisation gehören große Mobilfunkanbieter, Mobiltelefonhersteller, Trustcenterbetreiber und Kreditinstitute an. Auf den ersten Blick mag diese Zielsetzung [msi00a] dieser Diplomarbeit ähneln, bei genauerer Betrachtung werden jedoch grundsätzliche Unterschiede deutlich. MSign spricht in seiner Konzeptbeschreibung zwar allgemein vom Einsatz mobiler Geräte, beschränkt sich jedoch in den weiteren Ausführungen ausschließlich auf Mobiltelefone als Plattform. Das zentrale Element in diesem Entwurf ist immer der Mobilfunkbetreiber. Über ihn wird die gesamte Kommunikation abgewickelt. Darüberhinaus ist vorgesehen, daß dieser noch zusätzlich sicherheitskritische Aufgaben übernimmt, wie z.B. die Re-Encryption“ von digitalen Signaturen zur Anpassung an eingeschränkte ” Fähigkeiten von Endgeräten. Dazu müssen beim Mobilfunkbetreiber sensible Daten hinterlegt werden, die eigentlich beim Endanwender bleiben sollten. Während sich diese Diplomarbeit auf eine reine lokale Kommunikation beschränken soll, basiert der Ansatz von mSign immer auf der Nutzung von GSM/UMTS oder ähnlichen Systemen, mit den damit verbundenen Kosten und eventuellen Sicherheitsrisiken. Im Gegensatz zum Konzept von mSign verfolgt diese Arbeit ein dezentrales Konzept. Desweiteren ist das Design von mSign nur auf die digitale Signatur zum Zwecke des eCommerce ausgelegt. Zwar erfüllt die Signatur auch viele Anforderungen, die an einen allgemeinen Authentifizierungsprozeß gestellt werden, dafür ist mSign jedoch nicht vorgesehen. Der Ansatz in dieser Arbeit ist somit universeller. Zum Zeitpunkt der Entstehung der Diplomarbeit existierte nur eine sehr wage Systembeschreibung von mSign. Einzig die Spezifikation der Kommunikation zwischen PSP41 und MSP42 waren in Form eines Protokollentwurfs [msi00b] verfügbar. 1.8 1.8.1 Zusammenfassung Anforderungen an ein universelles Authentifizierungstoken Das Vorhaben viele Authentifizierungsprozeße auf ein zentrales Token zu vereinen, stellt besondere Anforderungen an dieses. Herkömmliche Token erscheinen dafür wenig geeignet. Diese Forderungen sind im einzelnen: 41 42 Primary Service Provider - z.B. eine Bank Mobile Service Provider - der Mobilfunkanbieter 48 KAPITEL 1. GRUNDLAGEN 1. Wahrung eines hohen Sicherheitsstandards Die Konzentration aller Token auf ein System birgt auch Gefahren in sich. Es entsteht ein zentraler Angriffspunkt, der, falls er geknackt“ wird, Zugang zu ” allen unterstützten Systemen ermöglichen würde. Daher ist bei der Entwicklung besonders auf einen hohen Sicherheitsstandard zu achten. Dabei kommt es, neben der Anforderungen an den Authenifikationsprozeß selbst, insbesondere auf die sichere Verwahrung der verwendeten Geheimnisse“ an. ” 2. universelle Einsetzbarkeit und Erweiterbarkeit Ein solches Vorhaben macht nur dann Sinn, wenn es wirklich alle, oder zumindest einen Großteil der bisher notwendigen Token ersetzen kann. Weiterhin ist es notwendig, daß es jederzeit um neue Authentifikationsanwendungen erweitert werden kann. Dies soll ähnlich einfach erfolgen können, wie konventionelle Schlüssel einem Schlüsselbund hinzugefügt werden können. 3. Interaktionsmöglichkeit Bei einem zentralen Token ist allein durch dessen Anwendung nicht mehr eindeutig bestimmt, an welchem System die Authentifizierung erfolgen soll, noch welche Aktionen konkret ausgeführt werden sollen. Dazu muß eine Form der Interaktion möglich sein. Desweiteren eröffnet dies die Möglichkeit nach erfolgter Authentifizierung komplexere Vorgänge zu steuern, in etwa die Bedienung eines Geldautomaten. 4. einfache Bedienung Es ist das Ziel dem Nutzer den täglichen Umgang mit Sicherheitssystemen zu erleichtern. Dazu muß deren Bedienung so einfach und intuitiv wie möglich gestaltet werden. Der Nutzer soll zwar soviel Informationen und Interaktionsmöglichkeiten wie notwendig erhalten, jedoch von den komplexen Vorgängen der Authentifizierung weitgehend abgeschirmt werden. 5. Minimaler zusätzlicher Hardwareaufwand Die eingesetzte Technologie darf weder große räumliche Abmessungen aufweisen, noch für den Endnutzer hohe Kosten verursachen, um als mobiler Begleiter Akzeptanz zu finden. Idealerweise setzt es auf bereits vorhandene und weitverbreitete Technologien auf und erweitert diese nur. 6. Unterstützung eines einheitlichen Interaktions-Mediums Für ein zentrales Token muß es einen für alle PoAs einheitlichen Weg geben, die zur Authentifikation notwendigen Informationen mit diesem auszutauschen. Wegen sehr unterschiedlicher Voraussetzungen verschiedener PoAs und vor allem aufgrund der Bedienfreundlichkeit wäre hier eine drahtlose Schnittstelle sehr wünschenswert. 1.8. ZUSAMMENFASSUNG 1.8.2 49 Lösungsansatz Die ersten beiden Forderungen könnten sehr gut durch die Technologie intelligenter Chipkarten in Verbindung mit den Methoden der Kryptologie gelöst werden. Ein Problem, welches Chipkarten jedoch prinzipiell anhaftet, ist die fehlende Mensch-Maschine Schnittstelle. Der Anwender muß dem System aus Karte und Kartenterminal blind“ ” vertrauen. Er hat weder eine Möglichkeit in das Geschehen einzugreifen, noch kann er nachvollziehen was vor sich geht. Darüberhinaus ist es immer ein Risiko eine Chipkarte in ein fremdes“, eventuell manipuliertes Terminal, einzuführen. ” Da es für ein zentrales Authentifizierungsystem jedoch, wie in Punkt 3 und 4 gefordert, der Interaktion mit dem Nutzer bedarf, ist ein solches human Interface“ zwingend ” vorzusehen. Schon diese Tatsache erfordert Geräte, welche über ein Eingabemedium und ein Display verfügen. Durch Chipkarten alleine kann diese Aufgabe nicht gelöst werden. Somit ist es notwendig, zusätzliche Hardware einzusetzen. Diese muß über eine gewisse Rechenleistung verfügen und eine Schnittstelle zur Chipkarte bieten. Dazu soll es jedoch nicht notwendig sein, zusätzliche Geräte mit sich zuführen. Mobile Geräte als Plattform lösen diese Probleme. Sie haben bereits heute einen hohen Verbreitungsgrad erreicht und besitzen das geforderte human Interface“. Vielfach sind ” diese Geräte schon zu einem hohen Maße personalisiert. Vor allem Mobiltelefone, zu deren Betrieb eine vom Mobilfunkbetreiber bereitgestellte SIM Karte erforderlich ist, sind dadurch an eine Person gebunden. Durch die SIM Kartennummer ist ihr Besitzer identifizierbar. Im Gegensatz zu anderen mobilen Geräten besitzen Handys bereits ein Chipkarten Lesegerät. Bei mobilen Telefonen und PDAs ist zudem eine klare Tendenz erkennbar, die ein Zusammenwachsen dieser Technologien in naher Zukunft erwarten läßt. Obwohl all diese Technologien bereits existieren, gibt es bis heute kein derartiges System. Es bedarf im Grunde nur einiger Erweiterungen handelsüblicher Geräte und eines gemeinsamen standardisierten Interfaces. Dies Auszuarbeiten ist Aufgabe des folgenden Kapitels 2. 50 KAPITEL 1. GRUNDLAGEN 51 Kapitel 2 Konzept 2.1 Zielsetzung Im Rahmen dieser Arbeit soll ein System entworfen werden, welches mobile Geräte personalisiert, d.h. sie eindeutig und nachprüfbar einer Person zuordenbar macht. Durch diese Eigenschaft soll ihr Funktionsumfang um die Fähigkeit erweitert werden, als universelles Token für beliebige Autentifikationsprozesse dienen zu können. SmartCard SmartCard SmartCard Magnetstreifen Magnetstreifen Magnetstreifenkarte karte karte Login-Passwort Kombinationen Interagieren SmartCard PTD - Client Benutzer BANKOMAT EC PoA Server Abbildung 2.1: Zusammenführung vieler Token auf ein intelligentes System Desweiteren soll nach erfolgreicher Authentifikation eine gesicherte Verbindung zum Authentifikationspunkt bestehen. Das mobile Gerät wird damit zum vertrauenswürdigen Terminal und kann so zur Ein- und Ausgabe sensibler Daten genutzt werden. 52 KAPITEL 2. KONZEPT Die Kommunikation mit dem PoA soll drahtlos stattfinden. Dazu werden ausschließlich lokale Übertragungstechnologien wie z.B. IrDA oder Bluetooth verwendet. Die Verfügbarkeit von Mobilfunknetzen wie GSM oder UMTS ist hierfür nicht erforderlich und deren Nutzung nicht vorgesehen. Dadurch ist das System auch an Orten ohne Netzabdeckung wie z.B. in U-Bahnhöfen oder in dünn besiedelten ländlichen Gegenden verwendbar. Zudem entstehen keine Verbindungskosten. Das Konzept muß dabei, die in Abschnitt 1.8.1 definierten Anforderungen, in allen Punkten erfüllen. 2.2 Gliederung In meiner Arbeit entstand nach diesen Vorgaben ein allgemeiner Systementwurf für ein mobiles Authentifikationssystem mAuth. Darin werden alle benötigten Komponenten und deren Aufgaben, sowie die SystemInfrastruktur und das Zusammenwirken aller Komponenten beschrieben. Alle, zur Kommunikation der einzelnen Bestandteile, eingesetzten Kommunikationsprotokolle, sowie Datenformate und Schnittstellen sind dort definiert. Damit wird ein Zusammenarbeiten und eine Austauschbarkeit aller, sich an diese Vorgaben haltender Komponenten, sichergestellt. Die Definitionen lassen dabei jedoch genügend Raum für anwendungsspezifische Erweiterungen. Die Spezifikation der Systemabläufe beschränkt sich auf die Durchführung des Authentifikationsprozesses und den Aufbau einer anwendungstransparenten und verschlüsselten Verbindung. Die daran anknüpfenden Anwendungen sind in ihren Anforderungen und ihrer Komplexität sehr unterschiedlich und deren Spezifikation nicht mehr Gegenstand dieser Arbeit. Zur Realisierung eines Gesamtsystems ist auch eine Spezifikation dieser Anwendungen notwendig. Die Auswahl dieser Anwendungen erfolgt bereits während des Authentifikationsvorgangs. Daher ist bereits in diesem Konzept eine Schnittstelle dafür vorhanden. In Abschnitt 2.9 werden in Form eines Application Frameworks Richtlinien zur Anwendungsentwicklung vorgeschlagen, auf welche weitere Arbeiten aufbauen könnten. Dieses System wird im weiteren mit dem Namen mAuth-System bezeichnet. 2.3 Systembeschreibung Um ein Gerät zu personalisieren, muß es mit eindeutigen, nicht verfälschbaren und nicht kopierbaren Merkmalen versehen werden. Wie bereits in den Grundlagen beschrieben ist, sind mobile Geräte auf Grund ihrer Beschaffenheiten dazu alleine nicht geeignet. 53 2.3. SYSTEMBESCHREIBUNG Zertifikatsausstellung CK-Anwendung installieren Trustcenter Chipkarte Durchreichen der Authentifikationsdaten Authentifikation drahtlose Kommunikation verschlüsselte Verbindung PoA oft eine Einheit betreibt und kommuniziert ID-,SchlüsselHinterlegung mobiles Gerät Institut, Organisation Anmeldung Benutzer Interaktion PTD (Personal Trusted Device) Kartenausgabe persönliche Vorstellung CK-Anwendungen prüfen und signieren optional Abbildung 2.2: Systemübersicht 54 KAPITEL 2. KONZEPT Schon daher sind zusätzliche Komponenten notwendig. Das Gesamtsystem besteht aus folgenden Bestandteilen: Bestandteile • Die Chipkarte stellt das eigentliche Token des Systems dar. Sie ist das personalisierende Merkmal und dient der sicheren Verwahrung aller geheimen Daten. Die Chipkarte mitsamt zugehörigem Lesegerät ist Bestandteil des mobilen Gerätes. • Das mobile Gerät ist das vertrauenswürdige human Interface“ zur Chipkar” te. Durch diese Kombination entsteht ein Personal Trusted Device (PTD). Das PTD ist die Schnittstelle zum Benutzer und zum PoA. In ihm ist auch die Übertragungstechnik zur Kommunikation mit dem PoA enthalten. • Der Point of Authentifikation ist jede Art von System, gegenüber dem eine Authentifikation durchgeführt werden soll. Wichtigster Bestandteil des PoA ist der PoA-Server. Dieser kommuniziert mit dem PTD und muß somit die selbe Übertragungstechnologie und die korrespondierenden Protokolle unterstützen. Der PoA verfügt über eine Datenbank, in der er die Identifikationsmerkmale zugangsberechtigter PTDs speichert. Das Hinzufügen neuer Zugangsberechtigungen ist möglich. • In Zusammenhang mit dem PoA kann noch eine weitere Systemkomponente hinzutreten. Institutionen oder Organisationen können mehrere PoAs als eine logische Einheit zuordnenbar sein. Ein Beispiel dafür sind Banken, die viele Geldautomaten betreiben. Die Zugangsberechtigungen werden in diesem Falle zentral in einer Datenbank der entsprechenden Einrichtung verwaltet. Die PoAs sind mit diesem Datenbestand vernetzt und beziehen von dort ihre Authentifikationsinformationen. • Das Trustcenter ist der Bestandteil des Systems, dem alle Komponenten Vertrauen entgegenbringen. Neben der Kartenausgabe besteht seine Aufgabe in der Vergabe einer eindeutigen Kennung und der Zertifikatsausstellung. Gegebenenfalls übernimmt diese Einrichtung auch die Schlüsselgenerierung. Moderne Karten, wie sie in diesem System eingesetzt werden sollen, können mehrere Anwendungen enthalten. Diese Anwendungen müssen vom Trustcenter geprüft und signiert worden sein, bevor sie auf der Karte installiert werden können. Ablauf Nach Personalisierung und Aushändigung der Chipkarte und gegebenenfalls nach persönlicher Vorstellung beim Trustcenter zur Zertifikatsausstellung, kann der Benutzer sich bei PoAs anmelden. 2.3. SYSTEMBESCHREIBUNG 55 Dieser Anmeldevorgang erfolgt in der Regel persönlich und muß vom Betreiber“ ” des PoA autorisiert werden. Der Benutzer kann mittels seinem PTD die Authentifikationsdaten an die PoA-Datenbank übermitteln. Es sind auch Anwendungen denkbar die keine vorangehende Anmeldung erfordern. Dazu gehören z.B. das bargeldlose Bezahlen oder das digitale Signieren. In jedem dieser beidem Fälle sind jedoch Zertifikate zwingende Voraussetzung. Bevor sicherheitsrelevante Aktionen ausgeführt werden können, muß der Benutzer seine Identität gegenüber der Chipkarte durch Eingabe einer persönlichen PIN Nummer bestätigen. Sobald die Authentifikations-Anwendung auf dem PTD aktiv ist, findet ein permanenter Scanvorgang nach in Reichweite liegenden PoAs statt. Der Benutzer kann auswählen mit welchem er kommunizieren möchte. Benutzer Initiiert Prozeß PTD - Client Auth. PoA - Server Drahtlose Kommunikation mittels angepasstes OBEX Protokoll Authentication PIN Direkter mechanischer Kontakt, z.B. durch Tastendrücken Challenge-Response Verfahren Interaktion Verschlüsselte Transaktion Überprüfen der Auth. Daten erfolgreich ? Interaktion fertig ? Reaktion Abbildung 2.3: Der Authentifikationsablauf Zum gewählten PoA wird eine Verbindung aufgebaut. In der Verbindungsphase findet neben der Verhandlung der Kommunikationsparameter auch die Authentifizierung statt. Dies geschieht mittels dem Challenge-Response Verfahrens. Da vor Durchführung des Challenge-Response Verfahrens noch die Nutzer ID übertragen werden muß, benötigt ein Authentifikationsvorgang im mAuth System mindestens drei Schritte. In diesem Vorgang werden auch die Session-Keys für die Verschlüsselung der folgenden Kommunikation vereinbart. Nach erfolgreichem Aufbau der Verbindung ist der Nutzer des PTD beim PoA authentifiziert und es besteht ein sicherer Kommunikationskanal zwischen beiden Partnern. 56 2.4 2.4.1 KAPITEL 2. KONZEPT Aufgaben der mAuth Systemkomponenten Das Trustcenter Zertifikat ausstellen Chipkarte ausgeben Trustcenter Benutzer Chipkartenanwendungen überprüfen und signieren Abbildung 2.4: Aufgaben des Trustcenters Zur Authentifikation ist das Vorhandensein eindeutiger Kennungen (IDs), wie in Abschnitt 2.5.2 näher ausgeführt, eine zwingende Voraussetzung. Die Sicherstellung dieser Eindeutigkeit ist eine Aufgabe dieser Einrichtung. Im einfachsten Falle bedeutet das nur die Vergabe einer eindeutigen Seriennummer für die Chipkarte. Da diese Seriennummern weltweit einmalig sein muß, wird den einzelnen Trustcentern von einer zentralen Instanz, z.B. einer Standardisierungsorganisation wie der ISO, ein fester Nummern-Block zugewiesen, aus dem sie eigenverantwortlich IDs vergeben können, ohne daß es zu Überlappungen“ kommen kann. ” Das Vertrauen in die Integrität der mAuth-Chipkartenanwendung ist von zentraler Bedeutung für die Sicherheit des gesamten Systems. Daher wird diese direkt vom Trustcenter erstellt oder zumindest geprüft und zusammen mit der Benutzer ID auf die Karte aufgebracht. Abschließend mit der Ausgabe der Karte an den Benutzer übernimmt das Trustcenter damit die Personalisierungsphase im Lebenszyklus einer Chipkarte (vergleiche Abschnitt 1.5.4). Für Anwendungen mit geringen Sicherheitsanforderungen ist damit die Rolle des Trustcenters erfüllt. Der Benutzer muß zur Kartenausgabe nicht einmal unbedingt persönlich dort erscheinen, sondern kann seine Chipkarte auch auf anderen Wege erhalten, solange nur sichergestellt ist, daß sie vom Trustcenter ausgestellt worden ist. Für sehr viele Anwendungen ist jedoch eine feste Bindung und Zuordnenbarkeit des PTD an die Person des Benutzers gefordert. Dies ist mit den bisher beschriebenen Maßnahmen noch nicht erfüllt. Dazu ist es eine weitere Aufgabe des Trustcenters die Identität des Benutzers, zumindest einmal persönlich festzustellen. Dabei werden seine kryptographischen öffentlichen Schlüssel verbindlich seinen persönlichen Kenndaten 2.4. AUFGABEN DER MAUTH SYSTEMKOMPONENTEN 57 zugeordnet. Das Zertifikat bestätigt diese Verknüpfung. Durch seine Ablage auf der Chipkarte wird dieser Zusammenhang für alle überprüfbar. Das Trustcenter übernimmt bei Bedarf auch die Generierung der kryptographischen Schlüssel(paare). Dabei muß der Anwender auf die sichere Löschung seiner Schlüsseldaten aus den Systemen des Trustcenters nach der Speicherung auf seiner Chipkarte vertrauen. Bei vorhandenen Schlüsseln überprüft es den Besitz des privaten Schlüssels, ohne diesen auszulesen und stellt basierend auf dem zugehörigen öffentlichen Schlüssel das Zertifikat aus (Abschnitt 2.5.1). In der Realität wird es nicht nur eine Zertifizierungsinstanz geben, sondern mehrere Organisationen, die die Funktionalität eines Trustcenters übernehmen. Aus organisatorischen Gründen werden zudem davon mehrere lokale Zweigstellen existieren. Zweigstellen nehmen alle Informationen auf, leiten sie aber zur Zertifikatsaustellung an die Zentrale weiter. Mögliche Betreiber von Trustcentern sind z.B. Mobilfunkanbieter. Sie müssen zum Betrieb ihres Netzes ohnehin schon eine vergleichbare Funktionalität gewährleisten und besitzen daher bereits die notwendige Infrastruktur. Im Sinne eines allgemeineren und unabhängigeren Ansatzes her wäre es auch denkbar, daß diese Funktion von staatlichen Organen wie etwa den Einwohnermeldeämtern übernommen werden könnte. Es können mehrere dieser Möglichkeiten nebeneinander existieren, es bedarf jedoch einer gewissen Koordination. Die öffentlichen Schlüssel aller vertrauenswürdigen Trustcenter müssen den Systemteilnehmern, welche Zertifikate prüfen wollen, bekannt sein. Wegen der beschränkten Resourcen einer Chipkarte, ist ein Ablegen von Zertifikatsketten auf der Karte nicht vorgesehen. Die Vertrauenswürdigkeit unbekannter Trustcenter kann aber dennoch mit Hilfe von Crosszertifikaten hergestellt werden. Dazu muß der PoA, der das fremde Zertifikat prüfen möchte, zumindest zu einer seiner vertrauenswürdigen Zertifikatsstellen eine Kommunikationsverbindung besitzen. Existiert dort ein Crosszertifikat für die fremde Zertifikatsstelle, kann deren Vertauenswürdigkeit und deren öffentlicher Schlüssel daraus entnommen werden. Sollen neben der default“ Chipkartenanwendung noch weitere anwendungsspezifische ” Applikationen auf der Karte untergebracht werden, müssen derartige Programme zuerst vom Trustcenter überprüft werden. Bei erfolgreicher Prüfung werden sie mit einer Signatur versehen. Nur mit dieser können sie auf der Chipkarte installiert werden. 2.4.2 Die Chipkarte Die Chipkarte ist die Systemkomponente, welche fest an eine Person gebunden ist. Sie personalisiert das mobile Gerät und macht es so zum PTD. Dabei ist für die Identifizierung eines Benutzers nur die Karte relevant, nicht das mobile Gerät. Durch die 58 KAPITEL 2. KONZEPT sichere Speicherung und Verwaltung geheimer Daten Chipkarte Ausführen autentifikationsrelevanter kryptographischer Operationen Abbildung 2.5: Chipkarte - Aufgaben Standardisierung der Kartenfunktionen und ihrer Schnittstellen ist sie unter verschiedenen mobilen Geräten austauschbar. Auf ihr werden alle personenbezogenen Identifikationsdaten und die kryptographischen Schlüssel gespeichert, sowie eine Kennung der ausstellenden Instanz und optional deren öffentlicher Schlüssel. Diese Daten könnten theoretisch auch direkt auf dem mobilen Gerät gespeichert werden. Jedoch sind diese Geräte meist frei programmierbar und bieten keine wirksamen Speicherschutzmechanismen. Das Risiko des böswilligen Ausspähens dieser geheimen Daten, z.B. durch Einschleusen dafür manipulierter Programme (Trojaner), wäre somit viel zu groß. Die Geheimhaltung der Schlüssel ist jedoch unbedingt notwendig (siehe Abschnitt 1.4). Die Chipkarte gewährleistet die sichere Verwahrung dieser sensiblen Daten. Bei der verwendeten Chipkarte handelt es sich um eine Prozessorkarte mit der Fähigkeit kryptographische Algorithmen auszuführen. Sämtliche kryptographischen Operationen, welche den geheimen Schlüssel des Benutzers benötigen, werden direkt auf der Karte ausgeführt. Der Schlüssel muß und darf so die Chipkarte nie verlassen! Karten, die mehr als einen Verschlüsselungsalgorithmus unterstützen, müssen Speichermöglichkeiten für alle jeweils benötigten Schlüssel, sowie bei Verwendung asymmetrischer Algorithmen, optional zusätzlich für Zertifikate bereitstellen. Spezielle Anwendungsmodelle (vergleiche Abschnitt 2.9) können neben den in der mAuth Chipkartenapplikation vorhandenen Identifikationsdaten, zusätzliche Schlüssel, Daten und Funktionen benötigen. Diesen Anforderungen wird das mAuth System durch die optionale Möglichkeit, neben der default“ mAuth Chipkartenanwendung noch wei” tere anwendungspezifische Applikationen zu instalieren, gerecht. Diese Chipkartenanwendungen dürfen die Sicherheit des Gesamtsystems keinenfalls beeinträchtigen. Karten, die diese Fähigkeit bieten, müssen daher durch das Design ihres Betriebsystems gewährleisten, daß alle Anwendungen in sicher getrennten Umgebungen ablaufen und keine Möglichkeit besitzen, auf die Daten oder den Code der anderen Applikation zuzugreifen. 2.4. AUFGABEN DER MAUTH SYSTEMKOMPONENTEN 59 Chipkarten Betriebssystem Installations-Kontrollapplikation mAuth Applikation Daten: •ID1, ID2,... •Cert1, Cert2,... •Key(pair)1,Key(pair2),... Funktionen: Custom App. 1 Custom App. 2 ... Custom App. n •Verify PIN1, PIN2, ... •Add Data ... •(de/en)crypt Algo1, Algo2,.. Abbildung 2.6: Mehrere Applikationen auf einer mAuth Chipkarte Ebenso müssen sie Sicherheitsmechanismen, welche die Installation zusätzlicher Anwendungen kontrollieren, besitzen. Das ist notwendig, da trotz aller Schutzsmechanismen des Kartenbetriebsystems, immer die Gefahr besteht, daß fremde Applikationen die Sicherheit gefährdenden Programmcode enthalten. Diese Sicherheitsmechanismen sorgen dafür, daß nur geprüfte und mit einer gültigen Signatur eines Trustcenters versehene Anwendungen installiert werden können. An solche Anwendungen wird ein, über den Programmcode generierter Hashwert, der mit einem dafür vorgesehenen geheimen Schlüssel des Trustcenters verschlüsselt worden ist, angehängt. Dies ist dem MACVerfahren (siehe Abschnitt 1.4.2.6) ähnlich. Die Karte verfügt über den passenden Schlüssel und kann so entscheiden ob sie eine Anwendung akzeptiert. Um die Identität des Benutzers gegenüber der Karte sicherzustellen, erfordert der Zugriff auf die meisten Funktionen der Karte die Eingabe einer PIN. Dabei sind die bei Chipkarten üblichen Sicherheitsmechanismen, wie Fehlbedienungszähler und PUK1 implementiert (vergleiche Abschnitt 1.5). Der Benutzer kann seine PIN Nummern frei wählen und jederzeit ändern. Über eine weitere PIN werden die Verwaltungsfunktionen der Chipkarte zugänglich. Sie erlauben das Speichern und Ändern personenbezogener Daten und Schlüssel. Das Auslesen des privaten Schlüssel ist jedoch nie möglich. Auch diese PIN kann vom Benutzer geändert werden. 2.4.3 Das mobile Gerät Das mobile Gerät ist das Bindeglied zwischen Benutzer, Chipkarte und PoA. Es besitzt zu jeder dieser Komponenten die passenden Schnittstellen und nimmt so eine zentrale Rolle im Gesamtsystem ein. 1 Personal Unblocking Key 60 KAPITEL 2. KONZEPT „Human Interface“ Benutzer Verschlüsselung der Verbindung zum PoA mobiles Gerät Peer Discovery Drahtlose Kommunikation mit dem PoA PoA Abbildung 2.7: Mobiles Gerät - Aufgaben 2.4.3.1 Hardware Das mobile Gerät besitzt ein Display und Eingabemöglichkeiten zur Interaktion mit dem Benutzer. Auch die lokale Übertragungstechnik zur Kommunikation mit dem PoA ist darin integriert. Im Vergleich zur Chipkarte verfügt es über mehr Resourcen an Rechenleistung und Speicher, so daß damit die Ausführung komplexerer Anwendungen, die Abwicklung von aufwendigen Übertragungsprotokollen und die Verschlüsselung größerer Datenmengen in ausreichender Geschwindigkeit möglich sind. Das Chipkartenlesegerät ist fester Bestandteil des mobilen Gerätes. 2.4.3.2 Software Auf dem mobilen Gerät wird die mAuth-Client Anwendung ausgeführt. Sie ist die Gegenstelle zum PoA-Server (Abschnitt 2.4.4). Der Start der Anwendung wird normalerweise vom Benutzer initiiert, er kann unter bestimmten Bedingungen aber auch vom Gerät automatisch erfolgen (Abschnitt 2.5.4). In der Inititalisierungsphase wird neben der Überprüfung der PIN und der Abfrage der Karteneigenschaften auch die Kommunikationsschnittstelle initialisiert. Daraufhin startet bei Erfolg das Peer Discovery (Abschnitt 2.5.4) und die gesammelten Informationen werden dem Benutzer dargestellt. Desweiteren wird von der mAuth Client Anwendung der Authentifikationsablauf (Abschnitt 2.5.2) und der Anmeldevorgang an neuen PoAs (Abschnitt 2.5.3) gesteuert. Die Abwicklung, der zur Kommunikation mit den einzelnen beteiligten Komponenten notwendigen Protokolle, gehört ebenfalls zu den Aufgaben dieser Anwendung. 2.4. AUFGABEN DER MAUTH SYSTEMKOMPONENTEN 61 Darin ist auch die Verschlüsselung der anwendungsspezifischen Kommunikation eingeschlossen. In ihrer Rolle als Schnittstelle zwischen Mensch und Maschine gehört die Darstellung relevanter, vom PoA-Server übermittelter Informationen für den Benutzer zu den Hauptaufgaben dieser Anwendung. Diese Darstellungsform ist von den Ressourcen des mobilen Gerätes abhängig und soll auf diese bestmöglich angepaßt sein. Von der Komplexität dieser Anwendung hängt der Funktionsumfang und damit die Flexibilität der unterstützten Applikationsmodelle nach erfolgreicher Authentifikation ab (vergleiche Abschnitt 2.9). Optional kann eine Funktion zur Generierung der kryptographischen Schlüssel vorhanden sein. Die Erzeugung der Schlüssel vom Benutzer selbst, ist einer Erzeugung durch eine dritte Instanz vorzuziehen. Selbst wenn dieser, wie im Falle eines Trustcenters, Vertrauen entgegengebracht wird, kann sich der Benutzer dabei nie sicher sein, ob wirklich alle geheimen Schlüsseldaten gelöscht worden sind. Da jedoch auch auf mobilen Geräten, z.B durch manipulierte Software, immer die Gefahr des Ausspähens besteht, bleiben die Risiken und Vorteile beider Möglichkeiten gegeneinander abzuwägen. Optimal wäre eine Schlüsselerzeugung auf der Chipkarte selbst, die notwendigen Zufallswerte könnten von Außen“ zugeführt werden. Da dies jedoch ein sehr recheninten” siver Vorgang ist, werden vermutlich erst zukünftige Karten diese Möglichkeit bieten. 2.4.4 Der PoA Als Point of Authentifikation wird jedes System bezeichnet, gegenüber welchem eine Authentifikation stattfinden soll. Diese Systeme können in ihrer Funktion und Komplexität sehr unterschiedlich sein. Um das Zusammenarbeiten mit den Komponenten dieses Entwurfs sicherzustellen, muß nur die Funktionsgruppe des PoA, die mit dem PTD kommuniziert, standardisiert werden. Diese Komponennte wird als PoA-Server bezeichnet. 2.4.4.1 Hardware Der PoA-Server steht über Aktoren mit dem Rest des PoA-Systems in Verbindung und kann damit Aktionen, wie z.B. das mechanische Öffnen einer Türe, ausführen. Um die Kommunikation mit vielen unterschiedlichen PTDs zu ermöglichen, kann der Server mehrere verschiedene physikalische Übertragungstechnologien unterstützen. Je nach Aufgabenstellung des PoA kann es jedoch notwendig sein, gleichzeitig immer nur jeweils eine aktive Verbindung zuzulassen. Der PoA-Server verfügt über ausreichend Ressourcen, um wie das PTD, alle Protokolle und kryptographischen Operationen ausführen zu können. 62 KAPITEL 2. KONZEPT Verifizieren der Authentifikationsdaten Hinzufügen und Ablegen neuer Zugangsberechtigungen Point of Authentication Benutzer verschlüsselte, drahtlose Kommunikation mit dem PTD Ausführen von Aktionen nach erfolgreicher Auth. mobiles Gerät PTD Abbildung 2.8: Point of Authentifikation - Aufgaben In einer Benutzer-Datenbank sind alle authentifikations-relevanten Daten der zugangsberechtigten Benutzer gespeichert. Zur Kontrolle des Hinzufüges, Änderns oder Löschens dieser Daten muß ein Administrator-Interface vorhanden sein. Über dieses Interface kann der PoA-Administrator die, vom PTD übermittelten Daten überprüfen und in Anbhängigkeit davon die Anmeldung entweder akzeptieren oder ablehnen. Die physikalische Auführung dieses Interfaces soll nicht weiter spezifiziert werden. Denkbare Realisierungen reichen von einem kleinen LCD Panel mit Ziffern-Tastenblock, bishin zu einer Workstation mit graphischer Oberfläche. Der PoA-Server kann gegebenenfalls über weitere Kommunikationsverbindungen, z.B. zu zentralen Datenbanken oder zu Trustcentern verfügen. Eine am PoA angebrachtes, für den Benutzer sichtbares, Display zur Anzeige des aktiven Kommunikationspartners, kann zur Überprüfung einer korrekten Verbindung sinnvoll sein. Dies kann z.B. in Räumen, in denen mehrere Geldautomaten nebeneinander stehen, notwendig sein, um festzustellen an welchem davon die Geldausgabe erfolgen wird. 2.4.4.2 Software PoA-Server-Applikation und PTD-Client-Anwendung verwenden dasselbe Kommunikationsprotokoll. Die PoA-Server-Anwendung reagiert auf Anfragen des PTD und steuert das Verhalten des PoA. Die Art der kryptographischen Algorithmen sind im mAuth System nicht fest vorgeschrieben. Sie können sich vielmehr je nach Kostenfaktor der eingesetzten Komponenten und der technischen Entwicklung ändern. Um ein möglichst breites Feld verschie- 2.4. AUFGABEN DER MAUTH SYSTEMKOMPONENTEN 63 dener Chipkarten und mobiler Geräte abzudecken, kann ein PoA-Server daher mehrere Verschlüsselungs-Algorithmen unterstützen. Die tatsächlich eingesetzten Algorithmen werden in der Verbindungsphase ausgehandelt. (Abschnitt 2.5.2). Bei einem eingehenden Authentifikationswunsch überprüft die PoA-Server-Anwendung die empfangenen Authentifikationsdaten mit den in der PoA-Datenbank gespeicherten Informationen. In dieser Datenbank sind die Kenndaten eines jeden zugangsberechtigten Benutzers abgelegt. Diese Kenndaten bestehen mindestens aus einer eindeutigen Kennung des Benutzers, sowie dessen (öffentlichen) Schlüssel. Abgesehen davon können noch weitere benuzterspezifische Daten in diesem Datensatz vorhanden sein. Je nach Aufgabe des PoAs, kann dies, z.B. bei einem Anmeldesystem für einen Rechnerpool, der Loginname des Benutzers sein. Eine Ausnahme von diesen Minimalanforderungen für einen Benutzerdatensatz bildet die Verwendung von Zertifikaten und Trustcenter-Keys. Dabei müssen nicht die Schlüssel oder kompletten Zertifikate gespeichert werden. Es reicht eine eindeutige Kennung eines Zertifikats in der Datenbank abzulegen. Der Benutzer-Schlüssel kann dem vom PTD übermittelten Zertifikat während des Authentifikationsprozesses (siehe 2.5.2) entnommen werden. Es ist dabei unbedingt zu fordern, daß die Integrität des Zertifikats vorher verifiziert worden ist. Bei erfolgreicher Authentifikation kann über die gesicherte Verbindung eine beliebige Interaktion stattfinden. Der PoA kann mittels seiner Aktoren darauf reagieren. Andernfalls beendet der Server die Verbindung. Der PoA-Server kann wie der PTD-Client mehrere verschiedene Applikationsmodelle unterstützen. Die Verschlüsselung der Kommunikationsverbindung ist ebenfalls Aufgabe der PoA-Server-Software. Der PoA-Server muß für seine Zugangs-Datenbank auch Verwaltungsfunktionen bereitstellen. Ein Administrator muß die Annahme neuer Berechtigungen kontrollieren können. Dabei soll sowohl eine manuelle Eingabe der Daten, als auch eine Übertragung vom PTD möglich sein. Darüberhinaus müssen vorhandene Zugangsberechtigungen jederzeit wieder gelöscht werden können. Auch das Hinzufügen, Ändern und Löschen von Trustcenter-PublicKeys und -IDs soll damit möglich sein. Der PoA-Server muß dabei über Sicherheitsmechanismen verfügen, die diese Administratorfunktionen nur berechtigten Personen gewähren. Die Überprüfung von Zertifikaten unbekannter Trustcenter kann durch eine Kommunikationsverbindung zu bekannten Trustcentern mittels dort vorhandener CrossCertificates erfolgen. Diese optionale Verbindung liegt im Verantwortungsbereich von Trustcenter und PoA und wird in dieser Arbeit nicht spezifiziert. 64 2.4.4.3 KAPITEL 2. KONZEPT Übergeordnetes Institut oder Organisation Es ist nicht davon auszugehen, daß die Benutzerdatenbank immer direkt im PoA selbst implementiert sein wird. Bei einem Verbund zusammengehöriger PoAs soll nicht die Anmeldung an jedem einzelnen Gerät notwendig sein, sondern vielmehr an zentraler Stelle, bei der Betreiberorganisation der PoAs, erfolgen. Beispiele für solche Verbunde von PoAs sind Geldautomaten einer Bank oder der Zugang zu einem Rechnersytemen einer Universität oder Firma. Der Betrieb der Benutzerdatenbank, die Verwaltung der Daten und auch die Anmeldung neuer Nutzer erfolgt dabei an zentraler Stelle. Wird der Benutzer von dieser Stelle autorisiert, kann er ohne weitere Anmeldungen alle PoAs, die zu dieser Organisation gehören, nutzen. 2.5 2.5.1 Prozesse Zertifikatsaustellung Eine Zertifikatsaustellung ist nur bei Verwendung von Chipkarten, die auch asymmetrische Verschlüsselungsverfahren unterstützen, möglich. Das Zertifikat verknüpft überprüfbar die Person des Benutzers mit seinem öffentlichen Schlüssel. Das Truscenter bestätigt durch die Zertifiakatsaustellung diesen Zusammenhang. Daher muß der Benutzer persönlich beim Trustcenter zur Ausstellung erscheinen. Falls der Benutzer noch keine geeigente mAuth Chipkarte besitzt, erhält er diese direkt dort. Das Truscenter kann dann auch, falls notwendig die Schlüsselgenerierung übernehmen. Die Übertragung der Schlüssel auf die Karte erfolgt direkt über ein Chipkartenlesegerät des Trustcenters. Es wäre auch denkbar, die generierten Schlüssel drahtlos über das PTD auf die Chipkarte zu transferieren, jedoch müsste das PTD dazu ein zero-knowledge Protokoll“ zum Session-Schlüsselaustausch beherrschen, da zu diesem ” Zeitpunkt noch keine Schlüssel auf der Karte vorhanden sind, um einen sicheren Übertragungskanal aufzubauen. Eine solche Möglichkeit ist derzeit im mAuth System nicht spezifiziert und kann im Rahmen zukünftiger Erweiterungen realisiert werden. Die Übertragung über ein Chipkartenterminal am Trustcenter stellt jedoch keine nennenswerte Einschränkung des Bedienkomforts dar, da dieser Vorgang nur einmal erfolgen und der Benutzer dazu ohnehin persönlich anwesend sein muß. Desweiteren ist, falls dies mit der verwendeter Karte oder PTD möglich ist, eine direkte Schlüsselerzeugung durch den Benutzer ohnehin vorzuziehen. Ein Mitarbeiter des Trustcenters nimmt die Feststellung der Identität des Nutzers vor. Das kann z.B. durch die Vorlage und Überprüfung eines Lichtbildausweises, erfolgen. Er nimmt auch die, für die Zertifikatsaustellung notwendigen Daten auf und liest 2.5. PROZESSE 65 den öffentlichen Schlüssel aus der Karte aus. Gleichzeitig überprüft er mittels eines Challenge-Response Verfahrens, ob die Karte tatsächlich über den passenden privaten Schlüssel verfügt. Da bei diesen Vorgängen keine geheimen Informationen übertragen werden, kann die Kommunikation mit der Karte nun auch über die drahtlose Schnittstelle des mobilen Geräts erfolgen. Das Truscenter verwendet zu diesem Zwecke einen PoA-Server. Das Auslesen des öffentlichen Schlüssels und der KartenID erfolgt mittels eines normalen PoAAnmeldeprozesses (wie in Abschnitt 2.5.3 beschrieben). Anschließend muß der Benutzer mit seinem PTD einen Authentifikationsprozess zu diesem PoA-Server durchführen (vergleiche Abschnitt 2.5.2). Gelingt diese Authentifikation mit den vorher ausgelesenen Daten, ist der Besitz des zum öffentlichen Schlüssel zugehörigen privaten Schlüssels nachgewiesen und das Zertifikat kann erstellt werden. Chipkarte Benutzer Trustcenter Kartenausgabe Schlüsselgenerierung Schlüsselablage auf Karte Übermittlung von KartenID und öffentlichen Schlüssel Challenge Response PoA Anmeldeprozeß Authentifikationsprozeß Identitätsnachweis z.B. durch Vorlage des Personalausweises Zertifikatserstellung Authorisation der Zertifikatsablage Ablage des Zertifikats optional Abbildung 2.9: Ablauf der Zertifikatsausstellung Der Inhalt und genaue Aufbau, der in diesem System verwendeten Zertifikate, ist in Abschnitt 2.8.2 beschrieben. In der derzeitigen Spezifikation des mAuth Systems erfolgt die Übertragung des fertigen Zertifikats auf die Chipkarte direkt durch ein Chipkartenterminal des Truscenters. Um eine drahtlose Übertragung zu ermöglichen, müsste dieser Anwendungsfall zum einen speziell durch die PTD-Client-Anwendung unterstützt und zum anderen eine Authentifizierung des PoAs beim PTD vorgesehen werden. Eine derartige Authentifizierung ist notwendig, um sicherzustellen, daß nur von berechtigter Stelle Zertifikate akzeptiert werden. Eine Authentifikation des Servers beim Client 66 KAPITEL 2. KONZEPT wird derzeit jedoch noch nicht unterstüzt, da dies nur für sehr wenige Anwendungsfälle notwendig ist. In zukünftigen Erweiterungen kann diese Möglichkeit realisiert werden. Bei Chipkarten, die mehrere asymmetrische Verfahren unterstützen, sind für jeden Algorithmus unterschiedliche Schlüsselpaare notwendig. Für jedes dieser Paare muß daher ein eigenes Zertifikat erstellt werden. Der Benutzer muß das Aufbringen neuer Daten auf die Chipkarte durch die Eingabe der dafür vorgesehenen PIN autorisieren. Eine Kopie des Zertifikats wird in der Datenbank des Trustcenters abgelegt. 2.5.2 Authentifikationsprozess Die Kommunikation zwischen PTD und PoA findet über einen zu Beginn unsicheren Kanal statt. Daher müssen zur Authentifizierung Methoden der Kryptologie benutzt werden. Als kryptographisches Protokoll wird dazu das Challenge-Response Verfahren eingesetzt (siehe Abschnitt 1.4.5.2). Es sollen sowohl asymmetrische als auch symmetrische Algorithmen verwendet werden können. Es ist dabei durchaus möglich, daß sowohl PoA als auch PTD mehrere Verfahren unterstützen. In der Verbindungsaufbauphase handeln Server und Client den tatsächlich verwendeten Algorithmus aus. Das Protokoll erlaubt dabei den einzelnen Möglichkeiten Prioritäten zuzuordnen, so daß der sicherste Algorithmus, den beide gemeinsam unterstützen, ausgewählt werden kann. So weit als möglich sollen nur asymmetrische Algorithmen verwendet werden. Bei symmetrischen Verfahren verfügt nicht nur die Karte, sondern mindestens auch ein PoA über den geheimen Schlüssel. Der Schlüssel muß dabei die Karte verlassen und auf irgendeine Art übertragen werden. Bei asymmetrischen Verfahren ist das nicht notwendig, weshalb sie als wesentlich sicherer einzustufen sind. Symmetrische Kryptomethoden werden nur unterstützt, um die kostengünstige Realisierung von Systemen geringer Sicherheitsanforderungen und sehr beschränkten Resourcen zu ermöglichen. Viele PoAs werden die Verwendung symmetrischer Verfahren ablehnen und einige Anwendungen sind ohne asymmetrische Verschlüsselung überhaupt nicht möglich. Karten, die nur symmetrische Algorithmen unterstützen, werden ein sehr eingeschränktes Einsatzfeld haben. Die Authentifizierung findet in der Verbindungsaufbauphase zwischen PTD und PoA statt. Da PoAs in der Regel Zugangsberechtigungen für mehr als eine Person verwalten, ist es notwendig eine eindeutige Benutzerkennung zu Beginn des Prozesses zu übermitteln. Dazu ist im ersten CONNECT-Paket zumindest die Chipkarten-Seriennummer und, falls vorhanden, auch ein oder mehrere Zertifikate enthalten. Diese ID Informationen müssen in der Reihenfolge ihrer bevorzugten Verwendung gesendet werden. Die 2.5. PROZESSE 67 PTD PoA CONNECT Request [supported Capabilities, ID1, ID2] CONNECT Response UNAUTHORISIZED [choosen Capabilities] ... CONNECT Request [supported Capabilities, IDn] Berechnung der Response passende ID gefunden CONNECT Response UNAUTHORISIZED [choosen Capabilities,Challenge, Session-Key] CONNECT Request [choosen Capabilities Ack, IDn, Response, Session-Key Ack] Response paßt zur Challenge CONNECT Response OK/SUCCESS [choosen Capabilities] Abbildung 2.10: Authentifikations Ablauf favorisierte Kennung zuerst. Es obliegt dem PoA zu entscheiden, aufgrund welcher ID er seine Datenbank referenziert. Die Übermittlung der IDs kann auch auf mehrere aufeinanderfolgende CONNECT-Pakete verteilt sein. Der Client erkennt am Empfang einer RESPONSE, welche nur den Response-Code UNAUTHORISIZED enthält, aber keine CHALLENGE, daß die ausgesendete ID nicht aktzepiert worden ist. Er sendet solange neue CONNECT REQUESTS, aus bis eine passende ID gefunden oder alle vorhandenen bereits gesendet worden sind. Die Zertifikate implizieren zwar den zugehörigen Verschlüsselungsalgorithmus, da ihre Verwendung jedoch optional ist, ist es zusätzlich notwendig in diesem Schritt auch die Typen der unterstützten Verschlüsselungsmethoden mitzusenden. Auch hier ist die Reihenfolge von Bedeutung. Das am meisten priorisierte Verfahren ist das erste. Auf die gleiche Weise werden die zur Kommunikationsverschlüsselung vorhandenen Arten von Algorithmen übermittelt. Im Antwortpaket des PoA lehnt dieser, falls er keine unauthentifizierten Verbindungen zuläßt, den Verbindungsaufbau zuerst ab. In diesem Paket sind eine genügend lange Zufallszahl, die sogenannte Nonce zur Durchführung des Challenge-Response Verfahrens, sowie die Kennung des, vom PoA gewählten, Authentifikations-Algorithmus enthalten. Auch der Session-Key, für die Kommunikationsverschlüsselung und der Typ des dazu verwendeten Algorithmus, wird in dieser Phase übertragen. Der Session-Key ist dabei mit dem (öffentlichen) Schlüssel des PTD verschlüsselt und kann nur von diesem wieder dechiffriert werden. Der Empfang dieser Antwort veranlaßt das PTD eine erneute CONNECT-Anfrage auszusenden. Diese enthält die, mit seinem (private) Key verschlüsselte Nonce. Kann der PoA die chiffrierte Nonce mit dem korrespondierenden Key dechiffrieren und stimmt sie mit der ursprünglich ausgesendeten überein, so ist das PTD authentifiziert. Anderweitig wird die Verbindung beendet. 68 KAPITEL 2. KONZEPT Können keine übereinstimmenden Methoden zur Authentifizierung oder zur Kommunikationsverschlüsselung gefunden werden oder fehlt der Eintrag des PTD in der Zugangsdatenbank des PoA, findet kein Verbindungsaufbau statt. Eine Authentifizierung des PoA beim PTD ist nicht vorgesehen. Dazu müßten Schlüssel auf dem PTD abgelegt werden. Die Zielsetzug dieses Systems ist die Authentifikation mit dem PTD an einem PoA, nicht umgekehrt. Zudem ist es im Rahmen dieser Spezifikation für Anwendungen, die diese Funktionalität fordern möglich, dies durch anwendungsspezifische Chipkartenapplikationen zu verwirklichen. Die Implementierung des Verfahrens ist dem Dienstanbieter dieser Applikationen überlasssen. 2.5.3 Anmelden bei PoAs Um neue Zugangsberechtigungen zu erlangen, werden bei konventionellen mechanischen Schlüsseln, Schlüssel dem Schlüsselbund des Benutzers hinzugefügt. Im Gegensatz dazu erweitert der Benutzer bei diesem System die Zugangsdatenbank des neuen PoA um seinen Schlüssel. Unabhängig von der Anzahl der Zugangsberechtigungen besitzt der Nutzer immer nur sein persönliches Schlüssel(paar). Bei Karten, welche mehrere Algorithmen unterstützen, sind natürlich Schlüssel für jeden Algorithmus vorhanden. Um Zugang zu neuen PoAs zu erhalten, muß er seinen Schüssel und seine persönliche ID an den PoA übermitteln. Diese Anmeldung geschieht mittels eines leicht modifizierten Authentifikationsprozeß. Die PTD-Anwendung muß diese Betriebsart unterstützen. Der Benutzer kann in der Auswahlliste verfügbarer PoAs neben dem normalen Authentifikationsvorgang auch die Option Anmelden wählen. Der Unterschied besteht darin, daß hier zusätzlich zu den Identifikationsdaten auch noch der (public) Key mit übertragen wird. Der PoA-Server ist dazu von seinem Administrator in einen Modus versetzt worden, in dem er nicht-authentifizierte Verbindungen akzeptiert, jedoch außer der Anzeige der empfangenen Daten zur Überprüfung für den Administrator, keine weiteren Aktionen ausführt. PTD PTD befindet sich im „Neuanmeldemodus“ PoA CONNECT Request [supported Capabilities, ID1, (public) Key] CONNECT Response OK/SUCCESS DISCONNECT Request DISCONNECT Response OK/SUCCESS PoA Admin überprüft die Anmeldedaten Bestätigte ID & Key werden in die Datenbank aufgenommen Abbildung 2.11: Ablauf einer Neuanmeldung bei einem PoA 2.5. PROZESSE 69 Hat sich der Administrator persönlich von der Identität des neuen Benutzers und der Korrektheit seiner Daten überzeugt, genehmigt er das Hinzufügen der Zugangsdaten zur PoA-Datenbank. Anschließend wird zur Sicherheit ein Authentifikationsvorgang durchgeführt, der positiv verlaufen muß. Bei der Verwendung von Zertifikaten kann die persönliche Identitätsprüfung auch entfallen. Betreiber-Institute oder Organisationen von PoAs (vergleiche Abschnitt 2.4.4.3) haben meist bereits die persönlichen Daten ihrer Benutzer“ erfaßt. Hier kann, sofern ” Zertifikate eingesetzt werden, eine Zugangsberechtigung während des ersten Authentifikationsvorgangs ohne expliziten Anmeldevorgang erfolgen. Die Identität ist mit dem Zertifikat eindeutig bestätigt und beglaubigt. Darüberhinaus ist darin der öffentliche Schlüssel enthalten. Befindet sich ein, zu den Zertifikatsdaten passender Benutzer bereits in der Datenbank, kann sofort der Zugang gewährt und evtl. der Schlüssel oder das Zertifikat hinzugefügt werden. Das Hinzufügen von Zertifikaten und den darin enthaltenen eindeutigen Kennungen, kann die Datenbankabfrage bei weiteren Authentifikationsvorgängen beschleunigen. Zu Beginn der Kommunikation verfügen beide Kommunikationspartner über keinerlei Schlüssel voneinander. Die initiale Übertragung ist also unverschlüsselt. Besonders in diesem Falle tritt der Nachteil der Verwendung symmetrischer Verschlüsselung bei Authentifikationsvorgängen zu Tage. Der geheime Schlüssel muß dabei einmal auf einem unsicheren Kanal übertragen werden. Durch die Verwendung von zero-knowledge-Protokollen, wie z.B. dem Diffie-Hellmann Verfahren, könnte durchaus auch ohne Kenntnis irgendwelcher Schlüssel des Kommunikationspartners ein Session-Key vereinbart werden und damit die Übertragung gesichert werden. Da symmetrische Authentifikation jedoch nur auf Geräten, die auf Grund ihrer geringen Resourcen oder ihres geringen Preises keine andere Möglichkeit haben, eingesetzt werden sollen, werden diese normalerweise auch nicht die Fähigkeit besitzen ein zero-knowledge-Protokoll auszuführen. In diesem Falle sollte, auch wenn das den Bedienkomfort einschränkt, ein Einlesen der notwendigen Daten über ein Chipkartenterminal am PoA einer drahtlosen Übertragung vorgezogen werden. 2.5.4 Peer Discovery Durch den Einsatz drahtloser Kommunikation zwischen PTD und PoA kann mehr als nur ein PoA in Reichweite des PTD liegen. Der Benutzer muß die Möglichkeit besitzen, den gewünschten Kommunikationspartner auszuwählen. Es ist die Aufgabe der PTDAnwendung, im Operationsradius liegende PoAs aufzuspüren, Informationen über sie abzufragen und sie dem Nutzer zur Auswahl darzustellen. Dieser Vorgang wird als Peer Discovery bezeichnet. Anders als das eigentliche Kommunikationsprotokoll (siehe Abschnitt 2.8.3), welches auf der Applikationsschicht angesiedelt ist, um unabhängig von der verwendeten Über- 70 KAPITEL 2. KONZEPT PoA PoA sammelt die Informationen in einer Datenbank PTD Database PoA Peer Discovery Pakete PoA PoA PoA Reichweitengrenze der eingesetzten Übertragungstechnologie PoA Abbildung 2.12: Peer Discovery Prinzip tragungstechnologie zu sein, ist der Peer Discovery-Prozeß von den unteren Protokollschichten abhängig und muß auf deren Funktionen zurückgreifen. Die Implementierung dieses Verfahrens und seine Fähigkeiten hängen somit von der eingesetzten Übertragungstechnologie ab. Lokale Übertragungstechnologien sind meist auf eine Ad Hoc“ Kommunikation aus” gelegt. Das bedeutet, es bedarf keiner manuellen Konfiguration der Kommunikationspartner, sondern sie besitzen die Möglichkeit die benötigten Parameter dynamisch über ihre unteren Protokollschichten auszutauschen, um eine Verbindung auf Schicht 2 (Link Level) des ISO-OSI Modells aufzubauen. Dazu findet auf dieser Ebene ein Discovery-Vorgang statt. Damit werden alle in Reichweite liegenden, empfangsbereiten Geräte, welche eine kompatible Übertragungstechnik nutzen, aufgespürt. Ihre Link-Level-Adressen sowie diverse Zusatzinformationen werden in einer Datenbank des Übertragungsprotokollstack abgelegt. Die Ausführung dieses Discovery-Vorgangs ist Aufgabe der Protokollstacks des jeweils eingesetzten Übertragungsverfahrens. Das Peer Discovery-Verfahren dieses Systementwurfs setzt das Vorhandensein eines solchen Basisdiensts voraus und nutzt dessen Datenbank. Sobald die AuthentifikationsClient-Anwendung aktiv ist, liest sie die Einträge dieser Datenbank aus und versucht zu jedem dort aufgeführten Gerät eine Verbindung aufzubauen. Dieser Verbindungsaufbau erfolgt zunächst auf Link-Level. Die Abfrage der PoAInformationen geschieht dann auf Applikationsschicht mittels eines speziellen REQUESTPakets (siehe Abschnitt 2.8.3), ohne jedoch einen kompletten Verbindungsaufbau zu durchlaufen. Auf diese Request Pakete darf ein PoA-Server immer antworten, selbst wenn er sich gerade in einer Kommunikation mit einem anderen PTD befindet und 2.6. KOMMUNIKATIONSMODELLE 71 nicht mehrere gleichzeitige Verbindungen unterstützt. Auf ein derartiges Paket wird nur ein PoA-Server korrekt antworten. Alle anderen Geräte mit passender Übertragungstechnik, welche sich auch noch in Reichweite befinden, können dadurch bereits ausgesondert werden. PTD mAuth OBEX Application Layer PoA Link Layer Link Layer mAuth OBEX Application Layer ... ... Link Layer Discovery Database Link Layer Discovery periodisch Link Layer Discovery Abhängig von der eingesetzten Übertragungstechnologie ... mAuth OBEX Peer Discovery Request mAuth OBEX Peer Discovery Response Hardware unabhängig Abbildung 2.13: Peer Discovery-Ablauf Die Informationen sammelt das PTD in einer eigenen Datenbank der AuthentifikationsAnwendung. In den Antwortpaketen sind neben einem Bezeicher des PoA auch seine Fähigkeiten enthalten. Dadurch können PoAs, deren Anforderungen vom PTD, oder umgekehrt nicht erfüllt werden können, in der Auswahlliste entsprechend gekennzeichnet oder gar nicht erst aufgenommen werden. Je nach den Fähigkeiten des Discovery-Protokolls auf Link-Layer sollte, wenn möglich bereits auf dieser Ebene eine eindeutige Kennung des jeweiligen PoAs mitgesendet werden. Das eigentliche Peer Discovery findet nur dann statt, wenn die AuthentifikationsAnwendung bereits gestartet ist. Das Discovery auf unteren Protokollschichten ist dagegen Aufgabe des Betriebssystems und wird laufend durchgeführt. Es wäre damit möglich, bei Annäherung an dafür freigegebene PoAs, die Authentifikationsanwendung automatisch zu starten und den Authentifikationsvorgang zu diesem PoA zu aktivieren. So könnte damit z.B. das automatische Aufschließen der Haustüre oder des eigenen Autos bei Annäherung realisiert werden. 2.6 2.6.1 Kommunikationsmodelle Übersicht Die Gesamtfunktionalität des Systems wird nur durch das Zusammenwirken der Einzelbestandteile erreicht. Hierfür müssen die Komponenten miteinander kommunizieren. 72 KAPITEL 2. KONZEPT Abhängig von den Kommunikationspartnern und ihrer Aufgabenstellung findet diese Kommunikation über unterschiedliche Medien und mittels verschiedener Protokolle statt. Die Kommunikationsmedien und Protokolle müssen spezifiziert und standardisiert werden, um ein reibungloses Zusammenarbeiten zu gewährleisten. Tabelle 2.1 zeigt eine Übersicht der einzelnen Kommunikationsvorgänge und ihrer Eigenschaften. Kom. Partner Medium Beziehung Protokoll Benutzer - Trustcenter pers. Kontakt gleichberechtigt natürlichsprachlicher Dialog Trustcenter - Chipkarte galvanischer Kontakt Request - Response T=1 und ISO 7816-4 Benutzer - mobiles Gerät Display/Tastatur gleichberechtigt Mensch-Maschine Kommunikation mobiles Gerät - Chipkarte galvanischer Kontakt Request - Response T=1 und ISO 7816-4 PTD - PoA Benutzer - PoA drahtlos Client - Server erweitertes OBEX pers. Kontakt unidirektional – Tabelle 2.1: Kommunikationsbeziehungen der Systemkomponenten 2.6.2 Benutzer - Trustcenter Benutzer Trustcenter natürlichsprachlicher Dialog persönlicher Kontakt Abbildung 2.14: Kommunikationsbeziehung zwischen Benutzer und Trustcenter Die Kommunikation zwischen Benutzer und Trustcenter findet mit einem Mitarbeiter des Trustcenters statt und ist damit eine Kommunikation zwischen zwei Menschen. Als Kommunikationsprotokoll wird die natürliche menschliche Sprache verwendet. Zusätzlich zur sprachlichen Konversation ist die Vorlage von Gegenständen, wie z.B. eines Lichtbildausweises und gegebenenfalls das Aushändigen der Chipkarte notwendig. Ziele dieses Dialoges sind: • Aufnahme der persönlichen Identifikationsdaten • Überprüfung der Identität 2.6. KOMMUNIKATIONSMODELLE 2.6.3 73 Trustcenter - Chipkarte Das Trustcenter muß sowohl Daten aus der Chipkarte des Benutzers auslesen, als auch darauf ablegen. Trustcenter Chipkarte Request SmartCard Response Chipcard Reader galvanischer Kontakt zwischen Karte und Reader Abbildung 2.15: Kommunikationsbeziehung zwischen Trustcenter und Chipkarte Zur Kommunikation mit der Karte besizt das Trustcenter ein Chipkarten-Lesegerät, ein sogenanntes Chipkarten-Terminal. Ist die Karte in das Kartenterminal eingelegt, besteht zwischen beiden ein direkter galvanischer Kontakt. Da es sich hier um eine Kommunikation zwischen zwei Maschinen handelt, muß das Format und Ablauf der Kommunikation genau spezifiziert werden, damit auch Geräte unterschiedlicher Hersteller nahtlos zusammenarbeiten. Auf Link-Level wird dafür das T1 Protokoll eingesetzt (vergleiche Abschnitt 1.5.5). Das Applikationsprotokoll verwendet die in ISO 7816-4 spezifizierten Mechanismen. Es herrscht dabei eine strenge Master - Slave Beziehung, wobei die Chipkarte den Slave darstellt. Das Terminal sendet Befehle und die Karte muß darauf antworten. Die eingesetzten Befehle sowie deren genaues Format sind in den Abschnitten 2.7.1 und 2.8.1 beschrieben. Der Zweck dieser Kommunikation ist: • Die Schüsselablage (optional) • Das Auslesen des (öffentlichen) Schüssels und der Karten ID • Das Überprüfen des Besitzes des korrekten privaten Schlüssels • Die Zertifikatsablage 2.6.4 Benutzer - mobiles Gerät Bei dieser Kommunikationsbeziehung handelt es sich um einen Mensch-Maschine Dialog. Als Kommunikationsmittel dienen ein Display und ein Eingabemedium. Die Fähigkeiten dieser Bestandteile des mobilen Gerätes können sehr unterschiedlich sein. Derzeit sind die Displays vieler mobiler Geräte noch verhältnissmäsig klein und in ihren Darstellungsmöglichkeiten eingeschränkt. Die Eingabe findet meist über eine Tastatur, 74 KAPITEL 2. KONZEPT Handschrifterkennung, Touchscreen oder einer Kombination daraus statt. Zukünftig ist auch Spracherkennung als Eingabemöglichkeit denkbar. Benutzer mobiles Gerät Dateneingabe - Auswahl Informationsdarstellung Display & Eingabemedium Abbildung 2.16: Kommunikationsbeziehung zwischen Benutzer und mobilem Gerät Die Realisierung dieser Schnittststelle hängt daher stark von dem verwendeten mobilen Gerät ab und ist an die gegebenen Bedingungen angepaßt. Sie muß jedoch die in Abschnitt 2.7.2 definierte Funktionalität bieten. Die Darstellung soll, falls möglich, graphisch erfolgen. Von ihrer Qualität hängt entscheidend der Bedienkomfort des Systems ab. Diese Kommunikationsbeziehung ist die zentrale Schnittstelle zwischen dem Gesamtsystem und dem Benutzer. Ihre Aufgaben sind: • Die Darstellung relevanter Informationen • Die Steuerung aller nicht automatisch ablaufender Vorgänge 2.6.5 Mobiles Gerät - Chipkarte Diese Kommunikation verwendet dasselbe Kommunikationsmedium und dieselben Protokolle wie das in Abschnitt 2.6.3 beschriebe Modell. Das Chipkartenlesegerät ist Bestandteil des mobilen Geräts und die Chipkarte steht in direktem galvanischem Kontakt zu ihm. mobiles Gerät Chipkarte Request SmartCard Response Chipcard Reader galvanischer Kontakt zwischen Karte und Reader Abbildung 2.17: Kommunikationsbeziehung zwischen mobilem Gerät und Chipkarte Diese Kommunikationsverbindung wird zur Durchführung des Authentifikationsprozesses benötigt. Alle sicherheitsrelevanten Daten werden auf diesem Wege vom mobilen 2.6. KOMMUNIKATIONSMODELLE 75 Gerät zur Chipkarte und zurück übertragen. Das mobile Gerät steuert diese Konversation, sie nimmt also die Rolle des Masters ein. 2.6.6 PTD - PoA Diese Kommunikation findet drahtlos statt und ist daher besonders anfällig für Angriffe Dritter wie z.B. das Abhören und Verfälschen. Die eingesetzten Protokolle müssen derart konzipiert sein, daß sie dem Rechnung tragen und Mißbrauch ausschließen. Geheime Informationen dürfen nur verschlüsselt übertragen werden. PTD PoA Request Response drahtlose lokale Übertragungstechnologie Client Server Abbildung 2.18: Kommunikationsbeziehung zwischen PTD und PoA Um möglichst große Unabhängigkeit von der eingesetzten Übertragungstechnologie zu erreichen, ist das verwendete Protokoll auf der Appliaktionsschicht angesiedelt. Es basiert auf den Spezifikationen des OBEX Protokolls (siehe Abschnitt 1.6) und erweitert es, um die, für dieses System geforderte, Funktionalität zu erhalten. Die Client - Server Beziehung des OBEX Protokolls wird beibehalten. Das mobile Gerät ist der Client dessen Befehle vom PoA-Server ausgeführt und beantwortet werden. Die Ziele dieser Kommunikation sind: • Das Aufspüren in Reichweite befindlicher PoAs • Die Durchführung der Authentifizierung • Die Datenübertragung und Steuerung von Anwendungen des PoA 2.6.7 Benutzer - PoA Diese Kommunikationsbeziehung beschreibt den Kontakt zwischen Benutzer und dem Administrator eines PoAs. Sie hat zum Ziel die Identität des Benutzers sicherzustellen und entscheidet, ob die übertragenen Anmeldedaten in die Zugangsdatenbank des PoAs aufgenommen werden. Dieser Nachweis erfolgt durch persönliche Anwesenheit des Benutzers und eventueller Vorlage eines Lichtbildausweises. 76 KAPITEL 2. KONZEPT Benutzer PoA persönliche Vorstellung natürlichsprachliche Kommunikation persönlicher Kontakt Administrator Abbildung 2.19: Kommunikationsbeziehung zwischen Benutzer und PoA Diese Kommunikationsbeziehung hat zwei extreme Ausprägungen. Zum einen kann der Benutzer und der Serveradministrator die selbe Person sein. Das ist z.B. bei der Autorisierung des Zutritts zu seinem eigenen Haus der Fall. Hierbei findet im eigentlichen Sinne keine Kommunikation statt, sondern der Benutzer authorisiert seinen Zugang zum betreffenden PoA selbst. Im anderen Fall wird durch die Verwendung von Zertifikaten, wie in Abschnitt 2.5.3 näher beschrieben, ein zusätzlicher Identitätsnachweis überflüssig. Damit kann diese Kommunikation vollständig entfallen. 2.6.8 Zusammenwirken Abbildung 2.20 zeigt das Zusammenwirken aller Systemkomponenten im zeitlichen Ablauf. Die Darstellung ist als beispielhaft zu verstehen. Sie deckt nicht alle im reellen Einsatz auftretenden Zusammenhänge und Abläufe ab. Aus Gründen der Übersichtlichkeit sind einige Vorgänge vereinfacht dargestellt. Beim Vorgang der Zertifikatsausstellung ist die Verwendung eines Chipkartenterminals des Trustcenters zur Kommunikation mit der Chipkarte angenommen. Wird hier ein PoAServer verwendet, erweitert sich der Vorgang um einen Authentifikationsprozeß, wie er im unteren Drittel der Abbildung illustriert ist. Desweiteren sind die zu jeder Abfrage der Chipkarten notwendigen Request-Response Paare meist auf einen Pfeil in Übertragungsrichtung zusammengefaßt. Die detailierten Einzelabläufe gehen aus den Protokollspezifikationen hervor. Die Abbildung zeigt die drei zentralen Systemabläufe: • Zertifikatsausstellung • Anmeldung beim PoA • Authentifikationsvorgang Daraus ist sowohl der Ablauf, die beteiligte Systemkomponenten und die Art der ausgetauschten Informationen ersichtlich. 2.6. KOMMUNIKATIONSMODELLE Trustcenter Benutzer 77 Chipkarte mobiles Gerät PoA Kartenausgabe persönliche Daten Identitätsnachweis Chip Verwaltungs PIN kart en & öffentliche und private Schlüssel Zert öffentlicher Schlüssel ifika tsau sste llun Challenge-Response - priv. Key überprüfen Zertifikat Anwendung starten & PIN Eingabe Anm PIN Weiterg. & ID+ pub Key Req. eldu ng b ID - pub. Key (& Cert) eim PoA ID Daten, Schlüssel, (Cert.) persönlicher Identitätsnachweis Challenge-Response zum Test des Besitz von priv. key Anwendung starten & PIN Eingabe PIN & Abfrage der Leistungsmerkmale Leistungsmerkmale Darstellung der gefundenen Peers in Auswahlliste Peer Discovery Wahl des PoA ID Daten Request Aut hen tifik ID Daten atio ns V org Nonce ang verschlüsselte Nonce (optional) Anfragen an anwendungsspezifische Chippkarten Applikationen Benutzer Dialog (anwendungsspezifisch) CONNECT Request (ID, Cert, vorh. App IDs) RESPONSE (Nonce, Session-Key, App ID) CONNECT Request (verschl.. Nonce, App ID) RESPONSE (SUCESS) anwendungsspezifische verschlüsselte Kommunikation Beendingung der Kommunikation DISCONNECT Req + Resp. Abbildung 2.20: Beispielhafter Kommunikationsablauf g 78 KAPITEL 2. KONZEPT 2.7 Schnittstellen 2.7.1 Chipkarte - Kartenlesegerät Schnittstelle Chipkarten im mAuth-System können, wie bereits erwähnt, mehrere Chipkarten Applikationen enthalten. Die für den Authentifikationsvorgang notwendige Applikation muß jedoch in jedem Fall vorhanden sein. Diese default mAuth-Application muß folgende Funktionen implementieren um für dieses System geeignet zu sein. Name GetID GetCert GetpubKey GetCap SetKey SetCert SetPIN VrfPIN EnCrypt DeCrypt Para1 Para2 Para3 AlgoType AlgoType – AlgoType AlgoType PINType PINType AlgoType AlgoType – – – keyType – – – keyType keyType – – – Key Cert PIN PIN Data Data Antwort ID Zertifikat public Key Capabilities OK/failed OK/failed OK/failed OK/failed OK/failed OK/failed Funktion ID auslesen Zertifikat auslesen Public Key ausl. Fähigkeiten ausg. Schlüssel speichern Zertifikat speichern PIN Ändern PIN überprüfen Daten verschlüsseln Daten entschlüsseln Tabelle 2.2: Chipkarten-Funktionen - Übersicht • GetID () → ID Diese Funktion liefert die Karten-Seriennummer zurück. Sie muß weltweit eineindeutig sein, da sie als Merkmal zur Identifikation eines Nutzers verwendet wird. • GetCert (AlgoType) → Cert Da Zertifikate durch den, in ihnen enthaltenen öffentlichen Schlüssel, an ein Verschlüsselungsverfahren gebunden sind, sind für jeden unterstützten Kryptoalgorithmus eigene Zertifikate notwendig. Chipkarten können daher die Möglichkeit bieten, mehrere Zertifikate zu speichern. Die Auswahl des gewünschten Zertifikats geschieht durch Angabe des betreffenden Verschlüsselungsalgorithmus mittels dem Parameter AlgoType. Der Aufruf dieser Funktion liefert als Response das gewünschte Zertifikat zurück. • GetpubKey (AlgoType) → pubKey Diese Funktion wird zur Neuanmeldung an PoAs und zur Zertifikatsausstellung benötigt. Ihr Aufruf gibt den öffentlichen Schlüssel, der zu dem durch AlgoType gewählten Algorithmus gehört, aus. Bezeichnet AlgoType einen symmetrischen Algorithmus liefert diese Funktion den zugehöhrigen geheimen Schlüssel zurück. 2.7. SCHNITTSTELLEN 79 • GetCap () → Capabilities Nich alle mAuth Chipkarten unterstützen den selben Funktionsumfang. In einer internen Capability Datenbank“ sind die Fähigkeiten der Chipkarte abgelegt. ” Neben den unterstützten Algorithmen ist dort auch vermerkt, zu welchen dieser Algorithmen Schlüssel und Zertifikate vorhanden sind. Mit GetCap können diese Eigenschaften abgefragt werden. • SetKey (AlgoType, keyType, Key) → OK/failed Durch diesen Aufruf kann ein Schlüssel auf der Karte abgelegt werden. Dieser Vorgang findet nach der Schlüsselgenerierung statt. AlgoType spezifiziert den Algorithmus, zu welchem der, mit Key übergebene Schlüssel, gehört. Der Parameter keyType bezeichnet die Art des Schlüssels. Bei asymmetrischen Verfahren wird damit zwischen public und private Key unterschieden. Bei Erfolg wird ein entsprechender Eintrag in der Capability Datenbank vorgenommen. Als Ergebnis wird der Status der Funktionsausführung zurückgegeben. • SetCert (AlgoType, Cert) → OK/failed SetCert legt das zu Algorithmus AlgoType gehörige Zertifikat Cert auf der Chipkarte ab. Gleichzeitig vermerkt diese Funktion das Vorhandensein eines Zertifikats in der Capability Datenbank der Karte. • SetPIN (PINType, PIN) → OK/failed SetPIN dient zum ändern der persönlichen PIN Nummer. Eine mAuth-Karte besitzt mindestens zwei PIN Nummern. Der Parameter PINType kennzeichnet welcher PIN der, mit dem Parameter PIN spezifizierte, neue Wert zugeordnet werden soll. Als Ergebnis wird der Status der Aktion zurückgeliefert. • VrfPIN (PINType,PIN) → OK/failed Dies Funktion prüft, ob die, mit PIN übergebene Ziffernfolge, mit der auf der Karte gespeicherten und mittels Type spezifizierten, übereinstimmt. Bei erfolgreicher Überprüfung ändert sich der innere Zustand der Karten-Anwendung (siehe Abschnitt 2.8.4). • EnCrypt (AlgoType, keyType, Data) → crypted Data EnCrypt verschlüsselt die in dem Parameter Data angegebenen Daten. AlgoType wählt den dazu verwendeten Algorithmus aus und keyType gibt bei asymmetrischen Verfahren an, ob dies mit dem öffentlichen oder privaten Schlüssel geschehen soll. Der Parameter keyType wird bei symmetrischen Algorithmen ignoriert. Die verschlüsselten Daten werden als Ergebnis zurückgegeben. • Decrypt (AlgoType, keyType, Data) → decrypted Data Diese Funktion ist das Gegenstück zu EnCrypt und entschlüsselt die übergebenen Daten. 80 2.7.2 KAPITEL 2. KONZEPT Mensch - Maschine Schnittstelle Die Form der Realisierung dieser Schnittstelle hängt sehr stark von den Fähigkeiten des mobilen Gerätes ab und wird je nach eingesetztem Gerätetyp unterschiedlich aussehen. Es ist durchaus gewollt, daß die Darstellung an das jeweilige Look and Feel“ angepaßt ” ist. Das erleichtert dem Benutzer die Eingewöhnungsphase an diese neue“ Anwendung. ” Um die Grundfunktionalität der Anwendung sicherzustellen, muß diese Schnittstelle jedoch ein bestimmtes Minimum an Informationen darstellen können und angemessene Interaktionsmöglichkeiten für den Nutzer bieten. Abbildung 3.14 zeigt am Beispiel des PoA-Auswahldialoges zwei mögliche, beispielhafte Realisierungen auf einem PDA und einem Mobiltelefon. Abbildung 2.21: Unterschiedliche Darstellung der Dialoge Für die Implementierung einer mAuth-PTD-Anwendung sind die folgende Grunddialogsformen verbindlich vorgesehen. Zusätzlich zu den dort definierten Eigenschaften, ist für alle Dialoge das Vorhandensein einer Tastatur oder äquivalenten Eingabemediums gefordert. Die in den Dialogformen definierten Bedienelemente können sowohl als GUI Elemente oder auch als physikalische Tasten ausgeführt sein. PIN-Dialog: PINDialog (Type) −→ PIN An verschiedenen Stadien der Anwendungsausführung ist die Eingabe einer PIN erforderlich. Mit diesem Dialog wird der Benutzer aufgefordert, seine PIN einzugeben. Da 2.7. SCHNITTSTELLEN 81 es mindestens zwei verschiedene PINs im mAuth-System gibt, muß zusätzlich angezeigt werden auf welche PIN sich der Dialog bezieht. Diese Information wird von der Anwendung an den Dialog übergeben. Wenn möglich, sollte die maximale Länge einer PIN durch entsprechende Markierungen eines Eingabebereichs visualisiert werden. Für die Eingabe der einzelnen Ziffern soll eine optische Rückmeldung in Form der Anzeige eines maskierten Zeichens, z.B. eines *“ erfolgen. ” • Übergabedaten: – Art der PIN • Anzeigeelemente: – Aufforderung zur PIN-Eingabe – Anzeige der PIN Art – Darstellung eines Eingabefeldes • Bedienelemente: – OK-Knopf – Korrektur-Knopf • Ergebnisse: – PIN Mit dem Korrektur-Button werden alle bisher eingegebenen Ziffern gelöscht. Der OK-Button bestätigt die Eingabe und beendet den Dialog. PoA-Auswahldialog: PoAChooser (Peer Discovery-Info-List) −→ gewählter PoA, Vorgangsart Dieser Dialog greift auf dem vom Peer Discovery-Vorgang gesammelten Datenbestand zurück und erzeugt daraus eine Auswahlliste, in der alle in Reichweite liegende PoAs aufgeführt sind. In dieser Liste soll als minimale Information zu jedem PoA der im PeerDisc-Paket enthaltene Description String (siehe Abschnitt 2.8.3.2) angezeigt werden. Sind zu einem PoA weitere Informationen aus dem Discovery-Vorgang bekannt, können diese, den Anzeigemöglichkeiten des mobilen Gerätes angemessen, genutzt werden, um einen ausagekräftigeren Eintrag für die Auswahlliste zu generieren. Es ist auch denkbar, mittels eines dafür vorgesehenen Buttons oder eines Menü-Eintrags, die Anzeige genauerer Informationen zu ermöglichen. Die Einträge der Liste müssen anwählbar sein und die aktuelle Auswahl soll visuell hervorgehoben sein. Können nicht alle Einträge auf dem Display dargestellt werden, muß die Liste scrollbar sein. • Übergabedaten: – Alle vom Peer Discovery-Prozeß gesammelten Daten 82 KAPITEL 2. KONZEPT • Anzeigeelemente: – Aufforderung zur Auswahl – Auswahlliste mit Namen der in Reichweite liegender PoAs – Optional Anzeige erweiterter Informationen über den gewählten PoA • Bedienelemente: – Listenauswahl – Authentifikations-Knopf – Anmelde-Knopf – Beenden-Knopf • Ergebnisse: – Kommunikationspartner – Art der gewünschten Aktion Dies ist der zentrale Dialog der PTD-Anwendung. Er ist nach der Initialisierungsphase und der PIN Abfrage aktiv und dorthin kehrt die Anwendung nach Beendigung eines Authentifikation- oder Anmeldeprozesses auch wieder zurück. Daher ist hier ein Bedienelement zum Beenden der Anwendung vorzusehen. Daneben existieren ein Anmelde- und Authentifikations-Button, mittels welcher die gewünschte Aktion zum aktuell gewählten PoA initiiert wird. Abbildung 3.14 zeigt mögliche Realisierungen dieses Dialoges auf zwei unterschiedlichen Gerätetypen. Ergebnis/Fehler Dialog: ResultDisplay (Status) −→ - Das Ergebnis vieler Vorgänge des Systems sind für den Benutzer nicht direkt erfahrbar. Daher sollen alle auftretenden Fehlerfälle und Ergebnisse von Vorgängen wie z.B. der Erfolg einer PIN Änderung, der Status eines PoA-Anmeldevorgang usw. in Form eines Ergebnis Dialoges dargestellt werden. Die Anzeige soll dabei, in sinnvollem Rahmen, so ausführlich wie möglich geschehen. • Übergabedaten: – Ergebnis/Fehler • Anzeigeelemente: – Anzeige des Ergebnisses/Fehlers eines Vorgangs • Bedienelemente: – Bestätigungs-Knopf • Ergebnisse: – Keine Mittels eines Bestätigungs-Buttons wird dieser Dialog beendet. 2.7. SCHNITTSTELLEN 83 PIN-Ändern Dialog: ChangePIN (Type) −→ NewPIN Zur Änderung einer PIN bedarf es aus Sicherheitsgründen eines im Vergleich zum PIN-Dialog erweitertem User-Interfaces. Um zu gewährleisten, daß nur ein berechtigte Benutzer die PIN ändern kann und nicht etwa jemand, der das Gerät in eingeschalteten, bereits PIN-authentifiziertem Zustand gefunden oder gestohlen hat, muß hier zuerst die alte“ PIN nochmals eingegeben werden. ” Die neue Ziffernfolge muß, um Tippfehler auszuschließen, zweimal eingegeben werden. Die Eingabe aller PINs erfolgt entweder ohne Anzeige oder wird durch maskierte Zeichen visualisiert. • Übergabedaten: – Art der PIN • Anzeigeelemente: – Anzeige des Vorgangstyps (PIN Änderung) – Eingabeaufforderung: alte PIN – Zweifache Eingabeaufforderung der neuen PIN – Darstellung der Eingabefelder • Bedienelemente: – OK-Knopf – Korrektur-Knopf – Abbrechen-Knopf • Ergebnisse: – Neue PIN Die Art der Darstellung ist ähnlich dem PIN-Dialog zusätzlich existiert hier noch ein Abbrechen-Button, mit welchem der Vorgang ohne Änderung der PIN beendet werden kann. Der OK-Button initiiert die Änderung. Schlüsselgenerierungs Dialog (optional) GenKey (supported Algo.) −→ keyType, keyLength, RandomData Mobile Geräte, die über die Möglichkeit verfügen die kryptographischen Schlüssel selbst zu generieren, sollen dazu als Benutzerschnittstelle diesen Dialog implementieren. Die Schlüsselgenerierung ist eine optionale Funktion der Authentifikationsanwendung. Wenn sie jedoch vorhanden ist, muß sie einen derartigen Dialog bereitstellen. Der Name jedes Algorithmus, für den diese Funktion zur Verfügung steht, soll zusammen mit der maximalen Schlüssellänge in einer Auswahlliste aufgeführt sein. Aus einer weiteren Liste sollen je nach gewählten Algorithmus alle unterstützten Schlüssellängen wählbar sein. 84 KAPITEL 2. KONZEPT • Übergabedaten: – Unterstützte Algorithmen – Jeweils unterstützte Schlüssellänge • Anzeigeelemente: – Auswahlliste: Algorithmus – Auswahlliste: Schlüssellänge • Bedienelemente: – Listenauswahl – Schlüssel generieren-Knopf – Schlüssel speichern-Knopf – Abbrechen-Knopf – (Optional) Eingabefeld zur Erzeugung von Zufallswerten z.B. aus Bewegungen des Eingabe Stifts über diesem Feld. • Ergebnisse: – Algorithmus – Schlüssellänge – Art der Aktion (Erzeugen/speichern) – (Optional) Zufallswerte Der Schlüssel generieren-Button setzt den Schlüsselerzeugung-Vorgang mit dem gewählten Parametern in Gang. Nach erfolgreicher Durchführung kann der Schlüssel mittels dem Schlüssel speichern-Button, auf der Chipkarte abgelegt werden. Diese beiden Bedienelemente können auch auf ein Einziges zusammengelegt werden. Die Generierung der Schlüssel bedingt damit auch automatisch eine Ablage auf der Karte. Zur Schlüsselerzeugung werden für viele Algorithmen Zufallswerte benötigt. Diese können optional, falls die Resourcen des mobilen Gerätes dies erlauben, innerhalb dieses Dialoges erzeugt werden. Die Koordinatenfolge eines über ein Eingabefeld oder einen Touchscreen geführten Stifts oder sonstigem Eingabe-Zeigegeräts“ können die ” nötigen Zufallswerte liefern. Weitere Möglichkeiten liegen im Ermessen des Geräteherstellers. Anwendungs Dialog Der Anwendungsdialog ist abhängig von der jeweiligen PoA-Authentifikationsapplikation. Als PoA-Authentifikationsapplikation werden in diesem Zusammenhang die Abläufe bezeichnet, welche nach erfolgreicher Authentifikation beim PoA ablaufen. Deren Ausführung ist zwar Aufgabe der mAuth-Client Anwendung (siehe Abschnitt 2.9), ihre Spezifikation ist jedoch nicht mehr Gegenstand dieser Arbeit. 2.8. SPEZIFIKATIONEN 2.7.3 85 PoA - PTD-Schnittstelle Jeder PoA-Server muß folgende Befehle verstehen und entsprechend darauf antworten können. • PeerDisc Damit werden einerseits Informationen über das PTD an den PoA versendet und gleichzeitig der PoA aufgefordert seinerseits Informationen über sich zurückzusenden. Der minimale Inhalt dieses Kommandos ist eine 16 stellige Bezeichnung des jeweiligen Gerätes in ASCII kodierung. Optional können noch viele weitergehende Informationen darin enthalten sein. • Connect Dieser Befehl dient dem Verbindungsaufbau. Alle verbindungsrelevanten Parameter werden damit ausgetauscht. Im Verbindungsaufbau findet auch die eigentliche Authentifikation statt. Daher sind in diesem Befehl auch alle dazu notwendigen Daten enthalten. Darüberhinaus werden damit auch der Session-Key für die Verschlüsselung der folgenden anwendungsspezifischen Kommunikation vereinbart. • Abort Mit Abort kann jede laufende Operation abgebrochen werden. • Put Put dient zum senden beliebiger binärer Objekte an den Server. • Get Mit diesem Befehl werden Objekte vom Server angefordert. • Disconnect Disconnect signalisiert den Wunsch die Verbindung zu beenden. 2.8 Spezifikationen 2.8.1 Chipkarten APDU Format 2.8.1.1 Allgemeines Der Zugriff auf die Chipkartenfunktionen (vergleiche Abschnitt 2.7.1) erfolgt über ein Chipkarten Lesegerät. Als Transport Protokoll wird das in ISO 7816-4 definierte T=1 Protokoll verwendet. Auf der Applikationsschicht (Layer 7 des OSI Modells) setzt das mAuth System das APDU-Format ein, welches ebenfalls in ISO 7816-4 spezifiziert ist. Ein Funktionsaufruf erfolgt durch Aussenden einer Befehls APDU, auf welche die Karte 86 KAPITEL 2. KONZEPT unmittelbar durch ein Antwort Datenpaket reagieren muß (vergleiche hierzu Abschnitt 1.5.5). Eine solche APDU besteht aus einem Befehlscode, der die gewünschte Funktion spezifiziert, sowie den zugehörigen Parametern und Übergabedaten. Das Ergebnis der Funktion wird in Form eines Antwortpakets zurückgeliefert. Bei den meisten Befehlen werden Daten sowohl von, als auch zu der Karte übertragen. Dazu wird das APDU Format im CASE 4 eingesetzt. Eine CASE 4 APDU ist wie folgt aufgebaut: Aufbau einer CASE 4 Befehls APDU: ClassByte (1 Byte) Instruction (1 Byte) Par1 Par2 Lc Data (1 Byte) (1 Byte) (1 Byte) (n Byte) Le (1 Byte) Tabelle 2.3: Befehls APDU Format Befehle, die nur Daten zurückliefern, benutzen APDUs im Format CASE 2. Hierbei fehlen die Felder Lc und Data. Das Class Byte ist bei Chipkarten dieses mAuth Systems immer auf den Wert 0x80 gesetzt. Dieser Wert ist in der ISO Chipkarten Norm für private Nutzung reserviert und signalisiert somit, daß es sich hierbei um keine Standard-ISO-Chipkarten-Anwendung handelt. Das Feld Instruction kennzeichnet mittels eines 1 Byte großen Befehlscodes die Art des Befehls. Die Zuordnung dieser Codes zu den Funktionen ist in Abschnitt 2.7.1 zu finden. Die Feldern Par1 und Par2 bieten Platz für 2 jeweils 1 Byte große Befehlsparameter. Benötigt eine Funktion darüberhinaus weitere Übergabedaten oder passen diese aufgrund ihrer Länge nicht in ein Parameterfeld, werden sie im Datenfeld Data übergeben. Die Länge dieses Datenblocks in Byte wird in dem 1 Byte großen Feld Lc angegeben. Das begrenzt die Länge der in einer APDU transportierbaren Datenmenge auf 255 Byte und 2 Parameter-Bytes. Mit Le wird die Länge der erwarteten Antwortdaten angegeben. Im mAuth System soll dieser Wert immer auf 0x00 gesetzt sein, was jede beliebige Antwortlänge bis zu 255 Byte zuläßt. Benötigen Funktionen Übergabedaten mit mehr als 255 Byte Länge, müssen diese in einer Folge mehrerer Requests übertragen werden. Die eigentliche Funktion wird erst nach Empfang des, besonders gekennzeichneten, letzten Datenblocks auf der Chipkarte ausgeführt. Falls Rückgabewerte länger als 255 Bytes sind, werden auch sie in mehreren Schritten transportiert. Da die Karte von sich aus aber keine Paketübertragung initieren darf, 2.8. SPEZIFIKATIONEN 87 muß jedes Paket durch einen Request vom Terminal angefordert werden. Erkennt das Terminal, daß sich eine Antwort über mehrere Pakete erstreckt, sendet es entsprechende Requests an die Karte bis das letzte Paket empfangen worden ist. 2.8.1.2 Command codes Name GetID GetCert GetpubKey GetCap SetKey SetCert SetPIN VrfPIN EnCrypt DeCrypt reserved APDU Kommandos Command Par 1 Par 2 0x10 0x11 AlgoType BlockNr 0x12 AlgoType BlockNr 0x13 – – 0x20 AlgoType BlockNr & KeyType 0x21 AlgoType BlockNr 0x22 PINType – 0x30 PINType – 0x40 AlgoType BlockNr & keyType 0x41 AlgoType BlockNr & keyType 0x50-0xFF Daten – – – Key Response ID Zertifikat public Key Capiabilities OK/failed Cert PIN PIN Data OK/failed OK/failed OK/failed OK/failed Data OK/failed Tabelle 2.4: Chipkarten CommandCodes Tabelle 2.4 zeigt die Zuordnung von APDU Command-Codes zu den in Tabelle 2.2 aufgeführten Chipkarten Funktionen. 2.8.1.3 Parameter Tabelle 2.4 zeigt bereits die Zuordnung der Parameter der Chipkartenfunktionen auf die Parameter Felder und das Datenfeld einer APDU. Ihre jeweilige Bedeutung und ihre Kodierung wird im folgenden Abschnitt erklärt. BlockNr: Blockfolge Nummern sind notwendig, da nicht alle Requests und Responses aufgrund ihrer Größe in einer einzelnen APDU transportiert werden können. Mit Hilfe dieser Nummern sind die, zu einer Operation zusammengehöhrenden APDUs erkennbar. Da je APDU knapp unter 256 Byte Daten transportiert werden können, sollte eine maximale Folge von 256 APDUs ausreichend sein, um auch die Datenübertragung zu zukünftigen Chipkartengenerationen mit höheren Speicherkapazitäten problemlos abwickeln zu können. 88 KAPITEL 2. KONZEPT Das letzte Paket einer Übertragungsfolge ist daher immer mit der BlockNr 0xFF gekennzeichnet. Das Vorhandensein einer BlockNr ungleich 0xFF bedeutet immer das Folgen weiterer Daten. Die Blockfolgenummer wird dabei beginnende bei 0x00 mit jedem weiteren Paket erhöht. Ein Befehl wird von der Karte erst nach Empfang einer APDU, mit der Markierung als letzter Datanblocks, ausgeführt. Trifft ein Request mit der falschen Folgenummer ein, wird dieser mit einer Fehler-Response beantwortet und die Übertragung muß wieder mit dem ersten Datenblock beginnen. Der Empfang einer Response mit einer BlockNr ungleich 0xFF veranlaßt das Terminal weitere Request an die Karte zu senden, um die restlichen Datenblöcke abzufragen. Dieser Request besitzt denselben Befehlscode wie der ursprüngliche Befehl, nur enthält er außer der korrekten Blockfolge Nummer keine weiteren Parameter oder Daten. Die BlockNr des neuen Requests wird im Vergleich zur Nummer des letzten empfangenen Requests jeweils um eins inkrementiert. Eine falsche Reihenfolge der BlockFolgenummer bedeutet auch hier einen Fehler und der folgende Request enthält die BlockNr 0x00 zusammen mit allen Parametern und Daten. Das veranlasst die Karte dazu, die Übertragung erneut zu beginnen. Da beim Absenden des ersten Requests die Länge der Antwort noch nicht zwangsläufig feststeht, macht die Verwendung einer Folgenummer hier noch keinen Sinn. Sie wird daher auf 0xFF gesetzt. Damit kann, falls notwendig, ein neuer Befehl von der Anforderung weiterer Daten eines vorangegangenen Befehls unterschieden werden. AlgoType: AlgoType bezeichnet verschiedene Krypotoalgorithmen. AlgoType Code Algorithmus 0x01 DES 0x02 3DES 0x03 IDEA 0x04 Blowfish 0x10 RSA 0x11 ElGammal 0x12 Elliptische Kurven 0x40-0xFF not used Tabelle 2.5: Kryptographische Algorithmen des mAuth Systems Für die symmetrischen Algorithmen sind die Werte 0x00 bis 0x0F vorgesehen, für asymmetrische Verfahren die Werte darüber bis 0x3F. Die höchstwertigen 2 Bit dürfen nicht verwendet werden, da hierin bei Bedarf zusätzliche Informationen kodiert werden. Der Werteraum bietet genügend Platz für zukünftige Erweiterungen. Sollen neue Algorithmen in das mAuth System aufgenommen werden, muß die Zuordnung des AlgoType 2.8. SPEZIFIKATIONEN 89 Codes für das gesamte System einheitlich erfolgen und in die Systemspezifikation aufgenommen werden. KeyType KeyType spezifiziert die Art eines Schlüssels. Bei asymmetrischen Verfahren wird damit zwischen öffentlichen und privaten Schlüssel unterschieden. Für symmetrische Schlüssel ist zwar ein Wert definiert, jedoch ist hier dieser Parameter eigentlich nicht notwendig und auf seine Auswertung kann deshalb bei Implementierungen verzichtet werden. KeyType Code Schlüsseltyp 0x40 public 0x80 private 0xC0 symmetrisch Tabelle 2.6: Schlüsseltypen KeyType wird immer zusammen mit AlgoType verwendet und ist in dessen höchstwertigen 2 Bit kodiert. Die Werte in Tabelle 2.6 sind so gewählt, daß sie einfach auf dem Code des entsprechenden Algorithmus aufaddiert werden können. PinType: Derzeit werden nur zwei verschiedene Arten von PINs im mAuth System verwendet. Ihr Typ wird mit diesem Parameter angegeben und wie in Tabelle 2.7 spezifiziert codiert. Die Kartenzugriffs-PIN ist die Standard PIN Nummer des Systems. Sie muß beim Start der Anwendung eingegeben werden, um den Zugriff auf die Chipkarte zu ermöglichen. PINType Code PIN Art 0x00 Kartenzugriff 0x01 Karten-Verwaltungsfkt. 0x02-0xFF reserved Tabelle 2.7: PIN Typen Die zweite PIN wird benötigt, um Zugang zu den Verwaltungsfunktionen der Chipkarte zu erhalten. Damit können neue Schlüssel und Zertifikate abgespeichert und Schlüssel zur Anmeldung an neue PoAs oder zur Zertifikatsaustellung ausgelesen werden. 90 KAPITEL 2. KONZEPT 2.8.1.4 Daten Das Datenfeld kann zur Übergabe beliebiger binärer Daten genutzt werden. Das Darstellungsformat dieser Datenstruktur muß jedoch beiden Kommunikationspartnern bekannt sein, um deren Inhalt richtig interpretieren zu können. Dieses Datenformat kann je nach betreffender Funktion unterschiedlich sein. Der Befehls-Code der APDU legt somit das Datenformat fest und die Chipkarte kann die empfangenen Informationen entsprechend verarbeiten. Im folgenden ist der Aufbau der verschiedenen Datenstrukturen spezifiziert. Key Die Struktur vom Typ Key kann beliebige kryptographische Schlüssel representieren. Bei asymmetrischen Algorithmen wie dem RSA Verfahren besteht der öffentliche Schlüssel aus 2 Komponenten, dem Exponenten und dem Modulus. Eine einfache Länge-Daten-Kodierung ist zur Schlüsseldarstellung also nicht ausreichend. Die Key-Struktur ist daher wie folgt aufgebaut: AlgoType & keyType (1 Byte) KeyComponent Triplet1 (n Byte) KeyComponent Triplet1 (n Byte) KeyComponent Triplet1 (n Byte) Tabelle 2.8: Key Format AlgoType und KeyType spezifizieren mit den in den Tabellen 2.5 und 2.6 definierten Kodierungen den Algorithmus zu dem dieser Schlüssel gehört sowie seine Art. Der eigentliche Schlüssel wird aus einer Folge von mindestes einem KeyComponentTriplet dargestellt. Tag Length Data (1 Byte) (2 Byte) (n Byte) Tabelle 2.9: KeyComponent-Triplet Diese Triplets sind wie die in der OBEX Spezifikation (vergleiche Abschnitt 1.6) definierten Tag-Lenght-Value-Triplets aufgebaut. Der Tag spezifiziert die Art dieser Schlüsselkomponente. Bisher sind dafür folgende Codes definiert: 2.8. SPEZIFIKATIONEN 91 KeyComponent Tag Wert Bedeutung 0x00 single key 0x01 exponent 0x02 modulus 0x03-0xFF reserved Tabelle 2.10: KeyComponent-Triplet Tags Das Feld Length gibt die Länge, in Bytes, der im Data-Feld folgenden Schlüsselkomponente an. Da besonders bei asymmetrischen Algorithmen durchaus sehr lange Schlüssel verwendet werden, ist das Length-Feld 2 Byte groß. Das höherwertige Byte wird dabei zuerst übertragen. Cert Mit Cert wird ein Zertifikat bezeichnet. Es wird in der in Abschnitt 2.8.2 definierten Struktur direkt in das Datnbfeld einer APDU eingebettet. PIN Eine PIN wird ziffernweise codiert. Jede Ziffer einer PIN wird in einem Byte in ASCII Kodierung dargestellt. DATA Die Struktur Data bezeichnet einen Datenblock, welcher der Chipkarte zum Ent- oder Verschlüsseln übergeben wird. Er beinhaltet die betreffenden Daten in ihrer binären Form, ohne sie umzukodieren. 2.8.1.5 Responses Die Ergebnisse auf Befehls-APDUs werden in Form von Response APDUs zurück an das Chipkarten Terminal übertragen. Die Rückgabewerte sind im Feld Data dieses Pakets untergebracht. Die letzten beiden Bytes eines Antwortpakets SW1 und SW2 enthalten das sogenannte Status Word“. Daraus ist der Status einer Befehlsausführung ” zu entnehmen. Die minimale Antwort auf einen Befehl besteht aus diesen beiden Status Bytes. Response APDU: BlockNr (1 Byte) Data (n Byte) SW1 SW2 (1 Byte) (1 Byte) Tabelle 2.11: Antwort APDU Auch hier muß, wie bei den Datenstrukturen der Befehls APDUs, der Aufbau des Antwort Datenblocks spezifiziert sein. Da Antworten unmittelbar auf jeden Befehl folgen 92 KAPITEL 2. KONZEPT müssen, bevor der nächste Befehl ausgesandt werden darf, ist durch den vorangegangenen Befehl der Typ der Rückgabe Daten bekannt. ID Darin ist die Kartenseriennummer in der Form, wie sie auch auf der Karte gespeichert ist, binär enthalten. Zertifikat Diese Struktur enthält ein Zertifikat in dem Format wie es in Abschnitt 2.8.2 definiert ist. Schlüssel Die Darstellungsform dieses Rückgabewertes ist identisch zur Darstellung des Keys aus Abschnitt 2.8.1.4 (Tabellen 2.8, 2.9 und 2.10). Capabilities Capabilities geben Auskunft über den Funktionsumfang einer Chipkarte. Sie spezifizieren die unterstützten kryptographischen Algorithmen. Weiterhin ist ihnen zu entnehmen, zu welchen Algorithmus Schlüssel oder Zertifikate auf der Karte abgelegt sind. Diese Information ist für jedes Verfahren in einem CapTriplet codiert. In der Antwort ist für jeden unterstützten Algorithmus ein solches Triplet enthalten. Um die Antwort leichter parsen zu können, gibt das erste Byte die Gesamtlänge der folgenden Triplets an. Length CapTriplet 1 (1 Byte) (n Byte) CapTriplet 2 (n Byte) CapTriplet n (n Byte) Tabelle 2.12: Capability Response Format Ein CapTriplet hat folgenden Aufbau: AlgoType (1 Byte) PrKey PrCert (1 Byte) (1 Byte) Tabelle 2.13: CapTriplet Format AlgoType spezifiziert den Verschlüsselungsalgorithmus mit der in Tabelle 2.5 vereinbarten Kodierung. 2.8. SPEZIFIKATIONEN 93 Die Tags PrKey und PrCert zeigen an, ob Schlüssel oder Zertifikate dazu vorhanden sind bzw. deren Speicherung auf der Chipkarte überhaupt unterstützt wird. Die Bedeutung ihrer Kodierung zeigt Tabelle 2.14. PrKey und PrCert Wert Bedeutung 0x00 nicht gesetzt 0x01 vorhanden 0xFF nicht unterstützt Tabelle 2.14: Bedeutung der Felder prKey und prCert OK/failed Viele Chipkarten Kommandos bewirken nur einen internen Vorgang auf der Karte und liefern keine Rückgabedaten zurück. Für die aufrufende Applikation ist jedoch der Erfolg der Befehlsausführung interessant. Die ohnehin immer in einer Response vorhandenen Status Bytes reichen zu diesem Zweck völlig aus. Es wird die in ISO 7816 spezifizierte Statusword Kodierung verwendet. Einzig die Statusbyte Kombination 0x90 0x00 kennzeichnet eine erfolgreiche Befehlsausführung, jeder andere Wert bedeutet einen Fehler! 2.8.2 Zertifikatsformat 2.8.2.1 Inhalt Die im mAuth System verwendeten Zertifikate beinhalten im wesentlichen die Komponenten, die bereits in Abschnitt 1.4.6 beschrieben worden sind. Das sind: • User ID • Trustcenter ID • Seriennummer • Ablaufdatum • Öffentlicher Schlüssel • Signatur des Trustcenters Die Kombination aus User ID und Trustcenter ID muß dabei weltweit eindeutig sein und kann von PoAs anstelle der Kartenseriennummer als BenutzerIdentifikationsmerkmal verwendet werden. Diese Kombination ist aussagekräftiger als eine Kartenseriennummer und sollte, sofern vorhanden, bevorzugt werden. Ein weiterer 94 KAPITEL 2. KONZEPT Vorteil ist, daß sie personen- und nicht kartengebunden ist, d.h. dieses Identifikationsmerkmal kann bei Verlust einer Karte auf die neuen Karte übernommen werden. Eine Neuanmeldung an den PoAs ist damit nicht notwendig. Die Seriennummer steht in keinem Zusammenhang mit der Kartenseriennummer. Sie kann bei Rückruf von Zertifikaten und Neuaustellung als Unterscheidungsmerkmal dienen. Zertifikate sind aus Sicherheitsgründen immer nur für einen begrenzten Zeitraum gültig. Das Ablaufdatum gibt die maximale Gültigkeit des Zertifikats an. Aufgabe eines Zertifikats ist die Bindung eines öffentlichen Schlüssels an eine Person. Der öffentliche Schlüssel des Benutzers, muß daher auch im Zertifikat enthalten sein. Die Korrektheit und Integrität der Daten eines Zertifikats bestätigt das Trustcenter durch die digitale Signatur dieser genannten Bestandteile. Diese Signatur wir ans Ende des Zertifikats angefügt. 2.8.2.2 Format Um den beschränkten Resourcen mobiler Geräte Rechnung zu tragen, wurde zur Darstellung des Zertifikats eine binäre Form gewählt. Dadurch ist eine effiziente Speicherung und Übertragung von Zertifikaten sichergestellt. Zudem kann der Zertifkat mit ähnlichen Parsern aufgeschlüsselt werden, wie sie auch für die übrigen definierten Datenstrukturen verwendet werden. Die Zertifikatsbestandteile werden wie in Tabelle 2.15 illustriert zu einem Bytestrom verkettet. User ID (n Byte) Trustcenter ID (n Byte) Seriennummer (1 Byte) Ablaufpublic datum key (8 Byte) (n Bytes) Signatur (n Bytes) Tabelle 2.15: Zertifikatsformat Format User ID: Eine User ID besteht aus Name, Vorname, Geburtsdatum und Geburtsort eines Benutzers. Diese Bestandteile zusammen müssen innerhalb der, von einem Trustcenter vergebenen Zertifikate, einmalig sein. Sollten zwei Nutzer in allen gebannten Punkten übereinstimmen, muß z.B. durch Anfügen einer laufenden Nummer an den Vornamen, wieder Eindeutigkeit hergestellt werden. Länge Name (1 Byte) (n Byte) Länge Vorname (1 Byte) (n Byte) Geb. Datum (8 Byte) Tabelle 2.16: Aufbau der User ID Länge Geb. Ort (1 Byte) (n Byte) 2.8. SPEZIFIKATIONEN 95 Das Geburtsdatum wird in der Form YYYYMMDD, d.h. einer vierstellige Jahreszahl, gefolgt von einer jeweils zweistelligen Monats- und Tageszahl, angegeben. Jede Ziffer wird in ASCII Kodierung dargestellt. Das vollständige Datumsformat benötigt somit 8 Byte. Die übrigen Bestandteile haben variable Länge. Daher wird jedem ein Byte, das dessen Länge angibt, vorangestellt. Auch die Darstellung dieser Komponenten erfolgt in ASCII-Code. Auf eine Kodierung in Unicode wurde zu Gunsten des geringeren Speicherbedarfs verzichtet. Trustcenter ID: Eine Trustcenter ID setzt sich aus einer 2 Byte langen Kennung des Landes, in welchem das Trustcenter seinen Sitz hat und einer 4 Byte langen ID-Nummer zusammen. Die Länderkennung ist in ASCII-Code kodiert und verwendet die zweibuchstabigen ISO-Länderbezeichnungen, wie sie auch aus dem Internet DNS System zur Länderbezeichnung bekannt sind. Die ID-Nummer sollte, wie bereits in Abschnitt 2.4.1 für die Kartenseriennummern vorgeschlagen, von einer weltweit anerkannten Organisation, wie z.B. der ISO zentral vergeben werden. ISO Länderkennung (2 Byte) ID (4 Byte) Tabelle 2.17: Aufbau der Trustcenter ID Seriennummer: Die Repräsentation der Zertifikatsseriennummer erfolgt binär mittels eines Bytes. Ablaufdatum Das Ablaufdatum ist wie das Geburtsdatum als 8 Ziffern in ASCII-Darstellung in der Form YYYYMMDD aufgebaut. public Key: Zur Darstellung des öffentlichen Schlüssels wird dasselbe Format verwendet, wie es bereits in Abschnitt 2.8.1.4 spezifiziert worden ist. Ein 2 Byte großes Feld gibt vorangestellt die Gesamtlänge des Schlüssels an. Length Schlüsselformat wie in 2.8.1.5 (2 Byte) (n Byte) Tabelle 2.18: public Key Format 96 KAPITEL 2. KONZEPT Signatur: Um eine Signatur verarbeiten zu können, ist es notwendig, den zur Erstellung verwendeten Hash- und Verschlüsselungsalgorithmus, zu kennen. Diese beiden Daten sind in den ersten beiden Byte des Signaturformats enthalten. Daran anschließend folgt das eigentliche Zertifikat als binärer Datenblock. Seine Länge wird mittels zwei, den Signaturdaten vorangestellten Byte, spezifiziert. AlgoType (1 Byte) HashType (1 Byte) Length Data (2 Byte) (n Byte) Tabelle 2.19: Signatur Format Die Kodierung des verwendeten Krypto-Algorithmus wird mittles AlgoType“ gemäß ” Tabelle 2.5 angegeben. Für die zur Hash-Bildung benutzten Verfahren werden folgende Kodierungen vereinbart. HashType Code Algorithmus 0x01 MD2 0x02 MD5 0x03 SHA1 0x04-0xFF reserved Tabelle 2.20: Hash Algorithmen 2.8.2.3 Beispiel Der Aufbau eines Beispiel Zertifikats sieht gemäß dieser Regeln und Darstellungsvereinbarungen folgendermaßen aus: Benutzer: Geburtsdatum: Geburtsort: Sitz des ausstellenden Trustcenters: Trustcenter ID: Zertifikatsseriennummer: Ablaufdatum: Öffentlicher Schlüssel: Signatur-Verschlüsselung: Signatur Hash-Algorithmus: Albert Deindl 12. Februar 1974 Mainburg Deutschland 0xAB 0xCD 0xEF 0x12 1 31. Dezember 2005 RSA Key RSA MD5 2.8. SPEZIFIKATIONEN 97 Zertifikat: -----------------------------------------------------> 06 41 6C 62 65 72 74 06 44 65 69 6E 64 6C 31 39 LL A l b e r t LL D e i n d l 1 9 --> 37 34 30 32 31 32 08 4D 61 69 6E 62 75 62 67 44 7 4 0 2 1 2 LL M a i n b u r g D --> 45 AB CD EF 12 01 32 30 30 35 31 32 33 31 08 20 E |---ID----| SS 2 0 0 5 1 2 3 1 LL LL --> 31 00 01 08 00 < 2048 Bit AT KT MO LL LL --> 02 00 18 < 24 Bit EX LL LL public Key modulus > Exponent > 01 02 08 00 AT HT LL LL --> <2048 Bit Signatur> ---------------------------------------------------- Zur besseren Lesbarkeit sind hier unter den eigentlichen Daten Orientierungszeichen angegeben. Das eigentliche Zertifikat besteht nur aus den Bytes der mit --> gekennzeichneten Zeilen! Kennzeichnet eine Längenangabe Seriennummer AlgoType KeyType Modulus Exponent HashType ASCII Zeichen sind unter dem jeweiligen Bytewert angegeben <..> Schlüssel oder Signaturen sind aufgrund ihrer großen Länge nur symbolisch dargestellt angegeben LL SS AT KT MO EX HT 2.8.3 Erweitertes OBEX Protokoll - mAuth OBEX 2.8.3.1 Allgemeines Zur Kommunikation zwischen PTD und POA wird ein an OBEX (vergleiche Abschnitt 1.6) angelehntes Protokoll verwendet. OBEX hat sich auf den meisten mobilen Geräten, unabhängig von deren lokalen Übertragungstechnologien, als Protokoll zum spontanen Datenaustausch durchgesetzt. Die dort verwendeten OBEX Parser können mit relativ geringen Modifikationen auch für das mAuth Kommunikationsprotokoll verwendet 98 KAPITEL 2. KONZEPT werden. Das PTD ist in dieser Kommunikationsbeziehung der Client und der PoA der Server. OBEX bildet zwar die Grundlage dieses Protokollentwurfs, es ist aber nicht das Ziel des mAuth Systems auch die OBEX Services anzubieten. Der OBEX Server des PoA darf und soll sich deshalb auch nicht als default OBEX Server bei der TransportprotokollSchicht registrieren. MAuth OBEX wird somit bereits beim Verbindungsaufbau auf Transportschicht-Ebene mit einem anderen Dienstbezeichner angesprochen. Dadurch ist es sehr unwahrscheinlich, daß beim Peer Discovery-Vorgang auch andere OBEX Geräte als solche, die dem mAuth Standard entsprechen, antworten werden. Spätestens an der Art der Antwort ist eine geeigente Gegenstelle eindeutig von anderen OBEX Geräten“ zu unterscheiden. ” Je nach Art des darunter liegenden Transportmediums wird dieser Transportschicht Dienst-Bezeichner anders realisiert werden. Bei TCP/IP als Transportprotokoll entspräche dies der Zuweisung einer anderen Port-Nummer als der des default OBEX Services 650. Für IrDA als Übertragungsmedium ist für das mAuth System ein IAS Eintrag in folgender Form vorgesehen: Class OBEX:mAuth { IntergerIrDA:TinyTP:LsapSel } Das IrDA LMP OBEX Hint-Bit soll beim Server jedoch gesetzt werden. Es erscheint wenig sinnvoll für PoA-Server auch default OBEX Server Dienste anzubieten. Sollte dies für eine spezielle Anwendung benötigt werden, spricht jedoch nichts dagegen. Aufgrund der unterschiedlichen Bezeichner auf Transportschicht-Ebene können mAuth und default OBEX Server jederzeit nebeneinander existieren. Der Client wird mit großer Wahrscheinlichkeit auch die default OBEX Server Dienste unterstützen. Für die Implementierung der mAuth-Client Anwendung auf dem PTD muß eine evtl. bereits vorhandene Standard OBEX Library erweitert werden. Ihre Grundmechanismen wie Befehls und Header Parser können jedoch mit großer Wahrscheinlichkeit weiterverwendet werden. Die Erweiterungen des OBEX Protokolls zu mAuth-OBEX bestehen aus einem zusätzlichem Befehl und mehreren neuen Header-Typen. Desweiteren ist die Unterstützung einer minimalen Paketlänge von 1 KByte gefordert. Das ist notwendig, da gemäß der OBEX Spezifikationen ein Connect-Request sich nicht über mehrere Pakete erstrecken darf. Der Authentifikationsvorgang findet jedoch in der Verbindungsaufbauphase statt und die dazu notwendigen Informationen werden innerhalb der Connect Pakete ausgetauscht. 2.8. SPEZIFIKATIONEN 99 Ein Connect-Request Paket muß also genügend Platz für mindestens ein vollständiges Zertifikat bieten. Eine Response muß die Authentification-Challenge und den SessionKey aufnehmen können. Dies sind die umfangreichsten Daten in der Connect Phase, darüberhinaus sind noch weitere Informationen unterzubringen. Bei der Annahme eines Zertifikats als größte der hier genannten Strukturen, mit einer Schlüssel und Signaturlänge von jeweils 2048 Bit, ergibt sich allein daraus zusammen mit den weiteren Daten eines Zertifikats ein Platzbedarf von etwas über 512 Byte. Die übrigen Daten eines Connects sind im Vergleich dazu eher gering, so daß eine minimale Paketgröße von 1 KByte ausreichend ist. Durch die Möglichkeit der Übertragung mehrerer ID Informationen in einem Paket läßt sich der Verbindungsaufbau vereinfachen und beschleunigen. Die Unterstützung größerer Paketlängen ist daher empfehlenswert. Geeigneter Wert liegen zwischen 2 bis 4 KByte 2.8.3.2 Befehle Das mAuth-OBEX verwendet die in Tabelle 2.21 aufgelisteten Befehle. OpCode 0x90 0x80 0x81 0xFF 0x02 (0x82) 0x03 (0x83) mAuth OBEX Befehle Name Beschreibung PEERDISC Informationsabfrage empfangsbereiter Peers CONNECT Verb. Aufbau, Parameter Verh., Authentifikation DISCONNECT Signal zum Verbindungsabbau ABORT Abbruch der laufenden Operation PUT Objekt senden GET Objekt anfordern Tabelle 2.21: mAuth OBEX Befehle PEERDISC PEERDISC-Pakete werden während der Peer Discovery-Phase (vergleiche 2.5.4) ausgesendet. Das Ziel des Peer Discoverys ist das schnelle Auffinden und das Sammeln rudimentärer Informationen über in Reichweite liegender PoA-Server. Diese Pakete können auch ohne vorangehenden Verbindungsaufbau verarbeitet werden. PEERDISC-REQUEST werden in jedem Zustand des Servers angenommen und beantwortet; selbst dann, wenn schon eine Verbindung zu einem anderen Client besteht. 0x90 Paket Description Länge String (1 Byte) (2 Byte) (16 Byte) max. mAuth-OBEX Paketlänge (2 Byte) Tabelle 2.22: mAuth-OBEX PeerDisc Request opt. Header (n Byte) 100 KAPITEL 2. KONZEPT Tabelle 2.22 zeigt das Format eines solchen Request Pakets. Der Description String ist ein 16 stelliger ASCII String, der eine möglichst aussagekräftige Bezeichnung des mAuth Clients enthält. Der PoA-Server kann diese Information z.B. für seine Log-Dateien oder zur Anzeige auf einem Status Display nutzen. Bereits in dieser Phase wird die maximale mAuth-OBEX Paketlänge ausgetauscht, damit bereits bei einem Verbindungsaufbau die Pakete korrekt formatiert werden können. Der Description String liefert nur sehr begrenzte Informationen über den jeweiligen Kommunikationspartner. Mittels optionaler Header können daher weitergehende Informationen übermittelt werden. Die Verarbeitung dieser Header ist jedoch nicht verpflichtend. Die PEERDISC-RESPONSE ist analog zum Request aufgebaut. response code (1 Byte) Paket Description Länge String (2 Byte) (16 Byte) max. mAuth-OBEX Paketlänge (2 Byte) opt. Header (n Byte) Tabelle 2.23: mAuth-OBEX PeerDisc Response Der Description String enthält eine Kurz-Bezeichnung des PoA-Servers. Der PTD kann diese Information im PoA-Auswahldialog anzeigen. Mittels dem Peer Description-Headers können auch weitere Informationen über den PoA zurückgesendet werden. Je nach Fähigkeiten des PTD-Anwendung können diese mit in die Auswahlliste aufgenommen, separat anzeigbar sein oder auch ignoriert werden. In der Peer Discovery-Operation können außerdem noch die Header CapAuth, CapLink und CapApp vorhanden sein. CONNECT In der OBEX Spezifikation (vergleiche Abschnitt 1.6.2) ist für diesen Befehl nur die Auswertung der ersten 7 Byte verpflichtend vorgeschrieben. Für den Authentifikationsprozeß ist jedoch die Auswertung der Header in diesem Request unbedingt notwendig. Für das mAuth System ist daher die Verarbeitung aller bis zur maximalen Paketlänge vorhandenen Header im Connect-Request gefordert! Eine mAuth CONNECT-Operation kann zusätzlich zu den in der OBEX Spezifikation erlaubten Header folgende Header-Typen enthalten: mAuthID, mAuthChallenge, mAuthResponse, mAuthSessionKey, CapAuth, CapLink und CapApp. DISCONNECT, ABORT, PUT, GET Aufbau und Verwendung dieser Befehls entsprechen der OBEX Spezifikation (vergleiche Abschnitt 1.6.2). 2.8. SPEZIFIKATIONEN 2.8.3.3 101 Header Ein Großteil der Funktionalität des mAuth Protokolls wird durch zusätzliche Header erreicht. Header bieten eine einfach zu parsende Möglichkeit strukturierte Informationen zu übertragen. Anstelle der Capability Header hätte auch ein, dem in OBEX definiertem Capability Service ähnlicher Mechanismus, verwendet werden können. Dort werden gerätespezifische Informationen mittels XML2 Objekte, die mit GET Requests angefordert werden können, abgebildet. Für die hier benötigten Zwecke ist eine Darstellung in Form von dafür spezialisierten Headern jedoch vorteilhaft. Sie ermöglicht bei ausreichender Funktionalität eine wesentlich schlankere, Resourcen schonendere Implementierung. In Tabelle 2.24 sind die mAuth spezifischen Header-Typen in einer Übersicht aufgeführt. HI 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 0xB8 mobileAuth OBEX Header Name Beschreibung mAuthID vorhandene IDs: SerNr., Zertifikate mAuthChallenge AlgoType & Nonce mAuthResponse AlgoType & verschl. Nonce mAuthSessionKey AlgoType & verschl. Nonce CapAuth unterstütze Auth. Algorth. CapLink unterstützte Linkversch. Algorth. CapApp unterstützte Anwendungsmodelle PeerDescription Beschreibung des KommPartners Crypt AlgoType, alles folgende bis Paketende ist verschlüsselt Tabelle 2.24: Erweiterte Headertypen Eine bereits in der OBEX Spezifikation eingeführte Struktur ist das Tag-LenghtValue Triplet. Damit lassen sich innerhalb eines Headers fexibel unterschiedliche Komponenten unterbringen. Tag Length Value (1 Byte) (2 Byte) (n Byte) Tabelle 2.25: Header Parameter Triplet Der Tag charakterisiert die Art der Komponente und das Feld Length gibt die Länge der eigentlichen Komponente, der Value an. 2 Extensible Markup Language 102 KAPITEL 2. KONZEPT mAuthID Der mAuthID Header ist in CONNECT-Request Paketen enthalten. Er enthält eine oder mehrere Benutzeridentifikationsmerkmale. Der PoA-Server wertet diesen Header aus, um den betreffenden Nutzer in seiner Zugangsdatenbank zu lokalisieren. 0x70 Header ID Length Triplet 1 (1 Byte) (2 Byte) (n Byte) ID Triplet 2 (n Byte) ID Triplet n (n Byte) Tabelle 2.26: mAuthID Header Durch seinen Aufbau aus Triplets kann dieser Header eine beliebige Anzahl und verschiedene Arten von IDs befördern. Abhängig von der verwendeten Chipkarte und der auf ihr zur Verfügung stehenden Daten, kann es sinnvoll sein, mehr als nur eine Kennung auszusenden. Es ist vorstellbar, daß ein Benutzer zuerst nur die Seriennummer seiner Karte zur Identifikation verwendet. Zu einem späteren Zeitpunkt entschließt er sich jedoch, um erweiterte Dienste nutzen zu können, sich ein Zertifikat ausstellen zu lassen. Das Zertifikat ist aus Sicherheitsgründen das bevorzugte ID-Merkmal. Neue Anmeldungen an PoAs werden ab diesem Zeitpunkt mittels dem Zertifikat durchgeführt. Es ist jedoch nicht zumutbar, daß sich der Benutzer nun sofort auch an allen PoAs, an welchen er bisher nur mit seiner Kartenseriennummer angemeldet war, ummeldet. Es muß nun, je nach PoA, die eine oder andere ID verwendet werden. Der PTDClient sendet daher im Verbindungsaufbau alle IDs, welche die Karte enthält aus. Die bevorzugte Kennung wird dabei als erste übertragen. mAuth Triplet Tags Code Bedeutung 0x00 Karten Seriennummer 0x01 Zertifikat 0x02-0xFF reserved Tabelle 2.27: mAuth Triplet Tags Unterschiedliche IDs können an ihren Triplet Tags erkannt und entsprechend verarbeitet werden. Können nicht alle IDs aufgrund einer zu geringen maximalen unterstützen mAuthOBEX Paketlänge eines Kommunikationspartner im ersten CONNECT Paket untergebracht werden, werden diese in einzelnen, aufeinanderfolgenden CONNECT-Request Paketen übertragen. Durch einen fehlenden mAuthChallenge-Header in der CONNECT-Response erkennt der Client eine nicht akzeptierte ID und sendet daher solange neue Requests aus, bis 2.8. SPEZIFIKATIONEN 103 entweder eine Kennung akzeptiert wurde, oder bereits alle vorhandenen IDs einmal übertragen worden sind. mAuthChallenge MAuthChallenge Header enthalten die zur Durchführung des Challenge-Response Verfahrens notwendigen Daten. Da sich im mAuth-System der PTD-Client beim PoA-Server authentifizieren muß, ist dieser Header in einer Response des Servers vorhanden. Gewöhnlich enthält das Response Paket auf den CONNECT-Request, der als erstes eine passende ID enthalten hat diesen Header. 0x71 Header Length (1 Byte) (2 Byte) AlgoType (1 Byte) Nonce (n Byte) Tabelle 2.28: mAuthChallenge Header Neben dem Typ des zur Authentifikation gewünschten Krypto-Algorithmuses ist darin eine vom Server erzeugte Zufallszahl in binärer Form enthalten. Diese Zahl wird auch als Nonce“ bezeichnet. ” mAuthResponse Dieser Header enthält die Antwort auf einen mAuthChallenge Header. Gemäß dem Authentifikationsablauf wird auch ein CONNECT-Request, der eine passende ID enthalten hat, mit einem Response-Code Unauthorisized abgelehnt. Der Client antwortet darauf mit einem erneuten CONNECT-Request, welcher diesmal den mAuthResponse-Header beinhaltet. Darin ist die mit dem geheimen Schlüssel des Benutzers chiffrierte Nonce“ enthalten. ” 0x72 Header Length (1 Byte) (2 Byte) AlgoType (1 Byte) encrypted nonce (n Byte) Tabelle 2.29: mAuthResponse Header Dieser Header ist analog zum mAuthChallenge Header aufgebaut. mAuthSessionKey Bei Verwendung asymmetrischer Methoden könnte der Schlüsseltausch gleichzeitig auch zur Authentifikation verwendet werden. Die Nonce“ im mAuthChallenge ” 104 KAPITEL 2. KONZEPT Header wäre der mit dem public Key des Kommunikationspartner verschlüsselte Session-Key. Die mAuthResponse zu dieser Challenge wäre die entschlüsselte und diesesmal mit dem private Key verschlüsselte Nonce. Damit wäre die Authentizität überprüft und ein geheimer Session-Key ausgetauscht. Da jedoch bei der Verwendung symmetrischer Verfahren die Nonce“ in der Challenge ” unverschlüsselt übertragen werden muß, um den Dienst der Authentifikation zu erbringen, kann diese nicht gleichzeitig als Session-Key verwendet werden. Zu diesem Zweck existiert dieser zusätzliche Header. Er dient zur Vereinbarung eines Session-Keys und wird zur Vereinheitlichung auch bei Verwendung asymmetrischer Methoden benutzt. 0x73 Header AlgoType T Länge (1 Byte) (2 Byte) (1 Byte) AlgoType K (1 Byte) encrypted Session-Key (n Byte) Tabelle 2.30: mAuthResponse Header Der Session-Key wird vom PoA-Server vorgeschlagen“ und ist daher in einer ” CONNECT-Response enthalten. Er ist mit einem Schlüssel des Benutzers, den der PoA-Server entweder in seiner Datenbank hat oder in Form eines Zertifikats übermittelt bekommen hat, verschlüsselt. Der dazu verwendete Algorithmus ist normalerweise derselbe, welcher auch zur Authentifikation verwendet wird. Sein Typ ist zur Vollständigkeit auch nochmals in diesem Header im Feld AlgoType T angegeben. AlgoType K spezifiziert dagegen den Typ des Linkverschlüsselungs-Algorithmus. Dieser Algorithmus wird nicht auf der Karte, sondern direkt im mobilen Gerät ausgeführt. Der Session-Key wird dafür als Schlüssel verwendet. CapAuth Dieser Header wird wie alle Capability Header hauptsächlich in PEERDISC-Request und Response eingesetzt. Er enthält eine Folge aller von dem aussendenden Gerät zur Authentifizierung unterstützten Kryptoalgorithmen. 0x74 Header Length (1 Byte) (2 Byte) AlgoType 1 (1 Byte) AlgoType 2 (1 Byte) AlgoType n (1 Byte) Tabelle 2.31: CapAuth Header Die Kodierung erfolgt gemäß Tabelle 2.5. Die Reihenfolge der Übertragung bestimmt die Priorisierung der einzelnen Verfahren. Der bevorzugte Algorithmus wird zuerst gesendet. 2.8. SPEZIFIKATIONEN 105 CapLink CapLink ist in Aufbau und Einsatz zum CapAuth-Header identisch. Er spezifiziert jedoch nicht die unterstützten Authentifikations-Algorithmen sondern die Fähigkeiten zur Verschlüsselung der Kommunikationsverbindung. 0x75 Header Length (1 Byte) (2 Byte) AlgoType 1 (1 Byte) AlgoType 2 (1 Byte) AlgoType n (1 Byte) Tabelle 2.32: CapLink Header CapApp Nach erfolgreicher Authentifikation sollen je nach PoA verschiedene Funktionen ausgeführt und gesteuert werden können (siehe Abschnitt 2.9). Die mAuth-PTD-Client Anwendung muß diese unterstützen. Mittels diesem Header können bereits in der Peer Discovery-Phase Client und Server ihre Fähigkeiten und Anforderungen dahingehend abgleichen und im Falle, daß keine Übereinstimmung gefunden werden kann, den Verbindungsaufbau von vornherein ausschließen. 0x76 Header Length (1 Byte) (2 Byte) AppID 1 (2 Byte) AppID 2 (2 Byte) AppID n (2 Byte) Tabelle 2.33: CapApp Header Der CapApp-Header muß darüberhinaus im CONNECT-Request und Response enthalten sein um den verwendeten Anwendungsfall“ festzulegen. In der Connect Pha” se übermittelt damit der PoA-Server die von ihm geforderte Anwendung, der PTD bestätigt, falls er die Anwendung unterstützt, dies mit einem identischen CapAppHeader im folgendem Request. Eine Auflistung vorgeschlagener Applikationstypen samt zugeordneter AppIDs ist in Abschnitt 2.9 zu finden. PeerDescription Der PeerDescription Header ist eigentlich zur Verwendung in PeerDisc-Operationen gedacht, um optional zusätzlich zum dort enthaltenen Description String weitergehende Informationen über das betreffende Gerät zu liefern. Er kann bei Bedarf jedoch auch in CONNECT-Operationen benutzt werden. Die Informationen sind in der schon bekannten Tag-Length-Value Struktur kodiert. Tabelle 2.35 enthält die bisher definierten Informationstypen. 106 KAPITEL 2. KONZEPT 0x70 Header Info Länge Triplet 1 (1 Byte) (2 Byte) (n Byte) Info Triplet 2 (n Byte) Info Triplet n (n Byte) Tabelle 2.34: PeerDescription Header Dieser Header-Typ ist hauptsächlich dazu gedacht, dem Client Informationen über den Server zu übermitteln. Er kann jedoch auch für den umgekehrten Weg eingesetzt werden. PeerDescription Triplet Tags Code Inhalt 0x00 Typ 0x10 Bezeichnung 0x11 Standort: Straße 0x12 Standort: Ort 0x13 Standort: Land 0x20 Betreiber 0x30 Hersteller 0x31 Seriennummer 0x32 Herstellungsjahr 0x40-0xFF reserved Tabelle 2.35: PeerDescription Triplet Tags Einige Tags, wie z.B. der Standort-Tag sind jedoch nur bei einem PoA-Servern sinnvoll. Crypt Der Crypt Header ist das Signal dafür, daß der Bytestrom ab diesem Header bis zum Endes des Pakets verschlüsselt ist. Er besteht aus der Header-Kennung und einem weiteren Byte. In diesem Byte ist der Typ des verwendeten Verschlüsselungsalgorithmus in der in Tabelle 2.5 beschriebenen Kodierung und die Art der Blockbildung enthalten. Der Typ des Blockbildungsalgorithmus ist in den höchstwertigen 2 Bit kodiert. 0xB8 AlgoType & Blockcode (1 Byte) (1 Byte) Tabelle 2.36: Crypt Header Den endgültigen Wert, der Kryptoalgorithmus und zugehörige Blockbildung charakterisiert, erhält man durch einfaches Aufaddieren der entsprechenden beiden Codes. 2.8. SPEZIFIKATIONEN 107 Blockbildungs Arten Code Typ 0x40 ECB 0x80 CBC 0xC0 reserved Tabelle 2.37: Kodierung von Blockbildungsarten Die, diesem Header folgenden verschlüsselten Daten, müssen vom Empfänger erst entschlüsselt werden bevor sie weiter geparst werden können. Mit diesem Headers wird sie Kommunikationsverschlüsselung realisiert. Die dazu notwendigen Schlüssel müssen in der Verbindungsaufbauphase ausgehandelt worden sein. 2.8.4 Chipkarten-Applikation - Zustände und Automat Die default Chipkarten-Applikation im mAuth-System kennt drei Zustände in denen sie sich befinden kann. Nach dem Start der Applikation befindet sie sich im niedrigst privilegierten Zustand. Durch Eingabe der entsprechenden PIN Nummern kann in andere Zustände gewechselt werden. Im Startzustand, nach einem Kartenreset, können außer der Abfrage der ChipkartenFähigkeiten und der Eingabe einer PIN, keine weiteren Aktionen ausgeführt werden. wait(command) change state command not allowed done check state change request PIN Ok change state command allowed execute Abbildung 2.22: Chipkarten Zustandsautomat 108 KAPITEL 2. KONZEPT Die Eingabe der Standard PIN“ versetzt die Karte in den normalen“ Betriebszu” ” stand. Dort dürfen alle Befehle, bis auf das Setzten oder Ändern von Daten auf der Karte ausgeführt werden. Das ist im Verwaltungs-Zustand nach erfolgreicher Eingabe der Verwaltungs PIN erlaubt. Auch der (öffentliche) Schlüssel darf nur in diesem Zustand ausgelesen werden. Zur Neuanmeldung an PoAs und zur Zertifikatsaustellung muß sich die Karte also in diesem Betriebszustand befinden. Wie jede Chipkarten-Applikation ist auch diese Anwendung passiv. Sie wartet auf eingehende Befehls APDUs, welche sie verarbeitet und mit einer entsprechenden Response beantwortet. Noch vor der Befehlsausführung wird überprüft, ob das empfangene Kommando im aktuellen Sicherheits-Level überhaupt zugelassen ist. Ist das nicht der Fall, wird ein entsprechender Status zurückgesendet und die Karte geht wieder in den Zustand wait(command) über. Ist das entsprechende Kommando erlaubt, wird es ausgeführt und beantwortet. Eine Sonderform bildet das VrfPIN Kommando, welches nur die interne Sicherheitsstufe der Karte ändert und dann wieder in den Wartezustand zurückkehrt. 2.8.5 PTD-Anwendung - Zustände und Automat Beim Start der PTD-Client-Anwendung wird der Chipkartenleser initialisiert, die Kommunikation zur Karte aufgebaut und die mAuth default Chipkarten-Applikation selektiert. Tritt in der Initialisierung ein Fehler auf, erfolgt nach Anzeige des Fehlers unmittelbar die Beendigung der Anwendung. Andernfalls folgt die Darstellung des PIN Dialoges zur Eingabe der Standard PIN und das Aussenden eines VrfPIN Kommandos an die Karte. Nur bei positiver Antwort der Karte wird die Anwendung fortgesetzt. Ansonsten verweilt sie im PIN-Dialog und fordert zur erneuten Eingabe auf. Ist der Fehlbedienungszähler der Karte abgelaufen kann nur noch der PUK eingegeben werden. Ist auch dieser falsch, beendet sich die Anwendung, ist er korrekt beginnt die PIN-Abfrage von Neuem. Ist die korrekte PIN überprüft worden, beginnt der Peer Discovery-Vorgang. Die gefundenen PoAs werden dem Benutzer im darauffolgendem PoA-Auswahldialog dargestellt. In regelmäßigen Abständen wird im Hintergrund ein neues Peer Discovery durchgeführt und die Anzeige entsprechend aktualisiert. Die Anwendung verweilt in diesem Dialog solange, bis der Nutzer einen PoA und eine Aktion gewählt hat. Hieraus kann die Anwendung auf Benutzerwunsch jederzeit beendet werden. 2.8. SPEZIFIKATIONEN 109 error init retry error too many failures enter PIN get card cap peer discovery refresh exit peer selected select peer exit user accepted/rejected auth failed peer selected new user apply auth execute App Abbildung 2.23: PTD-Zustandsautomat Darüberhinaus kann der Nutzer zwischen Neuanmeldung an einem PoA oder der Authentifizierung wählen. Während die Neuanmeldung die dazu notwendigen Daten überträgt, den Status anzeigt und wieder in den Auswahldialog zurückkehrt, startet die Authentifikation im Erfolgsfall das entsprechende Applikationsmodell (vergleiche Abschnitt 2.9). Schlägt die Authentifikation fehl, teilt die mAuth Anwendung das dem Nutzer mit und geht ebenfalls wieder in den Auswahldialog über. 2.8.6 PoA-Server - Zustände und Automat Der Grundzustand des PoA-Servers ist das Hören“ auf eingehende Pakete. Der Zu” standsautomat 2.24 geht davon aus, daß immer ein derartiger Prozeß“ zur Verfügung ” File: J:\diplomarbeit Bilder\Eigene Dateien\server3.mdl 23:16:40 Dienstag, 12. Juni 2001 State Diagram: PTD Page 1 110 KAPITEL 2. KONZEPT steht, d.h. bei einem Verbindungsaufbau umgehend ein neuer Prozeß gestartet wird, welcher neue Verbindungswünsche bearbeiten kann. Das stellt auch sicher, daß PEERDISC-Requests immer bearbeitet und beantwortet werden können. Viele PoA-Server werden darüberhinausgehend jedoch keine gleichzeitigen Verbindungen zu mehreren Clients erlauben. Daher muß bei jedem eingehenden Verbindungswunsch überprüft werden, ob der Server bereits mit einem anderen Client verbunden ist, und ob eine weitere Verbindung zulässig ist. Ist ein Verbindungsaufbau zulässig, startet der CONNECT-Vorgang wie in Abschnitt 2.8.3 definiert. Wenn keine weiteren Verbindungen erlaubt sind, wird der Verbindungswunsch mit einem Response-Code Service Not Available“ abgelehnt. ” peer disc listen no more allowed request timeout connect auth failed reject user if another connection allowed accept user new user user known check auth disconnect timeout auth Abbildung 2.24: PoA-Zustandsautomat Ist in einem CONNECT-Request keine, dem PoA bekannte Benutzerkennung vorhanden, überprüft der PoA-Server, ob er von seinem Administrator in einem Zustand zur 2.9. APPLICATION FRAMEWORK 111 Neuanmeldung von Nutzern versetzt worden ist. Ist das der Fall, stellt er die neue Benutzerkennug auf seinem Administrator-Terminal dar. Falls der PoA-Administrator diese Benutzeranmeldung authorisiert, werden diese Daten in die Benutzerdatenbank des PoA-Servers aufgenommen. Dabei findet jedoch kein vollständiger Verbindungsaufbau statt. Der Server geht, wie auch bei der Ablehnung einer ID, sofort wieder in den Zustand listen über. Ist der PoA-Server nicht zur Aufnahme neuer Kennungen bereit oder fehlen zur Neuanmeldung wichtige Daten, lehnt er den Verbindungswunsch ab, und kehrt ebenfalls in den Zustand listen zurück. Befindet sich in der Zugangsdatenbank des PoA-Servers bereits ein zur Kennung passender Eintrag, wird der Verbindungsvorgang mit der Authentifizierung fortgesetzt. Treffen bei diesem Vorgang längere Zeit keine notwendigen Pakete vom Client mehr ein, erfolgt nach Ablauf einer angemessenen Wartezeit (< 30sec) ein Übergang in den Zustand listen durch TIMEOUT. Der selbe Übergang findet bei einer fehlgeschlagenen Authentifizierung statt. Ein Verbindungsaufbau kann auch durch nicht übereinstimmende Applikationsmodelle oder fehlende oder falsche Session-Keys abgelehnt werden. Verläuft die Authentifikation jedoch erfolgreich, ist der Verbindungsaufbau damit beendet, die beiden Kommunikationspartner sind verbunden und der Server befindet sich im Zustand authenticated. An dieser Stelle wird nun das ausgehendelte Anwendungsmodell ausgeführt. Nach dessen Beendigung wird die Verbindung mittels eines DISCONNECT-Requests vom PTDClient beendet. Falls der Client, z.B. durch eine fehlerhafte Implementierung keinen DISCONNECTRequest aussendet, oder die physikalische Verbindung abreißt“, muß auch hier ein ” Übergang in den Zustand listen durch TIMEOUTS vorgesehen werden, um eine Blockierung des Servers zu verhindern. Dieser TIMEOUT muß jedoch bedeutend länger angesetzt werden, da hier Interaktionen mit dem Benutzer stattfinden, und neue Pakete oft erst nach Benutzereingaben übertragen werden. Ein angemessene Zeitspanne dürfte zwei bis fünf Minuten betragen. 2.9 2.9.1 Application Framework Allgemeines Gewöhnlich ist die erfolgreiche Authentifikation die Voraussetzung, nicht aber das Ziel der Ausführung der mAuth PTD-Client-Anwendung. 112 KAPITEL 2. KONZEPT Je nach PoA sollen verschiedene Aktionen und Interaktionen stattfinden. Das PTD dient dabei als sicheres Terminal der Kommunikation mit dem PoA und steuert diesen. Dazu muß die PTD-Client-Applikation wissen, um welche Art von PoA-Anwendung es sich handelt, damit die dazu notwendige Funktionalität bezüglich User-Interface und Kommunikationsprotokoll bereit gestellt werden. Die genaue Definition dieser Anwendungsmodelle ist nicht mehr Aufgabe dieses Systementwurf. Da jedoch zumindest der Anwendungs-Auswahl-Mechanismus“ Teil der ” Verbindungsaufbauphase ist und somit in diesem Konzept spezifiziert worden ist, sollen in Form dieses Application Frameworks Richtlinien und Vorschläge für eine Spezifikation von Anwendungsmodellen vorgegeben werden. Die unterschiedlichen Funktionalitäten der PoA-Server werden in sogenannten Applikationsmodellen erfaßt. Der Typ eines Applikationsmodells wird in den CapAPP-Headern mittels 2 Bytes kodiert. Das erste Byte in Übertragungsreihenfolge spezifiziert die Art des Applikationsmodells. Das zweite Byte dessen Versionsnummer. Es ist zu erwarten, daß sich die Anforderungen an Applikationsmodelle im Laufe der Zeit ändern werden und somit deren Umfang und Komplexität zunehmen wird. Im Vergleich zur Grunddefinition erweiterte Fähigkeiten eines Applikationsmodells werden durch Erhöhung der Versionsnummer gekennzeichnet. Dabei ist gefordert, daß Geräte, die ein bestimmtes Applikationsmodell unterstützen, immer zur Grunddefinition mit der Versionsnummer 0x00 abwärts kompatibel bleiben. Dadurch ist sichergestellt, daß eine Kommunikation, wenn auch mit eingeschränkten Fähigkeiten, auch mit älteren Geräten möglich ist. Applikation Identifier Typ Version Bedeutung 0x00 0x00 Zugang 0x01 0x00 Öffnen/Schließen 0x02 0x00 Geldautomat 0x03 0x00 Point of Sale 0x04 0x00 Trustcenter 0x05 0x00 Datentransfer 0x06 0x00 elektronische Unterschrift 0x07 0x00 XML Browser Darst“. ” 0x08 0x00 dynamische Client Applets 0x09-0xFF 0x00 reserved for future use Tabelle 2.38: mAuth Application Identifier Um ein einheitliches Zusammenarbeiten zu gewährleisten, müssen neue Applikationsmodelle, wie auch neue Versionen öffentlich bekanntgemacht und in die Spezifikation aufgenommen werden. 2.9. APPLICATION FRAMEWORK 113 Tabelle 2.38 enthält eine Zuordnung von AppIDs zu den vorgeschlagenen Applikationsmodellen. 2.9.2 Applikationsmodelle Zugang Dieses Modell ist das einfachste Applikationsmodell. Es beschreibt Vorgänge, in denen eigentlich nur die erfolgreiche Authentifikation erforderlich ist und keine weitere Interaktion mit dem Benutzer. Dies ist z.B. die Anmeldung an Rechnersysteme oder der Zutritt zu Büro/Laborräume. Als Bedienelement kann hier ein Bestätigungs Button vorhanden sein und evtl. der Name des PoA-Systems angezeigt werden. Öffnen/Schließen Dies ist die Erweiterung des Modells Zugang um die Fähigkeit des Abschließens“. ” Damit lassen sich konventionelle Schlüssel ersetzen und Aufgaben wie z.B. das Öffnenund Schließen von Haustüre oder Auto realisieren. Die Interaktion mit dem Benutzer beschränkt sich auf die Auswahl der Aktion (Öffnen oder Schließen). Geldautomat Die Bedienung von Geldautomaten erfordert dagegen mehr Interaktion zwischen Nutzer und PoA-Server. Das Applikationsmodell muß diese Funktionalität bieten. Point of Sale Point of Sale Anwendung sollen das bargeldlose Bezahlen realisieren. Die Liste mit den eingekauften Artikeln soll am PTD angezeigt und zu Verwaltungszwecken gespeichert werden können. Ist die Auflistung korrekt, bestätigt der Kunde dies, signiert diese Rechnung mit seiner elektronischen Unterschrift und sendet sie an den PoA-Server des PoS zurück. Trustcenter Die Schlüsselüberprüfung, die drahtlose Übertragung von Zertifikaten oder sonstigen Informationen zwischen Trustcenters und PTD, sowie die dazu notwendige Interaktion mit dem Nutzer werden in diesem Anwendungs-Modell erfaßt. Datentransfer Damit soll es möglich sein, beliebige elektronische Dokumente auf sicherem Wege zu übertragen. Eine Mögliche Anwendung ist z.B. die Übertragung der persönlichen Kontoauszüge von einem Bank-PoA. elektronische Unterschrift Der Benutzer kann die elektronische Unterschrift als universelle Methode zum Ausweisen seiner Identität verwenden. 114 KAPITEL 2. KONZEPT XML- Browser“ Darstellung ” Eine Einschränkung der bisher definierten Modelle ist, daß sie die geforderte Steuerfunktionen und Anzeigeelemente nur statisch zur Verfügung stellen, der PoA kann damit die Darstellung und Interaktion nicht individuell gestalten. PTDs die über genügend Leistungsfähigkeit verfügen, können mit diesem Modell eine Art Browser“ implementieren. Dieser Browser“ ist vergleichbar mit den vom WWW ” ” bekannten HTML Browsern. Zur Stukturierung der übertragenen Daten soll jedoch das wesentlich flexiblere XML zusammen mit den Layoutbeschreibungen CSS3 oder XSL4 verwendet werden. Der PoA-Server kann damit die Darstellung der Bedien- und Anzeigeelemente auf dem PTD-Client bestimmen. Diese Modell besitzt Ähnlichkeit mit der aus dem Internet bekannten Kombination aus HTML Browser und HTTP Server mit CGI Unterstützung. dynamische Client Applets Dieses Applikationsmodell erweitert das XML Modell um die Fähigkeit, vom PoAServer übertragene, Programme auf dem PTD auszuführen. Diese Funktionalität ist vergleichbar mit HTML Browsern, welche Java Applets ausführen können. Die Art der PTD-Applets soll hier nicht weiter spezifiziert werden, die Verwendung von Java würde sich jedoch anbieten. Bei der Implementierung ist darauf zu achten, daß die Applets in einer abgesicherten Umgebung mit genau defierten Berechtigungen ablaufen. Dies ist zwar das komplexeste und Resourcen-intensivste Modell, jedoch auch das universellste. PTD und PoAs, welche dieses Modell unterstützen, können ohne Unterstützung weitere Applikationsmodelle voraussichtliche jeden Anwendungsfall abdecken. 2.9.3 Verwendung des mAuth-OBEX Protokolls Auch diese Anwendungen nutzen zur Kommunikation zwischen PTD und PoA das mAuth OBEX Protokoll. Sie tauschen ihre Daten mittels der PUT und GET Befehle aus. Die Daten-Objekte werden dabei mit Body-Headern übertragen. In jedem Paket soll der Crypt-Header zur Kommunikationsverschlüsselung benutzt werden. Dieser Header soll spätestens vor dem Body-Header enthalten sein. Die Auswahl und Kennzeichnung der unterschiedlichen Datenobjekte erfolgt mittels der Type und Name Header. Weiterhin kann die Verwendung von Count, Description und Length Header sinnvoll sein. Es ist den Entwicklern der Anwendungen überlassen, ob und wie sie diese einsetzen. 3 4 Cascading Style Sheets Extensible Style Language Teil II Praktischer Teil 115 117 Kapitel 3 Grundlagen des Demonstrationssytems 3.1 Die praktische Umsetzung des Konzepts Neben der theoretischen Ausarbeitung eines Konzepts war es eine weitere wichtige Aufgabe dieser Diplomarbeit, dieses Konzept in Form eines Demonstrationsystems zu realisieren. Das Demonstrationssystem sollte die praktische Einsatzfähigkeit der theoretischen Spezifikationen zeigen, jedoch nicht zwangsläufig das Konzept in vollem Umfang implementieren. Meine Umsetzung des Konzepts beschränkt sich daher auf ein einfaches Applikationsmodell vom Typ Zugang“ und verwendet weder Zertifikate, noch die Autorität eines ” Trustcenters. Die mAuth Systemkomponenten sind dabei auf folgender Hardware umgesetzt worden: mobiles Gerät: Chipkarte: Chipkarten Lesegerät: PoA: lokale Übertragungstechnik Handspring Visor Platinum PDA Giesecke & Devrient Sm@rtcafé Javacard Towitoko Chipdrive micro 100 Linux (Suse 7.1) PC IrDA Als mobiles Gerät wäre die Implementierung auf einem Mobiltelefon besonders interessant und wünschenswert gewesen, da diese Geräte derzeit die größte Verbreitung in der Bevölkerung besitzen. Dazu wäre jedoch die Modifikation seines Betriebssystems unabdingbare Voraussetzung gewesen, da Mobiltelefone heute noch nicht wie z.B. PDAs die Möglichkeit bieten, Programme außer der eigenen Firmware auszuführen. Alle Mobiltelefon-Hersteller, mit denen wir in Kontakt getreten sind, hatten jedoch 118 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Sicherheitsbedenken, die Sourcen und die Entwicklungsumgebung für ihre Telefone herauszugeben. Als beste Alternative bot sich ein PDA zur Verwendung als Systemkomponente mobiles Gerät“ an. ” Das Chipkarten-Lesegerät ist anders als in der theoretischen Spezifikation hier als eigene Komponente aufgeführt. Da keiner der zum Zeitpunkt der Erstellung dieser Arbeit am Markt erhältlichen PDAs bereits einen integrierten Chipkarten-Reader besaß, war es notwendig, ein externes Gerät zu verwenden. Die lokale Übertragungstechnik“ ist streng genommen gemäß dem Konzept auch keine ” eigenständige Systemkomponente, sondern Bestandteil des mobilen Geräts und des PoA-Servers. Das ist auch in der praktischen Umsetzung so; sie wurde nur zum Zwecke der besseren Übersicht einzeln aufgeführt. Die Auswahl der verwendeten Komponenten erfolgte aufgrund folgender Argumente: • Handspring Visor Platinum: – Freie Programmierbarkeit – Gute Hardware-Erweiterbarkeit – Für PDAs schneller Prozessor – Unterstützung des weit verbreiteten PalmOS – IrDA-Port • Giesecke und Devrient Sm@rtcafé Javacard: – Relativ neue und innovative Technologie – Möglichkeit, mehrere Applikationen auf einer Karte zu installieren – Gute Sicherheitsmechanismen – Unterstützung mehrerer unterschiedlicher Kryptoalgorithmen – Durch Verwendung der Java-Sprache vertraute“ Programmierumgebung ” • Towitoko Chipdrive 100: – Kompakte Bauweise – Gute Unterstützung von vorhandenen Chipkarten-Libraries – Günstiger Preis – Gute Dokumentation und Bastelanleitungen“ aus dem Internet vorhanden ” • Linux (Suse 7.1) PC: – Freie Programmierbarkeit – Sehr einfach um Infrarot-Hardware zu erweitern 3.2. DIE IRDA-TECHNOLOGIE 119 – IrDA-Protokoll-Unterstützung im Basissystem vorhanden – Login Prozeß leicht zu modifizieren – Verfügbarkeit der Sourcen zu allen Systemkomponenten 3.2 Die IrDA-Technologie Das Demonstrationsystem verwendet als lokale Übertragungstechnik die von der IrDA spezifizierte Technologie. In diesem Abschnitt sollen einige wichtige Aspekte des IrDAProtokolls näher erläutert werden, die über das bereits in Abschnitt 1.3.2.1 Besprochene hinausgehen. IrDA-Verbindungen sind, wie fast alle lokalen Übertragungstechnologien, auf spontane Kommunikation mit - bis dahin unbekannten Partnern - ausgelegt. Daher besitzen sie die Möglichkeit, die zur Kommunikation notwendigen Parameter selbständig auszutauschen, um eine Verbindung aufzubauen. Jede IrDA-Implementierung muß folgende 3 Schichten in ihrem Protokollstack implementieren: • Physical Layer PHY: spezifiziert die physikalischen Charakteristika einer IrDA-Verbindung, wie z.B. Impulsform und -länge, sowie die Bit-Kodierung und Prüfsummenbildung. • Link Access Protocol LAP: erbringt den Dienst der zuverlässigen Datenübertragung durch Mechanismen wie Übertragungswiederholung, Fehlererkennung und Flußkontrolle. Darüberhinaus findet diese Schicht durch einen Discovery” Prozeß“ in Reichweite liegende IrDA-Geräte. • Link Management Protocol LMP: erlaubt das Multiplexing mehrerer Dienste über eine LAP-Verbindung und ermöglicht weitergehende“ Discovery” Mechanismen durch die IAS-Datenbank. Auf diesen Sockel“ setzen alle höheren Protokollschichten, wie z.B. im mAuth System ” TinyTP und mAuth-OBEX, auf. Um eine Verbindung durch diese drei Schichten herzustellen, müssen mindestens die Parameter IrDA-Geräte-Adresse und der LSAP1 Selector des gewünschten Dienstes bekannt sein. Die 32 Bit langen IrDA-Adressen kennzeichnen die Endpunkte einer IrDA-LAPVerbindung. Sie sind nicht wie bei anderen Netzwerktechnologien wie z.B. Ethernet oder Wireless LAN fest an die Hardware eines Gerätes gebunden, sondern werden von den IrDA-Geräten selbstständig dynamisch gewählt und können sich dadurch ändern. 1 Logical Service Access Point 120 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Der LAP-Discovery-Mechanismus spürt nicht nur in Reichweite liegende Kommunikationspartner auf, sondern erträgt auch deren jeweils aktuelle“ Adresse. ” Sollten innerhalb einer kommunizierenden Gruppe zufällig zwei Geräte die selbe Adresse gewählt haben, kann dieser Konflikt mit den Mitteln der LMP-Schicht gelöst werden. Deren erweiterte Discovery-Funktionen können einen Kommunikationspartner veranlassen eine neue IrDA-LAP-Adresse zu generieren, und das Problem damit lösen. LSAP-Selectoren kennzeichnen die Endpunkte kommunizierender Dienste. Sie haben nur eine Länge von 8 Bit. Desweiteren sind bestimmte Wertebereiche davon für besondere Dienste reserviert. Daher können auch diese Dienstbezeichner nicht statisch bestimmten Diensten zugeordnet werden. Verschiedenen Services sind daher, anstatt fester Nummern, eindeutige und veröffentlichte Namen“ zugewiesen. Mittels des ” LMP-IAS können die aktuell einem Namen zugeordneten LSAP-Selektoren erfragt werden. Der IAS kann als eine Art Gelbe Seiten“ eines IrDA fähigen Gerätes betrachtet werden ” und ist Teil der LMP-Schicht des IrDA-Stacks. Er verwaltet in einer Art Datenbank relevante, die IrDA-Funktionalität des jeweiligen Geräts betreffende Informationen. Ein IAS-Server betreibt und aktualisiert die IAS-Datenbank und weiß auf die Anfragen eines IAS-Client zu antworten. Die meisten IrDA-Realisierungen implementieren sowohl Client als auch Server. Die IAS-Datenbank beschreibt jeden angebotenen Service in Form eines Objects. Ein IAS-Object besteht aus einem class name und einem oder mehreren Attributen. Die class names von Diensten sollen fest sein und werden öffentlich bekannt gemacht. Das mAuth System verwendet den class name OBEX:mAuth. Das wichtigste Attribut eines IAS-Objects ist der aktuell zugeordnete LSAP-Selector für diesen Dienst. Ein Kommunikationspartner, der eine Verbindung zu diesem Dienst aufbauen möchte, benötigt diesen Wert. Daher startet der IAS-Client des Partners eine entsprechende den Klassennamen betreffende Anfrage. Der Server liefert den gesuchten LSAP-Selector in Form eines Attributs zurück. Die dazu verwendete IAS-Operation wird als GetValueByClass bezeichnet. Damit spezifiziert der Client den class name und das gesuchte Attribut. IAS-Attribute können je nach gegebenen Anforderungen weit mehr als nur den LSAP Selector eines Services enthalten. Für die Zwecke dieses Projekts ist hier jedoch nur der LSAP Selectors relevant ! 3.3 IrDA-Unterstützung auf Personal Computern Seit geraumer Zeit sind die meisten Mainboards von Personal Computern mit der notwendigen Elektronik zum Betrieb eine IrDA-SIR-Schnittstelle ausgerüstet. Aufgrund der Konzeption der physikalischen Schicht der IrDA-SIR-Schnittstelle [PQT98] 3.3. IRDA-UNTERSTÜTZUNG AUF PERSONAL COMPUTERN 121 kann dazu der für den Betrieb des seriellen RS-232-Ports vorhandene UART Baustein genutzt werden. Die eingesetzten Impulslängen entsprechen Vielfachen der auf der RS-232-Schnittstelle verwendeten Impulse. Es ist somit nur wenig zusätzliche AnsteuerHardware notwendig. Im BIOS des PC kann in der Regel zwischen dem Betrieb eines zweiten COM-Ports oder einer IrDA-Schnittstelle gewählt werden. Da in beiden Fällen der selbe UART Baustein verwendet wird, ist beides gleichzeitig nicht möglich. Abbildung 3.1 zeigt ein Blockschaltbild der Hardware einer IrDA-SIR-Schnittstelle. Abbildung 3.1: IrDA physikalische Schnittstelle Schema (Quelle [PQT98]) Außer Laptops sind derzeit jedoch noch kaum PCs von Werk aus auch mit dem notwendigen Infrarot Transceiver-Modul ausgestattet. Diese werden von diversen Herstellern als Zubehör - zu nicht immer angemessenen Preisen - angeboten. 3.3.1 Bau eines IrDA-Transceivers für den PC Da, wie bereits erwähnt, moderne PC Mainboards bereits alle Komponenten einer IrDA-Schnittstelle bis auf den Transceiverbaustein besitzen, ist ein Selbstbau dieser Komponente einfach und günstig möglich. Der Transceiver entspricht der äußerst rechten Baugruppe im Blockschaltbild 3.1. Der Anschluß an das PC Motherboard erfolgt, je nach Board-Hersteller, meist über einen 4 poligen Pfostenstecker mit den Signalen RX und TX sowie VCC und GND. Ein geeigneter Transceiver Baustein ist z.B. der TFDS 4500 von Vishay Telefunken. Er beinhaltet Infrarot Sende- und Empfangsdiode sowie die notwendige Treiber- und Reglerbeschaltung (siehe Abbildung 3.2). Damit läßt sich mit nur wenigen zusätzlichen Bauteilen ein dem IrDA-1.2-SIR-Standard entsprechendes Tranceivermodul aufbauen. 122 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Abbildung 3.2: Blockschaltbild des TFDS4500(Quelle [Tel99]) Auf der Webseite [Rei01] ist dazu eine sehr umfangreiche Beschreibung und Stoffsammlung vorhanden. Unter anderem finden sich dort Anleitungen zu den Anschlußmöglichkeiten an unterschiedliche Mainboard Typen. Der Schaltplan 3.3, welcher ebenfalls von dieser Webseite stammt, diente mir als Vorlage für den Aufbau des Moduls. Abbildung 3.3: Schaltplan IrDA-Adapter (Quelle [Rei01]) Diese Beschaltung entspricht eigentlich der von Vishay Telefunken im Datenblatt zum TFDS 4550 vorgeschlagenen Referenzbeschaltung. Sie wurde nur um einen PufferKondensator C3 gegen instabile Versorgungsspannung und eine Sendekontroll-LED ergänzt. Die LED blinkt, sobald das Modul etwas aussendet. Die Kombination aus C1, C2 und R2 dient der Glättung der Versorgungsspannung und dem Ausfiltern hochfrequentem Rauschens. Bei einer stabilen Spannungsversorgung, wie sie bei den meisten Mainboards vorhanden ist, könnte eigentlich darauf und auf den Puffer-Elko auch verzichtet werden. Ich entschied mich jedoch, diese Baugruppen zur Sicherheit mit zu integrieren. Zur Kontrolle der Verbindung zum Mainboard habe ich die Beschaltung aus 3.3 noch um eine weitere LED ergänzt. Diese liegt mitsamt passenden Vorwiderstand direkt zwischen VCC und GND und zeigt durch ihr Leuchten die Betriebsbereitschaft an. Die Schaltung wurde auf einem kleinen Stück Lochrasterplatine aufgebaut. Damit das 3.3. IRDA-UNTERSTÜTZUNG AUF PERSONAL COMPUTERN 123 Abbildung 3.4: PC-IrDA-Adapter gesamte Modul in einem Gehäuse eines Parallelport-Steckers Platz fand, und zum sauberen Abschluß der Gehäusevorderseite, montierte ich den TFDS4500 Transceiver auf einem seperaten Platinenstreifen im rechten Winkel zur anderen Platine. Die Gehäuseoberseite wurde mit zwei Bohrungen zur Durchführung der LEDs versehen und die Oberfläche der Platine an der Front des Gehäuses mit schwarzen Klebeband überzogen. Als Anschlußkabel diente ein ausgedientes Datenkabel mit genügend Leitungen und einer Schirmung aus Drahtgeflecht. Die Wahl der Verbindungsleitung zwischen Transceivermodul und Mainboard dürfte jedoch bei einer Länge unter etwa zwei Metern relativ unkritisch sein, so daß die Schirmung nicht unbedingt notwendig gewesen wäre. 3.3.2 Linux-IrDA IrDA-Unterstützung des Betriebsystems Linux ist in Form eines Kernelmoduls und einiger Userspace“-Programme verwirklicht. ” Die Entwicklung am Linux/IrDA-Projekt begann Ende 1997. Seit Kernelversion 2.2.0 ist es fester Teil des Linux-Kernels. Mit Veröffentlichung der Kernelversion 2.2.10 wurde es erstmals unter der Bezeichnung “stabil“ und nicht mehr experimentell“ geführt. ” 124 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Bei einer Neu-Übersetzung des Kernel kann die IrDA-Unterstützung wahlweise fest mit einkompiliert oder als Kernelmodul gebaut werden. Die meisten Distributionen, so auch das von mir eingesetzte Suse 7.1, haben den IrDA-Support als Kernelmodul realisiert. Neben dieser Kernkomponente existiert noch das Paket IrDA-Utils. Darin sind Dienstprogramme enthalten, mittels welcher des Verhalten des IrDA-Subsystems gesteuert und analysiert werden kann. Es besteht im wesentlichen aus den Komponenten: • irattach: verbindet ein IrDA fähiges tty mit dem Kernelmodul und startet somit den eigentlichen IrDA-Service. • irdaping: damit ist es möglich, die Verbindung zu einem anderen IrDA fähiges Gerät - sofern dies IrDA-Test-Frames unterstützt - ähnlich dem von Unix bekannten Tool ping zu Testen. Als Zieladresse muß eine 32 Bit IrDA-LAP-Adresse angegeben werden. • irdadump: zeigt alle ausgesendeten und empfangenen Frames an. Dies ist besonders nützlich, um Fehler im Kommunikationsablauf aufzuspüren und eigene Anwendungen zu testen. Die Anzeige kann mittels tcpdump ähnlichen Filterfunktionen auf die gewünschten Informationen eingeschränkt werden. Darüber hinaus existiert noch das OpenOBEX Projekt. Es war früher Teil des Linux/IrDA-Projekts und wurde dann ausgegliedert. Es verfolgt das Ziel, eine API und einige Dienstprogramme zur Unterstützung des OBEX Protokolls zur Verfügung zu stellen. Im Verlauf meiner Arbeit stellte sich jedoch heraus, daß diese Library nicht wie zuerst angenommen für das mAuth-Demosystem verwendet werden konnte. Die implementierten Funktionen beschränkten sich auf die wichtigsten Standard OBEX Funktionen. Da mAuth-OBEX Erweiterungen enthält, hätte ich Funktionen auf tieferen Level benötigt, wie z.B. allgemeine Kommando- bzw Headerparser. Die Einarbeitung in den Code, um evtl. Teile davon verwenden zu können, hätte einen ungleich größeren Aufwand bedeutet, als die geforderte Funktionalität selbst von Grund auf zu programmieren. Die Dokumentation von Linux/IrDA beschränkt sich hauptsächlich auf die Installation und Inbetriebnahme sowie der Gebrauchsanleitung der enthaltenen Dienstprogramme. Brauchbare Informationen zur eigenen Programmentwicklung waren eigentlich nur der entsprechenden Header Datei irda.h und den Sourcen einiger Beispielprogramme zu entnehmen. IrDA ist im Linux-Kernel als Netzwerktreiber implementiert. Die Programmierung erfolgt wie auch bei TCP/IP Verbindungen mittels dem Berkeley Socket Mechanismus. Im Anfangsstadium meiner Arbeit installierte ich auf einem Rechner des LDV Labor Suse Linux 7.1. Nach der Konfiguration der darin enthaltenen Linux-IrDAUnterstützung und mit Hilfe des selbstgebauten Infrarot-Transceiver Moduls entstanden einige einfache Programme zur Einarbeitung in diese Technologie. Damit war es 3.3. IRDA-UNTERSTÜTZUNG AUF PERSONAL COMPUTERN 125 u.A. möglich, eine Verbindung zu einem OBEX fähigen Mobiltelefon herzustellen. #include #include #include #include #include #include #include #include <stdlib.h> <fcntl.h> <sys/stat.h> <string.h> <unistd.h> <netinet/in.h> "linux/irda.h" <sys/socket.h> #define AF_IRDA 23 void main() { struct struct int int sockaddr_irda ladr = {AF_IRDA, LSAP_ANY,0,"OBEX"}; sockaddr_irda padr; padrlen=sizeof(struct sockaddr_irda); socket1, s2; while(1) { socket1 = socket(AF_IRDA, SOCK_STREAM, 0); if (socket1 < 0) { close(socket1); exit(-1); } else {printf ("socket created ! \n");} if (bind(socket1, (struct sockaddr *)&ladr,sizeof(struct sockaddr_irda))<0) { close(socket1); exit(-1); } if(listen(socket1,1)<0) { close(socket1); exit(-1); } s2=accept(socket1, (struct sockaddr *)&padr,&padrlen); printf ("connected !! \n"); } } Dieser einfache Programmcode meldet connected !!“, sobald ein OBEX konformes ” Gerät versucht, etwas zu übertragen. Dies entspricht noch keinem OBEX Connect, sondern nur einem gelungenen Verbindungsaufbau bis zur TinyTP Schicht. Ein korrekt implementiertes OBEX Gerät wird somit hier auch einen fehlgeschlagenen Verbindungsaufbau melden. Bei weiteren Versuchen habe ich dabei jedoch herausgefunden, daß einige Geräte die OBEX Response-Codes nicht immer korrekt auswerten. Das Siemens S25 Mobiltelefon 126 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS führt z.B. eine Übertragung einer vCard vollkommen unabhängig von den empfangenen Response-Codes durch. Solange es überhaupt irgendeine Response empfängt, fährt es mit der Übertragung fort. 3.4 3.4.1 Die Pluggable Authentification Modules - PAM Allgemeines Die zunehmende Vernetzung unterschiedlicher Computersystemen zu großen, offenen und heterogenen Netzen macht immer anspruchsvollere Authentifizierungsmechanismen notwendig. Die Einführung einer neuen Authentifizierungstechnologie, wie z.B. Einmal-Paßwörter oder Chipkarten, bedingt jedoch jedesmal die Anpassung und NeuÜbersetzung aller Programme, welche eine Nutzerauthentifikation fordern. Weiterhin ist es oft gewollt, daß verschiedene Dienste unterschiedliche Authentifikationsmechanismen nutzen, z.B. könnte es sinnvoll sein, daß das login Programm Nutzer nach der lokalen /etc/passwd Datei, dagegen das ftpd Programm die Nutzer über eine SQL Datenbank authentifizieren soll. Um diesen unterschiedlichen Anforderungen flexibel gerecht zu werden, und dennoch eine einfache und überschaubare Konfiguration des Gesamtsystems zu ermöglichen, begann SUN Microsystems im Jahre 1995 ein Authentifizierungsystem zu entwickeln, das den Authentifikationsprozeß von den ihn fordernden Anwendungen abtrennt. Aus dieser Anstrengung heraus entstand das Pluggable Authentification Modules“ System ” oder kurz PAM. PAM lagert die Authentifizierung in Bibliotheken aus, das aufrufende Programm erfährt davon lediglich, ob der Zugang gewährt oder abgelehnt wurde. Die Art und Weise, wie die Authentifizierung geschieht, ist der PAM Bibliothek und ihren Modulen überlassen. Ein PAM-System besteht aus den Komponenten: • PAM Library: Dies ist die zentrale Bibliothek. Ihre Funktionen werden von den PAM Anwendungen aufgerufen. Sie liest das Konfigurationsfile und leitet den eigentlichen Authentifikationsprozeß, gemäß den dort festgelegten Regeln, an das entsprechende Modul weiter. Gegen diese Library müssen alle Anwendungen, welche PAM nutzen wollen, gelinkt werden. • PAM Module: Sie implementieren die unterschiedlichen Authentifikationsmethoden. • PAM Konfiguration: Hierin ist festgelegt, welche PAM Module für eine bestimmte Anwendung in welcher Reihenfolge durchlaufen werden müssen. • PAM konforme Anwendungen: Dies sind alle Anwendungen, deren Nutzung einer Authentifizierung bedarf. Sie führen jedoch den Authentifikationsprozeß 3.4. DIE PLUGGABLE AUTHENTIFICATION MODULES - PAM 127 Anwendung Anwendung login login xdm xdm su su ftpd ftpd PAMPAMBibliothek Bibliothek Konfigurationsdatei Konfigurationsdatei /etc/pam.d/login: /etc/pam.d/login: auth auth requisite requisite auth auth required required ...... pam_unix.so pam_unix.so pam_env.so pam_env.so /etc/pam.d/xdm /etc/pam.d/xdm /etc/pam.d/su /etc/pam.d/su /etc/pam.d/ftpd /etc/pam.d/ftpd ...... PAM-Module PAM-Module Konfigurationsdateien Konfigurationsdateiender derModule Module pam_unix.do pam_unix.do pam_env.so pam_env.so /etc/securetty /etc/securetty /etc/security/pam_env.conf /etc/security/pam_env.conf ...... ...... Abbildung 3.5: Bestandteile eines PAM Systems (Quelle [odi00]) nicht mehr selbst aus, sondern enthalten entsprechende Aufrufe an die PAM Library, und gegen welche sie gelinkt sind. Das Authentifikationsverhalten jedes Programms, das derartig konzipiert wurde, kann zentral über die PAM Konfiguration verwaltet werden. Soll mit diesem System eine neue Form der Authentifikation realisiert werden, z.B. eine biometrische Methode wie die Fingerabruckerkennung, muß nur ein entsprechendes PAM Modul entwickelt werden, das diesen Vorgang durchführen kann. Alle auf PAM vorbereiteten Programme können dann sofort, ohne Änderung der Anwendungen selbst, diese Methode nutzen. Der Zeit existieren PAM Implementierungen für folgende Systeme: • SUN Solaris ab Version 2.6 • HPUX ab Version 11 • Annähernd alle aktuellen Linux-Distributionen • Free BSD ab Version 3.1 Darüber hinaus existieren Bemühungen PAM auch auf weitere Systeme zu portieren. 3.4.2 PAM Konfiguration Zur Konfiguration der PAM Bibliothek existieren zwei verschiedene Ansätze. Je nach PAM Implementierung kann die Konfiguration über eine Datei, welche meist unter 128 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS /etc/pam.conf abgelegt ist, oder über einen Satz von Dateien in einem meist als /etc/pam.d/ bezeichneten Verzeichnis erfolgen. Die erste Variante wird hauptsächlich von der SUN PAM Implementierung genutzt. Hier sind die Parameter für jede PAM Anwendung enthalten. Daher beginnt jede Zeile dieser Datei mit dem Namen der Anwendung, auf die sie sich die jeweilige Anweisung bezieht. Die zweite Variante verwendet für jede PAM Anwendung eine eigene Datei, die den Namen der jeweiligen Anwendung trägt. Die meisten Linux-Distributionen verwenden diese Methode. Der Aufbau der Konfigurationsdateien ist, bis auf das Fehlen der ersten Spalte mit dem Namen des betreffenden Dienstes, welche hier überflüssig ist, mit dem Aufbau der /etc/pam.conf Datei identisch. Diese Datei(en) sind gemäß folgendem Format aufgebaut: #(service-name) # # z.B. modul-type control-flag module-path arguments login login login auth auth account requisite required required pam_unix.so nullok pam_securetty.so pam_unix.so login login password session required required pam_unix.so pam_limits.so nullok Zu einem Dienst sind meist mehrere PAM Modul-Einträge vorhanden. Diese werden der Reihe nach abgearbeitet. So kann z.B. ein Modul eine Username/Paßwort-Überprüfung durchführen, das nächste lokale Sicherheitsoptionen überprüfen, und ein anderes benutzerspezifische Einstellungen vornehmen. • service-name: Dieser Eintrag ist nur bei Verwendung einer zentralen Konfigurationsdatei vorhanden. Er spezifiziert, auf welchen Dienst sich der folgende Eintrag bezieht. Der service-name“ ist fest im Programmcode der betreffenden ” Anwendung einkodiert und stimmt meist, jedoch nicht zwangsläufig, mit deren Namen überein. • modul-type: PAM kennt derzeit 4 verschiedene Modul-Typen. Dieser Eintrag bestimmt, in welcher Phase des Authentifikationsprozeß das betreffende Modul zum Einsatz kommt. Es wird zwischen folgenden Phasen und somit Modul-Typen unterschieden: – auth: Ein Authentifizierungsmodul überprüft die Identität eines Benutzers. Die klassische Methode ist die Abfrage eines Benutzernamens und Passworts. – account: Accounting-Module beschränken den Zugang ohne einen Authentifikationsvorgang, z.B. anhand bestimmter Tageszeiten oder auf spezielle 3.4. DIE PLUGGABLE AUTHENTIFICATION MODULES - PAM 129 Terminals. – session: Module dieses Typs erledigen Logging-Aufgaben und können benutzerspezifische Aktionen vor und nach dem Einloggen ausführen, wie z.B. das mounten“ von Verzeichnissen o.Ä. ” – password: Um das jeweilige Authentifizierungs-Token wie z.B. ein Passwort zu ändern, werden Module diese Typs aufgerufen. Ein PAM Modul kann dabei mehrere dieser Funktionstypen beinhalten. • control-flag: Wie bereits erwähnt werden alle PAM Modul-Einträge in einer Konfigurationsdatei zu einem Service der Reihe nach abgearbeitet. Die controll-flags legen fest, was passiert. wenn eines der Module keinen Erfolg zurück liefert. – required: Ein Modul, welches mit diesem flag“ gekennzeichnet ist, muß ” erfolgreich durchlaufen werden. Bei einem Fehlschlag werden jedoch noch weitere evtl. vorhandene Module abgearbeitet, bevor die aufrufende Applikation über die mißglückte Authentifizierung unterrichtet wird. – requisite: Ist die Ausführung eines derartigen Moduls nicht erfolgreich, wird sofort eine mißglückte Authentifizierung gemeldet und die Abarbeitung weiterer Module abgebrochen! – sufficient: Falls zuvor kein als required markiertes Modul fehlgeschlagen ist, führt die erfolgreiche Ausführung eines Moduls mit dem control-flag sufficient sofort zu einer positiven Authentifikation und Rückkehr zur aufrufenden Anwendung. Falls ein solches Modul fehlschlägt, hat das keine weiteren Auswirkungen, und die Liste der Module wird weiter abgearbeitet. – optional: Wie der Name bereits andeutet, wird ein solches Modul zwar ausgeführt, sein Ausgang spielt jedoch keine Rolle für den an die Anwendung zurückgelieferten Status. • module-path: Hiermit wird der genaue Ort des betreffenden Moduls im Filesystem spezifiziert. Falls das Modul im Standard Verzeichnis /lib/security/ liegt, reicht die Angabe des Modul-Namens, ansonsten muß hier der komplette Pfad stehen. • arguments: Die Liste der hier angegebenen Argumente werden an das entsprechende Modul übergeben. Die Argumente sind damit modulspezifisch und können auch komplett fehlen. Tiefergehende Informationen sind [Mor99] zu entnehmen. 130 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS 3.4.3 Anforderungen an ein PAM Modul Aufgrund der Verbreitung in aktuellen Linux-Distributionen und der großen Flexibilität des PAM-Systems entschied ich mich, die PoA-Server-Funktionalität vom Typ Rechnerzugang“ des mAuth Demosystems in Form eins PAM-Moduls zu verwirkli” chen. Ein PAM Modul ist eine ausführbare binäre Datei, die von der PAM Bibliothek geladen werden kann. Sie ist in der Regel als dynamisch ladbare Objektdatei ausgeführt, kann unter besonderen Umständen aber auch statisch zur PAM Bibliothek gelinkt sein. Die PAM Bibliothek erwartet von einem Modul die Implementierung 6 verschiedener Funktionen. Diese Funktionen können in 4 Gruppen eingeteilt werden, welche die Funktionalität der 4 verschiedenen Modultypen widerspiegeln. Ein korrekt implementiertes PAM-Modul sollte mindestens alle Funktionen einer Gruppe enthalten. • auth PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh, int flags, \ int argc, const char **argv ) Diese Funktion führt den Authentifikationsprozeß durch. Jeder andere Rückgabewert außer PAM SUCCESS bedeutet einen Fehlschlag der Authentifikation. PAM_EXTERN int pam_sm_setcred( pam_handle_t *pamh, int flags, \ int argc, const char **argv ) Verfügt das Authentifikationsmodul über weitere Informationen über den User als nur das Authentifikations-Token selbst, so kann es diese Informationen mit dieser Funktion der aufrufenden Anwendung verfügbar machen. • account PAM_EXTERN int pam_sm_acct_mgmt( pam_handle_t *pamh, int flags, \ int argc, const char **argv ) Diese Funktion wird gewöhnlich nach erfolgreicher Ausführung der Authentifikation aufgerufen, und prüft weitere Zugangskriterien wie z.B. der Uhrzeit oder abgelaufenen Passwörtern. • session Diese beiden Funktionen können dazu genutzt werden, Logfile-Einträge über die Systembenuzung zu schreiben oder benutzerspezifische Aktionen auszuführen. PAM_EXTERN int pam_sm_open_session( pam_handle_t *pamh, int flags, \ int argc, const char **argv ) Wird zu Beginn einer Sitzung aufgerufen. 3.5. GIESECKE UND DEVRIENT SM@RTCAFÉ JAVACARD 131 PAM_EXTERN int pam_sm_close_session( pam_handle_t *pamh, int flags, \ int argc, const char **argv ) Wird bei Beendigung einer Sitzung aufgerufen. • passwd PAM_EXTERN int pam_sm_chauthtok( pam_handle_t *pamh, int flags, \ int argc, const char **argv ) Aufgabe dieser Funktion ist es, ein Authentifizierungs-Token wie z.B. ein Passwort zu ändern. Dabei ist zu beachten, daß die Funktionen der einzelnen Gruppen voneinander unabhängig sein sollen. Ein Modul kann über verschiedene Funktionsaufrufe mit der PAM Bibliothek kommunizieren. Die einzige in meinem Demonstrationssystem zu diesem Zweck genutzte Funktion ist extern int pam_set_item(pam_handle_t *pamh, int item_type, const void *item) Mit PAM USER als item type wirde damit der Benutzername, welcher hier nicht vom Anwender eingegeben werden soll, sondern aus der Zugangsdatenbank ausgelesen wird, der PAM Bibliothek und damit wiederum der Anwendung mitgeteilt. Es besteht darüberhinaus auch ein Kommunikationsmechanismus direkt zur aufrufenden Anwendung. Dessen Benutzung sollte aber soweit als möglich vermieden, und wenn überhaupt, dann nur mit äußerster Umsicht eingesetzt werden. Eine detailierte Beschreibung und Einführung in die PAM Module Programmierung ist in [Mor01] zu finden. 3.5 3.5.1 Giesecke und Devrient Sm@rtcafé Javacard Allgemeines Die Sm@rtcafé Chipkarte des Herstellers Giesecke und Devrient ist eine zum Javacard 2.1 Standard [jc-99c] und [jc-99b] der Firma SUN konforme Realisierung einer in Java programmierbaren Chipkarte. Ein großer Vorteil von Javacards ist die (theoretische) Verwendbarkeit des Anwendungscodes auf alle diesem Standard entsprechenden Smartcards, auch wenn diese von verschiedenen Herstellern stammen. Bisher gebräuchliche Chipkarten besaßen alle eigene proprietäre Programmierinterfaces. Während bei anderen Chipkarten die Anwendung in der Regel bereits in der Produktions- bzw. Ausstellungsphase auf die Karte aufgebracht wird, und die Karte damit abgeschlossen ist“, erlauben Javacards die Installation weiterer Applikationen ” auch zu einem Zeitpunkt, in welchem sich die Karte bereits in Benutzung befindet. 132 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Die Daten der einzelnen Applikationen sind durch ein striktes Firewallkonzept voneinander getrennt. Somit ist bei umsichtiger Programmierung die Sicherheit und Integrität der Anwendungsdaten gewährleistet. Keine Applikation kann auf die Daten der Anderen zugreifen, es sei denn, diese erlaubt dies explizit. 3.5.2 Javacard Applikationen Die Javacard Applikationen können in jeder gewohnten Java Entwicklungsumgebung entwickelt werden. Die Javacard API [jc-99b] besteht aus den Klassen der Packages: • java.lang: Dies ist eine Untergruppe der normalen“ Java-Sprache und enthält ” alle grundlegenden Funktionen der Javacard Technologie. • javacard.framework: Hierin sind die Kernfunktionen zur Programmierung eines Javacard Applets zusammengefaßt. • javacard.security: Dies ist das Package aller sicherheitsrelevanter Operationen. Darin sind Verschlüsselungs- und Signieralgorithmen ebenso wie Funktionen zur Schlüsselverwaltung und zur Erzeugung von Zufallszahlen enthalten. • javacard.crypto: Ist ein abstraktes Interface zur Implementierung von kryptographischen Algorithmen. Diese Klassen müssen im Klassenpfad des Java Compilers, welcher zum Übersetzten der Chipkarten Anwendung verwendet wird, liegen, oder explizit mit dem -classpath Argument angegeben werden. Die Kryptofunktionen und einige spezielle auf diesen Kartentyp bezogene Funktionen sind bei der Sm@rtcafé Karte, abweichend vom Javacard 2.1 Standard, in den Packages • com.gieseckedevrient.javacard.framework • com.gieseckedevrient.javacardx.crypto • com.gieseckedevrient.javacardx.cryptox definiert. Zum Übersetzen von Sm@tcafé Applets sollte ein Java SDK mit Version 1.1.7 oder neuer eingesetzt werden. Wie auch Abbildung 3.6 zu entnehmen ist, müssen die vom Compiler erzeugten .classDateien erst noch in das .cap-Format umgewandelt werden, bevor sie auf der Karte installiert werden können. Dies, sowie auch die Installation auf der Karte, geschieht mit der Sm@rtcafé Entwicklungsumgebung Sm@rtcafé Professional (vergleiche Abschnitt 3.5.4). Die Abkürzung CAP steht für converted Applet. Jede Javacard-Anwendung wird als Applet bezeichnet. Sie kann aus einer oder mehreren Klassen bestehen. Eine CAP Datei enthält alle Klassen eines packages, jedoch maximal eine applet class. Der CAP 3.5. GIESECKE UND DEVRIENT SM@RTCAFÉ JAVACARD 133 Abbildung 3.6: Schritte der Javacard Anwendungs-Erstellung (Quelle [jc-99a]) File-Converter wandelt den Standard Java Bytecode in einen Javacard Bytecode um, überprüft die Einhaltung der Javacard Richtlinien und pre-linkt“ alle Elemente der ” Eingabedateien eines Packages. Bei der Entwicklung von Javacard Applets sind im Vergleich zum Standard Java einige Einschränkungen der Javacard Virtual Machine zu beachten. Die Wichtigsten davon sind: • Keine Garbage collection ! • Keine komplexen Datentypen wie int, long oder double ! • Keine Threads ! • Nur eindimensionale Arrays ! • 16 Bit System, mit 16 Bit Stack Size • Nur 64 KByte Speicherplatz je Package • Anzahl der Instanzen und Felder einer Klasse beschränkt ! • Ein Array kann maximal 32767 Felder besitzen ! • Der Stack kann maximal 127 Feldelemente aufnehmen ! • Eine switch-Anweisung kann maximal 655767 Fälle unterscheiden ! 134 3.5.3 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Leistungsmerkmale der Sm@rtcafé Karte Die Giesecke & Devrient Sm@rtcafé Javacard ist derzeit auf Basis eines EinchipMikrocomputers der Familie Siemens SLE66 mit 1280 Byte RAM, 32 KByte ROM und 8 bis 16 KByte EEPROM mit einer Taktfrequenz von maximal 7,5 MHz realisiert. Folgende kryptographische Funktionen sind darauf implementiert: • DES / 3DES • SHA-1 Hash-Bildung • Session Key Services • RSA 1024 Bit • Signature gemäß ISO/IEC 14888-3 • Zufallszahlengenerator Um den RSA Algorithmus direkt ansprechen zu können, konnte ich jedoch keine geeigneten Methoden in der API finden. Die Dokumentation dazu ist in der derzeitigen Version sehr dürftig und bestimmte Teile sind gänzlich undokumentiert. Offenbar wird der RSA Algorithmus im Moment nur zur digitalen Signatur genutzt, zu welcher gut dokumentierte Methoden existieren. Für mein Demonstrationsystems ist jedoch ein direktes Ansprechen der Ver- und Entschlüsselungsfunktionen notwendig. Deshalb entschied ich mich, den 3DES Algorithmus zu verwenden. Für das Demonstrationsystem sind die mit der Verwendung eines symmetrischen Algorithmus verbundenen Sicherheitsrisiken und Einschränkungen vertretbar. 3.5.4 Die Sm@rtcafé Entwicklungsumgebung Die Funktionalität der Sm@rtcafé Entwicklungsumgebung reicht über das Erzeugen der .cap-Dateien und dem Upload auf die Karte hinaus. Als Eingabe für ein neues Projekt dienen sowohl die .java Quelldateien als auch die zugehörigen bereits übersetzen .class-Dateien. In unterschiedlichen Fenstern kann der Bytecode und der Sourcecode inspiziert werden. Die Entwicklungsumgebung kann eine Sm@rtcafé Karte komplett simulieren, so daß für erste Tests weder ein Kartenterminal noch eine reale Javacard notwendig ist. Zum Debuggen einer Anwendung kann sie im Einzelschrittmodus ausgeführt werden. Weitere Debug-Mechanismen, wie z.B. das Setzen von Breakpoints, sind ebenfalls möglich. In weiteren Fenstern werden Heap- und Stack-Inhalt während der Anwendungsausführung dargestellt. 3.5. GIESECKE UND DEVRIENT SM@RTCAFÉ JAVACARD 135 Abbildung 3.7: Die Sm@artcaf’e Entwicklungsoberfläche Ein sehr nützlicher Mechanismus ist der APDU-Skript-Editor. Damit ist es möglich, eine Reihe von APDUs mit frei definierbaren Parametern und Daten zusammenzustellen, und diese auf Wunsch an die Karte zu senden. Die Antwort der Karte wird in einem eigenen Fenster dargestellt. Diese Funktionalität stellte sich als äußerst hilfreich zum Testen der korrekten Funktion der Chipkarten-Anwendung heraus. Auch die Kommandos zum Installieren und Selektieren eines Applets (vergleiche Abschnitt 3.5.5) werden mit dem Skripteditor ausgelöst. Leider ist diese Entwicklungsumgebung derzeit nur für Windows erhältlich. Fast die gesamte Entwicklung des mAuth Demo-Systems erfolgte unter Linux. Nur zum konvertieren der .class-Dateien in das .cap-Format und zum komfortablen Testen des Javacard Applets war die Windows-Plattform notwendig. Zur Installation der .cap-Files existieren auch Tools unter Unix. 3.5.5 Das Main Loader Konzept Der Main Loader ist die default Applikation, welche nach einem Kartenreset automatisch selektiert, und damit aktiviert wird. Obwohl er sich prinzipiell wie ein normales 136 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Applet verhält, nimmt er eine Sonderstellung ein. Der Main Loader verwaltet und kontrolliert das Laden neuer Applikationen auf die Karte. Die Bedingung für die Ausführung der sicherheitsrelevanten Kommandos läßt sich für jedes Kommando einzeln definieren. Folgende Bedingungen sind möglich: • niemals • immer • nur nach korrekter PIN Eingabe Abbildung 3.8: Eingliederung des Main Loaders in die Javacard Struktur (Quelle [jc-99d]) Die PIN Abfrage ist der einzige Authentifikations-Mechanismus, den der Main Loader dafür unterstützt. Es existiert dazu nur eine PIN. Nach deren korrekter Eingabe dürfen alle Kommandos, die mit der Bedingung nur nach korrekter PIN Eingabe“ ” markiert wurden, ausgeführt werden. Für das Laden neuer Applikation lassen sich zusätzliche Schutzmechanismen aktivieren. Es können 4 verschiedene Sicherheitsstufen definiert werden: • no security check: • signature check: • decrypt method: • signature check + decrypt method: An eine .cap-Datei kann eine Signatur angehängt werden, um Manipulationen zwischen der Fertigstellung der Applikation und Installation auf der Karte zu erkennen. Ist der Main Loader so konfiguriert, daß er den Signature Check fordert, können nur Applikationen mit gültiger Signatur auf die Karte übertragen werden. 3.6. CHIPKARTEN-LESEGERÄT TOWITOKO CHIPDRIVE MICRO 100 137 Eine weitere Erhöhung der Sicherheit bietet das Verschlüsseln der gesamten .cap-Datei. Ist dies vom Main Loader gefordert, können nur verschlüsselte Dateien geladen werden, welche von der Karte dann in ihre ursprüngliche Form dekodiert werden. Diese Option ist auch zusammen mit der Signaturüberprüfung möglich. Die für diese Operationen benötigten Schlüssel werden in der Erstellungsphase des Main Loaders gesetzt. Ein MainLoader wird zwar nicht wie ein normales Applet auf die Karte geladen, denoch besitzt eine fabrikneue Karte noch keinen funktionsfähigen Main Loader. Er muß erst mit dem Kommando CREATE ML erzeugt und konfiguriert werden. In dieser Phase werden die beschriebenen Sicherheitsanforderungen definiert und - falls benötigt - die kryptographischen Schlüssel gesetzt. Ein existierender Main Loader kann auch wieder gelöscht werden. Das ist nur möglich, wenn sich kein anderes Applet mehr im EEPROM befindet, und die notwendige Sicherheitsstufe zur Ausführung des Löschkommandos erfüllt ist. Nur auf diesem Wege ist es möglich, einmal definierte Sicherheitsoptionen zu ändern. Mit den Sicherheitsmechanismen des Sm@rtcafé Main Loaders lassen sich die im Konzept des mAuth-Systems vorgeschlagenen Sicherheitsanforderungen zur Installation anwendungsspezifischer Chipkarten Applikationen neben der mAuth default Anwendung in ausreichendem Maße realisieren. Nach einem erfolgreichen Ladevorgang ist das Applet noch nicht aktiv. Erst durch Aufruf des INSTALL Kommandos wird der Installationsprozeß abgeschlossen, und die Anwendung kann mittels SELECT ausgewählt und benutzt werden. Der Main Loader Befehl INSTALL ruft die install()-Methode des Applets auf. Er erzeugt eine Instanz des Applets, legt die notwendige Objekte an und reserviert benötigten Speicher. Bei Aufruf der install() Methode muß ein korrektes Applet auch die Methode register() aufrufen, welche die Anwendung erst richtig aktiviert und anhand seiner AID selektierbar macht. 3.6 Chipkarten-Lesegerät Towitoko Chipdrive micro 100 Da es zum Entstehungszeitpunkt dieser Arbeit keinen PDA mit integriertem Chipkarten-Lesegerät auf dem Markt gab, war es notwendig, ein externes Gerät zu verwenden. Die wichtigsten Anforderungen an ein geeignetes Lesegerät waren kompakte Abmessungen und eine möglichst große Marktverbreitung, was die Wahrscheinlichkeit der Unterstützung durch eine verfügbare Chipkarten Programmier-Library erhöhte. Beide Bedingungen werden von den Geräten der Firma Towitoko erfüllt. Die Produktreihe Chipdrive micro war aufgrund ihrer kleinen Bauweise die bevorzugte Wahl. 138 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Alle diese Chipkartenterminals sind zum Anschluß an einen Personal Computer mit RS-232-Schnittstelle ausgelegt. Da die RS-232-Schnittstelle jedoch keine explizite Versorgungsspannung zur Verfügung stellt, muß das Terminal und die Karte auf anderen Wegen mit Spannung versorgt werden. Die drei Modelle der Chipdrive micro Familie unterscheiden sich hauptsächlich in der Art und Weise, wie dieses Problem gelöst wurde. Das Chipdrive micro 100 und 110 beziehen ihre Versorgungsspannung über einen separarten Anschluß an den PS/2 Port des PC. Das Modell 110 ermöglicht zudem die gemeinsame Nutzung des RS-232-Ports mit einer seriellen Maus. Das Modell 120 benötigt außer der seriellen Schnittstelle keinen weiteren Anschluß. Hier ist das Problem der Spannungsversorgung mit einem integrierten Akku gelöst, welcher über die Signalleitungen der RS-232-Schnittstelle gespeist wird, und höheren Strombedarf abpuffern“ kann. ” Alle drei Kartenterminal unterstützen die Kommunikationsprotokolle T=0, T=1, 2-Wire, 3-Wire, I2C sowie Protokolle von über 40 verschiedenen Memorycards. Für meine Arbeit verwendete ich das Modell Chipdrive micro 100, welches von einem großen Elektronik Versandhaus sehr günstig unter der Bezeichnung chipdrive micro fun vertrieben wird. Das Problem der Spannungsversorgung mußte an einem PDA ohnehin anderweitig gelöst werden (vergleiche dazu Abschnitt 3.11), und die anderen beiden Modelle hatten für diese Zwecke keine weiteren Vorteile zu bieten. Laut Datenblatt ist das Chipdrive 100 auf eine fixe Datenrate von 13000 Baud beschränkt. In meinen Versuchen arbeitet es jedoch auch mit 9600 Baud problemlos. Daneben stand mir noch ein Chipdrive extern zur Verfügung. Dies ist eine größere und stabilere Bauform der Chipdrive Gerätereihe. Es diente mir hauptsächlich zum Zugriff mit dem PalmOS-Emulator (siehe auch Abschnitt 3.10) auf die Chipkarte. Das Gerät war daher fest an einen Desktop PC angeschlossen. Auch das Installieren und Testen der Chipkartenapplikationen mittels der Sm@rtcafé Professional Entwicklungsumgebung wurde damit durchgeführt. 3.7 3.7.1 PalmOS-PDAs Entwicklungsgeschichte Die Entwicklung des ersten Palm PDAs geht auf Jeff Hawkins zurück. Seine Idee war es, bereits lange vor der Markteinführung des ersten Palm Pilot im April 1996, einen etwa Hemdtaschen großen Computer zu entwickeln. Dieses Gerät sollte als Ergänzung zum heimischen PC auch unterwegs Papier überflüssig machen und die digitalen Daten einfach mit dem Computer zuhause oder im Büro abgleichen können. 3.7. PALMOS-PDAS 139 Abbildung 3.9: Der Handspring Visor Platinum Was die Palm PDAs auch heute noch von Konkurrenzgeräten abhebt ist das Programm Graffiti. Es dient der Erkennung handschriftlicher Eingaben. Sein Ziel war es nicht, möglichst sicher viele verschiedene natürliche“ Handschriften, sondern eine ” leicht erlernbare, der Handschrift nachempfundene, jedoch standardisierte Musterfolge zu erkennen. Dies gründete auf der Erkenntnis der Entwickler: Menschen sind klüger als Maschinen. Sie können lernen. Menschen können ” lernen, mit Werkzeugen umzugehen. Computer sind Werkzeuge.“ Damit ist es möglich, schnell und sicher handschriftliche Eingaben zu erkennen, ohne dabei enorme Anforderungen an die Rechenleistung zu stellen. Der erste Palm Pilot war gerade mal mit 256 KByte Speicher ausgestattet und nutzte als Betriebsystem PalmOS 1.0. Als Display besaß er ein monochromes 160x160 Pixel großes LCD Panel. Palm PDAs besitzen keine Festplatte als Speichermedium, sondern benutzen das im Gerät eingebaute RAM als Massenspeicher“-Medium. ” Mittlerweile sind mehrere neue Generationen der Palm PDAs auf den Markt gekommen. Aktuelle Geräte verfügen über 8 MB Speicher, schnellere Prozessoren, Farbdisplay, IrDA und andere Erweiterungen. Das Betriebsystem PalmOS liegt mittlerweile in der Version 4.0 vor. Obwohl neuere Geräte mit schnelleren Prozessoren ausgestattet wurden, werden bis heute Prozessoren der Motorola 68k Familie eingesetzt. Dies und die Abwärtskompatibilität des Betriebsystems sichert die Weiterverwendbarkeit alter Software. Der Palm Pilot wurde ursprünglich von Jeff Hawkins Firma Palm Computing Inc. entwickelt. Bevor der erste Pilot auf den Markt kam, wurde seine Fima von US Ro- 140 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS botics gekauft. Kurz darauf übernahm 3COM US Robotics. Der Palm wurde daher unter mehreren verschiedenen Firmennamen vertrieben, bevor im Jahr 2000 Palm Inc. als eigene Aktiengesellschaft gegründet wurde. Aus rechtlichen Gründen verwendet die Firma Palm Inc. heute die Bezeichnung Pilot nicht mehr in ihren Produktnamen. Eine ausführliche Darstellung der Entwicklungsgeschichte des Palm Pilots und den daran beteiligten Personen ist in [Dil98] nachzulesen. Auch wenn es mittlerweile viele Konkurrenzprodukte gibt, gilt der Palm Pilot immer noch als Urvater der PDAs, und Palm ist noch immer Marktführer in diesem Segment. Im Jahr 2000 lag der Marktanteil von PalmOS basierenden Geräten am PDA Markt zwischen 80 und 90 %. Dies liegt nicht zuletzt an der großen Menge zum Teil auch frei im Internet verfügbaren Software sowie zahlreichen Hardware-Zubehörteilen für diese Plattform. 3.7.2 Unterschiede zwischen Handspring- und Palm-Modellen Da die Ansichten über den Fortgang der Entwicklung der Palm Plattform zwischen Jeff Hawkins, Donna Dubinski und Ed Colligan, den 3 Personen, die maßgeblich für die Entwicklung und Markteinführung des Ur-Palm Pilots verantwortlich waren, einerseits, und der Geschäftsleitung von Palm Computing Inc., das nunmehr unter der Kontrolle von 3 COM stand, andererseits immer weiter auseinander drifteten, gründeten die Urväter“ des Pilots 1998 mit Handspring Inc. ihre eigene Firma. ” Handspring lizensierte die Verwendung von PalmOS für ihre Produkte. Ziel der Firmengründer war es, mit ihrer eigenen PDA Hardware die Ideen zu verwirklichen, zu denen Ihnen bei Palm nicht die Möglichkeit gegeben wurde. Ihre Geräte sind sowohl von den Abmessungen, den Bedienelementen und dem Display den Modellen der Palm Serie sehr ähnlich. Die Handspring-Produkte unterscheiden sich im wesentlichen durch folgende Punkte von den Palm PDAs: • Erweiterungsslot für Springboardmodule • USB Anschluß: zur Synchronisation mit dem PC • Betriebsystem auf ROM: nicht updatebar ! • Kein vollwertiger RS-232-Port • Schnellere Prozessoren • Eingebautes Mikrofon Die wichtigste Neuerung der Handspring-Modelle ist ihre Ausbaufähigkeit durch sogenannte Springboard Module. Springboard Module sind Hardware-Erweiterungen in Form von kasettenartigen Einschüben mit etwas den Abmessungen 54 x 57 x 9 mm. Das Interface zum Handspring-PDA entspricht von der physikalischen Ausführung einem PCMCIA Anschluß. Es hat jedoch eine dazu völlig unterschiedliche Belegung. 3.7. PALMOS-PDAS 141 Auf dieses Interface werden 24 Adressleitungen und 16 Datenleitungen sowie diverse Status- und Steuersignale geführt. Auch die Versorgungsspannung für das Modul sowie der Anschluß zum eingebauten Mikrofon sind in diesem Port enthalten. Die Speicheradressen der Module werden dabei direkt in den Adreßraum der CPU abgebildet. Mittels der 24 Adressleitungen und zweier Chip-Select Signale können auf einem Modul maximal 32 MB Speicher adressiert werden. Die Module können sowohl eigene Applikationen als auch zusätzliche Hardwarefunktionen enthalten. Das Konzept sieht dabei ein wirkliches Plug and Play vor, d.h. Module können zu jedem beliebigen Zeitpunkt des Betriebs eingesetzt und entfernt werden. Das Betriebssystem erkennt dies und reagiert entsprechend darauf. Über dieses Interface wäre es auch denkbar, einen aufsteckbaren Chipkartenreader zu realisieren. Leider gab es zum Entstehungszeitpunkt noch kein entsprechendes Modul. Da die Eigenentwicklung eines Chipkartenmoduls den Rahmen der Diplomarbeit bei weitem gesprengt hätte, entschloß ich mich zu einer anderen Variante, den PDA um die Fähigkeit Chipkarten zu lesen zu erweitern (vergleiche Abschnitt 3.11). Vor allem um diese Besonderheiten der Handspring-PDAs zu unterstützen, läuft auf diesen Geräten ein angepasstes und etwas erweitertes PalmOS. 3.7.3 Der Handspring Visor Platinum Der Handspring Visor Platinum war zum Zeitpunkt des Beginns dieser Arbeit das leistungsstärkste Modell der Handspring-Produktfamilie. Sein Kernstück ist die Motorola MC68VZ328 Dragonball-VZ CPU, die mit 33 MHz getaktet wird. So gut wie alle Peripherie-Controller, sogar der Controller zur Ansteuerung des LCD Panels, sind in diesen Mikroprozessor integriert. Der Visor Platinum besitzt 8 MB Hauptspeicher, der jedoch über entsprechende Springboard Module bis auf 32 MB erweiterbar ist. Zur Kommunikation mit externen Geräten ist eine IrDA kompatible Schnittstelle an der linken Geräteseite vorhanden. Im Gegensatz zu den neueren Modellen sind im Handspring Platinum weder Akkus integriert, noch ist das Cradle mit einer Ladeelektronik ausgestattet. Als Betriebssystem kommt ein angepaßtes PalmOS 3.5 zum Einsatz. Auf dem Handspring Platinum meldet es sich mit Version 3.5.2. Außer einigen Anpassungen an die Hardware des Handspring sind auch noch einige im Vergleich zum Original PalmOS erweiterte Anwendungsprogramme wie z.B. ein wissenschaftlicher Taschenrechner und ein komfortablerer Kalender enthalten. 142 3.8 3.8.1 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Programmentwicklung unter PalmOS Allgemeines Die Entwicklung von PalmOS-Applikationen erfordert im Vergleich zur Entwicklung von Anwendungen für Desktop Betriebssysteme die Beachtung einiger Besonderheiten. Zum einen sind die Ressourcen an Speicher und Rechenleistung sehr beschränkt. Zum anderen hat ein PDA eine andere Aufgabenstellung als ein Desktop-System, und damit verbunden haben PDA Anwendungen andere Ansprüche der Nutzer zu erfüllen. Es ist vor allem darauf zu achten, daß die Anwendungen schnell starten und auch während des Betriebs keine langen Wartezeiten dem Benutzer abfordern. Die Benutzung eines PDAs erfolgt oft spontan, z.B. um sich Notizen zu machen oder einen Termin nachzusehen. Die Anwendungen sind somit auf häufiges Öffnen und Schließen auszulegen. Dazu kommt daß sie einfach und selbsterklärend zu bedienen sein sollen. Ein PDA soll ein intuitives Werkzeug sein und nicht das Studium langer Anleitungen erfordern. Dies ist besonders beim Entwurf des User Interfaces zu beachten. Insbesondere die Art und der Umfang der darzustellenden Information ist wegen des kleinen Displays genau abzuwägen, um ein Überladen des Userinterface zu vermeiden. Dies kann z.B. durch eine geschickte Aufteilung auf mehrere umschaltbare Darstellungen erfolgen. 3.8.2 Einschränkungen und Besonderheiten PalmOS wurde speziell auf die Anforderungen des PDA Betriebs hin entwickelt und optimiert. Die Entwickler versuchten das Betriebsystem so einfach und leichtgewichtig wie möglich zu halten. Die wichtigsten Eigenschaften des PalmOS sind: • Single Tasking • Single Threaded • Event Driven Als Massenspeichermedium existiert weder eine integrierte Harddisk, noch ist ein externer Anschluß dafür vorgesehen. Palm PDAs verwenden zu diesem Zwecke nur das eingebaute RAM. Es existieren einige PalmOS kompatible Geräte, wie z.B. die HandspringGerätereihe, welche um externe RAM Speichermodule erweitert werden können. Die Programmentwicklung für PalmOS erfolgt in der Regel in der Programmiersprache C, obwohl auch andere Sprachen verfügbar sind (siehe Abschnitt 3.9.1). Zu beachten ist hierbei, daß die ANSI Standard C Library Funktionen nicht verfügbar sind. Einige dieser Funktionen sind zwar im GNU-Palm-Entwicklungspaket in Form 3.8. PROGRAMMENTWICKLUNG UNTER PALMOS 143 einer separaten Library vorhanden, jedoch sollten diese soweit möglich nur zu DebugZwecken eingesetzt werden, da ihre Verwendung den Programmcode vergrößert. Es existiert auch eine GLib Shared Library Version der LibC, jedoch sollten bevorzugt die PalmOS eigenen Systemfunktionen verwendet werden. Für die meisten Zwecke besitzt das PalmOS eigene Funktionen, welche allerdings zur Unterscheidung mit anderen Namen bezeichnet sind. Die Entsprechung der ANSI C String Funktion strtoa ist bei PalmOS der Systemaufruf StrToA. So gibt es für viele String Funktionen entsprechende Palm Betriebsystem Aufrufe. Ihre Verwendung vergrößert den Programmcode nicht, und sie sind sehr effizient auf die Palm Plattform optimiert. Von der vertrauten C Programmierung auf Desktop Plattformen ist hier eine gewisse Umgewöhnung nötig. Während dort z.B. eine einfache Textausgabe mit der Funktion printf("Text"); zu realisieren ist, erfordert dieselbe Ausgabe in einem Textfeld auf dem Palm-Display wesentlich mehr Programmcode: FormPtr FieldPtr Handle CharPtr frm = FrmGetActiveForm(); fldhdl = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm,fPIN)); txhdl = FldGetTextHandle(fldhdl); FldSetTextHandle(fldhdl,NULL); txtptr = MemHandleLock((VoidHand)txhdl); memcpy(txtptr,"Text",4); MemHandleUnlock((VoidHand)txhdl); FldSetTextHandle(fldhdl,txhdl); FldDrawField(fldhdl); Die PalmOS-Funktionen sind in Gruppen gegliedert. Eine Gruppe ist jeweils für einen bestimmten Aufgabenbereich zuständig und wird als Manager bezeichnet. Allen Funktionen eines Managers ist ein Kürzel der Manager-Bezeichnung vorangestellt. So existieren z.B. ein SerialManager und ein MemoryManager. Die Namen der darin enthaltenen Funktionen beginnen jeweils entsprechend mit Ser oder Mem, z.B. SerSend oder MemHandleNew. Um mich in diese und weitere Besonderheiten der Programmentwicklung auf der PalmPlattform einzuarbeiten, entstanden in der Anfangsphase der Diplomarbeit mehrere kleine Programme. Auch die im Vergleich zu Desktop-Systemen geringe Rechenleistung dieser Geräte ist bei der Programmentwicklung zu berücksichtigen. Selbst aktuelle Modelle werden nur mit Taktfrequenzen zwischen 20 und 33 MHz betrieben. Verbunden mit der Tatsache, daß PDA Anwender nicht lange auf Reaktionen ihres Gerätes warten möchten, ist genau zu bedenken wie, Rechenzeit intensive Vorgänge zu realisieren sind. So weit als 144 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS möglich sollen diese auf den Heim PC ausgelagert, und nur die Daten mittels der Palm Hotsync-Funktionalität abgeglichen werden. Die Synchronisation von Anwendungen mit dem Heim PC wird durch sogenannte Conduits realisiert. Für die Aufgabenstellung dieser Arbeit war diese Funktionalität jedoch nicht notwendig. Eine gute Erklärung zur Conduit-Entwicklung sowie zu der PalmProgrammentwicklung insgesamt ist in [pal00], [Pog99] oder [Fos00] zu finden. 3.8.3 Speicherorganisation Der Speicher der Palm Plattform ist auf sogenannten Cards enthalten. Derzeit existiert davon nur eine Card0, in neueren Versionen kann sich dies jedoch ändern. Je nachdem, ob es sich bei betreffenden Speicher um RAM oder ROM handelt, wird zwischen RAM Storage und ROM Storage unterschieden. Der Arbeitsspeicher ist dabei in dynamic RAM und storage RAM unterteilt. Das dynamic RAM entspricht dabei dem Arbeitsspeicher eines Desktop PCs, während das storage RAM als ein Analogon zu einer Festplatte gesehen werden kann. Ältere PalmOS-Versionen unterteilten diese zwei Bereiche weiter in ein, oder mehrere 64 KByte große Speicher Blöcke, sogenannte Heaps auf. Seit der Version 3.0 des Betriebsystems existiert diese 64 KByte Grenze nicht mehr, und das gesamte dynamic RAM auf einer Karte entspricht einem Heap. Das gleiche gilt für das storage RAM, das auch hier pro Card als ein Heap organisiert ist. Die kleinste von einem Benutzer allozierbare Speichereinheit wird als Chunk bezeichnet. Ein Chunk ist ein zusammenhängender Speicherbereich innerhalb eines Heaps. Er kann zwischen 1 und knapp unter 64 KByte groß sein. Es existieren bewegliche und unbewegliche Chunks. Um die wertvolle Ressource Arbeitsspeicher möglichst effizient zu nutzen, kann das PalmOS bewegliche Chunks innerhalb eines Heaps frei verschieben, um eine Fragmentierung des Speichers zu verhindern. Ob ein Chunk beweglich oder unbeweglich ist, bestimmt der Programmierer. Speicherbereiche, welche über einen Pointer adressiert werden sollen, sind unbeweglich. Einen solchen Chunk erzeugt der Systemaufruf MemPtrNew. Die MemoryManager Funktion MemHandleNew alloziert dagegen einen beweglichen Chunk. Als Referenz wird hier kein Pointer, sondern ein Handle zurückgegeben. Ein Handle ist eine Referenz auf einen Pointer. Die physikalische Adresse dieses Chunks kann sich durch die automatische Defragmentierung ständig ändern. Das Handle verweist daher fest auf einen Eintrag in der master pointer table im Header eines Heaps, in der die jeweils gültige reale Speicheradresse des Chunks vermerkt ist. Durch entsprechende MemoryManager Funktionen kann ein Handle gesperrt“, d.h. als nicht ” 3.8. PROGRAMMENTWICKLUNG UNTER PALMOS 145 beweglich markiert werden, und ist für die Dauer der Sperrung über einen Pointer ansprechbar. Soweit als möglich sollten nur Handles verwendet werden, da dies eine effiziente Nutzung des Speichers gewährleistet. Zum Zugriff auf das storage Heap und dynamic Heap existieren jeweils unterschiedlich Betriebsystem-Manager. Dies trägt der unterschiedlichen Aufgabe dieser beiden Bereiche Rechnung. Der dynamic Heap wird über die Funktionen des MemoryManager angesprochen, während der Zugriff auf das storage Heap vom DataManager kontrolliert wird. Der DataManager implementiert daher Funktionen, die eher mit dem Zugriff auf Dateien als mit Speicherzugriffen zu vergleichen sind. Dateien auf einem Desktop System entsprechen hier Databases. Eine Database besteht aus einer Liste von Speicher-Chunks und einem Header. Im Header stehen neben anderen Information auch der Name der Database. Ein Chunk als Bestandteil einer Database wird als Record bezeichnet. Der DataManager bietet mehr Schutzfunktionen gegen unbeabsichtigtes Überschreiben bestimmter Bereiche als der MemoryManager. Wie von regulären Dateien gewohnt, müssen Databases erst geöffnet werden, bevor sie bearbeitet werden können, und nach Gebrauch wieder geschlossen. Dabei sind Zugriffsrechte definierbar. Im storage Heap sind neben Daten auch die Anwendungsprogramme abgelegt. Anders als bei Desktop Systemen werden die Programme jedoch an Ort und Stelle ausgeführt und nicht zuerst in den Arbeitsspeicher kopiert. Es ist sinnvoll und empfehlenswert, genauso auch mit Daten zu verfahren. Da es sich physikalisch auch beim storage Heap um RAM handelt, ist die Erstellung einer Kopie zur Bearbeitung nicht notwendig. Datenbearbeitung direkt an ihrem Speicherort ist allein schon dadurch sinnvoll, da die Größe des dynamic Heap sehr beschränkt ist, und der Programmierer schnell an dessen Grenzen stoßen kann. Das dynamic RAM teilen sich Betriebsystem, Libraries und Anwendungen u.A. für temporäre Dateien, globale Variablen, dynamische Speicher Zuweisungen und dem Anwendungs-Stack. Größe des dynamic heap ist von der Größe des gesamten Arbeitspeichers des Gerätes und der Version des PalmOS abhängig. Eine typische Aufteilung des dynamic Heap eines Palm PDAs mit 4MB RAM, TCP/IP und IrDA Unterstützung unter PalmOS 3.5 ist: gesamter dynamic Heap 256 KByte System Globals TCP/IP übrig für Anwendung bis PalmOS 3.0 40 KByte 32 KByte 184 KByte Anwendungs-Stack statisch 4 KByte Vor allem die geringe Größe des Anwendungs-Stacks kann schnell zum Problem werden. In der Entwicklungsphase meiner Palm Anwendung war der Programmcode nach einer 146 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS eigentlich unwesentlich erscheinenden Änderung nicht mehr auszuführen und führte zu Systemabstürzen. Nach einiger Fehlersuche führte ich das auf das Überlaufen des Stacks zurück. Mein Programm verwendete zu diesem Zeitpunkt viele globale Variablen und große lokale Puffer in Funktionen. Nachdem sowohl die globalen Variablen als auch die Puffern in dynamisch allozierte Strukturen verlagert und die lokalen Variablen auf ein Minimum reduziert waren, trat dieses Problem nicht wieder auf. Die Optimierung des Programmcode sollte daher immer als oberstes Ziel die optimale Nutzung des dynamic Heap haben, dann erst auf die Ausführgeschwindigkeit und zuletzt auf die Größe hin erfolgen. Im Hinblick auf eine sparsame Nutzung des dynamic Heaps sollten bei der Programmentwicklung folgende Punkte beachtet werden: • Soweit als möglich Handels statt Pointer verwenden! • Speicher Chunks allozieren, anstatt globale Variablen zu verwenden! • Keine Dialogboxen stapeln! Besser zwischen verschiedenen Forms umschalten! • Database Records immer an Ort und Stelle bearbeiten. Keine Kopien erstellen! • Beachten, daß jede Library zusätzlich dynamischen Speicher beansprucht! • Keine großen Strukturen (z.B. lokale Variablen) auf dem Stack ablegen! • Rekursiven Funktionen mit Bedacht verwenden! • Allgemein umsichtig mit dem dynamic Heap umgehen! 3.8.4 Ereignis gesteuerte Programmausführung Das PalmOS ist ein ereignisgesteuertes, single tasking Betriebsystem. Sobald eine neue Anwendung gestartet wird, wird die zuvor laufende beendet. Der Rumpf einer typischen PalmOS-Anwendung besteht aus folgenden Funktionen: • PilotMain • StartApplication • EventLoop • StopApplication Beim Start einer Anwendung wird dieser ein Launch Code mit übergeben. Dieser Code gibt die Art und den Grund des Starts an. Eine Anwendung kann regulär durch Eingabe des Benutzers gestartet werden, oder aber durch das Betriebsystem als Reaktion auf ein Ereignis wie z.B einem Alarm oder einem Hotsync-Vorgang. 3.8. PROGRAMMENTWICKLUNG UNTER PALMOS 147 Dieser LaunchCode wird der Funktion PilotMain als Argument übergeben. PilotMain entspricht der main-Funktion eines ANSI C Programms und muß in jeder ausführbaren Anwendung vorhanden sein. Ihre Hauptaufgabe ist es, den Launch Code zu überprüfen und passend darauf zu reagieren. Handelt es sich um einen regulären Programmstart, werden von ihr die übrigen Grundfunktionen aufgerufen. AppLaunch LaunchCode PilotMain() StartApplication() SysHandleEvent() Event MenuHandleEvent() EventLoop ApplicationHandleEvent() StopApplication() Abbildung 3.10: Ablauf einer typischen PalmOS-Anwendung StartApplication initialisiert die Anwendung. Hier können die benötigten Datenbanken und Libraries geöffnet oder Grundeinstellungen eingelesen werden. Zuletzt lädt diese Funktion die erste FORM des User Interfaces. EventLoop ist die Funktion, die während der gesamten Programmausführung wiederholt abgearbeitet wird. Tritt ein Ereignis, ein stellt das Betriebsystem dieses Event in eine Warteschlange. Aufgabe der EventLoop ist es, der Reihe nach die Events aus dieser Schlange zu entnehmen und zu verarbeiten. Die Funktion ApplicationHandleEvent filtert dabei die für die Anwendung interessanten Ereignisse heraus, und führt entsprechende Aktionen aus. Die übrigen Events werden dem Betriebssystem zur Verarbeitung weitergereicht. Bevor eine Anwendung beendet wird, werden die Anweisungen in StopApplication abgearbeitet. Ihre wichtigste Aufgabe ist es, geöffnete Dateien und Libraries wieder zu schließen, sowie allozierten Speicher und genutzte Hardware freizugeben. Folgender Programmcode zeigt die Realisierung dieses Grundgerüstes in der Programmiersprache C: static Err StartApplication( void ) { FrmGotoForm(MainForm); 148 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS } static void StopApplication( void ) { ... } static Boolean MainFormHandleEvent(EventPtr event) { ... } static Boolean ApplicationHandleEvent(EventPtr event) { FormPtr form; if (event->eType == frmLoadEvent) { form = FrmInitForm(event->data.frmLoad.formID); FrmSetActiveForm(form); switch (event->data.frmLoad.formID) { case MainForm: FrmSetEventHandler(form, MainFormHandleEvent); break; default: break; } } } static void EventLoop(void) { EventType event; Word error; do { EvtGetEvent(&event, evtWaitForever); if (SysHandleEvent(&event)) continue; if (MenuHandleEvent(CurrentMenu, &event, &error)) continue; if (ApplicationHandleEvent(&event)) continue; FrmDispatchEvent(&event); } while (event.eType != appStopEvent); } DWord PilotMain(Word launchCode, Ptr cmdBPB, Word launchFlags) { StartApplication(); EventLoop(); StopApplication(); } 3.8. PROGRAMMENTWICKLUNG UNTER PALMOS 3.8.5 149 Das User Interface Das User Interface einer Palm Anwendung besteht aus einer oder mehrerer FORMS. Eine FORM ist eine Gruppierung von UI2 Elementen, die einem gemeinsamen Zweck dienen. Sie ist vergleichbar mit einem Fenster eines Desktop Betriebsystems. Die meisten Elemente einer FORM sind statisch vordefiniert. Bei Bedarf können jedoch auch Veränderungen zur Laufzeit vorgenommen werden. Gebräuchliche UI Objekte sind: • Title • Fields • Buttons • Menu • Checkbox • List Zur Definition des User Interfaces existieren graphische und textbasierende Werkzeuge. Die UI Elemente stellen in einer Palm Resource Database eine eigene RessourcenGruppe dar und werden in einem post-linking Prozeß“ zum Programmcode dazuge” bunden. 3.8.6 Das PRC-Format Palm Databases sind eindeutig durch die beiden 32 Bit Felder Type und CreatorID in ihrem Header gekennzeichnet. Der Type appl“ bezeichnet dabei ein ausführbares ” Programm. Derartige Databases werden im Gegensatz zu den Data Databases, welche in der Regel Daten von Anwendungsprogrammen beherbergen, wie z.B. Adressen oder Notizen, auch Resource Databases genannt. Nur Resource Databases vom Typ appl werden im FileManger“ des Palm dargestellt, ” und können ausgeführt werden. Daher ist ihr einziges Unterscheidungsmerkmal die CreatorID, welche somit eindeutig sein muß. Um diese Eindeutigkeit zu gewährleisten, bietet Palm Inc. den Entwicklern auf ihrer Webpage die Möglichkeit, für ihre Anwendung eine ID zu registrieren. CreatorIDs mit ausschließlich Kleinbuchstaben sind für die Verwendung von Palm Inc. vorbehalten. Resource Databases enthalten Bitmaps, Programmcode, UI Objekte, usw.. Eine .prc-Datei ist die Abbildung dieser Struktur auf eine Datei eines Desktop Computersystems. Dieses Format wird bei der Erstellung eines Programms erzeugt und kann 2 User Interface 150 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS dann z.B. mittels eines Hotsync Vorgangs vom Entwicklungs-PC auf den Palm übertragen werden. Der vom gcc Compiler erzeugte Programmcode ist noch nicht in diesem Format und könnte nicht direkt auf dem PDA ausgeführt werden. Mittels eines im Entwicklungssystem enthaltenen Utility obj-res wird er zunächst in die 5 Ressourcen einer Palm Anwendung aufgebrochen: • code0 • code1 • data0 • rloc0 • pref0 Die code1 Resource enthält dabei den eigentlichen Programmcode. Inhalt und Aufgabe der restlichen Ressourcen ist offiziell nicht dokumentiert. Im Anhang von [How97] ist jedoch eine gute Zusammenstellung von Informationen zu diesem Thema zu finden. Zusammen mit den UI Ressourcen wird daraus mittels des build-prc Utilities in einem post-linking Prozeß schließlich das fertige .prc-File erzeugt. Diese Trennung von Programmcode und UI hat den Vorteil, daß z.B. Sprachanpassungen jederzeit ohne Neuübersetzung der Programm-Quelltexte möglich sind. Die hier beschriebenen Schritte und Werkzeuge beziehen sich auf die Verwendung der GNU-PRC-Tools als Entwicklungsumgebung (vergleiche Abschnitt 3.9.3). 3.8.7 Libraries unter PalmOS Die Motorola Dragonball Prozessoren können maximal relative Sprünge über eine Distanz von 32 KByte ausführen. Es existieren zwar einige Möglichkeiten diese Beschränkung zu umgehen, jedoch wird die maximale Größe einer Code Resource immer noch durch das Hotsync Protocol auf maximal 64 KByte beschränkt. Die Auslagerung von Funktionen in shared Libraries ist eine Methode, um diese Begrenzung der maximalen Anwendungsgröße zu umgehen. Zwar existiert in neueren Versionen der PRC-Tools die Möglichkeit, eine Applikation in mehrere einzelne Code Ressourcen aufzuteilen, jedoch sind Libraries in jedem Fall immer dann sinnvoll, wenn mehrere verschiedene Programme auf dieselbe Funktionalität zugreifen wollen. Die Auslagerung dieser Funktionalitäten in eine Library macht den Programmcode der darauf zugreifenden Anwendungen schlanker und hilft damit insgesamt Speicherplatz einzusparen, da nicht immer derselbe Code zu jedem Programm gelinkt werden muß. 3.8. PROGRAMMENTWICKLUNG UNTER PALMOS 3.8.7.1 151 PalmOS-Version 2 shared Libraries - SysLib Dies ist die traditionelle“ Art, shared Libraries auf der Palm Plattform zu realisieren. ” Die System Libraries wie z.B. die serielle Library oder die IrDA-Library sind derartige Bibliotheken. SysLib Libraries sind Resource Databases mit einem Resource Type libr“. Im Ge” gensatz zu den 5 Ressourcen einer Palm Anwendung besitzt eine SysLib nur eine libr Resource, die genau der code1 Resource einer Anwendung entspricht. Eine SysLib kann weder ein data- noch ein bss-Segmemt enthalten. Daher können keine globalen oder statischen Variablen bei der Programierung solcher Bibliotheken verwendet werden. Im Unterschied zu einer Anwendung wird zu einer shared Library die C-Laufzeitbibliothek crt0 nicht hinzugelinkt. Um die Funktionen der Bibliothek aufrufen zu können, exportiert eine PalmOS-SysLib eine Dispatch Table. Dies entspricht einer Liste mit Adressen der einzelnen Funktionen. Ein Nachteil von SysLibs ist, daß diese Dispatch Table am Anfang des Programmcodes mittels einer in Assembler geschriebenen Sprungtabelle vom Programmierer selbst angelegt werden muß. Jede derartige Bibliothek muß zusätzlich folgende 4 Funktionen enthalten. Diese mußten die ersten Einträge in der Dispatch Table darstellen: • open: Initialisiert die Bibliothek • close: Hierin wird allozierter Speicher wieder freigegeben, bevor die Bibliothek geschlossen wird. • sleep: Wenn der PDA ausgeschaltet wird, ruft das System diese Funktion auf. • wake: Diese Funktion wird vom System für jede shared Library aufgerufen, nachdem das Gerät eingeschaltet wurde. Eine fertig erstelle SysLib Bibliothek wird in Form einer .prc-Datei in einem Hotsync Vorgang auf den PDA übertragen. Um eine derartige Bibliothek zu nutzen, muß sie in der loaded Library Table des Systems eingetragen sein. Dies geschieht mit Hilfe des Systemaufrufs SysLibLoad. Um Funktionen einer SysLib aufrufen zu können, ist ihre Referenznummer notwendig. Die Betriebssystem-Funktion SysLibFind findet eine Library in der loaded Library Table und gibt deren Referenz zurück. Diese Referenznummer muß jeder Bibliotheksfunktion als erstes Argument übergeben werden. 152 3.8.7.2 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS GNU GLib Shared Libraries GLibs stellen im Vergleich zu den PalmOS-Version 2 SysLibs eine wesentlich komfortablere Methode shared Libraries zu erstellen und zu verwenden dar. Genau wie SysLibs sind auch GLibs als Palm Resource Database realisiert und werden in Form vom .prc-Dateien auf den PDA übertragen. Sie sind mit dem Resource Type GLib“ gekennzeichnet und enthalten gewöhnlich drei Ressourcen: GLib0, data0 ” und rloc0. Die GLib0 Resource entspricht hier der code1 Resource einer normalen Anwendung. Im Gegensatz zu SysLibs können GLibs statische und globale Daten enthalten. Globale Daten können derzeit jedoch noch nicht an die aufrufende Applikation exportiert werden. Es ist relativ einfach, eine statischen Bibliothek, welche mit dem ar-Tool erzeugt worden ist, in eine GLib shared Library umzuwandeln. Zuerst wir mittels exportlist eine Liste der exportierten Funktionen aus der statischen Library extrahiert. Aus dieser Liste werden mit dem Utility stubgen zwei Stub Files erzeugt. Das eine Stub-File wird zur statischen Bibliothek dazugelinkt. Anschließend werden daraus mit obj-res die drei Ressourcen einer GLib extrahiert und mittels build-prc zu einem installierbaren .prc-File zusammengesetzt. Dies ist die Shared Library, welche auf dem PDA installiert werden kann. Aus dem zweiten Stub-File wird eine Stub Library generiert. Eine solche Datei besitzt die Endung .sa. Im Vergleich zur entsprechenden statischen Library ist diese Stub Library sehr klein. Die Benutzung von GLibs ist sehr einfach. Es ist kein explizites Öffnen oder Schließen der Library notwendig. Anwendungen, die die Bibliothek nutzen wollen, können genauso gelinkt werden, wie sie auch gegen die entsprechende statische Library gelinkt werden würden. Findet der Compiler anstelle des .a-Files auch eine .sa-Datei linkt er automatisch gegen diese Stub-Library. Derartige Anwendungen greifen somit auf die Funktionen der shared Library zu. Voraussetzung dafür ist natürlich, daß die betreffende Bibliothek auf dem PalmOS-Gerät installiert ist, ansonsten tritt ein Laufzeitfehler auf, welcher auf die fehlende Bibliothek hinweist. GLibs sind im allgemeinen der elegantere und einfachere Weg für den Programmierer, shared Libraries auf dem Palm zu verwirklichen. Allerdings unterstützen nicht alle Compiler diese Methode (vergleiche dazu 3.9.3.1). 3.9. GNU-PALMOS-ENTWICKLUNGSWERKZEUGE 3.9 153 GNU-PalmOS-Entwicklungswerkzeuge Obwohl auch Compiler auf der Palm Plattform selbst existieren, findet die Entwicklung einer Palm Anwendung in der Regel auf einem Desktop-System mittels einer CrossDevelopment Umgebung statt. Ich entschied mich zur Verwendung der GNU-PalmOS-Entwicklungswerkzeuge. Wie alle unter der GNU-Lizenz stehenden Programme ist dies eine freie, nichtkommerzielle Entwicklungsumgebung. Sie besteht aus einem gcc Compiler für dem Motorola m68k Prozessor und einigen Palm-spezifischen Zusatzprogrammen. Außer der Nichtkommerzialität war die der Programmentwicklung unter Unix sehr ähnliche Umgebung und überhaupt die Verfügbarkeit für Linux für diese Entscheidung auschlaggebend. 3.9.1 Alternative Entwicklungs-Tools Die bekannteste alternative und gleichzeitig die offiziell von Palm Inc. unterstützte Entwicklungsumgebung ist der CodeWarrier der Firma Metroworks. Diese IDE3 hat ihren Ursprung auf der Macintosh Plattform. Sie ist jedoch mittlerweile auch für Windows erhältlich. Darüberhinaus existieren noch viele andere Tools und Programmiersprachen für PalmOS, darunter auch Basic und Java Compiler sowie mit Pila ein freier Assembler. 3.9.2 Verschiedene Versionen des PalmOS-SDKs Sowohl gcc als auch CodeWarrier verwenden dieselbe API. Zu jeder neuen Version des PalmOS veröffentlicht Palm Inc. das zugehörige SDK. Dieses besteht neben der zugehörigen Dokumentation im wesentlichen aus Header Files zu den Betriebssystem Funktionen. Mittlerweile ist das SDK 4.0 veröffentlicht. Zu Beginn der Arbeit war die Version 3.5 aktuell. Es ist prinzipiell empfehlenswert, zur Entwicklung einer Anwendung das jeweils aktuellste SDK einzusetzen. Von Version 3.0 auf 3.5 hat Palm den Aufbau der Verzeichnisstruktur und teilweise auch die Bezeichnungen von Datentypen und Funktionen teilweise erheblich verändert. Abgesehen von der Tatsache, daß ich in meinem Projekt einige Libraries verwenden wollte, welche noch mit einem älteren SDK entwickelt wurden, und die somit teilweise erheblicher Anpassungen bedurft hätten, muß das SDK auch in die Entwicklungsumgebung integriert werden. 3 Integrated Development Environment 154 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Da ich, aus in Abschnitt 3.9.3.1 beschriebenen Gründen, eine relativ alte Version der PRC-Tools verwenden mußte, das SDK 3.5 aber auf die neuere Version 2.0 der PRCTools ausgelegt war, stellte sich die Integration als äußerst schwierig heraus. Da ich keine der in der Version 3.5 eingeführten Funktionen dringend benötigte, entschied ich mich, unter dem SDK in der Version 3.0 zu entwickeln. 3.9.3 PRC-Tools Die Zusammenstellung der GNU gcc-Entwicklungs-Tools für PalmOS wird auch als PRC-Tools bezeichnet. Sie bestehen im wesentlichen aus: • Modifiziertem m68k gcc Compiler • GDB Debugger • Post-Linker Tools – obj-res: konvertiert ein mit gcc kompiliertes, ausführbares Programm oder eine Objekt Datei in PalmOS kompatible Resource Files – build-prc: Kombiniert die als Eingabe übergebenen Resource Dateien zu einer auf den PDA ladbaren .prc-Datei – stubgen: Erzeugt die für GLibs notwendigen Stub-Files – ar: Erzeugt statische Bibliotheken Die Erzeugung einer Palm Anwendung durchläuft damit folgende Schritte: 1. Übersetzung der Sourcen mit dem m68k gcc Compiler zu Object-Files 2. Linken der Object-Files zu einem GNU BFD-Format 3. Auflösen dieses Formats in PalmOS kompatible Ressourcen mittels obj-res 4. Zusammenfügen der einzelnen Resource-Dateien zu einem .prc-File durch build-prc 3.9.3.1 Verschiedene Versionen Die PRC-Tools von Version 0.1.0 bis 0.5.0 wurden federführend von Jeff Dionne entwickelt. Hauptverantwortlich für die Portierung des gcc Compilers zeichnete sich Kresten Krab Thorup unter Mitwirkung von Jeff Dionne, Ian Goldberg und anderen. Diese stellten jedoch 1997 die Entwicklungsarbeiten an den PRC-Tools ein. Die Weiterführung des Projekts übernahm John Marshall, ein Angestellter von Palm Inc.. Die daraus entstandene neue Generation von PRC-Tools basiert auf einer aktuelleren Version des gcc Compilers und weicht auch von der Handhabung und ihrer gesamten 3.9. GNU-PALMOS-ENTWICKLUNGSWERKZEUGE 155 Konzeption relativ stark von der ursprünglichen Version ab. Um dies zu verdeutlichen, wurde ein Sprung der Versionsnummer von 0.5.0 auf 2.0 für angemessen erachtet. Trotz vieler Vorteile ist in der zu Beginn meiner Arbeit aktuellen Version noch keine Unterstützung für GLib shared Libraries verwirklicht. Dies ist erst für die Veröffentlichung der Version 2.1 angekündigt. Zwei, der für meine Arbeit benötigten, Bibliotheken waren als GLibs ausgelegt. Während es kein allzu großes Problem gewesen wäre, die Chipkarten Library auf den unbedingt notwendigen Funktionsumfang zu reduzieren und dann statisch zu linken, wäre dies mit der DES-Crypto Library aufgrund ihrer Größe nicht möglich gewesen. Abgesehen davon erschien mir eine Realisierung mit Libraries einfach eleganter und sinnvoller, so daß ich auf diese Fähigkeit nicht verzichten wollte. Daher entschied ich mich, zur Entwicklung des mAuth-PTD-Demo-Clients die PRC-Tools in der Version 0.5.0 zu verwenden. 3.9.4 Der Pilot Resource Compiler PilRC Wie bereits erwähnt wird gewöhnlich ein Großteil des User Interfaces bereits bei der Programmentwicklung statisch festgelegt. Diese Daten stellen eine oder mehrere eigenständige PalmOS-UI-Ressourcen dar, welche mittels dem build-prc Werkzeug zu den restlichen Ressourcen der Anwendung dazugebunden werden. Um diese UI Ressourcen zu Erzeugen entwickelte Wes Cherry den PilRC4 . Das User Interface wird hierbei in einer textbasierenden Beschreibungssprache definiert. Zu einer funktionalen Gruppe wie z.B. einer FORM, einer Dialog- oder Alert-Box gehörende UI-Elemente werden von den Schlüsselwörtern BEGIN und END eingeschlossen. Abgesehen von wenigen Ausnahmen bestehen die Einträge für jeweils ein Bedienelement aus dem Bezeichner des Elements, seiner Beschriftung, einer ID, mit welcher das Element im Programmtext referenziert werden kann, und einer Positionsangabe. Darüber hinaus sind je nach UI Objekt-Typ und Einsatzzweck noch weitere optionale Argumente möglich. Beschreibung einer FORM im PilRC-Format: FORM ID MainForm AT ( 0 0 160 160 ) USABLE MENUID mainMenuID BEGIN TITLE "mAuth System PTD-Client" BUTTON "PeerDisc" ID PDButtonID AT (20 90 AUTO AUTO) FRAME BUTTON "Authenticate" ID AuthButtonID AT (PREVRIGHT+10 PREVTOP AUTO AUTO) FRAME END 4 Pilot Resource Compiler 156 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Beschreibung einer ALERT-Box im PilRC-Format: ALERT ID alert1FormID ERROR BEGIN TITLE "READER ERROR" MESSAGE "Error accessing the CardReader !" BUTTONS "OK" END Es existiert auch ein kleines Tool, das ein derartiges Textfile als Eingabe verwendet und eine Vorschau des User Interface auf dem PC Monitor darstellt. Die Datei mit der fertigen Beschreibung des User Interfaces dient PilRC als Eingabe. PilRC erzeugt daraus die passenden UI Ressourcen für das PalmOS. 3.9.5 Handspring-spezifische Erweiterungen des PalmOS Die Firma Handspring hat das PalmOS, welches auf ihren Geräten zum Einsatz kommt, um einige Eigenschaften erweitert und angepaßt. Das betrifft vor allem die Springboard und USB Unterstützung. Um als Programmierer diese neuen Fähigkeiten nutzen zu können, bietet Handspring auf ihrer Webseite die sogenannten Handspring-Extension als Ergänzung des jeweils aktuellen PalmOS-SDKs zum Download an. Diese bestehen aus einigen Header Dateien, welche in den include-Verzeichnisbaum des Palm SDKs eingebunden werden. Das Problem dabei ist, daß Handspring zwar die gcc Entwicklungstools unterstützt, jedoch ausschließlich auf der Windows Plattform. Offensichtlich bestehen aber zwischen der gcc Version unter Unix und der unter Windows doch einige Unterschiede. Bei der Entwicklung meines Prototypen hätte ich gerne einige dieser erweiterten Funktionen genutzt. In der Anfangsphase der Entwicklung verwendete ich das serielle Cradle zur Kommunikation mit dem Chipkarten-Lesegerät. Sobald der Visor in das Cradle eingesetzt wurde, konnte ich jedoch den seriellen Port nicht mehr öffnen, da die Library meldete, die Schnittstelle sei bereits in Verwendung. Das resultiert daraus, daß auf dem Handspring ein sogenannter Keyboard-Daemon mittels eines dafür vorgesehenen PINs am Cradle Connector feststellt, ob ein externes Keyboard an den Visor angeschlossen wurde, und dann die serielle Library nutzt, um mit diesem zu kommunizieren. Jedoch nutzt auch das serielle Cradle diese Funktion, und belegt durch das entsprechende Signal auf diesem PIN sofort die serielle Schnittstelle, womit diese für meine Applikation nicht mehr nutzbar ist. Mit der erweiterten Handspring-API wäre es möglich, dieses Verhalten via Software zu deaktivieren. Jedoch war es mir auch nach langen Versuchen nicht möglich, ein Programm mit einem Aufruf der entsprechenden Funktion zu übersetzten. Ich führte 3.10. DER PALMOS-EMULATOR POSE 157 die Compiler Fehlermeldungen schließlich auf eine Unverträglichkeit zwischen Windows und Unix PRC-Tools Versionen zurück. Als Notlösung behalf ich mir damit, das betreffende PIN mit einem Klebestreifen zu isolieren. Da ich in der endgültigen Version des Prototypen kein Cradle mehr verwendete, stellte dies ohnehin kein weiteres Problem mehr dar. 3.10 Der PalmOS-Emulator POSE 3.10.1 Entwicklungsgeschichte Der PalmOS-Emulator entstand wie viele der frei verfügbaren Entwicklungstools auf Initiative eines Programmierers hin, der den Bedarf einer solchen Anwendung erkannte. Greg Hegwill begann im Juni 1996 mit der Entwicklung des damals noch als Pilotsim bezeichneten Emulators. Sein Ziel war es, die CPU und die komplette Hardware eines Palm Pilots auf einem Desktop Computer zu emulieren, um somit neue Anwendungen komfortabel testen und debuggen zu können. Als Grundlage diente ihm die Emulation der Motorola 68k CPU des UAE5 von Bernd Schmidt. Ohne Dokumentation der Hardware und ohne Sourcen des PalmOS entwickelte Greg den Emulator, nur durch systematische Analyse eines PalmOS-ROMImages und kleiner Analyse-Programme auf der Palm Hardware, bis zum Herbst 1996 zu einer stabilen Version. Er veröffentlichte die Version 1.0 des nun Copilot genannten Programms inklusive der Sourcen im Internet. Dadurch wurde der Copilot sehr schnell durch unterschiedliche Entwicklerteams von der ursprünglichen Windows Version auf andere Plattformen portiert. Heute existieren zwei Versionen für den Macintosh und Portierungen auf Linux, BeOS, OS/2 und sogar Windows CE. Nach mehreren neuen Versionen und Verbesserungen mußte Greg Hegwill u.A. aus Zeitmangel gegen Ende 1997 die Entwicklungsarbeit einstellen. Palm Inc. zeigte aber mittlerweile Interesse an diesem Projekt und stellte eigens einen Mitarbeiter zu Fortführung des Emulator-Projekts ab. Seit Anfang 1998 ist daher Keith Rollin von Palm Inc. für die Weiterentwicklung des Emulators verantwortlich. Seine anfängliche Arbeit bestand darin, die Sourcen der mittlerweile zahlreichen Portierungen zu einem einheitlichen Programmierstil zu vereinheitlichen und besser zu dokumentieren. Weiterhin wurden die neuesten UAE Quellen zur Emulation des CPU Kerns eingebaut. Da Keith im Gegensatz zu Greg sowohl die Hardware Dokumentation als auch die PalmOS-Sourcen zur Verfügung standen, konnte er einige Details der Motorola 5 Unix Amiga Emulator 158 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Dragonball-Emulation verbessern. Zu den wichtigsten Neuerungen zählt auch die Unterstützung von externen Debuggern. Damit ist es den Programmierern, möglich ihren vertrauten und bevorzugten Debugger einzusetzen Da Palm Inc. die Bezeichnung Pilot in ihren neueren Produkten nicht mehr verwendet, änderte sich auch der Name des Emulators von Copilot in POSE6 . 3.10.2 Allgemeines Mit dem PalmOS-Emulator ist es möglich annähernd die komplette Hardware eines Palm PDAs auf einem Desktop Computer System zu emulieren. Er benötigt dazu ein Image des PalmOS, das er dann auf der simulierten Hardware ausführt. Dabei wird nicht nur die CPU emuliert. Die Ausgabe auf das LCD Display wird auf dem Monitor des PC angezeigt, wobei das Display sogar von einer originalgetreuen Abbildung eines Palm Gehäuses eingerahmt wird. Abbildung 3.11: Start einer POSE Sitzung Die Eingabe mit dem Pen wird durch die Mausbewegung und -klicks des PCs ersetzt, und die Eingabe in Textfeldern kann direkt mit der PC-Tastatur vorgenommen werden. 6 PalmOS Emulator 3.10. DER PALMOS-EMULATOR POSE 159 Die serielle Schnittstelle des Palm leitet der Emulator direkt auf einen wählbaren seriellen Port des PC um. Soweit mir bekannt ist, ist die Durchleitung des Palm IrDA-Ports auf die entsprechende PC-Hardware (noch) nicht möglich. Zum Auslesen des PalmOS-ROMs aus dem PDA in eine Image Datei für den Emulator ist in ein kleines Palm Programm enthalten, welches, auf dem PDA installiert und gestartet, den Transfer ermöglicht. Der Palm muß dazu im seriellen Cradle eingesetzt, und somit mit dem PC verbunden sein. Mit dem Download-Button im Start-Fenster einer neuen Emulatorsitzung wird der Download Dialog gestartet. Dem Emulator muß dann nur noch der Ort des ausgelesenen Images im Filesystem sowie das Modell und der Speicherausbau des zu emulierenden Gerätes mitgeteilt werden.(siehe auch Abbildung 3.11). Der Emulator ist bei der Entwicklung von PalmOS-Anwendungen ein nahezu unentbehrliches Hilfsmittel. Seine wichtigsten Vorteile sind dabei: • Schnelles Testen verschiedener Programmversionen durch einfaches Laden der Programme durch drag & drop in das Emulator Fenster ohne Hotsync Vorgang. • Einfaches Debuggen durch Unterstützung externer Debugger • Teilweise Programmausführung zu Debugzwecken noch nach Fehlern möglich, die ein reales PalmOS zum Absturz gebracht hätten. • Direkter Einsprung in den Debugger nach PalmOS-Systemfehler • Emulator überprüft Anwendung auf guten Programmierstil und warnt bei direkten Zugriffen auf Dragonball Register, Zugriff auf System-, oder Display Speicher u.v.m.. Damit soll sichergestellt werden, daß Anwendungen auch auf zukünftigen PalmOS-Versionen und Palm Modellen noch lauffähig sind. • Umfangreiche Logging Funktionen • Testen der Anwendung mittels Gremlins. Gremlins erzeugen zufällige Benutzereingaben und führen diese dem Programm als Eingabe zu. Damit lassen sich bei realer Nutzung kaum vorkommende Situationen erzeugen, und eventuell dabei auftretende Fehler finden. • Programmentwicklung und Tests sind auch ohne entsprechende Hardware möglich. Das ist vor allem interessant, um die Funktionalität auf verschiedenen Modellen zu testen. In der aktuellen Version kann POSE alle Geräte der Palm Modellreihe sowie den Handspring Visor emulieren. Die Emulation schließt dabei alle Besonderheiten der Hardware der einzelnen Modelle ein. Zu den meisten Modellen sind sogar sogenannte Skins vorhanden, die für das originalgetreue Aussehen des jeweiligen Geräts auf dem PC Bildschirm sorgen (siehe Abbildung 3.12). 160 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Abbildung 3.12: Emulation verschiedener Palm Modelle 3.10.3 Probleme beim Ansprechen der emulierten seriellen Schnittstelle Während meiner Entwicklungsarbeit nutzte ich den Palm-Emulatur sehr ausgiebig. Zu Beginn der Arbeit verfügte ich noch über keine PDA Hardware so daß der Emulator die einzige Möglichkeit bot, erste eigene Anwendungen zu testen. Später stand mir zwar bereits ein Handspring Visor zur Verfügung, jedoch bereitet der physikalische Anschluß eines Chipkarten-Lesegerät an den PDA Probleme (näheres dazu in Abschnitt 3.11. Da der Emulator die Aufrufe an die serielle Schnittstelle des Palm an den RS-232-Port des PCs weiterleitet, und ich über ein Chipkarten-Lesegerät für den PC verfügte, wollte ich die ersten Versuche, mit einer Palm-Anwendung auf eine Chipkarte zuzugreifen, mit dem Emulator durchführen. Trotz korrekter Konfiguration des Emulators konnte ich jedoch das Chipkartenterminal nicht ansprechen. Nachdem ich Fehler in der Verkabelung und im Programmcode meiner Anwendung ausgeschlossen hatte, glaubte ich zuerst, das Problem auf eine fehlerhafte Emulation der seriellen Schnittstelle zurückgeführt zu haben. Hier war die Logging-Funktionalität des POSE sehr hilfreich. Diesen Informationen war zu entnehmen, daß der Emulator die serielle Schnittstelle des PCs nicht öffnen konnte. Da meine bisherigen Versuche ausschließlich unter Windows stattfanden, beschloß ich, den Emulator auf dem selben Rechner unter Linux zu testen. Zu meiner Überraschung funktionierte der Zugriff auf das Chipkartenterminal unter diesem Betriebssystem auf 3.10. DER PALMOS-EMULATOR POSE 161 Anhieb. Der Emulator Quellcode ist auf beiden Plattformen weitgehend identisch. Zwar sind die Module, welche die serielle Schnittstelle ansprechen, bei Windows und Linux-Version unterschiedlich, da die Emulation der seriellen Schnittstelle jedoch schon seit der ersten Version des Emulators zu seinem Funktionsumfang gehört, erschien mir ein Fehler darin unwahrscheinlich. Die vorkompilierte Linux-POSE-Version hatte jedoch noch keine Unterstützung für Handspring-Geräte, eine neuere Version, die diese Funktionalität besaß, lag mir nur im Source Code vor. Nachdem Probleme mit falschen Versionen einiger Linux-Bibliotheken auf meinem System gelöst waren, konnte ich die neue POSE Version erfolgreich übersetzen. Leider stellte sich heraus, daß in dieser Version das Programmodul zur Umleitung der seriellen Schnittstelle auf das entsprechende Linux-Device tatsächlich nicht funktionierte. Ob dies ein allgemeiner Fehler ist, oder nur bei meinem System auftrat, habe ich nicht weiter überprüft. Es gelang mir zwar, eine funktionsfähige Version zu erzeugen, indem ich den Code der seriellen Emulation der neuen POSE-Version“ durch den ” funktionierenden Quelltext der alten Version ersetzte, jedoch wollte ich, um weitere Fehlerquellen auszuschließen mit der unmodifizierten Windows Version weiterarbeiten. Im Unterschied zu Linux, das vom Chipkartenterminal-Hersteller Towitoko nicht explizit unterstützt wird, waren auf der Windows Plattform, die von Towitoko mitgelieferten Treiber für das Chipkartenterminal geladen. Wie sich durch Versuche herausstellte, belegen diese Treiber, auch wenn keine der Towitoko Anwendungen aktiv ist, die serielle Schnittstelle des PCs. Damit kann sie von anderen Programmen wie dem Emulator nicht mehr geöffnet werden. Nach der Deinstallation dieser Treiber konnte der Emulator auch unter Windows die simulierte serielle Schnittstelle problemlos ansprechen. 3.10.4 Auslesen eines ROM Images aus dem Visor Da, wie schon mehrmals erwähnt, auf den Geräten der Firma Handspring ein modifiziertes PalmOS zum Einsatz kommt, hielt ich es für wünschenswert, auch ein entsprechendes ROM Image zur Emulation zu verwenden. Da ROM Images aus Copyright Gründen nicht frei im Internet zum Download zur Verfügung stehen, wollte ich das Image aus dem Handpring Visor Platinum auslesen. Für die Geräte vom Palm Inc. ist dies mittels des Emulators und eines kleinen Programms für den Palm wie in Abschnitt 3.10.2 beschrieben relativ einfach möglich. Durch diese Methode verfügte ich bereits über ein ROM Image eines Palm V, das ich aus dem Gerät eines Freundes transferiert hatte. Der Visor verfügt im Gegensatz zu den Palm Modellen jedoch über ein Cradle mit USB Anschluß. Die ROM-Transfer Funktion des POSE erwartet aber ein Cradle mit seriellem Anschluß. Doch selbst mit dem als Zubehör erhältlichen seriellen Cradle ist ein Auslesen des Visor-ROMs mit dem Emulator nicht möglich. 162 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Eine Lösung dieses Problems war im Internet zu finden. In den HandspringEntwicklungs-Tools, welche auf deren Webseite zum freien Download angeboten werden, aber leider auch nur ausschließlich für Windows verfügbar sind, ist auch eine modifizierte Version des Palm Debuggers enthalten, die Verbindungen zum PDA über den USB Port unterstützt. Damit ist es möglich, den Ausschnitt aus dem Speicher des Visors, der das ROM beherbergt, auf den PC zu transferieren. Der Visor muß sich dazu im Cradle befinden und mittels der Eingabe des Shortcut-Symbols, zwei Punkten und der Ziffer 1 in der Merkzettel-Anwendung in den Debug-Modus versetzt werden. Im Debugger muß zuvor USB“ als Verbindung zum PDA ausgewählt worden sein. ” Durch Eingabe von save "ImageName.rom" 10000000 200000 wird das ROM ausgelesen und unter dem angegeben Namen auf dem PC gespeichert. Durch Eingabe von reset im Debugger-Fenster wird der Visor anschließend wieder aus dem Debugmodus geholt. 3.10.5 Schwierigkeiten bei der Ausführung eines Handspring Visor Platinum ROMs Laut Dokumentation des POSE werden von diesem zwar die Handspring-Geräte unterstützt, wie sich herausstellte jedoch nur die Modelle Deluxe und Prism. Die Ausführung eines Visor Platinum ROMs erzeugt bereits beim Bootvorgang auf dem Emulator eine Menge an Warnmeldungen und Fehlern. Das ROM bootet zwar abgesehen von diesen Meldungen vollständig, und meine TestAnwendung startet auch, jedoch gelang es mir damit nicht, die serielle Schnittstelle anzusprechen. Auf eine Nachfrage in der POSE Entwickler Newsgruppe erhielt ich von einem der Entwickler die Auskunft, daß die Unterstützung des Platinum ROM erst in künftigen Versionen des POSE vorgesehen ist.. Da mir mittlerweile ein realer Handspring Platinum zur Verfügung stand, beschloß ich, alle Versuche auf dem Emulator mittels des Palm V ROM durchzuführen, und die endgültigen Tests auf Verträglichkeit mit den Besonderheiten des Visor Platinum direkt am realen Gerät vorzunehmen. 3.11. ANSCHLUSS DES CHIPKARTEN-LESEGERÄTS AN DEN PDA 163 3.11 Anschluß des Chipkarten-Lesegeräts an den PDA 3.11.1 Die serielle Schnittstelle des Handspring Visors Die PDAs der Firma Handspring besitzen im Gegensatz zu den Palm Geräten keine vollwertige RS-232-Schnittstelle. Da sie eigentlich zum Anschluß über den USB Port gedacht sind, sind auf ihrem Cradle Connector nur die Signale RX und TX eines herkömmlichen seriellen Ports“ vorhanden und keine Steuersignale. ” Dazu kommt, daß diese seriellen Sende- und Empfangssignale nicht den RS-232-Pegeln entsprechen, sondern nur 3,3 Volt TTL7 -Pegel liefern und erwarten. Um trotzdem auch eine Kommunikation mit PCs ohne USB Port zu ermöglichen, bietet Handspring ein serielles Cradle als Zubehör an. Ein darin enthaltenes Pegelwandler IC vom Typ MAX3232 des Herstellers Maxim setzt mittels einer Ladungspumpe die TTLPegel des Visors in RS-232 konforme Signale für den PC um und umgekehrt. Aufgrund der fehlenden Steuersignale wie u.A. RTS oder CTS ist jedoch nur eine Datenübertragung mit verhältnismäßig geringer Geschwindigkeit möglich. 3.11.2 Kopplung über Pegelwandler serielles Cradle mit RS-232- Zur Kommunikation mit dem Chipkartenterminal reicht aber eine Geschwindigkeit von 9600 Baud problemlos aus. Der erste Ansatz, den Handspring Visor um einen Chipkarten-Reader zu erweitern, bestand daher in der Verwendung des seriellen Cradles als Hilfsmittel. Da sowohl die jeweils 9-poligen Stecker von Chipkarten-Lesegerät und Cradle zum Anschluß an einen PC gedacht sind, müssen beide über einen Adapter gekoppelt werden. In diesem Adapter werden wie bei einem Nullmodem-Kabel“ die Sende- und Emp” fangssignale überkreuzt. Die Belegung einiger Steuersignale habe ich von der Beschaltung eines Nullmodem-Adapters übernommen, obwohl sie für diesen Zweck gar nicht notwendig gewesen wären. Sie stören jedoch auch nicht. Zur Versorgung des Chipkartenterminals ist eine Gleichspannung von 5 Volt notwendig. Diese muß von einer externen Quelle bereitgestellt werden. Ich verwendete dazu 4 Stück 1,5 Volt Mignon Batterien. Die daraus resultierende Betriebsspannung von 6 Volt liegt innerhalb des Toleranzbereichs der Chipkarten-Leserelektronik. 7 Transistor Transistor Logic 164 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Adapter seriell 9 pol. Sub-D von Visor Cradle auf Towitoko micro 100 1 1 RX RX TX TX DTR Handspring Signal Ground Visor DSR ChipSignal Ground drive 100 RTS RTS CTS + - + Spannungsversorgung Chipdrive micro 100 Abbildung 3.13: Adapter zwischen seriellen Cradle und Chipdrive Erste Versuche, über diesen Aufbau mit der Chipkarte zu kommunizieren, schlugen jedoch fehl. Der Grund dafür war, daß Cradleelektronik die vom MAX3232 Pegelwandler benötigte Versorgungsspannung von 3,3 bis 5 Volt nicht wie zuerst von mir angenommen vom Visor bezieht, sondern vom PC. Die Versorgungsspannung für das Cradle muß daher über den Adapter eingeschliffen werden. Der PC versorgt das Cradle über Signal Ground und RTS mit Spannung. Genau diese Pins schloß ich auf der CradleSeite des Adapters an den Batteriepack, welcher auch das Chipkartenterminal versorgt, an. Der Anschluß der Chipkarten-Reader Spannungsversorgung erfolgt über die vorgesehenen PINs dessen PS/2 Steckers. Wie bereits in Abschnitt 3.9.5 erwähnt, ist es bei dieser Lösung notwendig, das Keyboard Detect-PIN 2 auf dem Cradle-Connector zu isolieren, um eine Blockierung der seriellen Schnittstelle zu verhindern. Der Nachteil dieses Lösung ist der relativ unhandliche Aufbau. Da der PDA hier immer im Cradle eingesetzt sein muß, und verhältnismäßig viele Verbindungskabel und Adapter notwendig sind, machte der Prototyp keinen sehr repräsentativen Eindruck. Der Vorteil dabei ist, daß keinerlei Verbindungkabel umgebaut oder gar zerstört werden müssen, so daß die spätere Verwendung von Cradle und Chipkartenterminal an einem PC jederzeit wieder möglich gewesen wäre. Nachteilig ist darüberhinaus der, durch die Pegelwandlung der seriellen Signale bedingte, unnötig hohe Stromverbrauch. 3.11. ANSCHLUSS DES CHIPKARTEN-LESEGERÄTS AN DEN PDA 165 Abbildung 3.14: Aufbau bei Anschluß über serielles Cradle Dazu kam, daß nach einiger Betriebszeit zwei Transistoren im Cradle durch thermische Überlastung zerstört wurden. Ich konnte den Grund dafür nie genau feststellen. Da ich ohnehin eine bessere Lösung anstrebte, verwendete ich auch nicht allzuviel Zeit mit der Ursachenerforschung. Eine elegantere Lösung ist die direkte Kopplung des Chipkartenterminals an den Handspring-PDA ohne dazwischengeschaltetes RS-232-Cradle. 3.11.3 Direkte Kopplung Da die Elektronik des Chipdrives mit großer Wahrscheinlichkeit intern nicht mit RS232-Pegeln, sondern ebenfalls wie der Ausgang des Visors mit TTL Signalpegeln arbeitet, schien eine direkte Kopplung dieser beiden Geräte erfolgversprechend zu sein.. Das Problem dabei war, daß ich über keinerlei Unterlagen zur Hardware des Towitoko Chipdrives verfügte. Der Hersteller beschränkt sich auf die Angabe der wichtigsten technischen Daten. Informationen über den verwendeten Controller-Chip, geschweige 166 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS denn der gesamte Schaltplan des Lesegerätes, waren nicht zu bekommen. Eine Recherche im Internet lieferte zwar nicht die erhofften technischen Unterlagen, jedoch einen Erfahrungsbericht eines Anwenders [Kah] der genau diese Kopplung, allerdings mit einem Chipdrive micro 110 erfolgreich realisiert hatte. Auf der Seite waren allerdings leider keine Beschaltungsskizzen enthalten, sondern nur sehr unscharfe Aufnahmen der umgebauten Chipkarten-Leser Platine. Die Beschreibung enthielt aber viele hilfreiche Anhaltspunkte, die mir als Basis für eigene Versuche dienten. Als Anschluß zum Visor-Cradle-Connector sollte ein umgebautes USB Kabel dienen. Als ersten Schritt trennte ich den USB Stecker von diesem Kabel ab. Wie sich hierbei herausstellte, führte das Kabel nur die drei Signalleitungen, welche zur USBKommunikation benötigt werden. Towitoko Chipdrive 100 Anschlußschema LED Cable connector 1 1 Towitoko Chipcard Controller 74HC125 Towitoko Chipdrive micro 100 Elko RTS VCC +5 V TX TTL RX inv TTL GND Abbildung 3.15: Anschlußschema der Chipkarten-Leser Platine Zur Verbindung mit dem Chipkartenterminal reichten diese aber gerade aus. Nur die Belegung am Stecker für den Visor-Cradle-Connector mußte geändert werden. Ich benötigte die Signale RX, GND und TX vom Visor. Diese liegen auf den PINs 1, 4 und 8 des Cradle-Connectors. Am geöffneten Stecker lötete ich die vorhandenen Signalleitungen von den USB Pins einfach auf die für mein Vorhaben benötigten Anschlüsse um. Als nächstes galt es, die entsprechenden Anschlüsse auf der Platine des Chipdrive micro 100 ausfindig zu machen. Abbildung 3.15 zeigt schematisch ihre Bestückung. Der RS-232- und der PS/2-Stecker sind normalerweise über den als Cable-Connector bezeichneten Pfostenstecker auf der Platine angeschlossen. Da diese Anschlüsse nicht mehr benötigt wurden, entfernte ich diesen Stecker. Zuvor bestimmte ich noch aus dem 3.11. ANSCHLUSS DES CHIPKARTEN-LESEGERÄTS AN DEN PDA 167 bekannten PIN Layout der beiden Standard-Stecker die Belegung des Cable-Connectors auf der Platine. Direkte Kopplung zwischen Handspring Visor und Towitoko Chipdrive 100 Oberseite Pin 1 RX inv Pin 4 TX RX GND VCC zum Chipdrive RTS TX VCC GND GND Pin 8 Handspring Visor + - = 4,8 - 6 V Abbildung 3.16: Beschaltungsschema bei der direkte Kopplung zwischen Visor und Chipdrive 100 Über diesen Anschluß sollte die Stomversorgung des Chipkartenterminals realisiert werden. Die eigentliche Schwierigkeit bestand darin, herauszufinden, an welcher Stelle die seriellen Ein- und Ausgangssignale auf die Platine zu führen waren. Obwohl die Platinen des Chipdrive micro 110 und 100 nicht identisch sind, nahm ich an, daß beide zumindest das selbe Chipkarten-Controller IC verwenden. Christian Kahlo beschreibt in seinem Bericht [Kah] PIN 1 und 2 des Controller ICs als TTL Ein- bzw. Ausgang des Towitoko Chipdrive micro 110. Dabei ist zu beachten, daß der Controller auf seinem Eingang ein invertiertes Signal erwartet. Daher ist auf einer kleinen externen Platine ein Standard TTL Inverter IC auf dem Signalweg zwischen seriellem Ausgang des Visor und Eingang des Chipdrive Controllers untergebracht. Die Stromversorgung des Inverters erfolgt aus dem selben Batteriepack, der auch das Lesegerät speist. Gleichzeitig dient die Inverter-Platine zur physikalischen Verbindung zwischen dem vom Visor kommenden umgebauten USB Kabel und den Anschlußleitungen zum Chipdrive. Mit diesem Aufbau gelang es mir jedoch noch nicht, die Chipkarte anzusprechen. Erst nachdem das RTS-Signal am ursprünglichen RS-232-Cable-Connector des Chipkartenterminals auf VCC gelegt wurde, führte das zum gewünschten Erfolg. 168 KAPITEL 3. GRUNDLAGEN DES DEMONSTRATIONSSYTEMS Abbildung 3.17: Aufbau bei direktem Anschluß des Towitoko Chipdrive micro 100 and den Handspring Visor Platinum Abbildung 3.17 zeigt dabei die Realisierung dieser Kopplung. Die RX und TX Anschlüsse lötete ich direkt auf die entsprechenden PINs des Conrollers auf. Das FlachbandAnschlußkabel für Signale und Versorgungsspannung wird dabei über eine separat angebrachte Öffnung aus dem Gehäuse geführt, um die Originalöffnung zu erhalten, falls das Lesegerät später mal wieder an einem PC verwendet werden sollte. 169 Kapitel 4 Das mAuth Demonstrationssystem 4.1 4.1.1 Aufbau Implementierte Systemkomponenten Zielsetzung bei der Entwicklung des Demonstrationssystems war nicht eine möglichst vollständige Umsetzung des mAuth Konzepts, sondern die Realisierung eines einfachen Anwendungsbeispiels, mit dem die Funktionalität und Praxistauglichkeit des Konzepts veranschaulicht werden konnte. Das Demonstrationssystem besteht aus den Komponenten: • Mobiles Gerät • Chipkarte • PoA Auf die Komponente Trustcenter und damit auch auf die Verwendung von Zertifikaten wurde zur Vereinfachung verzichtet. Der PoA ist als einzelnes Gerät mit eigener Benutzerdatenbank realisiert. Eine zentrale Benutzerdatenbank, wie sie von PoA-Betreiber Organisation verwendet werden würde, hätte das Demonstrationsystem nur unnötig verkompliziert, ohne einen großen Nutzen für die Anschaulichkeit zu erbringen. 4.1.2 Implementierte Funktionalität Das Demonstrationssystem ermöglicht die Anmeldung an einen Linux-Rechner mittels einem mobilen Gerät gemäß dem mAuth Protokoll. Es verwirklicht damit das Applikationsmodell vom Typ Zugang (vergleiche Abschnitt 2.9). 170 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Die Authentifizierung des PTD am Linux-PoA erfolgt über das Challenge-Response Verfahren mit einem symmetrischen Kryptoalgorithmus. Da die Chipkartenapplikation nur den symmetrischen 3DES Algorithmus unterstützt, bietet sie auch nicht die Möglichkeit Zertifikate abzuspeichern. PTD und PoA müssen somit über den selben geheimen Schlüssel verfügen. Dieser Schlüssel ist zusammen mit der ID und weiteren Daten des Benutzers in der Zugangsdatenbank des Linux-PoA-Servers abgelegt. Die Datenbank ist als ASCIITextdatei realisiert. Da das Demonstrationsystem keine Neuanmeldung bei der Nutzerdatenbank über ein drahtloses Medium unterstützt, muß der PoA-Server auch über kein spezielles Administratorinterface verfügen. Neue Zugangsberechtigungen werden durch manuelles Eintragen der Daten in die entsprechende Datei des Servers vergeben. 4.2 4.2.1 Entwicklung Die Chipkartenapplikation Da als Chipkarte eine Sm@rtcafé Javacard verwendet wird, ist die mAuth default Chipkartenanwendung in der Programmiersprache Java verfaßt. Sie ist weitgehend gemäß dem Zustandsautomat aus Abschnitt 2.8.4 aufgebaut. Ihr Quellcode besteht aus den beiden Dateien: • mAuthDeclarations.java : In diesem Interface sind die wichtigsten Konstanten definiert. Es erfüllt einen einer Header Datei in der Sprache C vergleichbaren Zweck. • mAuth.java : Dies ist der eigentliche Programmcode der Chipkartenanwendung. Die Datei mAuth.java enthält die Klasse mAuth, welche von der Superklasse aller Javacard-Anwendungen Applet erbt. Sie implementiert folgende 3 Methoden: • install(byte[] buffer,short offset,byte length) : Diese Methode wird nur einmal aufgerufen und zwar direkt nach dem Ladevorgang des Applets auf die Chipkarte. Erst dann ist die Anwendung selektierbar. In meiner Anwendung ist die einzige Aufgabe dieser Methode die Bildung einer Instanz der Klasse mAuth. • mAuth() : Der Konstruktor wird bei der durch install initiierten Instantierung der Klasse ausgeführt. Hierin werden hauptsächlich Daten und Variablen initialisiert. Schließlich wird durch Aufruf der Methode register der Installationsvorgang der Anwendung abgeschlossen. • process(APDU apdu) throws ISOException : Bei jedem Empfang einer APDU wird diese Methode ausgeführt. Sie wertet das empfangene Datenpaket aus, reagiert entsprechend und sendet eine Antwort zurück. 4.2. ENTWICKLUNG 171 Als Benutzer ID verwendet meine Applikation die Seriennummer der Chipkarte. Sie kann damit nicht beliebig verändert werden, sondern ist fest an eine bestimmte Karte gebunden. Befehl GetID GetCap VrfPIN Encrypt DeCrypt SetKey SetPIN Code 0x10 0x13 0x30 0x40 0x41 0x20 0x23 Par1 – – Type At+Kt At+Kt At+Kt Type Par2 – – – BlNr BlNr BlNr – Daten – – PIN Data Data Key PIN Antwort 0xFF <ID> SW1 SW2 0xFF <Cap> SW1 SW2 SW1 SW2 BlNr <ciper Data> SW1 SW2 BlNr <plain Data> SW1 SW2 SW1 SW2 SW1 SW2 Case 2 2 4 4 4 4 4 Tabelle 4.1: Übersicht über die implementierten Funktionen der mAuth Chipkarte 0xFF : SW1 : SW2 : At+Kt : BlNr : Blockende, da hier immer nur ein Antwortpaket! Status Word (erstes Byte) Status Word (zweites Byte) Algorithmus Typ & Key Typ Block Nummer In Tabelle 4.1 sind alle implementierten Kommandos aufgeführt. Ebenso zeigt sie deren Format und den Aufbau der Rückantwort auf jeden Befehl. Als kryptographischer Algorithmus wird ausschließlich Tripple-DES im ECB Modus eingesetzt. Da dafür bereits im Programmcode ein default Schlüssel eingetragen ist, der mit dem entsprechenden Befehl jedoch jederzeit später geändert werden kann, sind auch die Karten-Capabilities schon hier statisch definiert. Durch den Verzicht auf asymmetrische Algorithmen und Zertifikate passen die Nutzerdaten problemlos in jeweils eine APDU. Die Unterstützung mehrteiliger APDUs und somit der Blocknummerierung ist damit nicht notwendig, und auch nicht implementiert. Die Blocknummern-Felder BlNr in den Request APDUs werden ignoriert. Bei Antworten enthält das entsprechende Feld immer den Wert 0xFF. 4.2.2 Der PoA 4.2.2.1 Überblick Als Demonstrations-PoA dient ein Linux-PC. Die Reaktion auf einen erfolgreichen Authentifikationsprozeß ist die Gewährung des Zugangs zu diesem Rechner. Um diese Authentifikation möglichst flexibel zu gestalten, ist der PoA-Server in Form eines PAMModuls (vergleiche hierzu Abschnitt 3.4) umgesetzt worden. 172 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Die Entwicklung und Erprobung der Server-Software fand auf dem in Abbildung 4.1 dargestellten Laptop statt. Die Software sollte jedoch auch auf jedem anderen LinuxPC mit IrDA- und PAM-Unterstützung lauffähig sein. Abbildung 4.1: Der Demonstrations PoA-Server Der Quellcode ist in folgende Dateien aufgegliedert: • poa Server.c : Hierin ist annähernd die gesamte Funktionalität des Servers enthalten. Die zentrale Funktion darin ist mAuth. Sie initialisiert den Serversocket, hört auf eingehende Verbindungen und bearbeitet die empfangenen Befehle. Nur bei einer erfolgreichen Authentifizierung gibt sie die Kontrolle mit einem entsprechenden Rückgabewert an die aufrufende Funktion zurück. • poa Server.h : Hierin sind die Definitionen wichtiger Konstanten und Strukturen ausgelagert. • poa test.c : Mit diesem Programm ist das Testen der Funktionalität des Servers auch ohne PAM Umgebung möglich. Es enthält im Prinzip nur die Funktion main(), welche wiederum mAuth() aus poa Server.c aufruft. Damit kann der Server von der Kommandozeile aus gestartet werden. Eine erfolgreiche Authentifizierung beendet das Programm. • pam mauth.c : Das ist der Quellcode des PAM Moduls (siehe Abschnitt 4.2.2.2). Der Programmablauf ist dabei an den, im mAuth Konzept in Abschnitt 2.8.6 vorgestellten, Automaten angelehnt. Die von mAuth aufgerufene Funktion poaConnect initialisiert die Infrarot-Verbindungsparameter und wartet auf eingehende Anfragen eines Clients. Sobald eine TinyTP Verbindung besteht wird die Funktion poaProcess aufgerufen. Sie empfängt eingehende Befehle und reagiert darauf entsprechend dem Befehlscode und dem Server-Betriebszustand. 4.2. ENTWICKLUNG 173 Der Server kennt folgende drei Zustände: • not connected : Das ist der initiale Zustand unmittelbar nach dem Start. • connected : Nach einem mAuthOBEX Verbindungsaufbau und einer Übereinstimmung der empfangenen Nutzer ID mit einem Eintrag in der PoA-Datenbank befindet sich der Server in diesem Zustand. • authenticated : In diesen Zustand tritt der Server nach einer erfolgreicher Durchführung des Challenge-Response Verfahrens ein. Sind in einem Request auch Header enthalten, so werden diese durch die Funktion parseHeader der Reihe nach abgearbeitet. Abhängig von dieser Auswertung können Aktionen wie das Durchsuchen der Datenbank nach einer Benutzer ID, das Erzeugen einer Challenge, das Überprüfen einer Response, usw. ausgelöst werden. Diese Abläufe sind ebenfalls in eigene Funktionen gekapselt. Je nach Ausgang dieser Aktionen ändert sich der Server-Zustand. Der Betriebszustand, sowie sitzungsspezifische Daten wie z.B die Challenge oder der Session-Key sind in einer Datenstruktur gespeichert. Diese Daten müssen, um keine Sicherheitslücken zu schaffen, bei Beendigung einer Sitzung gelöscht und neu initialisiert werden. Die Beendigung einer physikalischen Verbindung ist bei diesem Demonstrationsystem jedoch nicht unbedingt mit einem Ende der Sitzung gleichzusetzen. Aus in Abschnitt 4.2.3.3 näher erläuterten Gründen muß der hier verwendete PTD die Infrarotverbindung zwischen dem Aussenden der ID und dem zweiten Connect-Request mit gültiger Response kurz unterbrechen. Der Server darf jedoch in diesem Falle seine SitzungsDatenstruktur nicht neu initialisieren, sondern muß zumindest die Challenge beibehalten. Dieser Fall eines Verbindungsabbruchs kann daran erkannt werden, daß dieser Abbruch unmittelbar nachdem der Server in den Betriebszustand connected gewechselt hat die Nutzer ID also akzeptiert und eine Challenge ausgesandt wurde - auftritt. Nur unter diesen Voraussetzungen behält der Server die Datenstruktur bei und wartet auf eine neue Verbindung. Dieses Verhalten stellt aber einen Schwachpunkt des Systems dar, und kann für einen Angriff genutzt werden. Daher sollte es in einer endgültigen Realisierung so nicht beibehalten werden. Bedingt durch die verwendete PDA Hardware, war dieser Kompromiß jedoch notwendig und für ein Demonstrationsystem auch vertretbar. Der Server reagiert nur auf Verbindungsanfragen, die an den LSAP-Selektor des Dienstes, welcher beim IAS auf den Namen mAuth:OBEX registrierten wurde, gerichtet sind. Die OBEX Hintbits sind dabei gesetzt. Alle in den Tabellen 4.2 und 4.3 aufgeführten Befehle und Header werden vom Server erkannt. 174 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Code 0x90 0x80 0x81 0xFF 0x82 mAuthOBEX Befehl PeerDisc Connect Disconnect Abort Put Anmerkungen nur mit final Bit! keine Unterstützung für Objekte, die sich über mehrere Pakete erstrecken. Tabelle 4.2: Die vom Server unterstützten mAuthOBEX Befehle Code 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 0xB8 mAuthOBEX Header mAuthID mAuthChallenge mAuthResponse mAuthSessionKey CapAuth CapLink CapApp PeerDescription Crypt Tabelle 4.3: Die vom Server erkannten mAuthOBEX Header Zur Durchführung kryptographischer Funktionen werden die, im Programmpaket OpenSSL (http://www.openssl.org) enthaltenen, Routinen der Crypto-Bibliothek verwendet. Da dort mehrere Varianten des 3DES Algorithmus existieren, war nicht eindeutig klar, welche Methode von der Javacard zur Verschlüsselung verwendet wird. Durch kleine Testprogramme, mit denen ich versuchte einen von der Chipkarte verschlüsselten Text zu dechiffrieren, konnte ich die korrekte Variante ( des ecb2 encrypt(des cblock *input, des cblock *output, des key schedule ks1, des key schedule ks2, int enc) ) ermitteln. Die Zugangsdatenbank des PoA-Servers ist vergleichbar der Unix Passwort Datei als ASCII Textfile ausgeführt. Jeder Eintrag eines Nutzers entspricht einer Zeile in dieser Datei. Die einzelnen Felder sind mittels Doppelpunkte voneinander abgetrennt. LOGIN_NAME : ID : KEY Neben ID und KEY, welche beide in ASCII-Darstellung ihrer Hexadezimalewerte abgelegt werden, muß zu jedem Eintrag die zugehörige Unix Kennung vorhanden sein. Die Datei sollte nur für den Systemverwalter root les- und schreibbar sein. 4.2. ENTWICKLUNG 4.2.2.2 175 Das PAM Modul Da der PoA-Server nur die PAM Funktion auth unterstützen soll, war in der Quelldatei des PAM Moduls pam mauth.c nur die Funktion PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh, int flags, \\ int argc, const char **argv ) zu implementieren. Die übrigen fünf PAM-Funktionsaufrufe enthalten keinen Progragrammcode und liefern immer PAM SUCCESS als Return-Wert zurück. Die Funktion pam sm authenticate ruft die Routine mAuth auf und überprüft deren Rückgabewert. Signalisiert dieser eine erfolgreiche Authentifizierung, muß der PAM Bibliothek und darüber den PAM nutzenden Anwendung wie z.B. dem Programm Login der betreffende Unix Benutzername mitgeteilt werden. Die Funktion mAuth übergibt diesen Namen an das PAM Modul. Dieses reicht ihn mittels dem Aufruf pam set item an die PAM Bibliothek weiter. Das mAuth Konzept sieht für den PoA die Implementierung von timeouts vor. Damit soll ein Blockieren des Servers durch nicht korrekt beendete Verbindungen verhindert werden. Diese Timeouts sind im Demonstrationsystem nicht explizit realisiert. Die PAM Bibliothek startet jedoch ein Authentifizierungsmodul, das 60 Sekunden nach seinem Aufruf keine Rückmeldung erbracht hat, automatisch neu. Über diesen Mechanismus wird auch der PoA-Server regelmäßig neu initialisiert, und darüber die geforderte Funktionalität erbracht. 4.2.2.3 Modifikation des Mingetty Programms Der Login Vorgang an einer Textkonsole eines Linux-Systems wird meist von dem Programm mingetty kontrolliert. Zur Überprüfung der Zugangsberechtigung ruft dies das Programm login auf, das seinerseits wiederum die Benutzerauthentifikation an PAM übergibt. Durch eine entsprechende Modifikation der PAM Konfiguration wird login veranlasst, zur Authentifikation anstatt des Unix Passwort Moduls das mAuth PAM Modul zu verwenden. Das Problem dabei ist nur, daß die erste Aufforgerung zur Eingabe eines Benutzernamens von mingetty direkt erfolgt. Mit diesem Namen als Parameter ruft es dann login auf. Dadurch würde der mAuth Server erst nach Eingabe irgendeines Nutzernamens gestartet. Um das zu verhindern habe ich die Sourcen vom mingetty so verändert, daß diese Abfrage deaktiviert wird. Das modifizierte Programm startet nun sofort das mAuth PAM Modul, und wartet auf eingehende Verbindungen. 176 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM 4.2.3 Der PTD-Client 4.2.3.1 Überblick Das PTD des Demonstrationssystems besteht aus einem Handspring Visor Platinum PDA mit angeschlossenen externen Chipkarten-Lesegerät Towitoko Chipdrive micro 100 (vergleiche dazu die Abschnitte 3.7.3 und 3.11). Die Entwicklung der PTD-Client-Software erfolgte auf einem Linux-System mit dem GNU-PalmOS-Entwicklungswerkzeugen (vergleiche Abschnitt 3.9). Auch hier ist die Implementierung an den Referenzautomaten aus Abschnitt 2.8.5 angelehnt. Abbildung 4.2: Der Demonstrations PTD-Client Mein PTD-Client unterstützt ausschließlich das Applikationsmodell Zugang. Um das System einfach und überschaubar zu halten, wurden auf Verwaltungsfunktionen wie das Ändern der Karten PIN oder die drahtlose Übertragug der Anmeldedaten zu neuen PoAs oder zu einem Trustcenter, verzichtet. Dies erschien mir gerechtfertigt, da diese Funktionen zwar im praktischen Betrieb für den Benutzer wichtig sind, jedoch 4.2. ENTWICKLUNG 177 keinen wesentlichen Beitrag zur Demonstration der Funktionalität des mAuth Konzepts liefern. Abbildung 4.2 zeigt das mobile Gerät mit dem Chipkarten-Lesegerät sowie dem umgebauten USB Verbindungskabel und dem externen Batteriepack. Die Platine mit dem Signalinverter befindet sich im Bild unter den Batterien und hinter dem ChipkartenReader. Die im Bild links befindliche Kombination aus Chipkartenterminal, Batteriepack und Inverter-Elektronik ist an der Springboard-Schachtabdeckung des Visor Platinums befestigt, und kann auf dessen Rückseite aufgeschoben werden. Neben den, in Abschnitt 3.8 bereits beschriebenen, Besonderheiten bei der Programmentwicklung für PalmOS waren noch weitere Schwierigkeiten zu lösen. Da derzeit noch keine PDAs auf die Integration von Chipkarten-Lesegeräten vorbereitet sind, fehlt auch eine entsprechende Unterstützung in der API ihrer Betriebsysteme. Da hier das Lesegerät über den seriellen Port angeschlossen ist, erfolgt der Zugriff darauf mit den Funktionen des PalmOS-Serial Managers. 4.2.3.2 Anpassung der SCEZ Chipcard Library Zur Ansteuerung des Kartenterminals sowie zur Kommunikation mit der Karte selbst, sind Protokolle notwendig. Da diese vom Typ der Karte und dem Hersteller des Lesegerätes abhängig sind, ist es sinnvoll diese Funktionalität aus dem Programmcode der Anwendung auszulagern. Matthias Bürstle schuf zu diesem Zwecke die SCEZ Chipcard Library. Diese Programmierbibliothek unterstützt eine Vielzahl von Chipkarten-Lesegeräten, und bietet eine API für die gebräuchlichsten Karten. Sie läßt sich für viele Betriebssysteme - darunter auch Linux - übersetzen und ist sogar auch auf PalmOS portiert. Für PalmOS ist die Bibliothek in Form von GLib shared Libraries realisiert. Sie ist in aufeinander aufbauende Funktionsmodule strukturiert. Beginnend bei dem untersten“ Modul setzt sich die Bibliothek aus folgenden Teilen zusammen: ” • serial Input/Output: Diese Modul stellt die Basisfunktionen zum Aussenden und Empfangen von Daten über die serielle Schnittstelle zur Verfügung. • Kartenlesegerät-Treiber: Sie enthalten die Kommandosequenzen, um Funktionen des jeweiligen Kartenterminals anzusteuern. • Chipkarten Kommunikationsprotokolle: Diese Module wickeln die Kommunikationsprotokolle wie z.B. T=1 oder T=0 mit der Chipkarte ab. • Kartenspezifische Treiber: Das sind Interfaces, mit Hilfe deren Funktionen bestimmte Karten komfortabler, als über das selbständige Zusammenstellen und Aussenden entsprechender APDUS angesprochen werden können. • Allgemeines Programmier-Interface: Diese Sammlung von Funktionen stellt das allgemeine Interface für die Basis-Funktionalität der Library dar. Zur reel- 178 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM len Ausführung ruft es die entsprechenden tieferliegenden Module auf. Dadurch können unabhängig von der eingesetzten Karte und Terminal immer die gleichen Funktionen verwendet werden. Durch diese übersichtliche Struktur sind eigene Anpassungen leicht möglich. Dies und die Tatsache, daß in dieser Bibliothek bereits sowohl ein Treiber für die Towitoko Chipkarten-Lesegeräte sowie ein Interface und kleine Dienstprogramme für die Sm@rtcafé Javacard enthalten sind, waren für mich ausschlaggebend die SCEZ Chipcard Library zu verwenden. Genauere Informationen zur den einzelnen Modulen und zur Programmierung damit sind in [Bü00] nachzulesen. Während der Entwicklungsarbeit für das Demonstrationssystem reduzierte ich die Sourcen der SCEZ Bibliothek auf die von mir benötigte Funktionalität. Im Vorfeld der Entwicklung diente mir das, im SCEZ Paket enthaltene und für meine Zwecke angepaßte, kleine PalmOS-Demoprogramm scdir, für Versuche mit der Kopplung aus Palm und Chipdrive sowie zum Sammeln von Erfahrungen im Umgang mit Programmierung der Bibliothek. Ich entwickelte ein eigenes SCEZ Chipkarten-Modul, mit dem alle Funktionen der mAuth Chipkarte des Demosystems mittels C-Funktionen aufgerufen werden können. Aufgabe dieses Moduls ist die Zusammenstellung der übergebenen Daten zu entsprechenden APDUs, ihr Aussenden an die Chipkarte sowie die Auswertung der Antwort darauf. Sollte in einer späteren Version die Übertragung von Daten, die auf Grund ihrer Größe mehrere APDUs zum Transport benötigen, realisiert werden, wird in diesem Modul die Aufteilung auf die einzelnen Blöcke sowie die Überwachung der korrekten Reihenfolge umgesetzt werden. Weiterhin entstand ein kleines Linux-Programm mit dem die Funktionen meiner Chipkarten-Applikation getestet werden können. 4.2.3.3 Probleme bei der gleichzeitigen Verwendung von IrDA und der seriellen Schnittstelle Wegen einer Besonderheit der Hardware des Handspring Platinums, waren noch weitere Veränderungen an den Sourcen der Library notwendig. Der Handspring Platinum besitzt nur einen UART Controller. Da dieser sowohl von der Infrarotschnittstelle, als auch vom seriellen Port genutzt wird, ist deren gleichzeitige Verwendung nicht möglich. Zwar ist beim Start der Anwendung noch keine Infrarot-Kommunikation notwendig, sodaß die Initialisierung der Chipkarte mitsamt der PIN Überprüfung noch problemlos möglich ist. Später beim eigentlichen Authentifikationsprozeß werden jedoch eigentlich beide Schnittstellen gleichzeitig benötigt. Grundsätzlich kann keine der beiden Kommunikationsprozesse problemlos unterbrochen und wiederaufgenommen werden. Ein Schließen der Infrarot Library zur Freigabe des UARTs für den seriellen Port führt zwangsläufig zum Abreissen der IrDA-LAP-Verbindung und damit nach kurzer Zeit auch zu einem Verbindungsabbau der darüberliegenden Schichten. Da sich dieses Problem aber mit der gegebenen Hardware nicht umgehen läßt, wurde der PoA-Server 4.2. ENTWICKLUNG 179 entsprechend modifiziert, um diesen speziellen Fall zu berücksichtigen. Er ermöglicht nun einen neuen Kommunikationsaufbau und die Fortsetzung des Protokolls im selben Serverzustand, selbst nachdem die Verbindung unterbrochen worden ist. Dies ist für ein Demonstrationssystem akzeptabel, sollte aber bei einer engültigen Implementierung aus Sicherheitsgründen auf keinen Fall beibehalten werden. Ein Abbruch der Kommunikation mit der Chipkarte, sollte dagegen weniger Probleme bereiten. Im Idealfall registriert die Chipkarte gar keine Veränderung. Das Chipkartenterminal empfängt für die Zeit, in der der serielle Port geschlossen ist, einfach keine neuen Befehle. Sowohl Karte als auch Terminal verweilen im gerade aktuellen Zustand. Wird der Port wieder geöffnet, sollte die Kommunikation an der unterbrochenen Stelle fortgesetzt werden können. Zu diesem Zwecke erweiterte ich das serielle Input/Output-Modul und den Towitoko Chipkartenterminal-Treiber der SCEZ Library um zwei Funktionen: • SerSuspend: Schließt die serielle Schnittstelle, und gibt somit den UART für die Infrarot-Kommunikation frei. • SerReaktivate: Öffnet den seriellen Port wieder. Nach der Initialisierung der Karte und der PIN Überprüfung gibt SerSuspend den UART für das IrDA basierende PeerDiscovery und für die Initialisierung eines Authentifikationsprozesses frei. Nach Empfang der Server-Challenge muß jedoch die Chipkarte die entsprechende Response berechnen. Dazu ist eine Kommunikation mit der Karte unbedingt notwendig. Nach dem Schließen der Infrarot-Library wird die serielle Schnittstelle daher mit SerReaktivate wieder geöffnet. Wurde die Response berechnet und an das mobile Gerät zurückgeliefert, wird der serielle Port wieder stillgelegt und die Infrarot-Kommunikation an der unterbrochenen Stelle fortzusetzen. Dieses Verfahren funktioniert auf dem PalmOS-Emulator einwandfrei. In der Praxis auf dem realen Visor - war es jedoch nicht möglich die einmal unterbrochene Kommunikation mit dem Chipkartenterminal wieder aufzunehmen. Durch Versuche stellte sich heraus, daß der Visor offenbar nach dem Schließen der seriellen Schnittstelle noch irgendwelche Signale auf den seriellen Port schickt. Diese versetzen das Chipkartenterminal in einen undefinierten Zustand. Der Grund für dieses Verhalten konnte nicht eindeutig geklärt werden. Ich vermute jedoch die Ursache im bereits beschriebenen Handspring Keyboard-Daemon. Zieht man das serielle Kabel sofort nach der Deaktivierung des Ports ab, und steckt es erst kurz vor der Reaktivierung wieder an, funktioniert dieser Prozeß. Das läßt zumindest darauf schließen, daß es sich wirklich um ausgesandte Signale auf dem deaktivierten Port handelt und nicht um ein Problem des Chipkartenterminals. 180 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Als Lösung, schließe ich in der SerSuspend Funktion nicht nur die Schnittstelle, sondern baue die Kommunikation zum Chipkartenterminal vollständig ordnungsgemäß ab. Im Gegenzug dazu muß die Funktion SerReaktivate die komplette Kommunikation zum Terminal neu aufbauen. Das bedeutet u.a. ein Karten-Reset durchzuführen, die mAuth Applikation zu selektieren und die PIN erneut zu verifizieren. Dazu ist es notwendig die PIN nach der ersten Eingabe temporär im mobilen Gerät gespeichert zu halten. Auch dieses potentielle Sicherheitsrisiko würde sich beim Einsatz einer Hardware mit zwei separaten UARTs erübrigen. 4.2.3.4 SSLeay Crypto-Library für PalmOS Gemäß dem mAuth Konzept ist die Verschlüsselung der Kommunikation auch beim Demonstrationssystem die Aufgabe des mobilen Gerätes. Dazu muß die mAuth Anwendung auf dem Palm PDA kryptographische Algorithmen ausführen. Diese Funktionalität ist nicht im PalmOS enthalten, und muß durch eigene Routinen zur Verfügung gestellt werden. Mit pilotSSLeay Version 2.01 existiert eine Portierung der SSLeay Crypto-Library auf PalmOS. SSLeay ist ein Vorgänger der OpenSSL-Bibliothek, welche auch bei der Programmierung des PoA-Servers eingesetzt worden ist. PilotSSLeay-2.01 basiert auf SSLeay-0.8.1. Ian Goldberg hat die wichtigsten kryptographischen Funktionen daraus auf PalmOS portiert, und diese in Form mehrerer GLib shared Libraries unter dem Namen PilotSSLeay-2.01 veröffentlicht. Zumindest die API der von mir benötigten 3DES Funktionen blieb bis zur neusten Version der OpenSSL Bibliothek weitgehend unverändert. So konnte ich die Funktionen zur Verarbeitung von mAuthOBEX Crypt-Headern, welche ich bereits für den PoA-Server entwickelt hatte, auch auf dem PDA Client verwenden. 4.2.3.5 Entwicklung eigener IrDA-Funktionen in Form der MyIrLib Zur Kommunikation mit dem PoA mußte auch auf dem Client das mAuthOBEX Protokoll implementiert werden. Das PalmOS unterstützt IrOBEX durch den Exchange Manager. Die API des Exchange Manager bietet aber nur Funktionen zum Austausch von Datenobjekten an. Die dazu notwendigen OBEX Kommandos wickelt der Exchange Manager intern - für den Anwendungsprogrammierer nicht beeinflußbar - ab. Somit war es damit weder möglich den erweiterten Verbindungsaufbau des mAuthOBEX, noch das Peer Discovery oder die erweiterten Header einzubinden. PalmOS bietet jedoch mit der IrLibrary eine API um auf die IrDA-Grundfunktionen zuzugreifen. Allerdings ist diese API sehr low level“ und erfordert relativ genaue Kennt” nisse des IrDA-Protokolls, um damit Anwendungen zu realisieren. Der Programmierer 4.2. ENTWICKLUNG 181 muß sich um Vorgänge wie das LAP Peer Discovery, IAS Queries und den Verbindungsaufbau aller darauf aufsetzenden Schichten selbst kümmern. Für meine Zwecke wäre eine API, die einen Verbindungsaufbau auf TinyTP Ebene ermöglicht und Routinen zum Senden und Empfangen von Daten zur Verfügung stellt, wünschenswert gewesen. Um diese Abstraktion zu erreichen, müssen die “low level“ Funktionen der PalmOS-IrLibrary in eigene Routinen gekapselt werden, welche sich um die notwendigen Aufrufe und die Abwicklung des Verbindungsaufbaus in allen unteren Schichten - beginnend bei LAP - kümmern. Mein Ziel war es ein benutzerfreundlicheres Interface zum Aufbau von IrDAVerbindungen zu schaffen, das von seiner Anwendung an den Berkeley Socket Mechanismus angelehnt ist. Im einzelnen entstanden dazu folgende Funktionen: • int MyIrOpen ( ): Initialisiert alle Datenstrukturen und öffnet die IrLibrary des PalmOS. • int MyIrDiscover ( IrDeviceAddr *dev, int timeout ): Führt einen IrDA-LAP-Discovery-Vorgang durch und liefert eine Liste der gefundenen Geräteadressen zurück. • int MyIrConnect ( IrDeviceAddr deviceAddr, char *service, int timeout ): Baut zu der angegeben IrDA-LAP-Adresse eine TinyTP Verbindung auf. • int MyIrSend ( BYTE *data, int len, int timeout ): Sendet über eine bestehende Verbindung einen beliebigen, übergebenen Bytestrom aus. • int MyIrReceive ( BYTE *data, int *len, int timeout ): liefert einen empfangenen Bytestrom zurück. Sind bei Aufruf keine Daten im Empfangspuffer, wartet die Funktion bis ein Paket angekommen ist oder bis der Timeout eintritt. • int MyIrDisconnect ( int timeout ): Baut die bestehende Verbindung aller Schichten ab. • int MyIrClose ( ): Gibt den allozierten Speicher frei und schließt die IrLibrary. Bei der Verfolgung diese Konzepts ergaben sich jedoch mehrere Probleme. PalmOS ist ein ereignisgesteuertes Betriebssystem. Der zentrale Teil aller Palm Anwendungen ist daher die Event Loop. Während sich das Programm in dieser Schleife befindet, auf eingehende Events wartet, diese auswertet und abarbeitet, werden auch die Betriebssystem-Funktionen ausgeführt. Meine IrDA-Routinen sollen jedoch nach ihrem Aufruf, erst nachdem sie das gewünschte Ergebnis geliefert haben, wieder in den Programmablauf zurückkehren. Die Ausführung der Event Loop wäre damit so lange unterbrochen. 182 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Disconnected Medium busy initiate LAP Connect pending timeout LAP disconnected wait for IrCallback timeout LAP connected LAP disconnected Medium busy initiate IAS Query LAP disconnected pending timeout wait for IASCallback Medium busy LSAP selector returned initiate TinyTP timeout pending timeout wait for IrCallback TP connected timeout Connected SUCCESS Abbildung 4.3: Automat der MyIrConnect Funktion 4.2. ENTWICKLUNG 183 Alle Aufrufe von IrLibrary Kommandos können auch scheitern. Der häufigste Grund hierfür ist eine Medium Busy Fehlermeldung, welche besagt, daß gerade ein anderes IrDA-Gerät das Medium für sich nutzt. Daher muß der Rückgabewert jedes Funktionsaufrufs überprüft und das Kommando solange neu abgesetzt werden, bis es eine erfolgreiche Rückmeldung erzeugt. Eine positive Rückmeldung besagt aber nur, daß die betreffende Funktion gestartet werden konnte; das Ergebnis wird meist durch eine Callback Funktion zurückgegeben. Hat eine Funktion ein IrLibrary Kommando erfolgreich starten können, muß auf den Aufruf dieser Callback Funktion gewartet werden, um das Ergebnis zu erhalten. Das Problem dabei ist, daß während des Wartens die IrDA-Library ausgeführt werden muß. Das ist normalerweise bei einer Rückkehr in die Event Loop der Anwendung kein Problem. Da meine Funktionen jedoch erst nach ihrer vollständigen Ausführung zur normalen Anwendung“ zurückkehren, mußte ich dafür sorgen, das die Palm IrLibrary ” innerhalb“ meiner Routinen ausgeführt wird. ” Dazu besitzt jede Funktion eine kleine interne EventLoop“. Innerhalb dieser Schleife ” wird bei jedem Durchlauf überprüft, ob das betreffende IrLibrary-Kommando erfolgreich gestartet werden konnte und bei Bedarf erneut aufgerufen. Desweiteren werden mittels EventGetEvent anstehende Ereignisse aus der Event-Queue entnommen und SysHandleEvent sowie die IrLibrary interne Funktion IrHandleEvent zu deren Verarbeitung aufgerufen. Damit ist sichergestellt, daß die IrLibrary ausgeführt wird und die Callback Funktion aufgerufen werden kann. Der Aufruf der Callback Funktion setzt entsprechend seines Ergebnises ein Flag, das von der eben beschriebenen Schleife erkannt wird und diese bei erfolgreichen Ergebnis zum Verlassen veranlaßt. Da die Callback Funktion jedoch nicht zwangläufig einen Erfolg zurückmeldet, mußte zusätzlich ein Timeout Mechanismus in den Funktionsaufrufe vorgesehen werden. Beim Funktionsaufruf wird die maximale Ausführzeit als Parameter übergeben. Der EvtGetEvent Aufruf erfolgt so, daß, falls nach 100 ms kein Ereignis eingetreten ist, ein NilEvent generiert wird. Somit ist sichergestellt, daß ein Schleifendurchlauf nur unwesentlich länger als maximal 0,1 Sekunden dauert. Durch einen einfachen Zähler kann so die Überschreitung der vorgegebenen Ausführzeit bestimmt werden. Ist nach Ablauf des Timeouts noch keine erfolgreiche Rückmeldung durch die Callback Funktion erfolgt, wird die Schleife dennoch verlassen. Die Funktion liefert als Rückgabewert jedoch einen entsprechenden Fehlercode zurück. Abbildung 4.3 zeigt am Beispiel der Struktur der MyIrConnect Funktion diesen Mechanismus. Da im Connect-Vorgang mehrere PalmOS-IrLibrary-Funktionen, deren Ausführung voneinander abhängt, aufgerufen werden müssen, ist diese die komplizierteste Struktur der MyIr-Routinen. Die Realisierung einer Event Loop innerhalb der MyIr-Funktionen stellte sich in der Praxis jedoch als kritisch heraus. Es bedurfte ausgiebiger Tests und wiederholter Änderungen und Optimierungen des Programmcodes, um eine stabile Ausführung zu erreichen. Bei den ersten Versionen kam es vor allem oft zu Systemabstürzen des Pal- 184 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM mOS mit der Fehlermeldung Pen queue out of sync“. Das Problem liegt vermut” lich in der Entnahme von Pen-Events aus der Warteschlange außerhalb der HauptEventschleife. Eigentlich sollte dies kein Problem darstellen, da die in dieser Zeit aufgelaufene Pen-Events für die Programmausführung uninteressant sind, jedoch scheint das betriebssysteminterne Probleme zu verursachen. Dieses Verhalten konnte weitgehend durch den Aufruf der Funktion EvtFlushPenQueue nach der Abarbeitung der MyIr-EventLoop beseitigt werden. Ursprünglich plante ich diese Funktionen in Form einer GLib shared Library umzusetzen. Die Bibliothek ließ sich auch problemlos kompilieren und wird in der aktuellen Version auch noch mitübersetzt, jedoch traten bei ihrer Benutzung zur Laufzeit Fehler auf, die zum Systemabsturz führten. Ich vermute die Probleme in der Verwendung globaler Variablen und in der eventuell auftretenden Veränderung der Callback Startadresse bei wiederhohlten Aufruf der Funktionen. Da die MyIr Funktionensammlung jedoch sehr klein ist, entschloß ich mich, um eine zeitaufwendige Fehlersuche zu vermeiden, die Objektdatei direkt zum Programmcode des PTD-Clients zu linken; anstelle eine Bibliothek zu erzeugen und diese einzubinden. 4.3. INSTALLATION 4.3 185 Installation Sämtliche Programme, die im Rahmen dieser Arbeit entstanden, liegen als Source Code vor. Mittels dem Makefile im Hauptverzeichnis des Source-Verzeichnisbaumes können - durch Eingabe von make - alle Anwendungen übersetzt werden. Voraussetzung dafür ist, daß die in den folgenden Abschnitten aufgeführten Systemvorausetzungen erfüllt und die notwendigen Tools installiert sind. Es ist auch möglich, alle Systemteile unabhängig voneinander zu kompilieren. Jede Komponente enthält dafür in dem betreffendem Verzeichnis ein eigenes Makefile. In jedem Verzeichnis ist darüberhinaus eine README Datei vorhanden, die den Übersetzungsvorgang und den Aufbau der Sourcen näher beschreibt. Der Source-Verzeichnisbaum ist wie folgt aufgebaut: • PTD-Client/: Sourcen des PalmOS-Clients – MyIrLib/: meine IrDA-Funktionen – scez-20010519/: angepaßte und erweiterte Quellen der SCEZ Chipcard Library – pilotSSLeay-2.01/: Bibliothek mit kryptographischen Funktionen für PalmOS • PoA-Server/: Sourcen des PoA-Servers – mingetty/: Angepasste Quellen des mingetty Programms • Chipcard/: Quellcode zur mAuth Javacard Anwendung Die Entwicklung erfolgte größtenteils auf einem Linux-System. Nur für wenige, spezielle Aufgaben mußte auf die Windows Platform ausgewichen werden. Die Makefiles sind für die Übersetzung auf einem Unix System ausgelegt. Sollten Teile oder die kompletten Quellen unter einer anderen Entwicklungs-Plattform neu übersetzt werden, können Anpassungen notwendig sein. 4.3.1 Chipkarte 4.3.1.1 notwendige Tools Die Quellen der mAuth Chipkarten Applikation sind im Verzeichnis Chipcard/ enthalten. Das Kompilieren des Quellcodes kann auf einem beliebigen Rechnersystem, für welches das Java SDK verfügbar ist, geschehen. Im einzelnen setzt eine Neuübersetzung und die Installation der Anwendung auf der Chipkarte folgende Komponenten voraus: • Giesecke & Devrient Sm@rtcafé Javacard mit Krypto Funktionalität 186 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM • Chipkartenterminal • Entwicklungs PC • Java SDK ab Version 1.1.7 • G&D Smartcafe Professional incl. G&D Javacard Klassen Giesecke & Devrient, der Hersteller der Sm@rtcafé Karte, hat die Klassen seiner Javacard im Vergleich zur original Javacard-API von SUN Microsystems etwas erweitert. Diese Klassen werden zur Übersetzung benötigt und müssen sich im CLASSPATH des Java Compilers befinden. Sie gehören zum Lieferumfang der Sm@rtcafé Professional Entwicklungsumgebung. Sie sind jedoch auch im Verzeichnisbaum meiner Sourcen mitenthalten. Zum Übertragen der in Bytecode übersetzten und in das .cap-Format umgewandelten, Anwendung wird ein an den Entwicklungsrechner angeschlossenes Chipkartenterminal benötigt. Die Sm@rtcafé Professional Entwicklungsumgebung akzeptiert dabei u.U. nur ganz bestimmte Terminal-Fabrikate und -Typen. Ich verwendete erfolgreich das Chipdrive extern des Herstellers Towitoko. Der Upload von Chipkartenanwendungen ist jedoch auch mit dem in der SCEZ Bibliothek enthaltenen Programm cafeman möglich. Dieses und weitere Hilfeprogramme können durch Eingabe von make Linux im SCEZ Verzeichnis erzeugt werden. Dabei ist zu beachten, daß zuvor mit make clean eventuell noch vorhandene Objekt Dateien aus einem vorangegangenen Übersetzungsvorgang für die Palm-Plattform gelöscht worden sind. Übersetzt man diese Hilfsprogramme zum ersten mal, müssen vor deren Verwendung noch mittels make install die notwendigen Linux-Libraries in das System eingebunden werden. Dazu sind root-Rechte erforderlich. Mit cafeman können Javacard Anwendungen im .cap-Format mit jedem, von dieser Bibliothek unterstützen Kartenterminal, auf die Karte transferiert werden. 4.3.1.2 Übersetzen und Installieren Vor dem Start eines Compilerlaufs ist gegebenenfalls das Makefile im Verzeichnis Chipcard an die Umgebung des eingesetzten Entwicklungssystem anzupassen. Das gilt vor allem für den Pfad des Java Compilers und den Klassenpfad der G&D Javacard Klassen. Letzterer sollte, bei Verwendung der im Source-Verzeichnisbaum enthaltenen Klassen, keiner Anpassung bedürfen. Durch das Kommando make wird die Übersetzung gestartet. Die dabei erzeugten .class-Dateien befinden sich anschließend im Unterverzeichnis mauth. Die Konvertierung in das .cap-Format muß mit dem, im Sm@artcafé Professional Programmpaket enthaltenen, CAP-File-Konverter erfolgen. Der anschließende Upload auf die Karte kann entweder direkt aus der Entwicklungsumgebung oder mit dem Tool cafeman erfolgen. 4.3. INSTALLATION 4.3.2 PTD-Client 4.3.2.1 notwendige Tools 187 Der Übersetzungsvorgang für die PTD-Anwendung findet, wie bereits erwähnt, auf einem Cross-Developmentsystem statt. Dafür ist ein Entwicklungs-PC mit entsprechender Software notwendig. Im einzelnen werden folgende Komponenten benötigt: • PalmOS-PDA ab OS Version 3.3 • Entwicklungs PC (vorzungsweise Linux) • PRC-Tools 0.5.0 • PalmOS-SDK 3.3 • (SCEZ Chipkarten Bibliothek) - im Quellenbaum enthalten • (PilotSSLeay-2.01) - im Quellenbaum enthalten • Pinstall1 (oder sonstige Hotsync Software) Vor dem Start des Kompilierens ist sicherzustellen, das die korrekte Version der PRCTools und des PalmOS SDKs installiert sind. Das SDK muß korrekt in die Verzeichnisstruktur der PRC-Tools eingebunden sein. Bei der Verwendung von neueren SDKs können Probleme beim Übersetzten auftreten und Anpassungen des Quellcodes erforderlich sein. Der Einsatz neuerer PalmOS-Versionen auf dem PDA ist jedoch unkritisch. Ältere Releases als 3.3 können jedoch, wegen der dort fehlenden IrDA-Unterstützung, nicht verwendet werden. 4.3.2.2 Übersetzen und Installieren Die PTD-Anwendung wird normalerweise durch Aufruf des Kommandos make im PTDClient Verzeichnis kompiliert. Dadurch werden die Makefiles der Programmkomponenten in deren Unterverzeichnissen in der korrekten Reihenfolge aufgerufen. Die einzelnen Komponenten können durch diesen Aufbau falls gewünscht jedoch auch getrennt übersetzt werden. In den Makefiles sind gegebenenfalls die Pfade zu den PRC-Tools der lokalen Systeminstallation anzupassen. Nach dem Übersetzungsvorgang befinden sich die erzeugten .prc-Dateien im Verzeichnis palminstall. Dort liegen sowohl die eigentliche Anwendung, als auch die Installationsdateien der benötigten shared Libraries. Alle Dateien in diesem Verzeichnis müssen auf den Palm PDA übertragen werden. Das kann zum einen mit kleinen Hilfeprogrammen, welche sowohl für Unix, als auch Windows und Macintosh zur Verfügung stehen, oder mit dem Palm Desktop in einem normalen Hotsync-Vorgang erfolgen. 1 Pilot Install http://pinstall.envicon.com 188 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM 4.3.3 PoA-Server 4.3.4 Voraussetzungen Da der PoA-Server in Form eines PAM Moduls realisiert ist, sollte er theoretisch auf jedem System, welches PAM zur Authentifikation benutzt, verwendet werden können. Die IrDA-Kommunikation ist jedoch auf die Linux-IrDA-Implementierung ausgelegt. Bei einem Einsatz auf anderen Systemen sind höchstwahrscheinlich Anpassungen in den Kommunikationsfunktionen des Servers notwendig. Der Quellcode des Demonstrations PoAs setzt folgende Komponenten voraus: • Linux-System • PAM • Gcc-Compiler • Openssl Bibliothek • IrDA-Kernelmodul • Root Systemzugang Die IrDA-Funktionalität kann in Form eines dynamisch ladbaren Kernelmoduls realisiert, oder fest in den Kernel eingebunden sein. Weiterhin muß das IrDA-Subsystem korrekt konfiguriert sein, das bedeutet u.a., daß das korrekte Device für den IrDATransceiver angegeben sein muß. Die Konfiguration erfolgt gewöhnlich durch eine Datei im /etc/ Verzeichnis. Bei einem Suse-Linux Systems ist dies die Datei /etc/rc.config. Desweiteren ist darauf zu achten, daß das IrDA-Subsystem auch gestartet wird. Um IrDA automatisch beim Systemstart zu aktivieren, muß bei Suse-Linux die Variable START IRDA in der zentralen Systemkonfigurationsdatei /etc/rc.config auf yes gesetzt werden. 4.3.4.1 Übersetzen und Installieren Der Übersetzungsvorgang ist ähnlich einfach wie bei den übrigen beiden Komponenten des Demonstrationssystems. Nachdem die Pfade im Makefile den lokalen Gegebenheiten angepaßt worden sind, wird die Übersetzung mit make im Verzeichnis PoA-Server/ in Gang gesetzt. Im Anschluß daran befinden sich in diesem Verzeichnis das PAM Modul mit der Bezeichnung pam mauth.so und zu Testzwecken eine von der Kommandozeile ausführbare Version des PoA-Servers zu mit dem Namen poa test. 4.3. INSTALLATION 189 Das Verzeichnis mingetty-0.9.4/ enthält eine modifizierte Version des mingetty Programms, welches ohne initiale Abfrage des Usernamens sofort das Programm login und damit das PAM Modul aufruft (vergleiche dazu Abschnitt 4.2.2.3). Diese Version des mingetty Programms trägt den Namen mAuthgetty und befindet sich nach dem Übersetzen in diesem Verzeichnis. Nachdem die Bestandteile des PoA-Servers übersetzt worden sind, müssen sie in das Unix System eingebunden werden. Dazu sind Systemverwalterrechte notwendig. Alle weiteren Schritte sind daher als Benutzer root durchzuführen. Das mAuthgetty Programm sollte in den Systemordner kopiert werden, in welchem sich auch das normale mingetty Programm befindet. In vielen Fällen ist dies das Verzeichnis /sbin/ oder /usr/sbin/. Desweiteren ist dem System mitzuteilen, auf welcher virtuellen Konsole das mAuthgetty Programm gestartet werden soll. Diese geschieht mittels der Datei /etc/inittab. Darin sind u.a. die Eigenschaften für alle Systemkonsolen abgelegt. Auf meinem Versuchsystem habe ich alle Textkonsolen, mit der Ausnahme der, auf welcher mAuthgetty gestartet wurde, deaktiviert. Ein entsprechender Eintrag in /etc/inittab sieht wie folgt aus: # # # # getty-programs for the normal runlevels <id>:<runlevels>:<action>:<process> The "id" field MUST be the same as the last characters of the device (after "tty"). 2:2345:respawn:/sbin/mAuthgetty tty2 Anschließend muß das System noch aufgefordert werden, diese Änderungen zu übernehmen. Das erfolgt durch den Befehl kill -HUP 1, der ein HUP Signal an den Init-Prozeß sendet. Der Init-Prozeß sollte normalerweise immer die PID2 1 besitzen. Es empfiehlt sich jedoch, dies z.B. durch Eingabe von ps axu |grep init zu überprüfen und gegebenenfalls die PID im kill Befehl anzupassen. Als nächstes muß das PAM Subsystem so konfiguriert werden, daß es das mAuth Modul zur Authentifikation beim Loginvorgang auf dieser Konsole nutzt. Das mingetty Programm initiiert nicht selbst einen Authentifikationsprozeß, sondern startet für den Loginvorgang das Programm login. Dies ruft wiederum zur Authentifikation das entsprechende PAM Modul auf. Es müssen somit die PAM Einstellungen für das Programm login geändert werden. Zuvor wird das mAuth PAM Modul pam mauth.so aus dem Source-Verzeichnis in das Verzeichnis der PAM Module kopiert. Bei dem von mir verwendeten Suse-Linux-System befanden sich die Module unter /lib/security/. Die PAM Konfigurationsdateien liegen dagegen im Verzeichnis /etc/pam.d/. Dort muß die Datei login folgenden Inhalt besitzen: #%PAM-1.0 auth required 2 Process ID /lib/security/pam_mauth.so 190 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Als letzter Schritt ist sicherzustellen, das die Nutzerdatenbank mauthpasswd einen, oder mehrere gültige Einträge enthält. Diese Datei ist abschließend in das Verzeichnis /etc/ zu kopieren. Als Beispiel für ihr Format ist die Datei mauthpasswd.sample im Quellverzeichnis des PoA-Servers enthalten. 4.4 Bedienung 4.4.1 Chipkarte 4.4.1.1 Ändern von PIN und Schlüssel Da die Chipkarte selbst kein Mensch-Maschine Interface besitzt, ist es die Aufgabe des mobilen Gerätes, dieses Interface zu den Verwaltungsfunktionen der Chipkarte zur Verfügung zu stellen. Im Demonstrationsystem ist diese Funktionalität jedoch nicht integriert. Änderungen der persönlichen Daten auf der Chipkarte müssen daher im Source-Code der Kartenapplikation vorgenommen werden. Anschließend werden die Quellen neu übersetzt und die geänderte Anwendung neu auf der Karte installiert. • private byte defkey[] =: legt den 3DES Key der Karte fest • static byte std PIN VALUE[] =: definiert die Standard PIN Daneben existiert mit static byte full PIN VALUE[] eine PIN zum Zugang zu den Karten Verwaltungsfunktionen. Da diese Funktionalität jedoch im Demonstrations Client nicht verwirklicht ist, kommt diesem Wert nur Bedeutung für zukünftige Erweiterungen zu. 4.4.1.2 Modifikation der Main Loader Sicherheitsoptionen Die Installation einer Chipkartenanwendung mit der Sm@rtcafé Professional Umgebung erzeugt einen Main Loader ohne gesetzte Sicherheitsoptionen. Sollen jedoch die in Abschnitt 3.5.5 beschriebenen Sicherheitsmechanismen genutzt werden, können diese mit dem im SCEZ Paket enthaltenen Tool cafeman aktiviert werden. Dazu ist es notwendig einen neuen Main Loader zu erzeugen. Als erstes müssen dazu alle Anwendungen auf der Karte gelöscht werden. Das ist mit dem Kommando cafeman -C möglich. Dann wird durch cafeman -d der bestehende Main Loader gelöscht. Beim Anlegen eines neuen Main Loaders wird für die Kommandos: • INSTALL • LOAD APPLET 4.4. BEDIENUNG 191 • DELETE ML • CLEAR MEMORY • PUT KEY • SET PIN in dieser Reihenfolge jeweils die Kondition ihrer Ausführung festgelegt. Möglich sind die Konditionen: • n(ever) • a(lways) • p(in) Ein Main Loader wird also z.B. mit dem Befehl cafeman -c aapppp angelegt. Diese Konfiguration erlaubt ohne Bedingungen das Laden und Installieren von Applets. Der Ausführung aller anderen Befehle muß jedoch die Eingabe einer korrekten PIN vorausgegengen sein. Wird mit z.B. mit cafeman -e 0123456789ABCDEF ein hexadezimaler Schlüssel in ASCII-Darstellung angegeben, können später nur Applets installiert werden, die mit diesem Schlüssel verschlüsselt worden sind. Durch z.B. cafeman -s 0123456789ABCDEF kann auf gleiche Weise ein weiterer Schlüssel spezifiziert werden. Damit wird die Prüfsumme über einen Applet-Programmcode berechnet. Es werden dann nur noch Applets zur Installation akzeptiert, welche den korrekten MAC besitzen. Sind diese Sicherheitsoptionen festgelegt, muß die eigentliche Anwendung neu installiert werden. Dieser Intallationsvorgang kann ebenfalls mit dem Programm cafeman erfolgen. Dabei müssen nun bereits alle zuvor festgelegten Sicherheitsanforderungen erfüllt werden. 4.4.2 PoA-Server Die Bedienung des PoA-Servers beschränkt sich im wesentlichen auf das Hinzufügen neuer Zugangsberechtigungen. Diese werden in die Datei /etc/mauthpasswd eingetragen. Da diese Datei nur für den Benutzer root les- und editierbar sein sollte, sind zur Änderung Systemverwalterrechte notwendig. Neue Zugangsberechtigungen werden einfach durch das Anhängen einer weiteren Zeile zu dieser Datei mit den Kenndaten des Benutzers vergeben. Zur Übernahme der dieser Daten muß der Server nicht neu gestartet werden, da er bei jedem Authentifikationsvorgang die Zugangsdatenbank neu durchsucht und so die Änderungen übernimmt. Ansonsten ist zum Betrieb des Demonstrations-PoA keine weitere Bedienung notwendig. Es ist jedoch darauf zu achten, daß auf dem Linux-System die Konsole, an welche 192 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM das modifizierte mingetty Programm gebunden worden ist aktiviert ist, d.h. deren Ausgabe auf dem Monitor erscheint. Es ist empfehlenswert alle anderen Textkonsolen zu deaktivieren, um Verwechslungen auszuschließen. Auf der Textkonsole werden wichtige Schritte des Authentifikationsprozesses zur Kontrolle und Veranschaulichung ausgegeben. Abbildung 4.4 zeigt einen Screenshot eines typischen Anmeldevorgangs. Abbildung 4.4: Bildschirmausgabe eines typischen Anmeldevorgangs an dem Demonstrations-PoA-Server 4.4. BEDIENUNG 193 4.4.3 PTD-Client 4.4.3.1 Normaler Authentifikations Ablauf Nach der korrekten Installation der PTD-Client-Anwendung auf dem PalmOS-PDA erscheint das Icon mit dem Symbol TUM“ und dem Namen mAuthClient in der ” Anwendungsauswahl des PalmOS. Abbildung 4.5: Palm Programmübersicht Durch einfaches Antippen wird das Programm wie jede andere Palm Anwendung auch gestartet. Während die Start-Form (Abbildung 4.6) auf dem Display erscheint wird der Chipkarten-Reader und die Chipkartenapplikation initialisiert. Abbildung 4.6: mAuth Client Start-Form 194 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Ist dieser Initialisierungsprozeß erfolgreich abgeschlossen, wird der Anwender zur Eingabe seiner persönlichen PIN aufgefordert, um damit seine Identität gegenüber dem PTD nachzuweisen. Die Eingabe erfolgt in der, in Abbildung 4.7 dargestellten, PINForm. Abbildung 4.7: mAuth Client PIN-Form Die einzelnen Ziffern werden dabei durch Antippen der entsprechenden Felder eingegeben. Das Graffiti System kann hiefür nicht genutzt werden. Jede Ziffer wird symbolisch durch ein *“-Symbol im Feld PIN repräsentiert. Nach dreimaliger Falscheingabe der ” PIN wird die Karte gesperrt. Die Anzahl der verbleibenden Versuche wird im Feld Trys angezeigt. Tippfehler können durch Drücken des Korrektur-Buttons behoben werden. Dabei werden alle bereits eingegebenen Ziffern gelöscht und die PIN-Eingabe muß erneut beginnen. Der OK-Button bestätigt die PIN und sendet sie zur Überprüfung an die Karte. War die PIN korrekt, wechselt die mAuth Client-Anwendung in die Haupt-Form. Wie in Abbildung 4.8 zu sehen ist, ist das Display in drei Hauptteile untergliedert. Im oberen Drittel befindet sich ein Listenauswahl-Fenster, in dem alle in einem Peer-Discovery Vorgang gefundenen PoAs mit deren Kurzbezeichnung aufgeführt sind. Die Abbildung zeigt das Display unmittelbar nach der Aktivierung der Anwendung und noch vor dem Start eines Discovery-Vorgangs. Daher ist die Anzeige noch leer. Im Mittelteil sind die Bedienelemente angebracht. Mit dem Button PeerDisc wird ein Peer-Discovery-Prozeß in Gang gesetzt. Das Ergebnis wird im PoA-AuswahlFenster darüber dargestellt. Durch Antippen des Authenticate-Buttons wird ein Authentifikations-Vorgang zu dem im PoA-Auswahl-Fenster selektierten PoA gestartet. Die beiden vertikalen Pfeile am rechten Displayrand dienen zum auf- und abwärts scrollen der Debug-Ausgaben im unteren Drittel der Form. Da viele der Vorgänge im mAuth System vom Anwender verborgen ablaufen, entschied 4.4. BEDIENUNG 195 Abbildung 4.8: mAuth Client Haupt-Form ich mich, beim Demonstrations Client wichtige Ereignisse und Abläufe durch Textausgaben in einem Debug-Bereich der Haupt-Form anzuzeigen. Durch die beschränkte Anzahl an Zeilen für die Textausgabe scrollt die Anzeige automatisch nach oben. Mittels den beiden Pfeil-Buttons im Mittelteil der Form kann jedoch vor- und zurückgeblättert werden. Abbildung 4.9: Erfolgloses Peer Discovery Im mAuth Demonstrations Client findet das Peer Discovery nicht automatisch im Hintergrund statt, sondern muß vom Benutzer explizit durch Drücken des PeerDiscButtons gestartet werden. Konnten in einem Discovery-Vorgang keine mAuth kompatiblen Geräte in Reichweite gefunden werden, wird dies durch eine Meldung wie in Abbildung 4.9 dem Anwender mitgeteilt. Das PoA-Auswahl-Fenster enthält in diesem 196 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Fall nur den Eintrag no suitable PoAs in range!“. ” Werden dagegen bei einem Peer-Discovery geeignete PoAs gefunden, werden diese der Reihe nach im Auswahl-Fenster aufgeführt. In Abbildung 4.10 ist dies anhand eines Beispiels dargestellt. Abbildung 4.10: PoA-Auswahlliste Der Benutzer kann nun, indem er einfach den entsprechenden Eintrag antippt, den PoA, an welchen er sich anmelden möchte, auswählen. Der eigentliche Authentifikationsprozeß beginnt nach dem Drücken des Authenticate-Buttons. Die wichtigsten internen Abläufe sind dabei, wie auch schon beim Peer-Discovery, anhand der Debug-Ausgaben zu beobachten. Abbildung 4.11: PoA bereits belegt 4.4. BEDIENUNG 197 Abbildung 4.11 zeigt einen Fall, in dem ein PoA-Server im Moment keine weiteren Verbindungen mehr annimmt. Das kann vorkommen, wenn bereits ein anderer Benutzer mit dem gewählten PoA kommuniziert und der PoA nicht mehrere Verbindungen gleichzeitig akzeptiert. Abbildung 4.12: erfolgreiche Authentifizierung Akzeptiert der Server jedoch die Verbindung und ist der Authentifikationsvorgang erfolgreich, meldet das der Demonstrations Client durch eine in Abbildung 4.12 dargestellte Meldung. Da das Demonstrationsystem das Applikationsmodell Rechnerzu” gang“ realisiert, bietet diese Dialogbox zusätzlich die Auswahl den Loginprozeß abzubrechen oder sich am System einzuloggen. Abbildung 4.13: erfolgreicher Loginvorgang Entscheidet sich der Benutzer für das Einloggen und konnte dieser Befehl erfolgreich 198 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM übertragen werden, so erfolgt die Bestätigung durch die in Abbildung 4.13 gezeigte Meldung. 4.4.3.2 Fehlermeldungen Abgesehen von den Ausgaben im Debug-Fenster“ habe ich versucht alle, für den Be” nutzer relevanten, zur Laufzeit auftretenden, Fehler in Form von Dialogboxen auszugeben. Im Fehlerfall erscheint eine Mitteilung, welche eine Beschreibung des Fehlers beinhaltet und einen Button zur Bestätigung besitzt. Je nach Art und Schwere des Problems, beendet sich die Anwendung anschließend, oder kehrt einfach zum Ausgangszustand vor der den Fehler verursachenden Aktion zurück. Abbildung 4.14: Fehlermeldungen beim Kartenzugriff In Abbildung 4.14 sind die Fehlermeldungen zusammengefaßt, welche in Zusammenhang mit dem Zugriff auf die Chipkarte auftreten können. Da die ersten beiden Fehlermeldungen auf ein Problem in der Hardware hinweisen, treten sie meist schon bei der Initialisierung der Anwendung auf. Sie führen zum Abbruch des Programms, da eine Programmausführung ohne Zugriff auf die Chipkarte nicht möglich ist. 4.4. BEDIENUNG 199 Die Dialogbox links unten in Abbildung 4.14 weist auf eine fehlerhafte mAuth Chipkarten-Anwendung hin. Entweder implementiert die Karte einen oder mehrere Befehle, die die mAuth PTD-Anwendung verwendet, nicht, oder sie reagierte unerwartet auf einen Request. In beiden Fällen ist die Kartenanwendung zu überprüfen. Die Meldung rechts unten tritt dagegen bei dem Versuch auf, einen Befehl an die Chipkarte zu senden, ohne vorher die zu dessen Ausführung notwendige PIN eingegeben zu haben. Eine typische Situation dafür wäre ein Änderungsversuch der persönlichen PIN ohne vorangegangener Eingabe der Verwaltungs-PIN. Abbildung 4.15: Fehlermeldungen der IrDA-Verbindung Während der IrDA-Kommunikation können verschiedene Probleme auftreten. Die erste in Abbildung 4.15 dargestellte Fehlermeldung deutet auf Probleme beim Öffnen der PalmOS-IrDA-Library hin. Das kann zum einen bedeuten, daß die serielle Schnittstelle noch geöffnet und somit den UART belegt ist, oder zum anderen daß die IrDA-Library nicht vorhanden ist wie z.B. bei PalmOS-Versionen vor 3.3. In ersteren Falle sollte der PDA resettet und ein neuer Versuch gestartet werden. Im letzteren Falle muß das PDA 200 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM Betriebssystem auf eine neuere Version aktualisiert werden. Die IrLibrary ist für die mAuth Client Anwendung zwingend erforderlich. Kann keine mAuthOBEX Verbindung zum gewählten PoA aufgebaut werden, wird die Meldung in Abbildung 4.15 unten rechts angezeigt. Dieses Problem kann u.a. aufgrund einer schlechten physikalischen IrDA-Verbindung auftreten. Eine genauere Ausrichtung der IrDA-Hardware zwischen PTD und PoA kann hier Abhilfe schaffen. Aus dem gleichen Grund kann es zu der Meldung links unten in der Abbildung kommen. Sie kann an einer beliebigen Stelle der Kommunikation auftreten. Die Auslöser sind meist ein Verbindungsabriß auf TinyTP- oder LAP-Ebene, oder Timeouts in den von mir entwickelten MyIr-Funktionen. Abbildung 4.16: Fehlermeldungen beim Authentifikationsprozeß Konnte eine Verbindung zum PoA-Server hergestellt werden, beginnt der eigentliche Authentifikationsprozeß. Ist keine der vom PTD übermittelten IDs in der Zugangsdatenbank des PoA-Servers, lehnt dieser sofort den Zugang ab. Dem Benutzer wird das durch eine Dialogbox, wie in Abbildung 4.16 links oben abbgebildet, mitgeteilt. Der gesamte Authentifikationsprozeß muß gemäß dem im mAuth Konzept spezifizierten Protokoll erfolgen. Empfängt der Client eine davon abweichende Antwort des Servers, 4.4. BEDIENUNG 201 bricht er die Authentifikation ab und informiert den Nutzer durch eine Meldung wie in Abbildung 4.16 rechts oben dargestellt. Läuft der Authentifikationsvorgang zwar gemäß dem Protokoll ab, schlägt die Überprüfung der RESPONSE jedoch fehl, zeigt eine Fehlermeldung das Scheitern der Authentifikation an. Die entsprechende Dialogbox ist in Abbildung 4.16 unten zu sehen. Abbildung 4.17: Fehlermeldungen in Zusammenhang mit der PIN Eingabe Im Zusammenhang mit der PIN Überprüfung sind zwei Fehlermeldungen relevant. Die Eingabe einer falschen PIN resultiert in einer Fehlermeldung, welche auch die noch verbleibenden Versuche bis zur Sperrung der Karte anzeigt. Der zweite Fehler, der hier Auftreten kann, ist die Betätigung des OK-Buttons ohne zuvor eine PIN eingetippt zu haben. 202 KAPITEL 4. DAS MAUTH DEMONSTRATIONSSYSTEM 203 Kapitel 5 Zusammenfassung und Ausblick 5.1 Zusammenfassung Das im Rahmen dieser Diplomarbeit entstandene Demonstrationsystem zeigt, daß bereits heute intelligente, mobile Geräte die Voraussetzungen mitbringen als universelle Authentifizierungs Token und sichere Terminals zu dienen. Ihre drahtlosen lokalen Übertragungstechnologien (IrDA, Bluetooth) eignen sich hervorragend zur Verbindung mit den Authentifikationssystemen, ohne Kosten durch die Nutzung eines Mobilfunknetzes zu verursachen. Allerdings fehlt fast allen derzeit am Markt erhältlichen Geräten ein Chipkarteninterface. Da die Chipkarte zur Gewährleistung der Systemsicherheit unbedingt notwendig ist, muß die entsprechende Hardware im Moment noch extern angeschlossen werden. Zum praktischen Einsatz sind jedoch Geräte mit integriertem Lesegerät erforderlich. Es ist jedoch zu erwarten, daß zukünftige Generationen von mobilen Geräten diese Funktionalität besitzen werden. Ein solches Authentifizierungsystem ist nur dann sinnvoll, wenn unterschiedliche Clients und Server zusammenarbeiten können. Der in dieser Arbeit entstandene Systementwurf spezifiziert die Aufgaben und Schnittstellen der einzelnen Komponenten und legt ein gemeinsames Protokoll zur Kommunikation fest. Dieser Protokollentwurf soll als Grundlage zur Realisierung von Authentifikationsanwendungen dienen. Der gesamte Authentifikationsprozeß und die notwendige Infrastruktur sind darin spezifiziert. Dadurch ist ein Zusammenwirken aller sich an diese Vorgaben haltenden Anwendungen sichergestellt. Das ebenfalls in dieser Diplomarbeit entwickelte Demonstrationssystem veranschaulicht dieses Konzept und weist dessen Funktionalität nach. Es wurde deutlich, daß mobile Geräte prinzipiell für ein solches System geeignet sind, obgleich für einen Einsatz in der Praxis noch einige Anpassungen - vor allem im Bereich der Hardware - von den Geräteherstellern notwendig sind. 204 KAPITEL 5. ZUSAMMENFASSUNG UND AUSBLICK Im Gegensatz zum Demonstrationssystem, welches auf Basis eines PalmOS-PDAs verwirklicht wurde, muß ein solches Authentifikationsystem heute unbedingt in Mobiltelefone integriert werden, um sich als Standard durchzusetzen. Mobiltelefone haben von allen intelligenten mobilen Geräten derzeit die größte Verbreitung in der Bevölkerung. Um ein solches System am Markt zu etablieren ist daher eine Realisierung auf dieser Plattform unumgänglich. Der Systementwurf ist jedoch so allgemein gehalten, daß er auf annähernd jeder Art von intelligenten mobilen Geräten umsetzbar ist. 5.2 Ausblick Ziel meiner Diplomarbeit war es, die Möglichkeiten zur Verwirklichung eines mobilen Authentifikationsystem zu untersuchen und zu diskutieren, sowie Realisierungsmöglichkeiten auszuarbeiten und daraus ein Demonstrationsystem zu entwickeln. Daher versteht sich diese Diplomarbeit nicht als vollständige, umfassende Ausarbeitung zu diesem Thema, sondern vielmehr als Grundlage für Erweiterungen und Ergänzungen. Folgende Ansatzpunkte wären dafür denkbar: Konzept: • Ausarbeitung der Applikationsmodelle Meine Arbeit spezifiziert nur den Authentifikationsprozeß. Der eindeutige Nachweis der Identität eines Benutzers ist jedoch nur die Voraussetzung für die folgenden Anwendungen. Erst die unterschiedlichen Anwendungen wie z.B. das bargeldlose Bezahlen, die Bedienung eines Geldautomaten, das Öffnen und Schließen der Haustüre, usw. machen das System für einen Anwender interessant. Damit auch hier unterschiedliche Geräte zusammenarbeiten können bedarf es einer genauen Spezifikation. Die in Abschnitt 2.9 vorgeschlagenen Applikationsmodelle zeigen nur einen groben Entwurf hierfür auf. Dieser Ansatz müsste genau ausgearbeitet und definiert werden. Dies würde die wichtigste Erweiterung zur Vervollständigung meines Konzept darstellen. • Untersuchung und Anpassung des Peer-Discovery-Prozesses auf Bluetooth Das mAuth Konzept ist - soweit wie möglich - unabhängig von der Hardware gehalten. Doch der Peer-Discovery Mechanismus muß sich zwangsläufig der Funktionen unterer Protokollschichten bedienen. In meiner Arbeit habe ich dazu nur das IrDA Protokoll untersucht. Da es jedoch absehbar ist, daß sich in naher Zukunft Bluetooth mehr und mehr als Übertragungstechnologie im Nahbereich 5.2. AUSBLICK 205 durchsetzen wird, wäre eine Betrachtung der betreffenden Funktionen dieses Protokolls sehr wünschenswert. • Untersuchung der Möglichkeiten und Risiken anwendungsspezifischer Chipkartenapplikationen auf der mAuth Karte Die im mAuth System verwendeten Chipkarten sollen die Möglichkeit bieten neben der mAuth-default Anwendung weitere anwendungsspezifische Applikationen unterbringen zu können. Betreiber von PoAs können damit z.B. ihre eigenen Schlüssel und kryptographischen Funktionen realisieren. Ein besonderes Augenmerk ist dabei jedoch auf die Sicherheit zu legen. So müssten die Risiken, ob sich Anwendungen gegenseitig beeinflussen oder gar Daten ausspähen könnten, untersucht werden. Es sollte ein System entwickelt werden, das nur die Installation von geprüften und berechtigten Anwendungen erlaubt, gleichzeitig den PoABetreibern aber auch genügend Freiheit läßt, ihre Anforderungen zu verwirklichen. Weiterhin müsste eine Schnittstelle definiert werden, um diese Anwendungen zu selektieren und ihre Funktionen ansprechen zu können. Dabei muß eine Rückkehr zu mAuth-default Applikation nach Beendigung der Kommunikation mit dem PoA sichergestellt sein. Demonstrationssystem: • Verbesserung der PalmOS-IrDA-Funktionen Die von mir entwickelten Funktionen zum Aufbau einer IrDA-Kommunikation, kapseln die low level“-Routinen der PalmOS-IrLibrary zu einem komfortable” ren Interface. Diese Schnittstelle funktionierte gegen Ende meiner Arbeit zwar zufriedenstellend, jedoch wären noch weitere Optimierungen wünschenswert. Da meiner Einschätzung nach ein Bedarf für eine einfach zu handhabende API zur IrDA-Programierung vorhanden, jedoch bisher nicht verfügbar ist, wäre eine derartige Realisierung ein sinnvolles Vorhaben. Denkbar wäre ein Satz von Funktionen, die den Programmierer von der Überprüfung des Aufrufstatus der IrLibrary Kommandos und der Auswertung der Callback Funktionen entbinden. Dies könnte in Form einer statischen und/oder dynamischen Bibliothek umgesetzt werden. • Lösung der Probleme beim Mehrkonsolenbetrieb am PoA-Server Bei einem Linux System sind in der Regel mehrere Textkonsolen vorhanden, zwischen denen vom Benutzer umgeschaltet werden kann. In der derzeitigen Version des PoA-Servers ist die Anmeldung via IrDA zwar fest an eine Konsole gebunden. Es ist jedoch beim Mehrkonsolenbetrieb nicht zwangsläufig sichergestellt, daß diese auch der gerade aktivierten Konsole entspricht. Damit wäre es denkbar, falls gerade eine normale“ - nicht mAuth taugliche - Textkonsole aktiv ist, ” daß ein Benutzer einen erfolgreichen mAuth Anmeldevorgang durchführt, jedoch aufgrund keiner erkennbaren Reaktion auf dem Bildschirm den Rechener wegen 206 KAPITEL 5. ZUSAMMENFASSUNG UND AUSBLICK einer vermuteten Fehlfunktion wieder verläßt. Er bleibt allerdings auf der verborgenen Konsole eingeloggt. Ein Dritter kann so, vorsätzlich oder zufällig, Zugriff auf dessen Daten und dessen Benutzerkennung erhalten. Auch wenn der Angreifer damit nicht die Möglichkeit hat, sich erneut unter falschem Namen anzumelden, kann er damit viel Schaden anrichten. Es wäre daher eine wichtige Erweiterung, den Demonstrations-Server für den Mehrkonsolenbetrieb tauglich zu machen. Dazu müsste sichergestellt werden, daß die mAuth Anmeldung immer an die gerade aktive Textkonsole gebunden ist, d.h. es müsste für die IrDA-Hardware ein ähnlicher Mechanismus implementiert werden, der auch Tastatur und Bildschirm immer an die gerade aktive Konsole bindet. • Realisierung weiterer Applikationsmodelle und PoA-Server Das Demonstrationssystem in meiner Arbeit realisiert nur das Applikationsmodell Rechnerzugang“. Um die universelle Funktionalität des mAuth Systems bes” ser zu verdeutlichen, wären verschiedene PoA-Server, die unterschiedliche Funktionen, wie z.B. das Auf- und Abschließen von Türen oder die Bedienung eines Geldautomaten simulieren, hilfreich. Der PTD-Client müßte im selben Zuge,um all diese Applikationen abzudecken, erweitert werden. • Realisierung eines Chipkarten-Lesegerätes als Visor SpringboardModul Die Anbindung eines externen Chipkarten-Lesegeräts ist für ein Demonstrationssystem zwar akzeptabel, für ein marktreifes Gerät jedoch keinesfalls. Doch auch zu Vorführzwecken wäre es schöner, wenn das Lesegerät in das mobile Gerät integriert wäre. Die Erweiterbarkeit der Handspring Visor PDAs bietet sich geradezu dafür an, dies zu realisieren. Die Abmessungen des Springboard-Modulschachts sind ausreichend um eine Chipkarten-Lesegerät-Mechanik samt zugehöriger Elektronik aufzunehmen. Allerdings müßte dafür ein passendes Gehäuse und eventuell auch eine eigene Controller-Elektronik entwickelt werden. Die Schaltungsentwicklung bezieht sich vor allem auf das Interface zur Springboard-Schnittstelle des Visors. Da bei der Ankopplung des Chipkarten-Lesegeräts über das SpringboardInterface der interne UART nicht belegt werden würde, wäre damit auch das Problem des gleichzeitigen Zugriffs auf Chipkarte und Infrarotschnittstelle gelöst. • Implementierung eines Demonstrationssystems auf einem Mobiltelefon Wie bereits erwähnt, muß das mAuth System, um praxistauglich zu werden, aufgrund der hohen Marktabdeckung unbedingt auf Mobiltelefonen implementiert werden. Ein Demonstrations-Client, der dies realisiert, wäre zur Veranschaulichung der Flexibilität des Konzepts von Vorteil. Sollte durch die Zusammenarbeit mit der Industrie ein Entwicklungssystem für ein Mobiltelefon zur Verfügung stehen, sollte dieses Vorhaben verwirklicht werden. 5.2. AUSBLICK 207 Das Konzept kann nur erfolgreich in die Praxis umgesetzt werden, wenn es die Unterstützung von großen Mobiltelefon- und PDA-Herstellern findet. Es macht langfristig nur Sinn, wenn sich im Bereich der mobilen Authentifikation ein Standard durchsetzt. Mehrere proprietäre Systeme schränken die Anwendbarkeit durch Inkompatibilitäten untereinander ein. Entscheidend dabei ist auch die Unterstützung und Akzeptanz von potentiellen PoABetreibern. Neben den persönlichen PoAs wie z.B. Haustürschließsystemen und Autos, sind vor allem die PoAs öffentlicher Diensteanbieter wie der Banken oder des Einzelhandels für den Anwender interessant. Die technische Machbarkeit eines mobilen Authentifikationsystems ist durch diese Arbeit nachgewiesen, die Umsetzbarkeit in die Praxis wird durch die Akzeptanz der Anwender und die Kooperationsbereitschaft der Industrie entschieden werden. 208 KAPITEL 5. ZUSAMMENFASSUNG UND AUSBLICK Literaturverzeichnis [Beu91] Albrecht Beutelspacher. Kryptologie. Vieweg & Sohn Verlagsgesellschaft, 2 edition, 1991. [Bü00] Matthias Bürstle. SCEZ Apllication Programmer’s Manual, 1.0 edition, 2000. [Dil98] Pat Dillon. The Next Small Thing. Fast Company, (15):97, June 1998. [Fos00] Lonnon R. Foster. Palm OS Programming Bible. IDG Books Worldwide, Inc., 2000. [How97] Andrew Howlett. GNU Pilot SDK Tutorial. Ottawa, Canada, June 1997. [jc-99a] Getting Started with Sm@rtcafé Professional Toolkit 1.1. Giesecke & Devrient GmbH, Prinzregentenstraße 159, Postfach 80 07 29, D-81607 München, 03/99 edition, 1999. [jc-99b] Java Card 2.1 Application Programming Interface. Sun Microsystems Inc., 901 San Antonio Road, Palo Alto, CA 94043 USA, June 1999. [jc-99c] Java Card 2.1 Runtime Environment (JCRE) Specification. Sun Microsystems Inc., 901 San Antonio Road, Palo Alto, CA 94043 USA, June 1999. [jc-99d] Sm@rtcafé 1.1 Card Reference Manual. Giesecke & Devrient GmbH, Prinzregentenstraße 159, Postfach 80 07 29, D-81607 München, 05/99 edition, 1999. [Kah] Christian Kahlo. Handspring Visor + Towitoko Chipdrive Micro + SCEZ (+ Lewis). http://gsho.fnordic.de/cdv/index.html. [ldv00] Kryptologie - Skript Version SS 2000. Lehrstuhl für Datenverarbeitung, 2000. [Mor99] Andrew G. Morgan. The Linux-PAM System Administrators´ Guide, November 1999. [Mor01] Andrew G. Morgan. The Linux-PAM Module Writers´ Guide, Jannuary 2001. [msi00a] mSign Business White Paper. http://www.msign.org, 2000. 209 210 LITERATURVERZEICHNIS [msi00b] mSign Protocol Specification. http://www.msign.org, October 2000. [MSK] Patrick J. Megowan, David W. Suvak, and Charles d. Knutson. IrDA Infrared Communications: An Overview. [MSK99] Pat Megowan, Dave Suvak, and Doug Kogan. IrDA Object Exchange Protocol IrOBEX - Version 1.2, March 1999. [odi00] odi. Sesam öffne dich! Flexible Authentifizierung mit PAM. Ct, (2):216– 219, 2000. [oEE99a] The Institute of Electrical and Electronics Engineers. Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications. 3 Park Avenue, New York, NY 10016-5997,USA, August 1999. [oEE99b] The Institute of Electrical and Electronics Engineers. Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: Highspeed Physical Layer in the 5 GHz Band. 3 Park Avenue, New York, NY 10016-5997,USA, August 1999. [oEE99c] The Institute of Electrical and Electronics Engineers. Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications: Higher-Speed Physical Layer Extension in the 2.4 GHz Band. 3 Park Avenue, New York, NY 10016-5997,USA, September 1999. [pal00] Palm OS Programmer’s Companion. Palm Inc., 5400 Bayfront Plaza, Santa Clara, CA 95052 USA, March 2000. [Pog99] David Pogue. Palm Programming: The Developer’s Guide. O’Reilly & Associates, Inc., 1999. [PQT98] John Petrilla, Raymond Quek, and Joe Tjanai. Serial Infrared Physical Layer Specification - Version 1.3, October 1998. [Rei01] Dschen Reinecke. Dschen Reineckes Infrarotport-Bauanleitung. http:// www.infrarotport.de/ir-modul.HTML, Mai 2001 2001. [SIG01a] Bluetooth SIG. Specification of Bluetooth System - Core, 1.1 edition, February 2001. [SIG01b] Bluetooth SIG. Specification of Bluetooth System - Profiles, 1.1 edition, February 2001. [SWN96] Andy Seaborne, Stuart Williams, and Frank Novak. Serial Infrared Link Management Protocol - Version 1.1, Jannuar 1996. [Tel99] Vishay Telefunken. TFDS4500 Serial Infrared Transceiver - Description, July 1999. LITERATURVERZEICHNIS 211 [WHN+ 96] Timothy Williams, Peter Hortensius, Frank Novak, Kevin Smith, David Suvak, and Mike Cremer. Serial Infrared Access Protocol (IrLAP)- Version 1.1, June 1996. 212 LITERATURVERZEICHNIS Abbildungsverzeichnis 1.1 Vielzahl spezialisierter Sicherheitstoken . . . . . . . . . . . . . . . . . . 5 1.2 Authentifizierung Grundschema . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Beispiele weit verbreiteter Mobiltelefone . . . . . . . . . . . . . . . . . 11 1.4 Beispiele von PalmOS-Geräten . . . . . . . . . . . . . . . . . . . . . . . 12 1.5 Beispiele von WindowsCE-Geräten . . . . . . . . . . . . . . . . . . . . 13 1.6 Beispiele von EPOC-Geräten . . . . . . . . . . . . . . . . . . . . . . . . 14 1.7 Beispiel einer Digitalkamera . . . . . . . . . . . . . . . . . . . . . . . . 14 1.8 IrDA Protokoll-Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.9 IEEE 802.11 Wireless LAN Protokoll-Stack . . . . . . . . . . . . . . . . 19 1.10 Bluetooth Protokoll Stack . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.11 Diffie-Hellmann Schlüsseltausch . . . . . . . . . . . . . . . . . . . . . . 30 1.12 Das Challenge-Response Verfahren . . . . . . . . . . . . . . . . . . . . 31 1.13 Eingliederung von OBEX in den IrDA and Bluetooth Protokollstack . . 37 1.14 OBEX - Bestandteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1.15 OBEX Request-Response Modell . . . . . . . . . . . . . . . . . . . . . 39 1.16 Aufbau von OBEX Paketen . . . . . . . . . . . . . . . . . . . . . . . . 39 1.17 Beispiel einer OBEX PUT Operation . . . . . . . . . . . . . . . . . . . 42 1.18 Aufbau von OBEX Headern . . . . . . . . . . . . . . . . . . . . . . . . 43 2.1 Zusammenführung vieler Token auf ein intelligentes System . . . . . . . 51 2.2 Systemübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.3 Der Authentifikationsablauf . . . . . . . . . . . . . . . . . . . . . . . . 55 2.4 Aufgaben des Trustcenters . . . . . . . . . . . . . . . . . . . . . . . . . 56 213 214 ABBILDUNGSVERZEICHNIS 2.5 Chipkarte - Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.6 Mehrere Applikationen auf einer mAuth Chipkarte . . . . . . . . . . . 59 2.7 Mobiles Gerät - Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.8 Point of Authentifikation - Aufgaben . . . . . . . . . . . . . . . . . . . 62 2.9 Ablauf der Zertifikatsausstellung . . . . . . . . . . . . . . . . . . . . . . 65 2.10 Authentifikations Ablauf . . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.11 Ablauf einer Neuanmeldung bei einem PoA . . . . . . . . . . . . . . . . 68 2.12 Peer Discovery Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 2.13 Peer Discovery-Ablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.14 Kommunikationsbeziehung zwischen Benutzer und Trustcenter . . . . . 72 2.15 Kommunikationsbeziehung zwischen Trustcenter und Chipkarte . . . . 73 2.16 Kommunikationsbeziehung zwischen Benutzer und mobilem Gerät . . . 74 2.17 Kommunikationsbeziehung zwischen mobilem Gerät und Chipkarte . . 74 2.18 Kommunikationsbeziehung zwischen PTD und PoA . . . . . . . . . . . 75 2.19 Kommunikationsbeziehung zwischen Benutzer und PoA . . . . . . . . . 76 2.20 Beispielhafter Kommunikationsablauf . . . . . . . . . . . . . . . . . . . 77 2.21 Unterschiedliche Darstellung der Dialoge . . . . . . . . . . . . . . . . . 80 2.22 Chipkarten Zustandsautomat . . . . . . . . . . . . . . . . . . . . . . . 107 2.23 PTD-Zustandsautomat . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 2.24 PoA-Zustandsautomat . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.1 IrDA physikalische Schnittstelle Schema (Quelle [PQT98]) . . . . . . . 121 3.2 Blockschaltbild des TFDS4500(Quelle [Tel99]) . . . . . . . . . . . . . . 122 3.3 Schaltplan IrDA-Adapter (Quelle [Rei01]) . . . . . . . . . . . . . . . . 122 3.4 PC-IrDA-Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 3.5 Bestandteile eines PAM Systems (Quelle [odi00]) 3.6 Schritte der Javacard Anwendungs-Erstellung (Quelle [jc-99a]) . . . . . 133 3.7 Die Sm@artcaf’e Entwicklungsoberfläche . . . . . . . . . . . . . . . . . 135 3.8 Eingliederung des Main Loaders in die Javacard Struktur (Quelle [jc-99d])136 3.9 Der Handspring Visor Platinum . . . . . . . . . . . . . . . . . . . . . . 139 . . . . . . . . . . . . 127 ABBILDUNGSVERZEICHNIS 215 3.10 Ablauf einer typischen PalmOS-Anwendung . . . . . . . . . . . . . . . 147 3.11 Start einer POSE Sitzung . . . . . . . . . . . . . . . . . . . . . . . . . 158 3.12 Emulation verschiedener Palm Modelle . . . . . . . . . . . . . . . . . . 160 3.13 Adapter zwischen seriellen Cradle und Chipdrive . . . . . . . . . . . . . 164 3.14 Aufbau bei Anschluß über serielles Cradle . . . . . . . . . . . . . . . . 165 3.15 Anschlußschema der Chipkarten-Leser Platine . . . . . . . . . . . . . . 166 3.16 Beschaltungsschema bei der direkte Kopplung zwischen Visor und Chipdrive 100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 3.17 Aufbau bei direktem Anschluß des Towitoko Chipdrive micro 100 and den Handspring Visor Platinum . . . . . . . . . . . . . . . . . . . . . . 168 4.1 Der Demonstrations PoA-Server . . . . . . . . . . . . . . . . . . . . . . 172 4.2 Der Demonstrations PTD-Client . . . . . . . . . . . . . . . . . . . . . . 176 4.3 Automat der MyIrConnect Funktion . . . . . . . . . . . . . . . . . . . 182 4.4 Bildschirmausgabe eines typischen Anmeldevorgangs an dem Demonstrations-PoA-Server . . . . . . . . . . . . . . . . . . . . . . . . 192 4.5 Palm Programmübersicht . . . . . . . . . . . . . . . . . . . . . . . . . 193 4.6 mAuth Client Start-Form . . . . . . . . . . . . . . . . . . . . . . . . . 193 4.7 mAuth Client PIN-Form . . . . . . . . . . . . . . . . . . . . . . . . . . 194 4.8 mAuth Client Haupt-Form . . . . . . . . . . . . . . . . . . . . . . . . . 195 4.9 Erfolgloses Peer Discovery . . . . . . . . . . . . . . . . . . . . . . . . . 195 4.10 PoA-Auswahlliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 4.11 PoA bereits belegt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 4.12 erfolgreiche Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . 197 4.13 erfolgreicher Loginvorgang . . . . . . . . . . . . . . . . . . . . . . . . . 197 4.14 Fehlermeldungen beim Kartenzugriff . . . . . . . . . . . . . . . . . . . 198 4.15 Fehlermeldungen der IrDA-Verbindung . . . . . . . . . . . . . . . . . . 199 4.16 Fehlermeldungen beim Authentifikationsprozeß . . . . . . . . . . . . . . 200 4.17 Fehlermeldungen in Zusammenhang mit der PIN Eingabe . . . . . . . . 201 216 ABBILDUNGSVERZEICHNIS Tabellenverzeichnis 1.1 Vergleich verschiedener mobiler Gräte . . . . . . . . . . . . . . . . . . . 15 1.2 Bestandteile eines Zertifikats . . . . . . . . . . . . . . . . . . . . . . . . 32 1.3 Befehls APDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 1.4 Antwort APDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 1.5 OBEX Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 1.6 OBEX Response-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 1.7 OBEX Connect Request . . . . . . . . . . . . . . . . . . . . . . . . . . 40 1.8 OBEX Connect Response . . . . . . . . . . . . . . . . . . . . . . . . . 41 1.9 TLV-Triplet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 1.10 Wichtige OBEX Header . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.1 Kommunikationsbeziehungen der Systemkomponenten . . . . . . . . . . 72 2.2 Chipkarten-Funktionen - Übersicht . . . . . . . . . . . . . . . . . . . . 78 2.3 Befehls APDU Format . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 2.4 Chipkarten CommandCodes . . . . . . . . . . . . . . . . . . . . . . . . 87 2.5 Kryptographische Algorithmen des mAuth Systems . . . . . . . . . . . 88 2.6 Schlüsseltypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 2.7 PIN Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 2.8 Key Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 2.9 KeyComponent-Triplet . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 2.10 KeyComponent-Triplet Tags . . . . . . . . . . . . . . . . . . . . . . . . 91 2.11 Antwort APDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 2.12 Capability Response Format . . . . . . . . . . . . . . . . . . . . . . . . 92 217 218 TABELLENVERZEICHNIS 2.13 CapTriplet Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 2.14 Bedeutung der Felder prKey und prCert . . . . . . . . . . . . . . . . . 93 2.15 Zertifikatsformat Format . . . . . . . . . . . . . . . . . . . . . . . . . . 94 2.16 Aufbau der User ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 2.17 Aufbau der Trustcenter ID . . . . . . . . . . . . . . . . . . . . . . . . . 95 2.18 public Key Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 2.19 Signatur Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 2.20 Hash Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 2.21 mAuth OBEX Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 2.22 mAuth-OBEX PeerDisc Request . . . . . . . . . . . . . . . . . . . . . . 99 2.23 mAuth-OBEX PeerDisc Response . . . . . . . . . . . . . . . . . . . . . 100 2.24 Erweiterte Headertypen . . . . . . . . . . . . . . . . . . . . . . . . . . 101 2.25 Header Parameter Triplet . . . . . . . . . . . . . . . . . . . . . . . . . 101 2.26 mAuthID Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 2.27 mAuth Triplet Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 2.28 mAuthChallenge Header . . . . . . . . . . . . . . . . . . . . . . . . . . 103 2.29 mAuthResponse Header . . . . . . . . . . . . . . . . . . . . . . . . . . 103 2.30 mAuthResponse Header . . . . . . . . . . . . . . . . . . . . . . . . . . 104 2.31 CapAuth Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 2.32 CapLink Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 2.33 CapApp Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 2.34 PeerDescription Header . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 2.35 PeerDescription Triplet Tags . . . . . . . . . . . . . . . . . . . . . . . . 106 2.36 Crypt Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 2.37 Kodierung von Blockbildungsarten . . . . . . . . . . . . . . . . . . . . 107 2.38 mAuth Application Identifier . . . . . . . . . . . . . . . . . . . . . . . 112 4.1 Übersicht über die implementierten Funktionen der mAuth Chipkarte . 171 4.2 Die vom Server unterstützten mAuthOBEX Befehle . . . . . . . . . . . 174 4.3 Die vom Server erkannten mAuthOBEX Header . . . . . . . . . . . . . 174