31.10.2013 Aufrufe

Entwurf und prototypische Implementierung eines sicheren E-Mail ...

Entwurf und prototypische Implementierung eines sicheren E-Mail ...

Entwurf und prototypische Implementierung eines sicheren E-Mail ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Entwurf</strong> <strong>und</strong> <strong>prototypische</strong><br />

<strong>Implementierung</strong> <strong>eines</strong><br />

<strong>sicheren</strong> E-<strong>Mail</strong>-Konzepts im<br />

TU-Projekt „Campuskarte“<br />

Diplomarbeit<br />

Sebastian Zickau<br />

Matrikel-Nr.: 166644<br />

Berlin, den 12. November 2002<br />

Technische Universität Berlin<br />

Fakultät IV - Informatik <strong>und</strong> Elektrotechnik<br />

Prof. Dr.-Ing. Stefan Jähnichen<br />

Institut für Softwaretechnik <strong>und</strong> Theoretische Informatik<br />

Betreuer: Dipl.-Inform. Thomas Gebhardt,<br />

Dipl.-Inform. Klaus Nagel<br />

i


Eidesstattliche Erklärung<br />

Die selbständige <strong>und</strong> eigenhändige Anfertigung versichere ich an Eides statt.<br />

Berlin, den 12. November 2002<br />

______________________<br />

Sebastian Zickau<br />

iii


Danksagung<br />

Für die gute Betreuung der Diplomarbeit möchte ich mich bei allen Mitarbeitern des Security<br />

Teams bedanken, die mich mit viel Rat <strong>und</strong> großer Hilfe unterstützt haben.<br />

Besonderen Dank gebührt meinen Betreuern Klaus Nagel <strong>und</strong> Thomas Gebhardt, die mir<br />

u.a. als fachliche Diskussionspartner <strong>und</strong> Lektoren zur Seite standen.<br />

Für die Funktionalität der Chipkarte ist im Projekt Lutz Suhrbier zuständig, der mir ebenfalls<br />

beim Aufspüren einiger Fehler geholfen hat. Thomas Hildmann <strong>und</strong> Gerd Schering gaben<br />

mir Unterstützung bei Fragen zum TUB-Trustcenter. Klaus Hamann, der sich im laufenden<br />

Projekt für die Personalisierung der Campuskarten verantwortlich zeigt, beriet mich<br />

ebenfalls in einigen Fachfragen.<br />

Ein Dank gebührt auch meiner Familie <strong>und</strong> meinen Fre<strong>und</strong>en, die mich mit viel Rückhalt<br />

unterstützten <strong>und</strong> in Layout- <strong>und</strong> Lektoratsfragen berieten.<br />

iv


Inhaltsverzeichnis<br />

2EINLEITUNG.............................................................................................................1<br />

2.1ZIELE DER ARBEIT................................................................................................................ 1<br />

2.2ÜBERBLICK UND AUFBAU DER VORLIEGENDEN ARBEIT................................................................2<br />

2.3SICHERHEITSBEDÜRFNISSE.......................................................................................................2<br />

2.4DAS TU-PROJEKT „CAMPUSKARTE“.......................................................................................3<br />

3UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN......................... 4<br />

3.1KRYPTOGRAFIE..................................................................................................................... 4<br />

3.1.1Symmetrische Verfahren.......................................................................................4<br />

3.1.2Asymmetrische Verfahren.....................................................................................5<br />

3.1.3Hybride Verfahren................................................................................................6<br />

3.1.4Hashfunktionen.....................................................................................................6<br />

3.2DIGITALE UNTERSCHRIFTEN....................................................................................................7<br />

3.2.1Signaturen.............................................................................................................7<br />

3.2.2Zertifikate............................................................................................................. 8<br />

3.3AUFBAU DES TUB-TRUSTCENTERS.........................................................................................8<br />

3.3.1TUB-CA................................................................................................................ 9<br />

3.3.2Personen-CA.......................................................................................................10<br />

3.4GESETZLICHER HINTERGRUND...............................................................................................10<br />

3.4.1B<strong>und</strong>esdatenschutz- <strong>und</strong> Signaturgesetz.............................................................10<br />

3.4.2Berliner Datenschutzgesetz................................................................................ 11<br />

3.4.3Dienstvereinbarungen der TU-Berlin.................................................................11<br />

3.4.4TUB-Sicherheitskonzept für sichere E-<strong>Mail</strong>.......................................................11<br />

3.5DATENMODELL DER CAMPUSKARTE....................................................................................... 12<br />

3.6COMMON CRITERIA.............................................................................................................13<br />

3.7ITSEC.............................................................................................................................13<br />

3.8E-MAIL-STANDARDS...........................................................................................................13<br />

3.8.1S/MIME ..............................................................................................................13<br />

3.8.2PEM....................................................................................................................14<br />

3.8.3PGP.................................................................................................................... 14<br />

3.9MAILTRUST...................................................................................................................... 14<br />

3.10KRYPTOGRAFIE- UND ZERTIFIKATSTANDARDS........................................................................ 15<br />

3.10.1RSA................................................................................................................... 15<br />

3.10.23DES.................................................................................................................16<br />

3.10.3SHA-1 mit RSA................................................................................................. 16<br />

3.10.4X.509-Zertifikate...............................................................................................16<br />

3.11VERHALTEN VON E-MAIL-CLIENTS MIT UNTERSCHIEDLICHEN TESTZERTIFIKATEN........................ 18<br />

3.11.1Netscape Messenger 4.7x................................................................................. 19<br />

3.11.2Microsoft Outlook 2000....................................................................................19<br />

3.12X.500-VERZEICHNIS UND CERTIFICATE REVOCATION LIST..................................................... 20<br />

3.13PUBLIC KEY CRYPTOGRAPHIC STANDARDS........................................................................... 21<br />

3.14HARDWARE- UND TREIBERSTANDARDS................................................................................. 22<br />

3.14.1Open Card Framework.....................................................................................22<br />

3.14.2PC/SC............................................................................................................... 23


INHALTSVERZEICHNIS<br />

3.14.3Welche SmartCard wird eingesetzt?.................................................................24<br />

3.14.4Welche Kartenleser werden eingesetzt?........................................................... 24<br />

3.14.5ISO-7816-Standard...........................................................................................24<br />

3.14.6ASN.1................................................................................................................25<br />

3.14.7M.U.S.C.L.E......................................................................................................25<br />

4ANFORDERUNGSANALYSE FÜR SICHERE E-MAIL................................... 26<br />

4.1BESTEHENDE LÖSUNGEN...................................................................................................... 26<br />

4.2ISP-VORGEHENSMODELL - ERLÄUTERUNGEN.......................................................................... 28<br />

4.3ANFORDERUNGEN................................................................................................................29<br />

4.3.1Nicht funktionale Anforderungen....................................................................... 29<br />

4.3.2Funktionale Anforderungen................................................................................30<br />

4.4PROBLEMBEREICHSMODELL................................................................................................... 30<br />

4.5ANWENDUNGSFALLMODELL...................................................................................................31<br />

4.5.1Anwendungsfalldiagramme................................................................................ 31<br />

4.5.2Anwendungsfallbeschreibung.............................................................................32<br />

4.6SCHNITTSTELLENMODELL...................................................................................................... 34<br />

4.6.1Benutzerschnittstellendefinition......................................................................... 34<br />

4.6.2Systemschnittstellendefinition.............................................................................35<br />

5ANALYSE UND ENTWURF.................................................................................. 36<br />

5.1ANALYSE...........................................................................................................................36<br />

5.1.1Beispielausschnitt einer Logdatei.......................................................................36<br />

5.1.2Aufgerufene Funktionen..................................................................................... 37<br />

5.1.3Unterschiede <strong>und</strong> Gemeinsamkeiten zur erarbeiteten Lösung........................... 38<br />

5.1.4Sequenzdiagramm...............................................................................................38<br />

5.1.5Aktivitätsdiagramme...........................................................................................39<br />

5.1.6Cryptoki.............................................................................................................. 44<br />

5.2ENTWURF ......................................................................................................................... 45<br />

5.2.1Architekturmodell............................................................................................... 45<br />

5.2.2Vor- <strong>und</strong> Nachteile des Schichtenmodells.......................................................... 49<br />

5.3ENTWURFSENTSCHEIDUNGEN................................................................................................. 49<br />

5.3.1Unterschied zwischen PKCS#11-Sessionprinzip <strong>und</strong> Campuskarte.................. 50<br />

5.3.2Auswahl der Schlüssel........................................................................................ 50<br />

5.3.3Aufgaben der Schichten......................................................................................51<br />

5.3.4Erstellen der JavaVM......................................................................................... 52<br />

5.3.5PKCS#11 Flags.................................................................................................. 52<br />

5.3.6Externe Zertifikate.............................................................................................. 53<br />

5.4ABLAUFDARSTELLUNG..........................................................................................................53<br />

6SPEZIFIKATION UND IMPLEMENTIERUNG.................................................56<br />

6.1SPEZIFIKATION.................................................................................................................... 56<br />

6.1.1Native-Code........................................................................................................56<br />

6.1.2Java-Code...........................................................................................................58<br />

6.1.3CampuskarteAppletProxy-Funktionen............................................................... 59<br />

vii


6.2IMPLEMENTIERUNG.............................................................................................................. 61<br />

6.2.1Versionskontrolle durch Einsatz von CVS..........................................................61<br />

6.2.2Die Struktur der Programmsourcen...................................................................61<br />

6.2.3Java Native Interface..........................................................................................62<br />

7INSTALLATION, KONFIGURATION UND TESTS..........................................64<br />

7.1TECHNISCHE VORAUSSETZUNGEN.......................................................................................... 64<br />

7.2INSTALLATION.....................................................................................................................64<br />

7.2.1Über Kryptografische Module-Dialogbox (Netscape Messenger 4.7x)............. 64<br />

7.2.2Über JavaScript-Seite.........................................................................................66<br />

7.2.3Zertifikatsdateien................................................................................................66<br />

7.2.4LDAP für Netscape einrichten............................................................................67<br />

7.3TESTS............................................................................................................................... 68<br />

8ERGEBNISSE UND AUSBLICK........................................................................... 70<br />

8.1FAZIT................................................................................................................................70<br />

8.2KRITISCHE BETRACHTUNGEN................................................................................................ 71<br />

8.2.1Kompromittierung von Schlüsseln......................................................................71<br />

8.2.2Mögliche Angriffe auf Rechner...........................................................................71<br />

8.2.3Virenschutz......................................................................................................... 71<br />

8.3ERWEITERUNGSMÖGLICHKEITEN............................................................................................. 72<br />

8.4AUSBLICK..........................................................................................................................72<br />

9ANHANG.................................................................................................................. 74<br />

9.1GLOSSAR........................................................................................................................... 74<br />

9.2ABKÜRZUNGEN...................................................................................................................78<br />

9.3ABBILDUNGEN.................................................................................................................... 80<br />

9.4TABELLEN..........................................................................................................................81<br />

9.5BIBLIOGRAFIE..................................................................................................................... 82<br />

9.6EINGESETZTE TOOLS ...........................................................................................................86


2 Einleitung<br />

Elektronische Post 1 gehört zu den Diensten des Internets, die am häufigsten genutzt werden.<br />

Täglich werden weltweit Milliarden von E-<strong>Mail</strong>s verschickt. Nach einer Studie des Marktforschungsinstituts<br />

IDC 2 werden es im Jahr 2005 pro Tag durchschnittlich 36 Milliarden sein.<br />

Laut IDC verfügten im Jahr 2000 505 Millionen Menschen über ein E-<strong>Mail</strong>-Postfach, hier ist<br />

mit einer Verdopplung bis 2005 zu rechnen.<br />

Die heutige Arbeitswelt von Computeranwendern 3 wird bestimmt durch das Lesen,<br />

Aufarbeiten <strong>und</strong> Beantworten von E-<strong>Mail</strong>s.<br />

Vertrauliche Nachrichten sind sowohl in der Berufswelt sowie im privaten Bereich wichtig<br />

u n d notwendig. Daher ist es erforderlich, dass die digitalen Daten des Senders nur für<br />

den adressierten Empfänger lesbar sind. Demzufolge müssen die Nachrichten geheim sein<br />

<strong>und</strong> das unbefugte Lesen von Dritten muss ausgeschlossen werden.<br />

Der E-<strong>Mail</strong>-Dienst bietet im Vergleich zu herkömmlichen Kommunikationsmitteln, wie<br />

Brief, Fax oder Telefon, entscheidende Vorteile. Es ist möglich Dateien zu verschicken, die<br />

in elektronischer Form weiterverarbeitet, archiviert <strong>und</strong> ausgedruckt werden können.<br />

In der Verwaltung einer großen Institution wie der Technische Universität Berlin fallen<br />

viele personenbezogene Daten an, die aus ethischer <strong>und</strong> rechtlicher Sicht nur für befugte Personen<br />

bestimmt sind.<br />

Bei der Nutzung von offenen Netzen <strong>und</strong> unverschlüsselten Leitungen ist es erforderlich,<br />

E-<strong>Mail</strong>s <strong>und</strong> Datenpakete zu verschlüsseln.<br />

Neben dem kryptografischen Verfahren der Verschlüsselung bildet die elektronische Signatur<br />

eine Möglichkeit, Dokumente mit entsprechenden verbindlichen Unterschriften zu versehen.<br />

Dieses ist ein weiteres Anwendungsgebiet, das in einem öffentlichen Verwaltungsapparat<br />

zusätzliche Flexibilität im Gebrauch von elektronischer Post liefert.<br />

Diese Diplomarbeit entstand im Rahmen des TU-Projekts „Campuskarte“, auf das noch<br />

näher in Abschnitt 2.4 eingegangen wird.<br />

2.1 Ziele der Arbeit<br />

Ziel dieser Arbeit ist eine Anbindung des elektronischen Studierenden- <strong>und</strong> Dienstausweis<br />

Campuskarte an einen der aktuellen E-<strong>Mail</strong>-Clients mit dem Resultat, einen <strong>sicheren</strong> E-<strong>Mail</strong>-<br />

Dienst für die Nutzer der TUB-Chipkarte zu schaffen.<br />

Dafür wird ein <strong>Entwurf</strong> konzipiert, der durch eine <strong>prototypische</strong> <strong>Implementierung</strong> realisiert<br />

wird. Dieser Prototyp soll eine rechtssichere <strong>und</strong> benutzerfre<strong>und</strong>liche Anwendung garantieren.<br />

Ein weiteres Ziel ist eine kritische Auseinandersetzung mit bestehenden <strong>sicheren</strong> E-<strong>Mail</strong>-<br />

Systemen.<br />

Rechtliche Gr<strong>und</strong>lagen zum Datenschutz <strong>und</strong> zu elektronische Signaturen werden ebenfalls<br />

erörtert.<br />

Erläuterungen zu nationalen <strong>und</strong> internationalen Standards sowie deren Einbindung weisen<br />

auf die Interoperabilität des Systems hin.<br />

1<br />

kurz E-<strong>Mail</strong> für engl.: Electronic <strong>Mail</strong><br />

2<br />

online: http://www.idc.com<br />

3<br />

Wenn in dieser Diplomarbeit die maskulinen Substantive wie ‚Anwender’ oder ‚Sender’ verwendet<br />

werden, dann sollen sie sich auf beide Geschlechter beziehen.<br />

1


EINLEITUNG<br />

2.2 Überblick <strong>und</strong> Aufbau der vorliegenden Arbeit<br />

In Kapitel zwei erfolgt eine Umfeldanalyse, in der gr<strong>und</strong>legende Theorien über Kryptografie<br />

erläutert werden <strong>und</strong> anhand von beschriebenen Standards der Gesamtkontext dargestellt<br />

wird. Eine Beschreibung der Theorie von sicherer E-<strong>Mail</strong> <strong>und</strong> eine Darstellung der rechtlichen<br />

Situation in der B<strong>und</strong>esrepublik Deutschland im allgemeinen sowie in Berlin <strong>und</strong> an<br />

der TU-Berlin im speziellen sind ebenfalls Bestandteil des zweiten Kapitels. Hierbei wird<br />

auch auf das Datenmodell der Campuskarte eingegangen, soweit es für den vorliegenden<br />

Kontext erforderlich ist.<br />

Das dritte Kapitel beginnt mit einer Beschreibung bereits entwickelter sicherer E-<strong>Mail</strong>-<br />

Produkte. Anschließend folgt eine kurze Erläuterung des Vorgehensmodells, mit dessen Hilfe<br />

die Lösung erarbeitet wurde. Daraufhin werden die Anforderungen, die an das System gestellt<br />

werden, genauer spezifiziert.<br />

Der Hauptteil der Analyse bzw. des <strong>Entwurf</strong>s des gesamten <strong>sicheren</strong> E-<strong>Mail</strong>-Konzepts ist<br />

im vierten Kapitel zusammengefasst.<br />

Spezifizierende Beschreibungen sowie Codebeispiele werden im fünften Kapitel dargelegt.<br />

Eine nähere Betrachtung der E-<strong>Mail</strong>-Clients <strong>und</strong> ihrer Konfiguration für den <strong>sicheren</strong> E-<br />

<strong>Mail</strong>-Einsatz mit der Campuskarte folgt in Kapitel sechs.<br />

Eine ausführliche Darstellung der Ergebnisse, sowie kritische Betrachtungen des Systems<br />

sind Bestandteil des siebenten Kapitels. Mit einem Ausblick wird die Arbeit abger<strong>und</strong>et.<br />

Im Anhang befindet sich neben der Bibliografie u.a. ein Abkürzungsverzeichnis <strong>und</strong> ein<br />

Glossar.<br />

2.3 Sicherheitsbedürfnisse<br />

Die erste Frage, die sich bei den derzeitigen, vielfältigen Computerangriffen stellt, ist die<br />

nach einer genauen Definition der Sicherheitsbedürfnisse <strong>eines</strong> Computeranwenders.<br />

Zu den vier wichtigsten Sicherheitsbedürfnissen gehören: Authentizität, Vertraulichkeit,<br />

Integrität <strong>und</strong> Verfügbarkeit.<br />

Authentizität<br />

Authentizität bezeichnet im allgemeinen die Echtheit <strong>eines</strong> Kommunikationspartners bzw.<br />

<strong>eines</strong> Dokuments. Dies spiegelt sich u.a. in dem Vertrauen wieder, das man den übermittelten<br />

Daten zuspricht.<br />

Vertraulichkeit<br />

Vertraulichkeit bedeutet, dass Daten, die per Computer übermittelt werden, nur dem Sender<br />

<strong>und</strong> Empfänger bekannt sein dürfen. Um Vertraulichkeit zu gewährleisten muss das Mitlesen<br />

durch einen Dritten ausgeschlossen werden können.<br />

Integrität<br />

Integrität von Daten befasst sich mit deren Unveränderlichkeit. Bei einem Datenaustausch ist<br />

es von Bedeutung, dass die Daten auf dem Weg vom Absender zum Empfänger nicht verändert<br />

werden. „Integrität betrifft die Beziehung <strong>eines</strong> Datenelements zu sich selbst im Verlauf<br />

der Zeit.“ (siehe [SCHN01], S. 68) Hierbei unterscheidet sich Integrität von Genauigkeit, d.h.<br />

integre Daten müssen nicht unbedingt der Wahrheit entsprechen.<br />

Verfügbarkeit<br />

2


Das System zum Schutz der geheimen Daten muss jederzeit verfügbar sein. Alle Soft- <strong>und</strong><br />

Hardwarekomponenten müssen funktionsfähig <strong>und</strong> einsatzbereit sein, damit die Schutzmechanismen<br />

dauerhaft eingesetzt werden können.<br />

2.4 Das TU-Projekt „Campuskarte“<br />

Seit Mitte 2000 bereitet die TU-Berlin die Einführung einer SmartCard vor, die als multifunktionaler<br />

Studenten- <strong>und</strong> Dienstausweis eingesetzt werden soll. Dabei soll der volle<br />

Funktionsumfang einer Java-basierten Chipkarte zum Einsatz kommen. Neben einem optischen<br />

Studierendenausweis <strong>und</strong> einem Semesterticket für den öffentlichen Personennahverkehr<br />

(ÖPNV), bietet die Campuskarteninfrastruktur Dienste über das Internet an. Zu diesen<br />

Diensten gehören, u.a. die Rückmeldung zu einem neuen Semester, die Anmeldung zu<br />

Prüfungen <strong>und</strong> Adressänderungen. Die Karte soll außerdem in den Bereichen der Bibliothek<br />

<strong>und</strong> der Mensa zum Einsatz kommen. Denkbar ist auch die Möglichkeit sich, online an Wahlen<br />

zu beteiligen.<br />

Die Einsparung <strong>und</strong> Vereinfachung in den Verwaltungsabläufen ist <strong>eines</strong> der Ziele, die<br />

die TU-Berlin mit der Einführung der Campuskarte verfolgt. Hierzu gehört die Möglichkeit<br />

die Chipkartenauthentifizierung an bestehende Verwaltungsvorgänge wie die „Kosten-<br />

Leistungs-Rechnung 4 “ <strong>und</strong> das System „Leistung in der Forschung 5 “ anzubinden.<br />

Derzeitige Ziele sind die Schaffung von technischen <strong>und</strong> organisatorischen Infrastrukturen,<br />

die den Einsatz der Campuskarte ermöglichen. Da das System ein hohes Sicherheitsniveau<br />

fordert, ist außerdem ein TUB eigenes Trustcenter im Aufbau, welches die Zertifikate<br />

<strong>und</strong> Schlüssel der Nutzer erzeugt <strong>und</strong> verwaltet.<br />

Ein kurzer Abriss der bislang wichtigsten Meilensteine ist wie folgt zu skizzieren. Der<br />

Projektstart war im Juli 2000, nachdem ein Rahmenpflichtenheft [RAPH00] erarbeitet wurde,<br />

das die Ziele des Projekts verdeutlicht. Verschiedene Modellbeschreibungen, wie u.a. Anforderungsmodell<br />

<strong>und</strong> Analysemodell folgten bis zum Jahresende. Der damalige Hauptprojektpartner<br />

Motorola lieferte seine ersten Chipkarten im Februar 2001 aus. Mit diesen Testkarten<br />

wurde ein System entwickelt, das am 31. Mai 2001 der Öffentlichkeit präsentiert wurde. Bis<br />

zur zweiten Präsentation im Dezember 2001 wurde das Campuskartesystem <strong>und</strong> deren Infrastruktur<br />

weiterentwickelt. In diesen Zeitraum fällt auch die Suche nach dem neuen Kartenlieferanten<br />

GemPlus. Ein Zwischenschritt zu der momentan geplanten Rollout-Phase der<br />

SmartCards, war die Einführung <strong>eines</strong> Semestertickets im Layout einer Chipkarte. Die zurzeit<br />

laufenden Entwicklungen der Vor- <strong>und</strong> Endpersonalisierung, sowie der TUB-Trustcenter<br />

Aktivitäten, führen zu einem neuen Meilenstein im Projekt.<br />

4<br />

kurz: KLR<br />

5<br />

kurz: LinF; Dieses System verwaltet erbrachte Leistungen (u.a. Lehrveranstaltungen <strong>und</strong> Diplomarbeitsbetreuungen)<br />

von Lehrkräften<br />

3


3 Umfeldanalyse <strong>und</strong> theoretische Gr<strong>und</strong>lagen<br />

Die Themen dieses Kapitels handeln von gr<strong>und</strong>legenden Theorien der Verschlüsselungs- <strong>und</strong><br />

Sicherheitssoftware. Neben den erwähnten Standardbeschreibungen, die bei der praktischen<br />

Lösung zum Einsatz kommen, wird auch ein Einblick in den gesetzlichen Rahmen <strong>und</strong> in die<br />

Campuskarteninfrastruktur gegeben.<br />

Im Rahmen der Arbeit wird häufig von PKI gesprochen. Die Abkürzung PKI steht für<br />

Public Key Infrastructure. Mit ihr wird ein System beschrieben, dass es Computeranwendern<br />

ermöglicht, sicher über Datennetze kommunizieren zu können. Die Infrastruktur besteht aus<br />

verschiedenen Teilkomponenten, u.a. den Endanwendern, den Zertifikaten <strong>und</strong> der Zertifizierungsstelle.<br />

Als konkretes Beispiel wird in dieser Arbeit das TUB-Trustcenter <strong>und</strong> die<br />

Campuskarteninfrastruktur beschrieben.<br />

3.1 Kryptografie<br />

Kryptografie ist das Gebiet der Wissenschaft, das sich mit der Ver- <strong>und</strong> Entschlüsselung von<br />

vertrauenswürdigen Daten beschäftigt. Sie baut in der heutigen Informationsgesellschaft auf<br />

mathematische Verfahren auf, die u.a. Computerdaten schützen können.<br />

Geheimschriften sind schon seit dem 5. Jahrh<strong>und</strong>ert v. Chr. bekannt <strong>und</strong> halfen vertrauliche<br />

Informationen während Fehden zwischen Griechenland <strong>und</strong> Persien zu übermitteln. Der<br />

verschlüsselte Datenaustausch z.Z. der zwei Weltkriege führte dazu, dass das Gebiet der<br />

Kryptografie Einzug in heutige moderne Wissenschaften, wie Mathematik <strong>und</strong> Informatik,<br />

fand. Als Beispiel kann die Chiffriermaschine Enigma genannt werden (näheres siehe<br />

[SING00]).<br />

3.1.1 Symmetrische Verfahren<br />

Bei einem symmetrischen Verschlüsselungsverfahren wird mit dem g l e i c h e n - einem geheimen<br />

- Schlüssel bei der Ver- <strong>und</strong> bei der Entschlüsselung gearbeitet. Der zu verschlüsselnde<br />

Text wird mit einem nur den zwei Teilnehmern des Datenaustausches bekannten<br />

Schlüssel in der Weise kombiniert, dass ein kryptischer Text entsteht, der ohne Entschlüsselung,<br />

nicht gelesen werden kann. Der Partner, der den verschlüsselten Text erhält, ist auch im<br />

Besitz des geheimen Schlüssels. Er kann den verschlüsselten Text mit dem geheimen<br />

Schlüssel in der Weise kombinieren, dass wieder ein Klartext aus der Nachricht entsteht.<br />

Bei dieser kryptografischen Methode ist es von entscheidender Bedeutung, dass nur der<br />

Sender <strong>und</strong> der Empfänger im Besitz des Schlüssels sind. Sollte eine dritte Person den<br />

Schlüssel vorliegen haben, so kann sie die geheime Nachricht entschlüsseln <strong>und</strong> lesen.<br />

Ein weiteres Problem dieser Methode ist, dass sich die beiden Kommunikationspartner<br />

auf einen Schlüssel verständigen müssen, d.h. es muss beiden vor der Übertragung klar sein,<br />

welcher Schlüssel benutzt wird. Durch diesen Informationsaustausch entstehen weitere Sicherheitsrisiken.<br />

Gängige symmetrische Algorithmen sind u.a. DES (Data Encryption Standard), 3DES,<br />

IDEA (International Data Encryption Algorithm), Blowfish <strong>und</strong> der kürzlich entwickelte AES<br />

(Advanced Encryption Standard), der als Nachfolger des DES-Standards eingesetzt wird.<br />

Die Abbildung 2-3.1 zeigt dieses Verfahren, bei der man erkennt das bei beiden<br />

Methoden der geheime Schlüssel SK (engl.: Secret Key) angewendet wird, d.h. es wird die<br />

Nachricht M (engl.: Message) mit dem selben Schlüssel Ver- (E für engl.: Encrypted) <strong>und</strong><br />

Entschlüsselt (D für engl.: Decrypted). Cipher steht für den kodierten Text.<br />

4


UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

Message E SK<br />

(M) Cipher D SK<br />

(C) Message<br />

3.1.2 Asymmetrische Verfahren<br />

Abbildung 2-3.1: Symmetrische Verschlüsselung<br />

Durch das asymmetrische Verschlüsselungsverfahren werden einige im vorigen Abschnitt<br />

angesprochene Sicherheitsrisiken umgangen, da bei dieser Methode unterschiedliche Schlüssel<br />

zum Ver- bzw. Entschlüsseln eingesetzt werden. Die zwei Schlüssel werden mit als<br />

„öffentlich“ <strong>und</strong> „privat“ bezeichnet.<br />

Das mathematische Verfahren, welches hinter dieser Methode steckt, ermöglicht es eine<br />

Nachricht, mit dem öffentlichen Schlüssel des Empfängers zu verschlüsseln. Dieser Schlüssel<br />

ist in der Regel öffentlich zugänglich <strong>und</strong> darf jedem bekannt sein, deshalb auch die Bezeichnung<br />

„öffentlich“.<br />

Die verschlüsselte Nachricht kann nun an den Empfänger übermittelt werden, der diese wiederum<br />

nur mit seinem „privaten“ Schlüssel entschlüsseln kann.<br />

Bei dieser Methode müssen sich die Kommunikationspartner auf ein Schlüsselpaar einigen.<br />

Anders als bei der symmetrischen Verschlüsselung ist der Schlüssel der zum Verschlüsseln<br />

benutzt wird nicht geheim, nur der Schlüssel beim Empfänger, sein privater, darf nicht<br />

herausgegeben werden.<br />

Die bekannteste asymmetrische Verschlüsselungsmethode ist RSA, benannt nach ihren<br />

Erfindern: Ron Rivest, Leonard Adleman <strong>und</strong> Adi Shamir. Sie wurde in den 70er Jahren des<br />

letzten Jahrh<strong>und</strong>erts entwickelt, <strong>und</strong> basiert auf dem mathematischen Prinzip der Primfaktorzerlegung.<br />

Aufgr<strong>und</strong> der Verschlüsselungstechnik kann man die Länge von symmetrischen<br />

mit asymmetrischen Schlüsseln nicht zum Qualitätsvergleich heranziehen. Ein anderer<br />

asymmetrischer Algorithmus ist z.B. DH (Diffie-Hellmann), der sich aber nur in Kombination<br />

mit einem digitalen Signaturverfahren, wie DSS 6 , anwenden lässt. Die Verschlüsselung<br />

mit elliptischen Kurven (ECC 7 ), setzt auf neuere mathematische, zum Teil geometrische,<br />

Verfahren. Beim Einsatz einer Public Key Infrastructure wird mit dem asymmetrischen Konzept<br />

gearbeitet.<br />

Die Abbildung 2-3.2 verdeutlicht diese Verschlüsselungsmethode, bei der eine Nachricht<br />

mit dem öffentlichen Schlüssel (PubKey für engl.: Public Key) verschlüsselt wird. Der daraus<br />

erhaltene kodierte Text kann nur mit dem privaten Schlüssel (PrivKey für engl.: Private Key)<br />

des Empfängers entschlüsselt werde, um wieder die Nachricht zu erhalten.<br />

Es ist auch möglich eine Nachricht mit dem privaten Schlüssel zu verschlüsseln <strong>und</strong> mit<br />

dem öffentlichen wieder zu entschlüsseln. Die Daten sind dann aber nicht geschützt, weil der<br />

öffentliche Schlüssel „jedem“ bekannt ist. Diese umgekehrte Methode wird allerdings bei<br />

elektronischen Signaturen angewendet.<br />

6<br />

steht für „Digital Signature Standard“<br />

7<br />

steht für „Elliptic Curve Cryptography“<br />

5


Message E PubKey<br />

(M) Cipher D PrivKey<br />

(C) Message<br />

3.1.3 Hybride Verfahren<br />

Abbildung 2-3.2: Asymmetrische Verschlüsselung<br />

Das hybride Verschlüsselungsverfahren sieht vor, die symmetrische <strong>und</strong> asymmetrische Methode<br />

zu kombinieren. Da bei der asymmetrischen Methode lange Schlüssellängen auftreten<br />

<strong>und</strong> dadurch ein Ver- <strong>und</strong> Entschlüsselungsvorgang durch hohen Rechenaufwand lange dauern<br />

kann, wird bei der hybriden Variante die Nachricht mit einem kurzen symmetrischen<br />

„geheimen“ Schlüssel (SK) verschlüsselt, z.B. ein DES-Schlüssel.<br />

Der geheime Schlüssel wiederum wird mit einem „öffentlichen“ Schlüssel des Empfängers<br />

verschlüsselt <strong>und</strong> mit der gesendeten Nachricht mitgeschickt. Auf diese Weise hat der<br />

Empfänger nach der Entschlüsselung des geheimen Schlüssels, mit Hilfe des privaten Schlüssels,<br />

die Möglichkeit die verschlüsselte Nachricht mit dem symmetrischen Schlüssel zu entschlüsseln.<br />

Diese Methode bietet einen geringeren Rechenaufwand als das asymmetrische<br />

Verfahren <strong>und</strong> gleichzeitig deren Vorteile, d.h. der geheime Schlüssel muss vor der <strong>sicheren</strong><br />

Kommunikation n i c h t ausgetauscht werden.<br />

Die Abbildung 2-3.3 verdeutlicht den Einsetzen von zwei Methoden. Es müssen zwei<br />

Daten an den Empfänger übermittelt werden die kodierte Nachricht (Cipher von Message)<br />

<strong>und</strong> der verschlüsselte geheime Schlüssel (Cipher vom Secret Key).<br />

Message<br />

E SK<br />

(M)<br />

Cipher von<br />

Message<br />

D SK<br />

(C)<br />

Message<br />

E PubKey<br />

(SK)<br />

D PrivKey<br />

(SK)<br />

Cipher vom<br />

SecretKey<br />

3.1.4 Hashfunktionen<br />

Abbildung 2-3.3: Hybride Verschlüsselung<br />

Hashfunktionen bieten die Möglichkeit Daten in der Weise auf einen kleineren Wert abzubilden,<br />

dass ein Ergebniswert resultiert, der nur mit den vorhandenen Daten erzielt werden kann.<br />

Bei einem guten Hashwertalgorithmus ist der Hashwert 8 für jeden Eingabewert anders, <strong>und</strong><br />

damit eindeutig. Außerdem lassen sich anhand <strong>eines</strong> Hashwertes keine Rückschlüsse auf die<br />

Eingabedaten ziehen. Diese Methode wird bei elektronischen Signaturen eingesetzt.<br />

8<br />

wird auch als Prüfsumme oder Kondensat bezeichnet<br />

6


3.2 Digitale Unterschriften<br />

UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

Ein zweiter großer Forschungsbereich in Zusammenhang mit elektronischer Kryptografie<br />

widmet sich dem Erzeugen <strong>und</strong> Prüfen von digitalen Signaturen.<br />

3.2.1 Signaturen<br />

Um ein elektronisches Dokument digital zu signieren, wird mittels einer Funktion, z.B.<br />

SHA-1, ein Hashwert gebildet, der z.B. an eine E-<strong>Mail</strong> mit angehangen wird.<br />

Der Empfänger ist nun in der Lage, mittels der gleichen Hashfunktion den Hashwert der<br />

Nachricht erneut zu erzeugen. Sollten die beiden Hashwerte identisch sein, ist davon auszugehen<br />

das die Nachricht auf dem Übertragungsweg nicht verändert wurde, denn für jede Veränderung<br />

innerhalb der Nachricht würde die Hashfunktion einen anderen Wert berechnen.<br />

Damit der Empfänger sicher sein kann, dass die Nachricht vom angegebenen Sender<br />

stammt, verschlüsselt dieser mit seinem privaten Schlüssel die Prüfsumme.<br />

Damit der Empfänger die zwei Hashwerte vergleichen kann wird zunächst die Prüfsumme<br />

mit dem öffentlichen Schlüssel entschlüsselt. Dies ist notwendig, weil man eindeutig nachweisen<br />

möchte, von wem die Nachricht stammt. Die Integrität der Nachricht ist dank der<br />

Eindeutigkeit des Hashwertes auch gesichert.<br />

Das Datenpaket aus Nachricht <strong>und</strong> verschlüsselter Signatur wird nach den Standards<br />

PKCS#7 <strong>und</strong> S/MIME zusammengesetzt.<br />

Wegen der Äquivalenz zur herkömmlichen Unterschrift spricht man bei diesem Verfahren<br />

auch von einer elektronischen oder digitalen Signatur (bzw. Unterschrift).<br />

Es stellt sich die Frage, wie der Empfänger sicher sein kann, dass er die Nachricht mit dem<br />

öffentlichen Schlüssel des Senders verifiziert. Als Lösung für dieses Problem kommt der<br />

Einsatz von Zertifikaten zu tragen.<br />

Vorteile einer digitalen Signatur:<br />

<br />

<br />

<br />

<br />

Daten können nicht verfälscht werden.<br />

Die digitale Signatur ist nicht fälschbar.<br />

Die digitale Signatur ist einfach prüfbar.<br />

Die digitale Signatur ist nicht abstreitbar.<br />

Bedingungen die für die Sicherheit erfüllt werden müssen:<br />

<br />

<br />

<br />

<br />

<br />

<br />

Der private Schlüssel muss sicher verwahrt werden.<br />

Die verwendeten Verfahren müssen sicher sein.<br />

Bei der Schlüsselerzeugung müssen gute Zufallszahlen verwendet werden.<br />

Die Zertifizierungsstelle muss sicher vorgehen.<br />

Die Signaturumgebung muss sicher sein.<br />

Eine sichere <strong>und</strong> unverfälschte Darstellung der Daten muss gewährleistet werden.<br />

Mit der Abbildung 2-3.4 wird verdeutlicht, wie eine digitale Signatur gebildet wird. Beim<br />

ersten Schritt wird eine Prüfsumme (CS für engl.: Checksum) gebildet, der dann im zweiten<br />

Schritt mit dem privaten Schlüssel verschlüsselt (E PrivKey (CS)) wird, diese Signatur (engl.:<br />

Digital Signature) wird dann an die Nachricht (Message) angehangen <strong>und</strong> verschickt.<br />

7


In Abbildung 2-3.5 wird der Vorgang des Verifizierens veranschaulicht. Hierbei wird<br />

wiederum die Prüfsumme über die Nachricht gebildet, die mit der entschlüsselten<br />

übertragenen Prüfsumme verglichen wird. Sollten die Werte übereinstimmen ist die Signatur<br />

der Nachricht korrekt verifiziert worden. Bei Ungleichheit gilt die Signatur der Nachricht<br />

nicht.<br />

Message<br />

Message H(M) Checksum E PrivKey<br />

(CS)<br />

Digital Signature<br />

(encrypted)<br />

Digital Signature<br />

(encrypted)<br />

Abbildung 2-3.4: Erzeugen einer Digitalen Signatur<br />

Message<br />

H(M)<br />

Checksum<br />

=?<br />

Digital Signature<br />

(encrypted)<br />

D PubKey<br />

(DS)<br />

Checksum<br />

3.2.2 Zertifikate<br />

Abbildung 2-3.5: Prüfen einer Digitalen Signatur<br />

Mit einem Zertifikat wird ein öffentlicher Schlüssel vertrauensvoll an eine Person geb<strong>und</strong>en.<br />

Dieses Vertrauen wird durch die unterzeichnende Instanz gewährleistet, welche die Zertifikate<br />

ausstellt. D.h. es wird der öffentliche Schlüssel mit Zusatzinformationen des Trägers,<br />

u.a. Name <strong>und</strong> E-<strong>Mail</strong>-Adresse, digital signiert. Im vorliegenden Fall ist die dritte Stelle, das<br />

im nächsten Kapitel beschriebene TUB-Trustcenter. Damit wird einem Sender das Vertrauen<br />

gegeben, dass ein öffentlicher Schlüssel auch zu der Person gehört, für die er die E-<strong>Mail</strong> verschlüsselt.<br />

Zertifikate enthalten im allgemeinen einen eindeutigen Namen des Besitzers, Angaben<br />

über den Aussteller, sowie Details über die Kryptografie-Algorithmen.<br />

Der genaue Aufbau von Zertifikaten wird in Kapitel 3.10.4 beschrieben.<br />

3.3 Aufbau des TUB-Trustcenters<br />

Bei der Zuordnung von „öffentlichen“ Schlüsseln zu Personen stellt sich die Frage der vertrauenswürdigen<br />

Zugehörigkeit dieser beiden Komponenten. Wie kann man als Anwender<br />

sicher sein, seinem Gegenüber zu vertrauen. In der PKI haben sich deshalb zwei Schemata<br />

herausgebildet, welche dieses Vertrauen schaffen sollen. Das ist zum einen das sogenannte<br />

8


UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

TrustedWeb, d.h. das Vertrauen wird durch einzelne Benutzer, die sich untereinander gegenseitig<br />

zertifizieren, realisiert.<br />

Beim anderen Ansatz, den u.a. auch die TU-Berlin verfolgt, geht man von e i n e r vertrauenswürdigen<br />

obersten Instanz aus. Dieser Instanz sind weitere sogenannte Certification<br />

Authorities (kurz CA) untergeordnet, die dann u.a. auch die Zertifikate mit öffentlichen<br />

Schlüsseln für die Endnutzer ausstellen. Jede in diesem Baum gelegene Zertifizierungsinstanz<br />

wird von übergeordneten CA zertifiziert. Um ein Zertifikat <strong>eines</strong> Endnutzers zu verifizieren,<br />

<strong>und</strong> damit trauen zu können, muss man als Nutzer die gesamte Hierarchie der<br />

Zertifizierungskette verifizieren. Hierfür ist eine Kette von Zertifikaten notwendig, an deren<br />

Ende das selbstsignierte Wurzel (engl.: root) CA-Zertifikat steht. Um das Vertrauen in eine<br />

Root-CA zu gewährleisten wird der Fingerprint 9 des Root-Zertifikats veröffentlicht, den jeder<br />

Endanwender nachprüfen kann.<br />

Die Abbildung 2-3.6 verdeutlicht die Baumstruktur der einzelnen CAs. Neben der<br />

Personen-CA gibt es u.a. noch die Object-CA, welche Zertifikate für generierten<br />

Programmcode ausstellt.<br />

DFN-PCA TUB-CA<br />

Infrastruktur-CA TUB-E-<strong>Mail</strong>-CA Externe-CA<br />

TUB-Server-CA<br />

TUB-Object-CA<br />

Personen-CA<br />

Endnutzerzertifikat<br />

Abbildung 2-3.6: TUB-CA-Baum<br />

3.3.1 TUB-CA<br />

Die Wurzelzertifizierungsinstanz TUB-CA des Trustcenters ist diejenige Instanz, die den<br />

unter ihr liegenden CAs ihre Vertrauenswürdigkeit ausspricht. Die TUB-CA ist mit einem<br />

selbst signierten Zertifikat (Self-Sign-Certificate) ausgestattet, mit dem sie andere Certification<br />

Authorities signieren kann. Der private Schlüssel, mit dem die anderen CAs signiert<br />

werden, ist ein höchst schützenswertes Gut, das unter k e i n e n Umständen bekannt werden<br />

darf, weil damit das gesamte System kompromittiert wäre <strong>und</strong> es z.B. möglich wäre sich als<br />

ein Angreifer sonst eigene vertrauenswürdige Zertifikate ausstellen könnte. Deshalb ist der<br />

Zugang zum TUB-Trustcenter auch durch hohe Sicherheitsmechanismen geschützt.<br />

Die Root-CA signiert u.a. die Zertifikate der Personen-CA <strong>und</strong> der Server-CA. Dies sind<br />

untergeordnete CAs, die wiederum Endnutzerzertifikate signieren, welche an Personen <strong>und</strong><br />

Applikationsserver ausgegeben werden.<br />

Um ein Zertifikat auf seine Gültigkeit verifizieren zu können, muss die gesamte Zertifikatskette<br />

mit einbezogen werden, d.h. jedes Zertifikat wird von dem Zertifikat der übergeordneten<br />

Instanz geprüft.<br />

9<br />

Mit Fingerprint (zu deutsch: Fingerabdruck) wird der Hashwert bezeichnet, der über ein Zertifikat<br />

gebildet wurde. Er ist nicht signiert. Er wird z.B. in Zeitungen veröffentlicht.<br />

9


3.3.2 Personen-CA<br />

Die Endanwender im Campuskartenprojekt, u.a. Studenten <strong>und</strong> Mitarbeiter der Universität,<br />

haben zwei bzw. drei für sie ausgestellte Personenzertifikate. Die Aufgaben der einzelnen<br />

Zertifikate werden in einem späteren Abschnitt noch genauer betrachtet.<br />

Für die Ausstellung dieser Zertifikate ist die Personen-CA zuständig. Sie ist die Instanz,<br />

die einen vertrauenswürdigen Bezug zwischen ausgestelltem Zertifikat <strong>und</strong> Endnutzer herstellt.<br />

In dem Zertifikat sind u.a. Name, E-<strong>Mail</strong>-Adresse <strong>und</strong> Abteilung angegeben. Zu jedem,<br />

von der Personen-CA ausgestelltem Zertifikat, wird ein privater Schlüssel erzeugt. Von den<br />

privaten Komponenten der Verschlüsselungsschlüssel der TUB-Mitarbeiter wird ein Backup<br />

im Archivraum des Trustcenters der TU-Berlin sicher verwahrt.<br />

Um die Anbindung an andere Zertifizierungsstellen zu erlauben, besteht für die Personen-<br />

CA die Möglichkeit der Cross-Zertifizierung mit anderen CAs.<br />

Sollte ein Nutzerzertifikat abhanden gekommen oder kompromittiert worden sein, ist das<br />

Trustcenter der TU-Berlin in der Lage, dieses Zertifikat auf einer Widerrufsliste („Certificate<br />

Revocation List“, kurz CRL) zu veröffentlichen, damit es von anderen Nutzern als ungültig<br />

erkannt werden kann. Diese CRL wird von der Personen-CA signiert. Einmal widerrufene<br />

Zertifikate können niemals erneuert, wieder entsperrt oder verlängert werden.<br />

Alte CRLs werde archiviert, um die Gültigkeit von Zertifikaten auch zu einem späteren<br />

Zeitpunkt verifizieren zu können.<br />

Auf einem vom Trustcenter bereitgestelltem Verzeichnisdienst wird mindestens einmal<br />

pro Woche eine aktuelle CRL der TUB-Personen-CA veröffentlicht.<br />

3.4 Gesetzlicher Hintergr<strong>und</strong><br />

Der Gesetzgeber sieht vor, dass personenbezogene Daten vertraulich <strong>und</strong> geheim behandelt<br />

werden müssen. Dazu dienen die Datenschutzgesetze von B<strong>und</strong> <strong>und</strong> Ländern. Im folgenden<br />

wird ein kurzer Überblick über die gesetzliche Situation in Deutschland <strong>und</strong> Berlin gegeben.<br />

Die Umsetzung an der Technischen Universität Berlin erfolgt durch Dienstvereinbarungen,<br />

die jedem Mitarbeiter bestimmte Verhaltensweisen auferlegen, um einen vertrauenswürdigen<br />

Rahmen für persönliche Daten zu schaffen.<br />

3.4.1 B<strong>und</strong>esdatenschutz- <strong>und</strong> Signaturgesetz<br />

Das B<strong>und</strong>esdatenschutzgesetz (BDSG, siehe [BDSG02]) beschreibt die rechtliche Gr<strong>und</strong>lage,<br />

die im Umgang mit personenbezogenen Daten in öffentlichen <strong>und</strong> nicht-öffentlichen Stellen<br />

zu treffen sind, damit das Recht auf Privatsphäre für jeden einzelnen gewährleistet ist.<br />

Das Signaturgesetz (SigG, siehe [SIGG01]) unterscheidet fortgeschrittene, qualifizierte<br />

<strong>und</strong> akkreditierte Zertifizierungsstellen <strong>und</strong> damit auch Zertifikate. Das SigG ist die Umsetzung<br />

einer EU-Richtlinie. Das Trustcenter der TU-Berlin ist als fortgeschrittene Zertifizierungsinstanz<br />

zu sehen.<br />

In §3 des Signaturgesetzes wird eine zuständige Behörde definiert, die für die Erteilung<br />

von Lizenzen, der Ausstellung von Zertifikaten sowie die Überwachung des Signaturgesetzes<br />

eingesetzt wird. Das B<strong>und</strong>esamt für Sicherheit in der Informationstechnik 10 (BSI) hat diese<br />

Aufgaben.<br />

Im §16 Absatz 5 der Signaturverordnung (SigV, siehe [SIGV01]) wird gefordert, dass die<br />

zuständige Behörde eine Übersicht im B<strong>und</strong>esanzeiger veröffentlicht, in der sie die geeigneten<br />

Algorithmen <strong>und</strong> Parameter, die u.a. zum Hashen zu signierender Daten <strong>und</strong> zur Erzeugung<br />

<strong>und</strong> Prüfung von digitalen Signaturen als geeignet angesehen werden.<br />

10<br />

siehe [BSINFO]<br />

10


UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

In Punkt 2 der Veröffentlichung 11 vom 24. August 2001, werden als geeignete 160-Bit<br />

Hashfunktionen die folgenden aus der MD4-Familie angegeben:<br />

<br />

<br />

RIPEMD-160<br />

SHA-1<br />

Diese beiden Hashfunktionen werden durch die Veröffentlichung in einem Zeitraum bis Ende<br />

2005 als für die Anwendung der digitalen Signatur als geeignet eingestuft.<br />

Als geeignete Signaturalgorithmen werden die folgenden in Punkt 3 angegeben:<br />

<br />

<br />

<br />

RSA<br />

DSA<br />

DSA-Varianten, basierend auf elliptischen Kurven<br />

Eine Bitlänge von 1024 für den Modulus <strong>eines</strong> RSA-Schlüssels wird bis Mitte 2006 als sicher<br />

eingestuft.<br />

3.4.2 Berliner Datenschutzgesetz<br />

Das Berliner Datenschutzgesetz (BlnDSG) schreibt den Schutz vor, den personenbezogene<br />

Daten im Bereich der Behörden <strong>und</strong> öffentlichen Stellen des Landes Berlin genießen müssen.<br />

Das Gesetz liegt in der aktuellen Fassung seit dem 5.August 2001 novelliert vor. Näheres<br />

siehe [BLNDSG].<br />

3.4.3 Dienstvereinbarungen der TU-Berlin<br />

In dem Dokument [DTUE98] vom 12. Juni 1998 wird über die Vereinbarungen informiert,<br />

die für das Arbeiten <strong>und</strong> den Einsatz von Elektronischer Post für TUB-Angestellte getroffen<br />

wurden.<br />

Es wird darin festgelegt, dass elektronische Post „wie normale schriftliche Dienstpost<br />

behandelt“ wird (unter 1.). Unter Punkt 3 „Personenbezogene Daten“ wird deutlich gemacht,<br />

dass „Elektronische Post unter Beachtung der geltenden Rechtsvorschriften, insbesondere<br />

<strong>eines</strong> anforderungsgerechten <strong>und</strong> detaillierten Datenschutz- <strong>und</strong> Datensicherheitskonzeptes,<br />

auch für die Übertragung von Dokumenten mit personenbezogenem Inhalt genutzt werden<br />

kann.“<br />

In Anlage 3 des Dokuments wird das „Versenden von Schreiben, die personenbezogene<br />

Daten enthalten, insbesondere Studenten- <strong>und</strong> Arbeitnehmerdaten“ nur in verschlüsselter<br />

Form als zulässig eingestuft. Unverschlüsselt dürfen folgende Schreiben verschickt werden:<br />

Formulare, Merkblätter, Ausschreibungen, Veröffentlichungen, etc.<br />

3.4.4 TUB-Sicherheitskonzept für sichere E-<strong>Mail</strong><br />

Bevor ein neues Softwaresystem in der TUB-Verwaltung zum Einsatz kommt, müssen seine<br />

Risiken <strong>und</strong> Lösungsansätze in einem Sicherheitskonzept dargelegt werden. Als Basis gilt die<br />

Zusammenstellung von Gefahren <strong>und</strong> Maßnahmen des B<strong>und</strong>esamtes für Sicherheit in der<br />

Informationstechnik.<br />

11<br />

Veröffentlichung im B<strong>und</strong>esanzeiger Nr. 158 – Seite 18.562<br />

11


3.5 Datenmodell der Campuskarte<br />

Neben den Anwenderdaten, wie Statusgruppe, Gültigkeitszeitraum oder Applikationsprofil,<br />

sind auf der Campuskarte Schlüssel <strong>und</strong> Zertifikate für kryptografische Operationen gespeichert,<br />

auf die durch entsprechende Funktionen zugegriffen werden kann.<br />

Das Datenmodell sieht für Dienstausweise drei Zertifikate <strong>und</strong> die dazugehörigen Schlüssel<br />

auf der Campuskarte vor. Das Dokument [SUHR00] beschreibt das Datenmodell <strong>und</strong> ihre<br />

Zugriffrechte genau, ein Auszug folgt in einem späteren Absatz.<br />

Die Zertifikate auf der Karte<br />

Es ist vorgesehen auf der Campuskarte unterschiedliche Zertifikate für verschiedene Aufgaben<br />

mit ihren privaten Schlüsseln zu speichern. Dies sind im einzelnen folgende.<br />

Signatur-Zertifikat<br />

Für den Vorgang des elektronischen Signierens bzw. Verifizierens von Daten ist auf der<br />

Campuskarte ein separates Zertifikat mit dazugehörendem privaten Schlüssel vorgesehen.<br />

Verschlüsselungs-Zertifikat<br />

Der Vorgang der elektronischen Ver- <strong>und</strong> Entschlüsselung wird mit beim Dienstausweis<br />

durch ein separates Zertifikat mit entsprechendem privaten Schlüssel ausgeführt.<br />

Authentisierungs-Zertifikat<br />

Für den Authentisierungsvorgang gegenüber dem System ist auf der Campuskarte ein separates<br />

Zertifikat mit dazugehörendem privaten Schlüssel vorgesehen.<br />

Es folgt in Auszügen eine Auflistung von Daten der Campuskarte <strong>und</strong> deren Zugriffsberechtigungen<br />

(siehe [SUHR00]).<br />

mögliche Methoden Karteninhaber<br />

Zertifikat Karteninhaber Encrypt (CHE) cwrv rv<br />

Zertifikat Karteninhaber Sign (CHS) cwrv rv<br />

Statusgruppe (PS) cwr r<br />

Geheimer Schlüssel Encrypt (SKE) cwd d<br />

Geheimer Schlüssel Sign (SKS) cs s<br />

Tabelle 2-3.1: Campuskarten Datenmodell<br />

Legende: c: Initialisierung, w: schreiben, r: lesen, v: verfizieren, s: signieren,<br />

d: entschlüsseln<br />

Unterschied von Studierenden- <strong>und</strong> Dienstausweisen<br />

Ein zentraler Unterschied zwischen den Studierenden- <strong>und</strong> den Dienstausweisen ist die Anzahl<br />

der Zertifikate im Datenmodell. Studierende haben nur zwei Zertifikate auf der Karte.<br />

Eines mit dem sie sich authentifizieren können <strong>und</strong> ein zweites mit dem sie Signaturen u n d<br />

Verschlüsselungen vornehmen.<br />

Hier liegt der Unterschied zu den Mitarbeitern, bei ihnen gibt es zwei getrennte Zertifikate,<br />

jeweils <strong>eines</strong> für Signatur- <strong>und</strong> Verschlüsselungsvorgang. Dies ist notwendig, da Daten<br />

anfallen können, die nach dem Ausscheiden des Mitarbeiters aus dem Arbeitsumfeld noch<br />

entschlüsselt werden können. Dies soll unabhängig von der gegebenen Signatur durchführbar<br />

12


UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

sein. Dafür wird der SKE (Geheimer Schlüssel Encryption, siehe Tabelle 2-3.1) <strong>eines</strong><br />

Mitarbeiter als Backup auf einem Rechner des Trustcenters hinterlegt.<br />

Auch aus rechtlichen Gründen, gibt es von den privaten Schlüsseln der Studierenden<br />

keine Sicherheitskopie.<br />

3.6 Common Criteria<br />

Der genaue Titel der Common Criteria lautet “Gemeinsame Kriterien für die Prüfung <strong>und</strong><br />

Bewertung der Sicherheit von Informationstechnik” 12 . Sie liegt seit 1998 in Version 2 vor <strong>und</strong><br />

wird als ISO-Standard 15408 geführt. Neben den Staaten Frankreich, Großbritannien,<br />

Kanada, den Niederlanden <strong>und</strong> den USA wirkte als deutsche Vertretung das BSI bei der Zusammenstellung<br />

dieses Kriterienkataloges mit.<br />

Die Common Criteria stellt eine Weiterentwicklung <strong>und</strong> ein Angleichen der europäischen<br />

(ITSEC), der US-amerikanischen (Orange-Book, TCSEC) <strong>und</strong> der kanadischen (CTCPEC)<br />

Kriterien zur Bewertung der Sicherheit bei Informationssystemen dar. Weitere Informationen<br />

befinden sich unter: http://www.commoncriteria.org.<br />

Die Common Criteria 13 gliedert sich in folgende drei Teile:<br />

1. Einführung <strong>und</strong> allgem<strong>eines</strong> Modell<br />

2. Funktionale Sicherheitsanforderungen<br />

3. Anforderungen an die Vertrauenswürdigkeit<br />

3.7 ITSEC<br />

ITSEC steht für “Information Technology Security Evaluation Criteria” <strong>und</strong> wurde am 3.<br />

März 1998 auf europäischer Ebene in Kraft gesetzt. Die Evaluierung mittels ITSEC 14 von IT-<br />

Sicherheitskriterien wird in Funktionalität <strong>und</strong> Vertrauenswürdigkeit unterschieden. Dabei<br />

wird die Vertrauenswürdigkeit auf Korrektheit <strong>und</strong> Wirksamkeit hin untersucht. Die<br />

Wirksamkeit wird in niedrig, mittel <strong>und</strong> hoch eingestuft <strong>und</strong> die Korrektheit in<br />

Evaluationsstufen von E1 bis E6. Die Evaluierung <strong>eines</strong> IT-Sicherheitsproduktes beinhaltet<br />

Prüfung <strong>und</strong> Bewertung. Hierfür liegt das Evaluationshandbuch „Information Technology<br />

Security Evaluation Methodology – ITSEM" vor.<br />

3.8 E-<strong>Mail</strong>-Standards<br />

Neben den Erläuterungen zum eingesetzten S/MIME Standard, wird auch kurz auf parallel<br />

existierende sichere <strong>Mail</strong>-Standards eingegangen.<br />

3.8.1 S/MIME<br />

S/MIME steht für “Secure Multipurpose Internet <strong>Mail</strong> Extension”. Es ist eine Erweiterung<br />

des MIME-Standards, der den Aspekt Sicherheit mit einbringen soll. Die Nachrichten Spezifikation<br />

der aktuellen Version 3 des Standards wird in RFC 15 2633 definiert, die dazugehörige<br />

Zertifikatverwaltung in RFC 2632.<br />

12<br />

engl.: Common Criteria for Information Technology Security Evaluation<br />

13<br />

weitere Informationen befinden sich online unter: http://www.commoncriteria.org.<br />

14<br />

Infos sind online unter http://www.bsi.de/zertifiz/itkrit/itsec.htm abrufbar.<br />

13


S/MIME ist neben OpenPGP das Sicherheitsprotokoll, dass um die Gunst der IETF 16<br />

konkurriert. Bei der Entwicklung wurde von bei dem Standard von Beginn an auf MIME<br />

-Kompatibilität geachtet. Dadurch, dass S/MIME auch auf den patentrechtlich geschützten<br />

Standards RSA <strong>und</strong> dem früher geheimen Algorithmus RC2 aufbaut, wurde es noch nicht<br />

zum ITEF-Standard erhoben.<br />

In der aktuellen Version 3 wurde darauf geachtet auch auf Verfahren wie DSA, Diffie-<br />

Hellman zurückzugreifen.<br />

S/MIME basiert im Gegensatz zu PGP auf PKIX 17 -Zertifikaten, d.h. es wird eine Trusted<br />

Third Party eingesetzt um Vertrauen zu gewährleisten.<br />

Die Produkte von Netscape <strong>und</strong> die Varianten von Microsoft Outlook unterstützen den<br />

S/MIME-Standard.<br />

3.8.2 PEM<br />

PEM beschreibt ein Sicherheitsprotokoll für Elektronische Post. Die Abkürzung PEM steht<br />

für „Privacy Enhanced <strong>Mail</strong>“ <strong>und</strong> wird in den RFCs 1421-1424 beschrieben. RFC 1421 beschreibt<br />

die Nachricht Prozess Prozeduren. Das zweite Dokument RFC 1422 definiert das<br />

Public-Key Zertifikats Management, das für PEM verwendet wird. RFC 1423 beschreibt die<br />

Algorithmen- <strong>und</strong> Identitätsdefinitionen. Das vierte Dokument RFC 1424 definiert Nachrichtenformate<br />

<strong>und</strong> Konventionen für die Benutzerregistrierung <strong>und</strong> u.a. den Einsatz von<br />

CRLs (Certificate Revokation Lists).<br />

3.8.3 PGP<br />

Die Abkürzung “PGP” steht für „Pretty Good Privacy“ (zu deutsch „Ziemlich Gute<br />

Privatsphäre“). Es beschreibt einen E-<strong>Mail</strong>-Verschlüsselungs-Standard, der von Philipp<br />

Zimmermann entwickelt wurde, mit der Absicht einer breiten Öffentlichkeit <strong>sicheren</strong> E-<strong>Mail</strong>-<br />

Verkehr zu ermöglichen. PGP ist u.a. als kostenlose OpenSource-Software für unterschiedliche<br />

E-<strong>Mail</strong>-Clients erhältlich. Das Verfahren hinter der Öffentlichen Schlüsselverteilung<br />

basiert bei PGP auf der Idee des Trusted Web. Das Message Exchange Format für<br />

PGP wird in RFC 1991 beschrieben.<br />

Eine PGP-Erweiterung für den E-<strong>Mail</strong>-Client MS Outlook ist auf dem Markt erhältlich.<br />

3.9 <strong>Mail</strong>TrusT<br />

Die von der Vereinigung TeleTrust 18 Deutschland in Auftrag gegebene Spezifikation <strong>Mail</strong>-<br />

TrusT (MTT) hat sich zum Ziel gesetzt, eine Basis zu schaffen, auf die sich Hersteller von<br />

Sicherheitskomponenten beziehen können. Das Ziel ist es Software für sichere E-<strong>Mail</strong> <strong>und</strong><br />

<strong>sicheren</strong> elektronischen Dokumentenaustausch zu entwickeln, die interoperabel ist.<br />

Dieser Standard ist notwendig, weil sich proprietäre Lösungen im Kommunikationsbereich<br />

kaum mehr durchsetzen lassen.<br />

An dem Projekt sind neben deutschen Unternehmen <strong>und</strong> Institutionen auch Entwickler<br />

<strong>und</strong> Hersteller aus dem Ausland vertreten.<br />

15<br />

RFC bedeutet „Request For Comments“ <strong>und</strong> steht für eine Sammlung von Informatik-<br />

Quasistandards, mit denen überwiegend wichtige <strong>und</strong> zum Teil skurrile Protokolle <strong>und</strong><br />

Datenstrukturen definiert werden. Sie genießen dennoch ein verbindliches Ansehen.<br />

16<br />

steht für „Internet Engeneering Task Force“<br />

17<br />

Bezeichnung für Public Key Infrastructures, die mit X.509-Zertifikaten arbeiten<br />

18<br />

Infos online unter: http://www.teletrust.de<br />

14


UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

Die <strong>Mail</strong>TrusT-Spezifikation schafft keine neuen Standards, sondern kombiniert schon<br />

bestehenden Spezifikationen zu einem gemeinsamen Bild. Es wird u.a. auf S/MIME, X.509<br />

<strong>und</strong> PKCS#11 zurückgegriffen. Neben den Formaten für den Dokumentenaustausch werden<br />

auch Richtlinien gesetzt, die die Zertifizierungsinfrastruktur mitsamt Sperrlisten <strong>und</strong><br />

Zertifikate <strong>und</strong> Anbindung einer PSE beschreiben.<br />

3.10 Kryptografie- <strong>und</strong> Zertifikatstandards<br />

Die angesprochenen Verschlüsselungs- <strong>und</strong> Signaturmethoden werden durch internationale<br />

Standardisierungen für den privaten <strong>und</strong> wirtschaftlichen Markt festgelegt. Es folgt ein kurzer<br />

Überblick über die derzeit eingesetzten <strong>und</strong> wichtigsten Kryptografiestandards, sowie eine<br />

Einordnung dieser in eine Public Key Infrastruktur, die mit Zertifikaten arbeitet.<br />

3.10.1 RSA<br />

Das asymmetrische Verfahren RSA (im Jahre 1978 am MIT vorgestellt) besitzt die Fähigkeit<br />

der Verschlüsselung <strong>und</strong> in Verbindung mit einem Hashalgorithmus die der digitalen Signatur.<br />

Um das Verfahren nutzen zu können werden zuerst zwei etwa gleich lange Primzahlen (p<br />

<strong>und</strong> q) miteinander multipliziert. Dies ergibt den Modulus n. Anschließend wird die Eulersche<br />

Totientenfunktion (n) berechnet. Weil p <strong>und</strong> q Primzahlen sind, ergibt sich<br />

(n) = (p-1)(q-1).<br />

Nun folgt die Berechnung der öffentlichen Komponente e <strong>und</strong> der geheimen Komponente<br />

d, mit<br />

ed = 1 mod (n).<br />

Das Zahlenpaar e <strong>und</strong> n bildet den öffentlichen <strong>und</strong> das Zahlenpaar d <strong>und</strong> n den geheimen<br />

Schlüssel. Die Primzahlen p <strong>und</strong> q können gelöscht werden, dürfen aber niemals bekannt<br />

werden.<br />

Um Daten zu verschlüsseln, werden sie in Datenblöcke M kleiner dem Modulus n zerlegt.<br />

Die Formel zur Erzeugung des Schlüsseltextes C ist<br />

C = M e mod n.<br />

Um die einzelnen Blöcke des Schlüsseltextes C wieder zu entschlüsseln, wendet man die<br />

Formel<br />

M = C d mod n<br />

an. Es ist anzumerken, dass bei digitale Signaturen die Daten mit d verschlüsselt <strong>und</strong> mit<br />

e wieder entschlüsselt werden.<br />

Seine Sicherheit zieht die Methode aus zwei mathematischen Problemen. Zum einen ist<br />

die Faktorisierung in zwei Primzahlen rechnerisch nur sehr aufwendig zu lösen, zum anderen<br />

ist es das diskrete Logarithmusproblem, mit deren Hilfe man aus dem öffentlichen Schlüssel<br />

<strong>und</strong> einem Klartext den privaten Schlüssel berechnen könnte.<br />

Wie bereits erwähnt benutzt man derzeit Moduluslängen von mindestens 1024 besser<br />

2048 Bit, um nichtmilitärische Daten hinreichend zu schützen.<br />

15


3.10.2 3DES<br />

Der bekannteste symmetrische Verschlüsselungsalgorithmus DES ist international als Quasistandard<br />

anzusehen <strong>und</strong> ist als ANSI-Standard normiert. Es handelt sich um eine Produktverschlüsselungsmethode<br />

(engl.: product cipher), bei der die elementaren Operationen Substitution<br />

<strong>und</strong> Permutation Verwendung finden. Außerdem findet bei der Verschlüsselung auch<br />

eine Blockverschlüsselung (engl.: block cipher) statt. Klartext <strong>und</strong> Ciphertext sind bei DES<br />

gleich lang.<br />

Die Schwäche des DES-Algorithmus liegt in der kurzen Schlüssellänge von nur 56 signifikanten<br />

Bits. Deshalb gibt es u.a. die Erweiterung 3DES (sprich: Triple-DES), die mit zweifacher<br />

oder dreifacher Schlüssellänge, aber dem gleichen Algorithmus arbeitet. Bei dieser<br />

Methode wird ein Block zwei- oder dreimal mit verschiedenen Schlüsseln chiffriert. Die<br />

Länge von symmetrischen Schlüsseln ist im Vergleich zu asymmetrischen Schlüsseln deutlich<br />

kürzer.<br />

3.10.3 SHA-1 mit RSA<br />

SHA-1 (Secure-Hash-Algorithm) arbeitet mit einem Hashwert von 160 Bit <strong>und</strong> bietet einen<br />

größeren Schutz gegen Brute-Force-Attacken 19 als die Hashwertfunktionen, die mit 128 Bit<br />

arbeiten.<br />

SHA-1 wurde im Zusammenhang mit DSS (Digital Signature Standard) von der NSA 20<br />

<strong>und</strong> dem NIST 21 entwickelte. Zur Zeit sind keine kryptografischen Attacken gegen SHA-1<br />

bekannt. MD2, MD5 <strong>und</strong> RIPEMD160 sind weitere bekannte Verfahren, welche von Ron<br />

Rivest entwickelt wurden, mit denen auch Hashwerte erzeugt werden können.<br />

Die Angabe „mit RSA“ besagt, dass der SHA-1 Hashwert mit einem privaten RSA-<br />

Schlüssel verschlüsselt wird <strong>und</strong> als Signatur an z.B. eine E-<strong>Mail</strong> mit angehangen wird.<br />

3.10.4 X.509-Zertifikate<br />

Mit einer plattformunabhängige Notation können Daten auf unterschiedlichen Betriebssystemen<br />

dargestellt werden. X.509-Zertifikate bedienen sich hierfür bei der Abstract Syntax Notation<br />

One (ASN.1), welche in einem späteren Kapitel beschrieben wird. Die Kodierung erfolgt<br />

nach den Distinguished Encoding Rules (DER).<br />

Momentan liegt der X.509 Standard in der Version 3 vor, der auch eine Möglichkeit für<br />

Zertifikaterweiterungen vorsieht. Im Campuskarten-Projekt kommt diese aktuelle Version des<br />

Standards zum Einsatz.<br />

Die ASN.1-Struktur <strong>eines</strong> X.509-Zertifikats sieht wie folgt aus:<br />

Certificate ::= SEQUENCE {<br />

tbsCertificate TBSCertificate,<br />

signatureAlgorithm AlgorithmIdentifier,<br />

signatureValue BIT STRING<br />

}<br />

19<br />

Angriffsart, bei der durch Ausprobieren aller Möglichkeiten nach dem richtigen Wert gesucht wird.<br />

Ihnen wird entgegengewirkt, indem man die Kombinationsmöglichkeiten sehr groß wählt, damit mit<br />

verfügbaren technischen Mittel ein Angriff „mit brutaler Gewalt“ zeitlich nicht durchführbar ist.<br />

20<br />

steht für National Security Agency. Sie ist die Behörde der USA, die vor allem durch ihr Echelon-<br />

Programm in Europa für Aufsehen sorgte. Durch ihre <strong>und</strong>efinierten Aufgabenfelder wird das<br />

Akronym auch scherzhaft mit No Such Agency übersetzt.<br />

21<br />

steht für National Institute of Standards and Technology<br />

16


UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

Die Sequenz Certificate beinhaltet im Feld tbsCertificate die Zertifikatsdaten.<br />

Das Datum signatureAlgorithm gibt den Algorithmus für die im Feld<br />

signatureValue enthaltene Signatur an.<br />

Die gesamten Daten, die das Zertifikat enthält werden in der Sequenz TBSCertificate abgelegt.<br />

Sie sieht wie folgt aus:<br />

TBSCertificate ::= SEQUENCE {<br />

version [0] Version DEFAULT v1,<br />

serialNumber CertificateSerialNumber,<br />

signature AlgorithmIdentifier,<br />

issuer<br />

Name,<br />

validity Validity,<br />

subject Name,<br />

subjectPublicKeyInfo SubjectPublicKeyInfo,<br />

issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,<br />

-- If present, version shall be v2 or v3<br />

subjectUniqueID[2] IMPLICIT UniqueIdentifier OPTIONAL,<br />

-- If present, version shall be v2 or v3<br />

extensions [3] EXPLICIT Extensions OPTIONAL,<br />

-- If present, version shall be v3<br />

}<br />

Für X.509-Zertifikate gibt es drei Versionsmöglichkeiten. Die Version 3 (v3) enthält alle<br />

angegebenen Komponenten. Bei Zertifikaten nach Version 2 (v2) fehlt der Eintrag<br />

extensions. Ab Version 3 sind u.a. folgende Extensions definiert: KeyUsage<br />

(Schlüsselgebrauch), CertificatePolicies (Zertifikatsrichtlinien),<br />

SubjectAlternativeName (alternativer Name des Zertifikatsinhabers) <strong>und</strong><br />

ExtendedKeyUsage (Erweiterte Schlüsselbenutzung). Bei der Version 1 (v1) fehlen<br />

zusätzlich noch die Komponenten issuerUniqueID <strong>und</strong> subjectUniqueID. Die<br />

Versionsnummer wird als INTEGER kodiert <strong>und</strong> fängt gemäß ASN.1 beim Zählen mit Null<br />

an, d.h. v2 ist 1.<br />

Wie der Versionstyp wird die CertificateSerialNumber auch als INTEGER kodiert.<br />

Die Seriennummer <strong>eines</strong> jeden Zertifikates einer Zertifizierungsstelle muss eindeutig<br />

<strong>und</strong> einmalig sein. Dies ist für die genaue Identifizierung <strong>eines</strong> Zertifikats innerhalb einer<br />

CRL notwendig.<br />

Im Feld signature wird der verwendete Algorithmus des Zertifikatausstellers kodiert. Der<br />

Inhalt des Feldes muss dem im signatureAlgorithm Feld gleichen.<br />

Das Feld issuer beinhaltet den Namen des Zertifikatausstellers. Der Name ist ein X.500<br />

distinguished name (DN), der sich wiederum aus relative distinguished names (RDNs) zusammensetzt.<br />

RDN-Typen sind u.a. CN, OU, O <strong>und</strong> C. Diese stehen für common name,<br />

organisational unit, organisation <strong>und</strong> country.<br />

Die Komponente subject ist ebenfalls nach der ASN.1-Struktur Name kodiert. Es<br />

muss von der CA sichergestellt sein, dass das gleiche subject auch nur für eine Entität<br />

verwendet werden darf.<br />

Im Feld validity wird der Gültigkeitszeitraum für das Zertifikat festgelegt. Ein in der<br />

CA-Hierarchie untergeordnetes Zertifikat muss im Gültigkeitszeitraum des Ausstellerzertifikats<br />

liegen.<br />

17


Der öffentliche Schlüssel <strong>eines</strong> Zertifikatinhabers wird im Feld<br />

subjectPublicKeyInfo angegeben. Dies können neben dem im Projekt vorliegenden<br />

RSA-Schlüssel auch DAS- oder Diffie-Hellmann-Schlüssel sein.<br />

3.11 Verhalten von E-<strong>Mail</strong>-Clients mit unterschiedlichen<br />

Testzertifikaten<br />

Es gibt unterschiedliche Möglichkeiten, ein Zertifikat mit Parametern auszustatten. Das<br />

Projekt <strong>und</strong> diese Arbeit haben sich zum Ziel gesetzt, die sichere E-<strong>Mail</strong>-Anwendung mit<br />

gängige E-<strong>Mail</strong>-Clients, wie Netscape Messenger <strong>und</strong> MS-Outlook, durchzuführen.<br />

Damit die Zertifikate, die vom TUB-Trustcenter generiert werden, auch akzeptiert werden,<br />

muss eindeutig festgelegt werden, inwieweit Standardanwendungen mit u.a. E-<strong>Mail</strong>-<br />

Extensions umgehen können. Dazu wurden von einem Test-Trustcenter folgende Zertifikattypen<br />

generiert.<br />

Testuser:<br />

Alfred ATester<br />

Berd BTester<br />

E-<strong>Mail</strong>: alfred@prz.tu-berlin.de<br />

E-<strong>Mail</strong>: berd@prz.tu-berlin.de<br />

Dateiname<br />

alfred_sign_ext<br />

alfred_sign_noext<br />

alfred_enc_ext<br />

alfred_enc_noext<br />

alfred_sign+enc_ext<br />

alfred_sign+enc_noext<br />

alfred_wrong_E-<strong>Mail</strong><br />

Beschreibung<br />

Zertifikat nur zum Signieren mit Erweiterungen für Benutzer<br />

Alfred ATester mit richtiger E-<strong>Mail</strong>-Adresse<br />

Zertifikat nur zum Signieren ohne Erweiterungen für Benutzer<br />

Alfred ATester mit richtiger E-<strong>Mail</strong>-Adresse<br />

Zertifikat nur zum Verschlüsseln mit Erweiterungen für Benutzer<br />

Alfred ATester mit richtiger E-<strong>Mail</strong>-Adresse<br />

Zertifikat nur zum Verschlüsseln ohne Erweiterungen für Benutzer<br />

Alfred ATester mit richtiger E-<strong>Mail</strong>-Adresse<br />

Zertifikat nur zum Signieren <strong>und</strong> Verschlüsseln mit Erweiterungen<br />

für Benutzer Alfred ATester mit richtiger E-<strong>Mail</strong>-Adresse<br />

Zertifikat nur zum Signieren <strong>und</strong> Verschlüsseln ohne Erweiterungen<br />

für Benutzer Alfred ATester mit richtiger E-<strong>Mail</strong>-Adresse<br />

Zertifikat für Benutzer Alfred ATester mit falscher E-<strong>Mail</strong>-Adresse<br />

Tabelle 2-3.2: Testzertifikate<br />

Info: alle Alfred-Test-Zertifikate liegen auch für den Testuser Berd vor; Erweiterung bedeutet,<br />

dass die Zertifikate nur für bestimmte Zwecke (sign oder enc) ausgestellt worden sind<br />

18


3.11.1 Netscape Messenger 4.7x<br />

UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

Anzeige unter „Eigene“ x x x x x x x<br />

Anzeige unter „Messenger“ - x x x x x x<br />

kann signierte Nachricht senden/verifizieren - x x x x x -<br />

kann verschlüsselte Nachricht senden/empfangen - x - x x x -<br />

Legende: x:Ja, -:Nein<br />

Tabelle 2-3.3: Auswertung Netscape Messenger 4.7x<br />

Mit „Anzeige unter ‚Eigene’“ ist gemeint, dass die Zertifikate im Ordner des Benutzers angezeigt<br />

werden. Mit „Anzeige unter ‚Messenger’“ ist gemeint, dass die Zertifikate für den E-<br />

<strong>Mail</strong>-Einsatz auswählbar sind (siehe Abbildung 6-7.1).<br />

Der Messenger die Zertifikate mit expliziter Erweiterung für andere Aufgaben nicht<br />

akzeptiert.<br />

3.11.2 Microsoft Outlook 2000<br />

Anzeige unter Signaturzertifikate - x x x x x x<br />

Anzeige unter Verschlüsselungszertifikate x - x x x x x<br />

kann signierte Nachricht senden/verifizieren x x x x -<br />

e<br />

n<br />

c<br />

_<br />

e<br />

x<br />

t<br />

e<br />

n<br />

c<br />

_<br />

e<br />

x<br />

t<br />

s<br />

i<br />

g<br />

n<br />

_<br />

e<br />

x<br />

t<br />

e<br />

n<br />

c<br />

_<br />

n<br />

o<br />

e<br />

x<br />

t<br />

s<br />

i<br />

g<br />

n<br />

_<br />

e<br />

x<br />

t<br />

e<br />

n<br />

c<br />

_<br />

n<br />

o<br />

e<br />

x<br />

t<br />

s<br />

i<br />

g<br />

n<br />

_<br />

n<br />

o<br />

e<br />

x<br />

t<br />

s<br />

i<br />

g<br />

n<br />

_<br />

n<br />

o<br />

e<br />

x<br />

t<br />

s<br />

i<br />

g<br />

n<br />

_<br />

e<br />

n<br />

c<br />

_<br />

e<br />

x<br />

t<br />

s<br />

i<br />

g<br />

n<br />

_<br />

e<br />

n<br />

c<br />

_<br />

e<br />

x<br />

t<br />

s<br />

i<br />

g<br />

n<br />

_<br />

e<br />

n<br />

c<br />

_<br />

n<br />

o<br />

e<br />

x<br />

t<br />

s<br />

i<br />

g<br />

n<br />

_<br />

e<br />

n<br />

c<br />

_<br />

n<br />

o<br />

e<br />

x<br />

t<br />

w<br />

r<br />

o<br />

n<br />

g<br />

_<br />

e<br />

m<br />

a<br />

il<br />

w<br />

r<br />

o<br />

n<br />

g<br />

_<br />

e<br />

m<br />

a<br />

i<br />

l<br />

19


kann verschlüsselte Nachricht senden/empfangen x x x x -<br />

Legende: x:Ja, -:Nein<br />

Tabelle 2-3.4: Auswertung MS Outlook 2000<br />

Bei MS Outlook 2000 ist es möglich zwei unterschiedliche Zertifikate anzugeben, jeweils für<br />

Signatur <strong>und</strong> Verschlüsselung. Deshalb die Unterteilung der Anzeige. Für den Test wurden<br />

immer zwei Zertifikate vom gleichen Typ (ext, noext) eingesetzt, siehe Tabellenfarbgebung.<br />

Durch die Möglichkeit zwei Zertifikate angeben zu können hat Outlook im Vergleich zu<br />

Netscape Messenger mehr Spielraum im Hinblick auf Erweiterungen.<br />

Beide E-<strong>Mail</strong>-Clients zeigen, dass eine Zertifikat mit einer E-<strong>Mail</strong>-Adresse, die nicht dem<br />

Absender entspricht, nicht eingesetzt werden kann.<br />

3.12 X.500-Verzeichnis <strong>und</strong> Certificate Revocation List<br />

Die CRL (zu deutsch Widerrufsliste) ist ein von der CA signierter Datensatz, indem alle<br />

ungültigen Zertifikate aufgelistet sind. Als ungültig wird ein Zertifikat eingestuft, wenn es<br />

kompromittiert wurde, d.h. die Karte mit dem privaten Schlüssel abhanden gekommen oder<br />

dieser bekannt geworden ist.<br />

Das im Projekt eingesetzte X.500-Verzeichnis basiert auf dem LDAP-Protokoll <strong>und</strong> wird<br />

durch das OpenSource Paket OpenLDAP in der Version 2 bereit gestellt. Die Abkürzung<br />

LDAP steht für „Lightweight Directory Access Protocoll. Die „International Telecommunication<br />

Union“ (ITU) standardisierte den X.500 Verzeichnisdienst, basierend auf dem OSI-7-<br />

Schichtenmodell. Durch LDAP, das auf dem TCP/IP-Protokoll basiert, gewährleistet einen<br />

einfachen Zugriff auf X.500 Verzeichnisse. LDAP wurde von der „Internet Engineering Task<br />

Force“ (IETF) entworfen. Dieses Protokoll wird von den gängigen E-<strong>Mail</strong>-Clients unterstützt,<br />

z.B. Netscape Messenger <strong>und</strong> Microsoft Outlook.<br />

Ein Verzeichnis (engl.: Directory) ist eine spezielle Datenbank, die Informationen über<br />

Dienste <strong>und</strong> Personen speichert <strong>und</strong> über das Internet zur Verfügung stellt. Es ist mit einem<br />

öffentlichen Adressbuch bzw. Telefonbuch vergleichbar.<br />

Der Zugriff auf ein solches Verzeichnis kann benutzt werden, um Zertifikate mit öffentlichen<br />

Schlüsseln vom gewünschten Kommunikationspartner in seine clientseitige Sicherheitsumgebung<br />

einzubinden.<br />

In einem X.500 Directory ist jeder Eintrag durch seinen Distinguished Name (DN) eindeutig<br />

gekennzeichnet. Die einzelnen DN setzen sich wiederum aus Relative Distinguished<br />

Names (RDN) zusammen (siehe X.509-Zertifikate). Das Verzeichnis ist wie ein Baum hierarchisch<br />

aufgebaut (Directory Information Tree, DIT). Jeder RDN bildet einen Knoten, z.B.<br />

ON. Ein Eintrag wiederum setzt sich zusammen aus Attributtyp <strong>und</strong> Wert, z.B CN=Sebastian<br />

Zickau. In Abbildung 2-3.7 bedeuten die einzelnen RDNs: C = Country, O = Organization,<br />

OU = Organizational Unit, CN = Common Name.<br />

20


UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

C=DE<br />

O=TU-Berlin<br />

. . .<br />

OU=PRZ<br />

. . .<br />

CN=Sebastian<br />

Zickau<br />

CN=Thomas<br />

Gebhardt<br />

CN=Klaus<br />

Nagel<br />

. . .<br />

Abbildung 2-3.7: Zertifikathierarchie<br />

In Kapitel 6 wird beschrieben, wie man die Clients konfiguriert, damit sie auf den TUB-Verzeichnisserver<br />

zugreifen können.<br />

3.13 Public Key Cryptographic Standards<br />

Public Key Cryptographic Standards (PKCS) werden u.a. von den RSA Laboratories spezifiziert<br />

<strong>und</strong> in regelmäßigen Abständen aktualisiert. RSA veröffentlichte 1991 zum ersten Mal<br />

diese Serie, mit der Absicht eine allgemein gültige Schnittsstelle für die <strong>Implementierung</strong> von<br />

Public-Key-Anwendungen zu schaffen.<br />

Es sind bis heute 12 PKCS-Standards spezifiziert worden (die Nummerierung von 1-15<br />

beziehen sich noch auf eine spätere Zählweise), die u.a. Richtlinien, Methoden <strong>und</strong> Formate<br />

von PKI-Lösungen definieren. Es bauen heutzutage andere Standard-Spezifikationen auf<br />

dieser Serie auf. PKCS-Standards sind sehr allgemein gehalten <strong>und</strong> lassen sich für viele Anwendungen<br />

einsetzen. Die Definitionen müssen deshalb nicht immer zu einer Assoziation mit<br />

elektronischer Post führen, auch wenn das für diese Arbeit der Fall ist.<br />

Es folgt eine kurze Beschreibung der für diese Arbeit wichtigen Standards, mit einer Betonung<br />

auf PKCS#11.<br />

PKCS#1 (RSA Encryption Standard)<br />

Dieser Standard definiert eine Datenverschlüsselungsmethode, die auf dem RSA-Verfahren<br />

basiert. Sie wird für PKCS#7 zur Signaturberechnung <strong>und</strong> zur Verschlüsselung von temporären<br />

symmetrischen Schlüsseln vorgeschlagen.<br />

PKCS#6 (Extended-Certificate Syntax Standard): Dieser Standard beschreibt ein Format,<br />

um X.509-Zertifikate mit zusätzlichen Attributen zu versehen. Seit der Version 3 hat allerdings<br />

der X.509 Standard selber einen Mechanismus, mit dem man über eigene Zertifikaterweiterungen<br />

zusätzliche Informationen in ein Zertifikat einbringen kann.<br />

PKCS#7 (Cryptographic Message Syntax): Dieser Standard beschreibt in allgemeiner<br />

Form, wie Daten durch kryptografische Verfahren geschützt werden können.<br />

PKCS#10 (Certificate Request Syntax Standard): Dieser Standard definiert ein Format für<br />

Zertifikatanforderungen <strong>und</strong> bildet die Gr<strong>und</strong>lage für den S/MIME-Typ application/pkcs10.<br />

21


PKCS#15 (Cryptographic Token Information Format Standard): Dieser Standard beschreibt<br />

in einer allgemeingültigen Form, in welchem Format kryptografische Entities, u.a.<br />

private Schlüssel oder Zertifikate auf Token, wie SmartCards, gespeichert werden können.<br />

PKCS#11 (Cryptographic Token Interface): Dieser Standard, abgekürzt mit dem Akronym<br />

Cryptoki, definiert eine allgemeine API für die Anbindung von kryptografischen Token an<br />

eine Sicherheitsumgebung. Die Beschreibung liegt momentan in der Version 2.11 vor.<br />

(weiteres siehe Abschnitt 5.1.6)<br />

3.14 Hardware- <strong>und</strong> Treiberstandards<br />

Neben den angesprochenen Kryptografie- <strong>und</strong> E-<strong>Mail</strong>-Standards baut das Projekt<br />

Campuskarte auch auf einer Reihe von Hardware- <strong>und</strong> Treiberstandards auf, da in dem<br />

zugr<strong>und</strong>eliegenden System nicht nur Software, sondern mit der Chipkarte auch Hardware<br />

zum Einsatz kommt.<br />

3.14.1 Open Card Framework<br />

Das OpenCardFramework (OCF) entstand durch die Kooperation 22 verschiedener namhafter<br />

Unternehmen, u.a. GemPlus, Schlumberger <strong>und</strong> IBM, die einen allgemeinen Standard für den<br />

Zugriff in Java auf SmartCards anbieten wollten. Durch den Einsatz von Java sind die Treiber<br />

plattformunabhängig. Als Treiber müssen z.B. vom Kartenhersteller verschiedene Pakete zur<br />

Verfügung gestellt werden, dies sind u.a. CardService <strong>und</strong> CardTerminal. Es handelt<br />

sich dabei um reine Java-<strong>Implementierung</strong>en, welche auf das Vorhandensein einer Java<br />

Virtual Machine angewiesen sind.<br />

Die gesamte Architektur des Campuskartensystems basiert auf OCF. Als Treiber unter<br />

Windows-Betriebssystemen wird eine Bridge verwendet, die sich an die im nächsten Abschnitt<br />

dargestellte PC/SC Schnittstelle koppelt.<br />

Ein Nachteil dieser Architektur ist, dass für jeden Kartenleser eigene OpenCard-Treiber<br />

geschrieben werden müssen, wenn man den vollen Funktionsumfang des OCF nutzen will.<br />

Die gute Anbindung an eine Java-Umgebung ist als Vorteil für diese Architektur zu sehen.<br />

Die Abbildung 2-3.8 zeigt die gesamte OCF-Architektur, mit den einzelnen Abstraktionsschichten<br />

(siehe [OCFP99]).<br />

22<br />

bezeichnet als OpenCard Consortium<br />

22


UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

Abbildung 2-3.8: OCF-Architektur<br />

3.14.2 PC/SC<br />

Der PC/SC 23 -Standard ist eine Initiative Microsofts, die für seine Betriebssysteme einen<br />

allgemeinen Standard für den Zugriff auf SmartCards zur Verfügung stellen will.<br />

Sie wird durch die PC/SC-Workgroup vertreten zu der bekannte Hersteller wie u.a. Sun,<br />

GemPlus <strong>und</strong> Infineon gehören.<br />

Es handelt sich hierbei im Gegensatz zu OpenCard um einen Native-Standard. Der<br />

Kartenhersteller <strong>und</strong> der Hersteller des Lesegerätes stellen ein Framework zur Verfügung, das<br />

aus PC/SC-Bibliotheken besteht.<br />

Die derzeitigen <strong>Implementierung</strong>en der Herstellerseite beschränken sich hauptsächlich auf<br />

die Windows-Welt. Linux/Unix-Anbindungen werden meist nur auf der Basis von<br />

Opensource-Projekten vorangetrieben, siehe dazu das Kapitel 3.14.7 über M.U.S.C.L.E.<br />

Nachteile dieser Architektur sind die dauerhafte Belegung der seriellen Schnittstelle, sowie<br />

zum Teil nicht unterstützte Kartenlesegerätefeatures (Secure PIN-Modus). Die weite<br />

Verbreitung <strong>und</strong> hohe Akzeptanz bei Hardwareherstellern ist auf die Marktposition von<br />

Microsoft zurückzuführen.<br />

Die Abbildung 2-3.9 soll einen kurzen Eindruck von der Architektur der PC/SC-Schnittstelle<br />

liefern (siehe [PCSCWG]).<br />

23<br />

steht für: Personal Computer / Smart Card<br />

23


Abbildung 2-3.9: PC/SC Architektur<br />

3.14.3 Welche SmartCard wird eingesetzt?<br />

Zur Zeit wird die Campuskarte mittels einer SmartCard der Firma GemPLUS realisiert. Die<br />

Modellbezeichnung ist GemXpresso211PK. Diese Karte verfügt über 32 KB EEPROM<br />

Speicher <strong>und</strong> einen 8 Bit Prozessor mit separatem CryptoProzessor für Verschlüsselungsfunktionen.<br />

Eine Erweiterung der Speicherkapazität <strong>und</strong> der Prozessorleistung ist durch das Einführen<br />

von fortschrittlicheren Kartenmodellen bereits in Vorbereitung.<br />

3.14.4 Welche Kartenleser werden eingesetzt?<br />

Für die TUB interne Nutzung der Campuskarte ist vorgesehen Kartenleser der Firmen Kobil<br />

<strong>und</strong> Cherry einzusetzen. Von Kobil wird der Leser mit der Bezeichnung „Kobil Kaan Professional“<br />

eingesetzt, der mit einer eigenen PIN-Tastatur ausgestattet ist. Beim Kartenleser<br />

SmartBoard der Firma Cherry handelt es sich um eine PC-Tastatur mit eingebautem Kartenleser.<br />

Dieser soll vor allem in öffentlichen PC-Pools zum Einsatz kommen.<br />

Für dieses Vorhaben ist es unabdingbar, dass die Kartenleser einen <strong>sicheren</strong> PIN-<br />

Eingabemodus (engl.: Secure PIN Entry-Mode) bereitstellen. Dies erfolgt über die korrekte<br />

Installation <strong>eines</strong> geeigneten Softwaretreibers, der die Kartenleser bei entsprechender<br />

Operation in einen Zustand schaltet, der die Eingabe direkt von der PIN-Tastatur an die Karte<br />

schickt, ohne einen Umweg über den Prozessor. Hierzu werden javabasierte <strong>und</strong> kartenleserabhängige<br />

OpenCard-Treiber eingesetzt.<br />

3.14.5 ISO-7816-Standard<br />

Der formelle Titel des ISO-7816-Standards lautet „Integration Circuit Cards with Electrical<br />

Contacts“. Dieser Standard gliedert sich in mehrere Teile <strong>und</strong> stellt den derzeit meistbenutzten<br />

SmartCard-Standard dar. In ihm werden neben physikalische Eigenschaften von Smart-<br />

Cards auch Kommandos <strong>und</strong> Datenstrukturen beschrieben.<br />

24


3.14.6 ASN.1<br />

UMFELDANALYSE UND THEORETISCHE GRUNDLAGEN<br />

ASN.1 steht für „Abstract Syntax Notation One“ <strong>und</strong> beschreibt eine allgemeingültige Notation,<br />

die Datenstrukturen in abstrakter Weise <strong>und</strong> unabhängig von lokalen Gegebenheiten<br />

darstellt (siehe [ASN1]). Diese standardisierte Notation ist nötig, um eine hohe Flexibilität<br />

bei den Software-anwendungen zu erreichen. Auf unterschiedlichen Systemen könnten sonst<br />

lokale Eigenheiten zu einer Inkompatibilität führen, als Beispiel sei hier nur die BigEndian/LittleEndian-Architektur<br />

24 angegeben.<br />

3.14.7 M.U.S.C.L.E.<br />

M.U.S.C.L.E. steht für “Movement for the Use of Smart Cards in a Linux Environment“ <strong>und</strong><br />

ist eine OpenSource-Initiative, die sich mit der Treiberanbindung von SmartCards für Unixbasierte<br />

Betriebssysteme auseinandersetzt (siehe [MUSCLE])<br />

Im aktuellen Projekt wird eine MUSCLE-pcsc-lite Anbindung für die Vorpersonalisierung<br />

25 eingesetzt.<br />

24<br />

Auf unterschiedlichen Plattformen kann es zu Differenzen bei der Erkennung von Bitfolgen<br />

kommen, je nachdem, ob beim ersten Bit <strong>eines</strong> Blocks angefangen wird zu lesen oder beim letzten.<br />

25<br />

Bezeichnung für einen Prozess, beim dem durch das Trustcenter Schlüssel auf der Karte<br />

gespeichert werden<br />

25


4 Anforderungsanalyse für sichere E-<strong>Mail</strong><br />

In diesem Kapitel wird ein Überblick über Lösungen gegeben, die momentan auf dem Softwaremarkt<br />

verfügbar sind. Anschließend wird zu der vorliegenden Lösung hingeführt, in dem<br />

nach dem eingesetzten Vorgehensmodell Anforderungen <strong>und</strong> Anwendungsfälle der zu entwickelnden<br />

Software aufgezeigt werden.<br />

4.1 Bestehende Lösungen<br />

Im Kontext der Arbeit wurden bestehende Lösungen für ein sicheres E-<strong>Mail</strong>-System, das mit<br />

Chipkarten arbeitet, getestet <strong>und</strong> ausgewertet.<br />

Zum Einsatz kamen Lösungen von den Firmen GemPlus, Kobil <strong>und</strong> Utimaco. Die Strategie,<br />

die GemPlus mit dem Tool GemSAFE <strong>und</strong> Kobil mit SmartKey in Bezug auf Netscape<br />

verfolgen, ist die Anbindung der Karte mittels <strong>eines</strong> PKCS#11 Treibers. Netscape erlaubt die<br />

Einbindung <strong>eines</strong> separaten PKCS#11-Moduls, das den kryptografische Funktionen<br />

bereitstellt. Es ist möglich Netscape ohne zusätzliches Kryptomodul zu nutzen, hierbei greift<br />

der E-<strong>Mail</strong>-Client Messenger auf ein eigenes internes PKCS#11-Modul zurück, das<br />

ausschließlich in Software implementiert ist. Bei der Anbindung zu einer Chipkarte, sind<br />

zwei Module parallel installiert.<br />

Die Anbindung an Produkte Microsofts ist nicht mittels des PKCS#11 Standards möglich.<br />

MS unterstützt diese API nicht direkt. Bei Microsoft Anwendungen, wie Outlook <strong>und</strong><br />

Internet Explorer greifen die Komponenten, die eine kryptografische Funktion ausüben auf<br />

sogenannte Cryptographic Service Provider (CSP) zurück. Diese Provider stellen der<br />

Anwendung, basierend auf einer von Microsoft definierten proprietären Schnittstelle, der MS<br />

CryptoAPI, die nötige Funktionalität zur Verfügung.<br />

Neben GemPlus <strong>und</strong> Kobil kam bei den Outlook Lösungen auch das Produkt SafeGuard<br />

von Utimaco zum Einsatz. Dieses Produkt unterstützt allerdings keine Netscape-Anbindung.<br />

Eine Variante ein bestehendes E-<strong>Mail</strong>-System mit S/MIME Funktionalität auszustatten ist<br />

die Möglichkeit einen Proxy vor den Client zu installieren. Dieser hat die Aufgabe die E-<br />

<strong>Mail</strong>s, die er aus dem Internet empfängt kryptografisch zu behandeln <strong>und</strong> an den eigentlichen<br />

Client u.a. unverschlüsselt weiter zu geben. Dieser Proxy verbindet den E-<strong>Mail</strong>-Client des<br />

Benutzers <strong>und</strong> den E-<strong>Mail</strong>-Server im Netz.<br />

Als Beispiel für einen solchen Proxy ist der S/MIME-Wrapper von iaik 26 zu nennen der<br />

diese Funktionalität als Java-Applikation bereit stellt. Hierbei ist jedoch noch keine Smart-<br />

Card-Anbindung gegeben.<br />

Diese Idee lässt sich auch auf der Ebene des E-<strong>Mail</strong>-Servers verwirklichen. Hierbei sind<br />

die Proxys nicht lokal auf den Anwendungsrechnern, sondern es liegt nur ein Proxy vor, der<br />

den gesamten E-<strong>Mail</strong>-Verkehr filtert, d.h. entsprechende Verschlüsselungen <strong>und</strong> Signaturen<br />

zentral vornimmt. Der Nachteil <strong>eines</strong> solchen Systems ist, dass es einem Angreifer<br />

ermöglicht wird, sollte er in das System eindringen können, z.B. signierte E-<strong>Mail</strong>s im Namen<br />

der Firma oder Behörde auszustellen. Vorteilhaft ist die zentrale Administrationsmöglichkeit.<br />

Eine Erörterung über die Unterschiede <strong>und</strong> Gemeinsamkeiten zur vorliegenden<br />

Erarbeitung folgt in Kapitel vier.<br />

26<br />

steht für: Institut für Angewandte Informationsverarbeitung <strong>und</strong> Kommunikationstechnologie <strong>und</strong><br />

ist an der Technischen Universität Graz angesiedelt<br />

26


ANFORDERUNGSANALYSE FÜR SICHERE E-MAIL<br />

Vergleichstabelle<br />

Produktname Sign&Crypt SmartKey GemSAFE<br />

Version 3.0 2.0 3.0<br />

Hersteller Utimaco Kobil GemPlus<br />

Plattformen Windows Windows /<br />

Linux / OS/2 Warp<br />

Windows<br />

4 / u.a.<br />

Programme Outlook 97, 2000 Outlook 5, 98, 2000 /<br />

Explorer ab 5.01 /<br />

Netscape ab 4.04<br />

Systemanforderungen P200 Mhz, 64 MB<br />

RAM<br />

30 MB RAM<br />

(Win2000 64MB<br />

RAM), 10 MB HD<br />

Outlook Express 5.0,<br />

2000 / Netscape ab<br />

4.6 / Explorer ab 5.0<br />

PII 400 Mhz, 20 MB<br />

HD, Win2000 64 MB<br />

RAM<br />

Anzahl der<br />

1 oder 2 1 oder 2 1<br />

Zertifikate<br />

Bitlänge der Schlüssel 512 oder 1024 1024 1024<br />

Betrieb auch ohne ja nein nein<br />

SmartCard möglich<br />

Algorithmen RSA RSA RSA<br />

CRL<br />

(CertRevocationList)<br />

ja<br />

nein,<br />

Client intern<br />

nein,<br />

Client intern<br />

Kartenleser CardMan 2011 Kobil Kaan Standard GemPC400, 410, 430<br />

Schnittstelle COM, USB COM <strong>und</strong> PS/2, USB COM, USB,<br />

PCMCIA<br />

Standards - PKCS#11 PKCS#11<br />

Tokens<br />

SmartCard SLE<br />

66CX160S TCOS<br />

TCOS SmartCard,<br />

Version 1.2 oder 2.02<br />

Authentisierung nein ja ja<br />

Zertifikatsstandard X.509 X.509 X.509<br />

LDAP ansprechbar bei eigener Outlook- Netscape/Outlook<br />

Erweiterung intern<br />

Installation ++ ++ +<br />

PIN/PUK<br />

MasterPIN 6 Stellen, UserPIN 6 Stellen<br />

UserPIN 4-6 Stellen<br />

Tabelle 3-4.1: Auswertung Testsoftware<br />

GemSAFE GPK<br />

8000, 16000<br />

Netscape/Outlook<br />

intern<br />

Admin PIN <strong>und</strong> User<br />

PIN, min. 4 Stellen<br />

Fazit: Die Auswertung der Software hat ergeben, dass sich die Produkte in wesentlichen<br />

Eigenschaften gleichen. Sie basieren alle auf RSA-Algorithmen mit 1024 Bit Schlüssellänge<br />

<strong>und</strong> verwenden Standard-X.509-Zertifikate.<br />

Ein Unterschied ist in den unterstützen Plattformen <strong>und</strong> Systemanforderungen zu erkennen.<br />

Bei den Produkten, die sowohl Netscape-Clients als auch Outlook-Clients erweitern, ist<br />

festzustellen, dass dafür unterschiedliche Anbindungssoftware notwendig ist.<br />

27


4.2 ISP-Vorgehensmodell - Erläuterungen<br />

ISP steht für „Irrational Seperated Process“ <strong>und</strong> ist vom Namen her im Kontrast zum „Rational<br />

Unified Process“ zu sehen, der von den UML-Entwicklern als Vorgehensmodell propagiert<br />

wird.<br />

Das ISP-Vorgehensmodell ist für die Realisierung von kleineren bis mittleren Softwareprojekten<br />

gedacht. Das TUB-Projekt Campuskarte wird nach dieser Methode realisiert <strong>und</strong><br />

kommt deshalb auch bei dieser Arbeit in Teilaspekten zum Einsatz.<br />

Nach dem ISP-Modell werden folgende Phasen der Entwicklung unterschieden:<br />

1. Phase: Anforderungsbeschreibung; Ergebnis: Anforderungsmodell<br />

Das Anforderungsmodell ist eine formale Beschreibung der Funktionen <strong>und</strong> Randbedingungen,<br />

die für die Aufgabe von Interesse sind.<br />

2. Phase: Analyse; Ergebnis: Analysemodell<br />

Ziel der Analyse ist es das Problembereichsmodell zu verfeinern <strong>und</strong> ein möglichst<br />

implementierungsunabhängiges Modell zu entwickeln, das durch den <strong>Entwurf</strong> konkretisiert<br />

wird.<br />

3. Phase: <strong>Entwurf</strong>; Ergebnis: <strong>Entwurf</strong>smodell<br />

Während des <strong>Entwurf</strong>s werden alle implementierungstechnischen Entscheidungen getroffen.<br />

Bislang wurde die Frage nach dem Was soll das System beantwortet. Jetzt geht es um<br />

die Frage Wie soll es das machen.<br />

Hier werden einzelne <strong>Entwurf</strong>sentscheidungen erläutert, die es im Laufe der Entwicklung<br />

zu treffen galt. Nach dem ISP-Modell wird in <strong>Entwurf</strong>sphase ein Detailentwurf erstellt,<br />

der sehr implementierungsnah ist. Dieser Schritt wird in Kapitel 5 mit Spezifikation<br />

bezeichnet.<br />

4. Phase: <strong>Implementierung</strong>; Ergebnis: Code<br />

In diesem Abschnitt werden implementierungsnahe Entscheidungen erläutert.<br />

5. Phase: Test (ggf. mit Funktionserweiterung)<br />

Die Ergebnisse der <strong>Implementierung</strong> werden durch Tests geprüft, damit auf evtl. Fehler<br />

eingegangen werden kann.<br />

6. Phase: Inbetriebnahme<br />

Nach einem erfolgreichen Test folgt die Inbetriebnahme, mit dem Ziel evtl. Fehler vor<br />

dem Einsatz zu erkennen.<br />

7. Phase: Einsatz<br />

Als Ergebnis des Modells ist der reale Einsatz der Software zu sehen. Durch den <strong>prototypische</strong>n<br />

Charakter der vorliegenden <strong>Implementierung</strong> folgen die Phasen sechs <strong>und</strong><br />

sieben zu einem späteren Zeitpunkt.<br />

Das ISP-Modell sieht vor, dass aus jeder Phase in die davorliegende zurückgesprungen werden<br />

kann, damit durch erkannte Fehler nötige Anpassungen gemacht werden können.<br />

Eine ausführlichere Beschreibung findet der Leser in dem Buch [HITZ99].<br />

28


4.3 Anforderungen<br />

ANFORDERUNGSANALYSE FÜR SICHERE E-MAIL<br />

Anforderungen werden nach dem ISP-Modell in funktionale <strong>und</strong> nicht funktionale Anforderungen<br />

aufgeteilt. Zu den nicht funktionalen Anforderungen gehören diejenigen, die keine<br />

direkte Funktion haben, sondern nur Randbedingungen erfüllen. Zu ihnen gehören folgende<br />

nicht funktionale Anforderungen:<br />

allgemeine Anforderungen an die Software:<br />

Zuverlässigkeit: Die Software ist zuverlässig, wenn Fehler nur selten auftreten <strong>und</strong> diese<br />

geringe Auswirkungen auf den Ablauf des Programms haben.<br />

Robustheit: Software ist robust, wenn sie bei allen Arten, auch fehlerhafter, externer Kommunikation<br />

sinnvoll reagiert.<br />

Verfügbarkeit: Software ist verfügbar, wenn sie durchgehend jederzeit vom Benutzer verwendet<br />

werden kann.<br />

Benutzungsfre<strong>und</strong>lichkeit: Wenn die Software durch die Bedienoberfläche sinnvoll <strong>und</strong><br />

intuitiv genutzt werden kann, ist die Software benutzungsfre<strong>und</strong>lich.<br />

Keine zusätzliche Qualifikation von Mitarbeitern: Die Software sollte ohne zusätzliche<br />

Benutzerqualifikation einsetzbar sein.<br />

Systemunabhängigkeit: Die Software sollte auf möglichst vielen unterschiedlichen Systemen<br />

einsetzbar sein.<br />

Hardwareunabhängigkeit: Die Software sollte mit unterschiedlicher Hardware interagieren<br />

können <strong>und</strong> von dieser nicht beeinflusst werden. Es sollen z.B. alle Kartentreiber <strong>und</strong> Javakarten<br />

mit der Software arbeiten können.<br />

Geringe Kosten: Durch den Einsatz der Software sollten keine Extrakosten für die Benutzer<br />

<strong>und</strong> für die Verwaltung, welche die Software einsetzt, entstehen.<br />

4.3.1 Nicht funktionale Anforderungen<br />

Einsatz <strong>eines</strong> bestehenden E-<strong>Mail</strong>-Clients: User sollen ihre gewohnte E-<strong>Mail</strong>-Umgebung<br />

beibehalten, somit ist eine Anbindung an kommerzielle <strong>und</strong> proprietäre Software nötig. Dies<br />

kann durch Anbindung mittels offener Standards geschehen.<br />

Anbindung der Campuskarte: Als Sicherheitstoken soll die Campuskarte genutzt werden,<br />

da diese für den gesamten Verwaltungsapparat zum Einsatz kommt.<br />

Gesetzes- <strong>und</strong> TUB-Dienstvereinbarungskonform: Die Software soll gesetzeskonform<br />

entwickelt <strong>und</strong> eingesetzt werden. Sie soll sich nach Daten- <strong>und</strong> Signaturgesetzen, sowie nach<br />

Dienstvereinbarungen der Technischen Universität Berlin richten.<br />

29


4.3.2 Funktionale Anforderungen<br />

Im folgenden werden die funktionalen Anforderungen dargestellt.<br />

Netscape Messenger soll eingesetzt werden: Der sich bereits im Einsatz befindliche E-<br />

<strong>Mail</strong>-Client soll erweitert werden, damit ein Umlernen der vertrauten Umgebung nicht notwendig<br />

ist.<br />

Zwei Zertifikate <strong>und</strong> Schlüssel bei Dienstausweis: Bei Dienstausweisen sollen unterschiedliche<br />

Schlüssel für Signatur <strong>und</strong> Verschlüsselung eingesetzt werden.<br />

Linux <strong>und</strong> Windows sollen unterstützt werden: Es ist bei der Entwicklung auf<br />

Plattformunabhängigkeit zu achten, um ein größeren Einsatzbereich abzudecken.<br />

Standardkartenleser sollen unterstützt werden: Eine breite Palette von Kartenlesern sollen<br />

integrierbar sein, damit der Anwendungsbereich vergrößert wird.<br />

Nationale <strong>und</strong> internationale Standards: Es ist darauf zu achten, dass offene Standards<br />

zum Einsatz kommen.<br />

Ungültige Zertifikate: Kompromittierte Zertifikate müssen über eine CRL abrufbar sein,<br />

damit Sicherheitsaspekte gewährleistet ist.<br />

LDAP-Verzeichnis: Auf ein LDAP-Verzeichnis mit Zertifikaten der Nutzer muss zugreifbar<br />

sein, damit Fremdzertifikate lokal gespeichert werden können<br />

4.4 Problembereichsmodell<br />

Eine sehr vereinfachte Darstellung der Komponenten, die am System beteiligt sind, sieht man<br />

in der Abbildung 3-4.1. Diese Darstellung wird benutzt, um eine sehr grobe Struktur des Systems<br />

darzustellen.<br />

Eine Hauptaufgabe der Arbeit besteht darin, dieses System noch feiner zu granulieren, zu<br />

analysieren <strong>und</strong> einen <strong>Entwurf</strong> entwickeln, der mit der <strong>Implementierung</strong> in ein reales Anwendungsprogramm<br />

umgesetzt wird.<br />

In folgendem Diagramm (Abbildung 3-4.1) werden in einer sehr abstrakten Form die am<br />

System beteiligten Komponenten dargestellt. An dem System sind unterschiedlich (*) viele<br />

Benutzer beteiligt, die eine vorgegebene Anzahl (n) von Campuskarten besitzen. Die Daten,<br />

die die Nutzer verarbeiten sind variabel (*). Um zu verdeutlichen, dass mehrere Anwender an<br />

einem System arbeiten wurde die Kardinalität (1) gesetzt. In der Praxis werden allerdings<br />

eine Vielzahl von E-<strong>Mail</strong>-Clients eingesetzt.<br />

30


ANFORDERUNGSANALYSE FÜR SICHERE E-MAIL<br />

1<br />

Netscape<br />

Messenger<br />

1<br />

1<br />

*<br />

Daten<br />

* *<br />

*<br />

Benutzer<br />

* n<br />

n<br />

n<br />

Campuskarte<br />

n<br />

4.5 Anwendungsfallmodell<br />

Abbildung 3-4.1: Diagramm des Problembereichsmodells<br />

Die Anwendungsfalldiagramme geben einen Überblick über die Gesamtfunktionalität der<br />

Anwendung, diese werde durch die Anwendungsfallbeschreibung natürlichsprachlich erläutert.<br />

4.5.1 Anwendungsfalldiagramme<br />

In der folgenden Grafik sind die relevantesten Anwendungsfälle von Sender <strong>und</strong> Empfänger<br />

dargestellt. Diese Anwendungsfälle spiegeln den Einsatz der entwickelten Software, d.h. auch<br />

der Campuskarte, wieder. Deshalb wurde darauf verzichtet die Anwendungsfälle aufzuzeigen,<br />

die vom E-<strong>Mail</strong>-Client generell unterstützt werden.<br />

Es ist zu beachten, dass der Anwendungsfall „PIN eingeben“ nicht direkt gefordert wird,<br />

sondern nur im Zusammenhang einer Aktion, wie „Signieren“, auftritt.<br />

verifizierte E-<strong>Mail</strong><br />

lesen<br />

Sender<br />

E-<strong>Mail</strong> signieren<br />

<br />

E-<strong>Mail</strong> verschlüsseln<br />

E-<strong>Mail</strong><br />

verschlüsseln<br />

<strong>und</strong> signieren<br />

<br />

verifizierte <strong>und</strong><br />

entschlüsselte E-<br />

<strong>Mail</strong><br />

lesen<br />

<br />

entschlüsselte E-<br />

<strong>Mail</strong><br />

lesen<br />

<br />

Empfänger<br />

PIN eingeben<br />

PIN eingeben<br />

Abbildung 3-4.2: Anwendungsfalldiagramme<br />

31


4.5.2 Anwendungsfallbeschreibung<br />

Es folgt eine tabellarische Anwendungsfallbeschreibung. Neben den in der Abbildung aufgezeigten<br />

Anwendungsfälle, gehören zu einem <strong>sicheren</strong> E-<strong>Mail</strong>-Einsatz weitere Aktionen, die<br />

hier auch beschrieben werden.<br />

Anwendungsfälle:<br />

Anwendungsfall<br />

Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Anwendungsfall<br />

Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Anwendungsfall<br />

Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Anwendungsfall<br />

Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

E-<strong>Mail</strong> verschlüsselt schicken<br />

Public Key <strong>und</strong> Zertifikat muss vorhanden sein<br />

verschlüsselte E-<strong>Mail</strong> wurde versandt<br />

kein Public Key/Zertifikat<br />

E-<strong>Mail</strong> wird nicht verschickt<br />

Sender<br />

1. neue E-<strong>Mail</strong> wird geöffnet<br />

2. E-<strong>Mail</strong> wird geschrieben<br />

3. Option „verschlüsseln“ wird ausgewählt<br />

4. verschlüsselte E-<strong>Mail</strong> wird versandt<br />

E-<strong>Mail</strong> signiert verschicken<br />

Private Key <strong>und</strong> Zertifikat muss vorhanden sein<br />

signierte E-<strong>Mail</strong> wurde versandt<br />

kein Private Key / Zertifikat vorhanden<br />

E-<strong>Mail</strong> wird nicht verschickt<br />

Sender<br />

1. neue E-<strong>Mail</strong> wird geöffnet<br />

2. E-<strong>Mail</strong> wird geschrieben / Empfänger eintragen<br />

3. Option „signieren“ wird ausgewählt<br />

4. PIN-Eingabe<br />

5. signierte E-<strong>Mail</strong> wird versandt<br />

E-<strong>Mail</strong> signiert <strong>und</strong> verschlüsselt verschicken<br />

Public <strong>und</strong> Private Keys müssen vorhanden sein<br />

signierte <strong>und</strong> verschlüsselte E-<strong>Mail</strong> wurde versandt<br />

kein Zertifikat (Public Key) <strong>und</strong> kein Private Key vorhanden<br />

E-<strong>Mail</strong> wird nicht verschickt<br />

Sender<br />

1. neue E-<strong>Mail</strong> wird geöffnet<br />

2. E-<strong>Mail</strong> wird geschrieben / Empfänger eintragen<br />

3. Optionen „signieren“ <strong>und</strong> „verschlüsseln“ wird ausgewählt<br />

4. PIN-Eingabe<br />

5. verschlüsselte <strong>und</strong> signierte E-<strong>Mail</strong> wird versandt<br />

E-<strong>Mail</strong> verifizieren<br />

Zertifikat vorhanden<br />

E-<strong>Mail</strong> verifiziert<br />

kein Zertifikat vorhanden, Signatur fehlerhaft<br />

32


Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Anwendungsfall<br />

Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Anwendungsfall<br />

Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Anwendungsfall<br />

Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Anwendungsfall<br />

Kurzbeschreibung<br />

ANFORDERUNGSANALYSE FÜR SICHERE E-MAIL<br />

E-<strong>Mail</strong> konnte nicht verifiziert werden, Anzeige für falsche Signatur<br />

Empfänger<br />

1. signierte E-<strong>Mail</strong> wird empfangen<br />

2. eine Markierung zeigt korrekte Verifikation an<br />

E-<strong>Mail</strong> entschlüsseln<br />

Private Key vorhanden<br />

E-<strong>Mail</strong> ist entschlüsselt <strong>und</strong> lesbar<br />

Private Key nicht vorhanden/fehlerhaft<br />

E-<strong>Mail</strong> kann nicht entschlüsselt <strong>und</strong> gelesen werden, „negativ“-Markierung<br />

Empfänger<br />

1. verschlüsselte E-<strong>Mail</strong> wird Empfangen<br />

2. verschlüsselte E-<strong>Mail</strong> wird geöffnet<br />

3. PIN-Eingabe<br />

4. entschlüsselte E-<strong>Mail</strong> wird angezeigt, mit „positiv“-Markierung<br />

E-<strong>Mail</strong> verifizieren <strong>und</strong> entschlüsseln<br />

Zertifikat vorhanden <strong>und</strong> PrivateKey<br />

E-<strong>Mail</strong> wurde verifiziert <strong>und</strong> entschlüsselt<br />

kein Private Key vorhanden <strong>und</strong> Signatur fehlerhaft<br />

E-<strong>Mail</strong> kann nicht entschlüsselt <strong>und</strong> verifiziert werden,<br />

„negativ“-Markierung<br />

Empfänger<br />

1. verschlüsselte <strong>und</strong> signierte E-<strong>Mail</strong> wird empfangen<br />

2. verschlüsselte <strong>und</strong> signierte E-<strong>Mail</strong> wird geöffnet<br />

3. PIN-Eingabe<br />

4. entschlüsselte <strong>und</strong> verifizierte E-<strong>Mail</strong> wird angezeigt, mit<br />

„positiv“-Markierung<br />

verschlüsselte E-<strong>Mail</strong> an mehrere Empfänger schicken<br />

alle Zertifikate müssen vorliegen<br />

E-<strong>Mail</strong> wurde verschlüsselt <strong>und</strong> abgeschickt<br />

nicht alle Zertifikate liegen vor<br />

E-<strong>Mail</strong> kann nicht verschickt werden<br />

Sender<br />

1. neue E-<strong>Mail</strong> wird geöffnet<br />

2. E-<strong>Mail</strong> wird geschrieben / alle Empfänger eintragen<br />

3. Option „verschlüsseln“ wird ausgewählt<br />

4. E-<strong>Mail</strong> wird verschlüsselt <strong>und</strong> abgeschickt<br />

Zertifikat vom LDAP-Server holen<br />

Der E-<strong>Mail</strong>-Client lädt sich ein Benutzerzertifikat vom Verzeichnisdienst<br />

33


Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Anwendungsfall<br />

Kurzbeschreibung<br />

Vorbedingung<br />

Nachbedingung<br />

Fehlersituationen<br />

Nachzustand im<br />

Fehlerfall<br />

Akteure<br />

Standardablauf<br />

Alternativabläufe<br />

E-<strong>Mail</strong>-Client muss LDAP-Anfrage unterstützen, Zertifikat muss im<br />

Verzeichnisdienst abgelegt sein<br />

Zertifikat lokal im System<br />

LDAP nicht erreichbar, Zertifikat nicht vorhanden<br />

Zertifikat nicht lokal vorhanden<br />

Anwender<br />

1. Anfrage mit E-<strong>Mail</strong>-Adresse wird an den LDAP-Server gestellt<br />

2. Suchergebnis wird angezeigt<br />

3. Aufnahme des Zertifikats in lokales Verzeichnis bestätigen<br />

PIN eingeben<br />

Zur Ausführung der kryptografischen Funktionen auf der Campuskarte<br />

ist die Authentisierung des Benutzers durch die persönliche PIN<br />

erforderlich<br />

Karte nicht gesperrt<br />

PIN korrekt, Karte nicht gesperrt, Aufruf der kryptografischen Funktion<br />

PIN falsch<br />

nach drei Fehlversuchen ist die Karte gesperrt <strong>und</strong> kann dann nur<br />

mittels der PUK im Ausgabebüro entsperrt werden<br />

Sender, Empfänger<br />

1. Dialogbox wird angezeigt<br />

2. PIN über Tastatur eingeben<br />

3. Ausführen der kryptografischen Funktion auf der Karte<br />

PIN wird 1 oder 2 Mal falsch eingegeben, Information erscheint, danach<br />

Standardablauf<br />

4.6 Schnittstellenmodell<br />

Im folgenden werden die Benutzer- <strong>und</strong> Systemschnittstellen beschrieben, die das System<br />

aufweist.<br />

4.6.1 Benutzerschnittstellendefinition<br />

Die Interaktion von Anwendung <strong>und</strong> Benutzer erfolgt über die vorhandene Anwendung des<br />

Netscape Messengers. Hier werden keine Änderungen vorgenommen, so dass der Benutzer<br />

die gleiche Funktionalität erwarten kann, die ihm dieser E-<strong>Mail</strong>-Client auch ohne sichere E-<br />

<strong>Mail</strong>-Anwendung mittels Campuskarte bietet. Dies ist auch eine der Anforderungen die an<br />

das System gestellt wurden, d.h. die Anbindung an eine bestehende Softwarelösung.<br />

Wenn es zur Interaktion mit der Karte kommt, gibt es nur eine Schnittstelle mit dem User.<br />

Dies ist die Abfrage der PIN, die durch ein Javafenster realisiert wird. Sollte die PIN korrekt<br />

verifizierbar sein gibt es kein weiteres Userinterface. Bei einer falschen PIN allerdings wird<br />

einem in einem neuen Fenster ein Warnhinweis angezeigt, der mitteilt wie viele Versuche<br />

verbleiben, um seine richtige PIN einzugeben.<br />

Beim Einsatz <strong>eines</strong> reinen OCF-Treibers bietet dieser die Möglichkeit über einen <strong>sicheren</strong><br />

PIN Eingabe-Modus (engl.: Secure PIN Entry-Modus) die Identifikationsnummer direkt am<br />

Kartenlesegerät einzugeben, hierbei erscheint nur eine Aufforderung am Bildschirm.<br />

34


4.6.2 Systemschnittstellendefinition<br />

ANFORDERUNGSANALYSE FÜR SICHERE E-MAIL<br />

Das zu entwickelnde System besteht aus unterschiedlichen Komponenten. Bei der Interaktion<br />

zwischen diesen Komponenten werden Schnittstellen benutzt. Ein grober Überblick über die<br />

Systemschnittstellen wird in der Abbildung 3-4.3 dargestellt.<br />

Der Benutzer interagiert mit dem System über die vorhanden Oberfläche des E-<strong>Mail</strong>-<br />

Clients. Da diese Interaktion durch die Benutzerführung des Netscape Messengers vorgegeben<br />

ist, werden hier keine Veränderungen vorgenommen. Der Client wiederum muss bei entsprechenden<br />

Funktionen über den Kartenleser mit der Chipkarte kommunizieren. Diese<br />

Schnittstelle gilt es durch das vorliegende Vorhaben zu realisieren. Eine ausführliche Beschreibung<br />

erfolgt in der Analyse- <strong>und</strong> <strong>Entwurf</strong>sphase. An dem System sollen mehrere Benutzer<br />

mit mehreren Campuskarten beteiligt sein, deshalb sind die entsprechenden Multiplizitäten<br />

im Diagramm gesetzt.<br />

Eine weitere Schnittstelle zwischen Benutzer <strong>und</strong> Campuskarte liegt durch das Eingeben<br />

der Benutzer-PIN vor, siehe Abschnitt 4.6.1. Diese Interaktion läuft ebenfalls über den<br />

Kartenleser ab.<br />

Benutzer<br />

n 1 1 1 1 n<br />

Netscape<br />

Messenger<br />

Kartenleser<br />

Campuskarte<br />

Abbildung 3-4.3: Systemschnittstellen<br />

35


5 Analyse <strong>und</strong> <strong>Entwurf</strong><br />

Ging es bis hierher darum, was das System leisten soll, stellt sich nun die Frage nach dem<br />

wie. Nach einem vollständigen Anforderungsmodell sieht das ISP die Analyse vor. Mit dem<br />

Abschluss <strong>eines</strong> Analysemodells kann der <strong>Entwurf</strong> durchgeführt werden, aus dem das <strong>Entwurf</strong>smodell<br />

hervorgeht, welches die Gr<strong>und</strong>lage für die <strong>Implementierung</strong> bildet.<br />

Die Realisierung wird mit dem Akronym „cksem“ abgekürzt, das „Campuskarte Sichere-<br />

E-<strong>Mail</strong>“ bedeutet. Im folgenden wird auch die Kurzform benutzt, um das System zu<br />

benennen.<br />

5.1 Analyse<br />

Nachdem die Anforderungen <strong>und</strong> Anwendungsfälle definiert sind, ist es an der Zeit eine<br />

Strategie zu entwerfen, wie das System zu realisieren ist. Dies geschieht in der Analysephase.<br />

Die E-<strong>Mail</strong>-Anwendung Netscape Messenger bietet die Möglichkeit, über das in<br />

[PKCS11] definierte Interface ein externes Sicherheitsmodul direkt in die vorhanden Software<br />

einzubinden. Diese Vorgabe wird für die Realisierung genutzt. Die Frage ist, wie oder<br />

wie genau wird sie benutzt?<br />

Zum einen ist es wichtig zu erfahren wie Netscape die einzubindende Bibliothek benutzt,<br />

d.h. konkret, welche Funktionen mit welchen Parameter werden aufgerufen, denn nicht alle<br />

der in PKCS#11 definierten Funktionen werden benutzt. Einige Hinweise hierzu gab es in<br />

kleinen Dokumentationen [IPLANE] im WWW, welche jedoch nicht ausreichend waren. Für<br />

eine ausreichende Antwort musste das Verhalten System genauer analysiert bzw. definiert<br />

werden. Hierfür diente zum einen die Ausgabe von Funktionsaufrufen in Logdateien (siehe<br />

Kapitel 5.1.1) <strong>und</strong> Erfahrungsberichte von Entwicklern in <strong>Mail</strong>inglisten 27 .<br />

Die Anbindung einer Anwendung, die in nativem Code geschrieben ist mit einer javabasierten<br />

Umgebung ist eine weitere Herausforderung, die es zu lösen galt. Durch die<br />

Verbindungsmöglichkeit zwischen Java <strong>und</strong> nativen Code über das Java Native Interface<br />

gibt, kristallisierte sich als Lösungsansatz ein Schichtenmodell heraus. Eine detailliertere<br />

<strong>Entwurf</strong>sbeschreibung befindet sich in den folgenden Abschnitten.<br />

Eine erste Strategie ist, dass die native Schicht, welche mit der Anwendung Netscape<br />

Messenger korrespondiert sehr dünn gehalten werden soll, damit eine leichtere Portierung auf<br />

andere Systeme möglich ist <strong>und</strong> die gesamte Funktionalität in der Java-Schicht liegt.<br />

5.1.1 Beispielausschnitt einer Logdatei<br />

Folgende Zeilen zeigen eine Logfileausgabe. Dafür wurde eine „leere“ DLL implementiert,<br />

die als PKCS#11-Modul in der Netscape Sicherheitsumgebung registriert wurde. Das<br />

Vorgehen dabei wird in Kapitel sechs erläutert. Zuerst wurden nur die Funktionssignaturen<br />

breit gestellt <strong>und</strong> Ausgaben für das Logfile. Um weiter fortschreiten zu können, wurden die<br />

einzelnen Methoden nach <strong>und</strong> nach mit sinnvollen Rückgabewerten gefüllt.<br />

Es soll veranschaulichen, inwieweit diese Angaben für das Auffinden der aufgerufenen<br />

PKCS#11-Funktionen nützlich sind. Es werden u.a. Funktionsnamen, sowie Anzahl <strong>und</strong><br />

Werte der Parameter aufgezeigt.<br />

27<br />

PKCS#11-<strong>Mail</strong>ingliste erreichbar mit Link von [PKCS11]<br />

36


...<br />

/* C_GetTokenInfo(): starting... (OK) */<br />

/* C_GetTokenInfo(): slotID: 8409100(OK) */<br />

/* C_GetTokenInfo(): pInfo: 7207804(OK) */<br />

/* C_GetTokenInfo(): ...complete (OK) */<br />

/* C_GetMechanismList(): starting... (OK) */<br />

/* C_GetMechanismList(): slotID: 8409100(OK) */<br />

/* C_GetMechanismList(): pMechanismList: 0(OK) */<br />

/* C_GetMechanismList(): pulCount: 7207744(OK) */<br />

/* C_GetMechanismList(): pMechanismList == NULL_PTR (OK) */<br />

/* C_GetMechanismList(): pulCount = count (OK) */<br />

/* C_GetMechanismList(): starting... (OK) */<br />

/* C_GetMechanismList(): slotID: 8409100(OK) */<br />

/* C_GetMechanismList(): pMechanismList: 8409104(OK) */<br />

/* C_GetMechanismList(): pulCount: 7207744(OK) */<br />

/* C_GetMechanismList(): pMechanismList != NULL_PTR (OK) */<br />

/* C_GetMechanismList(): nach pMechanismList = mType (OK) */<br />

/* C_GetMechanismList(): in != NULL_PTR ...complete (OK) */<br />

/* C_OpenSession(): starting... (OK) */<br />

/* C_OpenSession(): slotID: 8409100(OK) */<br />

/* C_OpenSession(): flags: 4(OK) */<br />

/* C_OpenSession(): pApplication: 8419232(OK) */<br />

/* C_OpenSession(): Notify: 4236336(OK) */<br />

/* C_OpenSession(): phSession: 7207772(OK) */<br />

/* C_OpenSession(): Notify != NULL_PTR (OK) */<br />

/* C_OpenSession(): ...complete (OK) */<br />

/* C_FindObjectsInit(): start... (OK) */<br />

/* C_FindObjectsInit(): hSession: 8419232(OK) */<br />

/* C_FindObjectsInit(): pTemplate: 7207720(OK) */<br />

/* C_FindObjectsInit(): ulCount: 1(OK) */<br />

/* C_FindObjectsInit(): attribute.type: 0(OK) */<br />

/* C_FindObjectsInit(): attribute.pValue: 7207696(OK) */<br />

/* C_FindObjectsInit(): attribute.ulValueLen: 4(OK) */<br />

/* C_FindObjectsInit(): ...complete (OK) */<br />

…<br />

ANALYSE UND ENTWURF<br />

Dies ist nur ein kleiner Ausschnitt <strong>eines</strong> Logfiles, da die regulären Dateien im Normalfall,<br />

d.h. bei einem Aufruf von durchgehend allen angesprochenen Methoden, mehrere h<strong>und</strong>ert<br />

Kilobyte groß sein können.<br />

Man kann deutlich den Verlauf erkennen, mit dem die einzelnen Funktionen vom Netscape<br />

Messenger aufgerufen werden.<br />

5.1.2 Aufgerufene Funktionen<br />

Durch die Logfileanalyse, konnte herausgef<strong>und</strong>en werden, welcher Funktionsumfang des<br />

PKCS#11-Standard tatsächlich aufgerufen wurde. Dies sind im einzelnen folgende Funktionen:<br />

C_GetInfo, C_GetFunctionList, C_Initialize, C_Finalize, C_InitToken, C_UnwrapKey,<br />

C_DestroyObject, C_GetAttributeValue, C_FindObjectsInit, C_FindObjects,<br />

C_FindObjectsFinal, C_OpenSession, C_GetSessionInfo, C_SignInit, C_Sign,<br />

C_GetSlotList, C_GetSlotInfo, C_GetMechanismInfo, C_CloseAllSessions<br />

Das Dokument [IPLANE] <strong>und</strong> die FAQ 28 [NEDEVC] dienten ebenfalls als Gr<strong>und</strong>lage für die<br />

Analyse des E-<strong>Mail</strong>-Clients.<br />

28<br />

steht für „Frequently Asked Questions“<br />

37


Eine genauere Beschreibung der einzelnen Funktionen wird im Kapitel Spezifikation <strong>und</strong><br />

<strong>Implementierung</strong> gegeben.<br />

5.1.3 Unterschiede <strong>und</strong> Gemeinsamkeiten zur erarbeiteten Lösung<br />

Ein Unterschied der beschriebenen Produkte (siehe Abschnitt 4.1) zur erarbeiteten Lösung ist,<br />

dass das Campuskartensystem mit dem OpenCard Framework auf der Basis der Programmiersprache<br />

Java aufgebaut ist. Der gesamte Zugriff auf die Karte läuft über die Java<br />

Virtual Machine ab.<br />

Bei den dargestellten Lösungen wird auf die Karte nur über Native-Code zugegriffen,<br />

zum einen ist das eine PKCS#11-Anbindung für den Netscape Messenger zum anderen die<br />

<strong>Implementierung</strong> <strong>eines</strong> Cryptographic Service Providers für Microsoft Produkte, wie u.a. MS<br />

Outlook.<br />

Die Gemeinsamkeiten liegen darin, dass das TUB-System auch auf die genannten Standards,<br />

u.a. PKCS#11 <strong>und</strong> S/MIME, zurückgreift, um eine Integration an bestehende E-<strong>Mail</strong>-<br />

Clients zu gewährleisten.<br />

Beim Design der Software muss darauf geachtet werden, dass die Funktionen, die auf der<br />

Karte angesprochen werden, sehr allgemein gehalten sind, damit verschiedene Applikationen<br />

diese zu ihren Zwecken nutzen können.<br />

Abbildung 4-5.1 zeigt einen erstes grobes Lösungsmodell, indem eine Javaschicht<br />

zwischen der nativen Anbindung zu den E-<strong>Mail</strong>-Clients <strong>und</strong> dem PC/SC-Treibern liegt.<br />

MS Outlook<br />

Netscape<br />

Cryptographic Service Provider<br />

(native)<br />

PKCS#11<br />

(native)<br />

Java-Layer<br />

OCF<br />

PC/SC<br />

Kartenleser<br />

Campuskarte<br />

5.1.4 Sequenzdiagramm<br />

Abbildung 4-5.1: Lösungsansatz<br />

Im Sequenzdiagramm 4-2 wird der Ablauf beim Signieren <strong>und</strong> Entschlüsseln dargestellt. Es<br />

wird deutlich, dass die Campuskarte nur bei der Benutzung des privaten Schlüssels zum<br />

38


ANALYSE UND ENTWURF<br />

Einsatz kommt, d.h. bei den Aktionen Verifizieren <strong>und</strong> Verschlüsseln, werden die Aufgaben<br />

vom E-<strong>Mail</strong>-Client selbstständig vorgenommen.<br />

Dies ist auch verständlich, weil es zum Einsatz von Clients kommen kann, an dem keine<br />

Campuskarteanbindung vorliegt, die aber trotzdem kryptografische Funktionalität bereitstellen.<br />

Sender<br />

Messenger Campuskarte<br />

Campuskarte Messenger<br />

Empfänger<br />

schreibe Nachricht<br />

bilde SHA-1<br />

Wert<br />

hänge<br />

ver. Hash an<br />

Nachricht<br />

sende Hash<br />

sende ver. Hash<br />

verschlüssele<br />

Hash-Wert<br />

mit PrivKey<br />

sende signierte Nachricht<br />

verifiziere<br />

Nachricht<br />

zeige Ergebnis<br />

<strong>und</strong> Nachricht<br />

schreibe Nachricht<br />

sende verschlüsselte Nachricht<br />

verschlüssele<br />

Nachricht<br />

entschlüssel<br />

Nachricht mit<br />

DES-Key<br />

zeige Ergebnis<br />

sende ver. DES-Key<br />

sende ents. DES-Key<br />

entschlüssele<br />

DES-Key mit<br />

PrivKey<br />

Abbildung 4-5.2: : Sequenzdiagramm – Versenden <strong>und</strong> Empfangen von sicherer E-<strong>Mail</strong><br />

5.1.5 Aktivitätsdiagramme<br />

Die Aktivitätsdiagramme 4-3 bis 4-5 beschreiben die Hauptaufgaben des Systems, bei dem<br />

die Campuskarte zum Einsatz kommt. Die zwei Anwendungsfälle „signieren einer E-<strong>Mail</strong>“<br />

<strong>und</strong> „entschlüsseln einer E-<strong>Mail</strong>“ sind dargestellt. Im Falle von „PIN eingeben“ wird deutlich,<br />

dass es im Fehlerfall zu einer erneuten Abfragen kommen kann. Zur besseren Übersicht<br />

wurden Diagramme getrennt dargestellt.<br />

In Abbildung 4-5.3 wird der Vorgang des Signierens dargestellt. Es wird verdeutlicht,<br />

dass nach dem bilden des Haswertes, dieser an die Karte geschickt wird, bei positiver PIN-<br />

Überprüfung erfolgt die Berechnung der Signatur. Diese wird anschließend an die E-<strong>Mail</strong> mit<br />

angehangen, die daraufhin zum Empfänger geschickt wird.<br />

Die Abbildung 4-5.4 verdeutlicht den Vorgang des Entschlüssels. Hierbei wird aus der<br />

Empfangenden E-<strong>Mail</strong> der verschlüsselte Session Key extrahiert <strong>und</strong> an die Karte geschickt,<br />

auf der er mit dem privaten Schlüssel entschlüsselt wird. Mit dem erhaltene Key wird<br />

daraufhin die Nachricht entschlüsselt.<br />

39


Abbildung 4-5.5 verdeutlicht, dass bei einer falschen PIN-Eingabe der Benutzer noch<br />

zwei weitere Möglichkeiten hat, bevor die Karte gesperrt wird.<br />

40


ANALYSE UND ENTWURF<br />

E-<strong>Mail</strong>-Text<br />

eingeben<br />

SHA-1 Hashwert<br />

bilden<br />

SHA-1 Hashwert<br />

zur Karte senden<br />

PIN abfragen<br />

PIN falsch<br />

Signatur wird<br />

berechnet<br />

PIN korrekt<br />

Diese Funktion<br />

wird auf der<br />

Campuskarte<br />

ausgeführt<br />

Signatur an E-<br />

<strong>Mail</strong>-Text<br />

anhängen<br />

signierte E-<strong>Mail</strong><br />

abschicken<br />

Abbildung 4-5.3: Aktivitätsdiagramm Signieren einer E-<strong>Mail</strong><br />

41


vers. E-<strong>Mail</strong>-Text<br />

+<br />

vers. SessionKey<br />

empfangen<br />

vers. SessionKey<br />

an Karte schicken<br />

PIN abfragen<br />

PIN falsch<br />

SessionKey<br />

entschlüsseln<br />

PIN korrekt<br />

Diese Funktion<br />

wird auf der<br />

Campuskarte<br />

ausgeführt<br />

mit SessionKey<br />

E-<strong>Mail</strong>-Text<br />

entschlüsseln<br />

Entschlüsseln<br />

erfolgreich<br />

Entschlüsseln nicht<br />

erfolgreich<br />

entschlüsselter<br />

E-<strong>Mail</strong>-Text<br />

anzeigen<br />

Fehler anzeigen<br />

Abbildung 4-5.4: Aktivitätsdiagramm Entschlüsseln einer E-<strong>Mail</strong><br />

42


ANALYSE UND ENTWURF<br />

Eingabe PIN<br />

Prüfe PIN<br />

PIN nicht richtig<br />

PIN richtig<br />

Warnhinweis<br />

Eingabe PIN<br />

Prüfe PIN<br />

PIN richtig<br />

PIN nicht richtig<br />

Warnhinweis<br />

Eingabe PIN<br />

Prüfe PIN<br />

PIN richtig<br />

PIN nicht richtig<br />

Warnhinweis<br />

Abbildung 4-5.5: Aktivitätsdiagramm PIN eingeben<br />

Karte gesperrt<br />

43


5.1.6 Cryptoki<br />

Aufgr<strong>und</strong> des Einsatzes des PKCS#11-Standards für die zu realisierende Lösung wird dieser<br />

hier näher betrachtet.<br />

Mit Cryptoki-API ist es Applikationen möglich sein auf kryptografische Funktionalität<br />

einer Hard- oder Softwarekomponente zuzugreifen. Diese Komponente wird mit Token<br />

bezeichnet. Der Anwendung soll verborgen bleiben um was für ein Token es sich handelt. Es<br />

können damit z.B. SmartCards, HSMs 29 oder Dateien gemeint sein. Es wurde auch darauf<br />

geachtet, dass es Cryptoki der Applikation ermöglicht gleichzeitig unterschiedliche Token zu<br />

verwenden, aber auch andererseits mehrere Applikationen auf ein Token zugreifen zu können.<br />

Das generelle Modell von Cryptoki sieht vor, dass es Applikationen gibt, die über die<br />

PKCS#11-Schnittstelle auf Slots zugreifen, in denen sich Token befinden, die die kryptografischen<br />

Funktionen bereitstellen. Als Slot wird eine Einheit bezeichnet, das einen Token ansprechen<br />

kann, dies kann z.B. ein Chipkartenleser oder Diskettenlaufwerk sein.<br />

Applikation 1<br />

Applikation n<br />

andere Sicherheitsebenen<br />

Cryptoki<br />

Cryptoki<br />

Slot 1<br />

Slot n<br />

Token 1<br />

Token n<br />

Abbildung 4-5.6: PKCS#11-Token-Modell<br />

Dadurch, dass Cryptoki einen festen Satz von Funktionen definiert, kann eine Applikation<br />

mit unterschiedliche Token arbeiten, die diesen Satz definieren. Somit sind Standardtoken<br />

auswechselbar. In der Realität wird aber nicht jeder Token die volle kryptografische Funktionalität<br />

unterstützen. Dies ist aber auch nicht nötig, da die meisten Applikationen nur mit einer<br />

Basis-Funktionalität arbeiten <strong>und</strong> nicht jeder Mechanismus benötigt wird.<br />

Cryptoki wird im allgemeinen unter Windows Betriebsystemen als dynamische ladbare<br />

Bibliothek (engl.: dynamic linked library, DLL), bzw. als shared library unter Linux, implementiert.<br />

Eine statische Anbindung an die Anwendung ist auch möglich.<br />

Wie schon angedeutet, sieht die Umgebung für Cryptoki folgendermaßen aus. Von der<br />

Anwendung wird ein Token benutzt das in einem Slot präsent ist. Beim Datenaustausch wird<br />

eine Session (Sitzung) aufgebaut. Man unterscheidet read-only (R/O) <strong>und</strong> read/write (R/W)<br />

Sessions. Diese Sessions ermöglichen den Zugriff auf Objekte <strong>und</strong> Funktionen, die das Token<br />

bereit stellt. Objekte können Attribute haben, die sie charakterisieren. Funktionen können<br />

durch Angabe von Mechanismen unterschiedliche Bedeutung erlangen.<br />

29<br />

steht für “Hardware Security Module”<br />

44


ANALYSE UND ENTWURF<br />

Objekt<br />

Data Schlüssel Zertifikat<br />

Öffentlicher<br />

Schlüssel<br />

Privater<br />

Schlüssel<br />

Geheimer<br />

Schlüssel<br />

Abbildung 4-5.7: PKCS#11-Objekt-Modell<br />

Es wurde schon dargestellt, dass Funktionen <strong>und</strong> verwendeter Algorithmus getrennt werden.<br />

Es ist möglich eine Verschlüsselungsfunktion z.B. mit einem asymmetrischen oder symmetrischen<br />

Verfahren durchzuführen.<br />

Die einzelnen Funktionen (z.Z. gibt es über 60) des Standards kann man in verschiedene<br />

Gruppen einteilen. Neben den Initialisierungsfunktionen gibt es Methoden, die Slots <strong>und</strong> Token<br />

verwalten. Für Sessions <strong>und</strong> deren Informationen sind eigene Funktionen definiert. Für<br />

Objekte, wie z.B. Schlüssel <strong>und</strong> Zertifikate, <strong>und</strong> auch für kryptografische Funktionen gibt es<br />

eine separate Gruppe.<br />

5.2 <strong>Entwurf</strong><br />

Die in der Analyse getroffene strategische Entscheidung, dass wir die Aufgabe durch ein<br />

Schichtenmodell lösen wollen, wird im <strong>Entwurf</strong> durch konkretere Schritte beschrieben. Im<br />

<strong>Entwurf</strong> wird die Taktik festgelegt, nach der vorgegangen wird um das Ziel zu erreichen.<br />

Es erfolgt eine Aufteilung der Aufgaben, die in den einzelnen Schichten zu bearbeiten<br />

sind.<br />

5.2.1 Architekturmodell<br />

Die Abbildung 4-5.8 zeigt auf welche Komponenten der Lösung zu implementieren sind. Der<br />

PKCS#11-Proxy übernimmt die Kommunikation mit Netscape Messenger, der über die Security<br />

Library angesprochen wird. Über ein Interface wird die Anbindung zu Javakomponenten<br />

geregelt. Diese Komponenten laufen alle in einer JavaVM <strong>und</strong> unterteilen sich in Javabibliotheksklassen,<br />

OCF-Klassen, CKAppletProxy-Klassen (nähere Erläuterungen siehe Kapitel<br />

Spezifikation <strong>und</strong> <strong>Implementierung</strong>) <strong>und</strong> der Klassen die mit dem PKCS#11-Proxy<br />

interagieren.<br />

45


EMBED Visio.Drawing.5<br />

Netscape-<br />

Messenger<br />

zu implementieren<br />

JavaVM<br />

PKCS#11-<br />

Netscape Security<br />

Library<br />

PKCS#11-dll/so-<br />

Proxy<br />

Java-PKCS#11-<br />

Stub<br />

CKAppletProxy<br />

JavaLibraries<br />

OCF<br />

PC/SC<br />

Kartenleser<br />

Campuskarte<br />

Abbildung 4-5.8: Verteilung der Komponenten<br />

Das Diagramm (Abbildung 4-5.9) stellt den Lösungsansatz als Schichtenmodell dar. Dabei<br />

stellen die Schichten unterschiedliche Komponenten dar, u.a. werden Hard- <strong>und</strong><br />

Softwareschichten in gleicher Weise veranschaulicht.<br />

Ein wichtiger <strong>und</strong> zentraler Aspekt der Arbeit ist es, die Durchgängigkeit von Campuskarte<br />

zur Anwendung zu realisieren. In dem Diagramm wird verdeutlicht welche Komponenten<br />

zu erstellen sind, welche anzupassen sind <strong>und</strong> welche in ihrer Struktur beibehalten<br />

werden können bzw. müssen. Es kristallisierte sich heraus, dass für die Anbindung an den<br />

Netscape Messenger eine DLL zu implementieren ist, die dem PKCS#11-Standard entspricht.<br />

Zur Netscape Messenger-Seite hin implementiert der Programmteil den Standard. Da die vom<br />

Security Team entwickelte Karte eine Eigenentwicklung in ihrem Programmcode ist, muss<br />

die Java-Seite, die mit der Karte kommuniziert, unserer vorliegenden Situation angepasst,<br />

d.h. entwickelt, werden.<br />

Um die Lösung zu realisieren, muss die Karte die entsprechenden kryptografischen<br />

Funktionen zur Verfügung stellen. Hierbei handelt es sich um Methoden, die Verschlüsselungen<br />

mit den 1024 Bit RSA-Schlüsseln ausführen. Dies wird im Diagramm mit dem Ausdruck<br />

„anpassen“ beschrieben.<br />

Durch die Vorgabe einen Standard-E-<strong>Mail</strong>-Client zu benutzen, darf an ihm nichts<br />

verändert oder angepasst werden. Diese Schicht der Lösung ist also starr vorgegeben.<br />

Unveränderte Komponenten sind im Diagramm folgende Schichten: Kartenlesegerät, PC/SC-<br />

Treiber, Open Card Framework, Java Native Interface <strong>und</strong> Netscape Messenger.<br />

Java bietet die Möglichkeit über ein definiertes Interface Daten zwischen nativen<br />

Programmen <strong>und</strong> Javaklassen auszutauschen, nähere Erläuterungen werden in Kapitel fünf<br />

gegeben.<br />

Es folgen Erläuterungen zu den Aufgaben der einzelnen Schichten.<br />

Campuskarte: Der tragbare Token führt u.a. die kryptografischen Funktionen mit den privaten<br />

Schlüsseln aus. Er wird über eine Java-Proxy-Klasse (CampuskarteAppletProxy) angesprochen,<br />

siehe Kapitel 6.1.3. Die Funktionalität musste für die vorliegende Aufgabe erweitert<br />

werden.<br />

Kartenlesegerät: Ein Hardwaremodul, dass über den entsprechenden Treiber Daten an die<br />

Campuskarte überträgt.<br />

46


Campuskarte<br />

(anpassen)<br />

Kartenlesegerät<br />

PC/SC-Bridge<br />

OpenCardFramework<br />

CampuskarteAppletProxy<br />

(anpassen)<br />

Java-PKCS#11 Layer<br />

(zu implementieren)<br />

Java Native Interface (JNI)<br />

Native-PKCS#11 Layer (DLL)<br />

(zu implementieren)<br />

Netscape Messenger<br />

Schwerpunkt<br />

dieser Arbeit<br />

für die Arbeit<br />

anzupassen<br />

fest<br />

vorgegeben<br />

Abbildung 4-5.9: Schichtenmodell für Lösung<br />

48


ANALYSE UND ENTWURF<br />

5.2.2 Vor- <strong>und</strong> Nachteile des Schichtenmodells<br />

Aus der Sicht der Softwarearchitekten bietet ein Schichten- oder auch Layermodell neben<br />

verschiedene Vorzüge auch unumgängliche Nachteile.<br />

Viele der folgenden allgemeinen Vorteile treffen auch auf das vorliegende Modell zu.<br />

Wiederverwendung von Schichten: Schichten die eine wohldefinierte Abstraktion enthalten<br />

<strong>und</strong> ausgereifte Schnittstellen besitzen, können in anderen Kontexten wiederverwendet werden.<br />

Unterstützung für eine Standardisierung: Programmierschichten, die sich auf allgemeine<br />

Standards berufen können ohne Änderungen ausgetauscht werden. Im vorliegenden Fall können<br />

Applikationen, die ebenfalls PKCS#11 konform sind mit der Software korrespondieren.<br />

Abhängigkeiten bleiben lokal: Bei Änderungen an Hardware- oder Applikationsschnittstellen<br />

muss nur jeweils die betroffene Schicht angepasst werden.<br />

Austauschbarkeit: <strong>Implementierung</strong>en einzelner Softwareschichten kann durch semantisch<br />

äquivalente Programmcode ausgetauscht werden.<br />

Aufteilung von Teilaufgaben in verschiedenen Abstraktionsschichten: Im vorliegenden<br />

Fall werden einige Teilaufgaben in der nativen Schicht gelöst, andere im Javalayer. Diese<br />

Zerlegung in Teilaufgaben bietet mehr Flexibilität <strong>und</strong> kann z.B. die Performanz erhöhen.<br />

Neben den erwähnten Vorteilen, zeichnen sich bei einem Layermodell auch folgende<br />

Nachteile ab.<br />

Kaskaden veränderten Verhaltens: Bei der Änderung des Verhaltens einer Schicht müssen<br />

größere Anpassungen u.U. an mehreren Schichten erfolgen.<br />

Geringe Effizienz: Ein Schichtenmodell ist weniger effizient als eine rein monolitische Lösung.<br />

Hinzu kommt, dass Daten mehrfach transformiert werden müssen, was zu einer erhöhten<br />

Fehleranfälligkeit führen kann.<br />

Unnötige Arbeit: Die Performanz des Gesamtsystems nimmt ab, wenn niedrige Layer viele<br />

oder red<strong>und</strong>ante Arbeiten durchführen.<br />

Schwierigkeiten bei Granulation: Die richtige Wahl zwischen wenigen oder vielen<br />

Schichten ist oft schwierig. Eine geringe Anzahl von Schichten nutzt das Potenzial nicht völlig<br />

aus, wobei eine zu große Zahl die Komplexität stark erhöht.<br />

5.3 <strong>Entwurf</strong>sentscheidungen<br />

Durch das Anforderungsmodell <strong>und</strong> der Ergebnisse aus der Analyse kam es zu Fragen, die<br />

eine <strong>Entwurf</strong>entscheidung verlangten. Im folgenden werden die einzelnen Entscheidungen<br />

erläutert, die es zu treffen galt.<br />

49


5.3.1 Unterschied zwischen PKCS#11-Sessionprinzip <strong>und</strong> Campuskarte<br />

Der PKCS#11 Standard (siehe Abschnitt 5.1.6) basiert auf dem Prinzip von Sessions, d.h.<br />

nach einer Authentisierung gegenüber dem Token ist dieser in einem Bearbeitungszustand. In<br />

diesem Zustand (Session) können kryptografische Funktionen auch mehrmals ausgeführt<br />

werden, ohne dass es einer erneuten Anmeldung bedarf.<br />

Mit der Campuskarte ist dieses Prinzip nur in Verbindung mit einem Onlinedienst<br />

möglich. Bei den Kryptofunktionen verfolgt sie die Strategie, dass man sich für jede Methode<br />

neu authentisieren muss, wenn sie von einem Programm aufgerufen wird.<br />

Dies steht im Unterschied zum Authentisierungsverfahren gegenüber der Campuskarteninfrastruktur,<br />

bei dem ein Secret Key (hier ein 3DES-Schlüssel) vereinbart wird mit dem<br />

Daten symmetrisch verschlüsselt werden sollten sie zwischen Campuskarte <strong>und</strong> Anwendung<br />

ausgetauscht werden.<br />

Die Daten, die nicht zum Authentisierungsverfahren genutzt werden, dürfen nicht für die<br />

Karte verschlüsselt werden, weil auf der Gegenseite kein entsprechender Partner (hier E-<br />

<strong>Mail</strong>-Client) vorliegt der die Daten entschlüsseln könnte. Deshalb wurde die jeweilige Authentifizierung<br />

für die kryptografischen Methoden der Karte eingeführt.<br />

Aus Sicht des Benutzers <strong>und</strong> unter dem Aspekt der Benutzerfre<strong>und</strong>lichkeit ist es sinnvoller,<br />

ein Sessionprinzip wie es der Cryptoki-Standard vorsieht durchzuführen.<br />

5.3.2 Auswahl der Schlüssel<br />

Das System, d.h. speziell die Campuskarte, trifft selbstständig die Entscheidung, welcher<br />

Schlüssel beim Ausführen der kryptografischen Funktionen benutzt wird. Dies ist notwendig,<br />

um zu gewährleisten, dass zum Entschlüsseln von Dokumenten mittels Dienstausweis, derjenige<br />

Schlüssel benutzt wird, der im Trustcenter in einer Datenbank gespeichert ist. Der private<br />

Schlüssel wird dort hinterlegt, um gegebenenfalls beim Ausscheiden <strong>eines</strong> Mitarbeiters<br />

evtl. vorhandene TUB-interne Dokumente wieder entschlüsseln zu können. Dies ist auch der<br />

Hauptgr<strong>und</strong> für das Einführen der „Eigenentscheidung“.<br />

Hiermit ist auch die Entscheidungshilfe festgelegt, nachdem die Karte die Schlüsselwahl<br />

durchführt, bevor eine Kryptofunktion aufgerufen wird, wird der Personenstatus kartenintern<br />

abgefragt <strong>und</strong> erst dann wird entschieden welcher Schlüssel für die Methode angewendet<br />

wird (siehe hierzu folgende Abbildung).<br />

Im Falle <strong>eines</strong> Studenten ist die Wahl des Schlüssels eindeutig, weil er nur im Besitz des<br />

Signaturschlüsselpaares ist, mit ihm werden auch Daten ver- <strong>und</strong> entschlüsselt. Dieser<br />

Schlüssel ist geheim, d.h. nur der Student ist in seinem Besitz. Sollte deshalb der Studierendenausweis<br />

abhanden kommen, ist der private Schlüssel unwiederbringlich verloren, d.h.<br />

verschlüsselte Dokumente können nicht wieder entschlüsselt werden.<br />

50


ANALYSE UND ENTWURF<br />

Campuskarte<br />

signiere Hash<br />

signierter Hash<br />

PIN verifizieren<br />

signiere Hash mit privSignKey<br />

verifiziere Hash<br />

verifizierter Hash<br />

PIN verifizieren<br />

verifiziere Hash mit privSignKey<br />

verschlüssele Daten<br />

verschlüsselte Daten<br />

PIN verifizieren<br />

wenn PS = "Student"<br />

dann<br />

verschlüssele Daten mit pubSignKey<br />

sonst<br />

verschlüssele Daten mit pubEncKey<br />

entschlüssele Daten<br />

entschlüsselte Daten<br />

PIN verifizieren<br />

wenn PS = "Student"<br />

dann<br />

entschlüssele Daten mit pubSignKey<br />

sonst<br />

entschlüssele Daten mit pubEncKey<br />

Abbildung 4-5.10: Entscheidung der Schlüsselwahl bei Kartenfunktionen<br />

5.3.3 Aufgaben der Schichten<br />

In einer frühen Phase der Entwicklung gab es die Entscheidung, dass das System nur eine<br />

dünne Schicht des nativen Codes hat, d.h. es sollte die Funktionalität in der Javaschicht haben.<br />

Während der Analyse hatte sich jedoch herausgestellt, dass es für viele PKCS#11<br />

Funktionen praktikabler ist, sie vollständig im nativen Programmierteil zu realisieren. Für<br />

den Aufruf von Methoden, die nur zu Konfigurationszwecken gedacht sind, ist es zum einen<br />

performanter sie in einem schnellen nativen Teil abzuarbeiten, zum anderen verlangen diese<br />

Funktionen keine kryptografischen oder andere komplizierte Berechnungen, die den Einsatz<br />

einer hohen Programmiersprache rechtfertigen würden.<br />

Das Ergebnis dieser <strong>Entwurf</strong>sentscheidung ist in einem ersten <strong>prototypische</strong>n<br />

<strong>Implementierung</strong>sschritt nur die Funktionen in Java zu implementieren, die tatsächlich einen<br />

Campuskartenzugriff verlangen.<br />

Dies sind im einzelnen die PKCS#11-Funktionen C_UnwrapKey <strong>und</strong> C_Sign. Die<br />

Funktion C_UnwrapKey wird beim Vorgang der Entschlüsselung einer Nachricht<br />

aufgerufen, d.h. es wird mit ihr ein 3DES-Schlüssel mittels des Private Keys der Karte<br />

51


entschlüsselt. C_Sign wird beim Erstellen einer digitalen Signatur aufgerufen, bei der<br />

ebenfalls ein privater Schlüssel zum Einsatz kommt.<br />

5.3.4 Erstellen der JavaVM<br />

Zum Ausführen des Kartenzugriffs über Javamethoden ist es erforderlich, dass eine virtuelle<br />

Java Maschine gestartet wird. Dieser Aufruf ist an mehreren Positionen im Ablauf einer Sitzung<br />

möglich.<br />

Die <strong>Entwurf</strong>sentscheidung sieht vor, dass die JVM nur dann gestartet wird, wenn es auch<br />

tatsächlich zu einem Kartenzugriff kommt. Da es kein Sessionkonzept gibt, wird die Java<br />

VM bei jedem Aufruf der Methoden C_Sign <strong>und</strong> C_UnwrapKey neu gestartet.<br />

Durch den enormen Ressourcenverbrauch einer Virtuellen Maschine ist es nicht perfomant<br />

diese z.B. beim Aufruf der Methode C_Initialize zu initialisieren, weil dadurch<br />

eine ständige Systembelastung auftreten würde.<br />

5.3.5 PKCS#11 Flags<br />

Im PKCS#11 Standard ist vorgesehen, dass einzelne Token- <strong>und</strong> Bibliothekseigenschaften<br />

durch das Setzen von Flags (beginnend mit CKF_) aufgezeigt werden. Eine<br />

<strong>Entwurf</strong>sentscheidung musste für einige von ihnen getroffen werden.<br />

Für alle Funktionen die nicht implementiert sind verlangt das Programm, dass es als<br />

Rückgabewert CKR_FUNCTION_NOT_SUPPORTED erhält.<br />

Beim Aufruf der Funktion C_GetSlotInfo wird für die <strong>prototypische</strong> Version das<br />

CKF_REMOVABLE_DEVICE Flag nicht gesetzt. Dafür muss aber das Flag<br />

CKF_TOKEN_PRESENT gesetzt sein, damit der Aufruf von weiteren Funktionen möglich<br />

ist. Im vorliegenden Fall handelt es sich um ein „tragbares“ Token, dass nicht immer im Leser<br />

(Slot) verbleibt. Diese beschriebene Designentscheidung wurde getroffen um die technische<br />

Machbarkeit leichter zu demonstrieren.<br />

Beim Aufruf der Funktion C_GetTokenInfo wird das Flag<br />

CKF_WRITE_PROTECTED gesetzt, damit die Netscape Security Library dieses Token nicht<br />

für die Generierung von Schlüsseln benutzt. Dies ist nötig, weil die Campuskarte diese<br />

Funktionalität nicht bietet.<br />

Die Kombination der zwei Flags CKF_LOGIN_REQUIRED <strong>und</strong><br />

CKF_USER_PIN_INITIALIZED wird von Netscape unterschiedlich gedeutet. Im vorliegenden<br />

Fall werden beide Flags auf false gesetzt, weil damit sicher gestellt ist, dass die Campuskarte<br />

ihr eigenen PIN-Abfragemechanismus benutzt. Eine Auflistung über Bedeutung der<br />

anderen Kombinationen, sowie weitere Hinweise findet der Leser im Dokument [IPLANE].<br />

Eine Übersicht wird in Tabelle 4-5.1 dargelegt.<br />

Flag Wert Bedeutung<br />

CKF_REMOVABLE_DEVICE false Ist es ein tragbares Token? Wegen<br />

Vereinfachung auf false gesetzt<br />

52


ANALYSE UND ENTWURF<br />

CKF_TOKEN_PRESENT true Ist das Token im Leser? Wegen<br />

Vereinfachung auf true gesetzt<br />

CKF_WRITE_PROTECTED true Ist das Token schreibgeschützt? Ja, denn<br />

es können keine privaten Schlüssel auf<br />

dem Token generiert werden.<br />

CKF_LOGIN_REQUIRED false Ist eine Anmeldung erforderlich? Dies<br />

übernimmt OCF, deshalb false.<br />

CKF_USER_PIN_INITIALIZED false Ist PIN initialisert? Dies übernimmt<br />

OCF, deshalb false.<br />

5.3.6 Externe Zertifikate<br />

Tabelle 4-5.1: Übersicht Flags<br />

Zur Zeit ist es aus technischen Gründen nicht realisierbar, Zertifikate auf der Campuskarte<br />

abzulegen, deshalb muss die Entscheidung getroffen werden, wie damit umzugehen ist.<br />

Im vorliegenden Fall wird diese Problematik dadurch umgangen, dass die Zertifikate aus<br />

einer lokalen Datei gelesen werden, die vom PKCS#11-Modul angesprochen wird. Hierfür<br />

liegen die Zertifikate in einem definierten Verzeichnis, mit definierten Namen. Die Zertifikate<br />

müssen im binären DER-Format vorliegen, damit sie vom E-<strong>Mail</strong>-Client interpretierbar<br />

sind.<br />

Diese Lösung ist in einer späteren Version der Software anzupassen, wenn es die Kapazität<br />

der eingesetzten Karten erlaubt die Zertifikate auch direkt im Datenmodell abzulegen. In<br />

Abbildung 4-5.11 wird dargelegt, wie die einzelnen PKCS##11-Funktionen<br />

(C_GetAttributeValue <strong>und</strong> C_Sign) auf unterschiedliche Daten (Schlüssel, Zertifikat)<br />

zugreifen.<br />

lokaler Computer<br />

Messenger<br />

signierte Email<br />

Empfänger<br />

PKCS#11-DLL<br />

Methode<br />

C_GetAttribute<br />

Value sucht u.a.<br />

nach Zertifikaten<br />

Methode C_Sign<br />

führt die<br />

Signaturfunktion<br />

aus<br />

LDAP<br />

Möglichkeit (nicht<br />

implementiert)<br />

lokale Datei mit<br />

Benutzerzertifikat<br />

CampusKarte<br />

mit privatem<br />

Schlüssel <strong>und</strong><br />

Signaturfunktion<br />

5.4 Ablaufdarstellung<br />

Abbildung 4-5.11: lokales Zertifikat<br />

Im folgenden wird exemplarisch ein Ablauf beschrieben, wie die Soft- <strong>und</strong> Hardware bei der<br />

Entschlüsselung einer E-<strong>Mail</strong> vorgeht:<br />

1. Zuerst wird eine verschlüsselten E-<strong>Mail</strong> in Netscape Messenger aufgerufen.<br />

53


Dies wird nicht vorher angezeigt, man erkennt es am öffnen der PIN-Eingabe.<br />

2. Intern wird u.a. die Funktion C_Unwrapkey aufgerufen, ihr wird ein 128 langes<br />

Bytearray übergeben, dies ist der Secret Key des hybriden Verfahrens.<br />

3. In C_Unwrapkey wird die JavaVM gestartet, damit der Kartenzugriff über OCF<br />

möglich ist, dies erfolgt mittels der AufrufAPI des Java Native Interfaces (JNI).<br />

4. In C_Unwrapkey wird die Klasse „mykey_mng.class“ gesucht, realisiert durch JNI.<br />

5. Die Java-Methode C_UnwrapKey wird gesucht, sie hat den gleichen Namen, wie die<br />

C-Funktion. Dies wird auch durch JNI ermöglicht.<br />

6. Die Methode C_UnwrapKey wird aufgerufen, dabei wird ein Bytearray (der<br />

verschlüsselte Secret Key) übergeben.<br />

7. Die Kartenproxyfunktion decryptRSA wird aufgerufen (mit dem übergebenen<br />

Bytearray).<br />

8. Die PIN-Eingabe wird von der Karte gefordert (durch ein Eingabefenster erkennbar).<br />

9. Die Karte gibt ein entschlüsseltes Bytearray zurück, dies ist 24 Bytes lang (entspricht<br />

Länge <strong>eines</strong> 3DES-Schlüssels).<br />

10. Das Bytearray wird an Native-Schicht zurückgegeben. Das Array <strong>und</strong> die Arraylänge<br />

wird „kurz“ über ein Objekthandle verwaltet.<br />

11. Die Funktion C_GetAttributeValue wird aufgerufen, um den Wert des 3DES-<br />

Schlüssels abzufragen<br />

12. Netscape Messenger entschlüsselt intern die E-<strong>Mail</strong> mit vorliegendem 3DES-<br />

Schlüssel.<br />

13. C_DestroyObject wird aufgerufen, um den nicht mehr benötigten Secret Key zu<br />

löschen<br />

14. Die entschlüsselte E-<strong>Mail</strong> wird angezeigt (mit „positiv“-Markierung).<br />

Um einen kurzen Eindruck zu erlangen, welche Funktionen in welcher Reihenfolge aufgerufen<br />

werden, die einzelnen Phasen im Überblick.<br />

Bei der Initialisierung der Bibliothek werde nacheinander folgende Funktionen aufgerufen:<br />

1. C_GetFunctionList<br />

2. C_Initialize<br />

3. C_GetInfo<br />

4. C_GetSlotList<br />

5. C_GetSlotInfo<br />

6. C_GetTokenInfo<br />

7. C_GetMechanismList<br />

8. C_OpenSession<br />

9. C_FindObjectsInit<br />

10. C_FindObjects<br />

11. C_FindObjectsFinal<br />

12. C_GetAttributeValue<br />

13. C_GetSessionInfo<br />

Wenn eine E-<strong>Mail</strong> signiert wird, erfolgt der Aufruf von:<br />

1. C_SignInit<br />

2. C_Sign<br />

Bei der Entschlüsselung einer Nachricht werden diese sechs Methoden benutzt:<br />

1. C_FindObjectsInit<br />

2. C_FindObjects<br />

3. C_FindObjectsFinal<br />

54


4. C_UnwrapKey<br />

5. C_GetAttributeValue<br />

6. C_DestroyObject<br />

ANALYSE UND ENTWURF<br />

Wenn die DLL nicht mehr benötigt wird, werden als Abschluss folgende zwei Funktionen<br />

aufgerufen:<br />

1. C_CloseAllSessions<br />

2. C_Finalize<br />

55


6 Spezifikation <strong>und</strong> <strong>Implementierung</strong><br />

In diesem Kapitel werden die in der Analyse <strong>und</strong> im <strong>Entwurf</strong> getroffenen Entscheidungen<br />

genauer spezifiziert <strong>und</strong> durch die beschriebene <strong>Implementierung</strong> in die Praxis umgesetzt.<br />

6.1 Spezifikation<br />

Im ISP-Vorgehensmodell gibt es keinen eigenes Spezifikationskapitel. Im Modell ist dafür<br />

der Detailentwurf vorgesehen. Um den Übergang zwischen <strong>Entwurf</strong> <strong>und</strong> <strong>Implementierung</strong><br />

deutlicher darstellen zu lassen wurde der Punkt der Spezifikation dazwischen platziert.<br />

6.1.1 Native-Code<br />

Im folgenden werden die Funktionen beschrieben, die auf der nativen Seite implementiert<br />

wurden. Diese sind in der Programmiersprache C realisiert.<br />

Da diese Methoden dem PKCS#11-Standard entsprechen müssen, sind die Aufrufsignaturen<br />

festgelegt. Die Sourcen sind angelehnt an die Programmstruktur des GNU PKCS#11-<br />

Moduls, siehe [GNUP11], aus dem auch teilweise Hilfsfunktionen übernommen wurden, z.B.<br />

die Debugfunktion CI_LogEntry.<br />

In Tabelle 5-6.1 werden die PKCS#11-Funktionen beschrieben, die tatsächlich von Netscape<br />

Messenger aufgerufen werden.<br />

PKCS#11-Funktion<br />

C_CloseAllSessions<br />

C_DestroyObject<br />

C_Finalize<br />

C_FindObjects<br />

C_FindObjectsFinal<br />

C_FindObjectsInit<br />

C_GetAttributeValue<br />

C_GetFunctionList<br />

C_GetInfo<br />

C_GetMechanismList<br />

C_GetSessionInfo<br />

C_GetSlotInfo<br />

C_GetSlotList<br />

Beschreibung<br />

wird bei Beendigung der Anwendung aufgerufen, alle<br />

Sessionhandles werden gelöscht<br />

wird hier von der Anwendung benutzt um einen SessionKey<br />

nach erfolgreicher Entschlüsselung zu löschen<br />

wird aufgerufen, wenn die Cryptoki-Bibliothek nicht mehr<br />

gebraucht wird<br />

wird von Applikation benutzt, um z.B. nach Zertifikaten <strong>und</strong><br />

Schlüsseln auf Token zu Suchen<br />

beendet einen C_FindObjects-Aufruf<br />

initialisiert einen C_FindObjects, dabei wird ein<br />

Template des Objektes übergeben, nach dem gesucht wird<br />

gibt für ein angegebenes Objekt den Wert des angeforderten<br />

Attributs zurück<br />

gibt eine vollständige Cryptoki-Funktionsliste zurück, auch<br />

wenn diese nicht alle von der Hardware unterstützt werden<br />

gibt generelle Informationen über die Cryptoki-Bibliothek<br />

zurück<br />

gibt die Mechanismen zurück, die vom Token unterstützt<br />

werden<br />

gibt Informationen über eine Session zurück<br />

gibt Informationen über den eingesetzten Slot an die Anwendung<br />

zurück<br />

gibt IDs für Slots zurück, die von der Anwendung genutzt<br />

werden können<br />

56


C_GetTokenInfo<br />

C_Initialize<br />

C_OpenSession<br />

C_Sign<br />

C_SignInit<br />

C_UnwrapKey<br />

SPEZIFIKATION UND IMPLEMENTIERUNG<br />

gibt Informationen über ein Token zurück, die von der Anwendung<br />

genutzt werden kann<br />

wird von Anwendung als erstes aufgerufen, um die Bibliothek<br />

zu starten<br />

öffnet eine Session zwischen Anwendung <strong>und</strong> Slot<br />

wird hier benutzt, um ein Datenblock (Hashwert) zu signieren,<br />

hier mittels Campuskarte <strong>und</strong> Javaschicht<br />

Initialisierungsmethode des Signaturvorganges, bei dem u.a.<br />

der Mechanismus <strong>und</strong> die Schlüssel-ID angegeben werden,<br />

mit denen C_Sign durchgeführt wird<br />

wird aufgerufen, um ein verschlüsselten SessionKey wieder<br />

zu entschlüsseln, dies erfolgt hier mit Hilfe der Campuskarte<br />

über die Javaschicht<br />

Tabelle 5-6.1: Aufgerufene PKCS#11-Funktionen<br />

exemplarisch wird anhand einer vollständigen Funktionssignatur die Vorgehensweise bei<br />

PKCS#11-Funktionen gegeben<br />

Bsp. C_Sign<br />

/* C_Sign */<br />

CK_DEFINE_FUNCTION(CK_RV, C_Sign)(<br />

CK_SESSION_HANDLE hSession,<br />

CK_BYTE_PTR pData,<br />

CK_ULONG<br />

ulDataLen,<br />

CK_BYTE_PTR pSignature,<br />

CK_ULONG_PTR<br />

pulSignatureLen<br />

)<br />

hierbei ist:<br />

hSession – eine long-Wert, der die Session eindeutig bestimmt<br />

pData – ist ein Pointer zu einem Bytefeld, im vorliegenden Fall der SHA-1 Hashwert<br />

ulDataLen – die Länge des Hashwertes, hier 35 Bytes (15 Bytes SHA-Header + 20 Bytes<br />

SHA-Hashwert)<br />

pSignature – Pointer, der am Ende der Funktion auf die errechnete Signatur zeigt<br />

pulSignatureLen – Pointer auf die Länge der errechneten Signatur, wegen vorliegendem<br />

RSA-Schlüssel hier 128 Bytes (1024Bit)<br />

Die folgende Funktion wird benutzt, um ein Zertifikat aus einer Datei einzulesen.<br />

CK_DEFINE_FUNCTION(void, CI_ReadCert)(<br />

)<br />

Nachfolgende Methoden wurden für Debug- <strong>und</strong> Analysezwecke eingeführt, d.h. sie sind für<br />

die Anwendung aus Sicht des PKCS#11-Standards nicht relevant:<br />

// Gibt einen String aus fuer ein CK_ATTRIBUTE_TYPE zurueck<br />

CK_DEFINE_FUNCTION(CK_CHAR, CI_GetAttributeTypeAsString)(<br />

CK_ATTRIBUTE_TYPE attributeType<br />

)<br />

57


Gibt einen String aus fuer eine CK_OBJECT_CLASS zurueck<br />

CK_DEFINE_FUNCTION(CK_CHAR, CI_GetObjectClassAsString)(<br />

CK_OBJECT_CLASS objectClass<br />

)<br />

6.1.2 Java-Code<br />

Die Klassen <strong>und</strong> Methoden, die über das Java Native Interface von der Native-Seite in Java<br />

aufgerufen werden haben die gleichen Bezeichnungen. Sie unterscheiden sich nur entsprechend<br />

der durch die Programmiersprache definierten Endung.<br />

Der Programmcode auf der Javaschicht besteht aus den Klassen mysign.class <strong>und</strong><br />

mykey_mng.class, diese sind für die kryptografischen Funktionen konzipiert <strong>und</strong> übertragen<br />

die Daten von der Native-Seite zur Campuskarte. Als Hilfsklasse fungiert<br />

Logfile.class, welche die Debugausgaben in ein Logfile, hier benutzt<br />

myjavalog.txt, übernimmt. Diese Datei wird auch in anderen Paketen der Campuskartensoftware<br />

zur Analyse benutzt. Die Javaklassen gehören alle zum Package<br />

campuskarte.cksem <strong>und</strong> werden mit dem Makefileaufruf „make“ übersetzt.<br />

die Signatur zentraler Javamethoden:<br />

public static byte[] C_Sign(byte[] ba) throws Exception<br />

ba – ein Bytearray, das die zu signierenden Daten enthält, im vorliegenden Fall ist dies ein<br />

SHA-1-Hashwert nach PKCS#1 Spezifikation (Länge 20 Bytes, der Header wird vom<br />

SignatureProxy erzeugt, siehe nächsten Abschnitt)<br />

Rückgabewert: Bytearray, des RSA-verschlüsselten (signierten) Eingabewertes, Länge 128<br />

Bytes<br />

public static byte[] C_UnwrapKey(byte[] ba) throws Exception<br />

ba – ein Bytearray, das die zu entschlüsselnden Daten enthält, hier ist dies ein RSAverschlüsselter<br />

3DES-Schlüssel (Länge 128 Bytes)<br />

Rückgabewert: Bytearray, das die RSA-entschlüsselten Daten enthält<br />

Beide Methoden sind als static definiert. Sie erwarten beide ein Bytearray als Eingabeparameter,<br />

welches im nativen Code generiert <strong>und</strong> dann an die Javamethoden übergeben wird.<br />

Dieses Array liegt jeweils in einer Form vor mit der die Karte bzw. der CampuskarteAppletProxy<br />

arbeiten kann, das bedeutet sie müssen innerhalb der Methode nicht angepasst<br />

werden. Es wird jedoch methodenintern geprüft, ob es sich um die richtige Länge handelt. Im<br />

Falle con C_Sign sind dies 20 Bytes <strong>und</strong> im Falle von C_UnwrapKey sind dies 128 Bytes.<br />

Ebenso verhält es sich mit den Rückgabewerten, die auch jeweils ein Bytearray repräsentieren.<br />

Diese Felder werden wieder dem nativen Code übergeben, in dem sie dann an das<br />

Programm weitergeleitet werden. Die Länge der Rückgabewerte ist aufgr<strong>und</strong> der Schlüssellänge<br />

der RSA-Paare definiert. Die Methode C_Sign gibt 128 Bytes zurück, welches der Moduluslänge<br />

entspricht. Ein entschlüsselter 3DES-Schlüssel hat die Länge von 168 Bit, mit Paritybits<br />

entspricht das einer Länge von 24 Bytes, dies ist auch die Länge des Rückgabewertes<br />

der C_Unwrapkey-Methode.<br />

58


SPEZIFIKATION UND IMPLEMENTIERUNG<br />

In Beiden Klassen gibt es eine Methode, die das Interface CHVDialog des Open Card<br />

Frameworks implementiert, um eine eigene Anzeige für die PIN-Eingabe zu generieren, damit<br />

nicht der vorgegebene Standarddialog benutzen werden muss.<br />

Diese Methode hat folgende Signatur:<br />

public String getCHV(int chvNumber)<br />

chvNumber – Der int-Wert gibt den Index für die entsprechende PIN an,<br />

im vorliegenden Fall ist “0” der Index der Standard-PIN<br />

Die Hilfsklasse für die Logfileasugabe enthält enthält folgende zwei Methoden:<br />

public static void createlogfile(String logname) throws Exception<br />

logname – Der String repräsentiert Pfad <strong>und</strong> Name der Logfiledatei,<br />

z.B. “c:\myjavalog.txt”<br />

public static void writelog(String information) throws Exception<br />

information -<br />

Der String repräsentiert einen Logfileeintrag, dieser wird dann im<br />

Logfile mit Datum <strong>und</strong> Uhrzeit eingetragen,<br />

z.B. “Exception in Methode: C_Sign”<br />

6.1.3 CampuskarteAppletProxy-Funktionen<br />

In diesem Abschnitt werden die Methoden beschrieben, die direkt den Zugriff auf die Karte<br />

durchführen, dies soll zur besseren Veranschaulichung des Schichtenkonzepts der vorliegenden<br />

Lösung beitragen. Für das bessere Verständnis vom Zusammenspiel der einzelnen Programmierschichten<br />

sind sie hier kurz erläutert.<br />

Die Methoden sind Bestandteil einer Klassenhierarchie, die alle als Proxyfunktionalität<br />

agieren für die eigentlichen Funktionen, die direkt auf der Karte ausgeführt werden. Eine<br />

Ausführliche Darstellung der Cardlet 30 -Funktionen findet sich in [SUHR02].<br />

Funktionen, die direkt Daten mit der Karte austauschen sind:<br />

im SignatureProxy:<br />

public byte[] signHash(PrivateKeyRef key, byte[] data)<br />

data – Bytearray, das den Hashwert repräsentiert, der signiert werden soll<br />

key – ein Schlüsselreferenzierungs-Objekt, im vorliegenden Fall wird null übergeben,<br />

damit die Karte aufgr<strong>und</strong> des Personenstatus selbst die Entscheidung trifft, welchen<br />

Schlüssel sie benutzt, um die Funktion auszuführen.<br />

Rückgabewert: ein Bytearray, die Daten data PKCS#1-verschlüsselt (signiert)<br />

Das Kommando wird auf der Karte mit folgenden Parametern aufgerufen:<br />

30<br />

In Anlehnung an Java Applets wird der Code auf der JavaCard auch Cardlet genannt.<br />

59


Parameter Beschreibung<br />

CLA CLA_CAMPUSKARTE<br />

INS INS_SIGN_HASH<br />

P1 00h oder Schlüsselreferenz Byte 1<br />

P2 00h oder Schlüsselreferenz Byte 2<br />

LC<br />

Länge der übertragenden Daten<br />

DATA SHA1-Hashwert im DER-Format<br />

Tabelle 5-6.2: Parameter für Signaturfunktion<br />

Der Parameter DATA erwartet den Hashwert im DER Format, der im PKCS#1 definierte<br />

SHA1-Header wird durch den AppletProxy vorangestellt. Insgesamt hat er eine Länge von 35<br />

Bytes (15 Bytes definierter SHA1-Header <strong>und</strong> 20 Bytes Hashwert) <strong>und</strong> ist hexadezimal, wie<br />

folgt definiert:<br />

30 21 30 09 06 05 2B 0E 03 02 1A 05 00 04 14 | SHA1-Hashwert (20 bytes).<br />

Der Rückgabewert dieser Funktion ist bei einer erfolgreichen Durchführung des Kommandos<br />

ein Bytearray mit 128 Bytes, dies entspricht dem digitalen Signaturwert des PKCS#1-Standards.<br />

im CryptoProxy:<br />

public byte[] decryptRSA(PrivateKeyRef key, byte[] data)<br />

data – Bytearray, das die Daten repräsentiert, die entschlüsselt werden sollen<br />

key – ein Schlüsselreferenzierungs-Objekt, Erklärung s.o.<br />

Rückgabewert: ein PKCS#1-entschlüsseltes Bytearray<br />

Das Kommando wird auf der Karte mit folgenden Parametern aufgerufen:<br />

Parameter<br />

CLA<br />

INS<br />

P1<br />

P2<br />

LC<br />

DATA<br />

Beschreibung<br />

CLA_CAMPUSKARTE<br />

INS_DECRYPT<br />

00h<br />

00h<br />

Länge der zu entschlüsselnden Daten<br />

zu entschlüsselnde Daten (max. 128 Bytes)<br />

Tabelle 5-6.3: Parameter für Entschlüsselungsfunktion<br />

Durch die Einschränkungen des JavaCard-APIs ist die maximale Länge der RSA Verschlüsselung<br />

auf 117 Bytes begrenzt (Länge des Modulus des RSA-Schlüssels in Bytes minus 11).<br />

Es kann daher ein RSA-Block mit maximal 128 Bytes Länge entschlüsselt werden.<br />

Mit welchem Schlüssel die Methode durchgeführt wird hängt vom Personenstatus (PS)<br />

des Datenmodells Campuskarte des Karteninhabers ab. Ist im Personenstatus ein „s“ für Student<br />

gesetzt, wird die Entschlüsselung mit dem privaten Signaturschlüssel (SKS) durchgeführt,<br />

andernfalls mit dem privaten Verschlüsselungsschlüssel (CHE).<br />

60


SPEZIFIKATION UND IMPLEMENTIERUNG<br />

Der Rückgabewert im Fehlerfall für alle Funktionen ist:<br />

SW1 SW2 Beschreibung<br />

ISO7816 SW_SECURITY_STATUS_NOT_SATISFIED Die PIN wurde nicht verifiziert<br />

oder ein sonstiger Fehler ist<br />

aufgetreten<br />

6.2 <strong>Implementierung</strong><br />

Tabelle 5-6.4: Rückgabewert im Fehlerfall<br />

Die Umsetzung der Spezifikation wurde auf einem Microsoft NT 4.0 System durchgeführt<br />

mittels der Programmierumgebung Microsoft Visual C++. Eine bash-Shell 31 unter Windows<br />

wurde für Kommandozeilentools, wie make <strong>und</strong> CVS, eingesetzt.<br />

6.2.1 Versionskontrolle durch Einsatz von CVS<br />

Die Sourcen des gesamten Projekts werden durch die Opensource Software CVS verwaltet.<br />

CVS steht für „Concurrent Version System“, weitere Informationen über Versionen <strong>und</strong> Befehlen<br />

finden sich unter www.cvshome.org. Die Entscheidung für CVS folgt aus den Erfahrungen,<br />

die im Laufe des Projekts gezogen worden sind <strong>und</strong> dadurch, dass es eine leichte<br />

Einbindung in den bereits erstellten Programmcode gibt. Als Vorteile des CVS-Systems sind<br />

die guten Verwaltungsmöglichkeiten von verteiltem Benutzercode <strong>und</strong> die Möglichkeiten von<br />

verzweigten Quellcodebäumen zu nennen.<br />

Bei der Verwaltung der Dateien muss darauf geachtet, ob es sich um ASCII oder Binärdateien<br />

handelt. Das Hauptverzeichnis auf dem Server ist „secteam“, unter dem alle anderen<br />

Projektdateien <strong>und</strong> Verzeichnisse liegen. Die Verzeichnisse für das cksem-Modul liegen unter<br />

„secteam/campuskarte/cksem“ <strong>und</strong> „secteam/campuskarte/cksem/Debug“. Die Struktur<br />

der Programmsourcen werden in Abschnitt 6.2.2 beschrieben.<br />

Für CVS gibt es auch bereits grafische Benutzerschnittstellen, mit denen z.B. unter Windows<br />

leichter gearbeitet werden kann. In dieser Arbeit kam das Kommandozeilentool zum<br />

Einsatz, das über eine bash-Shell angesprochen wurde.<br />

6.2.2 Die Struktur der Programmsourcen<br />

Es folgt eine tabellarische Auflistung der Programmsourcen mit ihren dazugehörigen Verzeichnissen.<br />

Alle Dateien liegen auf dem CVS-Server des Projektes in dem Hauptverzeichnis<br />

„secteam/campuskarte/“.<br />

Unterverzeichnis Dateien Beschreibung<br />

cksem<br />

Makefile,<br />

myXXX.c,<br />

myXXX.h,<br />

myXXX.java<br />

cksem.XXX<br />

zum Übersetzen der Javaklassen<br />

C-Native-Dateien<br />

C-Header-Dateien<br />

Java-Dateien<br />

Konfigurationsdateien für Visuell C++<br />

31<br />

hierfür wurde „cygwin“ eingesetzt, mit der man ein Komandozeilen Tool zur Verfügung hat, in<br />

dem sich u.a. Linuxbefehle ausführen lassen, Quelle siehe Kapitel 9.6<br />

61


Debug<br />

cksem.dll<br />

cksem_install.html<br />

Enddatei nach Übersetzung der<br />

Sourcen<br />

Installationsseite mit JavaScript<br />

cert7.db<br />

key3.db<br />

secmod.db<br />

modutil.exe<br />

pk11test.exe<br />

regress.exe<br />

Tabelle 5-6.5: Struktur der Programmsourcen<br />

Testprogramme <strong>und</strong> Hilfsdateien zur<br />

Simulation u.a. von Anmeldung der<br />

DLL, bereitgestellt von Netscape bzw.<br />

Mozilla<br />

Info: myXXX steht für Dateinamen des Native- bzw. Java-Codes, z.B. mysign.c<br />

6.2.3 Java Native Interface<br />

Mit dem Java Native Interface (JNI) können Java-Funktionen aus einer nativen Programmiersprache<br />

aufgerufen werden <strong>und</strong> umgekehrt. Es ist dafür auch möglich eine Virtuelle Maschine<br />

32 (VM) für die Javaklassen zu starten.<br />

Dieses Interface wurde zur Realisierung des Schichtenmodells der Aufgabe genutzt, um<br />

über das auf Java basierende OpenCardFramework von Netscape Messenger aus auf die<br />

Campuskarte, die ebenfalls javabasiert ist, zuzugreifen.<br />

JNI stellt eine Reihe von Gr<strong>und</strong>funktionen zur Verfügung, mit denen nach dem Starten<br />

einer Virtuellen Maschine nach Klassen <strong>und</strong> Methoden in jar-Dateien gesucht werden kann.<br />

Da der native Teil der Software eine DLL darstellt, die in der Programmiersprache C geschrieben<br />

wurde, werden die entsprechenden JNI-Funktionen für diese Sprache genutzt.<br />

Um eine VM zu starten ist die Angabe von folgendem Codesegment nötig:<br />

options[0].optionString = "-Djava.class.path= c:\\. . .<br />

options[1].optionString = "-verbose:jni";<br />

memset(&vm_args, 0, sizeof(vm_args));<br />

vm_args.version = JNI_VERSION_1_2;<br />

vm_args.nOptions = 2;<br />

vm_args.options = options;<br />

status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);<br />

Hierbei ist mit der Angabe des Wertes der Option “java.class.path“, der Pfad zu den eigenen<br />

Klassendateien gemeint, die dann über das JNI angesprochen werden. Zum starten der VM<br />

wird die DLL „jvm.dll“ benötigt, die im Systempfad stehen muss, sofern die Zuordnung nicht<br />

dynamisch im Programmcode durchgeführt wird. Die Variable status ist vom Typ long<br />

<strong>und</strong> gibt einen Wert zurück, der im Fehlerfall einen negativen Wert vom Typ JNI_ERR<br />

angibt. Im Erfolgsfall ist dies 0. Der Aufruf JNI_CreateVM gibt einen Zeiger jvm auf die<br />

VM zurück. Der Zeiger env verweist auf die ausführende Umgebung. Mit dem Array<br />

options können verschiedene Variablen beim Aufruf gesetzt werden, siehe hierzu auch<br />

[HORS00]. Die wichtigste Funktion der Aufruf-API, die mit dem Zeiger jvm ausgeführt<br />

werden kann ist die zum Beenden der Virtuellen Maschine:<br />

32<br />

wird auch als JavaVM oder JVM bezeichnet<br />

62


(*jvm)->DestroyJavaVM(jvm);<br />

SPEZIFIKATION UND IMPLEMENTIERUNG<br />

Zum Aufruf einer statischen Methode ist es zunächst unerlässlich die entsprechende Klasse<br />

zu finden, dazu wird der Zeiger env <strong>und</strong> die JNI-Funktion FindClass benutzt. Anschließend<br />

wird die Methoden-ID der entsprechender Methoden-Signatur gesucht, durch<br />

GetStaticMethodID. Hierbei bedeutet die Angabe "([B)[B", dass die Methode<br />

C_Sign ein Bytearray als Eingabeparameter <strong>und</strong> als Rückgabewert erwartet. Erst danach<br />

kann der Aufruf der statische Methode durch die JNI-Funktion<br />

CallStaticObjectMethod erfolgen. Die letzte Variable (jbaData) der Aufrufparameter<br />

ist das Bytearray, das der Javamethode übergeben wird. Der Rückgabewert (das Bytearray)<br />

der Javamethode wird in die Variable returnedJbaData geschrieben, die vom<br />

JNI-Typ jbyteArray ist.<br />

class_mysign=<br />

(*env)->FindClass(env,"campuskarte/cksem/mysign");<br />

id_C_Sign=<br />

(*env)->GetStaticMethodID(env,class_mysign,"C_Sign","([B)[B");<br />

returnedJbaData=(jbyteArray)<br />

(*env)->CallStaticObjectMethod<br />

(env,class_mysign,id_C_Sign,jbaData);<br />

Um ein Bytearray als Eingabeparameter <strong>und</strong> als Rückgabewert durch die Javamethoden verarbeiten<br />

zu können müssen diese durch entsprechende JNI-Funktionen jeweils in den nativen<br />

bzw. javabasierten Typ umgewandelt werden. Hierzu werden folgende Aufrufe benutzt:<br />

(*env)->SetByteArrayRegion<br />

(env, (jbyteArray)jbaData, 0 , 20, (jbyte*)byteDataArray);<br />

(*env)->GetByteArrayRegion<br />

(env, returnedJbaData, 0, 128, pSignature);<br />

Für die PKCS#11-Funktionen ist die Angabe der Vektorlänge entscheidend. Um diesen Wert<br />

<strong>eines</strong> Javaarrays zu erhalten, gibt es folgenden JNI-Aufruf:<br />

*pulSignatureLen=<br />

(CK_ULONG)(*env)->GetArrayLength(env,returnedJbaData);<br />

63


7 Installation, Konfiguration <strong>und</strong> Tests<br />

Aus der <strong>Implementierung</strong> folgt der Programmcode, der laut ISP-Modell zur Testphase führt.<br />

Bevor das System getestet <strong>und</strong> eingesetzt werden kann, muss es nach folgenden Ausführungen<br />

richtig installiert <strong>und</strong> konfiguriert werden.<br />

7.1 Technische Voraussetzungen<br />

Für ein Anwendungssystem sind folgende technische Komponenten erforderlich. Ein<br />

Kartenleser mit funktionierendem OCF-Treiber, d.h. es kann über die PC/SC-Bridge oder<br />

direkt über OCF, angeb<strong>und</strong>en sein. Hierzu gehört auch die Installation einer Java Runtime<br />

Environment, vorzugsweise Version 1.3.1_0x, dass ebenfalls von OCF benötigt wird. Als E-<br />

<strong>Mail</strong>-Client muss ein Netscape Messenger der Version 4,7x vorhanden sein. Eine neuere<br />

Version, z.B. Mozilla oder Netcsape 7, ist theoretisch auch benutzbar.<br />

Als JavaCard wird eine aktuelle Campuskarte benötigt, welche mit dem aktuellen Cardlet<br />

initialisiert <strong>und</strong> mit Anwenderdaten personalisiert sein muss. Die dazugehörigen Signatur<strong>und</strong>/oder<br />

Verschlüsselungszertifikate müssen in einem DER-Dateiformat vorliegen.<br />

7.2 Installation<br />

Für die Installation der Dynamic Linked Library „cksem.dll“ gibt es mehrere Wege, die in<br />

den zwei folgenden Unterabschnitten beschrieben werden. Für den Einsatz der Software ist es<br />

allerdings notwendig noch weitere Soft- bzw. Hardwarekomponenten zu installieren.<br />

Ein Kartenleser mit entsprechenden Treibern ist Voraussetzung für die<br />

Kartenkommunikation. Die Javaklassen für diese Kommunikation müssen ebenfalls auf dem<br />

Anwendersystem installiert sein. Zu ihnen gehören natürlich die cksem-Klassen, die sich im<br />

jar-File cksem.jar befinden. Hilfsklassen, die für das Open Card Framework benutzt werden,<br />

sind ebenfalls nötig. Diese werden im Zusammenhang mit der Campuskarteninstallation, mit<br />

dem auch das Java JRE installiert wird, durchgeführt.<br />

7.2.1 Über Kryptografische Module-Dialogbox (Netscape Messenger 4.7x)<br />

Netscape Messenger bietet dem Benutzer durch eine Dialogbox die Unterstützung ein neues<br />

kryptografisches Modul zu installieren. Hierfür muss das Fenster mit den Security Infos geöffnet<br />

werden, dies ist entweder über den Menüpunkt Communicator/Tools/Security Info<br />

möglich oder durch Anklicken des Sicherheitsbuttons (kl<strong>eines</strong> Schloss) in der Fußzeile des<br />

Browsers.<br />

In diesem geöffneten Fenster wählt man den Menüpunkt „Cryptographic Modules“ aus.<br />

dadurch werden einem auf der rechten Seite die bereits installierten Module angezeigt, hierzu<br />

gehört auch das interne PKCS#11 Modul von Netscape, dass Gr<strong>und</strong>funktionen ausführt, die<br />

Netscape auch ohne externes Modul anbietet (siehe Abbildung 6-7.1).<br />

64


INSTALLATION, KONFIGURATION UND TESTS<br />

Abbildung 6-7.1: Auflistung der kryptog. Module bei Netscape 4.7x<br />

Nach de Betätigung des Buttons „Add“ öffnet sich für den Benutzer eine zweite Dialogbox,<br />

in dem der Name des Sicherheitsmoduls <strong>und</strong> deren Pfad eingetragen werden muss (siehe<br />

Abbildung 6-7.2). In die erste Zeile wird ein geeigneter Name für das Modul eingetragen, der<br />

frei wählbar ist, z.B. „cksem“ oder „Campuskarten Security Modul“. In die zweite Zeile muss<br />

der vollständige Pfad (plus Dateiname) zum Sicherheitsmodul angegeben werden. Dieser ist<br />

lautet nach der Installation der Campuskartensoftware wie folgt:<br />

C:\Programme\Campuskarte\cksem\pkcs11\cksem.dll<br />

Der Pfad <strong>und</strong> der Dateiname sind nicht frei wählbar, sondern beziehen sich auf die vorhandene<br />

Datei (DLL).<br />

Die Installation bei Mozilla <strong>und</strong> Netscape 7 verläuft ähnlich. Bei diesen Programmen<br />

wird über den Menüpunkt „Bearbeiten/Einstellungen/Privatsphäre & Sicherheit/Zertifikate/Sicherheitseinrichtungen<br />

verwalten“ ein externes Modul angemeldet. Der<br />

Vorteil ist, dass durch eine Dateiselectorbox nach der DLL auf der Festplatte gesucht werden<br />

kann.<br />

65


Abbildung 6-7.2: Dialogfeld zum Eintragen <strong>eines</strong> neuen kryptog. Moduls bei Netscape 4.7x<br />

7.2.2 Über JavaScript-Seite<br />

Im Verzeichnis secteam/campuskarte/cksem/Debug befindet sich die Datei „ckseminstall.html“,<br />

mit der es möglich ist das kryptografische Modul „cksem.dll“ über die Funktionalität<br />

einer JavaScript-Seite zu installieren <strong>und</strong> zu löschen.<br />

Bei dieser Methode ist darauf zu achten, dass sich der Browser im Verzeichnis der Anwendungs-DLL<br />

befindet, da ansonsten die Datei „cksem.dll“ nicht von JavaScript gef<strong>und</strong>en<br />

wird. Dies wird z.B. erreicht, in dem man über den Menüpunkt Datei-Seite laden die Datei<br />

der html-Seite auswählt.<br />

Der Einsatz von Javascript ist aus sicherheitsrelevanter Sicht nicht geeignet, weil es der<br />

Skriptsprache möglich ist verschiedene ungewünschte <strong>und</strong> vom Benutzer nicht kontrollierbare<br />

Funktionen auszuführen, welche das EDV-System kompromittieren bzw. angreifen<br />

kann. Im vorliegenden Fall wird der Einsatz von JavaScript damit begründet, dass die html-<br />

Datei nicht über das Internet geladen wird <strong>und</strong> es dem ungeübten Anwender erleichtert werden<br />

soll, das angegebene Sicherheitsmodul zu installieren.<br />

Das Modul wird mit dem Namen „cksem“ in die Liste der kryptografischen Module eingetragen,<br />

nach Betätigung des Buttons „Register cksem PKCS#11“. Um das Modul zu löschen,<br />

muss es unter dem Namen „cksem“ im Modul eingeb<strong>und</strong>en sein. Das Löschen erfolgt<br />

durch Betätigung des Buttons „Deregister cksem PKCS#11“.<br />

Im Fehlerfall gibt es einen Warnhinweis an den Benutzer, der durch eine Fehlernummer<br />

noch genauer spezifiziert wird.<br />

Fehlernummer Bedeutung<br />

-5 es wurde schon mal versucht ein Modul ohne Neustart zu installieren<br />

-10 Modul unter diesem Namen schon installiert<br />


INSTALLATION, KONFIGURATION UND TESTS<br />

lich bekannt sein dürfen, ist es auch kein Sicherheitsrisiko, diese lokal auf der Festplatte zu<br />

speichern, damit sie vom E-<strong>Mail</strong>-Client benutzt werden können.<br />

Die derzeitige Lösung sieht vor die Zertifikate aus einer DER-Datei zu lesen, welche über<br />

die cksem-DLL angesprochen wird. Hierzu müssen die Zertifikate mit einem allgemein definiertem<br />

Namen in einem angegebenen lokalen Verzeichnis liegen.<br />

Diese Angaben lauten für die Mitarbeitervariante mit zwei Zertifikaten, wie folgt:<br />

C:\Programme\Campuskarte\cksem\pkcs11\MySignatureCertificate.der<br />

<strong>und</strong><br />

C:\Programme\Campuskarte\cksem\pkcs11\MyEncryptionCertificate.der<br />

Für die Variante der anderen Benutzer mit einem Zertifikat, ist dieses, wie folgt abzulegen:<br />

C:\Programme\Campuskarte\cksem\pkcs11\MySignatureCertificate.der<br />

Damit die Endanwenderzertifikate korrekt verifiziert werden können müssen ebenfalls die<br />

Zertifikate der TUB-CA <strong>und</strong> der TUB-Perosnen-CA im Austellerverzeichnis (Signers) installiert<br />

sein. Diese werden nach der Einführung des TUB-Trustcenters über eine Internetseite<br />

direkt anwählbar sein.<br />

7.2.4 LDAP für Netscape einrichten<br />

Um auf die Daten, d.h. u.a. E-<strong>Mail</strong>-Adressen <strong>und</strong> Zertifikate, des LDAP 33 Servers der TU-<br />

Berlin zugreifen zu können, müssen beim Browser, z.B. Netscape Communicator, einige<br />

Gr<strong>und</strong>angaben gemacht werden.<br />

Es muss die URL des Servers angegeben werden. Der Standardport für LDAP Server ist<br />

389. Als Einstiegspunkt (engl.: Search Root) ist eine DN-Angabe im Zertifikat gemeint, hier<br />

kann z.B. C=DE angegeben werden (siehe Abbildung 6-7.3).<br />

33<br />

vgl.: Kapitel 3.12<br />

67


7.3 Tests<br />

Abbildung 6-7.3: Dialogbox für LDAP-Eigenschaften bei Netscape 4.7x<br />

Mit dem Aufzeigen einer signierten <strong>Mail</strong>, bei dem eine kryptografische Schlüsselfunktion<br />

zum Einsatz kommt, <strong>und</strong> ihrer ASN.1-Struktur sowie der dazugehörigen S/MIME-Struktur<br />

wird ein Test des Systems beschrieben.<br />

Der folgende Ausschnitt zeigt eine signierte E-<strong>Mail</strong> als ASN.1-Struktur. Erzeigt wurde<br />

diese lesbare Form mit dem Tool GUIdumpASN (siehe Abschnitt 9.6). Die hier angegebenen<br />

letzten Zeilen (ab OCTET STRING) zeigen die 128 Byte lange Signatur (128 Bytes), die von<br />

der Karte generiert wurde.<br />

...<br />

3310 30 13: SEQUENCE {<br />

3312 06 9: OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1)<br />

3323 05 0: NULL<br />

: }<br />

3325 04 128: OCTET STRING<br />

: 90 DC 41 85 F5 A4 5A 0F EB E0 F7 B3 9B 48 FC 94<br />

: F4 58 A4 53 4E F1 2C 82 84 4C 14 E3 6D 2F EF 40<br />

: FF 9C 47 07 8F 55 BA 0E F6 AB D0 CD 7D B9 A8 02<br />

: 23 91 41 D8 47 DF 5C 1E 7D 7A 8E 4E 24 92 A3 51<br />

: DC E2 57 BC 21 95 E1 0D DC 7D 8B C0 00 27 87 73<br />

: 5E 09 53 48 12 78 D6 9A E9 17 3E C0 51 8B 28 6D<br />

: 9C 6B 60 64 91 22 91 BB CC 06 4A D4 65 D1 5D F7<br />

: 92 30 2A DF 32 5A FD 42 53 87 AD 93 0D 75 88 07<br />

: }<br />

: }<br />

: }<br />

: }<br />

Folgend ist ein Auszug einer signierten E-<strong>Mail</strong> dargestellt. Dieser Aufbau entspricht einer<br />

S/MIME-Nachricht. S/MIME definiert für die verschiedenen kryptografische Versionen einen<br />

eigenen Content-Type, hier multipart/signed. Mit protocol wird der MIME-Typ<br />

angegeben, der ein übertragenes Signaturobjekt bezeichnet. Dies ist ein PKCS#7-Objekt vom<br />

68


INSTALLATION, KONFIGURATION UND TESTS<br />

Hinhaltstyp SignedData, <strong>und</strong> wird mit application/x-pkcs7-signature angegeben,<br />

der auch indirekt durch die Dateinamenendung .p7s spezifiziert wird, siehe unten. Der<br />

Parameter micalg (message integrity check algorithm) gibt den verwendeten Signaturalgorithmus<br />

an. Diese Information wird für die Verifikation benötigt. Im vorliegenden Fall ist<br />

es der beschriebene SHA-1 Algorithmus. Die Datei der signierten E-<strong>Mail</strong> hat den Namen<br />

smime.p7s.<br />

From - Tue Sep 17 13:38:50 2002<br />

X-Mozilla-Status: 0001<br />

X-Mozilla-Status2: 00000000<br />

Return-Path: <br />

X-Sieve: cmu-sieve 2.0<br />

Received: from localhost (localhost [127.0.0.1])<br />

by mail2.prz.tu-berlin.de (Postfix on SuSE Linux E-<strong>Mail</strong> Server 3.1) with<br />

ESMTP id 3438B2BF12<br />

for ; Fri, 13 Sep 2002 14:00:29 +0200 (CEST)<br />

Received: from prz.tu-berlin.de (zen.prz.tu-berlin.de [130.149.238.132])<br />

by mail2.prz.tu-berlin.de (Postfix on SuSE Linux e<strong>Mail</strong> Server 3.1) with<br />

ESMTP id 45D832BF07<br />

for ; Fri, 13 Sep 2002 14:00:27 +0200 (CEST)<br />

Message-ID: <br />

Date: Fri, 13 Sep 2002 13:56:33 +0200<br />

From: Sebastian Zickau <br />

X-<strong>Mail</strong>er: Mozilla 4.78 [en] (Windows NT 5.0; U)<br />

X-Accept-Language: en<br />

MIME-Version: 1.0<br />

To: zickau@prz.tu-berlin.de<br />

Subject: sign test<br />

Content-Type: multipart/signed; protocol="application/x-pkcs7-signature";<br />

micalg=sha1; bo<strong>und</strong>ary="------------ms0FD4587FD57EF948C7BCF7ED"<br />

X-Virus-Scanned: by AMaViS perl-11 on mail.prz.tu-berlin.de<br />

This is a cryptographically signed message in MIME format.<br />

--------------ms0FD4587FD57EF948C7BCF7ED<br />

Content-Type: text/plain; charset=us-ascii<br />

Content-Transfer-Encoding: 7bit<br />

sign this<br />

--------------ms0FD4587FD57EF948C7BCF7ED<br />

Content-Type: application/x-pkcs7-signature; name="smime.p7s"<br />

Content-Transfer-Encoding: base64<br />

Content-Disposition: attachment; filename="smime.p7s"<br />

Content-Description: S/MIME Cryptographic Signature<br />

69


8 Ergebnisse <strong>und</strong> Ausblick<br />

In diesem Kapitel wird ein Fazit gezogen, bei dem auch kritische Betrachtungen des Systems<br />

erörtert werden. Mit einer Beschreibung der Erweiterungsmöglichkeiten <strong>und</strong> einem Ausblick<br />

wird der inhaltliche Teil der Arbeit abgeschlossen.<br />

8.1 Fazit<br />

Als zentrales Ergebnis lässt sich festhalten, dass die geforderte Anbindung der Campuskarteninfrastruktur<br />

an einen bestehenden E-<strong>Mail</strong>-Client auch praktisch umsetzbar ist.<br />

Dies ist möglich, weil sich bestehende Standards <strong>und</strong> erweiterte Campuskartenfunktionen<br />

in Einklang bringen lassen. Die Vorgabe von Netscape Messenger, ein PKCS#11-Modul zu<br />

entwickeln, hat sich als eine realistische Erweiterungsmöglichkeit des E-<strong>Mail</strong>-Clients herausgestellt.<br />

Durch dieses Interface konnte auch aufgezeigt werden, dass sich die Campuskarte an<br />

eine internationale Standardstruktur anpassen lässt.<br />

Die implementierte API, die eine Standardfunktionalität nach außen bietet, kann auch von<br />

anderen Programmen angesprochen werden, wenn sie eine derartige Schnittstelle bereitstellen.<br />

Die erfolgreiche Verwendung von unterschiedlichen Schlüsseln für verschiedene<br />

kryptografische Funktionen ist eine Eigenschaft, die nicht in allen derzeitig existierenden E-<br />

<strong>Mail</strong>-Clients umgesetzt ist. Der Funktionsumfang des verwendeten E-<strong>Mail</strong>-Programms wird<br />

dahingehend erweitert.<br />

Die Arbeit hat den Gr<strong>und</strong>stein gelegt, um den Einsatz des Systems für die Nutzer der<br />

Campuskarte in der TUB-Verwaltung <strong>und</strong> unter den Studierenden einzuführen. Es wurde<br />

aufgezeigt, dass die Karte mit gesetzeskonformen Schlüssellängen arbeitet, die einen rechts<strong>sicheren</strong><br />

Einsatz erlauben.<br />

Hierbei ist es wünschenswert auch andere E-<strong>Mail</strong>-Clients zu erweitern, damit diese auch<br />

mit der Campuskarte zusammenarbeiten können. Es wurde bereits mehrfach auf eine Erweiterung<br />

von MS Outlook eingegangen. Es ergeben sich verschiedene Lösungsansätze, zum<br />

einen eine parallele Entwicklung <strong>eines</strong> Cryptographic Service Providers, der direkt die vorhandene<br />

Javaschicht nutzt oder zum anderen die <strong>Implementierung</strong> einer Zwischenschicht, die<br />

auf dem bestehenden PKCS#11-Modul eine CSP-Funktionalität aufbaut.<br />

Die Software kann sich auch mit Systemen agieren, die nicht mit der Campuskarte<br />

ausgestattet sind. Das ist möglich, weil beim <strong>sicheren</strong> E-<strong>Mail</strong>-Konzept auf dem<br />

Quasistandard S/MIME aufgebaut wurde, der von führenden Herstellern von E-<strong>Mail</strong>-Clients<br />

unterstützt wird. PGP steht immer noch <strong>und</strong> seit kurzem wieder durch die<br />

Weiterentwicklungen der PGP Corporation 34 in Konkurrenz zu dem RFC-Standard S/MIME.<br />

Auch auf internationaler Ebene ist es durch das MTT-Projekt verstärkt zu einer Vereinheitlichung<br />

von Benutzerumgebungen gekommen, auf die im Projekt durch Wahl der Zertifikatattribute<br />

eingegangen wurde, um auch hier eine möglichst große Interoperabilität zu<br />

gewährleisten.<br />

Ein Anteil von Java in der Lösung ermöglicht auch eine Anpassung an andere Betriebssysteme<br />

zu vollziehen, indem keine komplette Neuimplementierung notwendig ist.<br />

Es wurde aufgezeigt, dass die Verwendung von sicherheitsbedenklichem JavaScript für<br />

die Installation der Software nicht zwingend erforderlich ist.<br />

34<br />

online: http://www.pgp.com<br />

70


8.2 Kritische Betrachtungen<br />

ERGEBNISSE UND AUSBLICK<br />

Bevor das System in der Praxis eingesetzt wird, ist es notwendig auch auf Schwachstellen<br />

kritisch hinzuweisen. Für den realen Einsatz ist eine benutzungsfre<strong>und</strong>liche, stabile <strong>und</strong> performante<br />

Software zu gewährleisten.<br />

Der Einsatz von SUNs Java <strong>und</strong> deren Virtueller Maschine aufgr<strong>und</strong> des Open Card<br />

Frameworks beansprucht eine hohe Systemleistung. Dies resultiert aus den hohen<br />

Ressourcenanforderungen, die eine JavaVM an ein System stellt.<br />

Ein weiterer Punkt ist der Lösungsansatz des Schichtenmodells. Ein Zusammenspiel von<br />

unterschiedlichen Programmiersprachen <strong>und</strong> den gegebenen anderen Hard- <strong>und</strong> Softwareschichten<br />

öffnet ein Feld von Fehleranfälligkeit, weil für den Betrieb ein reibungsloses Zusammenspiel<br />

notwendig ist.<br />

Momentane Einschränkungen, wie das fehlende Sessionkonzept auf der Karte <strong>und</strong> die<br />

notwendige Speicherung von Zertifikaten in lokalen Dateien, sind durch angepassten Programmcode<br />

oder mit leistungsfähigeren Karten zu beheben.<br />

8.2.1 Kompromittierung von Schlüsseln<br />

Durch die Bereitstellung einer Certificate Revokation List durch das Trustcenter der Technischen<br />

Universität Berlin gibt es die Möglichkeit, sich die aktuellen Sperrungen von öffentlichen<br />

Schlüsseln im E-<strong>Mail</strong>-Programm anzeigen zu lassen. Durch diesen Onlinedienst ist gewährleistet,<br />

dass sich aktuelle Änderungen in der Gültigkeit von Schlüsseln schnell verbreiten<br />

können.<br />

Dies ist eine Vorsichts- <strong>und</strong> Hinweismaßnahme, welche einer Kompromittierung von<br />

Schlüsseln entgegenwirken soll. Dazu ist es aber unabdingbar, dass im Falle einer Kompromittierung<br />

schnellstmöglich dem Trustcenter oder einem ihm angeschlossenen Dienst dieser<br />

Sachverhalt mitgeteilt wird, damit die Sperrlisten aktualisiert werden können.<br />

Eine erteilte Signatur kann z.B. anhand ihres Datums für ungültig deklariert werden,<br />

sollte der Schlüssel zu dem angegebenen Zeitpunkt bereits als nicht vertrauenswürdig eingestuft<br />

worden sein.<br />

8.2.2 Mögliche Angriffe auf Rechner<br />

Ein Angriff auf das System, der denkbar wäre, ist ein Austausch der DLL bzw. Java-Klassen.<br />

Diese könnten im Programmcode dahingehend geändert werden, dass sie eine kompromittierende<br />

Funktionalität bereitstellen würden. Zum Ziel könnte der Angreifer das Mitlesen von<br />

Informationen haben, wie z.B. der PIN oder den E-<strong>Mail</strong>s, oder die Speicherung <strong>eines</strong> privaten<br />

Schlüssels beabsichtigen. Da dieser die Karte allerdings nie „verlässt“, ist dieses Angriffsziel<br />

durch das Austauschen der Binärdateien nicht zu erreichen.<br />

Die Rechner, die in der TUB-Verwaltung zum Einsatz kommen, sind durch abgeschlossene<br />

Türen <strong>und</strong> durch Passwörter geschützt. Ein entsprechender Umgang mit Hard- <strong>und</strong><br />

Software wird in den Dienstvereinbarungen beschrieben.<br />

Eine weitere Möglichkeit dieses Angriffziel auszuschließen, ist das der Programmcode<br />

<strong>und</strong> die ausführbaren Dateien mit elektronische Signaturen versehen werden, die vom TUB-<br />

Trustcenter ausgestellte <strong>und</strong> vom Anwender verifiziert werden können.<br />

8.2.3 Virenschutz<br />

Im Zusammenhang mit der Übermittlung von elektronischer Post wird häufig von Attacken<br />

auf lokale Rechner durch Viren informiert. Es ist klarzustellen, dass durch den Einsatz dieser<br />

71


oder einer anderen <strong>sicheren</strong> E-<strong>Mail</strong>-Software sich die Problematik in bezug auf Viren im<br />

Internet nicht ändert. Ein System wird nicht gegen Viren <strong>und</strong> Trojaner geschützt, indem es<br />

verschlüsselte Nachrichten einsetzt.<br />

Auch die Möglichkeit signierte Nachrichten verifizieren zu können schließt nicht aus,<br />

dass sich Viren in Programmen <strong>und</strong> Dateien befinden können, die als Anhang geschickt werden.<br />

Viren verbreiten sich meist in Unwissenheit des Absenders, d.h. ein ungewollt verschickter<br />

Virus kann auch in einer signierten <strong>und</strong> gleichzeitig verschlüsselten E-<strong>Mail</strong> auftreten.<br />

Vorgehensweisen zum Virenschutz werden u.a. in der Dienstvereinbarung [DTUE98] der<br />

TUB beschrieben.<br />

8.3 Erweiterungsmöglichkeiten<br />

Das Aufzeigen der technischen Machbarkeit der Aufgabe führte dazu, dass das System mit<br />

Einschränkungen realisiert wurde. Es bieten sich daher Erweiterungsmöglichkeiten an, die<br />

die Software abger<strong>und</strong>eter erscheinen lassen würden. Das Lesen der Zertifikate <strong>und</strong> anderer<br />

Informationsdaten direkt von der Karte oder das Einführen von mehr Java- <strong>und</strong> OCF-Funktionalität<br />

sind dafür zwei Beispiele.<br />

Eine Anpassung für andere Betriebssysteme, z.B. Linux bzw. Unix, wäre eine praktische<br />

Alternative. Da einige Schichten der Software in plattformunabhängigem Java geschrieben<br />

wurden, ist dies teilweise realisiert. Die Anpassung des nativen Programmierteils wäre hier<br />

durchzuführen.<br />

Das Erweitern der Kartenbefehle <strong>und</strong> Programmstruktur zu einer ISO 7816 konformen<br />

Standardkarte wäre ein größerer Schritt, der aber Änderungen in anderen Projektbereichen<br />

nach sich ziehen würde.<br />

8.4 Ausblick<br />

Die im vorigen Kapitel angesprochenen Erweiterungsmöglichkeiten für das System sind auch<br />

als Ausblick für die gesamte Aufgabe gedacht.<br />

Mit dem notwendigen Erstellen <strong>eines</strong> Sicherheitskonzeptes für die Technische Universität<br />

Berlin wird ein weiterer Schritt getan, um diese akademische Arbeit in einen praktischen <strong>und</strong><br />

einsetzbaren Kontext zu rücken.<br />

Die realisierten Methoden für kryptografische Funktionen auf der Karte können selbstverständlich<br />

noch in anderer Software zum Einsatz kommen. Hierbei ist, auch im Rahmen einer<br />

Diplomarbeit geplant, einen Secure-Shell-Einsatz mittels Campuskarte zu realisieren. Weitere<br />

Anwendungsfelder wären das Verschlüsseln <strong>und</strong> Signieren von Dokumenten oder ganzen<br />

Festplatteneinheiten. Anwendungen dieser Art mit der Campuskarte sind in Vorbereitung.<br />

Durch die eingeführten Funktionen wäre es auch möglich einen vereinfachten 35<br />

Authentisierungsvorgang durchzuführen, bei dem nur die RSA-Schlüssel <strong>und</strong> Funktionen<br />

zum Einsatz kommen.<br />

Die Länge <strong>eines</strong> 1024 Bit Schlüssels ist nicht dauerhaft 36 als sicher anzusehen, deshalb<br />

wird es in der Zukunft notwendig sein, längere Schlüssel einzusetzen. Dies ist unabhängig<br />

von der Programmstruktur umsetzbar, da diese unabhängig von der Mächtigkeit des privaten<br />

Schlüssels konzipiert ist.<br />

35<br />

im Gegensatz zum jetzigen speziell entwickelten Authentisierungsverfahren zu sehen, das durch<br />

den Einsatz von exklusiven Methoden ausgeführt wird<br />

36<br />

vgl. Kapitel 3.4<br />

72


ERGEBNISSE UND AUSBLICK<br />

Der Sicherheitsaspekt in öffentlichen <strong>und</strong> offenen Datennetzen wird immer relevanter<br />

Dies erkennt man u.a. daran, dass auf der Basis des Signaturgesetzes immer mehr Geschäfte 37<br />

in Politik <strong>und</strong> Wirtschaft durch den Einsatz von elektronischen Datenverarbeitungsanlagen<br />

abgewickelt werden.<br />

Die in dieser Arbeit aufgezeigten Möglichkeiten bieten im Rahmen der Campuskarte ein<br />

Konzept für den <strong>sicheren</strong> E-<strong>Mail</strong>-Einsatz an der TU-Berlin.<br />

37<br />

wie z.B. Bankgeschäfte über das Internet via SmartCard <strong>und</strong> die Einführung von rechtsgültigen<br />

Online-Formularen mit der Initiative B<strong>und</strong>Online2005<br />

73


9 Anhang<br />

9.1 Glossar<br />

Abstract Syntax Notation<br />

One<br />

Application Programming<br />

Interface<br />

Asymmetrische Verschlüsselung,<br />

Public Key Encryption<br />

Authentifizierung, Authentication<br />

Certificate Revocation List<br />

Certification Authority<br />

Chiffre<br />

Cipher Block Chaining<br />

Common Name<br />

Cryptographic Application<br />

Programming Interface<br />

Cryptographic Token Interface<br />

Data Encryption Standard<br />

Digest<br />

Digitale / Elektronische<br />

Signatur, Digital Signature<br />

Standard zur abstrakten <strong>und</strong> plattformunabhängigen Beschreibung<br />

von Datenstrukturen<br />

Programmierschnittstelle <strong>eines</strong> Softwaresystems<br />

Verschlüsselungsverfahren, das auf einer 2 Schlüsselmethode<br />

basiert, bekanntester ist das RSA-Verfahren<br />

eindeutige Identifikation <strong>eines</strong> Kommunikationsteilnehmers<br />

oder des Ursprungs von Daten<br />

eine öffentliche zugängliche Liste, die alle Zertifikate angibt,<br />

die vor ihrem Ablaufdatum als ungültig (widerrufen) erklärt<br />

worden sind; wird von einer Zertifizierungsstelle verwaltet<br />

Einrichtung einer PKI, die Zertifikate ausstellt <strong>und</strong> an Nutzer<br />

weiter gibt<br />

andere Bezeichnung für Verschlüsselungsverfahren, d.h.<br />

Transformation von Klartext in Schlüsseltext<br />

Modus, um einen Block-Chiffre mit einem Feedback-Mechanismus<br />

auszustatten, dabei wird jeder Klartextblock vor seiner<br />

Verschlüsselung mit dem letzten Ciphertextblock XOR-verknüpft<br />

Attribut <strong>eines</strong> PKI-Zertifikats, in dem z.B. der Benutzername<br />

gespeichert werden kann<br />

eine Programmierschnittstelle unter Microsoft Windows, die<br />

kryptografische Funktionalität zuständig ist, kurz: CryptoAPI<br />

Name des RSA-PKCS#11 APIs, der Objekten, wie Smart-<br />

Cards, eine allgemeine Programmierschnittstelle liefert<br />

der am häufigsten verwendete symmetrische Algorithmus zum<br />

Verschlüsseln (Produktverschlüsselung) von Daten; internationaler<br />

Quasistandard<br />

siehe Hash-Funktion<br />

Ein mit dem PrivateKey verschlüsselter Hashwert, der die Integrität<br />

<strong>und</strong> den Ursprung von Daten sicherstellen soll<br />

74


ANHANG<br />

Distinguished Encoding<br />

Rules<br />

Distinguished Name<br />

Einwegfunktion<br />

Elliptic Curve Cryptography<br />

Entschlüsselung<br />

Faktorisierung<br />

Geheimer Schlüssel, Secret<br />

Key, Symmetric Key<br />

Hash-Funktion<br />

Integrität, Integrity<br />

International Data Encryption<br />

Algorithm<br />

Untermenge von Basic Encoding Rules; für die eindeutige<br />

Kodierung von ASN.1-Strukturen<br />

Attribut <strong>eines</strong> PKI-Zertifkats<br />

Funktion, die sich einfach zu berechnen ist, deren Umkehrung<br />

aber sehr schwer zu berechnen ist; siehe Hash-Funktion<br />

Gebiet der asymmetrischen Kryptografie, der sich auf mathematischen<br />

elliptischen Kurven stützt<br />

Umkehrfunktion, um aus einem Geheimtext wieder einen<br />

Klartext zu erzeugen<br />

Zerlegung einer Zahl in Primfaktoren<br />

Schlüssel <strong>eines</strong> symmetrischen Verfahrens, der sowohl für die<br />

Ver- wie für die Entschlüsselung eingesetzt wird; ist in jedem<br />

Fall vor Dritten geheim zu halten<br />

eine mathematische Funktion, die Daten beliebiger Länge auf<br />

einen repräsentativen Wert (Hash) kürzerer Länge abbildet, der<br />

in der Regel eindeutig ist, d.h. es ist schwierig zwei unterschiedliche<br />

Daten auf den gleichen Hashwert abzubilden; wird<br />

bei digitalen Signaturen eingesetzt; Umkehrfunktion ist<br />

schwierig zu berechnen<br />

Sicherheitsbezeichnung für unveränderte Daten<br />

symmetrischer 64-Bit-Blockchiffre-Algorithmus<br />

Internet <strong>Mail</strong> Consortium<br />

Internet Message Protocol<br />

Internet Protocol<br />

Internet Standard Organisation<br />

Java Cryptographic Architecture<br />

Java Cryptographic Extension<br />

Java Development Kit<br />

Java Virtual Machine<br />

Protokoll zur Übertragung von elektronischer Post<br />

Basisprotokoll zur Übertragung von Daten im Internet<br />

Institution zur Entwicklung internationaler Normen <strong>und</strong> Standards<br />

Schnittstelle zur Entwicklung von kryptografischen Funktionen<br />

für die Java-Plattform<br />

Schnittstelle, die die JCA mit kryptografischen Funktionen<br />

ergänzt, die den Exportbestimmungen der USA unterliegen<br />

Umgebung für die Erstellung von Java-Programmen<br />

Umgebung in der Java-Programme ausgeführt werden<br />

75


Klartext<br />

Kryptoanalyse<br />

Kryptografie<br />

Kryptologie<br />

Lightweight Directory<br />

Access Protocol (LDAP)<br />

Multipurpose Internet <strong>Mail</strong><br />

Extension (MIME)<br />

Objektbezeichner, Object<br />

Identifier<br />

Öffentlicher Schlüssel,<br />

Public Key<br />

Padding<br />

Post Office Protocol<br />

Pretty Good Privacy<br />

Privacy Enhanced <strong>Mail</strong><br />

Privater Schlüssel, Private<br />

Key<br />

Public Key Cryptographic<br />

Standards<br />

Public Key Infrastructure<br />

Public Key Infrastructure<br />

X.509<br />

Registration Authority<br />

Request For Comment<br />

unverschlüsslte(r) Text/Daten<br />

Disziplin, die sich mit der Berechnung von Verschlüsselungsverfahren<br />

<strong>und</strong> Kryptografie beschäftigt<br />

Gebiet, das sich mit der Geheimhaltung, dem Schutz von vertraulichen<br />

Daten <strong>und</strong> unautorisierten Veränderungen durch<br />

Verschlüsselung beschäftigt<br />

Fachgebiet der Kryptografie <strong>und</strong> Kryptoanalyse<br />

Standard für den Zugriff auf X.500-Verzeichnisse<br />

Format zur Übertragung von Daten, jeglicher Form, über das<br />

SMTP-Protokoll<br />

ASN.1-Typ zur eindeutigen Identifikation von Informationsobjekten<br />

der Schlüssel <strong>eines</strong> asymmetrischen Verschlüsselungssystem,<br />

der vom Sender (der Welt) bekannt sein darf, um Daten zu<br />

verschlüsseln bzw. zu verifizieren<br />

Auffüllen von nichtbelegten Bits in Blöcken, um eine vorgeschriebene<br />

Länge zu erreichen<br />

Protokoll zum Übertragen von E-<strong>Mail</strong>-Nachrichten<br />

von Philip Zimmermann entwickelter sicherer E-<strong>Mail</strong>-Dienst,<br />

basiert auf WebOfTrust<br />

Sicherheitsprotokoll für elektronische Post<br />

der Schlüssel <strong>eines</strong> asymmetrischen Verschlüsselungssystem,<br />

der nur dem Eigentümer bekannt sein darf, um Daten zu entschlüsseln<br />

bzw. zu signieren<br />

von den RSA-Laboratories Standardserie, die sich mit elektronischer<br />

Verschlüsselung beschäftigen<br />

eine Infrastruktur die auf einer asymmetrischen Verschlüsselungsmethode<br />

basiert <strong>und</strong> Zertifikate für die Verteilung der<br />

öffentlichen Schlüssel benutzt<br />

eine Public Key Infrastucture, die auf dem Standard der X.509<br />

Zertifikate beruht<br />

Einrichtung, die Benutzerdaten für eine PKI registriert<br />

Sammlung von Standardisierungsdokumenten für die Informatik<br />

76


ANHANG<br />

Rivest, Shamir, Adelman<br />

Schlüssel, Key<br />

Schlüsselpaar, Key Pair<br />

Schlüsseltext, Chiffrat,<br />

Ciphertext<br />

Secure Hash Algorithm<br />

Secure Multipurpose Internet<br />

<strong>Mail</strong> Extension<br />

Simple <strong>Mail</strong> Transfer Protocol<br />

Sitzungsschlüssel, Session<br />

Key<br />

Smart Card / Java Card<br />

Trusted Third Party<br />

Verbindlichkeit, Non Reputation<br />

Wiederruf <strong>eines</strong> Zertifikats<br />

Zertifikat, Certificate<br />

Zertifizierungsstelle, Certificate<br />

Authority<br />

Namen der Erfinder des RSA-Algorithmus<br />

hier Bitfolge, mit deren Hilfe Daten ver- <strong>und</strong> entschlüsselt<br />

werden können<br />

Paar, bestehend aus öffentlichem <strong>und</strong> privaten Schlüssel, bei<br />

der asymmetrischen Verschlüsselung<br />

verschlüsselter Klartext<br />

Hashfunktion, die bei der elektronischen Signatur benutzt<br />

wird, internationaler Standard<br />

sichere Variante des MIME-Standards<br />

Protokoll zum Senden von elektronischer Post<br />

Schlüssel in einem symmetrischen Verschlüsselungssystem,<br />

der nur bei e i n e m Nachrichtenaustausch verwendet wird<br />

Bezeichnung für Chipkarten, die auf der Programmiersprache<br />

Java aufbauen<br />

Institution der vollständig vertraut wird, die u.a. private<br />

Schlüssel erzeugt <strong>und</strong> Zertifikate verwaltet, sie ist von Sender<br />

<strong>und</strong> Empfänger unabhängig, dieser dritten Stelle vertrauen<br />

beide<br />

ein Attribut <strong>eines</strong> Datums von Zertifikaten, das besagt, dass<br />

der Sinn des entsprechenden Datums nicht abstreitbar ist<br />

Erklärung der Ungültigkeit <strong>eines</strong> Zertifikats, weil z.B. der private<br />

Schlüssel kompromittiert wurde, wird in einer CRL Liste<br />

angegeben<br />

Datei, die einer Person einen öffentlichen Schlüssel zuordnet;<br />

wird von Zertifizierungsstelle erstellt<br />

Institution, welche Zertifikate, CRLs <strong>und</strong> Schlüssel erstellt <strong>und</strong><br />

verwaltet; ihr wird im hohen Maße vertraut<br />

77


9.2 Abkürzungen<br />

ASN.1 Abstract Syntax Notation One<br />

BER Basic Encoding Rules<br />

CA Certificate Authority<br />

CAPI Cryptographic Application Programming Interface<br />

CBC Cipher Block Chaining<br />

cksem Campuskarte Sichere E-<strong>Mail</strong><br />

CN Common Name<br />

CP Certification Policy<br />

CPS Certification Practice Statement<br />

CRL Certificate Revocation List<br />

Cryptoki Cryptographic Token Interface<br />

DER Distinguished Encoding Rules<br />

DES Data Encryption Standard<br />

3DES Triple Data Encryption Standard (Triple-DES)<br />

DLL Dynamic Linked Library<br />

DN Distinguished Name<br />

ECC Elliptic Curve Cryptography<br />

IDEA International Data Encryption Algorithm<br />

IMAP Internet Message Protocol<br />

IMC Internet <strong>Mail</strong> Consortium<br />

IP Internet Protocol<br />

ISO Internet Standard Organisation<br />

JCA Java Cryptographic Architecture<br />

JCE Java Cryptographic Extension<br />

JDK Java Development Kit<br />

JRE Java Runtime Environment<br />

JVM Java Virtual Machine<br />

LDAP Lightweight Directory Access Protocol<br />

MIME Multipurpose <strong>Mail</strong> Extension<br />

OCF Open Card Framework<br />

PEM Privacy Enhanced <strong>Mail</strong><br />

PGP Pretty Good Privacy<br />

PIN Personal Identification Number<br />

PKCS Public Key Cryptographic Standards<br />

PKI Public Key Infrastructure<br />

PKIX Public Key Infrastructure X.509<br />

POP Post Office Protocol<br />

PSE Personal Secure Environment<br />

PUK PIN Unblocking Key<br />

RA Registration Authority<br />

RFC Request For Comment<br />

RSA Rivest, Shamir, Adelman<br />

S/MIME Secure Multipurpose <strong>Mail</strong> Extension<br />

SDK Software Development Kit<br />

SHA Secure Hash Algorithm<br />

SMTP Simple <strong>Mail</strong> Transfer Protocol<br />

SPKI Simple Public Key Infrastructure<br />

78


TTP Trusted Third Party<br />

X.509 Ein ITU-Standard<br />

ANHANG<br />

79


9.3 Abbildungen<br />

ABBILDUNG 2-3.1: SYMMETRISCHE VERSCHLÜSSELUNG......................... 5<br />

ABBILDUNG 2-3.2: ASYMMETRISCHE VERSCHLÜSSELUNG.......................6<br />

ABBILDUNG 2-3.3: HYBRIDE VERSCHLÜSSELUNG........................................ 6<br />

ABBILDUNG 2-3.4: ERZEUGEN EINER DIGITALEN SIGNATUR...................8<br />

ABBILDUNG 2-3.5: PRÜFEN EINER DIGITALEN SIGNATUR.........................8<br />

ABBILDUNG 2-3.6: TUB-CA-BAUM........................................................................9<br />

ABBILDUNG 2-3.7: ZERTIFIKATHIERARCHIE............................................... 21<br />

ABBILDUNG 2-3.8: OCF-ARCHITEKTUR...........................................................23<br />

ABBILDUNG 2-3.9: PC/SC ARCHITEKTUR........................................................24<br />

ABBILDUNG 3-4.1: DIAGRAMM DES PROBLEMBEREICHSMODELLS.... 31<br />

ABBILDUNG 3-4.2: ANWENDUNGSFALLDIAGRAMME................................ 31<br />

ABBILDUNG 3-4.3: SYSTEMSCHNITTSTELLEN..............................................35<br />

ABBILDUNG 4-5.1: LÖSUNGSANSATZ............................................................... 38<br />

ABBILDUNG 4-5.2: : SEQUENZDIAGRAMM – VERSENDEN UND<br />

EMPFANGEN VON SICHERER E-MAIL.............................................................39<br />

ABBILDUNG 4-5.3: AKTIVITÄTSDIAGRAMM SIGNIEREN EINER E-MAIL.<br />

41<br />

ABBILDUNG 4-5.4: AKTIVITÄTSDIAGRAMM ENTSCHLÜSSELN EINER<br />

E-MAIL....................................................................................................................... 42<br />

ABBILDUNG 4-5.5: AKTIVITÄTSDIAGRAMM PIN EINGEBEN....................43<br />

ABBILDUNG 4-5.6: PKCS#11-TOKEN-MODELL............................................... 44<br />

ABBILDUNG 4-5.7: PKCS#11-OBJEKT-MODELL............................................. 45<br />

ABBILDUNG 4-5.8: VERTEILUNG DER KOMPONENTEN............................ 46<br />

ABBILDUNG 4-5.9: SCHICHTENMODELL FÜR LÖSUNG..............................48<br />

ABBILDUNG 4-5.10: ENTSCHEIDUNG DER SCHLÜSSELWAHL BEI<br />

KARTENFUNKTIONEN.......................................................................................... 51<br />

80


ANHANG<br />

ABBILDUNG 4-5.11: LOKALES ZERTIFIKAT................................................... 53<br />

ABBILDUNG 6-7.1: AUFLISTUNG DER KRYPTOG. MODULE BEI<br />

NETSCAPE 4.7X........................................................................................................ 65<br />

ABBILDUNG 6-7.2: DIALOGFELD ZUM EINTRAGEN EINES NEUEN<br />

KRYPTOG. MODULS BEI NETSCAPE 4.7X........................................................66<br />

ABBILDUNG 6-7.3: DIALOGBOX FÜR LDAP-EIGENSCHAFTEN BEI<br />

NETSCAPE 4.7X........................................................................................................ 68<br />

9.4 Tabellen<br />

TABELLE 2-3.1: CAMPUSKARTEN DATENMODELL.....................................12<br />

TABELLE 2-3.2: TESTZERTIFIKATE..................................................................18<br />

TABELLE 2-3.3: AUSWERTUNG NETSCAPE MESSENGER 4.7X..................19<br />

TABELLE 2-3.4: AUSWERTUNG MS OUTLOOK 2000..................................... 20<br />

TABELLE 3-4.1: AUSWERTUNG TESTSOFTWARE.........................................27<br />

TABELLE 4-5.1: ÜBERSICHT FLAGS..................................................................53<br />

TABELLE 5-6.1: AUFGERUFENE PKCS#11-FUNKTIONEN........................... 57<br />

TABELLE 5-6.2: PARAMETER FÜR SIGNATURFUNKTION......................... 60<br />

TABELLE 5-6.3: PARAMETER FÜR ENTSCHLÜSSELUNGSFUNKTION....60<br />

TABELLE 5-6.4: RÜCKGABEWERT IM FEHLERFALL.................................. 61<br />

TABELLE 5-6.5: STRUKTUR DER PROGRAMMSOURCEN...........................62<br />

TABELLE 6-7.1: FEHLERBEDEUTUNG BEI REGISTRIERUNG................... 66<br />

81


9.5 Bibliografie<br />

[ASN1]<br />

[BDSG02]<br />

[BLNDSG]<br />

[BSINFO]<br />

[BUSC98]<br />

[CORO00]<br />

[DTUE98]<br />

[GNUP11]<br />

[GORD98]<br />

ASN.1 Information Site<br />

(online: http://asn1.elibel.tm.fr/en/index.htm)<br />

B<strong>und</strong>es Datenschutzgesetz, 19. Juli 2002 (online:<br />

http://www.datenschutz-berlin.de/recht/de/bdsg/bdsg01.htm)<br />

Berliner Datenschutzgesetz, 05. August 2001 (online:<br />

http://www.datenschutz-berlin.de/recht/bln/blndsg/blndsg_nichtamt.htm)<br />

B<strong>und</strong>esamt für Sicherheit in der Informationstechnik, http://www.bsi.de<br />

F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal: Pattern-orientierte<br />

Software-Architektur – Ein Pattern-System, Addison-Wesley, Bonn,<br />

Paris [u.a.], 1998<br />

V. Coroamă: Flexible Anbindung von SmartCards an eine Java-Sicherheitsumgebung<br />

– <strong>Entwurf</strong> <strong>und</strong> <strong>Implementierung</strong> <strong>eines</strong> Hardware-Providers für die<br />

Java Cryptographiy Architecture, Technische Universität Darmstadt, 2000<br />

Dienstvereinbarung über den Einsatz Elektronischer Post in der Technischen<br />

Univeristät Berlin:<br />

(online: http://www.datensicherheit.tu-berlin.de/info/tub/dv/1998-06-12-email.html)<br />

GNU PKCS#11 Implementation (online: http://gpkcs11.sourceforge.net/)<br />

Rob Gordon: Essential JNI Java Native Interface, Prentice Hall PTR,Upper<br />

Saddle River, New Jersey, 1998<br />

[GUTM00] P. Gutman: X.509 Style Guide, Auckland, 2000<br />

(online: http://www.cs.auckland.ac.nz/~pgut001/pubs/x509guide.tx)<br />

[HERB02]<br />

[HILD98]<br />

[HITZ99]<br />

[HORS00]<br />

[HORS99]<br />

R. Herbst: Verlegt Private Keys vor Zugriff schützen, in iX Juni 2002, Seite<br />

139<br />

T. Hildmann: Entwicklung <strong>eines</strong> <strong>sicheren</strong>, erweiterten E-<strong>Mail</strong>-Systems, Technische<br />

Universität Berlin, 1998<br />

M. Hitz, G. Kappel: UML@WORK - Von der Analyse zur Realisierung,<br />

dpunkt Verlag, Heidelberg, 1999<br />

C. S. Horstmann, G. Cornell: Core Java 2 Band 2 Expertenwissen, The Sun<br />

Microssystems Press Java Series Markt+Technik Verlag, München, 2000<br />

C. S. Horstmann, G. Cornell: Core Java 2 Band 1 Gr<strong>und</strong>lagen, The Sun Microssystems<br />

Press Java Series Markt+Technik Verlag, München, 1999<br />

82


ANHANG<br />

[IPLANE]<br />

[ISISMT]<br />

[JAPI131]<br />

[KERN88]<br />

[LIPP00]<br />

[MOZILL]<br />

[MUSCLE]<br />

[NEDEVC]<br />

iPlanet Dokumente<br />

(online: http://docs.sun.com/source/816-6150-10/pkcs.htm#1020808)<br />

ISIS-MTT (online: http://www.teletrust.de/teletrust.asp?id=61040)<br />

Java Dokumentation der 1.3.1 API von Sun:<br />

(online: http://java.sun.com/j2se/1.3/docs/api/)<br />

B. W. Kernighan, D. M. Ritchie: Programmieren in C - Zweite Ausgabe ANSI<br />

C , Carl Hanser Verlag, München, Wien , 1988<br />

P. Lipp, J. Farmer, D. Bratko W. Platzer, A. Sterbenz: Sicherheit <strong>und</strong><br />

Kryptographie in Java, Einführung, Anwendung <strong>und</strong> Lösungen,<br />

Addison-Wesley, München, 2000<br />

Mozilla Projekt (online: http://www.mozilla.org)<br />

M.U.S.C.L.E. Projekt (online: http://www.linuxnet.com)<br />

Netscape Developer Center<br />

(online: http://devedge.netscape.com/)<br />

PKCS#11-FAQ (online:<br />

http://developer.netscape.com/support/faqs/pkcs_11.html)<br />

[OCFP99] Open Card Framework 1.2 Programmer´s Guide Forth Edition, IBM, 1999<br />

(online: http://www.opencard.org/index-docs.shtml)<br />

[PCSCWG]<br />

[PETZ00]<br />

PC/SC Workgroup Spezifikation (online: http://www.pcscworkgroup.com)<br />

C. Petzold: Windows Programmierung Das Entwicklerhandbuch zur Win32-<br />

API 5. Auflage, Microsoft Press Deutschland, Unterschleißheim, 2000<br />

[PKCS1] PKCS#1: The RSA Cryptography Standard, RSA Laboratories, Version 2.1,<br />

2002 (online: http://www.rsasecurity.com/rsalabs/pkcs/)<br />

[PKCS11]<br />

[PKCS15]<br />

[PKCS7]<br />

[RANK99]<br />

PKCS#11: Cryptographic Token Interface Standard, RSA Laboratories, Version<br />

2.11, 2001<br />

(online: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-11/index.html)<br />

PKCS#15: The Cryptographic Token Information Syntax Standard, RSA Laboratories,<br />

Version 1.1, 2000<br />

(online: http://www.rsasecurity.com/rsalabs/pkcs/)<br />

PKCS#7: Cryptographic Message Syntax Standard, An RSA Laboratories<br />

Technical Note, Version 1.5, 1993 (online:<br />

http://www.rsasecurity.com/rsalabs/pkcs/)<br />

W. Rankl, W. Effing: Handbuch der Chipkarten – Aufbau – Funktionsweise<br />

Einsatz von Smart Cards, Hanser Fachbuchverlag, 1999<br />

83


[RAPH00]<br />

[RFC2632]<br />

[RFC2633]<br />

[RFC2634]<br />

[RFC3280]<br />

[SCHN01]<br />

[SCHN96]<br />

[SCHR01]<br />

Rahmen-Pflichtenheft – Chipkartenbasierte Dienstleistungssysteme an den<br />

Berliner <strong>und</strong> Brandenburger Hochschulen, Version 2, Berlin, 2000<br />

RFC 2632 S/MIME Version 3 Certification Handling, B. Ramsdell (Ed.), Juni<br />

1999<br />

RFC 2633 S/MIME Version 3 Message Specification, B. Ramsdell (Ed.), Juni<br />

1999<br />

RFC 3634 Enhanced Security Services for S/MIME, P. Hoffmann (Ed.), Juni<br />

1999<br />

RFC 3280, Internet X.509 Public Key Infrastructure Certificate and Certificate<br />

Revocation List (CRL) Profile, R. Housley, W. Polk, W. Ford, D. Solo, April<br />

2002<br />

B. Schneier: Secrets & Lies – IT-Sicherheit in einer vernetzten Welt,<br />

dpunkt.verlag, Heidelber, 2001<br />

B. Schneier: Angewandte Kryptographie, Protokolle, Algorithmen <strong>und</strong><br />

Sourcecode in C, Addison-Wesley, Bonn, Reading [u.a.], 1996<br />

D. Schramm: Entwicklung einer flexiblen Java-basierten S/MIME-Erweiterung<br />

für Outlook, Technische Universität Darmstadt, 2001<br />

[SEEG00] J. Seeger: Anchormen IMAP-fähige <strong>Mail</strong>-Clients, in iX Juli 2000, Seite 44<br />

[SEST00]<br />

[SIGG01]<br />

C. Sesterhenn: Design <strong>und</strong> <strong>Implementierung</strong> <strong>eines</strong> Kryptographie-Plugin für<br />

E-<strong>Mail</strong>-Clients basierend auf S/MIME <strong>und</strong> Java, Technische Universität<br />

Darmstadt, 2000<br />

Gesetz über Rahmenbedingungen für elektronische Signaturen, 2001 (online:<br />

http://jurcom5.juris.de/b<strong>und</strong>esrecht/sigg_2001/index.html)<br />

[SIGV01] Verordnung zur elektronischen Signatur, 2001<br />

(online: http://jurcom5.juris.de/b<strong>und</strong>esrecht/sigv_2001/)<br />

[SING00]<br />

[SUHR00]<br />

[SUHR02]<br />

[SUHR99]<br />

[SWDK01]<br />

S. Singh: Geheime Botschaften – Die Kunst der Verschlüsselung von der Antike<br />

bis in die Zeiten des Internet, Carl Hanser Verlag, München, Wien, 2000<br />

Lutz Suhrbier: Smartcard-Datenmodell Anforderungen, Technische Universität<br />

Berlin, 2000<br />

L. Suhrbier: Dokumentation des Cardlets Campuskarte, Technische Universität<br />

Berlin, 2002<br />

L. Suhrbier: Entwicklung <strong>eines</strong> Benutzerszenarios für sichere Email, Technische<br />

Universität Berlin, 1999<br />

Spektrum der Wissenschaft Dossier 4/2001: Kryptographie<br />

84


ANHANG<br />

[VEST01]<br />

[VOUC97]<br />

[ZIMM99]<br />

T. Vest: Design <strong>und</strong> <strong>Implementierung</strong> <strong>eines</strong> Crypto Service Providers zur Anbindung<br />

der Java Cryptographic Architecture an das Windows CryptoAPI am<br />

Beispiel der CDC-Provider, Technische Universität Darmstadt, 2001<br />

M. Voucko: Kapselung von Sicherheitsfunktionalität durch kryptographische<br />

Token, Technische Universität Darmstadt, 1997<br />

P. Zimmermann, C. Creutzig, A. Buhl: PGP – Pretty Good Privacy - Der<br />

Briefumschlag für Ihre elektronische Post, FoeBuD e.V., Bielefeld, 4. Auflage,<br />

1999<br />

85


9.6 Eingesetzte Tools<br />

Dies ist eine Auflistung der zum Teil erwähnten Tools <strong>und</strong> Programmierhilfen, die zum<br />

Erstellen des praktischen Anteils der Arbeit eingesetzt wurden. Unter den URLs finden sich<br />

die Programme bzw. Informationen dazu.<br />

GUIdumpASN<br />

online: http://www.geminisecurity.com/guidumpasn.html<br />

modutil<br />

online: http://www.mozilla.org/projects/security/pki/pkcs11/netscape/pk11test.html<br />

CVS<br />

online: http://www.cvshome.org/<br />

Visual C++<br />

online: http://msdn.microsoft.com/visualc/<br />

cygwin<br />

online: http://www.cygwin.com/<br />

make<br />

online: http://www.gnu.org/manual/make/html_node/make_toc.html<br />

Visio Professional<br />

online: http://www.microsoft.com/office/visio/<br />

TaskInfo2000<br />

online: http://www.iarsn.com/<br />

86

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!