Upload
vuongcong
View
214
Download
0
Embed Size (px)
Citation preview
Technische Universitat Darmstadt
Fachbereich Informatik
Fachgebiet Theoretische Informatik - Kryptographie und Computeralgebra
Prof. Dr. Johannes Buchmann
Implementierung eines Selbstbedienungsclients fur
eine dezentral administrierbare Trustcenter-Losung
Diplomarbeit
von
Iskra Tomova
Studiengang: Informatik (Diplom)
Betreuer: Marcus Lippert (FlexSecure GmbH)
Dezember 2007
Hiermit versichere ich, die vorliegende Diplomarbeit selbststandig und nur mit den
angegebenen Quellen und Hilfsmitteln angefertigt zu haben. Alle Stellen, die aus den
Quellen entnommen wurden, sind als solche kenntlich gemacht worden. Diese Arbeit hat
in gleicher oder ahnlicher Form noch keiner Prufungsbehorde vorgelegen.
Darmstadt, den 21. Dezember 2007
Iskra Tomova
ii
Inhaltsverzeichnis
1 Einleitung 11.1 Aufgabenstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Gliederung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Grundlagen 42.1 ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Einbindung in Webseiten . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Zugriff auf ActiveX-Objekte . . . . . . . . . . . . . . . . . . . . . . 6
2.1.3 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.4 Unterstutzte Plattformen . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1 Einbindung in Webseiten . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.2 Kommunikation zwischen dem Applet und der Webseite . . . . . . 9
2.2.3 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.4 Unterstutzte Plattformen . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 ActiveX versus Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Standardisierte Kartenschnittstellen . . . . . . . . . . . . . . . . . . . . . . 14
2.4.1 PKCS#11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.2 PC/SC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.3 OCF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Ist- und Soll-Analyse 183.1 FlexiTrust Identity Management . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.1 Komponentenuberblick . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.2 Smartcardoperationen . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.3 Die OCX-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 FlexCardAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.1 Funktionale Anforderungen . . . . . . . . . . . . . . . . . . . . . . 26
3.2.2 Qualitatsanforderungen . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.3 Sicherheitsanforderungen . . . . . . . . . . . . . . . . . . . . . . . . 29
4 Designentstehung 314.1 Analyse des Frameworks SmartcardServices . . . . . . . . . . . . . . . . . 31
4.1.1 Implementierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.2 Kartenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
iii
Inhaltsverzeichnis
4.1.3 Referenzieren von Objekten auf der Karte . . . . . . . . . . . . . . 33
4.2 Analyse der Kartenschnittstellen . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.1 Anforderungen an die Umgebung . . . . . . . . . . . . . . . . . . . 35
4.2.2 Auswahl der Kartenschnittstelle . . . . . . . . . . . . . . . . . . . . 37
4.2.3 Auswahl des Kartenlesers . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.4 Auswahl der Chipkarte . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2.5 Die Verknupfung Kartenschnittstelle - Kartenoperation . . . . . . . 40
4.3 Kommunikation mit dem Enrollment-Server . . . . . . . . . . . . . . . . . 40
5 Technisches Konzept und Implementierung 435.1 Aufbau der Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 Die Benutzeroberflache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.1 Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.2 WizardPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2.3 WizardPanelDescriptor . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.3 Das Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1 Verwaltung der Kartenschnittstellendaten . . . . . . . . . . . . . . 49
5.3.2 Verwaltung der Kartenleserdaten . . . . . . . . . . . . . . . . . . . 53
5.3.3 Verwaltung der Smartcard-Daten . . . . . . . . . . . . . . . . . . . 53
5.4 Der Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.4.1 Personalisieren einer Smartcard . . . . . . . . . . . . . . . . . . . . 54
5.4.2 Entsperren der Smartcard . . . . . . . . . . . . . . . . . . . . . . . 58
5.4.3 Loschen der Karteninhalte . . . . . . . . . . . . . . . . . . . . . . . 58
5.4.4 PIN andern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.5 Schnittstelle zum Enrollment-Server . . . . . . . . . . . . . . . . . . . . . . 58
5.5.1 Allgemeine Applet-Parameter . . . . . . . . . . . . . . . . . . . . . 59
5.5.2 Datenaustausch bei der Smartcard-Personalisierung . . . . . . . . . 59
5.5.3 Zertifikat auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.6 Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.6.1 Allgemeine Parameter . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.6.2 Kartenlesertreiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.6.3 Referenzen auf Kartenobjekten . . . . . . . . . . . . . . . . . . . . 69
6 Zusammenfassung 72
7 Ausblick 747.1 Weiterentwicklung der Software . . . . . . . . . . . . . . . . . . . . . . . . 74
7.1.1 Hinzufugen neuer Karten . . . . . . . . . . . . . . . . . . . . . . . . 74
7.1.2 Hinzufugen neuer Kartenschnittstellen . . . . . . . . . . . . . . . . 75
7.1.3 Hinzufugen neuer Kartenleser . . . . . . . . . . . . . . . . . . . . . 76
7.1.4 Hinzufugen neuer Sprachen . . . . . . . . . . . . . . . . . . . . . . 76
7.1.5 Hinzufugen neuer Betriebssysteme . . . . . . . . . . . . . . . . . . . 77
7.1.6 Das Applet als eigenstandige Webanwendung . . . . . . . . . . . . 78
iv
Inhaltsverzeichnis
7.2 Verbesserungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
A Benutzeroberflache 79
Literaturverzeichnis 85
v
Abbildungsverzeichnis
2.1 Einbinden von ActiveX-Controls in Webseiten . . . . . . . . . . . . . . . . 5
2.2 Appletlebenszyklus (entnommen aus [Lud07]) . . . . . . . . . . . . . . . . 8
2.3 Der HTML-Tag <APPLET> zum Einbinden von Applets . . . . . . . . . 9
2.4 Zugriffsrechte von Applets auf Systemeigenschaften . . . . . . . . . . . . . 13
3.1 Komponenten von FlexiTrust und FlexiTrust Identity Management . . . . 21
4.1 Smartcardoperationen und die Kartenschnittstellenunterstutzung . . . . . . 34
5.1 Model-View-Controller-Pattern . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2 Der Aufbau des Wizards . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3 Ubersicht der WizardPanels . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4 Ubersicht der WizardPanelDescriptors . . . . . . . . . . . . . . . . . . . 47
5.5 Die Klasse WizardPanelDescriptor mit ihren Methoden . . . . . . . . . . 48
5.6 Die Klasse Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.7 Die Klasse Loader mit den wichtigsten Methoden . . . . . . . . . . . . . . 51
5.8 Die Klasse ObjectIdentifier mit den wichtigsten Methoden . . . . . . . 53
5.9 Die Klassen von Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.10 Die Action-Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.11 Datenaustausch zwischen dem Enrollment-Server, FlexCardAdmin und der
Smartcard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.12 Das HTML-Formular CertRequestForm und die JavaScript-Funktion
submitForm() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.13 Integration von FlexCardAdmin in der ES-Seite im Fall einer Kartenper-
sonalisierung (Teil 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.14 Integration von FlexCardAdmin in der ES-Seite im Fall einer Kartenper-
sonalisierung (Teil 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.15 Integration von FlexCardAdmin in der ES-Seite beim Loschen oder Ent-
sperren einer Smartcard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.16 Konfigurationsparameter zum Referenzieren der Objekte auf der Karte . . 71
A.1 Zwei der moglichen Varianten des ConfigurationPanels(1) . . . . . . . . 79
A.2 Zwei der moglichen Varianten des ConfigurationPanels(2) . . . . . . . . 80
A.3 Die zwei Varianten des PersonaliseCardPanels . . . . . . . . . . . . . . . 81
A.4 Die zwei Varianten vom DeleteCardPanel . . . . . . . . . . . . . . . . . . 82
A.5 Die zwei Varianten vom ResetPINPanel . . . . . . . . . . . . . . . . . . . 83
vi
Abbildungsverzeichnis
A.6 Die zwei Varianten vom ChangePINPanel . . . . . . . . . . . . . . . . . . . 84
vii
Kapitel 1
Einleitung
Heutzutage leben wir in einer Welt der Digitalisierung. Die Digitalisierung hat den Alltag
erfasst. In allen Bereichen wird die Datenverwaltung in Papierform durch die elektronische
Datenverarbeitung ersetzt.
Die Verfahren der Personenidentifizierung und der Willenserklarung haben sich auch
dementsprechend geandert. Normalerweise gilt der Personalausweis als Mittel der Identi-
fizierung und die Unterschrift ist ein anerkannter Vorgang zur Willensbekundung. Wenn
aber eine Person uber ein elektronisches Kommunikationsnetz wie das Internet identifi-
ziert werden soll oder eine unverwechselbare Willenserklarung abgeben mochte, sind diese
Mittel nicht anwendbar. Heute werden andere Losungen notig, die auch von Maschinen
interpretiert werden konnen. Man spricht von der digitalen Identitat. Drei Technologien
haben bei der Entstehung der digitalen Identitat eine entscheidende Rolle gespielt: die
Kryptographie, die Chipkartentechnologie und die Public-Key-Infrastrukturen (PKI).
Die digitale Identitat besteht aus Daten, welche die Nutzung von verschiedenen PKI-
Diensten wie Authentifikation, vertrauliche Kommunikation oder die digitale Unter-
zeichnung elektronischer Dokumente ermoglichen. Diese Daten konnen Zertifikate oder
Schlussel sein, die zur Authentifikation, zur Erstellung und Verifikation digitaler Signatu-
ren oder zur Ver- und Entschlusselung von Daten dienen. Da es sich um sensible Daten
handelt, die nicht jedem zuganglich sein durfen, mussen diese in einer sicheren Umge-
bung aufbewahrt werden. Chipkarten bieten das benotigte Sicherheitsniveau und werden
deswegen als Trager geheimer Informationen benutzt.
Die Chipkartentechnologie hat sich parallel zur Ausweitung der elektronischen Daten-
verarbeitung entwickelt und verspricht hohe Manipulationssicherheit und Zuverlassigkeit
sowie große Flexibilitat. Mit dem eingebauten Speicher ermoglicht die Chipkarte die
Aufbewahrung von Informationen, die maschinenlesbar sind. Sie bietet eine sichere
Umgebung fur Geheimnisse, da diese physikalisch von der Außenwelt abgeschottet sind
und nie die Karte verlassen. Außerdem sind Chipkarten klein und einfach zu benutzen,
so dass sie von jedem im taglichen Leben eingesetzt werden konnen.
Immer mehr Unternehmen setzen Chipkarten im Rahmen der Unternehmens-PKI ein. Die
Einfuhrung und die Administration der Chipkarten in einem relativ großen Unternehmen
bringt viel Aufwand mit sich, wenn die Chipkartenverwaltung ausschließlich zentral
erfolgt. Bei einer großen Anzahl von Mitarbeitern nimmt dies viel Zeit in Anspruch,
weil jede Chipkarte einzeln personalisiert werden muss. Wenn ein Mitarbeiter seine
1
KAPITEL 1. EINLEITUNG
Karte vergisst oder verliert oder diese nicht mehr funktioniert, ware es nicht akzeptabel,
dass er deswegen nicht weiter arbeiten kann. Es soll moglich sein, eine Ersatzkarte
einfach und schnell auszustellen. Ansonsten werden die Geschaftsprozesse verlangsamt.
All dies spricht dafur, dass nicht nur die Nutzung der Chipkarten und der durch ihnen
ermoglichten PKI-Dienste dezentral und selbstbedient erfolgen soll, sondern auch ihre
Administration. Dies umfasst:
• den Roll-out (Personalisierung und Verteilung) der Chipkarten
• die Verlangerung der Schlussel- und somit der Kartengultigkeit
• das Handling von Notfall- und Ersatzkarten
• die Verwendung von Vertreterkarten
• das Loschen der Karteninhalte
• das Key-Backup von Verschlusselungsschlusseln
Um diese Anforderungen zu erfullen werden Anwendungen benotigt, die die Administra-
tion der Chipkarten ermoglichen und von den PKI-Teilnehmern bedient werden konnen.
1.1 Aufgabenstellung
Im Rahmen dieser Diplomarbeit soll eine Client-Anwendung implementiert werden, im fol-
genden FlexCardAdmin genannt, die die oben beschriebenen Anforderungen erfullt. Diese
soll in der Lage sein, die Administrationsdienste unter Einbeziehung der Chipkarten der
Teilnehmer bereitzustellen. Ein solches System namens FlexiTrust Identity Management
wurde schon von FlexSecure [fle] zusammen mit der Firma Kobil [kob] entworfen. Die-
ses ist derzeit auf TCOS-2.0-Karten [PTT01] und CardOS-4.1-Karten [Sie] eingeschrankt
und verwendet eine OCX-Komponente, die in den Internet-Explorer installiert wird. Die
Losung ist also an Windows gebunden. Das Ziel ist, die bestehende OCX-Losung durch
eine neue zu ersetzen, die viel mehr Flexibilitat bietet.
Diese Arbeit soll alle Phasen der Entstehung der Software wiedergeben, angefangen von
der Analyse der Anforderungen und dem Konzeptaufbau bis zur Implementierung. Es soll
klar dargestellt werden welche Entscheidungen getroffen wurden und warum.
1.2 Gliederung
Der Inhalt dieser Arbeit ist in folgenden Kapiteln aufgeteilt:
Im Kapitel 2, Grundlagen, werden die Technologien vorgestellt, auf die die bestehende
und die neue Losung basieren. Durch den direkten Vergleich konnen die Nachteile der
bestehenden Losung besser hervorgehoben werden und die Notwendigkeit fur eine neue
Anwendung begrundet werden.
Im Kapitel 3, Ist- und Sollanalyse, wird die Funktionalitat von FlexiTrust Identity Mana-
2
KAPITEL 1. EINLEITUNG
gement beschrieben. Diese dient als Basis zur Spezifikation der Funktionalitat von Flex-
CardAdmin, die als Nachstes in diesem Kapitel beschrieben wird.
Das Kapitel 4, Designentstehung, beschreibt wie das Konzept der Anwendung entstanden
ist, welche Entscheidungen im Laufe der Zeit getroffen wurden und welche die Grunde
dafur gewesen sind.
Im Kapitel 5, Technisches Konzept und Implementierung, wird auf die technische Umset-
zung der Anforderungen eingegangen.
Das Kapitel 6, Zusammenfassung, beschreibt abschließend was durch diese Arbeit erreicht
wurde und gibt einen Uberblick uber das Endergebnis.
Im Kapitel 7, Ausblick, wird ein Blick in die Zukunft geworfen und erklart, wie die Soft-
ware weiterentwickelt werden kann und worauf man dabei achten soll.
3
Kapitel 2
Grundlagen
In diesem Kapitel werden die Technologien vorgestellt, die bei der Erstellung von Flex-
CardAdmin verwendet werden und auch diejenigen, auf die die bestehende Losung Fle-
xiTrust Idenitity Management basiert. Diese Grundlagen sollen zum besseren Verstandnis
der Arbeit dienen. Zuerst wird eine kurze Einfuhrung in der ActiveX-Technologie darge-
boten, die in FlexiTrust Identity Management eingesetzt wurde. Es werden die Nachteile
vorgestellt und die Grunde erlautert, warum die Notwendigkeit besteht, diese Losung
durch eine neue zu ersetzen. Anschließend werden Applets eingefuhrt. Am Ende des Ka-
pitels wird noch auf die standardisierten Kartenschnittstellen eingegangen, da die Imple-
mentierung von FlexCardAdmin auf diesen basiert.
2.1 ActiveX
ActiveX [acta] [actb] ist ein Technologiestandard, der von Microsoft erstmals Anfang 1996
vorgestellt wurde und ein allgemeines Standardverfahren zur Integration von ausfuhr-
barem Programmcode in Internet-Anwendungen, Webseiten oder generell in Microsoft-
orientierten Anwendungen beschreibt. Mit Hilfe von ActiveX werden die Anwendungen
in aktive Anwendugen verwandelt. ActiveX ist ein Uberbegriff fur verschiedene Software-
Komponenten. Alle diese Komponenten basieren auf dem sogenannten Component Object
Model (COM). Die ActiveX-Steuerelemente (oder ActiveX-Controls) sind vorkompilierte
wiederverwendbare Komponenten, die ahnlich wie Java-Applets, in Webseiten integriert
werden konnen. Somit werden die Webseiten dynamisch, was bei den statischen HTML-
Seiten nicht der Fall ist. Wenn die Webseite mit dem ActiveX-Control aufgerufen wird,
wird der ActiveX-Control aus dem Internet geladen (nachdem der Anwender bestatigt
hat, dass er das mochte) und auf dem Clientrechner installiert. Der Programmcode wird
clientseitig ausgefuhrt.
Da ActiveX-Controls nicht eigenstandig lauffahig sind, benotigen sie einen so genannten
ActiveX-Container, in den sie geladen und wo ihre Funktionen ausgefuhrt werden konnen.
Ein ActiveX-Container nimmt ActiveX-Objekte, wie beispielsweise ActiveX-Controls, auf
und kann ihre offentliche Eigenschaften (Objektvariablen) und Methoden (Objektfunktio-
nen) ansprechen. Wenn das Control in einer Webseite integriert wird, ist der Webbrowser
der Container.
4
KAPITEL 2. GRUNDLAGEN
ActiveX-Controls sind die Nachfolger der VBX- und OCX-Steuerelemente. Was heute als
ActiveX-Control bezeichnet wird, hieß fruher OLE-Control (OLE steht fur Object Linking
and Embedding). OLE-Controls wurden umstrukturiert und umbenannt und in ActiveX-
Controls umgewandelt. Die OLE-Controls mußten eine Vielzahl von Methoden implemen-
tieren. Dadurch wurden sie in der Regel sehr groß. Solange sie nur von Containern wie
Visual Basic geladen wurden, war dies nicht wichtig. Seitdem die Moglichkeit besteht, sie
uber das Internet in einen Browser zu laden, hat ihre Große enorm an Bedeutung gewon-
nen. Deswegen hat Microsoft den Namen geandert und ActiveX-Controls so konzipiert,
daß diese nur die Methoden zu implementieren brauchen, die sie auch tatsachlich benoti-
gen. Somit sind ActiveX-Controls auf das Wesentliche reduziert und verglichen mit ihren
Vorgangern bedeutend kleiner, sparsamer konzipiert und auf Geschwindigkeit und Große
optimiert.
2.1.1 Einbindung in Webseiten
ActiveX-Controls lassen sich mit dem <OBJECT>-HTML-Tag in Webseiten einbinden
(siehe Abbildung 2.1) und werden mit Microsofts Skriptsprachen (VB-Skript oder Java-
Script) mit Bedienungslogik versorgt. Der Anwender benotigt allerdings einen ActiveX-
fahigen Web-Browser.
<OBJECT id="cenroll1" codebase="xenroll.dll"classid="clsid:127698E4-E730-4E5C-A2b1-21490A70C8A1">
<PARAM name="[Bezeichner]" value="[Wert]"><PARAM name="[Bezeichner]" value="[Wert]">...
</OBJECT>
Abbildung 2.1: Einbinden von ActiveX-Controls in Webseiten
Das classid-Attribut ist die weltweit eindeutige ActiveX-ID fur das ActiveX-Control: ein
eindeutiger 128-Bit-Wert, der dem Ersteller eines Controls bei der Registrierung seines
Controls von einer Lizensierungsorganisation zugeteilt wird. Jedes Control muss norma-
lerweise die Klassen-ID spezifizieren, denn beim Laden des Controls vom Server wird die
Klassen-ID verwendet, um das Control zu authentifizieren. Es wird uberpruft, ob das
Control zertifiziert wurde und ob das Zertifikat noch gultig ist. Wenn dies nicht der Fall
ist, zeigt der Browser bei entsprechender Sicherheitseinstellung eine Warnung. Dann kann
der Benutzer entscheiden, ob die Installation fortgesetzt werden soll oder nicht.
Die Klassen-ID kann auch als Identifikation dienen, uber die von einer Skriptsprache aus
auf das Objekt zugegriffen werden kann. Ublicher ist jedoch der Zugriff uber die Namens-
ID.
Das codebase-Attribut wird dafur verwendet, das Control aus dem Netz zu laden, wenn
es auf dem lokalen System fehlt.
5
KAPITEL 2. GRUNDLAGEN
Fur jedes ActiveX-Control konnen beliebige zusatzliche Attribute mittels <PARAM>-
Tags definiert werden. Jedes Attribut besitzt einen Namen und einen Wert.
2.1.2 Zugriff auf ActiveX-Objekte
Grundsatzlich hat man aus einer Webseite heraus zwei Moglichkeiten fur den Zugriff auf
ein ActiveX-Control:
• mittels der Objektattribute definiert innerhalb der <PARAM>-Tags, deren genaue
Auspragung der Dokumentation jedes einzelnen ActiveX-Controls zu entnehmen ist.
• mittels Skript-Routinen, welche uber die ubliche Punktnotation ([Objekt ].[Eigen-
schaft/Methode]) auf die vom Control nach aussen dokumentierten Schnittstellen-
elemente zugreifen.
Der einfachste Zugriff auf ein Objekt funktioniert uber eine VBScript-Procedure mit dem
Namen <Objekt-ID> Click. Diese wird automatisch bei jedem Mausklick auf das Control
aufgerufen. Die flexiblere Zugriffsmoglichkeit verwendet Ereignisse und Eventhandler, die
eine VBScript-Routine aufrufen. Bei beiden Varianten kann innerhalb des VBScriptcodes
via des Namens vom Objekt und des jeweiligen Namens der Eigenschaft, jede Eigenschaft
des Objektes angesprochen werden. Dabei ist zu beachten, dass die Namen der Eigen-
schaften identisch zu den Angaben im <PARAM>-Bereich des <OBJECT>-Containers
sind.
2.1.3 Sicherheit
Wenn man ein ActiveX-Control auf seinem Rechner erlauben mochte, sollte man sicher
stellen, dass das Control signiert ist. Signierte ActiveX-Controls sollten immer bevorzugt
werden. Mit der Signatur kann der Anwender des Controls sicher stellen, dass das Con-
trol tatsachlich von dem angegebenen Entwickler stammt und daß es nachtraglich nicht
verandert wurde. Es gibt keine Garantie, dass die Ausfuhrung des Controls trotz Signatur
nicht schadlich fur den Client ist. Die Signatur zeigt nur, dass das ActiveX-Control bei
einer von Microsoft lizensierten Organisation registriert wurde (z.B. die Firma VeriSign).
Falls aber die Software Schaden auf dem Rechner einrichtet, haftet der Entwickler des
Controls. Ausserdem fuhren die Lizensierungsorganisationen mit hoher Wahrscheinlich-
keit verschiedene Uberprufungen durch, bevor eine Signatur ausgestellt wird. Somit wird
die signierte Software viel vertrauenswurdiger als diejenige, die nicht signiert ist.
Die tiefgreifenden Manipulationsmoglichkeiten auf fremden Rechnern uber ActiveX-
Controls aus einer Webseite heraus sind insbesondere aus Grunden der Sicherheit sehr
bedenklich. Viele Anwender lassen deswegen uberhaupt keine ActiveX-Steuerelemente bei
ihren Browsereinstellungen zu. Falls jedoch ein ActiveX-Control in einer Webseite erlaubt
ist und noch nicht auf dem Clientrechner installiert ist, wird es automatisch, nach Anfrage
oder uberhaupt nicht (je nach Sicherheitseinstellungen im Browser) auf dem Rechner
aus der angegebenen Quelle installiert. Somit bekommt das ActiveX-Control Zugriff auf
den Clientrechner und kann verschiedene Operationen ausfuhren, die auch schadlich
6
KAPITEL 2. GRUNDLAGEN
sein konnten. Die Rechte des Controls auf dem Clientrechner sind uneingeschrankt.
Es besteht keine Moglichkeit festzulegen, dass das Control nur bestimmte Operationen
ausfuhren darf und andere nicht. Das Control bekommt entweder alle Rechte oder keine.
Lauft das ActiveX-Programm erst einmal, dann ist sein Funktionsumfang in keiner Weise
eingeschrankt oder kontrollierbar. Es lauft mit allen Rechten des angemeldeten Benutzers
- ohne jede Einschrankung. Es ist demnach leicht, private oder sicherheitsrelevante Daten
auszulesen, zu loschen, zu manipulieren, den Rechner umzukonfigurieren, einen Virus
oder ein Trojanisches Pferd zu installieren.
2.1.4 Unterstutzte Plattformen
ActiveX-Controls wurden fur die Windows-Welt konzipiert. Im Laufe der Zeit wurden
einige Versuche gemacht, ActiveX-Controls auch in anderen Betriebssystemen ausfuhrbar
zu machen.
• ActiveX unter Macintosh: Ende 1996 veroffentlichte Microsoft ein Software Deve-
lopment Kit (SDK) fur die Erstellung von ActiveX-Controls auf Apple Macintosh-
Plattformen. Diese ActiveX-Controls liefen im Internet Explorer fur Macintosh-
Plattformen ab Version 2. Die Macintosh ActiveX-Implementierung beruht auf einer
vereinfachten COM-Bibliothek. ActiveX-Controls werden hier nicht als eigenstandi-
ger Prozess außerhalb des Web-Browsers ausgefuhrt, sondern verbleiben in der Web-
Browser-Umgebung. Der Einsatz von ActiveX-Controls ist hier demnach nicht so
gefahrlich wie unter Windows. Jedoch wird von Microsoft nur noch die Version 5
des Internet Explorers fur den Macintosh unterstutzt, eine Weiterentwicklung des
Web-Browsers fur Macintosh-Umgebungen ist nicht geplant.
• ActiveX unter Linux: Auch fur UNIX-Plattformen arbeitet Microsoft zusammen mit
mehreren anderen Herstellern an einer ActiveX-Unterstutzung. Unabhangig hiervon
bestehen auch Implementierungen unter dem UNIX-Derivat Linux, um ActiveX-
Controls ausfuhren zu konnen. Fur den unter Linux lauffahigen Web-Browser Kon-
queror gibt es Bibliotheken, mit denen ActiveX-Controls ausgefuhrt werden konnen.
Da durch diese der Zugriff auf die lokalen Daten moglich ist, ist auch hier ein großes
Gefahrenpotential zu sehen.
Derzeit ist der Internet Explorer von Microsoft ab Version 3.0 der einzige Browser, der oh-
ne Zusatz als ActiveX-Container eingesetzt werden kann. Der Netscape Navigator, Mozilla
und der Konqueror konnen durch ein entsprechendes ActiveX-Plug-In erweitert werden,
damit auch hier ActiveX-Controls genutzt werden konnen.
2.2 Applet
Die folgende Beschreibung von Applets wurde aus [app] und [Lud07] entnommen und
hier zusammengefasst. Applets sind ausfuhrbare Java-Programme, die in eine Webseite
7
KAPITEL 2. GRUNDLAGEN
Abbildung 2.2: Appletlebenszyklus (entnommen aus [Lud07])
eingebettet werden. Wenn die Webseite aufgerufen wird, wird das dort enthaltene Applet
automatisch gestartet. Der Programmcode des Applets wird dabei aus dem Internet
geladen und auf dem lokalen Rechner ausgefuhrt.
Jedes Applet muss von der Klasse java.applet.Applet erben, die die Schnittstelle
zwischen dem Applet und dem Browser bereitstellt. Die meisten Applets haben eine
graphische Oberflache, die die Interaktion mit dem Benutzer ermoglicht. Fur die Applets,
die diese GUI mit Swing-Komponenten aufbauen, bietet das Swing-Framework eine
spezielle Unterklasse von java.applet.Applet, namlich javax.swing.JApplet, die als
Oberklasse solcher Applets benutzt werden soll.
Da Applets im Browser laufen, wird das Appletverhalten vom Browser gesteuert. Der
Browser ruft zu bestimmten Zeitpunkten der Appletausfuhrung verschiedene Methoden
der Klasse Applet auf und bestimmt somit dessen Lebenszyklus. Diese Methoden sind
(siehe auch Abbildung 2.2):
• init(): wird beim Laden des Applets aufgerufen, um das Applet zu initialisieren.
• start(): wird automatisch nach jedem Aufruf von init() sowie bei jedem erneuten
Besuch der Webseite mit dem Applet aufgerufen.
• stop(): wird automatisch aufgerufen, wenn der Benutzer die Webseite mit dem
Applet verlasst, um eine andere Webseite aufzumachen, oder wenn der Browser ge-
schlossen wird. stop() halt die Appletausfuhrung an, so dass keine Systemresourcen
verbraucht werden, wenn das Applet gerade nicht verwendet wird.
• destroy(): wird aufgerufen, wenn der Browser geschlossen wird (nach jedem Aufruf
von stop()).
Die Methoden init() und destroy() werden ein einziges Mal wahrend des Lebenszyklus
des Applets aufgerufen; die anderen zwei Methoden konnen mehrfach aufgerufen werden.
Alle vier Methoden konnen von den Unterklassen von Applet uberschrieben werden, um
das Appletverhalten zu spezifizieren.
8
KAPITEL 2. GRUNDLAGEN
2.2.1 Einbindung in Webseiten
Applets lassen sich mit dem <APPLET>-HTML-Tag in Webseiten einbinden (siehe Ab-
bildung 2.3). Dieser Tag hat folgende Attribute, die spezifiziert werden mussen:
• code: hier muss der Name der Applet-Klasse (inklusiv Paketbezeichnung) angegeben
werden, z.B. de.mypackage.MyApplet.class.
• codebase: hier wird die URL angegeben, von der das Applet heruntergeladen werden
kann, wenn noch nicht auf dem Clientrechner vorhanden.
• archive: hier mussen alle jar-Bibliotheken aufgelistet werden, die das Applet
braucht.
• name: hier wird der Name des Applets spezifiziert, mit dem das Applet innerhalb
der HTML-Seite angesprochen werden kann.
• width: hier wird die Breite der Applet-GUI in der Webseite festgelegt.
• height: hier wird die Hohe der Applet-GUI in der Webseite festgelegt.
Fur jedes Applet konnen zusatzliche Attribute mittels des <PARAM>-Tag definiert wer-
den. Jedes Attribut besitzt einen Namen und einen Wert.
<APPLET code="’MyApplet.class"’codebase="’http://www.tu-darmstadt.de/applets"’archive="myapplet1.jar,myapplet2.jar"name="’MyApplet"’width="400" height="400">
<PARAM name="color" value="0xFF0000">...
</APPLET>
Abbildung 2.3: Der HTML-Tag <APPLET> zum Einbinden von Applets
2.2.2 Kommunikation zwischen dem Applet und der Webseite
Oft ist es notwendig, dass das Applet Daten mit der HTML-Seite austauscht. Java ist in
der Hinsicht nicht flexibel genug und bietet nicht viele Moglichkeiten an. Skriptsprachen
wie JavaScript dagegen wurden dafur entwickelt, auf die einzelnen HTML-Elemente einer
Webseite zuzugreifen und verschiedene Operationen darauf auszufuhren. Wenn man Java
und JavaScript kombiniert wird die Interaktion zwischen dem Applet und der Websei-
te moglich und die Appletfahigkeiten werden erweitert [Mor97]. Um die Kommunikation
zwischen Java und JavaScript zu ermoglichen, hat Netscape die LiveConnect-Technologie
[liv] entwickelt. Mit LiveConnect wird es moglich, uber JavaScript auf Java-Objekte, -
Methoden und -Variablen zuzugreifen und umgekehrt konnen JavaScript-Funktionen von
einer Java-Anwendung aufgerufen werden.
Mit JavaScript kann das Appletverhalten beeinflusst werden. Das Applet kann dazu ge-
bracht werden, auf verschiedene Ereignisse in der HTML-Seite zu reagieren, indem die
9
KAPITEL 2. GRUNDLAGEN
Appletmethoden aufgerufen werden. JavaScript kann auf alle offentlichen Methoden oder
Attribute des Applets zugreifen. Dafur mussen diese offentlichen Methoden und Attribute
des Applets dem Entwickler bekannt sein. Im <APPLET>-Tag muss außerdem der Ap-
pletname spezifiziert werden, weil das Applet uber seinen Namen angesprochen wird. Die
Funktionen oder Attribute des Applets konnen ebenso uber den Appletnamen aufgerufen
bzw. abgefragt werden. Um eine Applet-Methode aufzurufen wird folgende Syntax ver-
wendet: document.appletName.methodName(arg1,..., argx). Im Folgenden wird ge-
zeigt wie ein Applet durch das Anklicken von Buttons auf der Webseite gestartet und
angehalten werden kann.
<APPLET code="de.flexsecure.flexiTrust.flexcardadmin.FlexCardApplet.class"name="FlexCardApplet" width=60 height=60>
</APPLET><FORM>
<INPUT type="button" value="Start" onClick="document.FlexCardApplet.start()"><INPUT type="button" value="Stop" onClick="document.FlexCardApplet.stop()">
</FORM>
Fur die Kommunikation von Java zu JavaScript stellt Netscape drei Java-Klassen zur
Verfugung:
• netscape.javascript.JSObject
• netscape.javascript.JSException
• netscape.plugin.Plugin
Will man von Java aus auf ein Objekt einer JavaScript-Anwendung zugreifen, so verhullt
JavaScript dieses Objekt in einer Instanz der Klasse netscape.javascript.JSObject.
Jede Instanz von JSObject reprasentiert eine DOM-Entitat in der JavaScript-Welt.
Als Erstes braucht man eine Referenz auf das JavaScript-Window-Objekt, welches das
Applet beinhaltet. Die statische JSObject-Methode getWindow(Applet applet) liefert
diese Referenz, verhullt in einer JSObject-Instanz. Nachdem man diese Referenz bekom-
men hat, kann das Applet in die Webseite navigieren und mit der Methode getMember()
auf einzelne Elemente zugreifen. getMember() liefert das nachste Element in der Hier-
archie der HTML-Elemente. Das oberste Element in dieser Hierarchie ist das window-
Objekt. Seine Kinder sind document, location und history. Die Kinder von document
sind Formulare, Links und Applets. Mit der Methode getMember() wird diese Hierarchie
gelesen. Im Folgenden wird gezeigt wie die vorgestellten Methoden verwendet werden, um
bestimmte HTML-Elemente auszulesen.
import netscape.javascript.*;import java.applet.*;
class MyApplet extends Applet {public void init() {
JSObject win = JSObject.getWindow(this);JSObject doc = (JSObject) win.getMember("document");
10
KAPITEL 2. GRUNDLAGEN
JSObject requestForm = (JSObject) doc.getMember("request");JSObject nameField = (JSObject) requestForm.getMember("name");JSOBject numberField = (JSObject) requestForm.getMember("number");String nameValue = (String) nameField.getMember("value");Float numberValue = (Float) numberField.getMember("value");
}}
In dem Beispiel wird der Inhalt der zwei Eingabefelder name und number im Formular
request ausgelesen.
Um JavaScript-Werte zu andern, gibt es die Methode setMember(String elementName,
String value). Die Methode bekommt den Namen des Elements, dessen Wert geandert
werden soll, und den neuen Wert ubergeben.
import netscape.javascript.*;import java.applet.*;
class MyApplet extends Applet {public void init() {
JSObject win = JSObject.getWindow(this);JSObject doc = (JSObject) win.getMember("document");JSObject requestForm = (JSObject) doc.getMember("request");JSObject nameField = (JSObject) requestForm.getMember("name");nameField.setMember("value","MyName");
}}
JSObject bietet die zwei Methoden call(String methodName, Object[] params) und
eval(String expression) an, mit denen JavaScript-Methoden vom Applet heraus auf-
gerufen werden konnen. Bei der ersten Methode werden der JavaScript-Methodenname
und ihre Argumente separat ubergeben. Die zweite Methode bekommt den Methodenauf-
ruf als String ubergeben. Dies kann z.B. so aussehen:
eval("document.writeln(\"Hier wird ein Text angezeigt.\");")
Aus Sicherheitsgrunden ist die Benutzung von JSObject standardmaßig nicht zugelassen.
Um JSObject verwenden zu konnen, muss das Applet mit dem zusatzlichen Attribut
MAYSCRIPT versehen werden. Wenn dieses Attribut im Applet fehlt, ist die Benutzung
von JSObject nicht moglich.
<APPLET code="MyApplet.class" width=50 height=50 NAME="Preview" MAYSCRIPT>
2.2.3 Sicherheit
Ahnlich wie die ActiveX-Controls, konnten Applets auf dem Clientrechner Schaden an-
richten. Sie werden uber das Internet geladen und gestartet und konnten verwendet wer-
den, um Daten auf dem lokalen Rechner zu verandern, loschen oder zu lesen, ohne dass
11
KAPITEL 2. GRUNDLAGEN
der Betrachter der Webseite, die das Applet enthalt, dies merkt. Um das zu verhindern
und die sichere Ausfuhrung von Applets zu ermoglichen, werden die Rechte des Applets
beschrankt. Dazu wird das Applet in einem speziellen Bereich ausgefuhrt, in dem nur
bestimmte Operationen zugelassen sind. Dieser Bereich wird als Sandkasten oder Sand-
box bezeichnet. Versucht das Applet Operationen außerhalb der Sandbox auszufuhren,
wird dies erkannt und unterbunden. Normalerweise gelten folgende Einschrankungen fur
Applets:
• Es durfen keine Operationen auf Dateien wie Lesen, Schreiben oder Umbenennen
durchgefuhrt werden. Außerdem durfen keine neuen Dateien angelegt werden und
auch nicht gepruft werden, ob eine bestimmte Datei existiert.
• Es durfen keine externen Programme auf dem Clientrechner gestartet werden. Daher
ist der Aufruf der Methoden System.exec() und Runtime.exec() verboten.
• Ein Applet darf nicht auf alle Systemeigenschaften oder Umgebungsvariablen zu-
greifen. Abbildung 2.4 gibt eine Ubersicht.
• Netzwerkverbindungen werden nur zu dem Rechner erlaubt, von dem das Applet
stammt. Der Kontakt zu anderen Rechnern oder zu Applets, die von einem anderen
Rechner stammen, ist verboten.
• Systemthreads konnen von Applets weder gestartet, gestoppt, unterbrochen, noch
kann ihre Prioritat geandert werden. Manipulationen an den Threads in der eigenen
virtuellen Maschine, in der das Applet lauft, sind jedoch moglich.
• Der Aufruf nativer Methoden ist verboten. Eine Ausnahme stellen einige Methoden
des JDK dar.
• Applets durfen keine Bibliotheken, beispielsweise mittels System.loadLibrary(),
laden.
Durch diese restriktive Politik wird auch gutartigen Applets die Moglichkeit genommen,
ausgefuhrt zu werden. Deswegen wurden die Sicherheitsmaßnahmen bei Applets so an-
gepasst, dass bestimmte Applets mehr Rechte bekommen, wenn sie entweder digital si-
gniert sind und vom Benutzer als vertrauenswurdig eingestuft wurden, oder lokal auf dem
Rechner in einem CLASSPATH-Verzeichnis installiert sind. Fur solche Applets sind die
Einschrankungen aufgehoben.
Damit ein Java-Applet digital signiert werden kann, benotigt der Entwickler ein Zer-
tifikat. Das Zertifikat kann bei einem Zertifikatsaussteller erworben werden. Es enthalt
Signaturprufdaten, die Aufschluss uber den Inhaber des Zertifikats (hier: den Entwickler)
geben, sowie eine digitale Signatur der Zertifizierungsstelle. Letztere ist die Unterschrift
der Zertifizierungsstelle und stellt sicher, dass das Zertifikat echt ist. Mit diesem Zertifikat
werden die entwickelten Java-Applets vom Entwickler signiert und in ein Archiv abgelegt.
Das Archiv wird auf dem Webserver des Anbieters abgelegt und in einer HTML-Seite re-
ferenziert. Fordert der Web-Browser des Anwenders eine solche HTML-Seite an, so wird
zunachst die digitale Signatur des Archivs gepruft. Anschließend erscheint eine Meldung
im Web-Browser, die die Signaturprufdaten des Zertifikats anzeigt und erfragt, ob der
Anwender dem Applet mehr Rechte erteilen will. Bestatigt der Anwender diese Meldung
12
KAPITEL 2. GRUNDLAGEN
Systemeigenschaft Beschreibung Kann von Ap-plets ausgele-sen werden?
file.separator Dateienseparator (z.B.”/“) ja
java.class.version Version der Java-Klasse jajava.vendor Java-Vendor-spezifischer String jajava.vendor.url URL des Java-Vendors jajava.version Java-Version jaline.separator Zeilenseparator jaos.arch Architektur des Betriebssystems jaos.name Name des Betriebssystems japath.separator Pfadseparator (z.B.
”:“) ja
java.class.path Java-Classpath neinjava.home Verzeichnis mit der Java-
Installationnein
user.dir Arbeitsverzeichnis des Benutzers neinuser.home Home-Verzeichnis des Benutzers neinuser.name Loginname das Benutzers nein
Abbildung 2.4: Zugriffsrechte von Applets auf Systemeigenschaften
positiv, wird das digital signierte Java-Applet mit den entsprechend eingeforderten Rech-
ten im Web-Browser ausgefuhrt.
2.2.4 Unterstutzte Plattformen
Webseiten mit Applets konnen mit einem Java-fahigen Browser betrachtet werden. Alle
aktuellen Browser verfugen uber eine Java-Virtual-Machine, sind Java-fahig und somit in
der Lage, Java-Applets auszufuhren.
2.3 ActiveX versus Applets
Wenn man sich zwischen ActiveX und Applets entscheiden soll, spricht einiges fur die
Applets. Ihre Hauptvorteile sind:
• Applets sind plattformunabhangig. Da sie in Java geschrieben werden, sind sie in
jedem Betriebssystem ausfuhrbar. ActiveX-Controls dagegen laufen nur unter Win-
dows.
• Applets werden von mehreren Browsern unterstutzt. Der einzige Browser dagegen,
der ohne Zusatz als ActiveX-Container eingesetzt werden kann, ist Internet Ex-
plorer. Die restlichen Browser mussen zuerst durch einen ActiveX-Plugin erweitert
werden.
13
KAPITEL 2. GRUNDLAGEN
• Die Sicherheitsmaßnahmen bei Applets sind viel besser. Applets werden in einer
Sandbox ausgefuhrt, in der nur bestimmte Operationen zugelassen sind. Mochte
man einem Applet mehr Rechte vergeben, kann man das tun, indem dieses signiert
oder lokal auf dem Rechner in einem CLASSPATH-Verzeichnis installiert wird. Bei
ActiveX-Controls dagegen hat man diese Kontrolle uber die zulassigen Operationen
nicht. Das Control bekommt entweder alle Rechte oder keine, unabhangig davon ob
es signiert ist oder nicht. Damit erweist sich die Systemsicherheit als großes ActiveX-
Problem. ActiveX-Komponenten haben vollen Zugriff auf das System und empfindli-
che Speicherbereiche. So bietet sich eine Angriffsflache fur Viren und Online-Spione.
Der einzige Schutzmechanismus ist eine Herkunftskennung. Anhand eines Zertifikats
sollen sich Programmierer von ActiveX-Controls ausweisen und erklaren, dass ihr
Code bedenkenlos laufen kann.
Sicherlich hat auch ActiveX gewisse Vorteile:
• In Sachen Geschwindigkeit haben ActiveX-Controls ihren Java-Konkurrenten eini-
ges voraus. Die Unabhangigkeit vom Betriebssystem und Prozessor erkauft sich Java
mit Geschwindigkeitsverlusten. Die Ubersetzung des Java-Zwischencodes in der Vir-
tual Machine kostet Zeit. Zudem kann Java wegen der Sicherheitsbeschrankungen
nicht alle Raffinessen eines Betriebssystems oder Prozessors ausnutzen. Bei ActiveX
verzichtete man auf den Zwischencode, da es ActiveX nur fur Windows gibt. Die
Controls sind bereits in Maschinensprache fur Intel und Windows ubersetzt und
somit auf Geschwindigkeit und Große optimiert.
Alles in allem haben beide Technologien Vor- und Nachteile. Bevor man die Entscheidung
trifft, welche von beiden Technologien einzusetzen, muss man auch den konkreten Anwen-
dungsfall analysieren. In bestimmten Fallen wird es besser sein, ActiveX zu verwenden,
in anderen werden Applets die geeignetere Wahl sein. Wenn man aber auf die Sicherheit
und die Plattformunabhangigkeit Wert legt, sind Applets zu bevorzugen.
2.4 Standardisierte Kartenschnittstellen
Wenn Smartcards als Trager der digitalen Identitat im Rahmen von Public-Key-
Infrastrukturen eingesetzt werden, werden sie im Normalfall uber einen Kartenleser mit
einem Rechner verbunden und mithilfe von Software, die auf diesem Rechner installiert
ist, verwaltet. Im Laufe der Zeit sind viele Anwendungen entstanden, die diese Interaktion
ermoglichen und man hat gemerkt, dass eine einheitliche Basis definiert werden muss. In
Folge dessen wurden Standards entwickelt, die die Schnittstelle zwischen Smartcards und
PCs spezifizieren. Drei davon werden hier vorgestellt, da diese der Implementierung von
FlexCardAdmin zu Grunde liegen.
14
KAPITEL 2. GRUNDLAGEN
2.4.1 PKCS#11
Der Public Key Cryptography Standard 11 (PKCS#11) [RSA04] ist eine der Spezifikatio-
nen von der Familie von Spezifikationen Public Key Cryptography Standards (PKCS), die
von RSA Laboratories spezifiziert wurde, um die Kompatibilitat und Interoperabilitat
zwischen verschiedenen kryptographischen Anwendungen zu erreichen. PKCS#11,
auch”Cryptoki“ (Abkurzung fur cryptographic token interface) genannt, stellt eine
C-Schnittstelle zu Geraten zur Verfugung, die kryptographische Daten aufbewahren
oder kryptographische Funktionen ausfuhren. Diese konnen zum Beispiel Smartcards,
USB-Tokens oder Handheld-PCs sein. Alle solche kryptographische Gerate werden als
ein sogenanntes kryptographisches Token betrachtet. Kartenleser dagegen werden als
sogenannte Slots aufgefasst. Das Ziel von PKCS#11 ist, die Unabhangigkeit der Anwen-
dungen von der verwendeten Hardware zu erreichen. Durch das Token-Konzept werden
alle Gerate als logisch gleich gesehen. PKCS#11 ist also eine High-Level-Schnittstelle,
die vom Smartcardbetriebssystem und Smartcardkommandos abstrahiert (im Fall, dass
das verwendete Token eine Smartcard ist). Dieses hohe Abstraktionsniveau ist ein
wesentlicher Vorteil von PKCS#11, da man lediglich zu den verwendeten Kartenlesern
und Kartentypen passende PKCS#11-Treiber braucht, die Schnittstelle aber immer
gleich bleibt.
Auf der anderen Seite kann die hohe Unabhangigkeit auch als Nachteil interpetiert
werden, weil fur den Benutzer viele Aspekte transparent und unbeeinflussbar bleiben.
Man wird mit den Einschrankungen von PKCS#11 konfrontiert.
In der PKCS#11-Spezifikation ist keine PIN und keine PUK vorgesehen. Stattdessen
unterscheidet man zwischen den zwei Benutzerrollen Security Officer (SO) und User,
die jeweils ein Passwort zum Einloggen auf die Karte haben. Die Rolle vom Security
Officer ist, das Token zu initialisieren und das Userpasswort (PIN) zu setzen. Nur wenn
der Security Officer eingeloggt ist, kann das Passwort vom User gesetzt werden. Der
User darf sich erst dann auf die Karte einloggen, nachdem sein Passwort vom Security
Officer gesetzt wurde. Das Passwort des Security Officers kann man also als die PUK
der Karte betrachten und das Userpasswort - als die PIN. Nur beim Kenntnis der
PUK kann die PIN gesetzt werden. Das fehlende PIN / PUK-Konzept bereitet einige
Schwierigkeiten, weil nicht alle benotigten PIN-/PUK-Operationen in den bekannten
PKCS#11-Implementierungen verfugbar sind. Es ist zum Beispiel nicht moglich, die
PIN und die PUK der Karte zu loschen. Dadurch kann eine Smartcard nicht vollstandig
geloscht und nicht erneut personalisiert werden.
Um die C-Funktionen der PKCS#11-Schnittstelle aus einer Java-Umgebung aufru-
fen zu konnen, wurden verschiedene Java-Wrapper entwickelt. In dieser Arbeit wird
der Java-PKCS#11-Provider [Cor00] verwendet, der als Ergebnis der Diplomarbeit von
Vlad Koroama an der TU Darmstadt entstanden ist. Java-PKCS#11-Provider stellt eine
objektorientierte Schnittstelle zu Funktionen einer nativen PKCS#11-Bibliothek zur
Verfugung.
15
KAPITEL 2. GRUNDLAGEN
2.4.2 PC/SC
Der Personal Computer/Smartcard (PC/SC) Standard wurde von PC/SC Workgroup
entwickelt und spezifiziert eine C-Schnittstelle zur Interaktion zwischen Computersyste-
men und Chipkarten. Bei PC/SC handelt es sich um eine Low-Level-Schnittstelle, wel-
che die Ubermittlung von APDUs zur Smartcard ubernimmt. Einerseits bedeutet dies,
dass man jeweils eine Implementierung pro Kartentyp benotigt; der Entwickler muss al-
so alle Details des Kartenbetriebssystems verstehen und die Entwicklungszeiten sind im
Vergleich zu PKCS#11 wesentlich langer. Außerdem besteht die Gefahr, dass mit jedem
Kartenbetriebssystemupdate die Applikation angepasst werden muss, weil benutzte Funk-
tionen nicht mehr verfugbar sind. Andererseits eroffnet die APDU-Welt die Moglichkeit,
die Smartcard-Funktionalitat in vollem Umfang auszunutzen und Funktionen zu imple-
mentieren, die der eigenen Bedurfnissen und Anforderungen genau entsprechen. Um die
PC/SC-Schnittstelle zu benutzen, muss ein PC/SC-Treiber fur den Kartenleser installiert
werden. Da der Standard weltweit hohe Verbreitung kennt, sind PC/SC-Treiber fur die
meisten Lesegerate verfugbar.
Um die PC/SC-Bibliothek aus einer Java-Umgebung anzusprechen, kann ein Java-
Wrapper fur PC/SC von IBM (JPC/SC) [jpc] verwendet werden.
PC/SC wurde ursprunglich fur Windows konzipiert, kann aber auf verschiedenen Platt-
formen eingesetzt werden. Von JPC/SC werden Windows- und Linux-Umgebungen un-
terstutzt. Das Projekt MUSCLE [mus] bietet PC/SC-Kartenlesertreiber fur Linux, Solaris
und MacOS.
2.4.3 OCF
Die folgende Beschreibung wurde aus [Dra06] entnommen:
OpenCard Framework (OCF) wurde von OpenCard Consortium ins Leben
gerufen und ist ein Java-basiertes Framework zur Entwicklung von Smartcard-
Anwendungen. Das Framework ist auf jeder Java-fahigen Plattform einsetzbar
und ist damit als solches unabhangig vom Betriebssystem des PC. Das ist ein
großer Vorteil von OCF. Wie PC/SC, braucht OCF jeweils eine Bibliothek
vom Smartcard-Hersteller und vom Hersteller des Kartenlesers (als CardSer-
vices und CardTerminals bezeichnet). Die Installation ist aber im Gegensatz
zu PC/SC nicht trivial, weil zusatzlich zu den Bibliotheken noch das Frame-
work selbst installiert werden muss.
OCF bietet eine objekt-orientierte Smartcard-Schnittstelle, die Veranderungen
in Hardware oder im Smartcard-Betriebssystem vor der Anwendung verbirgt.
Das Framework definiert die Schnittstelle fur die Anwendung als sogenannte
CardServices. Die Implementierung eines CardService ist fur die Anwendung
transparent und kann jeder Zeit ausgetauscht werden.
OCF hat sich zum Standard im Java-Umfeld etabliert, es ist gut dokumen-
tiert und von umfangreichen Tutorials begleitet. OCF-Treiber existieren al-
16
KAPITEL 2. GRUNDLAGEN
lerdings nur fur wenige Kartenleser. Aus diesem Grund wurde ein OCF-
Wrapper fur PC/SC (ein PC/SC-CardTerminal [ocf]) entwickelt, so dass
das OCF-Framework im sogenannten”PassThruModus“ mit jedem PC/SC-
Kartenlesertreiber benutzt werden kann. In diesem Fall agiert das OCF-
Framework als Java-Wrapper fur die PC/SC-Schnittstelle, d.h. man kann aus
einer Java-Umgebung APDUs an die Smartcard senden. Durch die zusatzli-
chen Komponenten wird die Installation noch aufwandiger und benutzerun-
freundlicher, unter anderem weil der Wrapper sich auf die Java Comm API
stutzt.
17
Kapitel 3
Ist- und Soll-Analyse
In diesem Kapitel wird die bestehende Losung FlexiTrust Identity Management vorge-
stellt. Ihre Struktur und Funktionen werden beschrieben. Da das Ziel dieser Arbeit ist,
eine der bestehenden Komponenten von FlexiTrust Identity Management durch eine neue
zu ersetzen, wird auf diese Komponente und ihre Nachteile detaillierter eingegangen. An-
schließend werden die Anforderungen an die neue Komponente FlexCardAdmin spezifi-
ziert.
3.1 FlexiTrust Identity Management
FlexiTrust Identity Management [Gmb06a] ist eine Webapplikation, welche die
Trustcenter-Software FlexiTrust [Gmb] erweitert und im Rahmen einer PKI samtliche
Aufgaben ubernimmt, die mit der dezentralen Personalisierung und Verwaltung von
Smartcards verbunden sind. Das System ermoglicht die selbstbediente Administration der
Smartcards. In jedem Unternehmen, das Chipkarten im Rahmen der Unternehmens-PKI
einsetzt, sind diese notwendige Operationen. Mit FlexiTrust Identity Management lasst
sich eine dezentrale und flexible Smartcard-Rollout-Infrastruktur aufbauen, die selbst-
bediente Verfahren unterstutzt und den eigenen Bedurfnissen und Anforderungen genau
entspricht.
Folgende Operationen lassen sich mit FlexiTrust Identity Management ausfuhren:
• Selbstbediente Personalisierung von Smartcards: Nachdem ein neuer Mitarbeiter in
einem Unternehmen eingestellt wird, wird ein neues Benutzerkonto fur ihn angelegt
und er muss seine Mitarbeiterkarte personalisieren. Er erhalt eine leere, unperso-
nalisierte Smartcard und seine Authentifizierungsdaten. Nach einer erfolgreichen
Authentifikation dem System gegenuber kann er seine Karte personalisieren.
• Selbstbedientes Erneuern von Smartcards: Falls eine Karte nicht mehr benutzbar ist
(zum Beispiel wenn die Karte defekt ist), kann der Mitarbeiter eine Ersatzkarte fur
sich ausstellen. Dafur erhalt er eine leere Smartcard oder loscht vollstandig seine
Vorgangerkarte. Nach einer erfolgreichen Benutzerauthentifikation wird die Karte
neu personalisiert, wobei ein Key-Recovery fur gesicherte Schlusselpaare und ent-
sprechende Zertifikate stattfindet. Alle anderen Daten (Schlusselpaare, Zertifikate,
Geheimnisse und Applikationsdaten) werden neu generiert und auf die Smartcard
18
KAPITEL 3. IST- UND SOLL-ANALYSE
geschrieben.
• Erstellung einer Notfallkarte: Falls ein Mitarbeiter seine Karte vergisst oder ver-
legt, kann vom PKI-Administrator eine Notfallkarte mit einer kurzen Gultigkeits-
dauer erstellt werden. Gesicherte Schlusselpaare und entsprechende Zertifikate wer-
den ubernommen, alle anderen Daten werden neu generiert. Nach dem Ablauf der
Gultigkeit mussen Notfallkarten zuruckgegeben werden. Sie werden dann vom PKI-
Administrator vollstandig geloscht.
• Selbstbedientes Entsperren der Karte und Neusetzen der Geheimzahl (PIN): Eine
Karte wird gesperrt, wenn die PIN mehrmals falsch eingegeben wird. Die Anzahl der
moglichen Fehlversuche bei der PIN-Eingabe ist konfigurierbar und wird beim Per-
sonalisieren der Smartcard gesetzt. Nach einer erfolgreichen Authentifikation dem
System gegenuber kann der Kartenbesitzer die Karte entsperren und seine PIN neu
setzen.
• Selbstbedientes Loschen der Karteninhalte: Wenn ein Mitarbeiter das Unternehmen
verlasst, gibt er seine Smartcard zuruck und diese wird vollstandig geloscht. Nach
dem Loschen ist die Karte leer und kann neu personalisiert werden.
Fur alle oben beschriebenen selbstbedienten Smartcard-Operationen ist eine Benutzerau-
thentifikation mit Benutzernamen, Passwort und Einmalpasswort (TAN) erforderlich. Die-
se findet uber ein Webinterface statt. Die Benutzer bekommen Zugriff auf das System uber
eine Webseite (die Enrollment-Seite), auf der sie sich mit ihrem Benutzernamen, Passwort
und der TAN authentifizieren mussen. Von dort aus konnen die Smartcardoperationen
ausgefuhrt werden.
Das TAN-Konzept tragt dafur Sorge, dass die ausgefuhrten Smartcardoperationen kon-
trolliert und verwaltet werden konnen. Mit der TAN kann eine Operation nur einmal und
nur von dem TAN-Besitzer ausgefuhrt werden. Das Einmalpasswort wird automatisch
generiert, nachdem der Benutzer einen Request fur eine bestimmte Smartcardoperation
gestellt hat. Die TAN kann nur fur diese spezifische Operation verwendet werden. Diese
wird dem Benutzer zum Beispiel in einem TAN-Brief zugeschickt oder auf einer sicheren
Webseite, auf die nur per Smartcard zugegriffen werden kann, angezeigt. Nachdem der
Benutzer die TAN bekommen hat, darf er die gewunschte Operation ausfuhren. Um die
Sicherheit zu erhohen, ist die TAN zusatzlich an die Smartcard-Seriennummer gebunden
und hat eine begrenzte Gultigkeitsdauer. Fur einen Benutzer darf immer hochstens eine
TAN freigeschaltet sein.
Jede Smartcard besitzt eine PIN und eine PUK. Die Smartcard-Administration ist bei
FlexiTrust Identity Management so konzipiert, dass die PUK dem Benutzer unbekannt
bleibt. Dies macht vor allem im Firmenumfeld besonders viel Sinn. Dadurch, dass die
PUK zentral gespeichert ist, wird vermieden, dass viele Smartcards durch Fehlbenutzung
unbrauchbar werden. Somit werden Kosten gespart. Ausserdem ermoglicht die Kenntnis
der PUK die zentrale Ausfuhrung wichtiger Administrationsaufgaben. Jede zuruckgegene
Karte (z.B. die Karte eines Mitarbeiters, der das Unternehmen verlasst, oder eine Notfall-
karte) kann vom PKI-Administrator problemlos mit Hilfe der PUK vollstandig geloscht
werden.
19
KAPITEL 3. IST- UND SOLL-ANALYSE
3.1.1 Komponentenuberblick
Abbildung 3.1 gibt eine Ubersicht der Komponenten der Trustcenter-Software FlexiTrust.
Die Komponenten, die zu FlexiTrust Identity Management gehoren, sind rot markiert.
Diese sind:
• Anmeldeserver mit Benutzerschnittstelle (im Folgenden Enrollment-Server oder ES
genannt): Das Eingangsportal fur die PKI-Teilnehmer. Es bietet eine HTML-Seite
an, auf der sich die PKI-Teilnehmer mit Benutzernamen, Passwort und TAN an-
melden und selbstbediente Smartcardoperationen ausfuhren konnen.
• Datentransport (im Folgenden Enrollment Server Importer oder ESI genannt):
zustandig fur den Datentransport zwischen dem Enrollment-Server und der
FlexiTrust-Zertifizierungsstelle, wie man in der Abbildung 3.1 sehen kann. Da die
Funktionen dieser Komponente fur diese Arbeit nicht relevant sind, werden sie nicht
naher beschrieben.
• OCX-Komponente: zustandig fur die Realisierung der Smartcardoperationen. Dies
ist eine ActiveX-Control-Komponente, die in der Enrollment-Seite eingebettet ist
und beim ersten Aufruf der Webseite auf dem Clientrechner installiert wird. OCX
ubernimmt folgende Aufgaben:
– Personalisierung der Karte
∗ PIN/PUK mit Fehlbedienungszahler (FBZ) auf die Karte schreiben
∗ Verschlusselungszertifikat bzw. Schlusselbackup einspielen
– PIN der Chipkarte unter Benutzung der PUK zurucksetzen. Der FBZ der PIN
wird dabei zuruckgesetzt.
– Komplette Karte mit Hilfe der PUK loschen. Dabei werden PIN, PUK und alle
Zertifikate geloscht. Die Karte kann dann wieder neu personalisiert werden, wie
im Urzustand.
– Sonstige Hilfsoperationen
∗ PIN verifizieren
∗ Kartenseriennummer auslesen
∗ Personalisierungsstatus der eingelegten Chipkarte feststellen (leer oder in-
itialisiert)
• Verwaltungskonsole (auch Management Console oder MC genannt): ermoglicht die
Verwaltung der:
– Benutzerkonten
– Administratorenkonten
– Chipkarten
– Zertifikaten
– Sperrlisten
Die Verwaltungskonsole wird hier nicht naher beschrieben, weil sie fur diese Arbeit
irrelevant ist.
20
KAPITEL 3. IST- UND SOLL-ANALYSE
Abbildung 3.1: Komponenten von FlexiTrust und FlexiTrust Identity Management
21
KAPITEL 3. IST- UND SOLL-ANALYSE
3.1.2 Smartcardoperationen
Wie schon am Anfang dieses Kapitels erwahnt, sind folgende Operationen mit FlexiTrust
Identity Management moglich:
• selbstbediente Personalisierung von Smartcards (Prozess”Neue Karte“)
• selbstbedientes Erneuern von Smartcards (Prozess”Ersatzkarte“)
• Erstellung einer Notfallkarte (Prozess”Notfallkarte“)
• selbstbedientes Entsperren der Karte und Neusetzen der Geheimzahl (PIN) (Prozess
”PIN Reset“)
• selbstbedientes Loschen der Karteninhalte (Prozess”Karte loschen“)
Im Folgenden werden sie detaillierter beschrieben.
Personalisierung einer Smartcard
Eine Karte muss in folgenden Fallen personalisiert werden:
• Ein neues Benutzerkonto wurde angelegt (z.B. nachdem ein neuer Mitarbeiter ein-
gestellt wurde)
• Das Verschlusselungszertifikat/Signaturzertifikat ist abgelaufen
• Alle Inhalte der alten Karte wurden gesperrt
• Der Benutzername des Karteninhabers hat sich geandert (z.B. durch Namensande-
rung)
Aus den oberen Anwendungsfallen wird klar, dass die Notwendigkeit besteht, eine Kar-
te mehrmals personalisieren zu konnen. Dies wird von FlexiTrust Identity Management
sichergestellt.
Nachdem der Benutzer eine leere Smartcard und seine Authentifikationsdaten (Benut-
zername, Passwort und eine TAN fur den Prozess”Neue Karte“) erhalten hat, kann die
Karte personalisiert werden. Dazu sind folgende Arbeitsschritte notwendig:
1. Login: Der Benutzer meldet sich mit seinen Benutzerdaten auf der Enrollment-Seite
an. Der Enrollment-Server leitet die Daten weiter an das ESI.
2. Datenprufung: ESI uberpruft die Benutzerdaten mittels Datenbankabfragen sowie
Abfragen am LDAP-Server; ESI generiert zufallige PIN und PUK und schickt diese
zuruck an den Enrollment-Server.
3. Kartenpersonalisierung Teil 1: Nach einer erfolgreichen Benutzeranmeldung er-
scheint eine Seite mit dem integrierten ActiveX-Control. Diese Seite zeigt die auto-
matisch generierte PIN der Karte. Die PUK wird wie schon am Anfang des Kapitels
erwahnt, nicht angezeigt. Auf der Seite kann der Benutzer außerdem seine Antwor-
ten auf verschiedene vordefinierte Sicherheitsfragen eingeben. Durch das Betatigen
einer Taste auf der Seite wird die Smartcard uber dem ActiveX-Control in einem
Schritt personalisiert. Folgende Schritte werden durchlaufen:
a) Ist die Seriennummer der Karte dem System bekannt, wird die Karte zuerst
22
KAPITEL 3. IST- UND SOLL-ANALYSE
vollstandig geloscht.
b) PIN und PUK werden zusammen mit dem Fehlbedienungszahler (FBZ) auf die
Karte geschrieben.
c) Die Schlusselpaare fur die elektronische Signatur und Windows-Smartcard-
Logon werden in der Karte erzeugt und damit PKCS#10-Zertifikatsantrage
[RSA00] erstellt.
d) Die Zertifikatsantrage werden an ESI geschickt.
e) Weitere Geheimnisse und Daten, die fur verschiedene Anwendungen erforder-
lich sind (z.B. Kobil SecOVID OTP Generator), werden auf die Karte geschrie-
ben.
4. Zertifikatserstellung: ESI leitet die Zertifikatantrage an die FlexiTrust-CA wei-
ter. Da fur das Verschlusselungsschlusselpaar ein Key-Recovery erwunscht ist, wird
es in der FlexiTrust-CA und nicht in der Karte erzeugt. FlexiTrust-CA erstellt das
zugehorige Verschlusselungszertifikat, sowie die zwei beantragten Zertifikate (fur Si-
gnatur und Windows-Smartcard-Logon). Das Verschlusselungsszertifikat und das
zugehorige Schlusselpaar werden als PKCS#12-Datei [RSA99] gesichert hinterlegt
(Key Backup). Außerdem loscht ESI die TAN und wartet anschließend bis die be-
antragten Zertifikate in die Datenbank geschrieben wurden, um diese zuruck an den
Enrollment-Server zu schicken.
5. Kartenpersonalisierung Teil 2: Die drei Zertifikate werden bereitgestellt und auf
einer Import-Webseite ausgeliefert, die dem Benutzer angezeigt wird. Das ActiveX-
Control schreibt die Zertifikate und das Verschlusselungsschlusselpaar auf die Karte.
Erneuern einer Smartcard
Eine Karte muss in folgenden Fallen erneuert werden:
• Das Signatur- oder Windows-Logon-Zertifikat lauft ab.
• Die Karte ist defekt oder verloren gegangen.
• Die Position des Benutzers im Unternehmen hat sich geandert.
Der Benutzer kann seine Karte erneuern, wenn er seine alte oder eine leere Smart-
card und eine TAN fur den Prozess”Ersatzkarte“ erhalten hat. Der Prozess, der bei der
Kartenpersonalisierung beschrieben wurde, wird hier wiederholt. Der Unterschied besteht
darin, dass das Verschlusselungsschlusselpaar und das Verschlusselungszertifikat nicht neu
erzeugt werden. Fur den Verschlusselungsschlussel findet ein Key-Recovery statt und das
zugehorige Zertifikat wird aus dem Archiv ausgelesen. Dadurch ist sichergestellt, dass der
Benutzer weiterhin auf seine verschlusselten Daten zugreifen kann.
Erstellung einer Notfallkarte
Eine Notfallkarte wird dann erstellt, wenn der Benutzer seine Karte verlegt oder verges-
sen hat. Diese Karten werden vom Administrator erstellt und haben eine kurze Gultig-
23
KAPITEL 3. IST- UND SOLL-ANALYSE
keitsdauer (z.B. einen Tag). Die Karte wird personalisiert wie eine Ersatzkarte, d.h. das
Verschlusselungsschlusselpaar und das zugehorige Zertifikat werden nicht neu erzeugt.
Entsperren der Smartcard
Die Karteninhalte sind durch die PIN geschutzt. Nach mehreren Falscheingaben der PIN,
wird die Karte gesperrt und kann nur mit Hilfe der PUK entsperrt werden. Der Benutzer
kennt die PUK nicht, ist aber trotzdem in der Lage, die Karte zu entsperren und die PIN
neu zu setzen.
Nachdem der Benutzer die TAN fur den Prozess”PIN Reset“ erhalten hat, kann er
seine Karte entsperren. Dazu muss er folgende Arbeitsschritte durchlaufen:
1. Login: Der Benutzer meldet sich auf dem Enrollment-Server (uber das bereitge-
stellte Webinterface) mit seinem Benutzernamen, Passwort und der TAN an.
2. Datenprufung: ESI uberpruft die Benutzerdaten. Es wird außerdem uberpruft,
ob die an die TAN gebundene Smartcard-Seriennummer mit der Seriennummer der
Chipkarte ubereinstimmt.
3. Karte entsperren: Durch das Betatigen einer Taste auf der angezeigten Webseite
wird die Karte uber die OCX-Komponente mit Hilfe der PUK entsperrt. Eine neue
PIN wird generiert und im Browser angezeigt. Der Fehlbedienungszahler der PIN
wird dabei zuruckgesetzt. Die neue PIN wird auf die Karte geschrieben.
Loschen der Karteninhalte
Karten mussen in folgenden Fallen geloscht werden:
• Eine zuruckgegeben Notfallkarte, um sie wieder zu verwenden
• Die zuruckgegebene Karte eines Mitarbeiters, der das Unternehmen verlassen hat
Nachdem der Benutzer die TAN fur den Prozess”Karte loschen“ erhalten hat, kann er
die Karte loschen. Dazu sind folgende Schritte notwendig:
1. Login: Der Benutzer meldet sich auf dem Enrollment-Server (uber das bereitge-
stellte Webinterface) mit seinem Benutzernamen, Passwort und der TAN an.
2. Datenprufung: ESI uberpruft die Benutzerdaten. Es wird außerdem uberpruft,
ob die an die TAN gebundene Smartcard-Seriennummer mit der Seriennummer der
Chipkarte ubereinstimmt.
3. Karte loschen: Durch das Betatigen einer Taste auf der angezeigten Webseite wird
die Karte uber die OCX-Komponente mit Hilfe der PUK komplett geloscht.
3.1.3 Die OCX-Komponente
Die OCX-Komponente ist zustandig fur die Realisierung der oben beschriebenen Smart-
cardoperationen. Sie wird auf dem Clientrechner installiert und ubernimmt alle Aufgaben,
24
KAPITEL 3. IST- UND SOLL-ANALYSE
die mit der Kommunikation und Datenubertragung zur Smartcard verbunden sind. Leider
weist diese Komponente gewisse Nachteile auf:
• Sie wurde speziell fur nur zwei Kartentypen (TCOS2.0 und CardOS) entwickelt. Alle
anderen Kartentypen werden nicht unterstutzt. Diese fehlende Flexibilitat schrankt
automatisch die Anzahl der potenziellen Anwender und Kunden ein. Die Hinzunah-
me neuer Kartentypen ist nicht trivial und nur mit hohem Aufwand realisierbar.
• Dadurch, dass die ActiveX-Technologie zu Grunde dieser Komponente liegt, ist
die Plattformunabhangigkeit nicht gewahrleistet (siehe auch Kapitel 2). ActiveX-
Controls sind nur unter Windows ausfuhrbar und ihr Einsatz auf verschiedenen
Plattformen ist somit beschrankt. Die Hinzunahme neuer Betriebssysteme ist also
auch nicht moglich.
• ActiveX wird nicht von vielen Browsern unterstutzt. Der einzige Browser, der ohne
Zusatz als ActiveX-Container eingesetzt werden kann, ist Internet Explorer. Die
restlichen Browser mussen zuerst durch einen ActiveX-Plugin erweitert werden.
Die OCX-Komponente ist also nicht flexibel genug und nicht erweiterbar. Es ist nicht
moglich, neue Komponenten in die Software hinzuzufugen. Es stellt sich die Frage welche
Technologie als Ersatz genommen werden kann, so dass alle diese Nachteile eliminiert
werden konnen. Im nachsten Kapitel wird diese Frage beantwortet.
3.2 FlexCardAdmin
Die neue Losung, die die bestehende OCX-Komponente ersetzen soll und die im Folgenden
FlexCardAdmin genannt wird, soll alle vorhandene Probleme eliminieren und folgende
Bedingungen erfullen:
• Die Plattormunabhangigkeit ist gewahrleistet
• Die Software ist im Browser ausfuhrbar und kann uber das Internet geladen werden.
• Alle gangige Browser werden unterstutzt.
• Das Sicherheitsniveau ist hoch genug.
• Die Software ist flexibel und um neue Komponenten erweiterbar.
Es gibt einige Java-Technologien zur Erstellung von Web-Anwendungen:
• Java WebStart-Anwendungen: Suns Java WebStart basiert auf dem Java Network
Loading Protocol (JNLP). Um eine Anwendung mit WebStart zu installieren,
mussen zwei Voraussetzungen gegeben sein. Erstens muss auf den zu installieren-
den Rechner Java und WebStart installiert sein und zweitens muss im Browser als
Hilfsanwendung fur Dateien mit der Endung .jnlp das aufuhrbare Programm javaws
eingetragen sein. Wenn nun der Benutzer im Browser auf einen Link klickt, hinter
dem sich eine JNLP-Datei verbirgt, so wird die Datei heruntergeladen und dann
automatisch WebStart aktiviert. WebStart ladt nun anhand der Eintrage in der
JNLP-Datei die zur Anwendung gehorenden JAR-Archive herunter, erzeugt, wenn
gewunscht einen Desktopshortcut und startet dann die Anwendung. Fur weitere
25
KAPITEL 3. IST- UND SOLL-ANALYSE
Starts der heruntergeladenen Anwendung ist dann meist keine Netzwerkverbindung
mehr notig. WebStart-Anwendungen werden nicht im Browser ausgefuhrt. Da ei-
ne der Anforderungen an FlexCardAdmin ist, dass dieser im Browser lauft, ist die
WebStart-Technologie zur Realisierung der neuen Losung nicht geeignet.
• Java Servlets: Servlets sind serverseitige Anwendungen, die nach einem vom Client
ausgelosten HTTP-Request dynamisch HTML-Seiten erzeugen und im Browser des
Clients anzeigen. Servlets bestehen aus Java-Klassen, die uber einen Webserver mit-
tels einer URL angesprochen werden. Servlets werden auf dem Server ausgefuhrt.
FlexCardAdmin soll aber eine clientseitige Anwendung sein, die auf dem Client-
rechner installiert und dort ausgefuhrt wird. Somit konnen auch Servlets fur die
Realisierung von FlexCardAdmin nicht verwendet werden.
• Java Server Pages (JSP): Eine Java Server Page is eine um Java-Code angerei-
cherte HTML-Seite. Java Server Pages erlauben die Vermischung von regularem,
statischem HTML mit dynamisch generierten Inhalten durch Java-Code. Anders
als bei Servlets, bei denen HTML in Java-Code eingebettet wird, ist bei JSP der
Java-Code in das HTML-Dokument eingefugt. Jede JSP wird automatisch zu einem
Servlet kompiliert und ausgefuhrt.
• Java Applets: ein Applet ist ein Java-Programm, das in einer HTML-Seite einge-
bettet ist und in einem Browser ausgefuhrt wird. Applets wurden schon ausfuhrlich
im Kapitel 2 eingefuhrt. Nach Berucksichtigung der gestellten Anforderungen und
dem Vergleich mit den anderen Webtechnologien, haben sich Applets als die geeig-
nete Technologie zur Erstellung von FlexCardAdmin erwiesen. Wie im Abschnitt
2.2 dargestellt, erfullt die Java-Applet-Technologie die ersten drei der oben genann-
ten Bedingungen. Daruber hinaus unterstutzen die im Abschnitt 2.2.3 diskutierten
Merkmale dieser Technologie das Sicherheitsniveau der gesamten Anwendung in
hohem Maße, insbesondere bezogen auf die Sicherheit der eingebundenen Clients.
Das nachfolgend vorgestellte Design des Moduls FlexCardAdmin vervollstandigt die
benotigten Sicherheitsmerkmale und garantiert daruber hinaus die Flexibilitat und
Erweiterbarkeit.
3.2.1 Funktionale Anforderungen
FlexCardAdmin soll alle Smartcardoperationen, die FlexiTrust Identity Management
ermoglicht und die im Abschnitt 3.1.2 vorgestellt wurden, unterstutzen. Die Smart-
cardfunktionen der OCX-Komponente werden durch das Betatigen einer Taste auf der
Enrollment-Webseite aufgerufen und anschließend ausgefuhrt. In der neuen Losung wird
diese Taste entfernt und stattdessen das Applet in der Webseite eingebettet. Beim Offnen
der Webseite wird das Applet automatisch geladen und ist einsatzbereit. FlexCardAdmin
soll eine passende Benutzeroberflache anbieten, um z.B. die Smartcard-PIN eingeben zu
konnen. Durch die Interaktion mit der Benutzeroberflache der Applets, kann ein Benutzer
eine bestimmte Smartcardoperation starten. Da Daten mit dem Enrollment-Server aus-
getauscht werden mussen, soll außerdem eine Schnittstelle zur Kommunikation mit dem
26
KAPITEL 3. IST- UND SOLL-ANALYSE
Enrollment-Server vorhanden sein.
Im Folgenden wird jede Smartcardoperation genauer analysiert und die Funktionalitat
vom FlexCard-Admin spezifiziert.
Personalisieren einer Smartcard
Im Abschnitt 3.1.2 wurde der bestehende Kartenpersonalisierungsprozess mit dem Einsatz
der OCX-Komponente beschrieben. Hier wird der Ablauf der Kartenpersonalisierung mit
dem Einsatz vom FlexCardAdmin geschildert. Die einzelnen Schritte bleiben großtenteils
unverandert. Trotzdem werden sie hier der Vollstandigkeit halber nochmal aufgelistet:
1. Login: Der Benutzer meldet sich mit seinen Benutzerdaten auf der Enrollment-Seite
an. Der Enrollment-Server leitet die Daten weiter an das ESI.
2. Datenprufung: ESI uberpruft die Benutzerdaten mittels Datenbankabfragen sowie
Abfragen am LDAP-Server; ESI generiert zufallige PIN und PUK und schickt diese
zuruck an den Enrollment-Server.
3. Kartenpersonalisierung Teil 1: Nach einer erfolgreichen Benutzeranmeldung er-
scheint eine Seite mit dem eingebetteten Applet. Diese Seite zeigt die automatisch
generierte PIN der Karte. Um die Karte zu personalisieren, gibt der Benutzer die
generierte PIN in den Applet-Eingabefeldern ein und startet den Personalisierungs-
prozess. Folgende Schritte werden durchlaufen:
a) Zuerst werden die PUK und die PIN zusammen mit Fehlbedienungszahler auf
die Karte geschrieben. Der Startwert des Fehlbedienungszahlers soll konfigu-
rierbar sein.
b) Die Schlusselpaare fur die elektronische Signatur und Windows-Smartcard-
Logon werden in der Karte erzeugt.
c) Mit den neuen Schlusseln werden PKCS#10-Zertifikatsantrage erstellt und an
das ESI geschickt.
4. Zertifikatserstellung: Die beantragten Zertifikate, sowie ein Verschlusselungszer-
tifikat, werden von der FlexiTrust-CA, wie schon im Abschnitt 3.1.2 beschrieben,
erstellt.
5. Kartenpersonalisierung Teil 2: Eine neue Webseite wird geladen, in der das
Applet integriert ist. Der Enrollment-Server leiter die zwei erstellten Zertifikate,
sowie die PKCS#12-Datei, die das Verschlusselungszertifikat und das zugehorige
Schlusselpaar enthalt, an FlexCardAdmin weiter. Das Applet schreibt diese auf die
Karte.
Bei der Erstellung einer Ersatz- oder Notfallkarte handelt es sich um einen speziellen Fall
der Kartenpersonalisierung. Die Operationen, die dort ausgefuhrt werden, sind identisch
zu den oben aufgelisteten.
27
KAPITEL 3. IST- UND SOLL-ANALYSE
Entsperren der Smartcard
Genauso wie in Abschnit 3.1.2 beschrieben, soll FlexCardAdmin in der Lage sein, eine
Karte zu entsperren. Diese sind die Schritte, die ein Benutzer durchlaufen muss, um seine
Karte mit FlexCardAdmin zu entsperren:
1. Login: Der Benutzer meldet sich auf dem Enrollment-Server (uber das bereitge-
stellte Webinterface) mit seinem Benutzernamen, Passwort und der TAN an.
2. Datenprufung: ESI uberpruft die Benutzerdaten. Es wird außerdem uberpruft,
ob die an die TAN gebundene Smartcard-Seriennummer mit der Seriennummer der
Chipkarte ubereinstimmt.
3. Karte entsperren: Nach einer erfolgreichen Benutzeranmeldung erscheint eine Sei-
te mit dem eingebetteten Applet. Eine neue PIN wird generiert und im Browser
angezeigt. Der Benutzer gibt die neue PIN in den Eingabefeldern des Applets ein
und startet das Entsperren. Der Fehlbedienungszahler der PIN wird zuruckgesetzt
und die neue PIN wird auf die Karte geschrieben.
Loschen der Karteninhalte
Mit FlexCardAdmin soll durch die Ausfuhrung folgender Schritte moglich sein, eine Karte
zu loschen:
1. Login: Der Benutzer meldet sich auf dem Enrollment-Server (uber das bereitge-
stellte Webinterface) mit seinem Benutzernamen, Passwort und der TAN an.
2. Datenprufung: ESI uberpruft die Benutzerdaten. Es wird außerdem uberpruft,
ob die an die TAN gebundene Smartcard-Seriennummer mit der Seriennummer der
Chipkarte ubereinstimmt.
3. Karte loschen: Nach einer erfolgreichen Benutzeranmeldung erscheint eine Seite
mit dem eingebetteten Applet. Der Benutzer gibt die PIN in dem Eingabefeld des
Applets ein und die Karte wird mit Hilfe der PUK komplett geloscht.
PIN andern
Eine neue Funktion, die zur Zeit nicht von der OCX-Komponente angeboten wird,
soll mit FlexCardAdmin moglich sein, namlich das Andern der PIN. Ein neuer TAN-
Verwendungszweck”PIN andern“ soll eingefuhrt werden. Nachdem der Benutzer die TAN
fur den Prozess”PIN andern“ erhalten hat, kann er die PIN seiner Smartcard andern.
Dazu sind folgende Arbeitsschritte notwendig:
1. Login: Der Benutzer meldet sich auf dem Enrollment-Server mit seinem Benutzer-
namen, Passwort und der TAN an.
2. Datenprufung: ESI uberpruft die Benutzerdaten. Es wird außerdem uberpruft,
ob die an die TAN gebundene Smartcard-Seriennummer mit der Seriennummer der
Chipkarte ubereinstimmt.
3. PIN andern: Nach erfolgreicher Anmeldung wird eine Seite mit dem integrierten
28
KAPITEL 3. IST- UND SOLL-ANALYSE
Applet angezeigt. Mit dem Applet kann der Benutzer die PIN andern, indem er die
bisherige und die neue PIN eingibt.
3.2.2 Qualitatsanforderungen
Die Software soll folgende Eigenschaften haben:
• Flexibilitat
– moglichst viele verschiedene Kartentypen sollen unterstutzt werden
– moglichst viele verschiedene Kartenleser sollen unterstutzt werden; die Anwen-
dung soll mit gangigen Kartenlesern funktionieren, im Idealfall unabhangig
davon sein
– die Anwendung soll auf verschiedenen Plattformen laufen (mindestens Linux,
Windows 2000 und Windows XP)
• leichtes Deployment
– die Anwendung soll mit moglichst wenig Installationsaufwand (am besten mit
keinem) zur Verfugung stehen
– die Anwendung auf der Clientseite soll immer up-to-date sein
• Modularitat
– die Benutzeroberflache soll leicht austauschbar und anpassbar sein
• Benutzerfreundlichkeit
• Erweiterbarkeit: es soll moglichst einfach sein neue Komponenten in die Software
hinzuzufugen, wie zum Beispiel:
– Hinzunahme neuer Kartentypen
– Hinzunahme neuer Kartenschnittstellen
– Hinzunahme neuer Kartenleser
– Hinzunahme neuer Betriebssystemen
– Hinzunahme neuer Sprachen
3.2.3 Sicherheitsanforderungen
Da es sich bei der digitalen Identitat um sensible Daten handelt, muss sichergestellt
werden, dass diese Daten geschutzt vor unauthorisiertem Zugriff bleiben.
Sichere PIN-Eingabe
Die Daten auf der Karte werden durch die PIN vor unberechtigtem Zugriff geschutzt.
Es gibt Kartenleser mit integrierter Tastatur, die eine sichere PIN-Eingabe (Secure PIN
Entry - SPE) ermoglichen, d.h. die PIN wird uber die Kartenlesertastatur eingegeben.
Diese Art der PIN-Eingabe ist sicherer als die Eingabe uber eine graphische Benutzero-
berflache, da die sensiblen Daten weder auf dem PC gespeichert, noch uber die unsichere
PC/Kartenleser-Verbindung ubertragen werden. Sie befinden sich ausschließlich innerhalb
29
KAPITEL 3. IST- UND SOLL-ANALYSE
der Karten/Leser-Umgebung. Die PIN wird direkt zu der Karte geschickt und somit ist
diese von Viren und Trojanern geschutzt.
Wenn ein Kartenleser, der eine Tastatur besitzt, mit der Anwendung benutzt wird, sollte
es moglich sein, die PIN-Eingaben uber die Kartenlesertastatur zu machen, um somit
hochste Sicherheit zu bieten. Fur die sonstigen Kartenleser erfolgt die Eingabe uber die
graphische Benutzeroberflache.
30
Kapitel 4
Designentstehung
In diesem Kapitel wird beschrieben, wie das Design der Applikation entstanden ist. Das
Kapitel soll dazu dienen nachzuvollziehen, welche Entscheidungen im Rahmen der Erstel-
lung der Arbeit getroffen wurden und warum.
4.1 Analyse des Frameworks SmartcardServices
Fur die flexible Anbindung zu Smartcards wird das Framework SmartcardServices [Dra06]
verwendet. Da die FlexCardAdmin-Implementierung auf diesem Framework basiert, ist
es notwendig dieses zu analysieren, um zu wissen welche Funktionalitat angeboten wird
und ob es irgendwelche Besonderheiten gibt, die berucksichtigt werden sollen.
4.1.1 Implementierungen
Das Framework SmartcardServices ist so konzipiert, dass es Interfaces zu den einzel-
nen Kartenoperationen definiert und fur jede Kartenschnittstelle oder Kartentyp, die
unterstutzt werden sollen, Implementierungen geliefert werden mussen. Einige Implemen-
tierungen existieren schon in der vorhandenen Frameworkversion.
Unterstutzte Kartenschnittstellen Das Framework unterstutzt in seiner jetzigen Ver-
sion folgende Kartenschnittstellen:
• PC/SC
• OCF
• PKCS#11
Unterstutzte Chipkarten Da die PKCS#11-Schnittstelle unabhangig von der verwen-
deten Chipkarte ist, konnen im Prinzip beliebige Kartentypen uber diese Kartenschnitt-
stelle angesprochen werden. Die anderen zwei Schnittstellen sind wiederum abhangig
vom Betriebssystem der Chipkarte und konnen nur dann benutzt werden, wenn eine
ApduChannelCard-Implementierung fur diesen Kartentyp bereitgestellt wird. Die jetzige
Version des Frameworks bietet eine solche Implementierung fur TCOS-2.0-Chipkarten.
31
KAPITEL 4. DESIGNENTSTEHUNG
4.1.2 Kartenoperationen
Es ist wichtig, dass das Framework alle Kartenoperationen unterstutzt, die benotigt wer-
den, um die gestellten Anforderungen zu erfullen. Deswegen ist eine der Aufgaben dieser
Arbeit gewesen, eine Analyse durchzufuhren und festzustellen, ob alle notwendigen Kar-
tenoperationen vom Framework angeboten werden.
Kartenpersonalisierung Chipkarten konnen personalisiert werden, indem personliche
Daten auf der Karte gespeichert werden. Voraussetzung fur die Personalisierung ist, dass
die Karte leer ist. Prinzipiell ist es moglich und sinnvoll eine Karte mehrmals zu persona-
lisieren. Das ware notwendig, wenn z.B. ein Mitarbeiter das Unternehmen verlasst. Seine
Karte kann von einem anderen Mitarbeiter benutzt werden, nachdem sie erneut persona-
lisiert wurde. Die PKCS#11-Implementierung, auf der das Framework SmartcardServices
aufbaut, unterstutzt die mehrfache Kartenpersonalisierung nicht. Sobald eine Karte zum
ersten Mal personalisiert wurde, kann diese nicht ein zweites Mal personalisiert werden.
Auch wenn man die Karteninhalte vollstandig loscht, wird die Karte als personalisiert
erkannt. Da die mehrfache Personalisierung eine Anforderung an den FlexCardAdmin
ist, bedeutet das, dass die Kartenpersonalisierung entweder uber PC/SC oder uber OCF
durchgefuhrt werden muss.
Die Kartenpersonalisierung umfasst mehrere Schritte:
• PIN und PUK der Karte setzen
• Schlusselpaare auf der Karte generieren
• Zertifikatsantrage erstellen
• Schlusselpaare und die zugehorigen Zertifikate auf die Karte schreiben
Das Setzen der PIN und PUK wird von allen Kartenschnittstellen unterstutzt. Die Gene-
rierung von Schlusselpaaren auf der Karte wird von TCOS-2.0-Karten nicht unterstutzt.
Das Framework bietet aber trotzdem die Moglichkeit, Schlusselpaare fur TCOS-2.0-
Karten zu generieren, indem diese in einer sicheren Umgebung erzeugt und anschließend
auf die Karte geschrieben werden. Bei der Schlusselgenerierung ist es außerdem wichtig,
anzugeben, wo genau auf der Karte die neuen Schlussel geschrieben werden sollen. Wenn
mehrere Schlusselpaare auf der Karte erzeugt werden sollen, mussen sie referenziert wer-
den konnen. Diese Funktionalitat fehlt in der PKCS#11-Schnittstelle. Man kann zwar
Schlusselpaare erzeugen, aber man kann nicht angeben, wo die Schlussel auf der Karte
zu speichern sind. Demzufolge werden generierte Schlussel auf der Karte uberschrieben,
wenn die Schlusselgenerierung mehrmals durchgefuhrt wird, da die Schlussel immer an
derselben Stelle auf der Karte gespeichert werden. Das ist noch ein Grund (genauso wie
die verhinderte mehrfache Kartenpersonalisierung), die PKCS#11-Implementierung bei
der Kartenpersonalisierung nicht zu verwenden.
Das Erstellen von Zertifikatsantragen sowie das Schreiben von Schlusselpaaren und Zerti-
fikaten auf der Karte ist mit allen Kartenschnittstellen moglich. Um ein Zertifikat auf die
Karte zu schreiben, muss das zugehorige Schlusselpaar auf der Karte vorhanden sein.
32
KAPITEL 4. DESIGNENTSTEHUNG
Loschen der Karteninhalte Bevor eine Karte erneut personalisiert werden kann, mussen
die vorhandenen Karteninhalte zuerst geloscht werden. Die PKCS#11-Implementierung
unterstutzt nicht das vollstandige Loschen der Karte, weil die PIN und PUK nicht
geloscht werden konnen. Die Konsequenz ist, dass man Karten uber die PC/SC oder
OCF-Schnittstelle loschen muss.
Andern und Entsperren der PIN Beide Operationen werden vom Framework un-
terstutzt und konnen mit jeder Kartenschnittstellenimplementierung durchgefuhrt wer-
den.
Abbildung 4.1 zeigt alle Kartenoperationen im Uberblick und die Schnittstellen, die
diese Operationen unterstutzen.
4.1.3 Referenzieren von Objekten auf der Karte
Die Daten auf der Karte mussen referenziert werden konnen. Wenn sich z.B. mehrere
Schlussel auf der Karte befinden, muss es moglich sein, zu erkennen, welcher Schlussel zur
Verschlusselung und welcher zum Signieren benutzt wird, damit der richtige Schlussel fur
die entsprechende Operation verwendet werden kann.
Das Framework bietet Methoden an, um alle Zertifikate, alle Schlussel (privat oder offent-
lich) und alle sonstigen Datenobjekte, die sich auf der Karte befinden, auszulesen. Wie
erkennt man in dieser Liste das Objekt, das man sucht? Jedes Kartenobjekt ist mit einer
ID versehen und diese ID ist auch sichtbar fur den Anwender. Die ID ist aber mit keiner
semantischen Bedeutung verknupft; sie gibt keine Information uber das Anwendungs-
gebiet des Objekts. Es besteht keine Moglichkeit zu erfahren, welches Objekt in einem
bestimmten Anwendungsfall benutzt werden soll. Wenn sich z.B. auf der Karte zwei Signa-
turschlussel befinden, ist es unmoglich den richtigen Schlussel zu erkennen. Man braucht
also eine zusatzliche Abstraktionsebene, die vom FlexCardAdmin angeboten werden soll
und die das Referenzieren von Objekten auf der Karte ermoglicht. Es muss eine Zuordnung
zwischen jedem Objekt auf der Karte und der Applikation, die dieses Objekt benutzt, her-
gestellt werden. Wird ein Objekt fur eine bestimmte Applikation auf der Karte gesucht,
muss klar sein, wo dieses zu finden ist, so dass es ausgelesen werden kann. Wenn sich z.B.
mehrere Zertifikate auf der Karte befinden und man das Windows-Logonzertifikat sucht,
muss es moglich sein, dieses bestimmte Zertifikat eindeutig zu identifizieren. Es ist offen-
sichtlich, dass wenn man eine Verknupfung zwischen der Objekt-ID und der Applikation
herstellt, immer bekannt sein wird, welches Objekt fur diese Applikation benutzt werden
soll.
Die Objekt-ID wird von den verschiedenen Kartenschnittstellen unterschiedlich darge-
stellt. Bei PKCS#11 wird die Benennung durch den Treiber festgelegt. Objekte werden
mit symbolischen Namen referenziert. So bedeutet zum Beispiel die Kennung”TCOS1-00“
Objekt 00 auf der TCOS-Smartcard im Slot 1. Mehrere zusammengehorige Objekte, wie
ein Schlusselpaar und das zugehorige Zertifikat, haben identische Kennung, konnen aber
33
KAPITEL 4. DESIGNENTSTEHUNG
Smartcardoperation KartenschnittstelleSmartcard personalisieren PC/SC, OCF- Mehfache Personalisierung PC/SC, OCF- PIN initialisieren PC/SC, OCF, PKCS#11- PUK initialisieren PC/SC, OCF, PKCS#11- Schlusselpaar schreiben PC/SC, OCF, PKCS#11- Zertifikat schreiben PC/SC, OCF, PKCS#11- Zertifikatsantrag erstellen PC/SC, OCF, PKCS#11- Schlusselpaar generieren PC/SC, OCF, PKCS#11Smartcard loschen PC/SC, OCF- PIN loschen PC/SC, OCF- PUK loschen PC/SC, OCF- Schlusselpaare loschen PC/SC, OCF, PKCS#11- Zertifikate loschen PC/SC, OCF, PKCS#11- Sonstige Daten loschen PC/SC, OCF, PKCS#11PIN andern PC/SC, OCF, PKCS#11PIN entsperren PC/SC, OCF, PKCS#11
Abbildung 4.1: Smartcardoperationen und die Kartenschnittstellenunterstutzung
anhand des Objekttyps (privater Schlussel, offentlicher Schlussel, Zertifikat etc.) eindeu-
tig identifiziert werden. Wenn es sich um keine TCOS-Karten handelt, sieht die Kennung
entsprechend anders aus. Bei PC/SC und OCF wird das Referenzieren auf der Kartenbe-
triebssystemebene gemacht. Objekte werden mit einem eindeutigen Pfad im Dateisystem
identifiziert, der gemaß dem Standard ISO 7816 gebildet wird und fur TCOS-2.0-Karten
beispielsweise wie folgt aussieht: :3f00:4101:4e03.
Da sich die Objekt-IDs in Abhangigkeit von der Kartenschnittstelle und dem Karten-
typ unterscheiden, muss FlexCardAdmin die Moglichkeit bieten, jeder Kombination aus
Applikation, Kartenschnittstelle, Kartentyp und Objekttyp eine spezifische Objekt-ID zu-
zuordnen, die in dieser”Konstellation“ benutzt werden soll, um das Objekt auszulesen
oder auf der Karte zu schreiben.
4.2 Analyse der Kartenschnittstellen
Die Kommunikation mit der Chipkarte kann uber verschiedene standardisierte Smartcard-
Schnittstellen realisiert werden. Damit die Flexibilitat vom FlexCardAdmin gewahrleistet
wird, sollte dieser in der Lage sein alle Kartenschnittstellen zu unterstutzen. Das Frame-
work SmartcardServices, das als Basis der Implementierung benutzt wird, hilft diese Auf-
gabe zu erfullen, da sie eine Abstraktionsebene darstellt und die Chipkartenfunktionen
unabhanging von der verwendeten Kartenschnittstelle zur Verfugung stellt. Die eigentliche
Implementierung, die benutzt wird, bleibt fur die Anwender transparent.
34
KAPITEL 4. DESIGNENTSTEHUNG
4.2.1 Anforderungen an die Umgebung
Obwohl das Framework eine gewisse Flexibilitat mit sich bringt, bietet es keine Funk-
tionalitat zur Vorbereitung der Umgebung (in diesem Fall der Clientrechner) an, damit
die Kartenschnittstellen benutzbar sind. Die Kartenschnittstellen mussen namlich zuerst
installiert und initialisiert werden, bevor sie einsatzbereit sind; sie stellen gewisse Anfor-
derungen an die Umgebung. D.h. jede Anwendung, die das Framework SmartcardServices
benutzt, muss selbst sicherstellen, dass alle Vorbereitungen zur Kartenschnittstellenini-
tialisierung getroffen wurden. Um das zu vermeiden, muss ein ubergreifendes Konzept
zur Kartenschnittstelleninitialisierung entwickelt und vom FlexCardAdmin realisiert wer-
den, so dass kein zusatzlicher Aufwand von Benutzerseite verursacht wird. Dafur muss
analysiert werden, wie jede Kartenschnittstelle initialisiert wird, um Gemeinsamkeiten zu
finden, die fur die Spezifizerung des Konzeptes wichtig sind.
Initialisierung der Framework-Schnittstelle zu PC/SC Um die Framework-
Schnittstelle zu PC/SC zu benutzen, ist folgendes notwendig:
• Java-Wrapper JPC/SC jpcsc.jar [7] im Java-Classpath und die dazugehorige
native Bibliothek fur das verwendete Betriebssystem (jpcsc.dll, jpcsc.so) in
java.library.path.
• FlexiCoreProvider-1-1-5p3.signed.jar (oder eine andere Version des FlexiPro-
viders) und codec.jar im Java-Classpath, um PKCS#10-Zertifikatsantrage zu er-
stellen
• eine native PC/SC-Bibliothek (Treiber) in java.library.path in Abhangigkeit
vom Betriebssystem fur jeden Kartenleser, der unterstutzt werden soll. Die mei-
sten Kartenleser unterstutzen PC/SC und keine zusatzliche Treiber mussen geladen
werden.
• Konfigurationsdateien und sonstige Daten, die vom Kartenleser benotigt werden,
z.B. smartkey.inf und ct32br.dll beim Kobil Kaan Advanced Kartenleser.
• die ApduChannelCard-Implementierung, die verwendet werden soll, muss angegeben
werden, z.B. de.tud.cdc.cardservices.tcos20.TCOS20Card
• Chipkartenspezifische Properties mussen geladen werden, z.B. tcos20.properties
fur TCOS-2.0-Chipkarten.
Initialisierung der Framework-Schnittstelle zu PKCS#11 Um die Framework-
Schnittstelle zu PKCS#11 zu benutzen ist folgendes notwendig:
• der Java-PKCS#11-Provider p11.jar [1] im Java-Classpath und die zugehori-
ge native Bibliothek fur das verwendete Betriebssystem (nativepkcs11.dll,
libnativepkcs11.so) in java.library.path
• FlexiCoreProvider-1-1-5p3.signed.jar (oder eine andere Version des FlexiPro-
viders) und codec.jar im Java-Classpath, um PKCS#10-Zertifikatsantrage zu er-
stellen
35
KAPITEL 4. DESIGNENTSTEHUNG
• eine native PKCS#11-Bibliothek (Treiber) in java.library.path in Abhangigkeit
vom Betriebssystem fur jeden Kartenleser, der unterstutzt werden soll. (z.B. die
Bibliothek fur Kobil-Kartenleser kpkcs11hash.dll oder libkpkcs11hash.so)
• Konfigurationsdateien und sonstige Daten, die vom Kartenleser benotigt werden,
z.B. smartkey.inf und ct32br.dll beim Kobil Kaan Advanced Kartenleser.
• Die Chipkarte muss nicht spezifiziert werden, da PKCS#11 eine High-Level-
Kartenschnittstelle ist, die vom Betriebssystem der Smartcard abstrahiert. Dies be-
deutet, dass die PKCS#11-Implementierung prinzipiell mit allen Smartcards funk-
tionsfahig ist.
• Chipkartenspezifische Properties mussen geladen werden, z.B. tcos20.properties
fur TCOS-2.0-Chipkarten.
Initialisierung der Framework-Schnittstelle zu OCF Um die Frameworkschnittstelle
zu OCF (uber einen PC/SC-Treiber) zu benutzen, ist folgendes notwendig:
• OCF-Wrapper fur PC/SC pcsc-wrapper-2.0.jar [2] im Java-Classpath und die
zugehorige native Bibliothek fur das verwendete Betriebssystem (ocfpcsc1.dll) in
java.library.path
• FlexiCoreProvider-1-1-5p3.signed.jar (oder eine andere Version des FlexiPro-
viders) und codec.jar im Java-Classpath, um PKCS#10-Zertifikatsantrage zu er-
stellen
• eine native PC/SC-Bibliothek (Treiber) in java.library.path in Abhangigkheit
vom Betriebssystem fur jeden Kartenleser, der unterstutzt werden soll. Wie schon
erwahnt, unterstutzen die meisten Kartenleser PC/SC und keine zusatzliche Treiber
mussen geladen werden.
• Konfigurationsdateien und sonstige Daten, die vom Kartenleser benotigt werden,
z.B. smartkey.inf und ct32br.dll beim Kobil Kaan Advanced Kartenleser
• Die ApduChannelCard-Implementierung, die verwendet werden soll, muss angege-
ben werden, z.B. de.tud.cdc.cardservices.tcos20.TCOS20Card fur TCOS-2.0-
Chipkarten.
• Chipkartenspezifische Properties mussen geladen werden, z.B. tcos20.properties
fur TCOS-2.0-Chipkarten.
• Die Konfigurationsdatei opencard.properties [3] muss sich in einem der folgenden
Verzeichnisse befinden:
– [java.home]/lib/opencard.properties
– [user.home]/.opencard.properties
– [user.dir]/opencard.properties
– [user.dir]/.opencard.properties
Basierend auf den obigen Informationen konnen die Daten, die benotigt werden, um
die Schnittstellen zu initialisieren, in folgende Kategorien aufgeteilt werden:
36
KAPITEL 4. DESIGNENTSTEHUNG
• Externe Bibliotheken
• Kartenschnittstellenspezifische Daten
– native Bibliotheken
– Konfigurationsdateien
– Kartenlesertreiber fur die konkrete Kartenschnittstelle
• Kartenleserspezifische Daten
– native Bibliotheken (Kartenlesertreiber)
– Konfigurationsdateien
• Chipkartenspezifische Daten
– Konfigurationsdateien (Java-Property-Format)
Die externen Bibliotheken werden als zusatzliche Archive in der Applikation eingebun-
den, d.h. ihr Deployment verursacht keinen zusatzlichen Implementierungsaufwand. Beim
Starten des Applets werden sie vom Server auf den Clientrechner heruntergeladen und ste-
hen dem Applet zur Verfugung. Die nativen Bibliotheken und die Konfigurationsdateien
der Kartenschnittstellen mussen wiederum zur Laufzeit geladen werden. Voraussetzung
ist, dass die zu verwendende Kartenschnittstelle bekannt ist, damit die entsprechenden
Bibliotheken geladen werden. Die Kartenlesertreiber und die Konfigurationsdateien der
Chipkarten konnen auch nur zur Laufzeit geladen werden, nachdem die Applikation er-
mittelt hat, welche Kartenleser und Chipkarte gerade verwendet werden. Wie erkennt
die Applikation die gerade verwendeten Kartenschnittstelle, Kartenleser und Karte? Die
folgenden Abschnitten befassen sich mit der Beantwortung dieser Frage.
4.2.2 Auswahl der Kartenschnittstelle
Beim Starten des Applets muss festgelegt werden welche Kartenschnittstelle benutzt
werden soll. Dies ist notwendig, damit die Applikation weiß, welche SmartcardService-
Implementierung zu verwenden ist. Zwei Moglichkeiten sind hier vorgesehen: der Benutzer
kann die Kartenschnittstelle auf der Benutzeroberflache auswahlen oder die Kartenschnitt-
stelle wird vom Administrator als Konfigurationsparameter in der Konfigurationsdatei des
Applets angegeben. Die zweite Losung ist besser aus der Sicht der Benutzer, weil die Be-
nutzer die verschiedenen Kartenschnittstellen nicht kennen mussen und die Auswahl der
richtigen Kartenschnittstelle ist schwierig oder unmoglich. Diese Losung hat aber auch
einen Nachteil. Wenn die Kartenschnittstelle einmal konfiguriert ist, wird diese fur jede
Operation verwendet, die die Benutzer ausfuhren mochten. Es gibt allerdings Karten-
schnittstellen, die nicht alle Operationen unterstutzen, die mit dem Applet ausgefuhrt
werden sollen; z.B. eine Chipkarte kann uber die PKCS#11-Schnittstelle nicht geloscht
werden. Wenn ein Benutzer versucht, seine Karte zu loschen und die Applikation fur
die PKCS#11-Kartenschnittstelle konfiguriert ist, wurde die Operation fehlschlagen. Das
bedeutet, dass die angegebene Kartenschnittstelle nur als Defaultschnittstelle betrachtet
werden muss. Sobald eine Operation ausgefuhrt werden soll, die von dieser Kartenschnitt-
stelle nicht unterstutzt wird, muss das Applet im Hintergrund die Kartenschnittstelle mit
37
KAPITEL 4. DESIGNENTSTEHUNG
einer anderen austauschen, mit der die Operation ausfuhrbar ist.
Sowohl die Angabe der Kartenschnittstelle als Konfigurationsparameter, als auch die
Angabe uber die Benutzeroberflache, soll mit dem Applet moglich sein, damit die Flexi-
bilitat erhalten bleibt. Die Angabe uber die Benutzeroberflache kann außerdem zu Test-
zwecken sehr praktisch sein. Wenn keine Kartenschnittstelle in der Konfigurationsdatei
des Applets angegeben wurde, soll auf der ersten Seite des Applets eine Liste mit den
unterstutzten Kartenschnittstellen erscheinen. Der Benutzer kann die gewunschte Kar-
tenschnittstelle auswahlen. Falls die Kartenschnittstelle vorkonfiguriert wurde, wird die
Auswahlmoglichkeit auf der Benutzeroberflache entfernt.
4.2.3 Auswahl des Kartenlesers
Die meisten Kartenschnittstellen konnen ohne Kenntnis des Kartenlesers, der verwendet
wird, initialisiert werden. Dies ist nur bei der PKCS#11-Kartenschnittstelle nicht der
Fall. Fur die Kartenschnittstelleninitialisierung verlangt der Java-PKCS#11-Provider die
Angabe des PKCS#11-Kartenlesertreibers. Treiber sind kartenleserspezifisch, d.h es gibt
keinen Default-Treiber, der fur alle Kartenleser benutzt werden kann. Man muss genau den
Treiber des Kartenlesers angeben, der gerade verwendet wird. Der verwendete Kartenle-
ser muss also bekannt sein, bevor die Kartenschnittstelle initialisiert ist. Die automatische
Erkennung des Kartenlesers ist aber zu diesem Zeitpunkt nicht moglich, weil ohne initia-
lisierte Kartenschnittstelle keine Vebindung zum Kartenleser aufgebaut werden kann und
somit keine Information uber den Kartenleser verfugbar ist. Die einzige Moglichkeit, die
ubrig bleibt, ist die Angabe des verwendeten Kartenlesers uber die Benutzeroberflache
oder als Parameter in der Konfigurationsdatei vom FlexCardAdmin, wenn man davon
ausgehen kann, dass immer derselbe Kartenlesertyp mit dem Applet verwendet wird. Je
nachdem welcher Kartenleser gewahlt wurde, muss das Applet den entsprechenden Trei-
ber finden und diesen dem Java-PKCS#11-Provider ubergeben. Das bedeutet auch, dass
die (betriebssystemspezifischen) Treiber aller Kartenleser, die unterstutzt werden sollen,
der Applikation bekannt und in dem Lieferpaket enthalten sein mussen.
Auf den ersten Blick konnte man sagen, dass die Kartenleserangabe fur die anderen Kar-
tenschnittstellen nicht notwendig ist und die Auswahl des Kartenlesers (uber die Benut-
zeroberflache oder in der Konfigurationsdatei) nur fur die PKCS#11-Schnittstelle imple-
mentiert werden muss. Die restlichen Schnittstellen konnen ohne die Kartenleserangabe
bzw. ohne die Angabe eines konkreten Kartenlesertreibers initialisiert werden. Es kann
aber passieren, dass fur den Kartenleser, der gerade verwendet wird, doch ein Treiber fur
die Schnittstelle geladen werden muss, damit die Kommunikation mit dem Kartenleser
uber diese Schnittstelle moglich ist.Dieses Problem kann folgendermaßen gelost werden:
alle der Applikation bekannten Kartenlesertreiber werden bei der Initialisierung der Kar-
tenschnittstelle geladen, ohne den konkreten Treiber zu kennen, der tatsachlich benotigt
wird. Der Kartenleser erkennt spater den richtigen Treiber und verwendet ihn.
Bis jetzt spricht also alles dafur, die Kartenleserangabe nur fur die PKCS#11-Schnittstelle
38
KAPITEL 4. DESIGNENTSTEHUNG
zu ermoglichen. Allerdings gibt es Falle, in denen die Kartenschnittstelle mitten in der
Ausfuhrung des Applets ausgetauscht werden muss. Dies ist notwendig, wenn die gewahl-
te Kartenschnittstelle die auszufuhrende Smartcardoperation nicht unterstutzt. In diesem
Fall wird die Kartenschnittstelle im Hintergrund gegen die Defaultschnittstelle ausge-
tauscht. Wenn die Default-Kartenschnittstelle beispielsweise PKCS#11 ist und die Anga-
be des verwendeten Kartenlesers verlangt, stoßt man auf das Problem, dass das Applet den
richtigen Kartenlesertreiber nicht kennt, weil die urspunglich gewahlte Kartenschnittstelle
diesen nicht kennt. Somit kann die Default-Kartenschnittstelle nicht initialisiert werden.
Um dieses Problem zu umgehen ist die Entscheidung gefallen, die Moglichkeit zur Auswahl
des Kartenlesers (auf der Benutzeroberflache oder in der Konfigurationsdatei) fur jede
Kartenschnittstelle anzubieten und nicht nur speziell fur die PKCS#11-Schnittstelle.
Es bleibt nur noch zu klaren, wie der richtige Treiber erkannt wird, nachdem ein Karten-
leser ausgewahlt wurde. Es muss eine Zuordnung zwischen dem Kartenleser und seinem
Treiber geben. Diese kann in der Konfigurationsdatei des Applets abgebildet werden.
Fur jede Kombination aus Kartenleser, Kartenschnittstelle und Betriebssystem muss ein
Konfigurationsparameter angelegt werden, dessen Wert der Name der entsprechenden
Treiberdatei ist.
4.2.4 Auswahl der Chipkarte
Alle Kartenschnittstellen bis auf PKCS#11 verlangen bei ihrer Initialisierung die An-
gabe der verwendeten Chipkarte. Die ApduChannelCard-Implementierung, die verwen-
det werden soll, muss als Property der Kartenschnittstelle angegeben werden (z.B.
de.tud.cdc.cardservices.tcos20.TCOS20Card im Fall von TCOS-2.0-Chipkarten).
Die PKCS#11-Schnittstelle verlangt nicht die Kartenangabe, da sie eine High-Level-
Kartenschnittstelle ist, die vom Betriebssystem der Smartcard abstrahiert und prinzi-
piell mit allen Smartcards funktionsfahig ist. Trotzdem muss die verwendete Chipkarte
bekannt sein, damit die kartenspezifischen Properties geladen werden konnen. Genau-
so wie bei den Kartenlesern ist die automatische Erkennung der Karte nicht moglich,
weil keine Verbindung zu der Karte aufgebaut werden kann bevor die Kartenschnittstelle
initialisiert ist. D.h. der Typ der verwendeten Chipkarte muss angegeben werden. Hier
gibt es, wie bei der Auswahl der Kartenschnittstelle und des Kartenlesers, folgende zwei
Moglichkeiten: Die Chipkarte wird entweder auf der Benutzeroberflache ausgewahlt oder
als Konfigurationsparameter in der Konfigurationsdatei angegeben. Falls kein Konfigura-
tionsparameter angegeben wurde, erscheint auf der ersten Seite des Applets eine Liste der
unterstutzten Smartcards und der Benutzer muss diejenige auswahlen, die zu seiner Karte
passt. Falls eine Smartcard in der Konfigurationsdatei angegeben wird, verschwindet die
Auswahlmoglichkeit aus der Benutzerobrflache.
39
KAPITEL 4. DESIGNENTSTEHUNG
4.2.5 Die Verknupfung Kartenschnittstelle - Kartenoperation
Es gibt Operationen, die nicht uber jede beliebige Kartenschnittstelle realisierbar sind.
Das Applet muss flexibel genug sein, um zu erkennen, ob eine Operation mit der gewahl-
ten Kartenschnittstelle ausfuhrbar ist und entsprechend reagieren. Die Operation muss
uber die Kartenschnittstelle realisiert werden, uber die dies moglich ist. D.h es muss ei-
ne Default-Kartenschnittstelle fur jede Operation definiert werden. Abbildung 4.1 zeigt
welche Operation von welcher Kartenschnittstelle unterstutzt wird.
4.3 Kommunikation mit dem Enrollment-Server
FlexCardAdmin soll mit der vorhandenen Losung von FlexSecure interagieren, insbeson-
dere mit dem Enrollment-Server. Um dies zu realisieren, mussen die moglichen Formen
der Appletintegration analysiert werden und die Schnittstellen, uber die die Interaktion
stattfinden soll, definiert werden.
Das erste Szenario ware, dass das Grundgerust der bestehenden FlexSecure-Losung
unverandert bleibt und lediglich der Teil, der die Kommunikation mit der Chipkarte
ubernimmt, durch das neue Applet ersetzt wird. D.h. Benutzer loggen sich weiterhin uber
die Enrollment-Seite ein und anschließend wird das Applet gestartet, das die Verbindung
zu der Karte aufbaut. Im Detail bedeutet dies, dass folgende Schritte durchlaufen werden:
• Schritt 1: Login uber die Enrollment-Seite
Der Benutzer mochte eine bestimmte Operation mit seiner Chipkarte ausfuhren.
Er hat die notwendige TAN beantragt und bekommen. Er meldet sich mit seinem
Benutzernamen, Passwort und TAN auf der Login-Seite des Enrollment-Servers an,
um die Operation auszufuhren. Der Enrollment-Server leitet die Daten weiter an
ESI.
• Schritt 2: Datenprufung (ESI)
ESI uberpruft die Benutzerdaten mittels Datenbankabfragen sowie Abfragen am
LDAP-Server.
• Schritt 3: Kommunikation mit der Chipkarte mittels FlexCardAdmin
An dieser Stelle wird das Applet aufgerufen. Je nachdem welche Operation aus-
gefuhrt wird, werden Daten auf die Karte geschrieben, aktualisiert oder geloscht.
Daten, die das Applet eventuell benotigt, werden von der Enrollment-Webseite uber-
geben. Und umgekehrt alle Daten, die sich aus der Appletausfuhrung ergeben, wer-
den an die Enrollment-Seite weitergeleitet.
• Schritt 4: Datenubertragung (ESI)
Die Enrollment-Seite kummert sich darum, dass die richtigen Empfanger (z.B. die
CA) diese Daten bekommen.
40
KAPITEL 4. DESIGNENTSTEHUNG
Die Schnittstelle zwischen dem Applet und der Enrollment-Seite muss spezifiziert
werden. Es muss festgelegt werden, wie das Applet Daten von der Seite ubergeben
bekommt und umgekehrt wie das Applet Daten an die Seite schickt.
Jedes Mal, wenn eine Chipkartenoperation ausgefuhrt werden soll, muss sich der Benutzer
neu auf der Enrollment-Seite anmelden und das Applet wird neu gestartet. Beim Initia-
lisieren des Applets werden alle benotigten Bibliotheken neu geladen. Dies kann einige
Sekunden dauern. Nachdem das Applet gestartet ist und auf der Benutzeroberflache des
Applets die gewunschte Kombination aus Karte, Kartenleser und Kartenschnittstelle
gewahlt wurde (falls dies nicht schon vorkonfiguriert war), werden zusatzlich die Kar-
tenlesertreiber sowie alle Bibliotheken, die die Kartenschnittstellen benotigen, geladen.
D.h., die Wartezeiten zum Starten des Applets konnten steigen, wenn man mehrere
Operationen nacheinander ausfuhren mochte und das Applet mehrfach gestartet wird.
Um dieses Problem zu umgehen, konnte man das Einloggen am Enrollment-Server in
das Applet integrieren. Im Prinzip heisst das, dass die Enrollment-Seite in ein Applet
konvertiert wird. In diesem Fall wurden folgende Schritte durchlaufen werden:
• Schritt 1: FlexCardAdmin starten
Wenn die Login-Seite des Enrollment-Servers aufgerufen wurde, wird das Applet
gestartet.
• Schritt 2: Login zum Enrollment-Server uber das Applet
Der Benutzer meldet sich uber die Benutzeroberflache des Applets am Enrollment-
Server mit seinem Benutzernamen, Passwort und TAN an. Hier muss die Logik
zum Aufbau der Verbindung zum Enrollment-Server aus der Login-Seite im Applet
ubernommen werden.
• Schritt 3: Datenprufung (ESI)
ESI uberpruft die Benutzerdaten mittels Datenbankabfragen sowie Abfragen am
LDAP-Server.
• Schritt 4: Kommunikation mit der Chipkarte mittels FlexCardAdmin
Das Applet baut die Verbindung zu der Chipkarte auf und fuhrt die gewunschte
Operation aus.
• Schritt 5: Datenubertragung (ESI)
Das Applet wird nur einmal gestartet, auch wenn man mehrere Operationen nacheinan-
der ausfuhren mochte. Nach dem Initialisieren des Applets, wahrend dessen alle benotig-
ten Bibliotheken geladen werden, erscheint eine Benutzeroberflache zum Einloggen, uber
den der Benutzer sich am Enrollment-Server anmelden kann, bevor er eine Operation
ausfuhrt. Um eine neue Operation auszufuhren, muss man nur zu diese Login-Seite des
Applets zuruckspringen und sich mit einer anderen TAN einloggen. Das Laden der Bi-
bliotheken muss aber nicht wiederholt werden (solange man mit derselben Karte und
demselben Kartenleser arbeitet), somit werden die Wartezeiten verringert.
Das erste Szenario ist mit geringem Aufwand verbunden. Neben der Implementierung des
41
KAPITEL 4. DESIGNENTSTEHUNG
Applets selbst, muss die Schnittstelle zwischen dem Applet und der Enrollment-Seite de-
finiert werden. Das Applet muss zusatzlich in der Seite integriert werden. Um das zweite
Szenario zu realisieren ist der Aufwand großer, weil man zusatzlich den kompletten In-
halt der Enrollment-Seite in das Applet ubertragen muss. Wenn es oft vorkommt, dass
mehrere Chipkartenoperationen direkt nacheinander ausgefuhrt werden und wenn es vor-
gesehen ist, dass ein Benutzer mehr als eine TAN gleichzeitig besitzen darf, ware die zweite
Losung die bessere, ansonsten ist die erste Losung akzeptabel. In dieser Arbeit wird das
erste Szenario umgesetzt.
42
Kapitel 5
Technisches Konzept undImplementierung
Der Fokus dieses Kapitels ist auf die technische Umsetzung der Anforderungen gerichtet.
Die Software-Komponenten und deren Zusammenspiel werden dargestellt. Der Leser soll
somit befahigt werden, das verwendete Designprinzip zu verstehen und einen leichten
Einstieg zu finden, wenn Anderungen am System vorgenommen werden sollen.
5.1 Aufbau der Software
FlexCardAdmin ist ein Java-Applet, das in den HTML-Seiten des Enrollment-Servers in-
tegriert wird. Jedes Mal wenn die Webseite aufgerufen wird, wird der Appletcode auf
dem Clientrechner heruntergeladen und von der Java-Virtual-Machine des Browsers aus-
gefuhrt. Der Browser muss dafur Java-fahig sein. Neben der Anwendungslogik stellt das
Applet eine Benutzeroberflache zur Verfugung. Der Aufbau und das Zusammenspiel dieser
Komponenten ist an das”Model-View-Controller“-Pattern (MVC) angelehnt. Das MVC-
Pattern ist das Standardpattern fur Anwendungen, die Benutzerinteraktion voraussetzen
und eine Schnittstelle zum Benutzer anbieten. MVC ermoglicht die klare Trennung der
Benutzeroberflache von der Programmlogik. Durch diese Modularisierung lassen sich die
einzelnen Komponenten leicht austauschen, die Anwendung gewinnt an Flexibilitat und
Wiederverwendbarkeit und kann leichter gewartet werden. MVC besteht aus den drei
Komponenten Model, View und Controller. Das Model enthalt die Anwendungslogik, die
View reprasentiert die Benutzeroberflache und der Controller definiert wie die Anwendung
auf Benutzereingaben reagieren soll (siehe Abbildung 5.1). In FlexCardAdmin uberneh-
men diese Komponenten folgende Aufgaben:
• Die View reprasentiert die Benutzeroberflache des Applets, die in Form eines Wi-
zards aufgebaut ist. Die wichtigsten Klassen der View sind Wizard, WizardPanel
und WizardPanelDescriptor.
• Das Model ist fur die Initialisierung der Kartenschnittstellen zustandig und baut die
Verbindung zum Kartenleser und Smartcard uber die gewahlte Kartenschnittstelle
auf. Es ermoglicht das Laden verschiedener Bibliotheken und Properties, die von
den Kartenschnittstellen, Kartenlesern und Smartcards benotigt werden. Außerdem
43
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
lassen sich durch das Model die IDs der Kartenobjekte konstruieren, damit sie re-
ferenziert werden konnen. Die wichtigsten Klassen des Models sind Model, Loader,
CardPropLoader, CardReaderPropLoader und ObjectIdentifier.
• Die Hauptaufgabe des Controllers ist die Verarbeitung der Benutzereingaben
auf der Benutzeroberflache und die Ausfuhrung der Smartcardoperationen. Die
WizardPanelDescriptor-Klassen agieren als Vermittler zwischen der View und dem
Controller und leiten die Benutzereingaben an den Controller weiter. Der Controller
stellt fur jede primitive Smartcardoperation eine Action-Klasse zur Verfugung. In
Abhangigkeit davon, welche Smartcardoperation ausgefuhrt werden muss, instanzi-
iert der Controller eine der Action-Klassen, die fur die Ausfuhrung der Smartcard-
operation zustandig ist.
In den folgenden Abschnitten werden diese drei Komponenten naher beschrieben.
Abbildung 5.1: Model-View-Controller-Pattern
5.2 Die Benutzeroberflache
Die Klassen der Benutzeroberflache befinden sich im Paket
de.flexsecure.flexiTrust.flexcardadmin.view und seinen Unterpakete. Die
Benutzeroberfache basiert auf dem Java-Swing-Framework und ist in Form eines Wizard
[wiz] aufgebaut.
5.2.1 Wizard
Die Klasse Wizard definiert den Rahmen des Wizards und ist der Container fur verschie-
dene JPanels, die eingebunden werden konnen und die den Wizard mit Inhalt fullen. Die
zwei Tasten”Weiter“ und
”Zuruck“ dienen zur Navigation und zum Blattern durch die
Panels. Jedes Panel soll seinen Vorganger und seinen Nachfolger spezifizieren. Unter be-
stimmten Bedingungen konnen sich der Nachfolger und der Vorganger eines bestimmten
Panels andern. Wenn das aktuelle Panel keinen Vorganger hat, wird die Taste”Zuruck“
deaktiviert, und wenn kein Nachfolger vorhanden ist, ist die”Weiter“-Taste inaktiv. Der
44
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
Wizard enthalt zusatzlich eine Dropdown-Liste zur Auswahl der gewunschten Sprache.
Der Wizard besitzt ein Model und einen Controller. WizardModel halt die Wizarddaten
und den Wizardzustand, z.B. kennt WizardModel das aktuell im Wizard angezeigte Pa-
nel. WizardController bearbeitet die Events, die vom Wizard kommen, wenn die Tasten
gedruckt werden.
5.2.2 WizardPanel
Die Panels, die in den Wizard hinzugefugt werden konnen, sind Unterklassen von
WizardPanel. WizardPanel definiert die einheitliche Struktur seiner Unterklassen. Je-
des Panel besitzt einen Titel, der im oberen Teil angezeigt wird. Im unteren Teil ist
Platz fur Fehlermeldungen vorgesehen. Am linken Rand befindet sich eine Leiste, die
die gerade ausgefuhrte Operation anzeigt. In der Mitte kann jede Unterklasse von
WizardPanel ihren spezifischen Inhalt anzeigen. Abbildung 5.2 zeigt den Aufbau des
Wizards. Das Template Method-Design-Pattern [GHJV95] findet hier Verwendung. Die
Methode initComponents() der Klasse WizardPanel ist die Template-Methode, die die
Komponenten jedes Panels erzeugt. Sie ruft zusatzlich die Methode getMainPanel() auf,
die von jeder Unterklasse implementiert werden muss und den panelspezifischen Inhalt
definiert.
Abbildung 5.2: Der Aufbau des Wizards
Abbildung 5.3 zeigt alle WizardPanel-Klassen im Uberblick. Wenn das Applet gestar-
tet wird, wird zuerst das ConfigurationPanel im Wizard angezeigt. Dieses bietet die
Moglichkeit, die verwendete Kartenschnittstelle, den Kartenleser und die Smartcard aus-
zuwahlen. Da diese Angaben auch vom Administrator vorkonfiguriert werden konnen,
mussen sie nicht immer uber die Benutzeroberflache gemacht werden. Deshalb hat das
ConfigurationPanel unterschiedliche Versionen, je nachdem was konfiguriert wurde und
45
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
was uber die Benutzeroberflache angegeben werden muss. Einige dieser Versionen sieht
man in Abbildungen A.1 und A.2 im Anhang A.
Abbildung 5.3: Ubersicht der WizardPanels
Je nachdem welche Smartcardoperation ausgefuhrt werden soll, wird als nachstes das
Panel fur diese Operation angezeigt. Fur jede Smartcardoperation ist ein WizardPanel
vorgesehen:
• PersonaliseCardPanel: wird angezeigt, wenn eine Karte personalisiert werden soll
(auch wenn eine Notfall- oder Ersatzkarte erstellt wird). Der Benutzer muss die
Smartcard-PIN eingeben, bevor die Karte personalisiert werden kann. Der Inhalt
des Panels hangt davon ab, ob die PIN-Eingabe uber den Kartenleser oder uber die
Benutzeroberflache gemacht wird. Im ersten Fall wird im Panel einen Text angezeigt,
der beschreibt, wieviel mal die PIN am Kartenleser angegeben werden muss. Im
zweiten Fall werden zwei Eingabefelder angezeigt, in denen der Benutzer die PIN
eingeben muss. Abbildung A.3 im Anhang A zeigt das PersonaliseCardPanel.
• DeleteCardPanel: wird angezeigt, wenn eine Karte geloscht werden soll.
Das Loschen der Karte erfolgt nach einer PIN-Eingabe. Genauso wie beim
PersonaliseCardPanel variiert der Panelinhalt in Abhangigkeit von der Art der
PIN-Eingabe. Wenn die PIN-Eingabe uber den Kartenleser gemacht wird, erscheint
im Panel einen Text, der den Benutzer darauf hinweist, die PIN am Kartenleser
einzugeben. Wenn die PIN-Eingabe uber die Benutzeroberflache realisiert werden
soll, erscheint ein Eingabefeld, in dem die PIN eingegeben werden muss. Abbildung
A.4 im Anhang A zeigt das DeleteCardPanel.
• ChangePINPanel: wird angezeigt, wenn der Benutzer die PIN seiner Smartcard
andern mochte. Das Panel enthalt Felder zur Eingabe der bisherigen und der neu-
en PIN oder Text mit Instruktionen, wenn die PIN-Eingabe uber den Kartenleser
erfolgt. Abbildung A.6 im Anhang A zeigt das ChangePINPanel.
46
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
• ResetPINPanel: wird angezeigt, wenn die PIN der Karte entsperrt werden soll.
Der Benutzer wird aufgefordert die neue PIN der Karte anzugeben (entweder am
Kartenleser oder auf der Benutzeroberflache). Abbildung A.5 im Anhang A zeigt
das ResetPINPanel.
5.2.3 WizardPanelDescriptor
Jedes WizardPanel besitzt einen Identifikator, der eine Unterklasse von
WizardPanelDescriptor ist und dazu dient, das Panel identifizieren und referen-
zieren zu konnen. Wenn man durch die Panels im Wizard blattert und die”Weiter“-
oder”Zuruck“-Taste druckt, kann das aktuelle Panel seinen Nachfolger oder Vorganger
anhand des Identifikators referenzieren und im Wizard anzeigen lassen. Jedes konkrete
WizardPanelDescriptor spezifiziert außerdem das Verhalten kurz bevor, wahrend und
nachdem ein Panel im Wizard angezeigt wird. Somit konnen die Benutzereingaben
von der Benutzeroberflache an den Controller geschickt und dort im Hintergrund
die gewunschte Operation ausgefuhrt werden. Ein WizardPanelDescripor hat die
Aufgabe, die Benutzereingaben an den Controller weiterzuleiten. Abbildung 5.4 gibt
eine Ubersicht der vorhandenen Identifikatoren. Wie man sieht, ist die Hierarchie der
WizardPanelDescriptors parallel zur Hierarchie der WizardPanels.
Abbildung 5.4: Ubersicht der WizardPanelDescriptors
Die wichtigsten Methoden von WizardPanelDescriptor sind (siehe auch Abbildung
5.5):
• getPanelDescriptorIdentifier(): liefert die Kennung des Panels, das mit diesem
WizardPanelDescriptor identifiziert wird, in Form von einem String.
47
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
• setPanelDescriptorIdentifier(Object id): setzt die Kennung des Panels.
• getPanelComponent(): liefert das Panel, das mit diesem WizardPanelDescriptor
identifiziert wird.
• setPanelComponent(WizardPanel panel): setzt das Panel, das mit diesem
WizardPanelDescriptor identifiziert werden soll.
• getNextPanelDescriptor(): liefert die Kennung des nachsten Panels, das beim
Klicken auf”Weiter“ angezeigt werden soll. Diese Methode wird jedes Mal beim
Drucken des”Weiter“-Buttons aufgerufen. Sie muss von jeder Unterklasse uber-
schrieben werden.
• getBackPanelDescriptor(): liefert die Kennung des vorherigen Panels, das beim
Klicken auf”Zuruck“ angezeigt werden soll. Diese Methode wird jedes Mal beim
Drucken der”Zuruck“-Taste aufgerufen. Sie muss von jeder Unterklasse uberschrie-
ben werden.
• aboutToHidePanel(): hier soll jede Unterklasse definieren, welche Aktionen aus-
gefuhrt werden sollen, bevor das Panel aus dem Wizard entfernt wird.
• displayingPanel(): hier soll jede Unterklasse definieren, welche Aktionen aus-
gefuhrt werden sollen, wahrend das Panel angezeigt wird.
• aboutToDisplayPanel(): hier soll jede Unterklasse definieren, welche Aktionen aus-
gefuhrt werden sollen, bevor das Panel angezeigt wird.
Abbildung 5.5: Die Klasse WizardPanelDescriptor mit ihren Methoden
48
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
5.3 Das Model
Die Model-Klassen befinden sich im Paket de.flexsecure.flexiTrust.flexcardadmin.
model und seine Unterpakete. Diese halten alle Informationen bezuglich der verwendeten
Kartenschnittstelle, Kartenleser und Smartcard und haben die Aufgabe, die Verbindung
zum Kartenleser und Smartcard uber die gewahlte Kartenschnittstelle aufzubauen. Das
Model kann erst dann initialisiert werden, wenn es klar ist, welche Kartenschnittstel-
le, Kartenleser und Smartcard verwendet werden. Da dies im ersten Panel des Applets
(ConfigurationPanel) vom Benutzer festgelegt wird, wird das Model erst dann initia-
lisiert, wenn der Benutzer seine Angaben gemacht hat und auf”Weiter“ klickt. Im Fall,
dass die Angaben vom Administrator in der Konfigurationsdatei gemacht werden, wird
beim Klicken auf”Weiter“ die Konfigurationsdatei ausgelesen. Die Benutzer- bzw. Admi-
nistratoreingaben werden an den Controller weitergeleitet, der diese verwendet, um das
Model zu instanziieren. Abbildung 5.6 zeigt die Klasse Model und ihre Methoden.
Wie im Abschnitt 4.2.1 schon angesprochen, werden drei Arten von Daten benotigt, um
die verwendete Kartenschnittstelle zu initialisieren und die Verbindung zur Smartcard
aufzubauen:
• kartenschnittstellenspezifische Daten
• kartenleserspezifische Daten
• smartcardspezifische Daten
Dementsprechend sind die Model-Klassen in drei Gruppen aufgeteilt:
• Die Klassen, die die kartenleserspezifischen Daten verwalten, werden im Paket
de.flexsecure.flexiTrust.flexcardadmin.model.reader gekapselt.
• Die Klassen, die die kartenspezifischen Daten verwalten, werden im Paket
de.flexsecure.flexiTrust.flexcardadmin.model.card gruppiert.
• Die Klassen, die eine bestimmte Kartenschnittstelle verwalten, werden in ei-
nem Unterpaket vom de.flexsecure.flexiTrust.flexcardadmin.model unter-
gebracht. Zum Beispiel befinden sich im Paket de.flexsecure.flexiTrust.
flexcardadmin.model.pcsc die Klassen, die die Schnittstelle PC/SC verwalten.
Abbildung 5.9 gibt eine Ubersicht aller Model-Klassen, die in den nachsten Abschnitten
beschrieben werden.
5.3.1 Verwaltung der Kartenschnittstellendaten
Fur jede Kartenschnittstelle, die unterstutzt werden soll, muss eine Klasse erzeugt werden,
die von Model erbt. Der Name jeder Unterklasse ist eine Konkatenation des Kartenschnitt-
stellennamens, geschrieben in Großbuchstaben und ohne Sonderzeichen, und des Strings
”Model“. Z.B. heißt die Klasse zur Verwaltung der PKCS#11-Schnittstelle PKCS11Model.
Bei der Instanziierung eines Models, werden die verwendeten Smartcard und Kartenleser
dem Model-Konstruktor ubergeben. Anhand dieser Information wird die Verbindung zur
Smartcard aufgebaut.
49
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
Abbildung 5.6: Die Klasse Model
Jedes Model besitzt drei Hilfsobjekte:
• Loader
• ReaderDriver
• ObjectIdentifier
Loader
Um die Daten zu laden, die von einer bestimmten Kartenschnittstelle benotigt werden,
besitzt jedes Model einen Loader und delegiert alle Ladeaufgaben an ihn. Dieser Loader
wird mit der Methode createLoader() erzeugt, die von jeder Unterklasse vom Model
implementiert werden muss und einen Loader vom gewunschten Typ erzeugt. Pro
Kartenschnittstelle existiert eine Unterklasse von Loader. Der Name jeder Unterklasse
ist, ahnlich wie bei den Model-Unterklassen, eine Konkatenation des Kartenschnittstel-
lennamens, geschrieben in Großbuchstaben und ohne Sonderzeichen, und des Strings
”Loader“. Die Methode createLoader() sowie die Beziehung zwischen den Model- und
Loader-Klassen ist nach dem Design-Pattern Factory Method [GHJV95] aufgebaut. Mit
Hilfe dieses Design-Patterns werden die zwei parallele Klassenhierarchien aller Models
und Loaders miteinander verbunden. Ein PCSCModel besitzt einen PCSCLoader, ein
PKCS11Model besitzt einen PKCS11Loader und so weiter.
Die wichtigsten Methoden eines Loaders, die von den konkreten Unterklassen imple-
mentiert werden und die in den gleichnamigen Model-Methoden aufgerufen werden, sind
(siehe auch Abbildung 5.7):
50
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
• loadLibraries(): ladt die von der konkreten Kartenschnittstelle benotigten nati-
ven Bibliotheken, in Abhangigkeit des verwendeten Betriebssystems.
• loadReaderDrivers(): ladt alle Kartenlesertreiber, die in der Konfigurationsdatei
fur die konkrete Kartenschnittstelle und fur das verwendete Betriebssystem aufge-
listet sind.
• loadProperties(): ladt smartcard-, kartenleser- sowie schnittstellenspezifische
Properties. Um die kartenleser- bzw. smartcardspezifische Properties zu laden, be-
nutzt der Loader zwei Hilfsklassen CardPropLoader und CardReaderPropLoader,
auf die weiter unten naher eingegangen wird.
Abbildung 5.7: Die Klasse Loader mit den wichtigsten Methoden
ReaderDriver
Diese Klasse wird vom Framework SmartcardServices zur Verfugung gestellt und
dient dazu, die Verbindung zum Kartenleser aufzubauen. Bei der Instanziierung
eines ReaderDrivers mussen die Properties der verwendeten Smartcard, Karten-
leser und Kartenschnittstelle dem Konstruktor ubergeben werden. Hier wird die
Methode loadProperties() vom Loader benutzt, die diese Properties zuruck-
gibt. Nachdem ein ReaderDriver instanziiert wurde, wird dieser mit der Methode
loadReaderDriver(ReaderDriver driver) der Klasse CardManager, die auch vom Fra-
mework SmartcardServices zur Verfugung gestellt wird, geladen. Nach dem Laden ist die
Verbindung zum Kartenleser aufgebaut und dieser kann angesrpochen werden.
Pro Kartenschnittstelle existiert eine Unterklasse von ReaderDriver. Der Name jeder
Unterklasse ist eine Konkatenation des Kartenschnittstellennamens, geschrieben in Groß-
buchstaben ohne Sonderzeichen, und des Strings”ReaderDriver“. Ein ReaderDriver wird
mit der Methode createReaderDriver() der Klasse Model erzeugt, die von jeder Unter-
51
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
klasse von Model implementiert werden muss und einen ReaderDriver vom gewunschten
Typ zuruckgibt.
Die Methode createReaderDriver() sowie die Beziehung zwischen den Model- und
ReaderDriver-Klassen ist nach dem Design-Pattern Factory Method aufgebaut. Mit Hil-
fe dieses Design-Patterns werden die zwei parallelen Klassenhierarchien aller Models und
ReaderDrivers miteinander verbunden. Ein PCSCModel besitzt einen PCSCReaderDriver,
ein PKCS11Model besitzt einen PKCS11ReaderDriver und so weiter.
ObjectIdentifier
Wie im Abschnitt 4.1.3 schon angesprochen, besitzen Objekte auf der Karte IDs
(CardObjectID), damit sie referenziert werden konnen. Diese IDs unterscheiden sich
in Abhangigkeit von der verwendeten Kartenschnittstelle und Smartcard. Mit dem
ObjectIdentifier lassen sich diese IDs konstruieren. Dieser verwendet dabei die An-
gaben in der Konfigurationsdatei vom FlexCardAdmin. Dort werden die IDs pro Ap-
plikation, Kartenschnittstelle und Kartentyp fur die drei Arten von Objekten definiert:
offentliche Schlussel, private Schlussel und Zertifikate. Die IDs werden in der Konfigura-
tionsdatei als Strings angegeben. ObjectIdentifier wandelt diese in Objekte vom Typ
CardObjectID um. Außerdem liefert ObjectIdentifier Referenzen auf die einzelnen Ob-
jekte auf der Karte (CardObjectRef).
Pro Kartenschnittstelle muss eine Unterklasse von ObjectIdentifier definiert werden.
Der Name jeder Unterklasse ist eine Konkatenation des Kartenschnittstellennamens, ge-
schrieben in Großbuchstaben ohne jegliche Sonderzeichen, und des Strings”ObjectIden-
tifier“. Bei der Instanziierung eines ObjectIdentifiers wird der Typ der verwendeten
Smartcard dem Konstruktor ubergeben. Somit ist klar fur welche Smartcard die IDs kon-
struiert werden mussen.
Ein ObjectIdentifier wird mit der Methode createObjectIdentifier() der Klas-
se Model erzeugt, die von jeder Unterklasse von Model implementiert werden
muss und einen ObjectIdentifier vom gewunschten Typ zuruckgibt. Die Me-
thode createObjectIdentifier() sowie die Beziehung zwischen den Model- und
ObjectIdentifier-Klassen ist nach dem Design-Pattern Factory Method aufgebaut.
Mit Hilfe dieses Design-Patterns werden die zwei parallelen Klassenhierarchien aller
Models und ObjectIdentifiers miteinander verbunden. Ein PCSCModel besitzt einen
PCSCObjectIdentifier, ein PKCS11Model besitzt einen PKCS11ObjectIdentifier und
so weiter.
Jeder ObjectIdentifier besitzt einen CardObjectIdentifier, der die Konstruktion
der kartenspezifischen IDs ubernimmt. Fur jeden Kartentyp muss eine Unterklasse von
CardObjectIdentifier definiert werden. ObjectIdentifier bestimmt zur Laufzeit den
konkreten Typ des CardObjectIdentifiers, der instanziiert werden muss, in Abhangig-
keit vom Kartentyp, der dem ObjectIdentifier-Konstruktor ubergeben wird.
Abblidung 5.8 zeigt die wichtigsten Methoden von ObjectIdentifier.
52
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
Abbildung 5.8: Die Klasse ObjectIdentifier mit den wichtigsten Methoden
5.3.2 Verwaltung der Kartenleserdaten
Um kartenleserspezifische Properties sowie andere Daten zu laden, gibt es die
Klasse CardReaderPropLoader. Fur jeden Kartenleser muss eine Unterklasse von
CardReaderPropLoader definiert werden. Der Name jeder Unterklasse ist eine Konka-
tenation des Kartenlesernamens, geschrieben in Großbuchstaben ohne Sonderzeichen,
und des Strings”CardReaderPropLoader“. Fur die KOBIL-Kartenleser heißt die Klasse
KOBILCardReaderPropLoader. Diese stellt sicher, dass alle Voraussetzungen zur Einsatz-
bereitschaft der KOBIL-Kartenleser erfullt sind:
• Die Konfigurationsdatei smartkey.inf muss sich im Homeverzeichnis des Benutzers
befinden.
• Die Bibliothek ct32br.dll bzw. libct.so muss sich im Homeverzeichnis des Be-
nutzers befinden.
• In der Datei smartkey.inf soll das Attribut CT-Api mit dem Pfad zur Bibliothek
ct32br.dll bzw. libct.so initialisiert werden.
CardReaderPropLoaders werden vom Loader instanziiert. Der Loader bestimmt zur Lauf-
zeit den konkreten Typ des CardReaderPropLoaders, in Abhangigkeit vom Kartenleser-
typ, der dem Loader-Konstruktor ubergeben wird. Die Instanz wird mit der Loader-
Methode createCardReaderPropLoader() erzeugt.
5.3.3 Verwaltung der Smartcard-Daten
Um smartcardspezifische Properties sowie andere Daten zu laden, gibt es die Klasse
CardPropLoader. Fur jeden Kartentyp muss eine Unterklasse von CardPropLoader de-
finiert werden. Der Name jeder Unterklasse ist eine Konkatenation des Kartentyps, ge-
schrieben in Großbuchstaben ohne Sonderzeichen, und des Strings”CardPropLoader“.
Fur die TCOS-2.0-Smartcards heißt die Klasse TCOS20CardPropLoader.
53
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
CardPropLoaders werden vom Loader instanziiert. Der Loader bestimmt zur Lauf-
zeit den konkreten Typ des CardPropLoaders, in Abhangigkeit vom Kartentyp, der
dem Loader-Konstruktor ubergeben wird. Die Instanz wird mit der Loader-Methode
createCardPropLoader() erzeugt.
5.4 Der Controller
Der Controller wird von der Controller-Klasse sowie eine Gruppe von
Action-Klassen reprasentiert. Die Controller-Klasse befindet sich im Paket
de.flexsecure.flexiTrust.flexcardadmin. Zu ihren wichtigsten Aufgaben gehoren:
• das Erzeugen der View und des Models
• das Auslesen der Konfigurationsdatei
• das Setzen des Arbeitsverzeichnisses vom FlexCardAdmin
• die Spezifikation der vom FlexCardAdmin unterstutzten Kartenleser, Smartcards,
Kartenschnittstellen und Sprachen
Die Hauptaufgabe des Controllers bleibt allerdings die Verarbeitung der Benutzerein-
gaben auf der Benutzeroberflache und die Ausfuhrung der Smartcardoperationen. Die
WizardPanelDescriptor-Klassen dienen als Vermittler, die die Benutzereingaben dem
Controller zur Verfugung stellen. Nachdem der Benutzer seine Eingaben auf der gra-
phischen Oberflache gemacht hat, leitet der konkrete WizardPanelDescriptor die Be-
nutzereingaben an den Controller weiter, der in Abhangigkeit davon, welche Operation
ausgefuhrt werden soll, die entsprechende Action-Unterklasse instanziiert, die sich um die
Ausfuhrung der Smartcardoperation kummert. Die Realisierung jeder primitiven Smart-
cardoperation ist in einer Action-Unterklasse ausgelagert. Alle Actions befinden sich im
Paket de.flexsecure.flexiTrust.flexcardadmin.action. Jede Action muss die Me-
thode perform() implementieren und dort die Schritte zur Ausfuhrung der Operation
spezifizieren. Abbildung 5.10 gibt eine Ubersicht der vorhandenen Action-Unterklassen.
In den folgenden Abschnitten wird beschrieben wie die einzelnen Action-Klassen einge-
setzt werden, um die Smartcardoperationen auszufuhren.
5.4.1 Personalisieren einer Smartcard
Die Kartenpersonalisierung besteht aus folgenden Schritten, die nacheinander durch-
gefuhrt werden:
1. PIN und PUK zusammen mit Fehlbedienungszahler auf die Karte schreiben
2. zwei Schlusselpaare auf der Karte erzeugen (fur Signatur und Windows-Logon)
3. zwei PKCS#10-Zertifikatsantrage erstellen
4. die zwei fertigen Zertifikate (fur Signatur und Windows-Logon) auf die Karte schrei-
ben
5. den Inhalt einer PKCS#12-Datei (Verschlusselungszertifikat und das zugehorige
Schlusselpaar) auf die Karte schreiben
54
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
CreatePasswordsAction ubernimmt die Aufgabe, die PIN und PUK auf die Karte zu
schreiben. Die PIN und PUK werden von der FlexiTrust-CA generiert und als Applet-
parameter dem Applet ubergeben. Beide sind 3DES-verschlusselt. Der Verschlusselungs-
schlussel ist im Applet einkompiliert und wird von FlexCardAdmin benutzt, um beide
Passworter zu entschlusseln. Die PIN wird dem Benutzer auf der Webseite mit dem App-
let angezeigt. Anschließend kann der Benutzer die PIN selbst eingeben. Die eingegebene
PIN wird mit der automatisch generierten PIN verglichen und es wird uberpruft, ob beide
ubereinstimmen. Wenn dies der Fall ist, werden die PIN und die PUK zuerst entschlusselt
und danach auf die Karte geschrieben.
GenerateKeyPairAction ist fur das Erzeugen von Schlusselpaaren auf der Karte
zustandig. Jedes Schlusselpaar wird fur eine konkrete Applikation generiert und muss
an der Stelle auf der Karte geschrieben werden, die fur diese Applikation vorgesehen ist.
Die Applikation, fur die das neue Schlusselpaar generiert wird, wird als Appletparameter
ubergeben. Dieser Parameter wird bei der Instanziierung von GenerateKeyPairAction
benutzt. Mit der angegebenen Applikation wird vor der Schlusselgenerierung die Kon-
figurationsdatei ausgelesen, in der spezifiziert ist, an welcher Stelle auf der Karte das
Schlusselpaar fur diese Applikation (und die verwendete Kartenschnittstelle) zu speichern
ist, sowie die Schlussellange. Anschließend wird das Schlusselpaar erzeugt und nach eine
PIN-Eingabe auf die Karte geschrieben.
CreateCertRequestAction erstellt einen PKCS#10-Zertifikatsantrag. Bei dieser Opera-
tion ist die Angabe der Applikation, fur die das Zertifikat erstellt werden soll, erforderlich.
Die Applikation wird als Appletparameter ubergeben. Mit ihrer Hilfe wird die Konfigura-
tionsdatei ausgelesen, um die Stelle auf der Karte zu finden, an der das Schlusselpaar fur
diese Applikation gespeichert ist. Mit der Kenntnis der Schlussel kann der Zertifikatsan-
trag erstellt werden. Der fertige Antrag wird an den Browser geschickt, indem der Wert
eines HTML-Formularfeldes in der aktuellen HTML-Seite mit dem Base64-kodierten Zer-
tifikatsantrag gesetzt wird. Hier kommt die Technologie LiveConnect zum Einsatz, die
im Abschnitt 2.2.2 beschrieben wurde. Der Name des HTML-Feldes, das der fertige Zer-
tifikatsantrag halt und das HTML-Formular, in dem sich das Feld befindet, werden als
Appletparameter spezifiziert und vor der Ausfuhrung der Operation ausgelesen.
Die Zertifikatsantrage werden vom Browser an die FlexiTrust-CA geschickt, die die Zer-
tifikate erstellt. Die fertigen Zertifikate werden in Base64-kodierter Form an das Applet
als Parameter zuruckgegeben. WriteCertificateAction liest diese Parameter aus und
schreibt die Zertifikate auf die Karte.
FlexiTrust-CA erzeugt zusatzlich das Verschlusselungsschlusselpaar sowie das zugehori-
ge Zertifikat. Diese werden im PKCS#12-Format Base64-kodiert an das Applet als
Parameter ubergeben. Das PKCS#12-Passwort wird auch als Appletparameter 3DES-
verschlusselt ubergeben. WriteP12Action liest diese Parameter aus und schreibt die
Schlussel und das Zertifikat auf die Karte.
Die Aufteilung der Kartenpersonalisierung in mehreren Actions bietet mehr Flexibilitat.
Auf diese Weise konnen die einzelnen Operationen beliebig kombiniert und in beliebiger
Reihenfolge ausgefuhrt werden. Die Anzahl der Schlusselpaare, Zertifikatsantrage oder
57
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
Zertifikate, die erzeugt werden, ist nicht festgelegt und kann je nach Anwendungsfall uber
die Appletparameter spezifiziert werden.
5.4.2 Entsperren der Smartcard
Das Entperren der Smartcard wird von ResetPINAction realisiert. Diese Action benotigt
die PUK der Karte und die neue PIN. Da der Benutzer die PUK nicht kennt, wird diese
als Appletparameter in 3DES-verschlusselter Form ubergeben. Eine neue PIN wird von
der FlexiTrust-CA generiert, dem Benutzer auf der Seite mit dem Applet angezeigt und
auch als Appletparameter ubergeben. Es wird zuerst uberpruft, ob die Karte tatsachlich
gesperrt ist. Danach wird die vom Benutzer eingegebenen PIN mit der automatisch ge-
nerierten verglichen. Wenn beide ubereinstimmen, wird die PUK entschlusselt, die Karte
entsperrt und die neue PIN auf die Karte geschrieben.
5.4.3 Loschen der Karteninhalte
Die Karteninhalte werden mittels DeleteCardAction geloscht. Diese Action benotigt die
PIN der Karte, damit sie sich auf der Karte einloggen kann, und die PUK, um die Karte zu
loschen. Die zwei Passworter werden hier genauso wie beim Entsperren der Smartcard als
Appletparameter ubergeben. Nachdem die PIN-Eingabe vom Benutzer uberpruft wurde,
wird die PUK entschlusselt und die Karte geloscht.
5.4.4 PIN andern
Die PIN wird mittels ChangePINAction geandert. Die neue PIN wird von der FlexiTrust-
CA generiert, dem Benutzer auf der Seite mit dem Applet angezeigt und als Applet-
parameter ubergeben. Der Benutzer gibt die bisherige und die neue PIN ein. Die zwei
PIN-Eingaben werden uberpruft. Wenn die bisherige PIN korrekt ist und die neue PIN
mit der automatisch generierten ubereinstimmt, wird die PIN der Karte geandert.
5.5 Schnittstelle zum Enrollment-Server
FlexCardAdmin wird in den HTML-Seiten des Enrollment-Servers integriert. Beide be-
finden sich in standiger Kommunikation: bei der Ausfuhrung jeder Smartcardoperation
werden bestimmte Daten vom Enrollment-Server an das Applet ubergeben und umge-
kehrt. Das Applet bekommt Daten vom Enrollment-Server uber seine Parameter und
schickt Daten nach außen mithilfe der LiveConnect-Technologie (siehe Abschnitt 2.2.2).
Bestimmte Daten werden bei jeder Smartcardoperation zwischen FlexCardAdmin und
dem Enrollment-Server ausgetauscht. Deswegen werden fur diese Daten, unabhangig von
der Smartcardoperation, dieselben Appletparameter verwendet. Nur bei der Kartenper-
sonalisierung werden zusatzliche Parameter benotigt, die fur diese konkrete Operation
spezifisch sind.
58
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
5.5.1 Allgemeine Applet-Parameter
Folgende Parameter werden bei jeder Smartcardoperation vom Enrollment-Server an das
Applet ubergeben:
• TANFOR: dieser Parameter besagt, welche Smartcardoperation von FlexCardAd-
min ausgefuhrt werden soll. Der Parameter wird in Abhangigkeit davon gesetzt,
welche TAN der Benutzer auf der Enrollment-Seite eingegeben hat und fur welche
Operation diese generiert wurde. Die erlaubten Parameterwerte sind:
– NEWCARD: das Applet soll in diesem Fall eine Kartenpersonalisierung
durchfuhren
– DELETE: bezeichnet, dass das Applet die Smartcard loschen soll
– PINRESET: gibt an, dass die Smartcard entsperrt werden soll
– PINCHANGE: bezeichnet, dass die PIN geandert werden soll
– REPLACEMENT: eine Ersatzkarte soll vom Applet erstellt werden
– EMERGENCY: eine Notfallkarte soll erstellt werden
• TANFORCARDID: dieser Parameter halt die Nummer der Karte, fur die die TAN
generiert wurde und fur die die Smartcardoperation erlaubt ist.
• ENCCARDPIN: halt die automatisch generierte 3DES-verschlusselte Smartcard-
PIN. Der Verschlusselungschlussel ist im Applet einkompiliert und wird von Flex-
CardAdmin benutzt, um die PIN zu entschlusseln.
• ENCCARDPUK: halt die automatisch generierte 3DES-verschlusselte Smartcard-
PUK. Die PUK wird mit demselben Schlussel wie die PIN entschlusselt.
• ENCCARDPUKOLD: halt die PUK, die schon auf der Karte gespeichert ist, ver-
schlusselt mit 3DES. Wenn eine Karte zum ersten Mal personalisiert wird, wird
dieser Parameter nicht benutzt.
Im Folgenden sieht man ein Beispiel davon, wie die Parameterwerte aussehen konnen.
Der Wert von ENCARDPIN reprasentiert die 3DES-verschlusselte Base64-kodierte PIN
123456, ENCARDPUK enthalt die 3DES-verschlusselte Base64-kodierte PUK 123456 und
ENCARDPUKOLD ist die 3DES-verschlusselte Base64-kodierte PUK 654321.
<APPLET ...><PARAM name=TANFOR value="’NEWCARD"><PARAM name=TANFORCARDID value="8949017200001762803"><PARAM name=ENCCARDPIN value="cPnR/ibd7yZHWsY5jmiGSg=="><PARAM name=ENCCARDPUK value="cPnR/ibd7yZHWsY5jmiGSg=="><PARAM name=ENCCARDPUKOLD value="cPnR/ibd7yZC3Q6yErPS7g==">
</APPLET>
5.5.2 Datenaustausch bei der Smartcard-Personalisierung
Die Kartenpersonalisierung ist die komplizierteste Smartcardoperation von allen. Diese
ist eine Aneinanderreihung verschiedener einfachen Operationen. Um ihre Ausfuhrung
59
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
moglichst flexibel zu halten, wurden einzelne Kommandos fur jede einzelne Operation de-
finiert, so dass diese in beliebiger Reihenfolge und auch mehrfach nacheinander ausgefuhrt
werden konnen. Diese Kommandos werden dem Applet als Parameter mit dem Namen
CMDX ubergeben (wobei X die Kommandonummer ist, beginnend mit 0) und nachein-
ander abgearbeitet. Bei jedem Kommando werden Daten auf der Karte entweder gelesen
oder aktualisiert. Jede Operation bearbeitet die Daten einer konkreten Applikation. D.h.,
es werden immer die Daten gelesen oder aktualisiert, die fur eine spezifische Applikation
verwendet werden. Damit das Applet weiß, an welcher Stelle auf der Karte die benotigten
Daten zu finden sind oder geschrieben werden sollen, muss es die Applikation kennen. Des-
wegen gibt es neben jedem Kommando einen zusatzlichen Applet-Patameter APPLX (X
steht fur die Nummer des Kommandos, bei dessen Ausfuhrung diese Applikationsangabe
benutzt wird), der die Applikation angibt. Folgende Kommandos werden unterstutzt, die
man als Wert des Parameters CMDX ubergeben kann:
• CREATE PWD: dieses Kommando bedeutet, dass die PIN und die PUK auf der
Karte geschrieben werden sollen. Die PIN und PUK, die mit den Parametern EN-
CARDPIN und ENCARDPUK dem Applet ubergeben werden, werden auf der Kar-
te geschrieben.
• GENKEY: mit diesem Kommando wird ein Schlusselpaar auf der Karte generiert.
Der APPLX-Parameter muss immer mitgegeben werden, damit es klar ist, fur wel-
che Applikation das neue Schlusselpaar angelegt wird. Die Schlussel werden an der
Stelle auf der Karte geschrieben, die fur diese Applikation vordefiniert wurde. Die-
ses Kommando kann mehrfach an das Applet ubergeben werden, wenn mehrere
Schlusselpaare auf der Karte erzeugt werden sollen.
• PKCS10: mit diesem Kommando kann ein PKCS#10-Zertifikatsantrag erstellt und
an den Enrollment-Server geschickt werden. Der Antrag wird fur das Schlussel-
paar einer bestimmten Applikation erstellt. Damit das richtige Schlusselpaar aus
der Karte ausgelesen wird, wird die Applikation in dem Parameter APPLX spe-
zifiziert. Nachdem der PKCS#10-Antrag von FlexCardAdmin erstellt wurde, wird
dieser in Base64-kodierter Form an die HTML-Seite ubergeben, indem er als Wert
eines Input-Feldes in einem HTML-Formular gesetzt wird. Der Name des HTML-
Formulars und des Input-Feldes werden dem Applet in den Parametern FORMX
und ELEMENTX mitgeteilt. X steht hier wieder fur die Kommandonummer.
Der PKCS#10-Antrag wird an den Server geschickt, indem das Applet eine
JavaScript-Funktion aufruft, die die Formulareingaben losschickt. Der Name dieser
JavaScript-Funktion wird in dem Appletparameter SUBMIT METHOD angegeben.
Das HTML-Formular sowie die JavaScript-Funktion sieht man in der Abbildung
5.12.
• WRITE P12: dieses Kommando schreibt den Inhalt einer PKCS#12-Datei (ein
Schlusselpaar und das zugehorige Zertifikat) auf die Karte. Der Base64-kodierte
Inhalt der PKCS#12-Datei wird uber den Parameter P12 dem Applet uberge-
ben. Das Passwort, mit dem die PKCS#12-Datei geschutzt ist, ist mit dem 3DES-
Algorithmus verschlusselt und wird im Parameter ENCP12PW gehalten. Fur dieses
60
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
Kommando wird auch zusatzlich der Parameter APPLX benotigt, der die Applika-
tion angibt, fur die die Schlussel und das Zertifikat verwendet werden. Somit kann
das Applet die richtige Stelle auf der Karte ermitteln, auf der die Daten gespeichert
werden sollen.
• WRITE CERT: mit diesem Kommando wird ein Zertifikat auf der Karte geschrie-
ben. Das Zertifikat wird in Base64-kodierter Form im Parameter DATAX gehalten,
wobei X die Nummer des WRITE CERT-Kommandos ist. Der Parameter APPLX
gibt die Applikation an, fur die das Zertifikat erstellt wurde und hilft die Position
des Zertifikats auf der Karte zu lokalisieren.
Abbildung 5.11 zeigt eine schematische Darstellung des Datenaustausches zwischen dem
Enrollment-Server, FlexCardAdmin und der Smartcard wahrend der Kartenpersonalisie-
rung. Dort sieht man auch die einzelnen Applet-Kommandos und die Reihenfolge, in der
diese ausgefuhrt werden.
Nachdem die PKCS#10-Antrage vom Applet erzeugt werden und an den Enrollment-
Server geschickt werden, wird eine neue HTML-Seite geladen, in der die fertigen Zertifi-
kate dem Applet ubergeben werden. FlexCardAdmin wird beim Laden dieser Seite neu
gestartet. Normalerweise wird nach dem Start des Applets zuerst das Panel gezeigt, auf
dem man festlegen kann, welche Kartenschnittstelle, Smartcard und Kartenleser wahrend
der Ausfuhrung der Smartcardoperationen benutzt werden soll. Dieses Panel ist hier nicht
notig, da diese Angaben schon beim ersten Start des Applets gemacht wurden. Damit das
erste Panel des Applets ubersprungen werden kann, das Applet aber trotzdem die Infor-
mation hat, welche Kartenschnittstelle, Smartcard und Kartenleser benutzt werden soll,
werden diese drei Angaben vom”ersten“ Applet an den Enrollment-Server und von dort an
das”zweite“ Applet weitergereicht. Das erste Applet setzt drei Input-Felder eines HTML-
Formulars mit diesen Daten, bevor das Formular an den Server geschickt wird. Beim zwei-
ten Start des Applets werden diese drei Angaben als Parameter dem Applet ubergeben.
Diese sind die Parameter CARD OS, CARD INTERFACE und CARD READER. Die
Namen des HTML-Formulars und der drei Input-Felder, in denen das”erste“ Applet die
verwendete Kartenschnittstelle, Smartcard und Kartenleser angeben muss, werden ihm
mithilfe folgender Parameter mitgeteilt:
• FORM CARD OS: der Name des HTML-Formulars, in dem das Applet der Typ
der verwendeten Smartcard festlegt
• ELEMENT CARD OS: das Input-Feld im obigen HTML-Formular, das der Smart-
cardtyp halt
• FORM CARD INTERFACE: der Name des HTML-Formulars, in dem das Applet
die verwendete Kartenschnittstelle festlegt
• ELEMENT CARD INTERFACE: das Input-Feld im obigen HTML-Formular, das
die Kartenschnittstelle halt
• FORM CARD READER: der Name des HTML-Formulars, in dem das Applet der
Typ des verwendeten Kartenlesers festlegt
• ELEMENT CARD READER: das Input-Feld in dem obigen HTML-Formular, dass
61
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
den Kartenlesernamen halt
Abbildungen 5.13 und 5.14 zeigen wie FlexCardAdmin in den HTML-Seiten des
Enrollment-Servers eingebunden wird. Die erste Abbildung zeigt das Applet, das den er-
sten Teil der Kartenpersonalisierung durchfuhrt, und die zweite Abbildung - das Applet,
das die Kartenpersonalisierung zu Ende bringt.
5.5.3 Zertifikat auslesen
FlexCardAdmin unterstutzt ein zusatzliches Kommando READ CERT, mit dem ein Zer-
tifikat, das sich auf der Karte befindet, ausgelesen werden kann. Mit dem Patameter
APPLx sollte die Applikation spezifiziert werden, fur die das Zertifikat verwendet wird,
damit das Applet das Zertifikat auf der Karte erkennen kann. Das ausgelesene Zertifikat
wird einem HTML-Formular ubergeben. Mit den Parametern FORMx und ELEMENTx
kann der Formularname und der Input-Feldname spezifiziert werden:
<PARAM name=CMD0 value="READ_CERT"><PARAM name=APPL0 value="APPL1"><PARAM name=FORM0 value="ReadCertForm"><PARAM name=ELEMENT0 value="CERT-PEM0">
5.6 Konfiguration
Das Verhalten von FlexCardAdmin kann uber seine XML-Konfigurationsdatei
flexCardAdmin.xml gesteuert werden. Dort sind verschiedene Parameter enthalten, die
in den folgenden Abschnitten beschrieben werden. Das Wurzelelement in der Datei ist
<flexcardadmin>. Dieses hat Kinder-Elemente, in denen die Parameter gruppiert sind.
Jeder Parameter ist mittels des <param>-Tag definiert und besitzt zwei Attribute: key
und value. Key ist der Name des Parameters und value - sein Wert. Das value-Attribut
ist anpassbar, das key-Attribut darf nicht verandert werden.
5.6.1 Allgemeine Parameter
Folgende allgemeine Parameter sind vorhanden:
• choose operation: Im Normalfall wird die Smartcardoperation, die vom Applet
ausgefuhrt werden soll, via einem Appletparameter festgelegt, der vom Enrollment-
Server gesetzt wird, in Abhangigkeit davon fur welche Operation die Benutzer-TAN
generiert wurde. Das Applet sieht zusatzlich eine zweite Moglichkeit vor, die Ope-
ration auszuwahlen, indem der Benutzer selbst die Operation auf der Benutzerober-
flache angibt. Dies erfordert allerdings einige Anderungen in der Benutzeroberflache
und der Logik des Applets, sowie in dem Ablauf der ausgefuhrten Operationen. In
62
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
Abbildung 5.11: Datenaustausch zwischen dem Enrollment-Server, FlexCardAdmin undder Smartcard
63
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
<script language=JavaScript type="text/javascript">function submitForm() {
document.CertRequestForm.submit();}
</script>
<form name="CertRequestForm" action="${SUBMIT-URL}" method="POST"><table>
<tr><td align="right">
<input type="hidden" name="GenRequest0"><input type="hidden" name="GenRequest1"><input type="hidden" name="GenRequest2"><input type="hidden" name="CardOS" value="${CARD_OS}"/><input type="hidden" name="CardInterface" value="${CARD_INTERFACE}"/><input type="hidden" name="CardReader" value="${CARD_READER}"/>....
</td></tr>
</table></form>
Abbildung 5.12: Das HTML-Formular CertRequestForm und die JavaScript-FunktionsubmitForm()
64
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
<APPLET codebase="${SERVERNAME}/xenroll"code="de.flexsecure.flexiTrust.flexcardadmin.FlexCardApplet.class"name="FlexCardApplet" WIDTH="640" HEIGHT="370"align="BOTTOM"archive="flexCardAdmin_signed.jar,cardservices.jar,fs_util.jar,
nativelibs_signed.jar,p11.jar,jpcsc.jar,base-opt.jar,base-core.jar,pcsc-wrapper-2.0.jar,codec.jar,FlexiCoreProvider-1.1.5p7.signed.jar"
MAYSCRIPT>
<PARAM name=TANFOR value="${TANFOR}"><PARAM name=TANFORCARDID value="${CARDID}"><PARAM name=ENCCARDPIN value="${ENCCARDPIN}"><PARAM name=ENCCARDPUK value="${ENCCARDPUK}"><PARAM name=ENCCARDPUKOLD value="${ENCCARDPUKOLD}">
<PARAM name=CMD0 value="CREATE_PWD">
<PARAM name=CMD1 value="GENKEY"><PARAM name=APPL1 value="APPL1">
<PARAM name=CMD2 value="GENKEY"><PARAM name=APPL2 value="APPL2">
<PARAM name=CMD3 value="PKCS10"><PARAM name=APPL3 value="APPL1"><PARAM name=FORM3 value="CertRequestForm"><PARAM name=ELEMENT3 value="GenRequest0">
<PARAM name=CMD4 value="PKCS10"><PARAM name=APPL4 value="APPL2"><PARAM name=FORM4 value="CertRequestForm"><PARAM name=ELEMENT4 value="GenRequest1">
<PARAM name=FORM_CARD_OS value="CertRequestForm"><PARAM name=ELEMENT_CARD_OS value="CardOS">
<PARAM name=FORM_CARD_INTERFACE value="CertRequestForm"><PARAM name=ELEMENT_CARD_INTERFACE value="CardInterface">
<PARAM name=FORM_CARD_READER value="CertRequestForm"><PARAM name=ELEMENT_CARD_READER value="CardReader">
<PARAM name=SUBMIT_METHOD value="submitForm"></APPLET>
Abbildung 5.13: Integration von FlexCardAdmin in der ES-Seite im Fall einer Kartenper-sonalisierung (Teil 1)
65
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
<APPLET codebase="${SERVERNAME}/xenroll"code="de.flexsecure.flexiTrust.flexcardadmin.FlexCardApplet.class"name="FlexCardApplet" WIDTH="640" HEIGHT="370"align="BOTTOM"archive="flexCardAdmin_signed.jar,cardservices.jar,fs_util.jar,
nativelibs_signed.jar,p11.jar,jpcsc.jar,base-opt.jar,base-core.jar,pcsc-wrapper-2.0.jar,codec.jar,FlexiCoreProvider-1.1.5p7.signed.jar"
MAYSCRIPT>
<PARAM name=TANFOR value="${TANFOR}"><PARAM name=TANFORCARDID value="${CARDID}"><PARAM name=ENCCARDPIN value="${ENCCARDPIN}"><PARAM name=ENCCARDPUK value="${ENCCARDPUK}"><PARAM name=ENCCARDPUKOLD value="${ENCCARDPUKOLD}">
<PARAM name=CMD0 value="WRITE_P12"><PARAM name=APPL0 value="APPL0"><PARAM name=P12 value="${P12}"><PARAM name=ENCP12PW value="${P12PW}">
<PARAM name=CMD1 value="WRITE_CERT"><PARAM name=APPL1 value="APPL1"><PARAM name=DATA1 value="${CERT-PEM0}">
<PARAM name=CMD2 value="WRITE_CERT"><PARAM name=APPL2 value="APPL2"><PARAM name=DATA2 value="${CERT-PEM1}">
<PARAM name=CARD_OS value="${CARD_OS}"><PARAM name=CARD_INTERFACE value="${CARD_INTERFACE}"><PARAM name=CARD_READER value="${CARD_READER}">
</APPLET>
Abbildung 5.14: Integration von FlexCardAdmin in der ES-Seite im Fall einer Kartenper-sonalisierung (Teil 2)
66
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
<APPLET codebase="${SERVERNAME}/xenroll"code="de.flexsecure.flexiTrust.flexcardadmin.FlexCardApplet.class"name="FlexCardApplet" WIDTH="640" HEIGHT="370"align="BOTTOM"archive="flexCardAdmin_signed.jar,cardservices.jar,fs_util.jar,
nativelibs_signed.jar,p11.jar,jpcsc.jar,base-opt.jar,base-core.jar,pcsc-wrapper-2.0.jar,codec.jar,FlexiCoreProvider-1.1.5p7.signed.jar"
MAYSCRIPT>
<PARAM name=TANFOR value="${TANFOR}"><PARAM name=TANFORCARDID value="${TANFORCARDID}"><PARAM name=ENCCARDPIN value="${ENCCARDPIN}"><PARAM name=ENCCARDPUK value="${ENCCARDPUK}"><PARAM name=ENCCARDPUKOLD value="${ENCCARDPUKOLD}">
</APPLET>
Abbildung 5.15: Integration von FlexCardAdmin in der ES-Seite beim Loschen oder Ent-sperren einer Smartcard
dieser Version des Applets wird nur ein Prototyp dieser Losung vorgestellt, der weite-
retwickelt werden muss, um einsatzbereit zu sein. Der Parameter choose operation
wurde definiert, um zwischen den zwei Moglichkeiten umzuschalten. Wenn der Pa-
rameter auf no gesetzt ist, wird die Smartcardoperation via einem Appletparameter
festgelegt, wenn der Parameterwert yes ist, wird die Operation vom Benutzer ge-
setzt.
• use default interface: mit diesem Parameter wird festgelegt, ob eine Default-
kartenschnittstelle benutzt werden soll in den Fallen, in welchen eine Smartcard-
operation nicht uber die aktuelle Katenschnittstelle ausfuhrbar ist. Wenn der Wert
des Parameters true ist, wird die aktuell verwendete Kartenschnittstelle mit der
Defaultkartenschnittstelle, die in der Controller-Klasse definiert ist, ausgetauscht,
so dass die Smartcardoperation ausgefuhrt werden kann. Wenn der Parameter auf
false gesetzt ist, wird die verwendete Kartenschnittstelle nie ausgetauscht und die
Ausfuhrung der Operation, die von dieser Kartenschnittstelle nicht unterstutzt ist,
wird mit einer Fehlermeldung abgebrochen.
• card os: hier kann die Smartcard definiert werden, die mit FlexCardAdmin verwen-
det werden soll. Mogliche Werte in dieser Version von FlexCardAdmin sind TCSO20
fur TCOS-2.0-Smartcards oder der leere String. Die erlaubten Werte dieses Para-
meters (bis auf dem leeren String) sollen als Konstanten in der Controller-Klasse
definiert werden. Der leere String bedeutet, dass der Benutzer selbst den Typ seiner
Smartcard auf der Benutzeroberflache spezifizieren muss. Er bekommt eine Liste
von Smartcards zur Auswahl angezeigt.
• card interface: hier kann die Kartenschnittstelle angegeben werden, die verwen-
67
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
det werden soll. Mogliche Werte in dieser Version von FlexCardAdmin sind PKCS11,
PCSC, OCF oder der leere String. Diese sind die Namen der einzelnen Kartenschnitt-
stellen ohne jegliche Sonderzeichen. Dies ist wichtig, weil die angegebenen Strings
zum Erzeugen von Klassennamen zur Laufzeit benutzt werden und Klassennamen
durfen keine Sonderzeichen wie # enthalten. Die erlaubten Werte dieses Parameters
(bis auf dem leeren String) sollen als Konstanten in der Controller-Klasse definiert
werden. Der leere String bedeutet, dass der Benutzer selbst die zu verwendende
Kartenschnittstelle auf der Benutzeroberflache spezifizieren muss. Er bekommt eine
Liste von Kartenschnittstellen zur Auswahl angezeigt.
• card reader: hier kann der Kartenleser angegeben werden, der mit FlexCardAdmin
verwendet wird. Mogliche Werte in dieser Version von FlexCardAdmin sind KOBIL
oder der leere String. Die erlaubten Werte dieses Parameters (bis auf dem leeren
String) sollen als Konstanten in der Controller-Klasse definiert werden. Der leere
String bedeutet, dass der Benutzer selbst den zu verwendenden Kartenleser auf der
Benutzeroberflache spezifizieren muss. Er bekommt eine Liste von Kartenlesern zur
Auswahl angezeigt.
5.6.2 Kartenlesertreiber
In der Konfigurationsdatei werden die Treiber der Kartenleser aufgelistet, die FlexCard-
Admin unterstutzen soll und die beim Aufbau der Verbindung zum Kartenleser geladen
werden mussen. Pro Kartenschnittstelle und Betriebssystem wird jeweils ein Parameter
definiert, dessen Wert den Namen der Kartenlesertreiberdatei fur diese Kombination spe-
zifiziert. Der Parametername ist eine Konkatenation des Kartenschnittstellennamen, des
Betriebssystems und der Nummer des Treibers. Bei jedem neuen Treiber, der in der Kon-
figurationsdatei hinzugefugt wird, wird die Treibernummer um eins inkrementiert. Die
Treiber sind zwecks besserer Ubersicht folgendermaßen gruppiert:
• <pkcs11 driver>: hier werden die Kartenlesertreiber fur die PKCS#11-
Schnittstelle spezifiziert. Folgende Parameter sind vorhanden:
– pkcs11 driver win 0: der Treiber mit der Nummer 0 fur die PKCS#11-
Schnittstelle unter Windows
– pkcs11 driver linux 0: der Treiber mit der Nummer 0 fur die PKCS#11-
Schnittstelle unter Linux
• <pcsc driver>: hier werden die Kartenlesertreiber fur die PC/SC-Schnittstelle spe-
zifiziert. Folgende Parameter sind vorhanden:
– pcsc driver win 0: der Treiber mit der Nummer 0 fur die PC/SC-Schnittstelle
unter Windows
– pcsc driver linux 0: der Treiber mit der Nummer 0 fur die PC/SC-
Schnittstelle unter Linux
• <ocf driver>: hier werden die Kartenlesertreiber fur die OCF-Schnittstelle spezifi-
ziert. Folgende Parameter sind vorhanden:
68
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
– ocf driver win 0: der Treiber mit der Nummer 0 fur die OCF-Schnittstelle
unter Windows
– ocf driver linux 0: der Treiber mit der Nummer 0 fur die OCF-Schnittstelle
unter Linux
• <manufacturer specific pkcs11 driver>: hier werden die PKCS#11-Treiber pro
Hersteller spezifiziert. Der Name jedes Parameters ist eine Konkatenation des Kar-
tenschnittstellennamen, des Betriebssystems und des Namen des Kartenleserherstel-
lers. Folgende Parameter sind vorhanden:
– pkcs11 driver win kobil: der PKCS#11-Treiber fur KOBIL-Kartenleser un-
ter Windows
– pkcs11 driver linux kobil: der PKCS#11-Treiber fur KOBIL-Kartenleser
unter Linux
5.6.3 Referenzen auf Kartenobjekten
Fur jedes Objekt, das von einer bestimmten Applikation genutzt wird, ist eine bestimmte
Stelle auf der Karte vorgesehen. In Abhangigkeit von der verwendeten Kartenschnittstelle
und des Smartcardtyps sieht die Kennzeichnung dieser Stelle unterschiedlich aus. In der
Konfigurationsdatei wird die Position jedes Objekts auf der Karte fur jede Kombination
aus Kartenschnittstelle und Smartcardtyp vorgegeben. Die Parameter zum Referenzieren
der Kartenobjekte sind in Gruppen aufgeteilt. Jede Gruppe definiert die Objektreferenzen
fur eine bestimmte Applikation:
• <card object ids appl0>: hier werden die Referenzen auf Objekte, die von Appli-
kation 0 benutzt werden, spezifiziert.
• <card object ids appl1>: hier werden die Referenzen auf Objekte, die von Appli-
kation 1 benutzt werden, spezifiziert.
• <card object ids appl2>: hier werden die Referenzen auf Objekte, die von Appli-
kation 2 benutzt werden, spezifiziert.
Folgende Parameter sind fur Applikation 0 vorhanden (die Parameter fur die restlichen
Applikationen sind diesen analog):
• Objektreferenzen fur den Fall, dass die PKCS#11-Schnittstelle und TCOS-2.0-
Smartcards verwendet werden:
– appl0 pkcs11 tcos20 pubkey: die Referenz auf dem offentlichen Schlussel
– appl0 pkcs11 tcos20 privkey: die Referenz auf dem privaten Schlussel
– appl0 pkcs11 tcos20 cert: die Referenz auf dem Zertifikat
• Objektreferenzen fur den Fall, dass die PC/SC-Schnittstelle und TCOS-2.0-
Smartcards verwendet werden:
– appl0 pcsc tcos20 pubkey: die Referenz auf dem offentlichen Schlussel
– appl0 pcsc tcos20 privkey: die Referenz auf dem privaten Schlussel
– appl0 pcsc tcos20 cert: die Referenz auf dem Zertifikat
69
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
• Objektreferenzen fur den Fall, dass die OCF-Schnittstelle und TCOS-2.0-
Smartcards verwendet werden:
– appl0 ocf tcos20 pubkey: die Referenz auf dem offentlichen Schlussel
– appl0 ocf tcos20 privkey: die Referenz auf dem privaten Schlussel
– appl0 ocf tcos20 cert: die Referenz auf dem Zertifikat
Speziell fur die Referenzierung von Objekten auf TCOS-2.0-Karten sind zusatzliche
Informationen notig, um die CardObjectIDs erzeugen zu konnen. Diese Informationen
werden mit folgenden Parametern spezifiziert (hier wieder am Beispiel der Applikation 0
vorgestellt):
• appl0 pcsc tcos20 keynr: die Nummer des Schlussels auf der Karte (wenn PC/SC
die verwendete Kartenschnittstelle ist)
• appl0 ocf tcos20 keynr: die Nummer des Schlussels auf der Karte (wenn OCF die
verwendete Kartenschnittstelle ist)
• appl0 keyusage enc: spezifiziert, ob der Schlussel ein Verschlusselungsschlussel ist;
mogliche Werte sind true und false;
• appl0 keyusage sign: spezifiziert, ob der Schlussel ein Signaturschlussel ist; mogli-
che Werte sind true und false;
• appl0 keyusage auth: spezifiziert, ob der Schlussel ein Schlussel zur Authentifika-
tion ist; mogliche Werte sind true und false;
• appl0 keylength: die Schlussellange in Bit, z.B. 1024
Abbildung 5.16 zeigt ein Beispiel, wie die Parameter zur Objektreferenzierung gesetzt
werden konnen.
70
KAPITEL 5. TECHNISCHES KONZEPT UND IMPLEMENTIERUNG
<card_object_ids_appl0><param key="appl0_pkcs11_tcos20_pubkey" value="TCOS1-00"/><param key="appl0_pkcs11_tcos20_privkey" value="TCOS1-00"/><param key="appl0_pkcs11_tcos20_cert" value="TCOS1-00"/>
<param key="appl0_pcsc_tcos20_pubkey" value=":3f00:4101:4e03"/><param key="appl0_pcsc_tcos20_privkey" value=":3f00:4101:5103"/><param key="appl0_pcsc_tcos20_cert" value=":3f00:4101:4352"/><param key="appl0_pcsc_tcos20_keynr" value="3"/>
<param key="appl0_ocf_tcos20_pubkey" value=":3f00:4101:4e03"/><param key="appl0_ocf_tcos20_privkey" value=":3f00:4101:5103"/><param key="appl0_ocf_tcos20_cert" value=":3f00:4101:4352"/><param key="appl0_ocf_tcos20_keynr" value="3"/>
<param key="appl0_keyusage_enc" value="true"/><param key="appl0_keyusage_sign" value="false"/><param key="appl0_keyusage_auth" value="false"/>
<param key="appl0_keylength" value="1024"/></card_object_ids_appl0>
<card_object_ids_appl1><param key="appl1_pkcs11_tcos20_pubkey" value="TCOS1-01"/><param key="appl1_pkcs11_tcos20_privkey" value="TCOS1-01"/><param key="appl1_pkcs11_tcos20_cert" value="TCOS1-01"/>
<param key="appl1_pcsc_tcos20_pubkey" value=":3f00:4101:4e04"/><param key="appl1_pcsc_tcos20_privkey" value=":3f00:4101:5104"/><param key="appl1_pcsc_tcos20_cert" value=":3f00:4101:4353"/><param key="appl1_pcsc_tcos20_keynr" value="4"/>
<param key="appl1_ocf_tcos20_pubkey" value=":3f00:4101:4e04"/><param key="appl1_ocf_tcos20_privkey" value=":3f00:4101:5104"/><param key="appl1_ocf_tcos20_cert" value=":3f00:4101:4353"/><param key="appl1_ocf_tcos20_keynr" value="4"/>
<param key="appl1_keyusage_enc" value="true"/><param key="appl1_keyusage_sign" value="true"/><param key="appl1_keyusage_auth" value="false"/>
<param key="appl1_keylength" value="1024"/></card_object_ids_appl1>
Abbildung 5.16: Konfigurationsparameter zum Referenzieren der Objekte auf der Karte
71
Kapitel 6
Zusammenfassung
Die Firma FlexSecure bietet die Softwarelosung FlexiTrust zur Verwaltung der PKI in-
nerhalb eines Unternehmens. Als Erweiterung wurde FlexiTrust Identity Management
entwickelt, das samtliche Aufgaben, die mit der Personalisierung und Verwaltung von
Smartcards verbunden sind, ubernimmt. Eine der Komponenten von FlexiTrust Identi-
ty Management, die fur die Realisierung der Smartcardoperationen zustandig ist, weist
gewisse Nachteile auf. Sie ist nicht plattformunabhangig, nicht flexibel genug und nicht
erweiterbar. Dies hat dazu gefuhrt, dass Verbesserungen notwendig waren. Die vorliegende
Arbeit ist in Folge dessen entstanden mit dem Ziel, eine neue Losung (FlexCardAdmin) zu
entwickeln, die die Probleme und Einschrankungen der bestehenden Applikation auflost.
Am Anfang dieser Arbeit wurde zuerst die Funktionalitat der bestehenden Losung und die
Technologien, auf die sie basiert, vorgestellt. Auf die Nachteile wurde auch eingegangen,
damit nachvollziehbar wird, warum die Notwendigkeit besteht, nach eine neue Losung zu
suchen. Die meisten Nachteile kamen von der verwendeten Technologie, die ausgetauscht
werden musste. Ein Teil der Arbeit bestand also darin, eine neue passende Technologie
auszusuchen und diese zu analysieren.
Eine der wichtigsten Anforderungen an FlexCardAdmin war, moglichst hohe Flexibi-
litat zu bieten. Demzufolge musste ein Konzept entwickelt werden, wie man am besten
die Software gestaltet, so dass die Anwendung in beliebigen Umgebungen lauffahig ist:
unabhangig vom verwendeten Kartenlesertyp, Smartcard oder Kartenschnittstelle. Als
Grundlage bei der Implementierung wurde das Framework SmartcardServices benutzt,
das vor dem Einsatz analysiert werden musste, um sicherzustellen, dass dieses die not-
wendige Funktionalitat bietet.
Als Ergebnis dieser Arbeit ist ein Applet entstanden, das im Gegensatz zu seinem
Vorganger viele Vorteile bietet:
• FlexCardAdmin ist plattformunabhangig. Sein Vorganger dagegen konnte nur unter
Windows ausgefuhrt werden.
• Es bietet hohe Flexibilitat. Die OCX-Komponente von FlexiTrust Identity Manage-
ment unterstutzt nur zwei Kartentypen. FlexCardAdmin dagegen kann mit beliebi-
gen Smartcards eingesetzt werden. Außerdem funktioniert das Applet unabhangig
vom Kartenleser.
• Dadurch dass das Design der Software an das Model-View-Controller-Pattern an-
gelehnt ist, ist das Applet modular und einzelne Elemente sind leicht austauschbar
72
KAPITEL 6. ZUSAMMENFASSUNG
oder anpassbar.
• Das Applet ist leicht erweiterbar. Es ist einfach neue Komponenten, wie Kartenty-
pen, Kartenschnittstellen, Kartenleser oder Sprachen in die Software hinzuzufugen.
• Einzelne primitive Smartcardoperationen sind beliebig kombinierbar und konnen
in beliebiger Reihenfolge ausgefuhrt werden. Die Anzahl der Schlusselpaare, Zerti-
fikatsantrage oder Zertifikate, die erzeugt werden, ist nicht festgelegt und kann je
nach Anwendungsfall spezifiziert werden.
Wie jede andere Software ist auch FlexCardAdmin verbesserungsfahig und gibt Raum
zur Weiterentwicklung. Im nachsten Kapitel wird ein Blick in die Zukunft geworfen und
angesprochen, was im Applet noch verbessert werden kann.
73
Kapitel 7
Ausblick
In diesem Kapitel wird beschrieben, wie FlexCardAdmin weiterentwickelt werden kann
und an welchen Stellen die Software noch verbesserungsfahig ist.
7.1 Weiterentwicklung der Software
FlexCardAdmin ist in seiner jetzigen Version in einer beschrankten Umgebung lauffahig,
aber wurde so kozipiert, dass diese Umgebung leicht erweitert werden kann und neue Kom-
ponenten leicht in die Software hinzugefugt werden konnen. Somit erfullt FlexCardAd-
min die Anforderungen an Flexibilitat und Erweiterbarkeit. Folgende Elemente konnen
nachtraglich in die Software aufgenommen werden:
• neue Kartentypen
• neue Kartenleser
• neue Kartenschnittstellen
• neue Sprachen
• neue Betriebssysteme
Um solche zusatzliche Elemente in die Software einzubauen, mussen einige Stellen in der
Software erweitert werden. Die einzelnen Schritte der Integration neuer Komponenten
werden in den nachsten Abschnitten beschrieben.
7.1.1 Hinzufugen neuer Karten
Damit FlexCardAdmin mit neuen Kartentypen verwendet werden kann, muss die
Software folgendermaßen erweitert werden:
• Das Framework SmartcardServices soll wie in [Dra06] beschrieben, erweitert werden.
• Der neue Kartentyp muss der Applikation bekannt gemacht werden. Dazu muss der
Controller folgendermaßen erweitert werden:
– Eine neue Konstante fur die neue Smartcard muss definiert werden.
– Die Methode initializeSupportedEnvironment() muss erweitert werden.
– Der neue Kartentyp muss in der Liste der unterstutzten Smartcards (HashMap
supportedSmartcards) hinzugefugt werden.
74
KAPITEL 7. AUSBLICK
– Die Methode checkCombination(String card os, String
card interface) muss erweitert werden. Dort wird spezifiziert mit wel-
chen Kartenschnittstellen der neue Kartentyp kompatibel ist. Dies hangt von
den angebotenen Implementierungen im Framework SmartcardServices ab.
• Eine neue Unterklasse von CardPropLoader muss im Paket
de.flexsecure.flexiTrust.flexcardadmin.model.card angelegt werden,
die die Properties des neuen Kartentyps verwaltet. Der Klassenname muss eine
Konkatenation des Namen der Controller-Konstante fur den Kartentyp und des
Strings”CardPropLoader“ sein.
• Eine neue Unterklasse von CardObjectIdentifier muss im Paket
de.flexsecure.flexiTrust.flexcardadmin.model.card angelegt werden.
Dort soll die kartenspezifische Referenzierung von Objekten auf der Karte spe-
zifiziert werden. Der Klassenname muss eine Konkatenation des Namen der
Controller-Konstante fur den Kartentyp und des Strings”CardObjectIdentifier“
sein.
• Falls irgendwelche Properties des Kartentyps in einer Konfigurationsdatei angegeben
werden mussen, muss diese Datei im Verzeichnis conf abgelegt werden.
7.1.2 Hinzufugen neuer Kartenschnittstellen
Um neue Kartenschnittstellen mit FlexCardAdmin verwenden zu konnen, muss die
Software folgendermaßen erweitert werden:
• Das Framework SmartcardServices soll wie in [Dra06] beschrieben, erweitert werden.
• Die neue Kartenschnittstelle muss der Applikation bekannt gemacht werden. Dazu
muss der Controller folgendermaßen erweitert werden:
– Eine neue Konstante fur die neue Kartenschnittstelle muss definiert werden.
– Die Methode initializeSupportedEnvironment() muss erweitert werden.
– Die neue Kartenschnittstelle muss in der Liste der unterstutzten Kartenschnitt-
stellen (HashMap supportedCardInterfaces) hinzugefugt werden.
– Die Methode checkCombination(String card os, String
card interface) muss erweitert werden. Dort wird spezifiziert mit welchen
Smartcards die neue Kartenschnittstelle verwendet werden kann. Dies hangt
von den angebotenen Implementierungen im Framework SmartcardServices
ab.
• Das Model muss um die neue Kartenschnittstelle erweitert werden. Ein neues Un-
terpaket von de.flexsecure.flexiTrust.flexcardadmin.model mit dem Namen
der Kartenschnittstelle muss angelegt werden. Dort werden die schnittstellenspezi-
fischen Model-Klassen erzeugt:
– Eine Unterklasse von Model muss angelegt werden. Der Klassenname ist eine
Konkatenation des Schnittstellennamen und des String”Model“.
75
KAPITEL 7. AUSBLICK
– Eine Unterklasse von Loader muss angelegt werden. Der Klassenname ist eine
Konkatenation des Schnittstellennamen und des Strings”Loader“.
– Eine Unterklasse von ObjectIdentifier muss angelegt werden. Der Klassen-
name ist eine Konkatenation des Schnittstellennamen und des Strings”Objec-
tIdentifier“.
• Externe und native Bibliotheken, die zur Initialisierung der Kartenschnittstelle
benotigt werden, mussen ins Verzeichnis lib kopiert werden. Die nativen Biblio-
theken mussen zusatzlich im Verzeichnis nativelib abgelegt werden.
• Falls irgendwelche Properties der Kartenschnittstelle in einer Konfigurationsdatei
angegeben werden mussen, muss diese Datei im Verzeichnis conf abgelegt werden.
7.1.3 Hinzufugen neuer Kartenleser
Um FlexCardAdmin mit neuen Kartenlesern verwenden zu konnen, mussen folgende
Anderungen vorgenommen werden:
• Der neue Kartenleser muss der Applikation bekannt gemacht werden. Dazu muss
der Controller folgendermaßen erweitert werden:
– Eine neue Konstante fur den neuen Kartenleser muss definiert werden.
– Die Methode initializeSupportedEnvironment() muss erweitert werden.
– Der neue Kartenleser muss in der Liste der unterstutzten Kartenleser (HashMap
supportedCardReaders) hinzugefugt werden.
• Die Treiberdateien (pro Kartenschnittstelle und Betriebssystem) mussen in den Ver-
zeichnissen lib und nativelib kopiert werden
• Die Konfigurationsdatei flexCardAdmin.xml muss um die Kartenlesertreiber (pro
Betriebssystem und pro Kartenschnittstelle) erweitert werden
• Eine neue Unterklasse von CardReaderPropLoader muss im Paket
de.flexsecure.flexiTrust.flexcardadmin.model.reader angelegt werden.
Der Klassenname muss eine Konkatenation des Namen der Controller-Konstante
fur den Kartenleser und des Strings”CardReaderPropLoader“ sein.
7.1.4 Hinzufugen neuer Sprachen
FlexCardAdmin wird in seiner jetzigen Version in zwei Sprachen ausgeliefert: Deutsch
und Englisch. Beliebige Sprachen konnen zum Sprachpaket der Software hinzugefugt
werden. Folgende Anderungen sind notwendig, um dies zu realisieren:
• Die neue Sprache muss der Applikation bekannt gemacht werden. Dazu muss der
Controller folgendermaßen erweitert werden:
– Eine neue Konstante fur die neue Sprache muss definiert werden.
– Die Methode initializeSupportedEnvironment() muss erweitert werden.
76
KAPITEL 7. AUSBLICK
– Die neue Sprache muss in der Liste der unterstutzten Sprachen (HashMap
supportedLanguages) hinzugefugt werden.
• Die Methode setLanguage(String language) der Klasse Lang muss erweitert wer-
den.
• Die Ubersetzung der GUI-Texte in der neuen Sprache mussen in ei-
ner Properties-Datei zusammengefasst werden (analog der schon vor-
handenen Properties-Dateien fur die anderen Sprachen) und im Paket
de.flexsecure.flexiTrust.flexcardadmin.util.language abgelegt werden.
7.1.5 Hinzufugen neuer Betriebssysteme
Das verwendete Betriebssystem beeinflußt das Laden von nativen Bibliotheken. In
Abhangigkeit des Betriebssystems werden unterschiedliche Bibliotheken geladen. Man
kann diese leicht an der Dateiendung unterscheiden. Windows-Bibliotheken haben die
Endung .dll und Linux-Bibliotheken - die Endung .so. Wenn ein neues Betriebssystem
unterstutzt werden muss, mussen die benotigten nativen Bibliotheken zur Verfugung ge-
stellt werden und der Teil der Software, der das Laden der nativen Bibliotheken realisiert,
entsprechend erweitert werden:
• In der Klasse Loader muss eine neue Methode definiert werden, die analog
zu loadWinLibrary(String libName) und loadLinuxLibrary(String libName)
das Laden von Bibliotheken des neuen Betriebssystems ermoglicht.
• Die nativen Bibliotheken fur das neue Betriebssystem (pro Kartenschnittstelle)
mussen bereitgestellt werden und in den Verzeichnissen lib und nativelib kopiert
werden.
• Die Kartenlesertreiber fur das neue Betriebssystem (pro Kartenschnittstelle) mussen
ebenso bereitgestellt werden und in den Verzeichnissen lib und nativelib kopiert
werden.
• Die Kartenlesertreiber fur das neue Betriebssystem mussen in der Konfigurations-
datei aufgelistet werden.
• Die Unterklassen von Loader (OCFLoader, PCSCLoader und PKCS11Loader) mussen
folgendermaßen erweitert werden:
– eine neue Konstante fur die native Bibliothek des neuen Betriebssystems muss
in jeder der Unterklassen definiert werden.
– die Methoden loadLibraries() und loadReaderDrivers() mussen angepasst
werden.
• Die Methode loadData() der Klasse KOBILCardReaderPropLoader muss angepasst
werden.
77
KAPITEL 7. AUSBLICK
7.1.6 Das Applet als eigenstandige Webanwendung
Das Applet ist in seiner jetzigen Version ein Teil der Enrollment-Seite und bekommt alle
benotigten Daten wie Zertifikate, Schlussel, PUK der Karte als Appletparameter ube-
geben. Fur die Zukunft konnte man sich uberlegen, das Applet auch als eigenstandige
Webanwendung bereitzustellen. Das wurde bedeuten, dass die Kommunikation mit dem
Enrollment-Server, die momentan uber die Enrollment-Seite abgewickelt wird, von dieser
Seite entkoppelt und im Applet realisiert werden soll. Das Applet wird direkt eine Verbin-
dung mit dem Enrollment-Server aufbauen mussen, um relevante Daten auszutauschen.
Um diese Anderung zu realisieren, musste man nicht nur das Applet entsprechend an-
passen, sondern auch die Logik im FlexiTrust Identity Management. Dies erfordert einen
hoheren Aufwand, den sich FlexSecure zu diesem Zeitpunkt nicht leisten konnte. Deswe-
gen bleibt diese Anderung eine Aufgabe fur die Zukunft.
Dessen ungeachtet wurden schon einige Klassen erzeugt, die in der jetzigen Version des
Applets nicht verwendet werden und fur den spateren Einsatz im eigenstandigen Applet
gedacht sind. Die ersten zwei reprasentieren einen Teil der Benutzeroberflache und die
letzten zwei enthalten die Logik:
• ChooseOperationPanel: dient zur Auswahl der gewunschten Smartcardoperation
• LoginPanel: dient zum Einloggen auf dem Enrollment-Server
• LoginAction: hier soll der Aufbau der Verbindung zum Enrollment-Server imple-
mentiert werden
• SetOperationAction: hier wird dem Applet mitgeteilt, welche Operation vom Be-
nutzer ausgewahlt wurde
7.2 Verbesserungen
Mit dieser Version von FlexCardAdmin ist es, wie schon in den Abschnitten 4.2.3 und
4.2.4 beschrieben, nicht moglich die Smartcard oder den Kartenleser des Benutzers au-
tomatisch zu erkennen. Diese mussen entweder vom Administrator oder vom Benutzer
angegeben werden. Der Grund liegt im Konzept der Frameworks, auf die FlexCardAdmin
aufbaut: der PKCS#11-Provider und SmartcardServices. Um die automatische Erkennung
der Karte / des Kartenlesers zu ermoglichen, muss erforscht werden, ob die Konzepte so
angepasst werden konnen, dass die Initialisierung der Kartenschnittstellen ohne Kenntniss
der Karte oder des Kartenlesers moglich ist.
Die Smartcard-Administration ist bei FlexiTrust Identity Management so konzipiert, dass
die PUK der Smartcard dem Benutzer unbekannt bleibt. Aus diesem Grund wurde im
FlexCardAdmin die Eingabe der PUK (uber die Benutzeroberflache oder am Karten-
leser) nicht vorgesehen. Das Applet konnte so erweitert werden, dass das Vorhanden-
sein der Funktionalitat zur PUK-Eingabe konfigurierbar ist. Der Benutzer konnte uber
einen Konfigurationsparameter steuern, ob die PUK eingegeben werden muss oder nicht.
Dementsprechend musste die Benutzeroberflache aufgebaut werden und in Abhangigkeit
des Parameterwertes, Eingabefelder fur die PUK ein- oder ausblenden.
78
Anhang A
Benutzeroberflache
Abbildung A.1: Zwei der moglichen Varianten des ConfigurationPanels(1)
79
ANHANG A. BENUTZEROBERFLACHE
Abbildung A.2: Zwei der moglichen Varianten des ConfigurationPanels(2)
80
Literaturverzeichnis
[acta] ActiveX. http://www.bsi.de/fachthem/sinet/gefahr/aktiveinhalte/
definitionen/activexcontrols.htm
[actb] ActiveX. http://www.softwareacademy.de/webscripting/referenz/
Default.aspx?opera=073.html
[actc] Aktive Inhalte. http://www.bsi.de/fachthem/sinet/gefahr/
aktiveinhalte/index.htm
[app] Applet. http://java.sun.com/docs/books/tutorial/deployment/applet/
index.html
[Buc03] Buchmann, Johannes: Einfuhrung in die Kryptographie. Springer, Berlin, 2003
[Cor00] Coroama, Vlad: Flexible Anbindung von SmartCards an eine Java-
Sicherheitsinfrastruktur. Entwurf und Implementierung eines Hardware-
Providers fur die Java Cryptography Architecture, TU Darmstadt, Diplomarbeit,
Marz 2000
[Dra06] Drahavets, Maryia: Flexible Anbindung von Smartcards an eine
Sicherheitsinfrastruktur, TU Darmstadt, Diplomarbeit, August 2006.
http://www.cdc.informatik.tu-darmstadt.de/reports/reports/Maryia_
Drahavets.diplom.pdf
[fle] FlexSecure GmbH. http://www.flexsecure.de/
[GHJV95] Gamma, Erich ; Helm, Richard ; Johnson, Ralph E. ; Vlissides, John: De-
sign Patterns. Elements of Reusable Object-Oriented Software. Addison-Wesley,
1995. – ISBN-10: 0201633612 ISBN-13: 978-0201633610
[Gmb] GmbH, FlexSecure: Trustcenter Software FlexiTrust. http://www.flexsecure.
de/ojava/flexitrust.html
[Gmb05] GmbH, KOBIL S.: Losungskonzept ZDF Smartcard Enrollment. Juni 2005
[Gmb06a] GmbH, FlexSecure: FlexiTrust Identity Management: Produktbeschreibung.
Juni 2006
[Gmb06b] GmbH, KOBIL S.: mIDentity Manager Professional Manual. Oktober 2006
[JP] Java-Wrapper fur PC/SC: JPC/SC. http://www.musclecard.com/middle.
html
[jpc] JPC/SC Java API. http://www.musclecard.com/middle.html/
[kob] KOBIL Systems GmbH. http://www.kobil.de/
[liv] LiveConnect. http://java.sun.com/products/plugin/1.3/docs/jsobject.
html
85
Literaturverzeichnis
[Lud07] Ludwig-Maximilians-Universitat Munchen: Web-Programmierung
mit Java. www.medien.ifi.lmu.de/fileadmin/mimuc/mt_ss05/mtB7a.pdf.
Version: 2007
[Mor97] Morrison, Michael: Java 1.1 Unleashed. Sams.Net Publishing, 1997. – ISBN
1575212986
[mus] MUSCLE - Movement for the Use of Smart Cards in a Linux Environment.
http://www.linuxtnet.com
[OC] Open Card Framework. http://www.opencard.org
[ocf] PC/SC CardTerminal fur OCF. http://www.gemplus.com/techno/opencard/
cardterminals/pcsc/download.html
[OP] Open Card Properties. http://www.opencard.org/docs/pguide/PGuide.
html#HDROCPROPERTYFILELOADER
[PTT01] Produktbereich T-TeleSec, Deutschen Telekom A.: Telesec Chipcard Ope-
rating System: Betriebssystem fur Chipkarten TCOS V2.0 Release 3. Januar
2001
[RSA99] RSA Laboratories: PKCS#12 v1.0: Personal Information Exchange
Syntax. ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/pkcs-12v1.pdf.
Version: Juni 1999
[RSA00] RSA Laboratories: PKCS#10 v1.7: Certification Request Syntax Stan-
dard. ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-10/pkcs-10v1_7.pdf.
Version: Mai 2000
[RSA04] RSA Laboratories: PKCS#11 v2.20: Cryptographic Token Inter-
face Standard. ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20/
pkcs-11v2-20.pdf. Version: Juni 2004
[Sie] Siemens: CardOS: Betriebssystem fur Chipkarten. http://www.
medical.siemens.com/webapp/wcs/stores/servlet/ProductDisplay~q_
catalogId~e_-11~a_catTree~e_100010,1008631,1009807,1009806,
1009810~a_langId~e_-11~a_productId~e_173293~a_storeId~e_10001.htm
[wiz] Swing-Wizard. http://java.sun.com/developer/technicalArticles/GUI/
swing/wizard/
86