Entwurf und prototypische Implementierung eines sicheren E-Mail ...
Entwurf und prototypische Implementierung eines sicheren E-Mail ...
Entwurf und prototypische Implementierung eines sicheren E-Mail ...
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