Home
Entwurf und Implementierung eines OpenPGP-Clients
Contents
1. 58 6 5 2 Nachrichtenverarbeitung 4 2 eo a ea a ara 61 6 5 3 Schl sselerzeugung zu 2 amp oe oe ee ee oe bs arena ae 67 6 5 4 Schl sselspeicherung 2 ss 4 an en Gea hen 67 6 5 5 Schl sselimport export za fake 71 6 5 6 Vertrauensmodelle 2 2 aa a 73 6 6 OpenPGP Client Benutzeroberfl che UI oaoa aa 73 6 6 1 Aufbau des Hauptfensters 1 22 ana rn ara ar 73 6 6 2 Individuelle Anpassung der Eclipse Oberflache 77 6 6 3 Darstellung der Hauptfunktionen 24 80 6 6 4 Benutzereinstellungen 2 2 Corn nn 83 Owe Benutzerhandbuch gt gt ae adie a a a ate 84 6 8 Internationalisierung are ta rer 85 6 9 Fehlerprotokollierung ae ooo aaa a 86 7 Zusammenfassung 90 Literaturverzeichnis 91 vi Abbildungsverzeichnis 2 4 2 2 3 1 3 2 3 3 3 4 3 5 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 5 1 5 2 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 6 10 6 11 6 12 6 13 Ver und Entschl sselung einer Nachricht Signaturerzeugung und Verifikation eines Dokuments Beispiel eines Vertrauensbaums 2 00000 eee Komponenten einer hierarchischen Public Key Infrastruktur Beispiel f r ein einfaches Vertrauensnetz 2004 Beispielgraph mit einem Pfad der L nge 3 2 2 2 222 nn nen Darstellung eines Vertrauensnetzes als probabilistischer Graph Struktur einer OpenPGP Nachricht ar 2
2. 2 11 3 2 Netz des Vertrauens Web of Trust 4 eno 6 84 Ss Oa he ee 14 3 2 1 Direkte Validierung u 2 2 ih deem ek Gon th Ee oh A ean 15 3 2 2 Validierung ber das Netz des Vertrauens 16 3 3 Probabilistisches Vertrauensmodell 2 2 22 202m 18 4 OpenPGP Nachrichten Format 22 4 1 Aufbau von OpenPGP Nachrichten 2 22 22 nennen 23 4 1 1 Pakete im alten Format Old Format Packets 24 4 1 2 Pakete im neuen Format New Format Packets 25 4 1 3 Bakeltypen 4 ara ungut ee ee 27 4 1 4 Nachriehtentypen 2 205 aus 2218 2222 amp al ae a 34 4 2 OpenPGP Schl ssel ar fig ele ta ae re EY 36 4 3 Radix 64 Konvertierung 3 22 geek ark 2 Ban bok a Ba wR an 36 4 4 Klartext Signaturen ra Er De ee ee 41 5 Eclipse Platform 42 5 1 Eclipse Platform Architektur a 0 2 Han a 42 5 2 Eclipse Benutzeroberfl che Eclipse UI oo a a a 46 5 8 Plugin Architektur e adn eie anie aber doen es A eaaa are BOM 48 5 4 Eclipse Rich Client Platform 2 4 acho Sos a le a 50 6 Design und Implementierung des OpenPGP Clients 52 Inhaltsverzeichnis 6 1 Motivation f r die Verwendung der Eclipse RCP Platform 52 6 2 Entwicklungsumgebung eat ee le ee nee et 53 6 3 bersicht OpenPGP Client Plug ins 224 en da rer 53 6 4 Analyse der bestehenden OpenPGP Bibliothek 2 2 2 2 0 54 6 5 Neuentwicklung der OpenPGP Bibliothek 57 6 5 1 Verwaltung der Algorithmen
3. interface L DAOFactory E ITransferableKeyDAO ET APACHE_DERBY getAliPublickeys DAoFactory getalisecretkeysQ 8 getDAoFactory getMaxiag 4 getTransterableKeyDAOQ getPublickey getPublickeys getSecretkey yetSecretKeys saveTransferableKey DerbyDAOFactory ET CONNECTION_INFO 18 DATABASE EI DRIVER H DerbyTransferableKeyDAO getConnection EI NO_KEY_REFERENCE 8 getTransferableKeyDAOO DerbyTransferableKeyDAO getaliPublickeys getallSecretkeys getMaxidg getPublickey 3 getPublickeys getSecrethey yetSecretkeysl preparePublickeyStmt prepareSignaturestmt saveTransterableKkey storePublickeyPacket storeSecretkeyPacket Abbildung 6 6 Hierarchie der Datenbank Klassen Das Datenbankschema wird in der Datei DB_SCHEMA txt beschrieben Die einzelnen Tabellen werden im Folgenden erl utert PUBLIC_KEYS Die Tabelle f r die Speicherung der ffentlichen Haupt und Unterschl ssel Die ffentli chen Schl ssel selbst werden als BLOB abgelegt Die maximale Gr e eines Schl ssels ist momentan auf 8KB beschr nkt Ein Subschl ssel referenziert einen Hauptschl ssel ber das Attribut PARENT_ID Um die Suche nach verschiedenen Schl sselattributen zu erm glichen wurden diese in separate Spalten ausgelagert CREATE TABLE PUBLIC_KEYS ID INT NOT NULL GENERATED ALWAYS AS IDENTITY 115BLOB steht f
4. Dazu z hlen e Statustyp Der Statustyp gibt an ob es sich um eine Warnung Information Fehler etc han delt e Plug in ID Die Plug in ID ist der eindeutige Bezeichner des Plug ins welches das Statusobjekt erzeugt e Nachricht Eine Nachricht die das aufgetretene Ereignis beschreibt e Exception Wenn ein Fehler aufgetreten ist kann dem Status Objekt das zugrundeliegende Exception Objekt bergeben werden Um den Zugriff auf die ILog Schnittstelle zentral zu halten wurden die Plug in Activator Klassen de tud cdc openpgp core CorePlugin und de tud cdc openpgp UIActi vator um die folgenden Methoden erg nzt e logError String msg Exception e e logInfo String msg e logWarning String msg Diese erzeugen die Status Objekte die f r die Protokollierung notwendig sind und erm glichen somit anderen Klassen innerhalb der Plug ins einen vereinfachten Zugriff auf die Logging Funktionalit t Die generierte Protokolldatei log liegt unterhalb des In stallationsverzeichnis im Ordner metadata 139Siehe http logging apache org log4j 140Siehe http java sun com javase 6 docs api java util logging package summary html 141Siehe Fra05 87 Kapitel 6 Design und Implementierung des OpenPGP Clients Fur die Darstellung der Protokolleintrage wird der Eclipse Standard Error Log View org eclipse ui internal views log LogView verwendet der automatisch die Liste aller Eintr ge aus der Log Datei ausliest Dies ist beispielhaft
5. nderungen der Objekte reagieren um die Anzeige synchron mit den zugrundeliegenden Daten zu halten Gri02 Die Workbench wird ausf hrlicher in Abschnitt 5 2 beschrieben e Team Die Teamkomponente erlaubt die Einbindung von Werkzeugen fiir die Versionsver waltung von Projekten im Workspace Versionierungssysteme sind oft unerlaflich 69Eine bekannte Alternative im Javaumfeld ist die von Sun entworfene Swing Bibliothek die auf dem Abstract Window Toolkit AWT aufbaut 0OEine Schaltfl che in einem Linuxsystem hat beispielsweise ein anderes visuelles Erscheinungsbild als in Windows Dabei handelt es sich um Entit ten die f r die Abbildung der Gesch ftslogik innerhalb einer Anwen dung verwendet werden Im OpenPGP Client w re ein solches Objekt beispielsweise eine Klasse die einen transferierbaren Schl ssel repr sentiert 45 Kapitel 5 Eclipse Platform f r die Arbeit in gr eren Projekten mit einer Vielzahl von Mitarbeitern insbe sondere wenn mehrere Personen gleichzeitig denselben Quellcode bearbeiten Die popul rsten Vertreter sind CVS und SVN Standardm ig unterst tzt Eclip se CVS Eine Integration von SVN ist beispielsweise ber die Subclipse Plugins m glich e Help Der Eclipse Hilfe Mechanismus erm glicht Werkzeugen und Anwendungen die Ein bindung von Dokumentation und Hilfetexten wie z B API Beschreibungen oder Benutzerhandb chern in Form von sogenannten Online Books Der Inhalt ein
6. nur die englischen und deutschen bersetzungen vollst ndig sind 6 9 Fehlerprotokollierung Um w hrend der Verwendung des OpenPGP Clients auftretende Fehler Warnungen so wie allgemeine Statusinformationen im nachhinein analysieren zu k nnen werden diese in einer Datei protokolliert Dieser Vorgang wird auch als Logging bezeichnet 137Zur Zeit ist das Projekt Babel in Vorbereitung dass sich dediziert mit der Problematik der Internatio nalisierung von Eclipse Anwendungen besch ftigen soll Siehe hierzu http www eclipse org babel 138Siehe hierzu auch die Copyright Informationen in den jeweiligen Property Dateien 86 Kapitel 6 Design und Implementierung des OpenPGP Clients Der OpenPGP Client verwendet den in Eclipse integrierten Loggingmechanismus der uber die Schnittstelle org eclipse core runtime ILog angesprochen werden kann Die Verwendung von ILog bietet neben der Standard Logging Funktionalit t den Vor teil dass die Protokolleintrage in einem speziellen von Eclipse zur Verf gung gestellten View angezeigt werden k nnen siehe unten Einen Ansatz f r die Einbindung von alter nativen Logging Frameworks wie log4j oder beispielsweise das im Java Development Kit JDK integrierte Logging beschreibt der Artikel von John Franey ILog definiert die Methode log org eclipse core runtime IStatus status die ein Statusobjekt protokolliert Das Statusobjekt enth lt n here Informationen zum aufge tretenen Ereignis
7. Aus den genannten Gr nden enth lt die neue Bibliothek eine L sung die auf Datenstr men Data Streams basiert und somit prim r auf den Klassen des java io Pakets aufbaut 6 5 2 1 Eingabe Ausgabestr me Die abstrakte Superklasse aller byteorientieren Dateneingabestr me ist die Klasse Input Stream Sie definiert unter anderem Methoden um Bytes aus dem Eingabestrom zu lesen read oder z B zu berspringen skip Ein Beispiel f r eine Subklasse ist die Klasse FileInputStream die Daten aus einer Datei liest Das entsprechende Pendant zu InputStream f r ausgehende Datenstr me ist die Klasse OutputStream Sie enth lt Methoden um Daten in den Ausgabestrom zu schreiben write Die Klasse FileOut putstream beispielweise schreibt Daten in eine Datei F r zeichenorientiere character based Datenstr me k nnen Subklassen von InputReader und OutputReader verwendet werden F r die Entwicklung der Nachrichtenverarbeitung sind insbesondere die Klassen Fil terInputStream FilterOutputStream und davon abgeleitete Klassen wichtig Ein FilterInput OutputStream kapselt einen anderen Input OutputStream und f gt ihm neue Funktionalit t hinzu Dabei handelt es sich um das Decorator Pattern siehe 101Sijehe http java sun com javase 6 docs api java io InputStream html 102Siehe http java sun com javase 6 docs api java io FilterInputStream html 103Siehe http java sun com javase 6 docs api java io FilterOutputStream html 61
8. CDF 07 definierten Nach 34 Kapitel 4 OpenPGP Nachrichten Format richtentypen und beschreibt die Regeln die bei der Nachrichtenerstellung eingehalten werden m ssen Alle anderen Paketkombinationen stellen keine g ltige Nachricht dar Wie in der Abbildung ersichtlich sind die Regeln zum Teil rekursiv dass heisst eine OpenPGP Message Encrypted Data Encrypted Message ESK Sequence Encrypted Data Signed Message Signatur One Pass Signed Message Signature Packet One Pass Signature Packet nemese EET gt Com d Data Packet Compressed Message ESK Sequence ESK Sequence Symmetrically Encrypted Public Key Encrypted ntegrity Protected Data Packe Session Key Packet Encrypted Data Integrity Protected Data Packet ESK ession Symmetric Encrypted Symmetric Key Encrypted Data Packet Session Key Packet Abbildung 4 8 Syntaktische Regeln fiir die Komposition von OpenPGP Nachrichten Nachricht kann durchaus eine andere Nachricht enthalten Dadurch ist eine Verkettung der OpenPGP Basisfunktionen m glich z B um Daten erst zu signieren dann zu kom primieren und anschlie end zu verschl sseln Bei einer solchen Verschachtelung ist die innerste Nachricht immer eine Literal Message die die eigentlichen Nutzdaten wie zu signierenden Text oder eine zu verschl sselnde Graphik usw enth lt siehe Abbildung 4 9 Die rekursive Natur der Nachrichten spielt insbesondere bei der Umsetzung
9. Kapitel 6 Design und Implementierung des OpenPGP Clients FF S04 Beispielsweise stellt das JDK die Klassen DigestInputStream und Cipher InputStream f r die Berechnung eines Hashwerts bzw die Verschl sselung eingehender Daten zur Verf gung Eine OpenPGP Nachricht wird nun durch Hintereinanderschal ten verschiedener Filter verarbeitet Dies ist in Abbildung 6 3 illustriert Erw hnenswert ist dabei insbesondere dass die Nachrichtenverarbeitung in einem Durchgang One Time Pass erfolgt dass heisst sowohl beim Einlesen von Nachrichten als auch bei der Erzeu gung werden keine tempor ren Dateien ben tigt 1 Daten entschl sseln 2 Daten dekomprimieren k Daten gt Cipherinputstream f InflaterInputStream OpenPGP Nachricht EncryptedData Compressed Data Literal Data Abbildung 6 3 Beispiel fiir die Verarbeitung einer OpenPGP Nachricht mit Filtern Die Klassen fiir die Eingabe Ausgabeverarbeitung liegen im Paket de tud cdc open pgp core io und werden nun kurz beschrieben e CipherInputStream CipherInputStream wird f r die Entschl sselung von Daten verwendet Der Stream wird mit einem Cipher Objekt initialisiert Die Notwendigkeit diese Klasse zu schreiben ergab sich aus einem Problem mit der Java CipherInputStream Implementation Die darin enthaltene read byte b int off int len Me thode blockiert ggf bis neue Daten vorhanden sind und liefert eventuell nicht alle angeforderten Daten in dem Array zur
10. WorkbenchPartReference getPart WorkbenchPartReferenc at org eclipse ui internal PartPane setVisible PartPane java 299 at org eclipse ui internal ViewPane setVisible ViewPane java 531 at org eclipse ui internal presentations PresentablePart setVisible PresentablePart jz at de tud cdc openpgp presentation OpenPGPClientPartPresentation selectPart Op _ MM N Session Daten eclipse buildlId unknown u r 4 gt Abbildung 6 13 Details eines Fehlerprotokoll Eintrags 89 Kapitel 7 Zusammenfassung Im Rahmen dieser Arbeit wurde das Design und die prototypische Implementierung ei nes OpenPGP Clients unter Verwendung von Java und dem Eclipse RCP Framework dargestellt Die entstandene Software basiert auf einer unvollstandigen am Fachgebiet erstellten OpenPGP Bibliothek die im Zuge der Entwicklung um zahlreiche Funktionen siehe Kapitel 6 erweitert wurde Die erstellte Losung ist aufgrund der hochgradig flexiblen Eclipse Architektur leicht er weiterbar Das bestehende UI Plug in lasst sich um neue Aktionen Sichten oder Editoren etc erg nzen die Modifikationen und Erweiterungen der OpenPGP Implementierung reflektieren und automatisch per Extension Mechanismus in die RCP Anwendung inte griert werden Gegebenfalls k nnen auch neue Plugins erstellt werden die die Anwen dung um zus tzliche Funktionalit t bereichern und nach Bedarf im laufenden Betrieb der Anwendung ber den Update Mechanismus nachin
11. llt werden Allgemeine Probleme Neben den bereits dargestellten Problemen wirkt die Bibliothek insgesamt unfertig so machen einige Programmierfehler z B null Pointer Exceptions beim Signieren Verifizieren von Daten die zur Verf gung stehende Funktionalit t nur eingeschr nkt nutzbar An vielen Stellen finden sich if then else Anweisungen die zwischen ver schiedenen konkreten Objekttypen unterscheiden Dies soll durch die Verwendung von Design Patterns und dem Einf hren von abstrakten Klassen bzw Interfaces umgangen werden Zudem sind die Verantwortlichkeiten der jeweiligen Klassen nicht immer eindeu tig definiert Die Klasse OpenPGPHelper beispielsweise ist eine Allzweckklasse die eine Vielzahl von Aufgaben erf llt Sinnvoller w re es die Funktionalit t auf verschiedene Klassen aufzuteilen Als Fazit l sst sich zusammenfassen dass die oben aufgef hrten Punkte eine Neuimple mentierung der OpenPGP Bibliothek rechtfertigen Die beschriebenen Probleme sollen dabei behoben bzw fehlende Funktionalit t erg nzt werden Eine vollst ndige Imple mentierung des OpenPGP Standards ist aufgrund der zeitlichen Begrenzung und der zus tzlichen Entwicklung der Benutzeroberfl che nicht m glich Daher liegt der Schwer punkt der Neuentwicklung auf der Erzeugung einer m glichst stabilen Codebasis die dann in Folgeprojekten zu einer vollst ndigen Umsetzung erweitert werden kann 6 5 Neuentwicklung der OpenPGP Bibliothek Die neue OpenPGP
12. r Binary Large Object ein Objekt in dem gro e bin re Daten gespeichert werden 68 Kapitel 6 Design und Implementierung des OpenPGP Clients CONSTRAINT PUBLIC_KEYS_PK PRIMARY KEY KEY_ID VARCHAR 16 NOT NULL FINGERPRINT VARCHAR 40 NOT NULL VERSION INT NOT NULL ALGORITHM INT NOT NULL KEY SIZE INT NOT NULL CREATION DATE TIMESTAMP NOT NULL EXPIRATION DATE TIMESTAMP PARENT ID INT PUBLIC_KEY BLOB 8K NOT NULL J SECRET KEYS Die Tabelle speichert die verschl sselten Daten von privaten Haupt oder Unterschl sseln Jeder private Schl ssel muss einen ffentlichen Schl ssel aus der PUBLIC KEY S Tabelle referenzieren Analog zum obigen Fall werden die privaten Schl ssel in BLOBs der ma ximalen Gr e von 8KB abgelegt CREATE TABLE SECRET_KEYS ID INT NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT SECRET KEYS PK PRIMARY KEY PUBLIC_KEYID INT NOT NULL SECRET_KEY_DATA BLOB 8K NOT NULL REVOCATION_SIGNATURES Diese Tabelle speichert die zu einem ffentlichen Schl ssel geh renden Widerruf Signaturen Der zugeh rige Schl ssel wird ber eine ID referenziert Die maximale Gr e einer Widerruf Signatur ist 8KB CREATE TABLE REVOCATION_SIGNATURES ID INT NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT REVOCATION SIGNATURES PK PRIMARY KEY PUBLIC_KEY ID INT NOT NULL REVOCATION SIGNATURE BLOB 8K NOT NULL DIRECT SIGNATURES Die Tabelle speichert die zu einem ffentlichen Schl ssel geh rende
13. werten Diese Werte werden daher noch nicht konkret in der Anwendung genutzt Damit der OpenPGP Client m glichst einfach um alternative Vertrauensmodelle wie z B das Probabilistische Modell siehe Kapitel 3 3 erweitert werden kann und eine dy namische Zuweisung eines Vertrauensmodells zur Laufzeit m glich ist wird wie schon bei der Umsetzung der Algorithmen Objekte das Strategy Pattern verwendet Jede Klasse die ein Vertrauensmodell repr sentiert muss das Interface de tud cdc open pgp core trust ITrustModel und die darin definierte Methode void computeKey Validity List lt ITransferableKey gt publicKeys implementieren die eine Berechnung der G ltigkeitswerte f r die bergebene Schl sselliste auf Basis des jeweiligen Vertrau ensmodells durchf hrt siehe Abbildung 6 716 6 6 OpenPGP Client Benutzeroberfl che UI Das Plug in de tud cdc openpgp ui implementiert die Benutzeroberfl che des Open PGP Clients und definiert mit der Klasse Application den Einstiegspunkt in die An wendung die beim Start von Eclipse aufgerufen wird Zus tzlich enth lt es in der Datei openpgp product die Produktdefinition siehe Kapitel 5 4 des OpenPGP Clients Dort werden unter anderem die Brandinginformationen wie Splash Screen About Dialog etc konfiguriert Aufgrund der umfangreichen nderungen an der OpenPGP Bibliothek wer den in der Oberfl che momentan nur einige Basisfunktionen unterst tzt Die verschie denen Teilbereiche des UI
14. 2005 konnten jedoch erfolgreiche Kollisionsangriffe gegen SHA 1 durchgef hrt werden die die Sicherheit des Verfahrens langfristig in Frage stellen Alternativen sind beispielsweise RIPEMD 160 oder die SHA 2 8 Familie SHA 224 SHA 256 SHA 384 und SHA 512 deren Algorith men auf SHA 1 basieren aber Hashwerte gr erer Bitl nge erzeugen 2 3 Digitale Signaturen Digitale Signaturen sollen die Eigenschaften gew hnlicher handschriftlicher Unterschrif ten auf elektronische Medien bertragen Eck04 beschreibt die folgenden Funktionen einer herk mmlichen Unterschrift e Identifikation Eine identifizierbare Unterschrift gibt Auskunft ber die Person des Unterzeich ners Eck04 e Echtheit Die Echtheit einer Unterschrift bezeugt dass das Dokument dem Austeller vor gelegen hat und von ihm anerkannt wurde Eck04 e Abschluss Der Abschluss einer Unterschrift erkl rt den Text f r inhaltlich richtig und voll st ndig Eck04 e Warnung Die Warnung einer Unterschrift besagt dass durch die Notwendigkeit dass eine Unterschrift geleistet werden muss dem Verfasser die rechtliche Bedeutung des Dokuments aufgezeigt wird Eck04 Ziel von digitalen Signaturen ist es daher die Authentizit t Integrit t und Nicht Ab streitbarkeit von elektronischen Dokumenten zu garantieren Wie in der Einleitung be reits erl utert ist dies zum Beispiel f r den Abschluss von digitalen Vertr gen von gro er
15. 6 MLO5 NW04 Sch06 Sha03 SMO2 WT98 Literaturverzeichnis KEHN DAN SCOTT FAIRBROTHER und CAM THU LE How to Inter nationalize your Eclipse Plug In http www eclipse org articles Article Internationalization how2118n html August 2002 KNUDSEN JONATHAN Java Cryptography O Reilly Mai 1998 MOREIRA JORGE CASTI EIRA und PATRICK GUY FARRELL Essentials of Error Control Coding Wiley 2006 McAFFER JEFF und JEAN MICHEL LEMIEUX Eclipse Rich Client Plat form Designing Coding and Packaging Java Applications Addison Wesley Oktober 2005 NORTHOVER STEVE und MIKE WILSON SWT The Standard Widget Tool kit Volume 1 Addison Wesley Juni 2004 SCHNEIER BRUCE Angewandte Kryptographie Pearson Studium 2006 SHAW DAVID The OpenPGP HTTP Keyserver Protocol HKP http ietfreport isoc org all ids draft shaw openpgp hkp 00 txt 2003 SUN MICROSYSTEMS INC Core J2EE Patterns Data Access Ob ject http java sun com blueprints corej2eepatterns Patterns DataAccessObject html 2002 WHITTEN ALMA und J D TYGAR Usability of Security A Case Study Technischer Bericht Carnegie Mellon University School of Computer Science Dezember 1998 93
16. Bibliothek mit allen zugeh rigen Klassen befindet sich im Plug in de tud cdc openpgp core siehe Abbildung 6 1 und umfasst neben der Teilumset zung des OpenPGP Standards eine Datenbank zur Speicherung von asymmetrischen 57 Kapitel 6 Design und Implementierung des OpenPGP Clients Schl sseln Methoden f r die Erzeugung den Import und Export von Schl sseln eine Implementation des Web of Trust sowie zahlreiche Hilfsklassen Sie basiert wie auch die Vorg ngerversion auf den Klassen der Java Cryptography Architecture JCA Die JCA ist Teil des Java Development Kits JDK und stellt die kryptographischen Grund funktionen wie Verschl sselung Signieren und Hashberechnung sowie die M glichkeit der Schl sselerzeugung zur Verf gung Hierf r sind insbesondere die Klassen aus den Paketen javax crypto und java security des JDK von Bedeutung Da die Standardimplementation der JCA nicht alle im OpenPGP Format beschriebe nen Algorithmen unterst tzt wurde zus tzlich das an der TU Darmstadt entwickelte FlexiProvider Toolkit in die OpenPGP Bibliothek integriert Im Folgenden werden die i de tud cdc openpgp core 58 src 53 de 53 tud amp cde E openpgp SB core 8 algorithm datatype 3 db Bio SH message 8 packet HH s2k trust user 8 util Abbildung 6 1 Plug in Struktur der OpenPGP Bibliothek verschiedenen Bereiche der Bibliothek ausf hrlich dargestellt 6 5 1 Verwaltung der Algorithmen Wie in Kapi
17. E Ep k K ist eine Familie von Funktionen Ep P C Ihre Elemente hei en Verschl sselungsfunktionen 5 D Dp k K ist eine Familie von Funktionen Dy C P Ihre Elemente hei en Entschl sselungsfunktionen 6 F r jedes e K gibt es ein d K so dass f r alle p P die Gleichung Da Ee p p gilt Ein Kryptosystem besteht also aus einem Algorithmus der die Ver und Entschl sse lungsfunktionen bestimmt einschlie lich aller m glichen Klartexte Chiffretexte und Schl ssel Sch06 Man unterscheidet im Allgemeinen zwischen symmetrischen oder Private Key Verfahren und asymmetrischen oder Public Key Verfahren Bei symmetrischen Algorithmen sind Ver und Entschl sselungsschl ssel oft identisch bzw der Dechiffrierschl ssel l t sich leicht aus dem Chiffrierschl ssel berechnen Aus diesem Grund muss der verwendete Schl ssel geheimgehalten und vor der Kommunikation ber eine sichere Leitung zwischen den Teilnehmern ausgetauscht werden F r n Teilnehmer m ssen dabei nx ned Schl ssel geheim ausgetauscht werden Buc03 Bei einer gro en Anzahl von Teilnehmern wird dieser Ansatz somit zunehmend weniger praktikabel Symmetrische Verfahren lassen sich in die Kategorien der Stromchiffren und Blockchif fren unterteilen Stromchiffren verarbeiten die Daten bit oder byteorientiert w hrend Blockchiffren die Daten in gr eren Bit Bl cken verarbeiten die Standard Blockgr e bei vielen Algo
18. Factory Method Pattern FFS04 nutzt 6 5 2 4 Nachrichtenerstellung Die Erzeugung von Nachrichten erfolgt mittels der Klasse MessageCreator die ana log zu der im vorherigen Abschnitt beschriebenen Klasse MessageParser funktioniert Der MessageCreator wird ber die boolschen Variablen sign compress encrypt asciiArmored und combineLiteralMessages gesteuert Die ersten drei Variablen geben an ob Daten signiert komprimiert und verschl sselt werden sollen Die asciiArmored Variable bestimmt ob die Daten Radix64 kodiert werden und combineLiteralMes sages gibt an ob die verarbeiteten Dateien in einer Zieldatei zusammengefasst werden Die Klasse definiert die Methoden createSymmetricallyEncryptedMessages create SignedMessages createCompressedMessages und createPublicKeyEncryptedMes sages die f r die Erzeugung der entsprechenden OpenPGP Nachrichten verantwortlich sind Intern rufen die Methoden die Funktion createMessages auf die auf einer Menge von Quelldateien arbeitet und den folgenden rekursiven Algorithmus f r die Nachrich tenerstellung verwendet 1 Pr fe ob alle bearbeiteten Dateien in eine Zieldatei oder in mehrere Dateien ge schrieben werden 2 Erzeuge ggf die Zielordnerstruktur 3 Erzeuge anhand der aktuellen Einstellungen der Statusvariablen und des zuletzt verarbeiteten Nachrichtentyps die n chste Nachricht 4 Schreibe die Nachricht 5 Rekursiver Aufruf von Schritt 3 6 5 2 5 OpenPGP Pakete Die f r
19. G ltig bis P WACBOT5EA DSA 1024 07 06 2000 gt Ox2FDB5FO4 DSA 1024 26 07 1999 gt gt 0x3309A0F2 DSA 1024 06 02 2000 4 gt 03B1B01F6 DSA 1024 19 04 2000 testme lt testme gt 19 04 2000 P OBESFCE8D DSA 1024 19 07 1998 0x60BA33BF DSA 1024 27 06 2000 0x7C8F93D3 RSA 2048 27 06 2000 gt 0 8E426633 DSA 1024 11 03 1999 gt 095854C1D RSA 1024 12 07 1999 gt 0xA5D2F416 DSA 1024 21 08 2003 gt 0xC5DADEOG DSA 1024 26 05 2000 I 0xD2281C3C DSA 1024 24 10 2003 r C Alles selektieren deselektieren Abbildung 6 10 Schl sselimport ber einen Schl sselserver 6 6 3 7 Schl ssel exportieren Die Benutzeroberfl che unterst tzt bis dato nur den Export von Schl sseln in eine Datei Der Anwender kann aus einer Liste die zu exportierenden Schl ssel sowie das Dateiaus gabeformat bin r oder ascii armored und den Speicherort w hlen 6 6 3 8 Sprachauswahl Momentan stehen die in der Benutzeroberfl che angezeigten Text in deutscher und eng lischer Sprache zur Verf gung Eine Auswahl berschreibt die aktuelle Sprach Benut zerpr ferenz siehe n chster Abschnitt und startet die Anwendung neu damit die nde rungen wirksam werden 6 6 4 Benutzereinstellungen Eclipse erlaubt die Speicherung von Benutzereinstellungen ber mehrere Sitzungen hin weg Diese werden in einem sogenannten PreferenceStore in der Datei metadata pl ugins org eclipse core runtime settings de tud cdc openpgp ui prefs gespei 83 K
20. JOHN Universal Logger Plug ins for RCP Applications http www eclipsezone com articles franey logging source archives Dezember 2005 GALLARDO DAVID und CHRIS ANISZCZYK Get started with the Eclipse Platform http www ibm com developerworks opensource library os eclipse platform S _TACT 105AGX59 amp S _CMP GR amp ca dgr eclipse 1 Juli 2007 GARFINKEL SIMON PGP Pretty Good Privacy Verschl sselung von E Mail O Reilly International Thompson Verlag 1996 GAMMA ERICH und KENT BECK Contributing to Eclipse Principles Pat terns and Plug Ins Addison Wesley 2003 GAMMA ERICH RICHARD HELM und RALPH E JOHNSON Entwurfs muster Elemente wiederverwendbarer objektorientierter Software Addison Wesley Juli 2004 GLOZIC DEJAN Eclipse Forms Rich UI for the Rich Client http www eclipse org articles Article Forms article html 2005 GRINDSTAFF CHRIS How to use the JFace Tree Viewer http www eclipse org articles Article TreeViewer TreeViewerArticle htm 2002 IBM Eclipse Platform Technical Overview http www eclipse org articles Whitepaper Platform 3 1 eclipse platform whitepaper pdf 2006 JONCZY JACEK MARKUS WUTHRICH und ROLF HAENNI A Probabilistic Trust Model for GnuPG www iam unibe ch jonczy papers JWH06 pdf 2006 KEHN DAN How to Test Your Internationalized Eclipse Plug In http wiw eclipse org articles Article TVT how2Test118n html August 2002 92 KFLO2 Knu98 MFO
21. Kapitel 3 Public Key Infrastrukturen Im Folgenden wird die Umsetzung des Web of Trust in PGP beschrieben Dazu m ssen jedoch zun chst einige PGP Grundbegriffe eingef hrt werden Eine ausf hrliche Be schreibung des PGP Formats findet sich in Kapitel 4 Jeder PGP Nutzer besitzt ein oder mehrere asymmetrische Schl sselpaare key pairs bestehend aus jeweils einem privaten und ffentlichen Schl ssel PGP speichert diese Schl sselpaare intern in zwei Schl sselbunden key rings Die eigenen und von anderen Teilnehmern importierten ffentlichen Schl ssel werden in einem ffentlichen Schl ssel bund public key ring gespeichert die privaten Schl ssel in einem geheimen Schl ssel bund secret key ring Der Zugriff auf den geheimen Schl sselbund wird durch den Einsatz von Passphrasen und symmetrischer Verschl sselung beschr nkt Schl ssel wer den ber eine 64 Bit Zahl die Schl sselidentit t key id oder ber einen Fingerab druck fingerprint identifiziert Der Fingerabdruck ist ein mit SHA 1 berechneter 160 Bit Hashwert ber den ffentlichen Schl ssel Der Besitzer eines Schl sselpaars wird ber eine oder mehrere Benutzeridentit ten user id beschrieben F r gew hnlich be steht eine Benutzeridentit t aus einem Namen und einer E Mail Adresse in der Form Name lt vor nachname domain tld gt Es muss jedoch beachtet werden dass sowohl die Schl sselidentit ten als auch die Benutzeridentit ten global nicht einde
22. Klasse ApplicationWorkbenchWindowAdvisor Im Standardfall generiert die Me thode die Men Werkzeug Perspektiv und Schnellansichtsleiste fast view bar die Statuszeile sowie einen Bereich f r eine Fortschrittsanzeige Die Perspektivleiste erlaubt die Auswahl der aktiv verwendeten Perspektive Die Schnellansichtsleiste stellt einen View in minimierter Form repr sentiert durch ein Icon dar so dass der View jeder zeit ber die Leiste ge ffnet werden kann Um nun die Werkzeugleiste durch ein eigenes Design zu ersetzen wurde die createWindowContents Methode berschrieben Die dar aus resultierende Fensterstruktur besteht aus der Men leiste einem Banner dass die angepasste Werkzeugleiste sowie mehrere Hintergrundgraphiken enth lt und dem Sei tenbereich in dem Views Editoren etc angezeigt werden k nnen siehe hierzu auch Abschnitt 6 6 1 Die Werkzeugleiste erlaubt den Zugriff auf die Hauptfunktionen sie he Abschnitte 6 6 1 und 6 6 3 des OpenPGP Clients Um den Fokus des Anwenders auf diese Funktionen zu richten werden sie durch extra gro e Icons repr sentiert Die Werkzeugleiste ist in Abbildung 6 9 dargestellt Es ist zu beachten dass aufgrund eines zur Zeit noch offenen Fehlers in Eclipse die Perspektiv und Schnellansichtsleiste sowie die Fortschrittsanzeige beim berschreiben der createWindowContents Methode nicht erzeugt werden k nnen F r den Fall dass diese Komponenten ben tigt werden muss auf das Standa
23. PGP Vertrauensstufen durch die folgenden Wahrscheinlichkeiten abgebil 30 Weitere in Col87 beschriebene Probleme sind z B das k Terminal und das All Terminal Reliability Problem bei denen es um die Wahrscheinlichkeit der Konnektivit t zwischen k beziehungsweise allen Knoten eines Netzwerks geht 3 Die Wahrscheinlichkeiten f r die einzelnen Knoten werden im probabilistischen Modell im Vergleich zum vorgestellten probabilistischen Graphen in negierter Form angegeben 20 Kapitel 3 Public Key Infrastrukturen 0 9 Quelles we M Terminal t N 0 1 0 6 Abbildung 3 5 Darstellung eines Vertrauensnetzes als probabilistischer Graph det e Vollstandiges Vertrauen 0 9 e Kaum Vertrauen 0 5 0 6 e Kein Vertrauen 0 1 Angenommen Alice m chte Carls Schl ssel validieren Im probabilistischen Modell wird nun die 2 Terminal Verl lichkeit als Ma f r die G ltigkeit von Carls Schl ssel heran gezogen Die berechnete Wahrscheinlichkeit wird mit einem von Alice im Allgemeinem vom Besitzer des Schl sselrings vergebenen G ltigkeits Schwellenwert validity thres hold A 0 1 verglichen Liegt die Wahrscheinlichkeit oberhalb dieses Schwellenwerts wird der Schl ssel als g ltig betrachtet andernfalls als ung ltig Existiert im Netzwerk kein Pfad zwischen Alice und Carl kann keine Aussage ber die G ltigkeit von Carls Schl ssel getroffen werden da die Netzwerkverl lichkeit in diesem Fal
24. Platform bietet prim r die Kernfunktionen und dienste um eine IDE zu entwickeln IBM06 Sie ist modular aufgebaut und besteht aus einer Vielzahl von ein zelnen Komponenten den sogenannten Plug ins Auf Basis dieser Komponenten k nnen neue Anwendungen erstellt werden die die Basisfunktionalit t der Platform erweitern Das Spektrum reicht dabei von einfachen integrierten Werkzeugen Tools bis hin zu komplexen Applikationen wie den Java Development Tools JDT die eine komplette Java Entwicklungsumgebung implementieren oder der Plug in Entwicklungsumgebung PDE Plug in Development Environment mit deren Hilfe neue Plug ins erstellt werden konnen Ein wichtiger Vorteil der modularen Struktur ist die flexible Integration von Komponenten Durch die Aggregation bzw Integration von Plug ins kann einer Anwen dung auf einfache Art und Weise neue Funktionalit t hinzugef gt werden Die Platt form ist zudem sehr generisch konzipiert dass hei t obwohl Plug ins prinzipiell in Java geschrieben werden ist es durchaus m glich Entwicklungsumgebungen f r andere Pro grammiersprachen oder generell f r andere Bereiche der Softwareentwicklung zu imple 58IDE steht f r den englischen Begriff Integrated Development Environment 59IBM steht f r International Business Machines Corporation und ist eines der gr ten Unternehmen im Bereich der IT Siehe auch http www ibm com 60Sjehe auch http www eclipse org legal epl v10 html 61Die Eclipse P
25. T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 12 M 29 d 46 u 63 13 N 30 e 47 v 14 O 31 f 48 w F ll 15 P 32 g 49 X 16 Q 33 h 50 y Tabelle 4 2 Base64 Umsetzungstabelle Quelle CDF 07 Konvertierungsprozesses ber die Eingangsdaten berechnet Es handelt sich dabei um eine zyklische Redundanzpr fung cyclic redundancy check CRC Da die Priifsumme selbst Base64 kodiert wird verwendet OpenPGP eine 24 Bit Pr fsumme CRC 24 da diese dann ohne F llbytes auf vier ASCII Zeichen abgebildet werden kann Sie wird zu sammen mit einem vorangehenden in die Folgezeile nach den kodierten Eingangsdaten 6CRC Verfahren basieren auf Polynomdivision Der Eingabestrom wird dabei als Polynom aufgefasst welcher modulo durch ein vordefiniertes Generatorpolynom generator polynom geteilt wird Der briggebliebe Rest bildet dann die Pr fsumme die beim Empf nger der Daten auf Korrektheit validiert werden kann CRC 24 bildet beispielsweise auf eine 24 Bit Pr fsumme ab F r Details siehe auch MF06 38 Kapitel 4 OpenPGP Nachrichten Format geschrieben Die Konvertierung des Textes Ein Beispiel f r Radix 64 Konvertierung liefert beispiels weise folgendes Ergebnis RWluIEJlaxXNwaWVsIGbDvHI gUmFkaXgtNjQtS29udmVydGllcnVuZw Jii9 OpenPGP stellt den Radix 64
26. TABLE USER_ATTRIBUTES ADD CONSTRAINT USER_ATTRIBUTES PUBLIC_KEY FK Foreign Key PUBLIC_KEY ID REFERENCES PUBLIC_KEYS ID ON DELETE CASCADE ON UPDATE RESTRICT Erzeugen der Indizes Eine Reihe von Indizes die die Suche nach ffentlichen Schl sseln beschleunigen CREATE INDEX KEYS ID_IDX ON PUBLIC KEYS ID CREATE INDEX KEY_ID_IDX ON PUBLIC_KEYS KEY ID CREATE INDEX FINGERPRINT IDX ON PUBLIC_KEYS FINGERPRINT CREATE INDEX USER _ID_IDX ON USER_IDS USER ID 6 5 5 Schl sselimport export Schl ssel k nnen entweder aus einer Datei oder von einem Schl sselserver importiert bzw in eine Datei oder auf einen Schl sselserver exportiert werden Die verschiedenen M glichkeiten werden im Folgenden beschrieben Schl sselimport aus einer Datei Da ein transferierbarer Schl ssel das IMessage Interface implementiert kann er einfach mit Hilfe des MessageParsers siehe Abschnitt 6 5 2 3 eingelesen werden Hierf r steht die Methode processKeys String sourceFile zur Verf gung die als Parameter den Namen der Datei erwartet in der sich die Schl ssel befinden Sie unterst tzt die Verar beitung von privaten und ffentlichen Schl sseln Die eingelesenen Schl ssel werden f r die Weiterverarbeitung im MessageParser gespeichert 71 Kapitel 6 Design und Implementierung des OpenPGP Clients Schliisselexport in eine Datei Fiir den Export eines Schliissels wird dementsprechend die Klasse MessageCreator sie he Abschnitt 6 5 2 4 v
27. die Verarbeitung der OpenPGP Pakete relevanten Klassen liegen im Paket de tud cdc openpgp core packet Folgende Einschr nkungen liegen in der aktuellen Version der Bibliothek vor Das Signieren von Schl sseln der Version 3 ist zur Zeit nicht m glich Die Interpretation der Signaturunterpakete wurde noch nicht vollst ndig imple mentiert So werden momentan beispielsweise die Pr ferenzen f r Hash Kompressions 66 Kapitel 6 Design und Implementierung des OpenPGP Clients und symmetrischen Verschliisselungsalgorithmus sowie das Features Unterpaket ignoriert 6 5 3 Schl sselerzeugung Schl sselpaare k nnen mit der Klasse OPGPKeyPairGenerator aus dem Paket de tud cdc openpgp core key generiert werden Hierf r steht die statische Methode void generateKeyPair KeyPairTypeGenerationParameters parameters IProgressMon itor monitor zur Verf gung Das Parameterobjekt enthalt folgende Werte e Typ des Schliisselpaars Ein Objekt vom Typ KeyPairType siehe Abschnitt 6 5 1 e Schl sselgr e Die Schl sselgr e in Bit f r den Haupt und ggf f r den Unterschl ssel e Name und E Mail Adresse Diese Angaben werden f r die Erstellung des prim ren Schl sselpaars verwendet e Ablaufdatum Das Ablaufdatum des generierten Schl ssels e Passphrase Die Passphrase um den privaten Schl ssel zu verschl sseln Der IProgressMonitor wird f r die Fortschrittsanzeige in der Oberfl che verwendet siehe Abschnitt 6 6
28. einer Suche die maximale Trefferanzahl erreicht wurde Das Interface liegt im Paket de tud cdc openpgp core protocol Momentan unter st tzt die Bibliothek den Zugriff auf einen Schl sselserver ber das OpenPGP HTTP Keyserver Protocol HKP Sha03 Das Protokoll wird in der Klasse HttpKeyServer Protocol umgesetzt die IKeyServerProtocol implementiert Die maximale Trefferliste ist beim HKP momentan auf 100 Treffer beschr nkt Die Verwendung eines abstrakten Interfaces als Beschreibung f r den Zugriff auf einen Schl sselserver eignet sich f r die sp tere Einf hrung von neuen Protokollen die dann ggf zur Laufzeit ausgew hlt werden k nnen Strategy Pattern Schl sselexport zu einem Server Der Export zu einem Schl sselserver ist in der aktuellen Version nicht implementiert 72 Kapitel 6 Design und Implementierung des OpenPGP Clients 6 5 6 Vertrauensmodelle Der OpenPGP Client enth lt eine Implementierung des in Kapitel 3 2 vorgestellten Web of Trust Diese findet sich in der Klasse de tud cdc openpgp core trust Web OfTrustModel Als Standardparameter f r das Web of Trust werden die Vorgaben von GnuPG verwendet mit COMPLETES_NEEDED 1 MARGINALS_NEEDED 3 und einem maxi malen Zertifizierungspfad der L nge 5 In der aktuellen Version der Bibliothek werden die Vertrauens und G ltigkeitswerte noch nicht in der Datenbank gespeichert somit erfolgt die Berechnung der Schl sselvalidit t nur auf Basis von tempor ren Vertrauens
29. enth lt nur die Seite SignDataPage1 Der Anwender muss zun chst den Zielordner festlegen in dem die signierten Dateien abgelegt werden Danach selektiert er die zu signierenden Dateien im Dateisystem Im letzten Schritt w hlt er aus den vorhandenen privaten Schl sseln den zu verwendenden Signaturschl ssel aus und gibt die Passphrase ein welche den privaten Schl ssel entsperrt Optional kann ausgew hlt werden ob die Dateien zus tzlich komprimiert werden und welches Kompressionsverfahren daf r angewendet wird Nach Abschlie en des Wizards werden die signierten Dateien mit dem MessageCreator siehe Abschnitt 6 5 2 4 erzeugt 6 6 3 5 Daten verifizieren Wenn der Anwender die Datenverifikation ausgew hlt hat ffnet sich ein Dialog in dem die zu pr fenden OpenPGP Nachrichten im Dateisystem selektiert werden k nnen Nach einem Klick auf den Schalter OK wird die Verifikation ber den MessageParser siehe Abschnitt 6 5 2 3 durchgef hrt Ein Statusfenster informiert den Anwender ber erfolgreiche und fehlgeschlagene Pr fungen 6 6 3 6 Schl ssel importieren Schl ssel k nnen sowohl von einem Schl sselserver als auch aus einer Datei importiert werden ber die Toolbar kann der Anwender zwischen beiden Optionen w hlen F r den Fall dass der Dateiimport selektiert wurde ffnet sich ein Dialog der die Auswahl der zu importierenden Schl ssel erlaubt Best tigt der Anwender die Auswahl werden die selektierten Schl ssel ber
30. in Abbildung 6 12 zu se hen Per Doppelklick lassen sich die Details eines einzelnen Eintrags in einem separaten Fenster ffnen siehe Abbildung 6 13 Der View wird bis auf das Hinzuf gen der deut schen bersetzungen f r die Ul Elemente siehe Abschnitt 6 8 in unver nderter Form genutzt P Ereignis Protokoll 5B RXEB Filtertext eingeben Ereignis Plug in Datum a tE Session 2007 11 15 12 55 05 598 Sample error message de tud cdc openpgp core 2007 11 15 12 55 08 048 i Public keys loaded de tud cdc openpgp ui 2007 11 15 12 55 08 048 Abbildung 6 12 Darstellung von Eintr gen aus dem Fehlerprotokoll im Error Log View 88 Kapitel 6 Design und Implementierung des OpenPGP Clients Ereignis Details Vi Gee lee eects Lal amp Datum 2007 11 15 12 55 08 048 gt Einstufung Fehler Nachricht Sample error message o Fehler Details de tud cdc openpgp core OpenPGPException Sample Error Message a at de tud cdc openpgp core message MessageParser processKeys MessageParser ji at de tud cdc openpgp ui views KeysMasterDetails createMasterPart KeysMasterDe at org eclipse ui ee ee at de tud cdc openpgp ui views KeysMasterDetails createContei at de tud cdc openpgp ui views KeysView createPartControl KeysView java 42 at org eclipse ui internal ViewReference createPartHelper ViewReference java 370 at org eclipse ui internal ViewReference createPart ViewReference java 227 at org eclipse ui internal
31. kodierten Daten Metainformationen sogenannte Armor Header voran Diese werden in einzelnen Zeilen angegeben Die erste Zeile gibt Auf schluss ber den Typ der kodierten Nachricht und markiert den Beginn des Armor Header Blocks Sie wird als Armor Header Line bezeichnet und von jeder Seite von f nf Bindestrichen umgeben In den Folgezeilen stehen die Armor Header welche ggf Informationen ber den Ersteller oder Parameter welche f r die Verarbeitung der Nach richt relevant sind enthalten Sie werden in Form von Schl ssel Wert Paaren angegeben die durch einen Doppelpunkt gefolgt von einem Leerzeichen getrennt werden Danach werden die Radix 64 kodierten Daten geschrieben Abschlie end folgt eine Zeile als An hang der Armor Tail Line die wiederum durch den Nachrichtentyp bestimmt wird Die Metainformationen schlie en also die kodierte Nachricht ein Der komplette Aufbau einer Radix 64 konvertierten Nachricht ist also wie folgt CDF 07 e Armor Header Line die den Nachrichtentyp beschreibt e Mehrere Armor Header Zeilen mit Informationen tiber die Nachricht e Eine Leerzeile e Base64 kodierte Daten e CRC 24 Pr fsumme e Armor Tail Line die in Abh ngigkeit von der ersten Zeile gesetzt wird CDF 07 definiert die folgenden Armor Header Lines e BEGIN PGP MESSAGE Identifiziert verschl sselte signierte und komprimierte Nachrichten e BEGIN PGP PUBLIC KEY BLOCK Identifiziert einen ffentlichen Schl ssel e BEGIN PGP PR
32. kurzes Fazit Siehe http www eclipse org Kapitel 2 Kryptographische Grundlagen Dieses Kapitel stellt nach einer allgemeinen Einleitung in das Thema zun chst die Si cherheitsziele der modernen Kryptographie vor Im Anschluss folgt eine berblicksartige Darstellung der grundlegenden kryptographischen Konzepte die f r das Verst ndnis der in Kapitel 5 beschriebenen Implementierung der Anwendung notwendig sind Die ein zelnen Verfahren werden nicht im Detail erl utert F r weiterf hrende Informationen zu diesem Thema wird auf die Literatur verwiesen z B Buc03 Sch06 und BNS05 Die Kryptographie im klassischen Sinn war die Lehre von der Datenverschl sselung Buc03 Sie hatte prim r das Ziel die vertrauliche Kommunikation von Nachrichten bzw Speicherung von Daten zu gew hrleisten Dies wurde durch die Verwendung von Verschl sselungsverfahren erm glicht Heutzutage findet die Kryptographie in den verschiedensten Bereichen Anwendung Un ternehmen senden vertrauliche und ggf wettbewerbsrelevante Informationen f r die sich potentielle Mitbewerber interessieren k nnten ber unsichere Medien wie das Internet Sicherheitsrelevante Software muss vor der Benutzung auf Integrit t berpr ft werden um unberechtigte Modifikationen zu verhindern Beim Abschluss von digitalen Vertr gen m ssen die Vertragspartner den elektronischen Dokumenten eindeutig zuzuordnen sein Zudem muss beweisbar sein dass der Vertrag tats chlic
33. oder auch ber eine Benutzeridentit t m glich Der Signaturtyp wird ber ein Oktet im Paket identifiziert Dies ist insbesondere f r die Verifikation relevant da f r die verschiedenen Typen ggf unterschiedliche Berechnun gen durchgef hrt werden m ssen Analog zu den Schl sselpaketen siehe oben gibt es Signaturpakete in den Versionen 3 und 4 Abbildung 4 7 zeigt den Aufbau eines Si gnaturpakets der Version 4 Pakete diesen Typs k nnen neben den Basisinformationen Signaturunterpakete Signature Subpacket enthalten die die Angabe von zus tzlichen Informationen erm glichen CDF 07 Dazu z hlen unter anderem die Angabe von Si gnaturerstellungsdatum Signaturablaufdatum ID des Widerufsschl ssels f r den Fall dass die Signatur revoziert wurde etc Ein Signaturunterpaket hat wie die normalen Pakettypen auch einen Kopf header und einen K rper body Der Header kodiert die 0Sjehe http www w3 org Graphics JPEG jfif3 pdf lEine Liste aller Signaturtypen findet sich in CDF 07 Sektion 5 2 1 52F r eine Bescheibung der einzelnen Berechnungsverfahren siehe auch CDFt07 Sektion 5 2 4 53F r eine Liste aller definierte Signature Subpackets siehe CDF 07 Sektion 5 2 3 1 33 Kapitel 4 OpenPGP Nachrichten Format Paketversionsnummer Aktuell 4 1 Oktet Signaturtyp 1 Oktet Verwendeter Public Key Algorithmus 1 Oktet Verwendeter Hash Algorithmus 1 Oktet lange des folgenden Subpacket Blocks 2 Okte
34. org eclipse ui views gt lt view id de tud cdc openpgp ui views keys name keyViewTitle class de tud cdc openpgp ui views KeysView 80Dies wird als Contribution bezeichnet da dem Plug in das den Extension Point zur Verf gung stellt neue Funktionalit t hinzugef gt wird 49 Kapitel 5 Eclipse Platform icon icons keys_24x24 png gt lt extension gt Wie in dem Ausschnitt ersichtlich kann ein Extension Point f r die Erweiterung not wendige Attribute vorgeben In dem Beispiel werden neben der Kennung und der imple mentierenden Klasse auch der in der Titelleiste des Views angezeigte Name sowie das dort dargestellte Icon festgelegt Die Informationen aus MANIFEST MF und plugin xml werden von der Runtime genutzt um die Registrierung zu erstellen F r weitere Informationen wird auf IBM06 ML05 und Del06 verwiesen 5 4 Eclipse Rich Client Platform W hrend die Eclipse Platform prim r f r die Entwicklung von IDEs konzipiert wurde lassen sich mit der Rich Client Platform RCP Anwendungen f r beliebige Bereiche erstellen Der Vorteil f r Entwickler dabei ist dass Grundfunktionalit ten bereits durch die von Eclipse selbst zur Verf gung gestellten Komponenten vorhanden sind und mehr der Entwurf und die Umsetzung der Gesch ftslogik der Applikation im Vordergrund ste hen Allerdings ist der Eclipse Framework relativ komplex und es bedarf einer gewissen Einarbeitungszeit um die Zusammenh nge und Stru
35. sselt wurde Wenn zus tzlich der Sitzungsschl ssel selbst vorhanden ist so wird diesem ebenfalls ein Oktet voran gestellt welches angibt mit welchem Algorithmus das nachfolgende Datenpaket ver schl sselt wurde Dieses Oktet wird wie auch der Sitzungsschl ssel mit dem S2K ver schl sselt Sitzungsschl ssel und Daten k nnen somit unterschiedliche Algorithmen nut zen OpenPGP unterst tzt zur Zeit die Verfahren IDEA TripleDES CAST Blowfish AES und Twofish Die vollst ndige Struktur eines Symmetric Key Encrypted Session Key Packets ist in Abbildung 4 5 dargestellt Paketversionsnummer Aktuell 4 1 Oktet Symm Algorithmus fur Anwendung des 52K 1 Oktet S2K Die Anzahl der Oktets h ngt vom 52K Typ ab Symm Algorithmus f r Anwendung des Sitzungsschl ssels 1 Oktet Optionaler Sitzungsschl ssel mit S2K verschl sselt Sitzungsschl ssel Anzahl Oktets abh ngig vom verwendeten Algorithmus Abbildung 4 5 Struktur eines Symmetric Key Encrypted Session Key Packet 4 1 3 3 Schl sselmaterialpakete Key Material Packets Bevor auf die verschiedenen zugeh rigen Schl sselmaterialpakete eingegangen wird muss zun chst der Begriff des OpenPGP Schl ssels OpenPGP Key eingef hrt werden Die se werden ausf hrlich in Abschnitt 4 2 diskutiert Ein OpenPGP Schl ssel erf llt in OpenPGP die Funktion eines Zertifikats Er enth lt unter anderem ein prim res asym metrisches Schl sselpaar primary key pair und je nach Ve
36. und Zertifikatsverwaltung Die Applikation erlaubt eine einfache Schl ssel und Zertifikatsverwaltung Es k nnen neue Schl ssel generiert und bestehende Schl ssel bearbeitet werden Die Schl ssel werden durch Passw rter vor unbefugtem Zugriff gesch tzt e Internationalisierung il8n Die Anwendung soll wahlweise in deutscher oder englischer Sprache verf gbar sein e Fehlerprotokollierung Treten Fehler bei der Verwendung der Software auf sollen diese f r eine sp tere Analyse in einer Datei gespeichert werden Dieser Vorgang wird auch als Logging bezeichnet e Plattformunabh ngigkeit Die Anwendung soll sowohl unter Linux als auch unter Windows ausf hrbar sein Die OpenPGP Bibliothek stellt zum aktuellen Zeitpunkt noch keine vollst ndige Imple mentation des OpenPGP Standards dar Zudem wird der Standard in unregelm igen Abst nden aktualisiert was eine eventuelle Anpassung der Bibliothek nach sich zieht Schwerpunkt bei der Umsetzung des Clients ist daher eine flexible Software Architektur die es auf einfache Art und Weise erm glicht neue Versionen der Bibliothek zu integrie ren Dies soll durch den sinnvollen Einsatz von Design Patterns erreicht werden Die Implementation des Clients erfolgt in Java und wird als Eclipse Rich Client Platform Anwendung Eclipse RCP konzipiert 1 2 Gliederung der Arbeit Kapitel 2 erl utert die Sicherheitsziele die durch die Verwendung von kryptographischer Software erreic
37. werden im Folgenden ausf hrlich dargestellt 6 6 1 Aufbau des Hauptfensters Das Hauptfenster der Anwendung setzt sich aus folgenden Komponenten zusammen Men Das Men erlaubt den Zugriff auf die Benutzerpr ferenzen das Benutzerhandbuch des OpenPGP Clients den About Dialog sowie das Schlie en der Anwendung Die Men ein tr ge sowie die beim Klicken auf einen Men eintrag ausgef hrten Actions siehe Kapitel 116Das probabilistische Modell wird nicht unterst tzt wurde allerdings in der Rahmenklasse ProbabilisticModel f r die sp tere Entwicklung vorgesehen 73 Kapitel 6 Design und Implementierung des OpenPGP Clients interface TrustModel computeKey Validity H WebOfTrustModel H ProbabilisticModel rei COMPLETES_NEEDED re SAMPLING_TRIALS E completesNeeded E samplingTrials ra MARGINALS_NEEDED ei YALIDITY _THRESHOLD ra MAXIMUM_CERTIFICATE_PATH E validityThreshold EZ marginalsNeeded E maximumCertificatePath ProbabilisticModel ProbabilisticModell VWebOtTrustModel 8 computekeyYalidity VWebOtTrustModel getSamplingTrialsQ computeKeyValidity getValidityThreshold getCompletesNeeded setSamplingTrials gt getMarginalsNeeded setvalidityThreshold getMaximumCertificatePathi setCompletesNeeded setMarginalsNeeded es setMaximumCertificatePatht Abbildung 6 7 Vererbungshierarchie von ITrustModel 5 1 werden in den Methoden makeActions IWorkbenchWindo
38. wurden der Bibliothek neue Klassen hinzu gef gt die die verschiedenen Algorithmen Typen repr sentieren Sie liegen im Paket de tud cdc openpgp core algorithm Um eine dynamische Zuweisung der Algorithmen innerhalb der einzelnen Pakete zu erlauben folgt die Implementierung der Algorithmenobjekte dem Strategy Pattern Eine bestimmter Algorithmus mit allen zugeh rigen Eigenschaften wird durch eine Klas se vom Typ IAlgorithm oder einer Subklasse davon repr sentiert IAlgorithm ist die Basisschnittstelle aller Algorithmen Sie definiert die folgenden Grundoperationen e String getDescription Liefert die textuelle Beschreibung des JCA Algorithmusnamens e int getAlgorithm Liefert die OpenPGP ID des Algorithmus Pro Algorithmustyp gibt es ein weiteres Interface dass entweder zus tzliche Operatio nen die f r den jeweiligen Typ relevant sind hinzuf gt oder f r ein einfaches Typecasting verwendet werden kann z B ICompressionAlgorithm Die komplette Hierarchie von IAlgorithm mit den in den Interfaces definierten Methoden ist in Abbildung 6 2 darge stellt Erw hnenswert hierbei sind insbesondere die Methoden decodeJCA encode JCA und parse im Interface IPublicKeyAlgorithm die in den implementierenden Klassen f r die Verarbeitung und Konvertierung der Parameter von asymmetrischen Verfah ren verantwortlich sind Die parse Methoden werden verwendet um Schl sselpara meter in Abh ngigkeit vom Algorithmentyp f r das jew
39. zu zie hen detached view Sichten haben einen einfacheren Lebenszyklus als Editoren Alle durchgef hrten nderungen innerhalb einer Sicht werden in der Regel sofort gespeichert IBM06 Weiterhin steuert eine Sicht Aktionen nur zu einer lokalen Toolbar bzw einem lokalen Men bei Perspektive Perspective Eine Perspektive ist f r das Layout der Sichten und des Editorbereichs verantwortlich Alle Komponenten werden dabei innerhalb des Worbench Fenster relativ zueinander TTEs ist allerdings m glich innerhalb einer Perspektive die Sichtbarkeit der EditorArea zu modifizieren 47 Kapitel 5 Eclipse Platform platziert Zudem kontrolliert sie die initiale Sichtbarkeit von Views und Aktionen Pro Workbench Fenster konnen mehrere Perspektiven definiert sein die Sichten und Edito ren fiir eine bestimmte Aufgabe arrangieren z B eine Perspektive fiir Plug in Entwick lung CVS Debugging etc Es kann allerdings immer nur genau eine Perspektive aktiv sein Zur Laufzeit kann zwischen den verschiedenen Perspektiven gewechselt werden 5 3 Plug in Architektur Wie bereits in Abschnitt 5 1 beschrieben stellen Plug ins die funktionale Basiseinheit in Eclipse dar F r gew hnlich wird ein Plug in in Java geschrieben es gibt jedoch auch Plug ins die ihre Funktionalit t komplett ohne Quellcode erbringen Ein Beispiel hierf r ist ein Plug in das die XML und HTML Dateien f r ein Onlinebook enth lt welches ber die Eclipse H
40. 2 23 E22 ern Struktur des Packet Tag u Bade te bara ef ed er ae Verschiedene L ngentypen im alten Paketformat Beispiel f r eine partielle Kodierung eines Datenpakets Struktur eines Symmetric Key Encrypted Session Key Packet Struktur eines Public Key Subkey Packet der Version 4 Struktur eines Signature Packet der Version 4 Syntaktische Regeln f r die Komposition von OpenPGP Nachrichten Beispiel f r eine mehrfach verschachtelte OpenPGP Nachricht Struktur eines OpenPGP Schl ssels Version 4 Prinzip der Base64 Kodierung a aan aa eA Be we Eclipse Platform Architektur 2 22 CC mo nme Belpse Workbench oee i acu 2 0 war se ae i ee ae S Plug in Struktur der OpenPGP Bibliothek 2 2 2 2 2 2 Vererbungshierarchie von IAlgorithm Beispiel f r die Verarbeitung einer OpenPGP Nachricht mit Filtern Hierarchie der von FilterInputStream abgeleiteten Klassen Vererbungshierarchie von IMessage 2 22 onen Hierarchie der Datenbank Klassen 22 2 2 22 nn nn Vererbungshierarchie von ITrustModel 24 Aufbau des Hauptfensters coin au Sa las arena er Die Werkzeugleiste des OpenPGP Clients 2 2 22 2222 Schl sselimport ber einen Schl sselserver 22222222 Pr ferenzseiten in den Benutzereinstellungen 2 222 222 Darstellung von Eintr gen aus dem Fehlerprotokoll im Error Log View De
41. 3 1 6 5 4 Schl sselspeicherung F r die Umsetzung der Persistenzschicht gab es zwei m gliche Ans tze Die Schl ssel entweder in bin ren Dateien diesen Ansatz verfolgt GnuPG oder in einer relationalen Datenbank zu speichern Da der OpenPGP Client in einer sp teren Version eventuell um Suchfunktionen erweitert wird und die Datenbank Transaktionssicherheit bietet wurde als L sung die zweite Variante implementiert Als Datenbank kommt Apache Derby zum Einsatz die mit Java Version 6 als Java DB in das JDK integriert wurde Der OpenPGP Client verwendet Derby Version 10 3 1 Der Zugriff auf die Datenbank 109Siehe Siehe CDF 07 Sektion 5 2 3 7 5 2 3 8 und 5 2 3 9 110Siehe CDF 07 Sektion 5 2 3 24 llSiehe _ http help eclipse org help33 index jsp topic org eclipse platform doc isv reference api org eclipse core runtime IProgressMonitor html H2nttp db apache org derby 13h tp developers sun com javadb 114Die Original Derby Distribution ist meist aktueller als die Java DB Version daher wurde dieser der Vorzug gegeben 67 Kapitel 6 Design und Implementierung des OpenPGP Clients erfolgt ber die Klassen aus dem java sql Paket Das Design der Datenbank Klassen richtet sich nach dem J2EE Data Access Object Pattern welches ausf hrlich in SM02 beschrieben wird Die Hierarchie der Klassen ist in Abbildung 6 6 dargestellt Alle relevanten Klassen und Interfaces liegen im Paket de tud cdc openpgp core db
42. 8 3 93Der IV ist ein Block mit meist zuf llig generierten Daten der als Initialisierungswert f r bestimmte Modi von Blockchiffren wie z B dem CFB verwendet wird 56 Kapitel 6 Design und Implementierung des OpenPGP Clients mit ein die Verifikation ist nur f r Signaturen von Text und Bin rdaten implementiert Das Feld Signaturtyp innerhalb eines Signaturpakets wird weitestgehend ignoriert und bei Neuerzeugung von Signaturen nicht korrekt gesetzt Zudem fehlt die Umsetzung ei niger Signaturtypen wie Widerruf eines Unterschl ssels direkte Schl sselsignatur etc Die Bibliothek wird um die fehlende Funktionalit t erweitert Schl ssel Die Bibliothek verarbeitet transferierbare Schl ssel in der Version 4 Schl ssel der Ver sion 3 werden nur bedingt bis gar nicht unterst tzt In der neuen Version k nnen beide Schl sselversionen verwendet werden Einige wichtige Eigenschaften von transferierba ren Schl sseln stehen nicht zur Verf gung so fehlt beispielsweise die Berechnung von prim ren Benutzereigenschaften prim re Benutzerkennung bzw Benutzerattribut die Gr e des verwendeten Schl ssels in Bit Berechnung des Ablaufdatums anhand der Selbstzertifikate etc Beim Einlesen der Schl ssel wird keine berpr fung der Signatu ren oder des Ablaufsdatum durchgef hrt Weiterhin ist es nicht m glich einen neuen Schl ssel zu generieren stattdessen kann ein Schl sselobjekt lediglich mit bereits vor handenen Parameterwerten bef
43. Bedeutung Signaturen nutzen Public Key Kryptographie das hei t um eine Signatur zu erstellen und zu verifizieren ben tigt man wie in Abschnitt 2 1 beschrieben ein Schl sselpaar 15Siehe http www itl nist gov fipspubs fip186 htm 16Siche auch http www schneier com blog archives 2005 02 shal_broken html 17Siche http homes esat kuleuven be cosicart pdf AB 9601 AB 9601 pdf 18Siehe http csrc nist gov publications fips fips180 2 fips180 2 pdf Kapitel 2 Kryptographische Grundlagen bestehend aus einem privaten und einem ffentlichen Schl ssel Die Funktion der beiden Schl ssel wird jedoch vertauscht Angenommen Alice m chte ein Dokument d signieren Zun chst wird der Hashwert des Dokuments h d berechnet Der resultierende Wert wird mit dem privatem Schl ssel von Alice verschl sselt und als Signatur s an das Dokument angeh ngt Will nun eine dritte Partei die Signatur des Dokuments berpr fen wird erneut der Hashwert des vorliegenden Dokuments h d berechnet Mit dem ffentlichen Schl ssel von Alice wird der urspr ngliche Wert h d entschl sselt und es l t sich verifizieren ob die beiden Hashwerte bereinstimmen also h d h d gilt Ist dies der Fall ist die Signatur g ltig Dieser Prozess ist in Abbildung 2 2 dargestellt Zu den meist verwendeten Signaturalgorithmen z hlen die RSA Signatur sowie der Digi tal Signature Algorithm DSA DSA wurde 1991 vom NIST vorgeschlagen und sp ter in den DSS
44. Bei Paketen im alten Format enthalten die Bits 2 5 des Packet Tag den Pakettyp und die Bits 0 1 geben Auskunft tiber die Lange des Kopfes und implizit auch tiber die 40Ein Oktet ist ein vorzeichenloser 8 Bit Wert Der Wertebereich liegt zwischen 0 und 255 Dies ent spricht dem Datentyp eines unsigned byte 24 Kapitel 4 OpenPGP Nachrichten Format L nge des K rpers Mit diesem Format k nnen demnach nur 16 verschiedene Paket typen unterschieden werden Es wird von PGP in der Version 2 6 x genutzt und sollte nach CDF 07 nur aus Gr nden der Abw rtskompatibilit t verwendet werden Der L ngentyp bestimmt wieviele Oktets nach dem Packet Tag die L nge des Paketk rpers enthalten Da f r diese Information nur 2 Bits zur Verf gung stehen gibt es demnach vier verschiedene M glichkeiten Werte 0 bis 3 F r die Werte 0 bis 2 steht die Lange des Paketk rpers in 1 2 oder 4 Oktets Der Header hat in diesen Fall also eine Gesamtl nge von 2 3 bzw 5 Oktets Angenommen ein Paket ist vom L ngentyp 0 und das eine L ngenoktet nach dem Packet Tag enth lt den Wert 150 Dann ist der Paketk rper 150 Oktets lang und das Paket hat eine Gesamtl nge von 152 Oktets Pakete mit Langentyp 3 sind von unbestimmter L nge In diesem Fall muss die Anwendung selbst das Ende des Pakets in Abh ngigkeit vom aktuellen Kontext z B dem Erreichen des Dateiendes bestimmen CDF 07 raten von der Nutzung dieses Pakettyps ab und empfehlen Pakete definiter L ng
45. Berechnung des Hashwerts mit eingehen Bei einem Schl ssel der Version 4 ist der Fin gerabdruck der SHA1 Hashwert ber das gesamte Schl sselpaket die Schl sselidentit t sind die unteren 64 Bit des Fingerabdrucks Schl sselpakete der Version 3 gelten als ver altet CDF 07 weisen insbesondere auf folgende Schw chen bei Paketen dieser Version hin e Kollision bei Schl sselidentit ten Es ist relativ einfach einen Schl ssel zu generieren der die gleiche Schl sse lidentit t wie ein anderer Schl ssel hat da die Schl sselidentit t einfach nur die unteren 64 Bits des Public Key Modulus sind CDF 07 e Kollision bei Fingerabdr cken Da der Fingerabdruck das Schl sselmaterial aber nicht die L nge mit ein bezieht gibt es ein erh htes Risiko f r Kollisionen CDF 07 e Sicherheit von MD5 MD5 gilt nicht mehr als kollisionsresistent daher sollte diese Funktion nur mit Vorsicht verwendet werden Buc03 Secret Key Packet Secret Subkey Packet Ein Secret Key Subkey Packet besteht aus einem Public Key Subkey Packet gefolgt von den Daten des zugeh rigen privaten Schl ssels die analog zum Public Key Sub key Packet in Form von MPIs gespeichert werden Das Paket enth lt also sowohl den ffentlichen Schl ssel als auch den privaten Schl ssel eines Schl sselpaars Die Version des Pakets 3 oder 4 wie auch Schl sselidentit t und Fingerabdruck wird dabei durch die Version des en
46. CASignature encodeJCAPrivateKeyQ getDetauttkeySized decodeJCASignature getKeySizeFactor 3 getMaximumkeySize 8 getMinimumkeySizeQ parseEncryptionKeyMaterial parsePublickeyMaterial amp parseSecretKeyMaterial amp parseSignatureMaterial Abbildung 6 2 Vererbungshierarchie von IAlgorithm Die Abbildung von OpenPGP Algorithmen IDs auf Algorithmenobjekte wird zentral in der Klasse de tud cdc openpgp core algorithm CryptoAlgorithmFactory durch gef hrt Sie erf llt den Zweck einer Registrierungsklasse Registry Es ist zu beachten dass die symmetrischen Verfahren CAST5 und IDEA in der aktuellen Version der Bi bliothek nicht unterst tzt werden Der Zugriff auf ein Algorithmusobjekt mittels einer ID erfolgt dabei ber die Methoden e public static IPublicKeyAlgorithm getPublicKeyAlgorithm int algorithm e public static ISymmetricAlgorithm getSymmetricAlgorithm int algorithm e public static IHashAlgorithm getHashAlgorithm int algorithm K ompressionsalgorithmen werden separat von der Klasse CompressionAlgorithmFactory im Paket de tud cdc openpgp core packet compression verwaltet 100Dje JCA implementiert weder CAST5 noch IDEA Der FlexiProvider stellt zwar IDEA zur Verf gung aber aufgrund einer Beschr nkung bei der Verwendung des Algorith mus im CFB Modus kann dieser nicht genutzt werden Siehe hierzu auch den Quell text der Klassen de tud cdc openpgp core algorithm CryptoAlgorithmFac
47. DF 07 Die bekanntesten OpenPGP Programme sind das heute kommerziell vertriebene PGP und das unter der GNU General Public License GPL stehende GNU Privacy Guard GnuPG Im Wintersemester 2005 06 wurde am Institut fiir Kryptographie und Computeralge bra der Technischen Universitat Darmstadt im Rahmen eines Praktikums mit der Im plementierung einer OpenPGP Programm Bibliothek basierend auf dem im RFC 2440 definierten Format begonnen Die Bibliothek wurde in der Programmiersprache Java entwickelt und verwendet die Java Platform Standard Edition J2SE 1 1 Aufgabenstellung Das Ziel dieser Diplomarbeit ist der Entwurf und die prototypische Erstellung einer kryptographischen Anwendung im folgenden als OpenPGP Client bezeichnet welche die IRFC steht f r Request for Comments Dabei handelt es sich um von der IETF herausgegebene technische Dokumente Siehe auch http tools ietf org html rfc1847 und http tools ietf org html rfc2311 Siehe auch www pgp com Siehe auch http www gnupg org 5 J2SE ist verf gbar auf http java sun com javase Kapitel 1 Einleitung komfortable Nutzung der OpenPGP Bibliothek ber eine graphische Benutzeroberfl che GUI erm glicht Die Hauptfunktionen der zu erstellenden Anwendung sind e Signieren und Verschl sseln Die Anwendung soll sowohl symmetrische als auch asymmetrische Ver und Ent schl sselung sowie das Signieren und Verifizieren von Daten erm glichen e Schl ssel
48. Entwurf und Implementierung eines OpenPGP Clients Diplomarbeit von Carsten Langsfeld 27 November 2007 Technische Universitat Darmstadt Fachbereich Informatik Institut fir Kryptographie und Computeralgebra Betreuer Dr Vangelis Karatsiolis Priifer Prof Johannes Buchmann Eidesstattliche Erkl rung Hiermit versichere ich die vorliegende Diplomarbeit ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt zu haben Alle Stellen die aus den Quellen entnommen wurden sind als solche kenntlich gemacht worden Diese Arbeit hat in gleicher oder hnlicher Form noch keiner Pr fungsbeh rde vorgelegen Darmstadt 27 November 2007 Carsten L ngsfeld il Danksagung Mein ganz besonderer Dank geht an Caren Beber Eva Kunze Radostina Boneva Ste phan Pravida und Bj rn Kresse f r Korrekturlesen und mentale Unterst tzung Wei terhin m chte ich mich bei Dr Vangelis Karatsiolis f r die Betreuung dieser Arbeit bedanken ill iv Inhaltsverzeichnis Abbildungsverzeichnis vii Tabellenverzeichnis viii 1 Einleitung 1 1 Aufgabenstellung oaoa aaa EG BE BO een 1 1 2 Gliederung der Arbeit Hensel Ba 2 2 Kryptographische Grundlagen 4 2 1 Verschl sselung 0 be Gas u be a ae PE ee ee Es ee Be Be 5 2 2 Hash Funktionen 6 469 ana ea rt 8 2 3 Digitale Signaturen ae aa ee Ale Ge Ae ep ay 9 3 Public Key Infrastrukturen 11 3 1 Hierarchisch organisierte Public Key Infrastruktur
49. IVATE KEY BLOCK Identifiziert einen privaten Schl ssel 39 Kapitel 4 OpenPGP Nachrichten Format BEGIN PGP MESSAGE PART X Y Diese Armor Line wird f r mehrteilige Nachrichten verwendet Sie besagt dass es sich um den X ten Teil einer Nachricht bestehend aus Y Teilen handelt BEGIN PGP MESSAGE PART X Entpricht der vorherigen Armor Line allerdings ist in diesem Fall die genaue An zahl von Nachrichtenteilen unbekannt BEGIN PGP SIGNATURE Identifiziert unter anderem Klartext Signaturen und abgel ste Signaturen deta ched signature Die in CDF 07 beschriebenen Armor Header sind Version Dieser Armor Header enth lt den Namen und die Version der Anwendung welche die Nachricht erzeugt hat Comment Dieser Header enth lt einen frei definierbaren Kommentar im UTF 8 Zeichensatz Um den Kommentar beim Transport zu sch tzen sollten allerdings wie in der kodierten Nachricht auch nur ASCII konforme Zeichen benutzt werden MessagelD Dieser Header enth lt eine Zeichenkette der L nge 32 die eine Nachricht eindeutig identifiziert Dieser Header wird bei mehrteiligen Nachrichten mit unbekannter Anzahl an Teilen eingesetzt um die separaten Teile der Nachricht zuordnen zu k nnen Hash Dieser Armor Header wird nur bei Klartext Signaturen verwendet Er enth lt eine durch Kommata getrennte Liste der Hashalgorithmen die beim Signieren verwen det wurden Charset Gibt den f r Klartext verwendeten Zeichensa
50. Public Key Infrastrukturen PKI Eine Public Key Infrastruktur ist ein komplexes System dass ber definierte Dienste die sichere Verwaltung und Verwendung von asymmetrischen Schl sseln erm glichen soll Zu diesen Diensten z hlen die Erzeugung Verwaltung und der R ckruf von digitalen Zer tifikaten Ein digitales Zertifikat bindet dabei vergleichbar einem Personalausweis eine Person oder eine Institution eindeutig an einen ffentlichen Schl ssel Dies wird durch die Verwendung von Signaturen erreicht Es gibt verschiedene Ans tze eine Public Key Infrastruktur zu implementieren Dazu z hlen hierarchisch und dezentral organisierte Infrastrukturen die im folgenden beschrieben werden 3 1 Hierarchisch organisierte Public Key Infrastruktur In einer hierarchisch organisierten PKI werden die Zertifikate von einer zentralen un abh ngigen Instanz der Zertifizierungsstelle Certification Authority CA herausgege ben Eine CA kann auch Zertifikate f r untergeordnete CAs erstellen Daraus ergibt sich eine Hierarchie die in Buc05 als Vertrauensbaum trust tree bezeichnet wird Am unteren Ende dieses Baums stehen die Endanwender wie Personen oder Firmen Dies ist in Abbildung 3 1 dargestellt Die Sicherheit einer solchen PKI basiert dabei auf dem uneingeschr nkten Vertrauen in die oberste Zertifizierungstelle die Wurzelin stanz Root CA Sie wird auch als Vertrauensanker bezeichnet trust anchor Wenn Bob in dem dargestellen Beispiel
51. ameters Objekt zwischengespeichert Hat der Anwender alle notwendigen Eingaben durchgef hrt erzeugt der Wizard das Schl sselpaar ber die generateKeyPair Methode der OPGPKeyGenerator Klasse sie he Abschnitt 6 5 3 Der Methode wird das Modelobjekt mit den gespeicherten Wer ten sowie ein Progressmonitor f r die Aktualisierung der Fortschrittsanzeige im Wizard mitgegeben Nach erfolgreicher Erzeugung des Schl sselpaars wird es in der Datenbank gespeichert 6 6 3 2 Daten verschl sseln Daten k nnen entweder symmetrisch mit einer Passphrase oder asymmetrisch mit ffent lichen Schl sseln verschl sselt werden In beiden F llen ffnet sich der EncryptData Wizard lediglich die angezeigten WizardPages variieren je nach Auswahl Bei der sym metrischen Verschl sselung w hlt der Anwender auf der ersten Seiten den Zielordner sowie die Dateien die verschl sselt werden sollen In den erweiteren Optionen kann der Anwender folgende Optionen anpassen in Klammern ist der Standardwert angegeben e Verschliisselungsverfahren AES256 e Kompression aktivieren deaktivieren aktiv e Kompressionsverfahren ZIP e Signieren aktivieren deaktivieren aktiv Wurde das Signieren der Dateien aktiviert muss auf der nachsten Seite der Signatur schl ssel ausgew hlt und die zugeh rige Passphrase zur Entsperrung des Schl ssels ein gegeben werden Nach Abschlie en des Wizards werden die Dateien mit dem Message Creator siehe Abschnitt 6 5 2 4 v
52. apitel 6 Design und Implementierung des OpenPGP Clients chert die innerhalb des Workspace liegt Es handelt sich dabei um eine Propertydatei die die Benutzereinstellungen als Schl ssel Wert Paare speichert Der Schl ssel identifi ziert eindeutig eine bestimmte Benutzereinstellung Die vom OpenPGP Client verwalte ten Praferenzen liegen im Paket de tud cdc openpgp ui preferences Aktuell gibt es zwei Praferenzseiten LanguagePage und KeyServerPage Die Klasse LanguagePage er laubt ber eine aufklappbare Liste DropDown List die Auswahl der in der Oberfl che verwendeten Sprache Nach einer Anderung der Sprache wird die Anwendung automa tisch neu gestartet da die von Eclipse verwendete Locale zur Laufzeit nicht ge ndert werden kann Diese Aufgabe wird von der Hilfsklasse Languages bernommen Key ServerPage verwaltet eine Liste von Schl sselservern von denen ffentliche Schl ssel importiert bzw exportiert werden k nnen Die Liste der Sprachen sowie die Liste der Schl sselserver kann allerdings im Moment noch nicht editiert werden Die Standardeinstellungen f r beide Pr ferenzseiten werden innerhalb der Klasse Pre ferences gesetzt die als Initialisierungsklasse abstract initializer innerhalb der plug in xml registriert wird Damit beide Klassen als Pr ferenzseiten identifiziert und von der Workbench automatisch den Benutzereinstellungen hinzugef gt werden erweitern sie den Extension Point org eclipse ui preferencePages und im
53. but als prim r markieren Diese Information ist wenn vorhanden im zugeh rigen Signaturpaket gespeichert dass das Paket an den Schl ssel bindet User ID Packet Ein User ID Packet stellt eine textuelle Beschreibung des Inhabers eines ffentlichen Schl ssels dar Es besteht wie in Kapitel 3 2 dargestellt aus einem Namen sowie einer E Mail Adresse und wird im Allgemeinen in der Form Name lt vor nachname domain tld gt angegeben User Attribute Packet W hrend ein User ID Packet auf eine textuelle Beschreibung des Schl sselbesitzers be schr nkt ist wurde das User Attribute Packet f r alternative Beschreibungsformen vor gesehen Es kann aus ein oder mehreren untergeordneten Paketen sub packets bestehen die verschiedene Attribute des Schl sselbesitzers enthalten k nnen Jeder Unterpakettyp entspricht dabei einem m glichen Attribut Der einzige momentan definierte Unterpa kettyp ist ein Bild im JPEG File Interchange Format JFIF 4 1 3 5 Signaturpakete Signature Packets Pakete diesen Typs enthalten von OpenPGP berechnete Signaturen sowie allgemeine Informationen wie z B verwendetes Hashverfahren Schl sselidentit t asymmetrischer Algorithmus etc die f r die Verifikation bzw Verarbeitung der Signatur von Bedeu tung sind OpenPGP unterscheidet verschiedene Signaturtypen je nachdem f r welche Art von Daten die Signatur erzeugt wurde So ist zum Beispiel eine Signatur ber ein bin res Dokument Textdokument
54. ch Datenpakete eine partielle Kodierung im Paketkopf verwenden Compressed Data Packet Ein Compressed Data Packet speichert Daten in komprimierter Form OpenPGP un terst tzt zur Zeit die Kompressionsverfahren ZIP ZLIB und BZip2 Ein solches Paket besteht aus einem Oktet welches den benutzten Kompressionsalgorithmus iden tifiziert sowie den komprimierten Daten selbst Symmetrically Encrypted Data Packet Symmetrically Encrypted Integrity Protected Data Packet Diese Pakete speichern Daten die mit einem symmetrischen Sitzungsschl ssel verschl s selt wurden Beim Symmetrically Encrypted Data Packet handelt es sich um die ltere Basisversion dieses Paketstyps Es speichert ausschlie lich die verschl sselten Daten Das Symmetrically Encrypted Integrity Protected Data Packet erweitert dieses Basispaket um einen zus tzlichen Integrit tsschutz in Form eines Modification Detection Code Packets Das Modification Detection Code Packet enth lt einen mit SHA 1 berechneten Hashwert ber den zu verschl sselnden Klartext sowie ber den fixen Paketkopf des Modification Detection Code Packets selbst Das Paket wird zusammen mit dem Klartext verschl sselt und erm glicht somit einem Empf nger die Pr fung der Integrit t des Paketinhalts Literal Data Packet Ein literales Datenpaket enth lt die Rohdaten einer Nachricht wie z B eine Grafik oder einen Text Zus tzlich beinhaltet es Metainformationen ber die gespeicherten Daten beisp
55. chricht mit einem symmetrischen Sit zungsschl ssel session key verschl sselt Der Sitzungsschl ssel selbst wird mit dem ffentlichen Schl ssel jedes Empf ngers asymmetrisch chiffriert und mit der Nachricht versendet Jeder Empf nger kann dann den Sitzungsschl ssel und damit auch die Nach richt mit seinem privaten Schl ssel entschl sseln 3Benannt nach den Erfindern Ronald L Rivest Adi Shamir und Leonard Adleman Siehe hierzu http theory les mit edu rivest rsapaper pdf 14Siehe http ieeexplore ieee org Xplore login jsp url iel5 18 22749 01057074 pdf Kapitel 2 Kryptographische Grundlagen Symm Algorithmen vs Asymm Algorithmen sehr viele Anzahl sehr wenige kann sehr gut sein Sicherheit kann sehr gut sein in der Regel sehr gut Performance nicht gut ja Vorheriger Schl ssel nein austausch notwendig nein M glichkeit der ja digitalen Signatur Verschl sselung typisches Signaturen Einsatzgebiet Schl sselaustausch Tabelle 2 1 Vergleich symmetrische asymmetrische Kryptographie Quelle BNS05 2 2 Hash Funktionen Eine Hashfunktion h ist eine Abbildung die Zeichenketten beliebiger L nge auf Zeichen ketten fixer L nge abbildet h dX gt U nen Hashfunktionen finden in verschiedenen Bereichen Anwendung Sie werden unter ande rem in Datenbanksystemen DBS fiir das schnelle Auffinden von Werten mittels soge nannter Hashtabellen oder bei der Fehlertiberpriifung von berm
56. ck DecompressionRepeater Der DecompressionRepeater kapselt einen InflaterInputStream also eine Klasse zum Dekomprimieren von Daten Sie wird ben tigt da der InflaterInput Stream hnlich wie der eben erw hnte CipherInputStream nach dem Dekompri mieren von Daten blockiert und nicht in einem Aufruf die gew nschte Anzahl an Bytes zur ckgibt Die Klasse ruft daher solange die read Methode des zugrun deliegenden Streams auf bis alle angeforderten Daten zur ckgeliefert wurden ExtendedDigestInputStream Diese Klasse kapselt einen Digest InputStream und erweitert ihn um die skip Methode zum Uberspringen von Bytes innerhalb des Eingabestroms 104Siehe http java sun com javase 6 docs api javax crypto Cipher html 105Siehe http java sun com javase 6 docs api javax crypto CipherInputStream html 106Siehe http java sun com javase 6 docs api java util zip InflaterInputStream html 107Siehe http java sun com javase 6 docs api java security DigestInputStream html 62 Kapitel 6 Design und Implementierung des OpenPGP Clients e Limiter Intern verwenden die meisten Filterklassen einen Puffer meist ein Array um Daten f r die Verarbeitung zwischenzuspeichern OpenPGP Pakete haben aller dings bis auf Ausnahmen eine festgelegte L nge die im Paketkopf siehe Kapitel 4 1 angegeben wird Ein Problem tritt dann auf wenn ein Filter Daten aus ei nem falschen Pakettyp speichert Wenn beispielsweise verschl sse
57. das Zertifikat von Alice berpr fen m chte verifiziert 11 Kapitel 3 Public Key Infrastrukturen Root CA 210 0 Abbildung 3 1 Beispiel eines Vertrauensbaums er zun chst das Zertifikat von CA1 mit dem ffentlichen Schl ssel der Wurzelinstanz Root CA Ist das Zertifikat g ltig pr ft er das Zertifikat von Alice mit dem ffentlichen Schl ssel von CA1 Ist auch diese Verifikation positiv gilt der Schl ssel von Alice als authentisch Wenn eine Person oder Institution ein Zertifikat beantragen m chte muss sie sich zu n chst einer Registrierungsstelle Registration Authority RA gegen ber identifizieren und mit Namen und weiteren pers nlichen Informationen registrieren Die Identifi kation der angegebenen Daten kann z B anhand der pers nlichen Vorlage des Licht bildausweises oder F hrerscheins aber auch ber elektronische Medien wie das Internet erfolgen Die Registrierungsstelle berpr ft die angegebenen Daten Im Falle einer posi tiven Verifikation wird dem Antragsteller ein eindeutiger Benutzername zugewiesen und der Zertifikatsantrag mit allen notwendigen Informationen an die Zertifizierungsstelle weitergeleitet Eine Voraussetzung f r einen Zertifikatsantrag ist nat rlich ein asymme trisches Schl sselpaar Dieses kann entweder vom Antragsteller selbst erzeugt werden in diesem Fall muss die RA pr fen dass der Antragsteller tats chlich im Besitz des priva ten Schl ssels ist oder von der Registrier
58. den MessageParser siehe Abschnitt 6 5 2 3 eingelesen und in der Datenbank gespeichert Der Import ber einen Schl sselserver ffnet den ImportPublicKeyWizard der nur die Seite ImportPublicKeyPage1 enth lt Der Anwender muss zun chst einen der verf gba ren Schl sselserver ausw hlen Die Liste der Schl sselserver wird ber die Benutzerpr fe renzen siehe Abschnitt 6 6 4 verwaltet und ist momentan statisch Danach kann ber das Suchfeld nach einem Schl ssel ber ID Fingerabdruck oder einen Teil der Benutzer kennung gesucht werden Die Trefferliste wird im unteren Bereich angezeigt Bild 6 10 zeigt beispielsweise die Ergebnisliste f r den Suchbegriff TestMe Nachdem der Anwen der einen oder mehrere Schl ssel selektiert und den Wizard abgeschlossen hat werden die Schl ssel importiert und in der Datenbank gespeichert 82 Kapitel 6 Design und Implementierung des OpenPGP Clients Schl sselimport ffentlichen Schl ssel von einem Schl sselserver importieren W hlen Sie einen Server aus von dem Sie Schl ssel importieren m chten Schl ssel Server pgpkeys pca dfn de 80 v Sie k nnen nach ID Fingerabdruck oder Teilen einer zu einem Schl ssel geh renden Benutzeridentit t suchen ID und Fingerabdruck eines Schl ssels m ssen dabei in hexadezimaler Form 0x angegeben werden Eine g ltige Schl ssel ID ist beispielsweise 0x99242560 13 Schl ssel gefunden H IE D Algorithmus L nge Erzeugt am
59. der Nachrichtenverarbeitung im OpenPGP Client eine gro e Rolle siehe Kapitel 6 Encrypted Message Compressed Message Signed Message Literal Message Daten wie Text Graphik etc gespeichertin einem Literal Data Packet Abbildung 4 9 Beispiel fiir eine mehrfach verschachtelte OpenPGP Nachricht 35 Kapitel 4 OpenPGP Nachrichten Format 4 2 OpenPGP Schlussel Ein OpenPGP Schl ssel OpenPGP Key oder auch transferierbarer Schl ssel transfe rable key erfiillt in OpenPGP die Funktion eines Zertifikats vergleichbar mit dem in Kapitel 3 vorgestellten X 509 Zertifikaten Er enthalt ein oder mehrere zu einem Besitzer geh rende Schliisselpaare siehe Kapitel 3 2 Benutzerinformationen die durch Signa turen an die Schl ssel gebunden werden sowie die zu den Schl sselpaaren geh renden Signaturen selbst dazu z hlen z B auch Widerufssignaturen und Signaturen die Un terschl ssel an Hauptschl ssel binden Je nachdem ob nur die ffentlichen Schl ssel eines Besitzers oder auch die privaten Schl ssel Teil des OpenPGP Schl ssels sind wird er entweder als Transferable Public Key oder als Transferable Secret Key beschrieben OpenPGP Schl ssel werden normalerweise in Form eines Schl sselbunds key ring auf der Festplatte gespeichert Die privaten Schl ssel werden im geheimen Schl sselbund se cret key ring abgelegt die ffentlichen Schl ssel im ffentlichen Schl sselbund public key ring Die konkrete Umsetzung des Sc
60. die eine Gr e von 512KB nicht berschreiten d rfen Der zugeh rige Schl ssel wird ber eine ID referen ziert CREATE TABLE USER_ATTRIBUTES ID INT NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT USER_ATTRIBUTES_PK PRIMARY KEY PUBLIC_KEY ID INT NOT NULL USER_ATTRIBUTE BLOB 512 NOT NULL Erzeugen der Foreign Keys Erzeugt die in den Tabellen verwendeten Spaltenreferenzen ALTER TABLE PUBLIC_KEYS ADD CONSTRAINT PARENT_ID_FK Foreign Key PARENT_ID REFERENCES PUBLIC_KEYS ID ON DELETE CASCADE ON UPDATE RESTRICT 70 Kapitel 6 Design und Implementierung des OpenPGP Clients ALTER TABLE SECRET_KEYS ADD CONSTRAINT SECRET_KEY_PUBLIC_KEY_FK Foreign Key PUBLIC_KEY_ID REFERENCES PUBLIC_KEYS ID ON DELETE CASCADE ON UPDATE RESTRICT ALTER TABLE REVOCATION SIGNATURES ADD CONSTRAINT REVOCATION SIGNATURE PUBLIC_KEY FK Foreign Key PUBLIC KEY ID REFERENCES PUBLIC_KEYS ID ON DELETE CASCADE ON UPDATE RESTRICT ALTER TABLE DIRECT SIGNATURES ADD CONSTRAINT DIRECT _SIGNATURE_PUBLIC_KEY_FK Foreign Key PUBLIC_KEY_ID REFERENCES PUBLIC_KEYS ID ON DELETE CASCADE ON UPDATE RESTRICT ALTER TABLE SUB_KEY BINDING SIGNATURES ADD CONSTRAINT SUB_KEY BINDING SIGNATURE PUBLIC KEY FK Foreign Key PUBLIC KEY ID REFERENCES PUBLIC_KEYS ID ON DELETE CASCADE ON UPDATE RESTRICT ALTER TABLE USER_IDS ADD CONSTRAINT USER ID PUBLIC KEY FK Foreign Key PUBLIC_KEY_ID REFERENCES PUBLIC_KEYS ID ON DELETE CASCADE ON UPDATE RESTRICT ALTER
61. e Springer 3 Auf lage September 2003 BUCHMANN JOHANNES Skript zur Vorlesung Public Key Infrastrukturen http www cdc informatik tu darmstadt de lehre SS05 vorlesung PKI resources html 2005 CALLAS J L DONNERHACKE H FINNEY D SHAW und R THAYER RFC4880 OpenPGP Message Format www ietf org rfc rfc4880 txt November 2007 CORMEN THOMAS H CHARLES E LEISERSON RONALD L RIVEST und CLIFFORD STEIN Introductions to Algorithms MIT Press 2 Auflage Juni 2004 COLBOURN CHARLES J The combinatorics of network reliability Oxford Univ Press 1987 CLAYBERG ERIC und DAN RUBEL Eclipse Building Commercial Quality Plug Ins Addison Wesley Juni 2004 DELAP SCOTT Understanding how Eclipse plug ins work with OS Gi http www ibm com developerworks library os ecl osgi index html 2006 DIESTEL REINHARD Graphentheorie Springer 2 Auflage 2000 ECKERT CLAUDIA IT Sicherheit Oldenburg 3 Auflage 2004 91 ecl FFS04 Fle06 Fra05 G A07 Gar96 GB03 GHJ04 G1005 Grio2 TBMO6 JWHO6 Keh02 Literaturverzeichnis ECLIPSE ORG Eclipse Dokumentation http http www eclipse org documentation FREEMAN ERIC ELISABETH FREEMAN und KATHY SIERRA Head First Design Patterns O Reilly November 2004 FLECK MATTHIAS Zur Benutzbarkeit von PKI Anwendungen im prakti schen Einsatz Diplomarbeit Technische Universit t Darmstadt Juni 2006 FRANEY
62. e f r die aktuelle Locale kein passendes Bundle findet so wird standardm ig nach einem Bundle ohne Locale gesucht f r das obige Beispiel w re der Dateiname dem nach message properties Der OpenPGP Client verwendet pro Verzeichnis in dem sich Klassen mit zu lokalisieren den Texten befinden je ein Bundle f r deutsche und ein Bundle f r englische Texte Die bersetzungen f r das Core Plug in sowie f r das UI Plug in wurden in die Fragment Plug ins de tud cdc openpgp core nl und de tud cdc openpgp ui nl ausgelagert So k nnen sp ter weitere bersetzungen hinzugef gt werden die dann automatisch mit dem Host Plug in zusammengef hrt werden Die Bundles ohne Localeangabe siehe 135Dje Dateien des Benutzerhandbuchs k nnen zus tzlich auch auf oberster Ebene im Plug in abgelegt werden Findet Eclipse unterhalb des ni Ordners kein zur Locale passendes Verzeichnis werden diese Dateien f r die Darstellung benutzt 136Prinzipiell erlauben Resource Bundles die Speicherung eines beliebigen Java Objekts Wei terhin m ssen die Texte nicht unbedingt in einer Property Datei gespeichert werden Siehe hierzu auch http java sun com developer technicalArticles Intl ResourceBundles oder http java sun com javase 6 docs api java util ResourceBundle html 85 Kapitel 6 Design und Implementierung des OpenPGP Clients oben sind weiterhin im Host Plug in enthalten damit auch ohne Hinzuf gen des je weiligen Fragments Texte vorhanden sind S
63. e oder Pakete im neuen Format einzusetzen Die verschiedenen Varianten sind in Abbildung 4 3 dargestellt Paketkopf p Wert O Packet Tag L ngenoktet Paketk rper Wert 1 MAGDA E a ann Ia lt Tavol anata Paketk rper Wert 2 MEO Oae E eA a E Ta A e m N TaT Eae Aea ga E TAAS Paketk rper wer Abbildung 4 3 Verschiedene Langentypen im alten Paketformat 4 1 2 Pakete im neuen Format New Format Packets Bei Paketen dieses Formats steht der Pakettyp in den Bits 0 5 Damit lassen sich maximal 64 Pakete unterscheiden Ahnlich wie im alten Format lassen sich fiir Pakete diesen Typs vier verschiedene Langenkodierungen angeben Diese werden nun allerdings anhand des Wertes des ersten Oktets nach dem Packet Tag unterschieden Da die Kodierung bei neuen Paketen etwas komplexer ist wird sie im Folgenden ausf hrlich dargestellt CDFT 07 e 1 Oktet Kodierung Bei der 1 Oktet Kodierung entpricht die Lange des Paketk r pers dem Wert des ersten Oktets nach dem Packet Tag Dieser Typ wird daran erkannt dass das erste Oktet einen Wert kleiner als 192 hat Ein zu kodierender Paketkorper kann in dieser Variante also maximal 191 Oktets lang sein Der Header hat eine Lange von insgesamt 2 Oktets 25 Kapitel 4 OpenPGP Nachrichten Format e 2 Oktet Kodierung Bei diesem Typ ist die Langeninformation in 2 Oktets gespei chert der Paketkopf besteht aus insgesamt 3 Oktets Die Lange des Paketkorpers wird anhand der Formel 1tes_O
64. echnologies desktop 85Die Liste aller genutzten Plug ins findet sich nach Start des Programms im About Dialog unter Plug in Details 53 Kapitel 6 Design und Implementierung des OpenPGP Clients e de tud cdc openpgp ui nl Dieses Plug in enthalt die lokalisierten Ubersetzungen der im UI Plug in verwen deten Texte e de tud cdc openpgp core nl Dieses Plug in enth lt die lokalisierten bersetzungen der im Core Plug in ver wendeten Texte e org eclipse ui workbench nl1 Dieses Plug in enth lt die lokalisierten bersetzungen der im Workbench Plug in verwendeten Texte e org eclipse ui jface nll Dieses Plug in enthalt die lokalisierten Ubersetzungen der im JFace Plug in ver wendeten Texte e org eclipse help webapp nli Dieses Plug in enthalt die lokalisierten Ubersetzungen der im Hilfedialog verwen deten Texte 6 4 Analyse der bestehenden OpenPGP Bibliothek Urspr nglich sollte die OpenPGP Bibliothek in der bestehenden Form als Basis f r den OpenPGP Client verwendet werden Der primar angestrebte Fokus dieser Arbeit lag auf dem Design einer flexiblen Oberflache die den Zugriff auf die durch die Bibliothek zur Verfiigung gestellte Funktionalitat ermoglichen sollte Leider zeigten sich bei genaue rer Analyse des Praktikumscodes zahlreiche Probleme die letztlich zu weitreichenden Anderungen am urspr nglichen Code gef hrt haben In diesem Abschnitt werden die wichtigsten Punkte die zu dieser Entscheidung gef hrt habe
65. edMessage H ClearTextSignedMessage H CompressedMessage H TransferablePublicKey H EncryptedMessage H LiteralMessage TrensterableSecretkKey getTypeo E defautExpectedLinsLength getTypeo TransterablePublickey EncryptedMessage amp Literamessage TransferableSecretkeyO parse ClearTextSignedMessage parse TransferablePublickeyO vetTyped getTypel G getkeyo write getHlashlist write getkeyO parse parse getTyped getType 8 getTypeO write write parsed parsed parsed setkeyO parse setkeyO writeo readlineQ writeo verifySignstures Q 8 writeo Abbildung 6 5 Vererbungshierarchie von IMessage Signaturen benutzt werden Leider k nnen die f r Signaturen verwendeten Objekte vom Typ java security Signature nicht mit einem bereits berechneten Hashwert initiali siert werden sondern erwarten je nach Betriebsmodus einen privaten oder ffentlichen Schl ssel Die Schl sselkennungen und somit die Schl sselobjekte stehen allerdings erst nach Bearbeiten des Radix64 kodierten Textes zur Verf gung Dies h tte zur Folge dass Nachrichten diesen Typs nicht in einem Durchgang siehe Abschnitt 6 5 2 1 verarbeitet werden k nnen Um dies zu umgehen werden Klartext Signaturen nun zuerst r ckw rts eingelesen bis die notwendigen Signaturinformationen gefunden wurden Im n chsten Schritt wird die Nachricht dann ganz normal von vorne nach hinten verarbeitet 6 5 2 3 Einlese
66. eilige OpenPGP Paket z B ein PublicKey Paket transparent einzulesen Die einzelnen Pakete wissen dabei nichts ber die konkreten Parameter eines asymmetrischen Algorithmus sondern delegieren die Verarbeitung an die entsprechenden Algorithmenobjekte weiter Die decode und encode Methoden werden benutzt um Schl sselparameter vom OpenPGP Format in das von den JCA Klassen erwartete Parameterformat zu konvertieren und umgekehrt Sie erf llen somit eine Adapterfunktion Dies ist z B notwendig da die OpenPGP Pa kete gro e Ganzzahlen als Multiprecision Integer MPI speichern w hrend die JCA Objekte die Parameter als java math BigInteger erwarten 97Siehe FFS04 oder GHJ04 98Ein MPI ist eine vorzeichenlose Ganzzahl der ein 2 Oktet Wert vorangestellt wird in dem die kodierte L nge der Ganzzahl in Bit enthalten ist Siehe CDF 07 Sektion 3 2 59 Kapitel 6 Design und Implementierung des OpenPGP Clients interface Algorithm E getAlgorithmo getDescription interface ICryptoAlgorithm interface E de tud cdc openpgp core packet compression CompressionAlgorithm 8 getProvider interface interface interface PublicKeyAlgorithm E IHashAlgorithm E ISymmetricAlgorithm decodeJCAPrivateKeyQ byteLengtho 3 getBlockSize decodeJCAPublicKey getBlockSizelnBits getKeySize getkeySized encodeJCAPublickey encodeJ
67. en Betriebssystem abh ngt und sich ein Performancegewinn nur bei relativ gro en Dateien erzielen l sst Die andere M glichkeit ist eine streambasierte Verarbeitung der Nachrichten die auf den Klassen und Subklassen des java io Pakets aufsetzt Die Daten werden dabei in kleinen Bl cken als Datenstrom eingelesen bzw geschrieben Der Zugriff erfolgt ber die verschiedenen read und write Methoden der Klassen InputStream und OutputStream und davon abgeleiteten Subklassen Der Vorteil dieser Alternative ist ebenfalls eine sehr geringe Speicherauslastung sowie die m gliche Nut zung von bereits von Java zur Verf gung gestellten Filterklassen um zum Beispiel in einem Stream Daten direkt zu verschl sseln zu komprimieren etc Diese Variante wird in der neuen Bibliothek verwendet und im Abschnitt 6 5 2 ausf hrlich diskutiert Paketverarbeitung Pakete mit unbestimmter Gr e werden in einigen F llen fehlerhaft verarbeitet Es wird implizit davon ausgegangen dass Pakete diesen Types sich immer bis zum Ende einer Datei erstrecken Dies kann bei Schachtelung von mehreren Nachrichten dazu f hren dass die Daten nicht korrekt interpretiert werden Da die Gr e von Paketen durch die Verarbeitung im Speicher immmer im Voraus bekannt ist wurde zudem nur das Einle sen von partiell kodierten Paketen implementiert das Schreiben solcher Pakete ist nicht m glich Algorithmen Die Bibliothek verwendet keine repr sentative Darstellung
68. en Unterschl ssel Jeder Unterschl ssel muss durch eine Signatur an den Prim rschl ssel gebunden werden Optional folgt nach dieser Bindungssignatur eine Widerufsignatur falls der Unterschl ssel revoziert wurde 4 3 Radix 64 Konvertierung In Abschnitt 4 1 wurde erl utert dass OpenPGP Nachrichten in einem Bin rformat bestehend aus 8 Bit Oktets verarbeitet und gespeichert werden Die Radix 64 Kon vertierung wird verwendet um diese 8 Bit Daten als 7 Bit ASCII Zeichen zu kodie ren Dies ist beispielsweise notwendig um verschl sselte OpenPGP Nachrichten die per 54Der Begriff des Zertifikats ist in der OpenPGP Terminologie leider mehrdeutig 36 Kapitel 4 OpenPGP Nachrichten Format Public Key Packet Version 4 Widerufssignatur SignaturePacket 0 n User ID Packet Zertifikat Signature Packet 0 n User Attribute Packet optional Zertifikat Signature Packet 0 n Public Subkey Packet Version 4 optional Bindung an Prim rschl ssel SignaturePacket Widerufssignatur SignaturePacket Abbildung 4 10 Struktur eines OpenPGP Schl ssels Version 4 E Mail versendet werden sollen vor Datenverlust beim Transport zu sch tzen da es E Mail Systeme gibt die ausschlie lich ASCII Zeichen verarbeiten k nnen Das Verfahren wird daher auch als ASCII Armor bezeichnet Die Radix 64 Konvertierung ist iden tisch zur Base64 Konvertierung erweitert diese aber um eine 24 Bit Pr fsumme die an die kodierte
69. enden Betriebssystems und emuliert nur Komponenten die in nativer Form nicht unterst tzt werden Dies hat den Vorteil dass das SWT schnell ist und auf Eclipse basierende Anwendungen das Look amp Feel des Betriebssystems haben auf dem sie ausgef hrt werden Der Zugriff auf das SWT erfolgt dabei ber ein betriebssystemunabh ngiges API JFace Das JFace Toolkit ist eine Bibliothek die f r das Zusammenspiel mit dem SWT entworfen wurde W hrend das SWT die graphische Basisfunktionalit t implementiert stellt JFace oft ben tigte komplexere Oberfl chenkomponen ten high level components wie Dialoge Assistenten Benutzerpr ferenzen Fortschrittsanzeige etc zur Verf gung Zwei durch JFace zur Verf gung ge stellte Eigenschaften sind Actions und Viewer IBM06 Actions erlauben die Entkopplung einer ausgef hrten Aktion von den ausl senden Komponenten in der graphischen Benutzeroberfl che So ist es m glich dieselbe Aktion unter schiedlichen UI Elementen wie z B einer Schaltfl che oder einem Men eintrag zuzuweisen Dies hat den Vorteil dass eine bestimmte Aktion nur einmal de finiert und dann mehrfach wiederverwendet werden kann Ein JFace Viewer besteht aus einer SWT Komponente wie z B einem Baum Tree oder einer Tabelle Table und einer Menge von Business oder Domain Objekten die in der jeweiligen SWT Komponente dargestellt werden Der Viewer kann die Anzeige anhand der Business Objekte sortieren filtern sowie auf
70. endesign Corporate De sign anzupassen Dazu geh ren z B ein angepasster Splash Screen verwendete Icons About Dialog etc Ein Produkt wird ber den Product Extension Point deklariert und re 50 Kapitel 5 Eclipse Platform ferenziert die zu erweiterende Applikation tiber den eindeutigen Application Bezeichner Application ID Die Definition eines Produkts ist optional 51 Kapitel 6 Design und Implementierung des OpenPGP Clients Im folgenden Kapitel werden das grundlegende Design sowie die konkrete Realisierung des OpenPGP Clients beschrieben Zu Beginn wird kurz die Motivation fiir die Verwen dung der Eclipse RCP Platform sowie die Entwicklungsumgebung erlautert Es folgt ein kurzer berblick ber die im OpenPGP Client verwendeten Plug ins Danach wird die bestehende OpenPGP Bibliothek analysiert und Vorschl ge f r eine Verbesserung des Quellcodes erarbeitet Im Anschluss wird die Architektur der neuen OpenPGP Bi bliothek dargestellt Nach einer Beschreibung der Benutzeroberfl che mit den einzelnen Funktionsbereichen werden abschlie end die Themen Benutzerhandbuch Fehlerproto kollierung und Internationalisierung diskutiert 6 1 Motivation f r die Verwendung der Eclipse RCP Platform Der OpenPGP Client wird als Eclipse RCP Anwendung konzipiert F r die Wahl der Eclipse Platform sprachen verschiedene Gesichtspunkte Wie in Kapitel 5 beschrieben stellt Eclipse dem Entwickler eine gro e Sammlung verschiedener Funkti
71. enutzerkennung an Bei Erzeugung des Views wird der Master Details Block in ein Eclipse Form siehe Abschnitt 6 6 2 3 eingebettet 117Siehe hierzu Glo05 118Tntern legt der Master Details Block die beiden Bereiche in einem org eclipse swt custom SashForm siehe ecl aus Ein SashForm ist ein Containerobjekt welches darin liegende Unterkomponenten in einem horizontalen oder vertikalen Layout darstellt Die einzelnen Komponenten werden dabei jeweils von einem Trenner dem sogenannten Sash unterteilt der es erlaubt die Gr e der Komponenten mit der Maus zu ndern 119Siehe http help eclipse org help33 index jsp topic org eclipse platform doc isv reference api org eclipse jface viewers TreeViewer html 75 Kapitel 6 Design und Implementierung des OpenPGP Clients Aktionen auf einzelnen Masterobjekten werden ber ein Kontextmen aufgerufen das ber die rechte Maustaste ge ffnet werden kann Ein ffentlicher Schl ssel k nnten bei spielsweise in die Zwischenablage kopiert oder gel scht werden Das Kontextmen wird in der aktuellen Version bereits angezeigt aus zeitlichen Gr nden konnte jedoch die Funktionalit t der Men punkte nicht mehr implementiert werden Ereignisprotokollanzeige Dieser View wird f r die Anzeige von aufgetretenen Ereignissen wie Warnungen oder Fehlern verwendet Es handelt sich dabei um den Standard ErrorLog View von Eclipse siehe Abschnitt 6 9 Um den Fokus auf die Schl ssel bersicht zu le
72. erend auf den vergebenen Werten f r die einzelnen Knoten die Gesamtschaltung immer noch funktioniert Eine Auspr gung der Netzwerk Verl lichkeit ist die 2 Terminal Verl lichkeit 2 Term inal Reliability Diese wird in Col87 beschrieben Definition 3 3 3 F r einen probabilistischen Graphen G und festgelegte Knoten s t wird die 2 Terminal Verl lichkeit bezeichnet mit Relo G als die Wahrscheinlichkeit definiert dass in G wenigstens ein Pfad von s nach t existiert Im probabilistischen Modell wird nun der Prozess der Schl sselvalidierung in Form eines 2 Terminal Verl lichkeits Problems formuliert Die Knoten des Netzwerks repr sentie ren die Teilnehmer des Vertrauensnetzes eine Kante zwischen zwei Knoten A und B bedeutet wie im Netz des Vertrauens auch dass Teilnehmer A den ffentlichen Schl ssel von B signiert hat Die den Knoten zugeordneten Wahrscheinlichkeiten entsprechen dem im Abschnitt 3 2 2 1 beschriebenem Vertrauen in die einzelnen Schl sselbesitzer Die Ver trauenswerte k nnen also in diesem Modell flexibel zwischen 0 und 1 vergeben werden Dies ist einer der Vorteile die die Entwickler des Modells im Vergleich zum PGP Modell hervorheben Ein Wert von 0 bedeutet kein Vertrauen in den Schl sselbesitzer ein Wert von 1 steht f r vollst ndiges Vertrauen in den Schl sselbesitzer Abbildung 3 5 zeigt ein einfaches Beispiel f r ein solches Vertrauensnetz Analog zu JWH06 werden in der Abbildung die
73. erschl sselt Der Ablauf f r die Verschl sselung mit ffentlichen Schl sseln ist fast identisch Auf der ersten Seite m ssen zus tzlich die ffent lichen Schl ssel ausgew hlt werden mit denen die Dateien verschl sselt werden sollen Weiterhin entf llt die Wahl des Verschl sselungsverfahrens in den Optionen 6 6 3 3 Daten entschl sseln Wenn der Anwender die Datenentschl sselung ausgew hlt hat ffnet sich ein Dialog in dem die zu entschl sselnden OpenPGP Nachrichten im Dateisystem selektiert wer den k nnen Nach einem Klick auf den Schalter OK wird die Entschl sselung ber den MessageParser siehe Abschnitt 6 5 2 3 durchgef hrt Der OpenPGP Client pr ft selbstst ndig ob die jeweilige Datei symmetrisch oder asymmetrisch verschl sselt wur de Wenn eine Passphrase erforderlich ist erscheint ein Dialog der den Benutzer zur 134nttp justwild us examples password sl Kapitel 6 Design und Implementierung des OpenPGP Clients Eingabe auffordert Da die Dateien durchaus durch unterschiedliche Passphrasen bzw ffentliche Schl ssel gesichert sein k nnen werden die eingegebenen Passw rter zwi schengespeichert Somit k nnen Mehrfacheingaben vermieden und die Anzahl notwendi ger Interaktionen seitens des Anwenders minimiert werden Ein Statusfenster informiert den Anwender ber den Fortschritt der Entschl sselung 6 6 3 4 Daten signieren Das Signieren von Daten wird ber den SignDataWizard abgewickelt Er
74. ertrauen ausgesprochen wird C und M entsprechen den Skepsis Parametern wie oben dargestellt Dann ist ein Schl ssel vollst ndig g ltig wenn L gt 1 teilweise g ltig marginally trusted wenn 0 lt L lt 1 und ung ltig f r L 0 PGP verwendet standardm ig die Werte C 1 und M 2 GnuPG hingegen C 1und M 3 Abbildung 3 3 zeigt ein einfaches Beispiel fiir ein Vertrauensnetz mit den berechneten Schl sselwerten f r M 2 und C 1 Ein Pfeil zwischen zwei Teilnehmern A und B bedeutet dass A den ffentlichen Schl ssel von B signiert hat Das Vertrauen von Alice in die einzelnen Teilnehmer ist in Klammern aufgefiihrt 8GnuPG verwendet einen zus tzlichen Parameter den maximalen Zertifizierungspfad maximum cer tification path Ein zu validierender Schl ssel s darf dabei im Web of Trust nicht weiter als die angegebene Pfadl nge von einem eigenen Schl ssel entfernt sein Ash99 Der Standardwert ist 5 17 Kapitel 3 Public Key Infrastrukturen Da Alice Besitzerin des Schliisselbunds ist ist ihr Schliissel automatisch vollstandig g ltig und da sie sowohl Blakes als auch Carols Schl ssel signiert hat sind diese beiden Schl ssel auch vollst ndig g ltig Chloes Schl ssel ist ebenfalls vollst ndig g ltig da zwei Zertifikate von Teilnehmern denen kaum Vertrauen entgegengebracht wird ausreichend sind um einen Schl ssel erfolgreich zu validieren Francis Schl ssel ist nur teilweise g ltig da das Vertrauen in Chloe
75. erung des OpenPGP Clients H java io FilterInputStream SignaturelnputStream java security DigestInputStream CipherlnputStream PartialHeaderInputStream H Limiter DecompressionRepeater SignsturelnputStream EF DigestinputStreamd CipherinputStreamO F PartiaiHeaderinputStream Limiter F DecompressionRepeater closet getMessageDigest decoded closed close read getSignature ond read 8 isCheckForPacketCompletion 8 getLimit read read read read reado ready read G read read ready ready read setMessageDigest skip read read setSignature toStringd readRequestedData amp reset skip 8 setCheckForPacketCompletion setimo skip skip H PacketHeaderLookAheadStream ExtendedDigestInputStream PacketHeaderLookAheadStream doLookAheadl 4 ExtendedDigestinputStreamd 8 getPacketTypeO 8 skip ready read read setPacketType skip Abbildung 6 4 Hierarchie der von FilterInputStream abgeleiteten Klassen 6 5 2 2 Nachrichten Die in Kapitel 4 1 4 vorgestellten Nachrichtentypen werden von den Klassen im Paket de tud cdc openpgp core message repr sentiert Jede Nachricht implementiert das Interface IMessage Es definiert die Methoden e parse PushbackInputStream in MessageParser parse
76. erwendet die die Methode writeKeys String destination File List lt ITransferableKey gt boolean asciiArmored definiert Schl sselimport von einem Server Die grundlegenden Operationen auf einem Schl sselserver sind die Suche der Import und der Export von Schl sseln Diese Basisfunktionen definieren die Schnittstelle eines Schl sselserver Protokolls die in dem Interface IKeyServerProtocol beschrieben wird Es enth lt die folgenden Methoden e List lt PublicKeyInformation gt searchKeys String keyWords F hrt eine Suche auf dem Schl sselserver mit den angegebenen Suchw rtern aus und gibt eine Liste mit Informationen ber die gefundenen ffentlichen Schl ssel zur ck Das PublicKeyInformation Objekt enth lt unter anderem die Schl ssel kennung den Typ des Schl ssels die Schl sselgr e sowie eine Liste von Benut zerkennungen e List lt ITransferablePublicKey gt importKeys List lt PublicKey Information gt keys Importiert ffentliche Schl ssel von einem Schl sselserver Als Parameter enth lt die Methode eine Liste von PublicKeyInformation Objekten die als Ergebnis einer Suche zur ckgegeben wurden Die importierten Schl ssel werden als Liste vom Typ ITransferablePublicKey siehe Abschnitt 6 5 2 2 zur ckgegeben e void exportKeys List lt ITransferablePublicKey gt keys Exportiert die bergebene Liste von ffentlichen Schl sseln zu einem Schl sselser ver e boolean maximumHitsExceeded Pr ft ob bei
77. es Online Books setzt sich aus einzelnen HTML Seiten zusammen Diese werden dem Benutzer in Form eines Baumnavigationsmen s pr sentiert Die Struktur die ses Baums wird ber XML Dateien definiert 5 2 Eclipse Benutzeroberflache Eclipse UI Wie schon im vorherigen Abschnitt erl utert stellt die Workbench die Benutzerober fl che von Eclipse dar und ist gleichbedeutend mit dem Hauptfenster welches dem An wender nach dem Start der Plattform pr sentiert wird Die Darstellung und Struktu rierung der visuellen Elemente innerhalb des Fenster folgt dabei einem von der Work bench vorgegebenem Muster Ein Workbench Fenster besteht im Allgemeinen aus einer Menge von Sichten Views und Editoren Editors die den Inhalt einer Anwendung repr sentieren und in Form einer Perspektive Perspective zusammengefasst werden Die Perspektive gibt dabei vor wie die Elemente im Fenster angeordnet und dargestellt werden Neben Sichten und Editoren enth lt die Workbench meist ein Hauptmen eine Werkzeugleiste Toolbar und ggf eine Statusleiste Ein typisches Workbench Fenster ist in Abbildung 5 2 dargestellt Editor Ein Editor wird f r die Bearbeitung eines Objekts wie z B einer Datei eines graphi sches Primitivs in einem visuellen Editor oder einer Datenbanktabelle etc verwendet Ein Editor folgt dabei einem bestimmten Lebenszyklus Das Objekt wird ge ffnet be arbeitet und schlie lich gespeichert Editoren werden in der Regel f r die D
78. h zustande gekommen ist Dies sind nur einige Beispiele f r die Verwendung von kryptographischen Verfahren die aller dings zeigen dass sich die moderne Kryptographie nicht mehr alleine auf die Anforderung nach Vertraulichkeit beschr nkt Buc03 definiert folgende Sicherheitsziele e Vertraulichkeit Vertraulichkeit soll gew hrleisten dass keine unberechtigte Informationsgewinnung ber Daten in gespeicherter oder bertragener Form m glich ist Wie in der Einlei tung beschrieben wird dies durch die Verwendung von Verschl sselungsverfahren sichergestellt e Authentizit t Unter Authentizit t versteht man die Echtheit und Glaubw rdigkeit von Informa tionen Diese kann durch berpr fung der Identit t des Absenders der Informatio Kapitel 2 Kryptographische Grundlagen nen mittels kryptographischer Techniken garantiert werden Dieser Vorgang wird auch als Authentifikation bezeichnet e Integritat Die Integrit t von Daten oder Programmen garantiert dass diese nicht unberech tigt und unbemerkt manipuliert wurden Dies l t sich anhand von kryptographi schen Verfahren wie Hashfunktionen berpr fen e Nicht Abstreitbarkeit Die Nicht Abstreitbarkeit elektronischer Dokumente macht es Dritten gegen ber beweisbar dass ein Dokument von einem bestimmten Absender kommt Dies wird durch die Verwendung von digitalen Signaturen erm glicht 2 1 Verschl sselung Ein einfaches Beispiel soll zu Beginn die Funktion von Ver
79. halt Erl uterung Versionsnummer beschreibt verwendetes Zertifikatsformat Seriennummer eindeutiger Identifikator Signatur verwendete Algorithmen und Parameter Zertifikataussteller Name der ausstellenden Instanz G ltigkeitsdauer Angabe eines Zeitintervalls Benutzername eindeutiger Name des Benutzers Schl sselinformationen Schl ssel des Benutzers und Algorithmen eindeutiger Identifikator in Version v2 v3 Erweiterungen in Version v2 v3 Tabelle 3 1 Struktur eines X 509 bzw X 509v3 Zertifikats Quelle Eck04 Die Zertifizierungstelle ver ffentlicht neue Zertifikate in einem Verzeichnis Directory Benutzer der PKI k nnen dort nach Zertifikaten suchen wenn sie mit einer bestimmten Entit t kommunizieren wollen Zudem enth lt das Verzeichnis Informationen ber Zer tifikate die vor Ablauf ihrer G ltigkeitsdauer widerrufen wurden die sogenannte Zertifi katssperrliste Certificate Revocation List CRL M gliche Gr nde f r einen fr hzeitige Sperrung sind z B der Verlust oder die Kompromittierung des privaten Schl ssels Jeder CRL Eintrag enth lt dabei laut Buc03 Seriennummer des Zertifikats 22Siehe auch http tools ietf org html rfc3280 13 Kapitel 3 Public Key Infrastrukturen e Zeitpunkt des Widerrufs e Ggf weitere Informationen wie z B Gr nde f r den Widerruf Die einzelnen Eintr ge werden von der Zertifizierungsstelle signiert Der Verzeichnis dienst verwendet f r den Zugriff oft das Light
80. hl mehr positive Hinweise f r eine st rkere G ltigkeit des Schl ssels mit der gr eren Anzahl an Zertifikaten existieren JWHO6 e Unsichtbare Abh ngigkeiten PGP erlaubt seinen Benutzern den Besitz von mehreren Schl sselpaaren Dem zufolge kann es vorkommen dass ein Schl ssel zwar die ausreichende Anzahl an notwendigen Signaturen f r eine positive Verifikation der vollst ndigen G ltigkeit besitzt diese Zertifikate aber mit mehreren Schl ssel von einer einzigen Person ausgestellt wurden Dies wird in JWHO06 als unsichtbare Abh ngigkeit invisible dependency bezeichnet JWH06 proklamieren daher ein eigenes Modell das probabilistische Vertrauensmodell probabilistic trust model welches einen Teil der beschriebenen Probleme des Netz des Vertrauens beheben soll Das Vertrauensnetz wird in diesem Modell als ein Netzwerk repr sentiert durch einen probabilistischen Graphen dargestellt Im folgenden werden daher zun chst einige grundlegende Begriffe aus der Graphen und Netzwerkverl lich keitstheorie eingef hrt Ein Graph wird in Die00 wie folgt definiert Definition 3 3 1 Ein Graph ist ein Paar G V E disjunkter Mengen mit E C V die Elemente von E sind also 2 elementige Teilmengen von V Die Elemente von V nennt man die Ecken oder Knoten des Graphen G die Elemente von E seine Kanten Unter einem Pfad versteht man nach CLRSO4 Definition 3 3 2 Ein Pfad der L nge k von einem Knoten u zu e
81. hl sselbunds wird in der OpenPGP Spezifika tion allerdings offengelassen PGP und GnuPG verwenden beispielsweise lokale Dateien der OpenPGP Client hingegen eine lokale Datenbank siehe Kapitel 6 OpenPGP Schl ssel k nnen in Version 3 oder 4 vorkommen Dies h ngt von der Paket version der enthaltenen Schl sselpaare ab Nur Schl ssel der Version 4 k nnen Unter schl sselpaare haben In diesem Fall muss der Prim rschl ssel ein Signaturschl ssel sein w hrend die Unterschl ssel eine beliebige Funktion erf llen k nnen Generell werden diese aber f r die Verschl sselung von Daten verwendet Die Struktur eines OpenPGP Public Keys in der Version 4 ist in Abbildung 4 10 dargestellt Ein OpenPGP Secret Key enth lt statt den Public Key Subkey Paketen entsprechend Secret Key Subkey Pakete Wie in der Abbildung ersichtlich muss mindestens eine Benutzeridentit t pro Schl ssel definiert sein Hinter jeder Identit t bzw hinter jedem Attribut folgt eine Liste von Si gnaturen die als Zertifikate certificates bezeichnet werden Man unterscheidet dabei zwischen vom Schl sseleigner selbstsignierten Zertifikaten self signed certificates und gew hnlichen Zertifikaten die von anderen Schl sselbesitzern ausgestellt werden k nnen um ihr Vertrauen in die Bindung zwischen Schl sselinhaber und Schl ssel auszudr cken siehe hierzu auch die Beschreibung des Netz des Vertrauens in Kapitel 3 2 Nach den Benutzerinformationen folgen die optional
82. hp nuoveXT 2 content 62630 125GNU Lesser General Public License Siehe http www fsf org licensing licenses lgpl html 126http www famfamfam com lab icons silk 127Siehe http creativecommons org licenses by 2 5 19 Kapitel 6 Design und Implementierung des OpenPGP Clients e Crystal Project LGPL e Crystal Diamond GPL e Tango Iconset Creative Commons Attribution Share Alike 2 513 Die Icons wurden zum Teil mit Bildbearbeitungssoftware an die jeweilige Funktion in der Anwendung angepasst 6 6 3 Darstellung der Hauptfunktionen In diesem Abschnitt werden die tiber die Toolbar verfiigbaren Hauptfunktionen des OpenPGP Clients naher beschrieben Die meisten Funktionen verwenden dabei einen Assistenten Wizard der den Benutzer tiber mehrere Seiten durch einen bestimmten Prozess z B die Erstellung eines neuen Schl sselpaars f hrt JFace stellt hierf r die Ba sisklasse org eclipse jface wizard Wizard zur Verf gung die von den Assisten ten f r die jeweilige Funktion erweitert und angepasst wird Die einzelnen Seiten wer den beim Wizard registriert und erweitern die Klasse org eclipse jface wizard Wiz ardPage Alle Wizards sowie die Wizardseiten liegen im Paket de tud cdc open pgp ui wizards 6 6 3 1 Schl sselerstellung Ein neues Schl sselpaar wird mit Hilfe des CreateKeyPairWizard erzeugt Der Wizard besteht aus zwei Seiten CreateKeyPairPageil und CreateKeyPairPage1 Auf der ersten Seite kann de
83. ht werden sollen sowie die grundlegenden kryptographischen Verfahren GUI ist die Abk rzung f r den englischen Begriff Graphical User Interface Der Begriff der Internationalisierung wird oft mit il8n abgek rzt bezogen auf die Anzahl der 18 ausgelassenen Buchstaben im englischen Wort internationalization Siehe http www eclipse org home categories rcp php Kapitel 1 Einleitung wie Verschl sselung Hash Funktionen und Signaturen Dies soll das Verst ndnis der sp ter beschriebenen Implementierung des OpenPGP Clients erleichtern In Kapitel 3 wird der Begriff der Public Key Infrastruktur PKI eingef hrt Danach werden die elementaren Komponenten von hierarchisch organisierten Public Key Infra strukturen dargestellt Abschlie end werden zwei Beispiele f r dezentral verwaltete PKI L sungen vorgestellt das klassische in PGP eingef hrte Netz des Vertrauens Web of Trust sowie das an der Universit t Bern entwickelte probabilistische Vertrauensmodell Kapitel 4 gibt einen berblick ber das OpenPGP Nachrichten Format und stellt die wichtigsten Elemente und Strukturen vor In Kapitel 5 wird die Architektur der Eclipse Platform und die Struktur von Eclipse RCP Anwendungen erl utert Kapitel 6 beschreibt die an der OpenPGP Bibliothek durchgef hrten notwendigen Mo difikationen und Erweiterungen sowie den Entwurf und die Umsetzung des OpenPGP Clients Kapitel 7 fasst die Ergebnisse der Arbeit zusammen und gibt ein
84. ielsweise ob es sich um bin re oder textbasierte Daten handelt ggf einen Da teinamen oder das Erstellungs bzw Modifikationsdatum der gespeicherten Daten Der Inhalt eines literalen Datenpakets kann zudem als sensitiv markiert werden wenn der Name _CONSOLE als Dateiname verwendet wird In diesem Fall sollte das empfangende Programm die Daten mit gr erer Vorsicht verarbeiten und m glicherweise das Speichern der Daten auf Festplatte vermeiden CDF 07 Enth lt das literale Datenpaket Text so wird dieser vor der Speicherung in das kanonische OpenPGP Format berf hrt um ISiehe auch http www ietf org rfe rfc1951 txt 42Siehe auch http www ietf org rfe rfc1950 txt 43BZip2 ist ein von Julian Seward entwickelter Kompressionsalgorithmus Siehe auch http www bzip org 28 Kapitel 4 OpenPGP Nachrichten Format Probleme mit betriebssystemabhangigen Zeilenumbr chen zu umgehen Dabei werden alle Zeilenumbr che einheitlich durch die Zeichen lt CR gt lt LF gt ersetzt 4 1 3 2 Sitzungsschl sselpakete Session Key Packets Sitzungsschl sselpakete werden verwendet um den Sitzungsschl ssel selbst mit symme trischer oder asymmetrischer Kryptographie zu sch tzen Sie werden unterschieden in Public Key Encrypted Session Key Packets und Symmetric Key Encrypted Session Key Packets und werden einem symmetrisch verschl sseltem Datenpaket vorangestellt F r ein Symmetrically Encrypted Data Packet ist die Verwendung von Sitzungssch
85. ilfe angezeigt werden kann Ein Plug in kann auch aus mehreren Frag ment Plug ins bestehen Dies ist insbesondere bei der Internationalisierung einer Anwen dung von Vorteil Der Java Code kann beispielsweise im sogenannten Host oder Target Plug in abgelegt werden w hrend die Fragmente die sprachabh ngigen bersetzungen enthalten Zur Laufzeit werden Host und Fragment Plug ins dann zusammengef hrt Plug ins werden als Java Archives JAR gespeichert Innerhalb der Plug in Struktur befinden sich zwei Dateien die von zentraler Bedeutung sind META INF MANIFEST MF und plugin xml META INF MANIFEST MF Die Datei MANIFEST MF ist ein OSGi Bundle Manifest siehe hierzu die Erl uterung der Platform Runtime in Abschnitt 5 1 Sie befindet sich standardm ig im Ordner META INF innerhalb der JAR Struktur und enth lt Metainformationen ber das Plug in Hier zu z hlen u a ein Bezeichner Bundle SymbolicName die Version des Plug ins sowie ein beschreibender Name Der Bezeichner und die Plug in Version werden kombiniert um das Plug in eindeutig zu identifizieren Der Eintrag Bundle Activator gibt die mit dem Plug in assoziierte Klasse an die verwendet wird um das Plug in zu starten und zu stoppen Dabei handelt es sich um die erste Klasse die bei der Plug in Ausf hrung aufgerufen wird Die Activator Klasse ist in der Regel eines Subklasse von org eclipse core runtime Plugin sofern das Plug in keine UI Funktionalit t erwei tert bzw o
86. in Form von Klassen f r die von OpenPGP genutzten kryptographischen Algorithmen Innerhalb der Pakete erschei nen daher oft typische if then else Abfragen die auf einen konkreten Algorithmus pr fen Dies soll mit der Verwendung von Interfaces und dem Strategy Pattern um gangen werden Algorithmeneigenschaften wie eindeutiger Bezeichner Schl ssel und Blockgr e etc sind ber mehrere Klassen verteilt und werden nicht zentral verwaltet Eine neue Klasse die f r die Administration der Algorithmen verantwortlich ist soll dieses Problem beheben Einige Algorithmen wie der Kompressionsalgorithmus BZip2 oder das Public Key Verfahren ElGamal werden nicht unterst tzt Verschl sselung OpenPGP verwendet f r die symmetrische Verschl sselung eine spezielle Variante des 87Konkret erfolgt der Zugriff ber einen MappedByteBuffer eine Subklasse von ByteBuffer Siehe hierzu http java sun com javase 6 docs api java nio MappedByteBuffer html 88Siehe hierzu die Erl uterung der map Methode in der API Beschreibung der FileChannel Klasse unter http java sun com javase 6 docs api java nio channels FileChannel html 89Siehe http java sun com javase 6 docs api java io package summary html Siehe FFS04 oder GHJ04 59 Kapitel 6 Design und Implementierung des OpenPGP Clients Cipher Feedback Mode CFB Der CFB ist ein bestimmter Betriebsmodus von Block chiffren Blockchiffren sind Verschliisselungsverfahren die Daten B
87. inem Knoten u in ei nem Graphen G V E ist eine Folge vo v1 va Uk von Knoten so dass u vo u up und v _1 0 E f ri 1 2 k Die L nge des Pfades ist die Anzahl der Kanten im Pfad Abbildung 3 4 zeigt einen einfachen Graphen mit dem Pfad vo v2 v3 v4 der L nge 3 In einem probabilistischen Graph wird nun jedem Knoten v V ein Wert P v zwi schen 0 und 1 zugeordnet der die Wahrscheinlichkeit f r einen Ausfall des Knotens angibt Die Kanten gelten in diesem Graph als ausfallsicher Ein einfaches Beispiel f r ein Netzwerk welches durch solch einen Graphen dargestellt werden kann ist die Modellierung einer elektronischen Schaltung Die Knoten des Graphen sind die Bau elemente der Schaltung die Kanten stellen die Leitungen zwischen den Elementen dar Die den Knoten zugeordneten Werte k nnten in diesem Fall die Wahrscheinlichkeit f r einen Ausfall des Bauelements darstellen Unter der Verl lichkeit eines Netzwerks net work reliability versteht man nun nach Co187 die F higkeit eines Netzwerks eine 29Der Wert 0 bedeutet in diesem Fall dass der Knoten auf keinen Fall ausf llt Ein Wert von 1 gibt an dass der Knoten mit absoluter Sicherheit ausf llt 19 Kapitel 3 Public Key Infrastrukturen Abbildung 3 4 Beispielgraph mit einem Pfad der Lange 3 gew nschte Operation auszuf hren Auf das obige Beispiel bezogen k nnte man die Frage stellen mit welcher Wahrscheinlichkeit basi
88. integriert Im Gegensatz zur RSA Signatur handelt es sich bei DSA um ein reines Signaturverfahren es existiert kein verwandtes Verschl sselungsverfahren Dem zufolge kann DSA nicht f r Verschl sselung benutzt werden Signiertes Dokument d G Hashfunktion n a PrivaterSchl ssel Signiertes Dokument p ED tl Verifikation h d h d Hashwerth cro d Abbildung 2 2 Signaturerzeugung und Verifikation eines Dokuments 19Siehe http csrc nist gov publications fips fips186 2 fips186 2 change1 pdf 10 Kapitel 3 Public Key Infrastrukturen Dieses Kapitel beschreibt zun chst den Begriff der Public Key Infrastruktur PKI sowie die grundlegenden Komponenten einer hierarchisch verwalteten PKI Im folgenden wer den zwei Beispiele f r dezentrale Public Key Infrastrukturen vorgestellt das Netz des Vertrauens Web of Trust sowie das probabilistische Vertrauensmodell Wie in Kapitel 2 bereits erl utert wurde ist eines der Probleme der Public Key Kryp tographie der Nachweis der Authentizit t von ffentlichen Schl sseln das hei t es muss sichergestellt werden dass ein ffentlicher Schl ssel tats chlich dem vermeintlichen Be sitzer geh rt Andernfalls k nnte ein Angreifer einen Schl ssel unter einer falschen Iden tit t herausgeben um sich so unberechtigt Daten anzueignen Dieses Problem wird auch als Schl sselvalidierungsproblem key validation problem bezeichnet JWH06 Um es zu l sen verwendet man
89. ispielsweise wie folgt aus Manifest Version 1 0 Bundle ManifestVersion 2 Bundle Name OpenPGP Client Plug in Bundle SymbolicName de tud cdc openpgp ui singleton true Bundle Version 1 0 0 Require Bundle org eclipse core runtime org eclipse ui de tud cdc openpgp core org eclipse ui forms org eclipse ui intro org eclipse ui views log org eclipse ui views Eclipse LazyStart true Bundle Vendor TU Darmstadt Bundle Activator de tud cdc openpgp UIActivator Bundle Localization plugin Export Package de tud cdc openpgp ui plugin xml Jedes Plug in kann sogenannte Extension Points Erweiterungspunkte definieren die es anderen Plug ins erm glichen bestehende Funktionalit t dieses Plug ins zu erweitern Dieser Mechanismus stellt die Basis f r die Integration von Werkzeugen und Anwendun gen in Eclipse dar So stellt beispielsweise das Plug in org eclipse ui einen Extension Point f r die in Abschnitt 5 2 beschriebenen Views zur Verf gung Wenn eine Anwen dung Informationen in einem View darstellen m chte erweitert sie den Extension Point org eclipse ui views und erstellt eine Klasse die von der abstrakten Basisklasse ViewPart erbt Die plugin xml Datei enth lt alle von einem Plug in definierten Exten sion Points sowie alle von diesem Plug in erweiterten Extensions Points Ein Auschnitt aus der entsprechenden Datei des OpenPGP Client UI Plug ins zeigt die Deklaration einer View Extension lt extension point
90. ittelten Daten benutzt Im kryptographischen Sektor werden sie f r die berpr fung der Integrit t von Daten eingesetzt und sind ein wichtiger Bestandteil von digitalen Signaturen die im n chsten Abschnitt behandelt werden Kryptographische Hashfunktionen m ssen nach Buc03 allerdings folgende zus tzliche Anforderungen erf llen Sei h eine Hashfunktion und D der Definitionsbereich von h 1 Der Hashwert h x muss f r alle x D effizient berechenbar sein 2 Es ist praktisch unm glich f r einen gegebenen Hashwert y X ein x D zu finden mit h a y Erf llt h die obigen Eigenschaften bezeichnet man sie auch als Einwegfunktion Manche Anwendungen erfordern zusatzlich das h stark kollisionsresistent ist Eine Kol lision von h ist ein Paar xz 2 D mit x 4 x und h x h x Eine Abbildung h wird als schwach kollisionsresistent bezeichnet wenn es praktisch unm glich ist zu gegebenem x D ein x D zu finden so dass das Paar x x eine Kollision von h ist Die Abbildung h ist stark kollisionsresistent wenn es praktisch unm glich ist ein beliebiges Paar x x D zu finden so dass x x eine Kollision von h ist Kapitel 2 Kryptographische Grundlagen Eines der am meisten genutzten Hashverfahren ist der Secure Hash Algorithm SHA 1 der vom NIST entwickelt wurde und Teil des Digital Signature Standards DSS ist SHA 1 bildet Zeichenketten auf 160 Bit Strings ab Im Jahr
91. ktet 192 lt lt 8 2tes_Oktet 192 berechnet Die 2 Oktet Kodierung wird daran erkannt dass der erste Oktet Wert im Bereich von 192 bis einschlie lich 223 liegt Mit der angegebenen Formel lassen sich Paketkorper mit einer Lange von 192 bis hin zu 8383 Oktets kodieren e 5 Oktet Kodierung Ein Paket verwendet die 5 Oktet Kodierung wenn das erste Oktet den Wert 255 hat Die nachfolgenden vier Oktets enthalten die L nge des Paketk rpers Sie wird anhand der Formel 2tes_Oktet lt lt 24 3tes_Oktet lt lt 16 4tes_Oktet lt lt 8 5tes_Oktet berechnet Der Paketkopf hat eine Gesamtlange von 6 Oktets Es lassen sich Pa ketkorper mit einer Lange bis zu 4 294 967 295 Oktets kodieren e Partielle Kodierung partial body length Partielle Kodierung wird verwendet wenn die Gesamtpaketgr e zu Beginn der Nachrichtenerstellung unbekannt ist Dies kann zum Beispiel bei der Kompression von Daten vorkommen Das Paket wird in diesem Fall in einzelnen Teilen sogenannten chunks kodiert Je ein partiel ler Paketkopf kodiert die L nge eines Paketteils gefolgt von dem Paketteil selbst Dabei ist zu beachten das nur der erste partielle Kopf einen Packet Tag enth lt alle anderen Paketteile werden lediglich mit der L ngenkodierung versehen Dieses Verfahren wird solange wiederholt bis das Ende des Pakets erreicht wird Der ab schlie ende finale Paketteil muss mit einer 1 2 oder 5 Oktet Kodierung versehen werden Ein einfache
92. kturen des Systems nachzuvollzie hen und erfolgreich Anwendungen zu entwickeln Wie in Abschnitt 5 1 erw hnt stellt die RCP eine Untermenge der Eclipse Platform dar Damit in der Anwendung die Eclipse Laufzeitumgebung und eine Benutzerober fl che zur Verf gung stehen setzt eine RCP Anwendung mit minimaler Konfiguration auf den Plattform Komponenten org eclipse core runtime und org eclipse ui auf Diese Konfiguration kann nat rlich um zus tzliche Eclipse Komponenten Help Update etc und auch durch eigene Plug ins erweitert werden Jede RCP Anwendung besteht aus einem Plug in und definiert eine Klasse die als Startpunkt hnlich der main Methode in klassischen Programmen fungiert Die Klasse implementiert die Schnittstel le org eclipse equinox app IApplication und wird ber den Application Extension Point innerhalb der plugin xml deklariert Das Plug in dass die Application Klasse beinhaltet wird initial von der Runtime gestartet Der Name der auszuf hrenden An wendung wird dabei beim Start der Platform per Kommandozeile bergeben IBM06 Die Anwendung beh lt dann bis zu Ihrer Beendigung die gesamte Kontrolle ber Eclipse Demzufolge kann zur Laufzeit auch nur genau eine Applikation aktiv sein Ein Produkt product erweitert eine Applikation um sogenannte Marken Informationen branding information die dazu genutzt werden k nnen das visuelle Erscheinungsbild einer An wendung an ein bestimmtes nach au en transportiertes Firm
93. l le berpr fung Quick Check der G ltigkeit des Sitzungsschl ssels Der Quick Check wurde fehlerhaft umgesetzt Wie in Kapitel 4 beschrieben ist es ausserdem m glich dass der Sitzungsschl ssel einer Nachricht durch ein oder mehrere Symmetric Key En crypted Session Key Packets oder Public Key Encrypted Session Key Packets gesch tzt werden kann Die Bibliothek erlaubt allerdings nur die exklusive Verwendung der Ses sion Key Pakete dass heisst man sch tzt den Sitzungschl ssel entweder symmetrisch mit ein oder mehreren Passphrasen oder mit ffentlichen Schl sseln Die Verwendung beider Methoden ist nicht m glich Die angesprochenen Punkte legen nahe dass die Ver Entschl sselung von Daten nicht mit konkreten OpenPGP Nachrichten getestet wurde Kompression Bei der Kompression von Daten werden je nach verwendetem Verfahren tempor re Dateien angelegt Dies wird durch die Umstellung der Nachrichtenverarbeitung s o umgangen Das Verfahren BZip2 fehlt in der Bibliothek und wird in der neuen Version erg nzt Signieren Verifizieren Wie in Kapitel 4 dargestellt unterscheidet OpenPGP zwischen verschiedenen Signa turtypen Die Berechnung einer konkreten Signatur variiert dabei in Abh ngigkeit vom Signaturtyp Im bestehenden Code geht diese Berechnung nur beim Signieren von Daten 91Siehe CDF 07 Sektion 5 7 5 13 und 13 9 92F r eine ausf hrliche Beschreibung von Blockchiffren und dem CFB siehe Buc03 Kapitel 4 6 und 4
94. l cke fester L nge auf verschl sselte Bl cke derselben L nge abbilden Buc03 Beim CFB gehen bereits verschl sselte Daten einer Nachricht in die weitere Verschl sselung von Daten dieser Nachricht mit ein es besteht also eine Abh ngigkeit bei der Verarbeitungsrei henfolge Der CFB verwendet hierzu ein Schieberegister in dem Daten f r die Weiter verarbeitung gespeichert werden Der CFB Modus von OpenPGP schreibt vor dass die Gr e des Schieberegisters der Blockgr e des verwendeten Algorithmus entspricht Dies wurde im Originalcode nur bedingt ber cksichtigt es kann dort zu fehlerhafter Initialisierung des Verfahrens kommen Gleicherma en wird die Gr e des Initialisie rungsvektors IV des Verfahrens die ebenfalls der Blockgr e entsprechen muss nicht immer korrekt gesetzt OpenPGP schreibt bei der Verschl sselung von symmetri schen Datenpaketen zudem einen Resynchronisationsschritt vor bei dem der Inhalt des Schieberegisters vor der Ver Entschl sselung der eigentlichen Daten angepasst wird Dieser Mechanismus wurde nicht implementiert Weiterhin werden dem Klartext vor der Verschl sselung laut OpenPGP Spezifikation zuf llig generierte Daten vorangestellt random prefix data Bei der Entschl sselung wird dies in der aktuellen Version nicht ber cksichtigt Stattdessen werden neben dem reinen Klartext auch immer die zuf llig generierten Prefixdaten mit zur ckgegeben Die Prefixdaten erlauben zudem eine schne
95. l ssel paketen optional Wird dem Datenpaket also kein Sitzungsschl sselpaket vorangestellt geht OpenPGP implizit davon aus dass IDEA als symmetrischer Algorithmus verwen det wird Der Sitzungsschl ssel berechnet sich in diesem Fall aus dem MD5 Hashwert ber einer Passphrase Aus Sicherheitsgr nden sollte jedoch auf diesen Mechanismus verzichtet werden Der neueren Variante des Datenpakets dem Symmetrically Encryp ted Integrity Protected Data Packet muss daher nach CDF 07 auch mindestens ein Sitzungsschl sselpaket vorangehen Public Key Encrypted Session Key Packets Ein Public Key Encrypted Session Key Packet enth lt den mit dem ffentlichen Schl ssel eines Nachrichtenempf ngers verschl sselten Sitzungsschl ssel Pro Nachrichtenempf nger wird je ein solches Paket generiert und vor das symmetrisch verschl sselte Da tenpaket gestellt Um einen ffentlichen Schl ssel zu identifizieren wird im Public Key Encrypted Session Key Packet die Kennung ID des jeweiligen Schl ssels siehe hierzu Abschnitt 4 2 sowie der verwendete asymmetrische Algorithmus gespeichert Es k nnen sowohl RSA als auch ElGamal benutzt werden Symmetric Key Encrypted Session Key Packets Ein Symmetric Key Encrypted Session Key Packet sch tzt den Sitzungsschl ssel mit einem aus einer Passphrase generierten symmetrischen Schl ssel Pro Passphrase mit der der Sitzungsschl ssel verschl sselt werden soll wird dem symmetrisch verschl sselten Date
96. l nicht berechnet werden kann JWHO6 Die Berechnung der 2 Terminal Verl lichkeit kann mit Hilfe von exakten oder N he rungsverfahren erfolgen Wie in Col87 dargestellt haben die exakten Verfahren jedoch den Nachteil dass sie deutlich ineffizienter arbeiten als Approximationsverfahren letz tere aber nat rlich nur einen N herungswert liefern Eine Beschreibung der konkreten Verfahren geht jedoch ber den Rahmen dieser Arbeit hinaus Hierf r wird auf die Li teratur wie z B Col87 oder JWH06 verwiesen 32Die Unterscheidung zwischen keinem und unbekanntem Vertrauen in einen Schl sselbesitzer macht f r die in Abschnitt 3 2 2 1 vorgestellte Schl sselvalidierung ber das Netz des Vertrauens keinen Unterschied da dort nur Schl ssel mit kaum und vollst ndigem Vertrauen mit einbezogen werden Daher f hren die Autoren von JWH06 die Stufe unbekanntes Vertrauen nicht mit auf 21 Kapitel 4 OpenPGP Nachrichten Format Wie in der Einleitung zu dieser Arbeit bereits erw hnt stellt OpenPGP neben S MIME einen der wichtigsten Standards im Bereich der Verschl sselung und dem Signieren von E Mails dar OpenPGP baut auf der von Phil Zimmermann im Jahr 1991 entwickel ten kryptographischen Software Pretty Good Privacy PGP auf Aufgrund der gro en Popularit t von PGP und um anderen Programmen die Interoperabilit t mit PGP zu erm glichen wurden die Grundfunktionen von PGP sowie die verwendeten Datenstruk turen und Algorithme
97. latform JDT und PDE sind Teil des Eclipse Software Development Kits SDK welches frei verf gbar unter http www eclipse org downloads heruntergeladen werden kann 42 Kapitel 5 Eclipse Platform mentieren Neben Anwendungen aus dem Sektor der Softwareentwicklung k nnen Rich Client Applikationen erstellt werden die auf einer Untermenge der Plattformkomponen ten aufsetzen der sogenannten Rich Client Platform RCP RCP Anwendungen sind auf keine bestimmte Fachbereichsdom ne beschr nkt So gibt es beispielsweise Software L sungen f r den medizinischen Sektor den Bankenbereich oder den Automobilsektor IBM06 RCP Anwendungen werden in Abschnitt 5 4 beschrieben Die Komponenten der Eclipse Platform lassen sich in die Bereiche Benutzeroberfl che User Interface UI und Kernfunktionalit t Core trennen Die Ul Komponenten wer den von Anwendungen genutzt die eine Benutzeroberfl che ben tigen Die Core Komp onenten implementieren Ul unabh ngige Funktionalit t und k nnen daher auch in Ap plikationen ohne Benutzeroberfl che zum Einsatz kommen Abbildung 5 1 gibt einen berblick ber die Architektur der Eclipse Platform Eclipse Platform Java Development Team Tools JDT Workbench JFace Plug in Development Environment PDE Neues Werkzeug oder neue Anwendung Workspace Platform Runtime Abbildung 5 1 Eclipse Platform Architektur Die wichtigsten Komponenten werden im Folgenden beschrieben e Platfor
98. ll Dementsprechend liegen im de Ordner unterhalb vom nl Verzeichnis die Vorlagen f r das deutsche im en Ordner die Vorlagen f r das englische Handbuch Die Struktur des angezeigten Inhaltsverzeichnisses wird in den Dateien testToc cml und toc cml festgelegt die eigentlichen Seiten des Benutzerhandbuchs liegen als HTML Seiten im Unterordner html 6 8 Internationalisierung Eine Anforderung an den OpenPGP Client ist die Mehrsprachigkeit der Anwendung Die in der Benutzeroberfl che dargestellten Texte sollen zun chst in deutscher und engli scher sp ter gegebenenfalls auch in anderen Sprachen verf gbar sein Eclipse verwendet f r die Internationalisierung den Standardmechanismus von Java Die zu lokalisieren den Texte werden dabei in Property Resource Bundles im konkreten Fall in Property Dateien abgelegt Dabei handelt es sich um Textdateien die sogenannte Schl ssel Wert Paare key value pairs enthalten Der Schl ssel identifiziert dabei den zu lokalisierenden Text der Text selbst wird im Wert gespeichert Eclipse stellt hierf r den sogenann ten Externalisierungsmechanismus zur Verf gung der Entwickler bei der Erstellung von Resource Bundles unterst tzt Ein Bundle wird ber einen Namen und eine bestimmte Locale identifiziert so enth lt beispielsweise die Dateimessage_de properties mit der Localeangabe de Texte in deut scher Sprache w hrend message_en properties Texte in englischer Sprache enth lt Wenn Eclips
99. lte Daten eines EncryptedData Pakets im Puffer eines Dekompressionsfilters zwischengespeichert werden f hrt dies bei der weiteren Verarbeitung der Nachricht zu Fehlern Der Ein satz der Limiter Klasse soll dies verhindern Der Limiter beschr nkt die maximal erlaubte Anzahl von zu lesenden Bytes aus dem Eingabestrom Im Normalfall wird er mit der Paketl nge initialisiert e PacketHeaderLookAheadStream Der PacketHeaderLookAheadStream sucht im Eingabestrom nach dem Auftreten eines bestimmten OpenPGP Pakets Die Klasse wird bei Nachrichten die Pakete unbestimmter L nge enthalten ben tigt e PartialHeaderInputStream Implementiert das Einlesen eines partiell kodierten siehe Kapitel 4 1 Datenpa kets e PartialHeaderOutputStream Implementiert das Schreiben eines partiell kodierten Datenpakets e Radix64InputStream Implementiert einen InputStream der Radix64 kodierte Daten aus einem zeiche norientierten Eingabestrom liest und dekodiert e Radix640utputStream Diese Klasse kodiert Daten im Radix 64 Format e SignaturelnputStream SignatureInputStream verifiziert eingehende Daten mit Hilfe eines Signature Objekts e SignatureOutputStream SignatureQutputStream signiert ausgehende Daten mit Hilfe eines Signature Objekts Abbildung 6 4 zeigt die Hierarchie der von FilterInputStream abgeleiteten Klassen 108Siehe http java sun com javase 6 docs api java security Signature html 63 Kapitel 6 Design und Implementi
100. m Runtime Die Platform Runtime ist die Laufzeitumgebung fiir Plug ins Sie ist fiir die Ver waltung den Aufruf und das Beenden der Plug ins verantwortlich Vor der Eclipse Version 3 1 nutzte Eclipse ein eigenes Laufzeitsystem Dabei war es jedoch nicht m glich neue Plug ins dynamisch hinzuzuf gen bzw zu entfernen Um dieses Pro blem zu l sen und eine flexiblere Verwaltung der Plug ins zu erm glichen basieren 62Das C C Development Tooling Projekt CDT bietet beispielsweise eine IDE f r C C Siehe http www eclipse org cdt 63Die Abbildung stellt nur die elementaren Komponenten der Eclipse Platform dar 43 Kapitel 5 Eclipse Platform neuere Eclipse Versionen daher auf Equinor einer Implementierung der Open Services Gateway initiative OSGi R4 Spezifikation MLO05 beschreibt die OS Gi Spezifikation als Rahmen f r die Definition Erstellung und Ausf hrung von modularen Komponenten Die OSGi Spezifikation nennt diese Komponenten im Gegensatz zu Eclipse Bundles Da ein Plug in seit Eclipse 3 1 technisch gesehen nichts anderes als ein solches OSGi Bundle darstellt k nnen die Begriffe Plug in und Bundle als synonym betrachtet werden Del06 Wenn die Eclipse Platform gestartet wird identifiziert und analysiert die Runtime vorhandene Plug ins und erstellt daraus Registrierungsinformationen registry auf die andere Plug ins zur Laufzeit ber die Platform API zugreifen k nnen Eventuell auftretende Fehle
101. n Daten angeh ngt wird Die Pr fsumme wird verwendet um eventuell auftretende bertragungsfehler festzustellen Wie in Abbildung 4 11 dargestellt kodiert Base64 je drei Oktets des Eingabestroms zu vier 6 Bit Werten zwischen 0 und 63 Diese Werte werden anhand der in Abbildung 4 2 gezeigten Tabelle in ASCII Zeichen konvertiert Die Ausgabe der kodierten Zeichen er folgt dabei zeilenweise die maximale Zeilenl nge ist auf 76 Zeichen beschr nkt Enth lt der Eingabestrom eine nicht durch drei teilbare Anzahl an Oktets wird die Eingabe pro fehlendem Oktet mit einem Oktet der Wertigkeit 0 aufgef llt Dies kann je nach Ein gabel nge keinmal einmal oder zweimal erfolgen Die kodierte Ausgabe hingegen wird pro hinzugef gtem 0 Oktet um das F llzeichen erg nzt Die F llzeichen signalisieren 55Die in Radix 64 genutzte Base64 Konvertierung basiert auf dem RFC 1421 und wird im MIME Standard Multipurpose Internet Mail Extensions verwendet der in RFC 2045 definiert ist 37 Kapitel 4 OpenPGP Nachrichten Format Byte 1 Byte 2 Byte 3 alalololsloja ololslo jajo o lalalalaj lolajojo i Zeichen 1 Zeichen 2 Zeichen 3 Zeichen 4 Abbildung 4 11 Prinzip der Base64 Kodierung einer Dekodiersoftware die Anzahl von F lloktets Die Pr fsumme wird w hrend des Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichen 0 A 17 R 34 i 51 Z 1 B 18 S 35 j 52 0 2 C 19
102. n direkten Signaturen Der zugeh rige Schl ssel wird ber eine ID referenziert Wie bei den Widerruf Signaturen wird die Gr e auf 8KB limitiert CREATE TABLE DIRECT SIGNATURES ID INT NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT DIRECT SIGNATURES PK PRIMARY KEY PUBLIC KEY ID INT NOT NULL 69 Kapitel 6 Design und Implementierung des OpenPGP Clients DIRECT_SIGNATURE BLOB 8K NOT NULL SUB_KEY_BINDING_SIGNATURES Speichert die zu einem untergeordneten ffentlichen Schl ssel geh renden Subkey Binding Signaturen Der zugeh rige Schl ssel wird ber eine ID referenziert Die Gr e der Si gnaturen wird auf 8KB limitiert CREATE TABLE SUB_KEY BINDING SIGNATURES ID INT NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT SUB_KEY BINDING SIGNATURES PK PRIMARY KEY PUBLIC_KEY ID INT NOT NULL SUB_KEY BINDING SIGNATURE BLOB 8k NOT NULL USER_DS Die Tabelle speichert die zu einem ffentlichen Schl ssel geh renden Benutzerkennun gen Die maximale L nge einer Benutzerkennung betr gt momentan 2048 Zeichen Der zugeh rige Schl ssel wird ber eine ID referenziert CREATE TABLE USER_IDS ID INT NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT USER_IDS_PK PRIMARY KEY PUBLIC_KEY_ID INT NOT NULL USER ID VARCHAR 2048 NOT NULL USER_ATTRIBUTES Die Tabelle speichert die zu einem ffentlichen Schl ssel geh renden User Attributes In der aktuellen Version handelt es sich dabei ausschlie lich um Bilder
103. n ein prim res Schl sselpaar primary key und ein oder mehrere untergeordnete Schl sselpaare sub keys die zu einem Schl sselpaar zusammen gefasst werden 26Sjehe auch CDF 07 Sektion 12 2 TBei der Erstellung eines neuen Schl sselpaars in PGP werden die zugeh rigen Benutzeridentit ten samt Nutzerpr ferenzen mit dem eigenen privaten Schl ssel an den ffentlichen Schl ssel gebunden 15 Kapitel 3 Public Key Infrastrukturen Schl ssel In der Realit t kennt man allerdings oft nur einen kleinen Kreis der Kom munikationspartner pers nlich Zudem ist diese Form der Validierung bei einer gro en Anzahl von Teilnehmern unpraktisch Ash99 3 2 2 Validierung ber das Netz des Vertrauens Im Netz des Vertrauens wird die Validierung der ffentlichen Schl ssel an vertrau ensvolle Teilnehmer delegiert Ash99 Diese werden Trusted Introducers genannt Ein einfaches Beispiel soll dies illustrieren Angenommen Alice hat Bobs Schl ssel erfolgreich gepr ft und signiert Carl m chte nun mit Bob kommunizieren Zu diesem Zweck sendet Bob seinen signierten Schl ssel an Carl Da Carl Alice und somit auch der Signatur von Alice vertraut h lt er Bobs Schl ssel f r g ltig Die Authentizit t des Schl ssels wird also aus dem Vertrauen zu Alice abgeleitet PGP unterscheidet daher zwischen dem Ver trauen in einen Schl sselbesitzer trustworthiness of introducer oft auch als owner trust bezeichnet und dem Vertrauen in die A
104. n erl utert Nachrichtenverarbeitung OpenPGP Nachrichten werden von der Bibliothek als byte Array verarbeitet Eine oder mehrere Nachrichten werden dabei aus einer Datei eingelesen und dann im Speicher verarbeitet Diese L sung ist relativ einfach umzusetzen hat aber den Nachteil dass sehr gro e Nachrichten GnuPG beispielsweise verarbeitet problemlos Dateien gr er als 500MB je nach vorhandenem Speicher im Rechner des Anwenders gar nicht oder nur sehr inperformant analysiert und verarbeitet werden k nnen Zudem werden beim Einlesen von Datenpaketen insbesondere auch bei Verwendung von partieller Kodierung redundante Kopien der Nachrichtendaten erstellt was zu einer weiteren Erh hung der Speicherlast f hrt Um diese Probleme zu umgehen stehen prinzipiell zwei M glichkeiten zur Verf gung Zum einen k nnen in Java sogenannte MemoryMapped Files verwendet werden Die relevante Klasse hierbei ist FileChannel aus dem Paket java nio Sie 86Sjehe http java sun com javase 6 docs api java nio channels FileChannel html 54 Kapitel 6 Design und Implementierung des OpenPGP Clients verf gt ber die map Methode bei der ein Teil einer Datei im Speicher abgelegt wird Der Zugriff erfolgt dann hnlich wie auf ein byte Array Der Vorteil dieser Methode ist dass nicht mehr die komplette Datei eingelesen werden muss andererseits weist die Java API Beschreibung darauf hin dass dieser Mechanismus zum Gro teil vom zugrundelie gend
105. n erstmalig 1996 in Form des RFC 19913 ver ffentlicht damals basierend auf PGP 2 6 x Diese Version von PGP bot nur eine eingeschr nkte Auswahl an kryptographischen Algorithmen Sie verwendete RSA f r asymmetrische Verschl sse lung IDEA f r symmetrische Verschl sselung und MD5 als Hashfunktion Im Jahr 1998 wurde OpenPGP durch die IETF zum offenen Standard erkl rt und im RFC 2440 formalisiert Der RFC 2440 basiert auf der Nachfolgerversion PGP 5 x und erweiterte den RFC 1991 in mehreren Bereichen Zum einen wurden neue Algorithmen eingef hrt Als asymmetrische Algorithmen stehen in dieser OpenPGP Version neben RSA DSA und ElGamal zur Verf gung Die Liste der symmetrischen Verfahren wurde unter anderem um 3DES CAST und Blowfish erg nzt SHA 1 ersetzte MD5 als neue Standard Hashfunktion Als weitere Neuerung wurde das Protokoll um einige Daten strukturen wie z B neue Schl ssel und Signaturversionen erweitert So ist es seit RFC 2440 beispielsweise m glich unterschiedliche asymmetrische Schl ssel f r Verschl sselung und Signieren zu verwenden Die aktuelle Version der OpenPGP Spezifikation findet sich im RFC 4880 CDF 07 33Siehe http www ietf org rfc rfc1991 txt 34IDEA steht fiir International Data Encryption Algorithm Dabei handelt es sich um ein von Xuejia Lai und James L Massey entwickeltes symmetrisches Verfahren Die verwendete Schl sselgr e betr gt 128 Bit 35MD5 wird im RFC 1321 spezifizier
106. n geh ren unter anderem G1005 e Eine Formularkomponente Form die in Views Editoren etc eingebettet werden kann Verwaltung der im Form verwendeten Farben Auslegen von Formularkomponenten vergleichbar mit einer Tabelle in HTML e Neue in Formularen einsetzbare Komponenten wie Sektionen scrollbare Bereiche Hyperlinks etc Alle im OpenPGP Client verwendeten Wizards siehe Abschnitt 6 6 3 sowie der View f r die Schl ssel bersicht siehe Abschnitt 6 6 1 legen ihre Komponenten mit Hilfe von Formularen aus F r eine ausf hrlichere Beschreibung von Formularen siehe Ani07 und G1005 6 6 2 4 Icons Um den OpenPGP Client von dem normalen Eclipse Aussehen abzuheben wurden Teile der in der Anwendung verwendeten Icons ersetzt Der OpenPGP Client verwendet Icons aus den folgenden Icon Sets die jeweilige Lizenz unter der die Icons ver ffentlich wurden ist sofern bekannt in Klammern angegeben Eclipse Standard Icons EPL Snowish 1 317 GPL NuoveXT 2 214 LGPL Silkt Creative Commons Attribution 2 5177 e Isoglass LGPL 121Die Icons stehen vermutlich wie Eclipse selbst unter der Eclipse Public License EPL Dies war aber nicht konkret zu ermitteln Siehe auch http www eclipse org org documents epl v10 php 22http www kde look org content show php content 42905 123GNU General Public License Siehe http www fsf org licensing licenses gpl html 124nttp www kde look org content show p
107. n mit dem Projekt zu verbinden IBM06 Im oben beschriebenen Beispiel k nnte das Projekt als Java Nature markiert sein Workbench Die Workbench stellt die erweiterbare graphische Benutzeroberfl che von Eclipse dar Wie in Abbildung 5 1 dargestellt baut sie auf den beiden Toolkits Standard Widget Toolkit SWT und JFace auf 64Sjehe http www eclipse org equinox 65Sjehe auch http www osgi org 66 API steht f r Application Programming Interface und definiert die Schnittstelle eines Programms um anderen Anwendungen den Zugriff auf Dienste dieses Programms zu erm glichen 67Das Workspace Verzeichnis kann jederzeit ber die Eclipse Einstellungen angepasst werden 68Ein Toolkit Werkzeugkasten ist eine Programmbibliothek die bestimmte Funktionen f r die Erstel lung von Software zur Verf gung stellt mit dem Ziel den Entwicklungsaufwand zu verringern 44 Kapitel 5 Eclipse Platform Standard Widget Toolkit Das Standard Widget Toolkit SWT ist eine in Java geschriebene Gra phikbibliothek Es stellt eine Sammlung von Basiskomponenten Widgets wie Schaltflachen Auswahllisten Textfelder hierarchische Baumdarstellung Tree etc sowie graphische Grundfunktionen zur Verf gung die f r die Ent wicklung von Benutzeroberfl chen verwendet werden k nnen Das SWT ver wendet f r die Darstellung der visuellen Elemente soweit m glich die native Implementierung des Fenstersystems window system des zugrundelieg
108. n von Nachrichten Nachrichten werden ber die Klasse MessageParser eingelesen Sie definiert die Metho den processEncryptedMessage processCompressedMessage processSignedMessage und processKeys die f r die Verarbeitung von verschl sselten komprimierten und si gnierten Nachrichten sowie von transferierbaren Schl sseln verantwortlich sind Intern werden beim Aufruf der Methoden die drei boolschen Statusvariablen keysOnly dec rypt und verify aktualisiert die die erlaubten Nachrichtentypen beschr nken Ist bei spielsweise die Variable keysOnly gesetzt verarbeitet der MessageParser ausschlie lich transferierbare Schl ssel Danach rufen alle Methoden die Funktion processMessages auf die auf einer Menge von Quelldateien arbeitet Pro Quelldatei wird der folgende rekursive Algorithmus durchlaufen 1 Pr fe ob die Datei mit einem g ltigen Pakettyp beginnt 2 Pr fe ob die Datei bin r oder Radix 64 kodiert ist und initialisiere je nach Ergebnis die IO Objekte 3 Pr fe ob das Dateiende erreicht wurde 4 Wenn nein dann bestimme den Nachrichtentyp und erzeuge ein Nachrichtenobjekt des entsprechenden Typs 65 Kapitel 6 Design und Implementierung des OpenPGP Clients 5 Pr fe ob der Nachrichtentyp f r die aktuellen Einstellungen der Statusvariablen g ltig ist 6 Lese die Nachricht ber das Nachrichtenobjekt ein 7 Rekursiver Aufruf von Schritt 3 Nachrichten werden mit der Klasse MessageFactory erzeugt die das
109. nPGP 1 poblic T Sichten gt eevee i E 1E org apache logij Sequence gt E org ecipsehelp webapp ntl subk orgecipsefcend aryUserdttibuted yetSubKeys yetUserAttributes sDirectKeySignatures ckinputStream setDirectkeySignatureslist lt I setSubkeyslistelSubkeyCont sellker ttibutesflistellser t l public void parse Push sageParser parser E Console Error Log Problems Tasks CVS Repositories No consoles to display at this time Sichten Abbildung 5 2 Eclipse Workbench aktiver Editor ist innerhalb eines Workbench Fensters in allen Perspektiven gleichzei tig ge ffnet oder geschlossen Wird er in einer Perspektive geschlossen wird er somit auch in allen anderen Perspektiven geschlossen Zudem k nnen Editoren Aktionen zum Hauptmen und zur Toolbar beisteuern Sicht View Eine Sicht stellt meist kontext sensitive Informationen dar die in Zusammenhang mit der aktell im Editor ausgef hrten Aufgabe stehen Dies kann z B die Darstellung von hierarchischen Informationen wie die Paketstruktur in einem Java Projekt oder aber auch die Anzeige der Eigenschaften eines gerade bearbeiteten Objekts o sein Die sichtbaren Views werden um die Editor Area herum im Workbench Fenster arrangiert Mehrere Sichten k nnen dabei zu einem sogenannten Stack zusammengefasst werden Ausserdem ist es m glich eine Sicht aus dem Hauptfenster in ein separates Fenster
110. nieren von Daten Im hybriden Verschl sselungsschema wird dann entsprechend vor der symmetrischen Verschl sselung die Signatur erzeugt und diese dann an schlie end mit den Daten durch den Sitzungsschl ssel verschl sselt e Kompression Um die Nachrichtengr e m glichst gering zu halten komprimiert OpenPGP in der Regel Daten bevor sie verschl sselt werden Darauf wird bei der Beschreibung der OpenPGP Pakete im Abschnitt 4 1 3 n her eingegangen e Radix 64 Konvertierung OpenPGP erlaubt die Kodierung von Daten in Form von 7 Bit ASCII Zeichen Dies wird als Radix 64 Konvertierung bezeichnet und ausf hrlich im Abschnitt 4 3 erl utert Da im Rahmen der Entwicklung des OpenPGP Clients auch die OpenPGP Bibliothek in gr erem Umfang neugestaltet wird siehe Kapitel 6 stellt das weitere Kapitel die wichtigsten Elemente des OpenPGP Nachrichten Formats vor 4 1 Aufbau von OpenPGP Nachrichten OpenPGP verarbeitet und speichert Daten in Form von bin ren Nachrichten Je nach verwendeter Funktion kommen unterschiedliche Nachrichtentypen zum Einsatz So wer den verschl sselte Daten zum Beispiel in einer Encrypted Message kodiert komprimierte Daten hingegen in einer Compressed Message eine Beschreibung der g ltigen Nachrich tentypen findet sich in Abschnitt 4 1 4 39 ASCII steht f r American Standard Code for Information Interchange Dabei handelt es sich um eine 7 Bit Zeichenkodierung die aus 128 verschiedenen Zeichen bes
111. nken ist die Er eignisprotokollanzeige beim Start des Programms minimiert dass hei t es ist nur die Titelleiste des Views sichtbar Der OpenPGP Client verwendet nur eine Perspektive siehe Kapitel 5 2 die das Layout des Fensters und die Positionierung der Views vorgibt Sie ist in der Datei de tud cdc op enpgp ui Perspective definiert und wird in der von der Workbench aufgerufenen ApplicationWorkbenchAdvisor Klasse als initiale Perspektive gesetzt Men Toolbar RRPE Tt R Schl ssel Liste aller ffentlichen Schl ssel ffentlicher Schl ssel PGP Global Directory Verification Key Detailansicht me me me Sie besitzen keinen passenden privaten Schlussel testt Schl sselliste wow Werner Koch Prim re Benutzerkennung Name PGP Global Directory Verification Key Email Philip R Zimmermann David M Shaw Kennung Fingerabdruck Kennung 9710 B898 CAST AD7C PGP Global Directory Verification Key Fingerabdruck 50BB 6FFC 9719 DFD2 BEBB 04C6 9710 B89B CAS7 AD7C Werner Koch dist sig G ltigkeit Vertrauen G ltigkeit Unbekannt Vertrauen Unbekannt Carsten Langsfeld bis morgen l uft morgen aus test test asd testi testl Typ Datum test2 test2 Algorithmus RSA Lauft ab am Niemals Schl ssell nge 2048 Erstellt am 06 12 04 04 33 Hiro Dudani OpenPGP Version 4 Ereignis Protokoll 35 RXAB Ereignisprotokoll Anzeige Abbildung 6 8 Aufbau des Hauptfensters 76 Ka
112. nn der zugeh rige Schl ssel vom Schl sselbundeigner erzeugt wurde oder er im Besitz des privaten Schl ssels ist Diese Schl ssel sind automatisch g ltig 3 2 2 2 Vertrauen in die Authentizit t eines Schl ssels Die Authentizit t eines Schl ssels kann basierend auf den vergebenen Vertrauenswerten f r die Schl sselbesitzer wie folgt gepr ft werden Ein Schl ssel s ist nach AR96 vollst ndig g ltig completely valid wenn 1 der ffentliche Schl ssel dem Schl sselbundbesitzer geh rt 2 der ffentliche Schl ssel von mindestens C Teilnehmern signiert wurde denen vollst ndig vertraut wird und die selbst im Besitz eines vollst ndig g ltigen Schl s sels sind 3 der ffentliche Schl ssel von mindestens M Teilnehmern signiert wurde denen kaum vertraut wird und die selbst im Besitz eines vollst ndig g ltigen Schl ssels sind Die Werte C und M stehen f r COMPLETES_NEEDED und MARGINALS_NEEDED Man nennt sie auch Skepsis Parameter skeptism parameters Sie reflektieren die eigenen Sicherheits Regeln des Benutzers hinsichtlich seines Vertrauens in PGP Signaturen AR96 Formal wird die Berechnung der Schl sselzul ssigkeit key legitimacy L in JWH06 wie folgt dargestellt Lae Der Wert c entspricht dabei der Anzahl der Teilnehmer mit vollst ndigem Vertrauen und vollst ndig g ltigem Schl ssel m entspricht der Anzahl der Teilnehmer mit vollst ndig g ltigem Schl ssel denen kaum V
113. npaket ein Symmetric Key Encrypted Session Key Packet vorangestellt Um einen symmetrischen Schl ssel aus einer Passphrase zu erzeugen verwendet Open PGP sogenannte String To Key Specifier S2K die den Schl ssel ber eine Hashfunk tion berechnen OpenPGP unterscheidet verschiedene S2K Typen Im einfachsten Fall wird lediglich die Hashfunktion auf die Passphrase angewendet Aus Sicherheitsgr nden gibt es jedoch auch bevorzugte Varianten die der Passphrase einen zuf lligen Wert das sogenannte Salz salt hinzuf gen bzw eine iterierte Hashberechnung durchf hren um m gliche Angriffe zu verhindern Ein S2K kann nun in einem Symmetric Key Encrypted Session Key Packet auf zweierlei Art Anwendung finden Enth lt das Sitzungsschl ssel 44cR oder r steht f r den Wagenriicklauf Carriage Return der im ASCII Zeichensatz durch das Zeichen 13 dargestellt wird LF oder n steht f r Linefeed und ist Zeichen 10 des ASCII Zeichensatzes 45Siehe hierzu CDF 07 Sektion 3 7 29 Kapitel 4 OpenPGP Nachrichten Format paket den Sitzungsschl ssel selbst so wird der S2K verwendet um den Sitzungsschl ssel zu entschl sseln Alternativ ist es auch m glich nur den S2K im Sitzungsschl sselpaket zu speichern In diesem Fall generiert der S2K den f r das Datenpaket verwendeten Sitzungsschl ssel Das Sitzungsschl sselpaket enth lt neben dem S2K ein Oktet das angibt mit welchem symmetrischen Algorithmus der Sitzungsschl ssel verschl
114. nutzeridentit ten Fotos etc navigieren und die Eigen schaften des aktuell selektierten Objekts betrachten kann Eclipse stellt f r diesen Anwendungsfall den sogenannten Master Details Block aus dem Paket org eclipse ui forms zur Verf gung Der Master Details Block unter teilt den View in einen linken Bereich in dem die Masterobjekte zum Beispiel in Form einer Liste oder Baumstruktur dargestellt werden und einen rechten Detailbereich der die Eigenschaften eines selektierten Masterobjekts anzeigt Pro Objekttyp der in der Masterliste vorkommt wird eine Detailseite innerhalb des Master Details Block re gistriert Bei Selektion eines Masterobjekts wird die Detailansicht mit der zugeh rigen Seite aktualisiert Der im View dargestellte Master Details Block wird von der Klasse de tud cdc openpgp ui views KeysMasterDetails implementiert Der konkrete Ma sterbereich zeigt die Schl sselliste in Form einer Baumstruktur an Intern wird hierf r die Klasse org eclipse jface viewers TreeViewer genutzt die wiederum auf der SWT Tree Komponente aufbaut Im rechten Bereich werden die folgenden Detailseiten angezeigt die im Paket de tud cdc openpgp ui views liegen e KeyDetailsPage Stellt die Eigenschaften eines ffentlichen Hauptschl ssels dar e SubKeyDetailsPage Stellt die Eigenschaften eines Unterschl ssels dar e SignatureDetailsPage Zeigt die Eigenschaften einer Signatur an e UserldDetailsPage Zeigt die Eigenschaften einer B
115. onen stan dardm ig zur Verf gung So k nnen komplexe Anwendungsbausteine wie Assistenten Wizards Benutzereinstellungen User Preferences Hilfemodul Updateservice etc mit relativ wenig Aufwand in eine eigene Applikation integriert werden Zudem lassen sich mit SWT und JFace moderne Benutzeroberfl chen gestalten die sofern m glich das Look amp Feel des verwendeten Betriebssystems nutzen Ein weiterer wichtiger Entschei dungspunkt ist das modulare Design von Eclipse Durch Hinzuf gen von neuen Plug ins kann der OpenPGP Client flexibel um zus tzliche Funktionen erweitert werden Eine m gliche Alternative zur Eclipse Platform ist die NetBeans Platform von Sun Micro systems mit der ebenfalls Rich Client Anwendungen erstellt werden k nnen Wie Eclipse ist auch Netbeans komponentenbasiert baut f r die graphische Darstellung al 81Sjehe http www netbeans org und insbesondere http platform netbeans org 82Siehe http de sun com 83F r einen Vergleich der beiden Plattformen siehe beispielsweise http blogs sun com geertjan en try eclipse_platform_vs_netbeans_platform 52 Kapitel 6 Design und Implementierung des OpenPGP Clients lerdings auf Swing auf Da jedoch einige parallele Projekte am Institut bereits Eclipse nutzen erscheint die aktuell gew hlte L sung insbesondere unter dem Gesichtspunkt einer sp teren Integration als zukunftsorientierter 6 2 Entwicklungsumgebung F r die Entwicklung des O
116. penPGP Client wird die zur Zeit aktuelle Eclipse Version 3 3 1 verwendet Als Java Laufzeitumgebung Java Runtime Environment JRE kommt Java 6 Update 2 zum Einsatz Die Java Laufzeitumgebung wird mit der Anwendung ausgeliefert dass heisst auf dem Zielsystem muss kein Java installiert sein 6 3 bersicht OpenPGP Client Plug ins Der OpenPGP Client besteht aus einer Reihe von Plug ins Die wichtigsten dieser Plug ins werden hier in Kurzform vorgestellt und im weiteren Verlauf des Kapitels detailiert erl utert e de tud cdc openpgp core Das Core Plug in enth lt die aktualisierte Version der OpenPGP Bibliothek sowie die Datenbank in der die OpenPGP Schl ssel gespeichert werden siehe Abschnitt 6 5 e de tud cdc openpgp ui Das UI Plug in implementiert die eigentliche Anwendung Application Klasse und Produkt sowie die Benutzeroberfl che des OpenPGP Clients siehe Abschnitt 6 6 e de tud cdc openpgp presentation Implementiert die Pr sentation des OpenPGP Clients die verwendet wird um das Look amp Feel der Anwendung anzupassen siehe Abschnitt 6 6 2 2 e de tud cdc openpgp help Enth lt eine einfache Vorlage f r eine Benutzerhandbuch welches innerhalb des Eclipse Hilfesystems angezeigt werden kann e org eclipse ui views log Dieses Plug in implementiert den Standard Eclipse Error Log View der f r die An zeige von aufgetretenen Fehlern Warnungen etc verwendet wird siehe Abschnitt 6 9 84Siehe http java sun com javase t
117. pitel 6 Design und Implementierung des OpenPGP Clients 6 6 2 Individuelle Anpassung der Eclipse Oberflache Ein Ziel beim Entwurf der Benutzeroberflache des OpenPGP Client war die einfache Be dienbarkeit der Anwendung um auch Anwendern ohne kryptographische Kenntnisse eine moglichst intuitive Nutzung der verschiedenen Funktionen zu erlauben Im Standardfall erbt eine RCP Anwendung das Look amp Feel von Eclipse das heisst die Oberflache sieht ge nau so aus und verhalt sich wie Eclipse selbst Um dem OpenPGP Client ein individuelles Aussehen zu verleihen welches sich von der typischen Eclipse Oberfl che abhebt wurde die Werkzeugleiste Toolbar sowie die zugrundeliegende Oberfl chenpr sentation durch ein neues Design Farbe Icons etc ersetzt Zudem bietet die Workbench im Standard fall zahlreiche Funktionen die einen unge bten Anwender eher berfordern So k nnen beispielsweise Views per Drag amp Drop verschoben geschlossen minimiert maximiert oder vom Workbenchfenster entkoppelt werden Um die Arbeit mit dem OpenPGP Client zu erleichtern und Anwenderfehler zu minimieren wurde dieses Standardverhalten daher durch Anpassung der Pr sentation berschrieben Die durchgef hrten nderungen und verwendeten Iconsets werden nun n her beschrieben 6 6 2 1 Werkzeugleiste Beim Starten von Eclipse erzeugt die Workbench das Hauptfenster der Anwendung Dies geschieht in der Methode public void createWindowContents final Shell shell in der
118. plementieren das von Eclipse vorgegebene Interface IWorkbenchPreferencePage Beide Pr ferenzseiten sind in Abbildung 6 11 dargestellt Eca Filtertext eingeben Schl sselserver rv Spracheinstellungen Schl sselserver Hinzuf gen L schen oder Editieren von Schl sselservern Spracheinstellungen W hlen Sie aus in welcher Sprache Dialoge Men eintr ge etc angezeigt werden sollen pgp zdv uni mainz de80 a pgpkeys pca dfn de80 Sprache Deutsch Standardwerte wiederherstellen bernehmen Standardwerte wiederherstellen bernehmen Ok Abbrechen Abbrechen Abbildung 6 11 Pr ferenzseiten in den Benutzereinstellungen 6 7 Benutzerhandbuch Eine sehr einfach gehaltene Vorlage f r ein Benutzerhandbuch befindet sich im Plug in de tud cdc openpgp help Damit das Benutzerhandbuch automatisch dem Hilfesy stem hinzugef gt wird erweitert das Plug in den Extension Point org eclipse he lp toc Die Vorlage enth lt noch keinen Inhalt sondern demonstriert stattdessen wie 84 Kapitel 6 Design und Implementierung des OpenPGP Clients Hilfeinhalte in die Anwendung integriert werden k nnen Als Vorlage wurde die Eclipse Standardhilfeseite verwendet Die Vorlage sieht die Verwendung von mehrsprachigen Hil fetexten vor Diese m ssen unterhalb des nl Ordners liegen damit Eclipse zur Laufzeit anhand der eingestellten Locale bestimmen kann welches Benutzerhandbuch angezeigt werden so
119. r e write OutputStream out MessageCreator generator e getType Das heisst ein bestimmtes Nachrichten Objekt wei wie die zugeh rige OpenPGP Nach richt eingelesen bzw erzeugt wird Es bedient sich dabei der verschiedenen OpenPGP Pakete siehe Abschnitt 6 5 2 5 Die Klassen MessageParser siehe Abschnitt 6 5 2 3 und MessageCreator siehe Abschnitt 6 5 2 4 steuern dabei den Prozess der Nachrich tenverarbeitung und erzeugung Die Methode getType dient der internen Identifika tion des Nachrichtentyps Die in der Bibliothek verwendeten Nachrichtentypen sind in Abbildung 6 5 aufgef hrt Hierbei ist zu beachten dass auch transferierbare Schl ssel das IMessage Interface implementieren und somit wie alle anderen Nachrichten verarbeitet werden Ein Problem ergab sich bei der Entwicklung der Klartext Signatur siehe Kapitel 4 3 die von der Klasse ClearSignedMessage repr sentiert wird Eine Klartext Signatur de finiert die in den Signaturen verwendeten Hashalgorithmen vor dem Radix64 kodierten Text Die Signaturen selbst mit den Informationen ber den f r die jeweilige Signatur verwendeten Schl ssel folgen nach dem Text Die dahinterstehende Idee ist dass die Hashwerte bei der Dekodierung des Textes direkt berechnet und f r die Verifikation der 64 Kapitel 6 Design und Implementierung des OpenPGP Clients _einterface gt E Message getTypeO parse write TransferableSecretKey H Sign
120. r werden dabei protokolliert Die Registry kann auch zu einem sp teren Zeitpunkt ver ndert werden so das es m glich ist Plug ins zu l schen zu ersetzen oder neu hinzuzuf gen Um den Speicherverbrauch und die Startdauer der Plattform m glichst gering zu halten werden die verwalteten Plug ins nicht direkt beim Start der Plattform aktiviert sondern erst wenn der zugrundeliegende Code tats chlich ben tigt wird Dies wird als lazy loading bezeichnet Workspace Das Workspace Plug in ist f r die Verwaltung von Anwendungs oder Werkzeugres sourcen wie Ordnern Dateien etc zust ndig Diese Ressourcen werden in Form von Projekten organisiert die sich im Allgemeinen in einem einzigen Workspace Verzeichnis im Dateisystem befinden Dieses wird vom Anwender beim Start von Eclipse einmalig festlegt Prinzipiell ist es aber auch m glich Projekte auf ver schiedene Dateiverzeichnisse verweisen zu lassen die sich nicht direkt im Workspace befinden Der Zugriff auf die Ressourcen innerhalb einer Anwendung ist ber ein API m glich Ein einfaches Beispiel f r ein Projekt ist ein Java Projekt wie es von den JDT verwendet wird Es enth lt in der Regel den vom Benutzer bearbeite ten Java Quellcode kompilierte Dateien Packagestrukturen in Form von Ordnern eingebundene Programmbibliotheken etc Zus tzlich kann einem Projekt eine oder mehrere sogenannte Naturen natures zugewiesen werden um automatisch be stimmte Konfigurationseigenschafte
121. r Anwender folgende Einstellungen vornehmen e Name und E Mail Adresse f r die Erzeugung der prim ren Benutzerkennung e Schl sselpaar Typ z B DSA Hauptschl ssel RSA Subschl ssel e Schl sselgr e in Bit e G ltigkeitsdauer des Schl sselpaars Auf der zweiten Seite kann der Anwender die Passphrase festlegen mit welcher der ge heime Teil des Schl sselpaars gesch tzt wird Die Sicherheit des gew hlten Passworts wird dem Anwender ber eine Fortschrittsanzeige signalisiert Der Wert der dieser 128http www everaldo com crystal 29h ttp www kde look org content show php Crystal Diamond Icons content 45576 130ht tp tango freedesktop org Tango_Desktop_Project 131h tp creativecommons org licenses by sa 2 5 132http help eclipse org help33 index jsp topic org eclipse platform doc isv reference api org eclipse jface wizard Wizard html 133http help eclipse org help33 index jsp topic org eclipse platform doc isv reference api org eclipse jface wizard WizardPage html 80 Kapitel 6 Design und Implementierung des OpenPGP Clients Fortschrittsanzeige zugrunde liegt wird tiber eine modifizierte Version des Open Sour ce Programms PasswordCheck ermittelt das eine Gewichtung der Passphrase an hand der eingegebenen Zeichentypen z B Sonderzeichen Klein und Gro schreibung etc berechnet Die auf den Seiten eingegeben Daten bzw ausgew hlten Werte werden im Wizard in einem KeyPairTypeGenerationPar
122. rd Fensterlayout zur ckgegrif fen werden 120Siehe https bugs eclipse org bugs show_bug cgi id 73821 77 Kapitel 6 Design und Implementierung des OpenPGP Clients Abbildung 6 9 Die Werkzeugleiste des OpenPGP Clients 6 6 2 2 Pr sentation In Kapitel 5 2 wurde das Konzept von Perspektiven erl utert Eine Perspektive ar rangiert Views und Editoren in Form von sogenannten Stapeln Stacks die Objekte gleicher Art zusammenfassen So kann ein Stack beispielsweise mehrere Views enthal ten zwischen denen per Reiter Tab gewechselt werden kann Es gibt drei verschiedene Stapeltypen View StandaloneView und Editor Das Aussehen und Verhalten dieser Stapel wird von einer Pr sentation presentati on bestimmt Um das Look amp Feel des OpenPGP Clients anzupassen wurde eine eigene Pr sentation implementiert Sie befindet sich im Plug in de tud cdc openpgp pre sentation Zun chst muss daf r der Extension Point org eclipse ui presentation Factories erweitert werden Der Extension Point deklariert eine Factory Klasse Open PGPClientPresentationFactory welche die Klasse AbstractPresentationFactory erweitert Die Factory Klasse wird von der Workbench f r die Erzeugung der unter schiedlichen Stapeltypen aufgerufen und generiert pro Typ eine sogenannte StackPre sentation Da in der aktuellen Version des OpenPGP Clients ausschlie lich Views zum Einsatz kommen verwendet die Pr sentation f r alle drei Typen dieselbe Stackpresenta
123. rg eclipse ui plugin AbstractUIPlugin im anderen Fall Alle Klassen innerhalb eines Plug ins sind zun chst gekapselt und nicht f r andere Plug ins sicht 78 Java Archives wurden urspr nglich f r den kompakten Download von Java Applets eingef hrt um Bandbreite zu sparen und die notwendigen Daten in einem Paket zu laden Sie werden aber oft auch f r das Deployment von Java Bibliotheken oder Paketen verwendet Ein JAR ist ein ZIP komprimiertes Archiv das mit Metadaten ber den Inhalt des Archivs angereichert werden kann Die Metadaten stehen in einer sogenannten Manifest Datei MANIFEST MF die sich im Verzeichnis META INF befindet Siehe http java sun com javase 6 docs technotes guides jar jarGuide html und http java sun com javase 6 docs technotes guides jar jar html 79Die hier beschriebene Darstellung bezieht sich auf Eclipse ab Version 3 1 In vorherigen Versionen wurden die Plug in Dateien in einem Plug in Verzeichnis Plug in Directory zusammengefasst Zudem enthielt die plugin xml zus tzlich die Metainformationen aus der Datei MANIFEST MF 48 Kapitel 5 Eclipse Platform bar Jedes Plug in reguliert den Zugriff auf die eigenen definierten Klassenpakete im Manifest und gibt zudem an welche anderen Plug ins bei der Ausf hrung ben tigt wer den Diese Informationen stehen in den Sektionen Export Package und Require Bundle Das Manifest des Plug ins das die graphische Benutzeroberflache des OpenPGP Clients implementiert sieht be
124. rithmen betr gt beispielsweise 64 oder 128 Bit Es gibt eine Vielzahl von symmetrischen Algorithmen Zu den bekanntesten Vertretern geh ren unter anderen 3DES TripleDES Blowfish und Rijndael der im Jahr 2000 vom National Institute of Standards and Technology NIST zum Advanced Encryption Standard AES erkl rt wurde 10Siehe csrc nist gov publications fips fips46 3 fips46 3 pdf 1Siehe http www schneier com blowfish html 12Siehe http csre nist gov archive aes index html Kapitel 2 Kryptographische Grundlagen Einen anderen Ansatz verfolgen Public Key Verfahren die unterschiedliche Ver und Entschl sselungsschl ssel nutzen Jeder Teilnehmer besitzt ein eigenes Schl sselpaar be stehend aus einem privaten private key und einem ffentlichen Schl ssel public key Im Gegensatz zu den symmetrischen Verfahren l t sich der private Schl ssel nicht in an gemessener Zeit aus dem ffentlichen Schl ssel berechnen Der private Schl ssel verl t in diesem Szenario optimalerweise niemals den eigenen Besitz und wird in der Regel an einem sicheren Ort verwahrt Der ffentliche Schl ssel hingegen wird anderen Kom munikationspartnern zur Verf gung gestellt Ein geheimer Schl sselaustausch vor der Kommunikation ist somit nicht mehr notwendig Dies vereinfacht die Schl sselverwal tung erheblich Wenn Alice eine Nachricht an Bob senden m chte muss sie sich zun chst den ffentlichen Schl ssel von Bob besorgen z B
125. rsion eine Menge von asym metrischen Unterschl sselpaaren subkey pairs oder subkeys die dem Prim rschl ssel 30 Kapitel 4 OpenPGP Nachrichten Format zugeordnet sind Dabei wird das prim re Schliisselpaar f r das Signieren und die unterge ordneten Schl sselpaare f r die Verschl sselung von Daten genutzt Die Schl sselmateri alpakete stellen einen integralen Bestandteil eines OpenPGP Keys dar Sie enthalten die ffentlichen oder privaten Schl ssel eines Schl sselpaars OpenPGP unterscheidet zwi schen Public Key Packet Public Subkey Packet Secret Key Packet und Secret Subkey Packet Public Key Packet Public Subkey Packet Ein Public Key Packet speichert den ffentlichen Schl ssel eines prim ren Schl sselpaars ein Public Subkey Packet den ffentlichen Schl ssel eines untergeordneten Schl ssel paars Die beiden Pakettypen sind von der Struktur her identisch sie unterscheiden sich nur durch die Bedeutung des ffentlichen Schl ssels Public Key und Subkey Packets existieren in zwei verschiedenen Versionen Version 3 wurde mit PGP 2 6 eingef hrt die aktuellen Pakete der Version 4 in PGP 5 0 Das Format eines Paketes der Version 4 ist in Abbildung 4 6 dargestellt Die Public Key Parameter das eigentliche Schl ssel Paketversionsnummer Aktuell 4 1 Oktet Erstellungsdatum des Schl ssels 4 Oktets Verwendeter Public Key Algorithmus 1 Oktet Public Key Daten Anzahl Oktets abhangig vom verwendeten Algorithmu
126. s Abbildung 4 6 Struktur eines Public Key Subkey Packet der Version 4 material werden in Form von sogenannten Multiprecision Integers MPI gespeichert Bei MPIs handelt es sich um gro e positive Ganzzahlen unsigned integer denen eine Langenangabe bestehend aus 2 Oktets vorangestellt wird Die Langenangabe kodiert die Lange des eigentlichen Zahlenwertes in Bits Public Key Subkey Packets der Version 3 unterst tzen aussschlieBlich RSA Pakete der Version 4 RSA ElGamal und DSA Da die Algorithmen unterschiedliche Parameter verwenden ist die Anzahl der MPIs im Public Key Subkey Packet abh ngig vom verwendeten Verfahren Ein ffentlicher Schl ssel wird in OpenPGP ber eine Schl sselidentit t Key ID oder 46Djes ist bedingt durch die Beschr nkungen hinsichtlich der zur Verf gung stehen Algorithmen in PGP 2 6 x Siehe auch die Einleitung dieses Kapitels 31 Kapitel 4 OpenPGP Nachrichten Format einen Fingerabdruck Fingerprint identifiziert Die Berechnung von Schl sselidentit t und Fingerabdruck unterscheidet sich in Abh ngigkeit von der Version des Public Key Subkey Packet Die Identit t eines Schl ssels in der Version 3 sind die unteren 64 Bit des Public Key Modulus des RSA Schliissels Die Key ID hat somit eine L nge von 8 Ok tets Der Fingerabdruck ist der MD5 Hashwert ber alle MPIs des ffentlichen Schl ssels Dabei ist zu beachten dass die L ngeninformationen der einzelnen MPIs nicht in die
127. s Beispiel f r eine partielle Kodierung ist in Abbildung 4 4 dargestellt Die L nge des Paketteils wird ber die Formel L nge 1 lt lt ltes_Oktet amp 31 berechnet Es k nnen somit L ngen zwischen 2 1 Oktet und 2 1 073 741 824 Oktets kodiert werden Bei partiell kodierten Paketen hat das erste Oktet einen Wert von 224 bis einschlie lich 254 Diese Form der Kodierung darf allerdings ausschlie lich f r Datenpakete verwendet werden Diese werden im folgenden Ab schnitt 4 1 3 n her beschrieben Packet T Partielle 512 Oktets Partielle 256 Oktets Finale S ag Kodierung Daten Kodierung Daten 1 Oktet Kodierung Abbildung 4 4 Beispiel f r eine partielle Kodierung eines Datenpakets 26 4 1 3 Pakettypen Im vorherigen Kapitel wurde erl utert dass der Typ eines Pakets ber den Packet Tag bestimmt wird RFC 4880 definiert zur Zeit die in Tabelle 4 1 aufgef hrten Pakete Ei nige der Pakete wie z B Public Key Packet oder Signature Packet haben eine interne Versionsnummer so dass es durchaus verschiedene Auspr gungen dieser Pakete geben kann Die angegebene Paketliste kann zudem mittels der daf r zur Verf gung stehen den Tags 60 63 um selbst entworfene Pakettypen erweitert werden Diese k nnen dann Kapitel 4 OpenPGP Nachrichten Format innerhalb einer eigenen OpenPGP Implementation verwendet werden Packet Tag Pakettyp 0 Reserviert 1 Public Ke
128. schl sselungsverfahren illu strieren Angenommen zwei Kommunikationspartner Alice und Bob m chten eine Nach richt m vertraulich ber ein unsicheres Medium austauschen Die zu sendende Nachricht wird in der Regel als Klartext bezeichnet Alice verschl sselt die Nachricht mit einem Verschl sselungsschl ssel e und einer Verschl sselungsfunktion E m und generiert da mit den sogenannten Chiffretext oder auch Schl sseltext c Es gilt also E m c Alice schickt den Chiffetext nun zum Empf nger Bob Dieser entschl sselt die kodierte Nachricht mit einem Entschl sselungsschl ssel d und der entsprechenden Entschl sse lungsfunktion Dy c m um den urspr nglichen Klartext wieder herzustellen Dieser Sachverhalt wird in Abbildung 2 1 dargestellt E m Sender Alice Chiffretext c Senden ber unsicheres Medium Da c Empf nger Bob ea Chiffretext c Abbildung 2 1 Ver und Entschl sselung einer Nachricht Die folgende formale Definition von Verschliisselungsverfahren findet sich in Buc03 Kapitel 2 Kryptographische Grundlagen Definition 2 1 1 Ein Verschl sselungsverfahren oder Kryptosystem ist ein F nftupel P C K E D mit folgenden Eigenschaften 1 P ist eine Menge Sie hei t Klartextraum Ihre Elemente hei en Klartezte 2 C ist eine Menge Sie hei t Chiffretextraum Ihre Elemente hei en Chiffretexte oder Schl sseltexte 3 K ist eine Menge Sie hei t Schl sselraum Ihre Elemente hei en Schl ssel 4
129. stalliert werden k nnen Die OpenPGP Bibliothek selbst ist durch die Verwendung einer abstrakten Klassenhier archie so konzipiert worden dass sie leicht an nderungen des Nachrichten Protokolls angepasst werden kann So ist es z B problemlos m glich eine neue Paketversion in die bestehende Hierarchie zu integrieren Zudem verf gt der OpenPGP Client ber eine moderne Benutzeroberfl che die dem Anwender die grundlegenden kryptographischen Funktionen in bersichtlicher Form pr sentiert um auch Anwendern ohne fachlichen Hintergrund die Arbeit mit der Software zu erleichtern Der OpenPGP Client stellt daher meiner Meinung nach eine gute Basis f r weiterf hren de Projekte am Fachgebiet dar 142Der Updatemechanismus wird in der aktuellen Version des OpenPGP Clients nicht unterst tzt 90 Literaturverzeichnis Ani07 AR96 Ash99 BNS05 Buc03 Buc05 CDF 07 CLRS04 Col87 CRO4 Del06 Die00 Eck04 ANISZCZYK CHRIS Revitalize your applications with Eclipse Forms http www ibm com developerworks opensource library os eclipse forms 2007 ABDUL RAHMAN ALFAREZ The PGP Trust Model 1996 ASHLEY JOHN MICHAEL The GNU Privacy Handbook http www gnupg org gph en manual pdf 1999 BEUTELSPACHER ALBRECHT HEIKE B NEUMANN und THOMAS SCHWARZPAUL Kryptografie in Theorie und Praxis Vieweg 1 Auflage Ja nuar 2005 BUCHMANN JOHANNES Einf hrung in die Kryptographi
130. t Siehe auch http tools ietf org html rfc1321 36Sjehe auch http www ietf org rfe rfc2440 txt 3 Eine Kompatibilit tsliste der verschiedenen PGP Versionen findet sich unter http www spywarewarrior com uiuc pgp summ htm 38CAST auch als CAST5 oder CAST128 bezeichnet ist ein symmetrischer Algorithmus der von Carlisle Adams und Stafford Tavares entwickelt wurde Eine Beschreibung des Verfahrens findet sich unter http jya com cast html 22 Kapitel 4 OpenPGP Nachrichten Format Zu den Basisfunktionen von OpenPGP Anwendungen z hlen e Verschl sselung OpenPGP verwendet fiir die Datenverschl sselung sowohl herk mmliche symme trische Verfahren als auch Hybridverfahren Zusatzlich bietet es die Moglichkeit eine Kombination von symmetrischen Verfahren zu nutzen Dabei wird wie bei den Hybridverfahren ein symmetrischer Sitzungsschl ssel f r die Verschl sselung der eigentlichen Nachricht generiert Der Sitzungsschl ssel selbst wird allerdings im Gegensatz zum normalen Hybridverfahren auch durch einen oder mehrere symme trische Schl ssel die aus Passphrasen generiert werden gesch tzt In der aktuellen OpenPGP Version ist es auch m glich den Sitzungsschl ssel gleichzeitig mit sym metrischer und asymmetrischer Verschl sselung zu verschl sseln e Signieren Das Signieren von Daten funktioniert analog zu der Beschreibung in Kapitel 2 OpenPGP erm glicht auch die Kombination aus der Verschl sselung und dem Si g
131. tails eines Fehlerprotokoll Eintrags 2 2 22 22mm nn vu Tabellenverzeichnis 2 1 3 1 4 1 4 2 Vergleich symmetrische asymmetrische Kryptographie 8 Struktur eines X 509 bzw X 509v3 Zertifikats 13 OpenPGP Paketty pew zer se EEE EI SY RE 27 Base64 Umsetzungstabelle 22 2 22 or m nn nn 38 vill Kapitel 1 Einleitung 1991 erschien die erste Version der von Phil Zimmermann entworfenen kryptographi schen Software Pretty Good Privacy PGP Gar96 Zu den Grundfunktionen von PGP z hlten die Verschl sselung und Signierung von Dateien und E Mails PGP bediente sich dabei starker symmetrischer und asymmetrischer kryptographischer Verfahren und stellte insofern ein Novum dar dass es zum ersten Mal einer breiten Allgemeinheit die M glichkeit zum Schutz der eigenen digitalen Privatsph re erm glichte Um die Interoperabilit t anderer Programme mit PGP zu erm glichen wurden die von PGP verwendeten Algorithmen und Protokolle im Jahr 1998 in einem offenen Standard der Internet Engineering Task Force IETF formalisiert Der Standard wurde im RFC 2440 als OpenPGP Nachrichten Format ver ffentlicht Das OpenPGP Format basiert auf der PGP Version 5 x und ist heute neben der weit verbreiteten Alternative S MIME Secure Multipurpose Internet Mail Extensions einer der wichtigsten Standards zum Verschliisseln und Signieren von E Mails Die aktuelle Version der Spezifikation findet sich im RFC 4880 C
132. tandardm ig enthalten diese Bundles die Texte in englischer Sprache Neben dem Core und dem UI Plug in welche die eigentliche OpenPGP Client Funk tionalitat enthalten miissen auch Ubersetzungen fiir die Texte der verwendeten Eclipse Komponenten Workbench Help Dialog etc bereitgestellt werden Eclipse wird in eng lischer Sprache ausgeliefert Bis zur Eclipse Version 2 1 wurden daher von IBM sogenann te Language Packs zur Verfiigung gestellt die Ubersetzungstexte in diversen Sprachen enthielten Fiir die im OpenPGP Client verwendete Eclipse Version 3 3 gibt es keine offiziellen Language Packs mehr und die Language Packs der fr heren Version sind aufgrund von Anderungen und Erweiterungen in der neuen Version nur bedingt ein setzbar Um dennoch eine Mehrsprachigkeit der Eclipse Komponenten zu erm glichen wurden daher die von einigen freiwilligen Eclipse Entwicklern sowie vom Autor selbst erstellte bersetzungs Texte verwendet 3 Diese befinden sich in den folgenden Plug ins e org eclipse help webapp nli Enth lt die bersetzungen f r die Darstellung der OpenPGP Client Hilfe e org eclipse jface nli Enth lt die bersetzungen f r die JFace Komponenten e org eclipse workbench nli Enth lt die bersetzungen f r die Workbench Komponenten e org eclipse ui views log Enth lt die bersetzungen f r den Error Log View Siehe Abschnitt 6 9 Hierbei ist zu beachten dass entsprechend den Anforderungen an den OpenPGP Client
133. teht 23 Kapitel 4 OpenPGP Nachrichten Format Eine Nachricht besteht aus einzelnen Komponenten die als Pakete Packet bezeichnet werden Ein Paket wiederum setzt sich aus einem Kopf Packet Header und einem K rper Packet Body zusammen Auf unterster Ebene handelt es sich dabei um Fol gen von Oktets Dies ist in Abbildung 4 1 dargestellt Der Paketkopf besteht aus dem Packet Tag Oktet und einer variablen Anzahl von Oktets die die L nge des Paketk rpers kodieren Der Packet Tag ist das erste Oktet des Paketkopfes und enth lt Informatio nen ber den Pakettyp und die Struktur des Kopfes Diese Informationen sind in den einzelnen Bits des Packet Tags kodiert siehe Abbildung 4 2 i Paket Kopf Paket K rper h h CI Ic Abbildung 4 1 Struktur einer OpenPGP Nachricht Die Interpretation der einzelnen Bits ist abh ngig von dem verwendeten Paketformat Der OpenPGP Standard unterscheidet zwischen einem alten und einem neuen Paketformat Bit 6 des Packet Tags indiziert dabei welches der beiden Formate in einem Paket verwendet wird Packet Tag 1 1Jolololol1l11 Bit7 Bit6_ Bit1 Bito Bit 7 Ist immer gesetzt Bit 6 Wert 1 f r neues Format 0 f r altes Format Altes Paketformat Neues Paketformat Bit 5 2 Bestimmen den Pakettyp Bit 5 0 Bestimmen den Pakettyp Bit 1 0 Bestimmen die Paketlange Abbildung 4 2 Struktur des Packet Tag 4 1 1 Pakete im alten Format Old Format Packets
134. tel 4 beschrieben definiert OpenPGP eine Vielzahl von symmetrischen und asymmetrischen Verschl sselungs sowie Hash und Kompressionsalgorithmen die f r die kryptographischen Grundfunktionen verwendet werden k nnen Die verschiede nen OpenPGP Pakete referenzieren einen solchen Algorithmus ber einen im Standard 94Siehe auch http java sun com javase 6 docs technotes guides security crypto CryptoSpec html 95Das FlexiProvider Toolkit ist eine auf der JCA aufbauende Open Source L sung die eigenst ndi ge Umsetzungen verschiedener kryptographischer Algorithmen implementiert und die JCA Refe renzimplementaion um zus tzliche Funktionalit t erweitert Siehe http www cdc informatik tu darmstadt de flexiprovider Siehe CDF 07 Kapitel 9 1 bis 9 4 58 Kapitel 6 Design und Implementierung des OpenPGP Clients eindeutig festgelegten Bezeichner ID So steht die ID 9 bei symmetrischen Verschl sse lungsalgorithmen beispielsweise f r AES mit einer Schl sselgr e von 256 Bit Die in der Einleitung erw hnten Basisklassen aus den Paketen javax crypto und java security werden hingegen mit einem vordefinierten Algorithmusnamen z B Blowfish RSA SHA 1 etc und ggf mit zus tzlichen Parametern wie z B der zu verwendeten Schl ssel gr e initialisiert dass hei t es muss eine Abbildung der OpenPGP Algorithmen ID auf einen JCA kompatiblen Algorithmennamen mit den zugeh rigen Algorithmenei genschaften erfolgen Zu diesem Zweck
135. thaltenen ffentlichen Schl sselpakets bestimmt Der private Schl ssel wird hnlich wie beim Symmetrically Encrypted Session Key Packet im Allgemeinen durch einen symmetrischen Algorithmus gesch tzt Der symmetrische Schl ssel wird ber einen S2K generiert Enth lt das Paket keinen S2K verwendet OpenPGP auto matisch MD5 Aufgrund der oben erw hnten Sicherheitsproblematik sollte daher immer ein S2K verwendet werden OpenPGP berechnet zudem eine Pr fsumme oder einen SHA1 Hashwert ber die privaten Schl sseldaten um eine einfache Integrit tspr fung zu erm glichen Bei Paketen der Version 3 wird dieser Pr fwert im Klartext gespeichert in Version 4 hingegen mit dem privaten Schl sselmaterial verschl sselt 47Wird der ffentliche Schl ssel in anderen Paketen referenziert geschieht dies meist anhand der Key ID 48F r eine konkrete Beschreibung der Parameter des RSA Verfahrens siehe z B Buc03 Vergleiche hierzu die Originalreferenz aus Buc03 H Dobbertin The status of MD5 after a recent attack CryptoBytes 2 2 1 6 1996 32 Kapitel 4 OpenPGP Nachrichten Format 4 1 3 4 Benutzerpakete User Packets In Benutzerpaketen werden Informationen ber die Identit t eines Schl sselbesitzers ge speichert Hierf r definiert der OpenPGP Standard zwei Pakettypen das User ID Packet und das User Attribute Packet Da ein Benutzer durchaus mehrere solche Identit ten bzw Attribute haben kann l sst sich eine ID oder ein Attri
136. tiert werden Dieser Vorgang wird auch als dash escape bezeichnet Es muss jedoch beachtet werden dass f r die Hashberechnung der urspr ngliche Klartext vor den Transformationen benutzt wird Die Struktur einer Klartext Signatur wird in CDF 07 wie folgt beschrieben e Armor Header Line BEGIN PGP SIGNED MESSAGE e Ein oder mehrere Hash Armor Header welche die fiir die Signatur verwendeten Hashalgorithmen enthalten e Fine Leerzeile e Der wie oben beschrieben transformierte Klartext Ein oder mehrere Radix 64 kodierte Signaturnachrichten 41 Kapitel 5 Eclipse Platform Eclipse ist eine auf Java basierende universelle Plattform fiir die Entwicklung von inte grierten Entwicklungsumgebungen IDE Werkzeugen sowie verschiedensten Softwa rel sungen im Allgemeinen Urspr nglich von JBM im Jahr 2001 ins Leben gerufen hat Eclipse inzwischen den Wandel zu einem Open Source Projekt bestehend aus mehreren Unterprojekten vollzogen an dem eine Vielzahl von teilweise freiwilligen Mitarbei tern partizipiert Es wird unter der Eclipse Public License EPL V1 0 vertrieben die sicherstellen soll dass der Eclipse Code frei verfiigbar bleibt allerdings trotzdem fiir kommerzielle Anwendungen verwendet werden kann Dieses Kapitel beschreibt zun chst die Architektur der Eclipse Platform Im Anschluss wird die Nutzung von Eclipse als Rich Client Platform RCP erl utert 5 1 Eclipse Platform Architektur Die Eclipse
137. tion OpenPGPClientPartPresentation Sollten sich die Anforderungen an die Software in Zukunft ndern muss die Pr sentation ggf angepasst werden Die Pr sentation setzt unter anderem folgende nderungen um e Anpassen der Titelleiste von Views e Anpassen der in der Anwendung verwendeten Farben e Views k nnen nicht mehr minimiert maximiert geschlossen oder per Drag amp Drop verschoben werden Die Pr sentation wird in der Datei plugin_customization ini im UI Plug in als Stan dard Pr sentation registriert Die in der Pr sentation benutzten Farbwerte wie z B die Hintergrundfarbe von Wi zards Farbe der View Titelleiste Hintergrundfarbe der Werkzeugleiste etc werden in einem sogenannten Thema definiert das den Extension Point org eclipse ui the mes erweitert Das Thema wird mit allen Farbwerten in der plugin xml Datei des Pr sentations Plug ins definiert und in der Datei plugin_customization ini im UI Plug in als Standard Thema f r den OpenPGP Client registriert 78 Kapitel 6 Design und Implementierung des OpenPGP Clients 6 6 2 3 Eclipse Formulare Formulare Forms wurden mit Version 3 0 von Eclipse eingef hrt und bauen auf den Klassen von SWT und JFace auf Die Grundidee f r die Entwicklung von Eclipse Forms war den vom Betriebssystem abh ngigen nativen Look von Eclipse zu erweitern um die Entwicklung von portablen web orientierten Benutzeroberfl chen zu erm glichen G1005 Zu den Erweiterunge
138. tory und de tud cdc openpgp core message EncryptedMessage 60 Kapitel 6 Design und Implementierung des OpenPGP Clients Um unn tigen Speicherverbrauch zu vermeiden werden die Algorithmenobjekte inner halb von CryptoAlgorithmFactory als statische Variablen erzeugt Zur Laufzeit exi stiert demnach jeweils nur ein Objekt pro Algorithmentyp Ein Nachteil der aktuellen Implementation von CryptoAlgorithmFactory ist die Tat sache dass alle Algorithmendefinitionen explizit in der Klasse stehen In einer sp teren Version k nnten diese beispielsweise in Property Dateien ausgelagert und dann zur Lauf zeit dynamisch erzeugt werden CryptoAlgorithmFactory verwaltet zudem die in der Anwendung zur Verf gung ste henden Schlisselpaar Typen Ein Schl sselpaar T yp wird von der Klasse KeyPairType repr sentiert und ist meist eine Kombination aus einem asymmetrischen Hauptschl ssel Paar z B ein DSA Schl ssel und einem zugeh rigen Unterschl sselpaar z B ein ElGa mal Schl ssel Diese Objekte werden bei der Erzeugung eines neuen Schl ssels ben tigt um dem Anwender in der Benutzeroberfl che eine Liste der vorgegebenen Alternativen zu pr sentieren Der Zugriff auf die vordefinierten Schl sselpaare erfolgt ber die Me thode public static List lt KeyPairType gt getKeyPairTypes 6 5 2 Nachrichtenverarbeitung In Abschnitt 6 5 wurden bereits die verschiedenen Alternativen f r ein m gliches Design der Nachrichtenverarbeitung diskutiert
139. ts Signature Subpackets Hashed Anzahl Oktets ist variabel L nge des folgenden Subpacket Blocks 2 Oktets Signature Subpackets Anzahl Oktets ist variabel Linke 16 Bits des Hashwerts 2 Oktets Berechnete Signatur Anzahl Oktets abhangig vom Verwendeten Algorithmus Abbildung 4 7 Struktur eines Signature Packet der Version 4 Lange des Pakets und enthalt den Pakettyp Die Langenkodierung ist dabei identisch zu dem in Abschnitt 4 7 beschriebenem neuen Paketformat Allerdings k nnen Signaturun terpakete keine partielle Kodierung verwenden Bei der Erstellung einer Signatur geht immer ein Teil des Signaturpakets in die Berechnung des zu signierenden Hashwerts mit ein Daher gibt es zwei Bereiche mit Unterpaketen von denen nur einer mit gehashed wird In diesem Bereich sollten daher sensitive Information abgelegt werden Nach den Subpackets folgen zwei Oktets die die linken 16 Bits des signierten Hashwerts speichern Dies erm glicht einen einfachen Test der G ltigkeit der Signatur Abschlie end enth lt das Paket die Signatur selbst Diese wird wie auch das Schl sselmaterial im Public Key Subkey Packet in Form von MPIs gespeichert Die Anzahl der MPIs ist wiederum abh ngig vom Signaturverfahren Sowohl Version 3 als auch Version 4 unterst tzen RSA und DSA 4 1 4 Nachrichtentypen Die Semantik einer OpenPGP Nachricht wird durch die Pakete bestimmt aus denen sie zusammengesetzt ist Abbildung 4 8 zeigt die momentan in
140. tz an OpenPGP verwendet als Vor einstellung UTF 8 Die Armor Tail Line markiert das Ende der Nachricht Sie entspricht vom Aufbau her der Armor Header Line allerdings wird das Wort BEGIN durch END ersetzt CDF 07 Ein Beispiel f r eine Radix 64 konvertierte Nachricht findet sich in CDF 07 57Ein Beispiel f r eine mehrteilige Nachricht ist beispielsweise eine E Mail mit mehreren vom Typ her ggf unterschiedlichen Anh ngen 40 Kapitel 4 OpenPGP Nachrichten Format Version OpenPrivacy 0 99 yDgBO022WxBHv708X70 j ygAEzo156iUKiXmV XmpCtmpqQUKiQrFqclFqUDBovzs vBSFjNSiVHsuAA njUN 4 4 Klartext Signaturen Die Verwendung der Radix 64 Kodierung bei signierten Textnachrichten hat den Nach teil dass der Originaltext nach der Kodierung nicht mehr lesbar ist OpenPGP erm g licht f r diesen Anwendungsfall die Nutzung von Klartext Signaturen bei denen der signierte Text lesbar bleibt und nur die angeh ngte n Signatur en selbst Radix 64 kodiert sind Bei der Erstellung einer Klartext Signatur wird der ursp ngliche Text auf zweierlei Art transformiert Da in Abh ngigkeit vom verwendeten Betriebssystem un terschiedliche Zeichen einen Zeilenumbruch signalisieren k nnen werden alle Zeilenum br che in das kanonische OpenPGP Format lt CR gt lt LF gt umgewandelt Zus tzlich maskiert OpenPGP im Text vorkommende Bindestriche damit diese bei einer Verarbeitung der Nachricht nicht f lschlicherweise als Armor Header interpre
141. unbekannt ist und Alice Carol kaum vertraut Besitzt den Schl sselbund Alice Ergebnis der Validierung f r M 2 und C 1 Ultimativ Alice Blake Carol und Chloe vollst ndig g ltig Francis teilweise g ltig N gt ER Chloe Belle Unbekannt Unbekannt Abbildung 3 3 Beispiel f r ein einfaches Vertrauensnetz 3 3 Probabilistisches Vertrauensmodell In JWH06 werden einige Aspekte des vorgestellten Netz des Vertrauens kritisiert Dazu z hlen unter anderem e Vertrauen in die Schl sselbesitzer PGP unterscheidet nur zwischen vier eher vage formulierten Vertrauensstufen Dies ist nach Meinung der Autoren von JWH06 ggf nicht ausreichend um kom plexe Vertrauensverh ltnisse zu beschreiben e Vertrauen in die Schl sselg ltigkeit Gleicherma en ordnet PGP die G ltigkeit eines Schl ssels in nur drei Stufen ein Diese Kategorisierung ist nach JWH06 zu unflexibel um z B zu verdeutlichen dass einem vollst ndig g ltigen Schl ssel eventuell mehr Vertrauen entgegenge bracht wird als einem anderen vollst ndig g ltigem Schl ssel Als einfaches Beispiel werden zwei Schl ssel betrachtet die ausschlie lich von Teil nehmern mit marginal trust signiert wurden Die Anzahl der Signaturen ist unter 18 Kapitel 3 Public Key Infrastrukturen schiedlich liegt in beiden Fallen aber tiber dem Wert MARGINALS_NEEDED Dem zufolge werden beide Schl ssel als vollst ndig g ltig validiert obwo
142. ungsstelle in diesem Fall muss sichergestellt werden dass auschlie lich der Antragsteller den generierten privaten Schl ssel erh lt Die tats chliche Erstellung und Herausgabe des Zertifikats wird von der Zertifizierungs stelle durchgef hrt Sie signiert das Zertifikat mit ihrem privaten Schl ssel Die Signatur 20Den Pfad von einer Entit t zu der vertrauten Zertifizierungsstelle nennt man Zertifizierungspfad cer tification path Aufgrund der Eigenschaften eines Baums existiert genau ein solcher Pfad Buc05 1Eine Zertifizierungsstelle kann dabei durchaus mehrere Registrierungsstellen besch ftigen Die Zusam menfassung von Registrierungs und Zertifizierungsstelle bezeichnet man oft auch als Trust Center Eck04 12 Kapitel 3 Public Key Infrastrukturen kann dann von Dritten jederzeit mit dem ffentlichen Schl ssel der Zertifizierungsstelle berpr ft werden Ein erstelltes Zertifikat enth lt mindestens die folgenden Informationen Buc05 Benutzername des Antragstellers ffentliche Schl ssel des Antragstellers F r die ffentlichen Schl ssel verwendete Algorithmen Zertifikats Seriennummer G ltigkeitszeitraum des Zertifikats Name des Zertifikatsausstellers Informationen ber Einschr nkungen der Zertifikatsverwendung Das zur Zeit wichtigste Format f r digitale Zertifikate ist der ITU T Standard X 5097 Tabelle 3 1 zeigt die Struktur eines Zertifikats in diesem Format In
143. urchf hrung einer bestimmten Aufgabe innerhalb einer Anwendung eingesetzt sie stehen daher im fokalen Mittelpunkt des Workbench Fensters ML05 und werden immer innerhalb eines bestimmen Bereichs der Editor Area angezeigt In Abbildung 5 2 sind beispielsweise mehrere Instanzen eines Editors f r die Bearbeitung von Java Dateien ge ffnet Ein OVS steht f r Concurrent Versions System Siehe auch http www nongnu org cvs 73SVN steht f r Subversion Die Entwickler von SVN hatten das Ziel eine modernere Alternative zu dem lteren CVS zu entwerfen SVN wird daher oft als Nachfolger von CVS betrachtet Siehe http subversion tigris org 74Siehe http subclipse tigris org HTML steht f r Hypertert Markup Language 6XML steht f r Extensible Markup Language 46 Kapitel 5 Eclipse Platform Editor Bereich Hauptmen Toolbar E Plug in Development de tud cdca gt npgp core src de tud cdclopenpgp core message T mv ar BEG O Qa 864 8 Perspektiven 5B hiiginDeveopment amp Java By CVS Repository Exploring Debug E Package Explorer 53 5 Plug ins Sf Trnserbiepubicke 2 I Testerjova PacetHeaerjova Packetjeva SignturePacketjova EE Lokale Toolbar einer Sicht B Sle package de ET ASNI Codec Client 1 detudcdcopenpgpcore import jave public class T protected protected 12 detud cdcopenpgp presentation protected 12 detudcdcopenpgp ui f H gt FleiOpe
144. uthentizit t eines Schl ssels trustworthiness of public key certificate 3 2 2 1 Vertrauen in einen Schl sselbesitzer Dieser Wert gibt an inwieweit man dem Besitzer eines Schl ssels vertraut gewissenhaft andere Schl ssel zu validieren bevor er sie selbst zertifiziert Diese Information wird als sensitiv betrachtet und muss vom PGP Anwender manuell erfasst werden Sie wird nicht mit dem Schl ssel selbst sondern in einer separaten Vertrauensdatenbank trust database gespeichert PGP unterscheidet vier verschiedene M glichkeiten e Unbekanntes Vertrauen unknown trust Es ist nichts ber die F higkeit des Schl sselbesitzers bekannt andere Schl ssel zu signieren Dies ist die initiale Einstellung f r Schl ssel im ffentlichen Schl ssel bund die nicht vom Besitzer des Schl sselbunds erzeugt wurden e Kein Vertrauen no trust Dem Schl sselbesitzer wird kein Vertrauen entgegengebracht die Schl ssel von Dritten zu signieren e Kaum Vertrauen marginal trust Dem Schl sselbesitzer wird ein gewisses Ma an Vertrauen entgegengebracht die Schl ssel von Dritten gewissenhaft zu signieren e Vollst ndiges Vertrauen full trust Dem Schl sselbesitzer wird vollst ndig vertraut die Schl ssel von Dritten gewis senhaft zu signieren 16 Kapitel 3 Public Key Infrastrukturen Es existiert noch eine f nfte Vertrauensstufe das ultimative oder implizite Vertrauen ultimate trust Dieser Wert wird automatisch vergeben we
145. utig sind Ein Zertifikat ist in PGP eine Signatur die eine Benutzeridentit t an einen ffentlichen Schl ssel bindet Das erstellte Zertifikat wird an den Schl ssel angeh ngt Der Unter zeichner u ert mit seiner Signatur dass er glaubt dass der Schl ssel zu der angegebenen Identit t geh rt Wird ein ffentlicher Schl ssel mit dem zugeh rigen privaten Schl ssel signiert spricht man auch von einer Selbstsignatur self signing Erstellt man auf diese Weise ein Zertifikat nennt man es entsprechend selbstsigniertes Zertifikat self signed certificate Die Validierung eines ffentlichen Schl ssel kann in PGP auf zweierlei Art durchgef hrt werden ber eine direkte pers nliche Validierung und ber das Netz des Vertrauens 3 2 1 Direkte Validierung Angenommen Alice kennt Bob und m chte den ffentlichen Schl ssel von Bob in ih ren Schl sselbund importieren z B von einem Schl sselserver oder aus einer Datei Zun chst muss sie die Authentizit t des Schl ssels pr fen Sie vergleicht dazu den Fin gerabdruck des importierten Schl ssels mit dem Fingerabdruck von Bobs Schl ssel Dies kann z B per E Mail Telefon oder pers nlich erfolgen Wenn sie davon berzeugt ist dass der Schl ssel tats chlich Bob geh rt signiert sie ihn mit ihrem eigenen privaten 25Der Begriff des Schl sselpaars ist in PGP mehrdeutig Tats chlich kann ein Schl sselpaar aus mehre ren einzelnen Schliisselpaaren bestehen Es gibt dan
146. von einem Schl sselserver Danach verschl sselt sie die Nachricht mit dem ffentlichen Schl ssel von Bob und sendet ihm die chiffrierte Nach richt Bob kann nun mit seinem geheimen privaten Schl ssel den Klartext rekonstruie ren Bei dieser Art Kommunikation ist es wichtig dass die Authentizit t des ffentlichen Schl ssels gew hrleistet ist Das hei t es muss sichergestellt werden dass der ffentli che Schl ssel auch wirklich dem entsprechenden Empf nger in diesem Fall also Bob geh rt Kapitel 3 besch ftigt sich n her mit diesem Thema Ein weiteres Problem von Public Key Verfahren ist die Verarbeitungsgeschwindigkeit Da die Algorithmen mit sehr gro en Zahlen arbeiten ist die Performance im Vergleich zu symmetrischen Verfahren sehr langsam Sie eignen sich daher nicht f r die Anwendung bei gro en Datenmengen Das bekannteste und meist verwendete Public Key Verfahren ist das RSA Verfahren dessen Sicherheit auf der Primfaktorzerlegung gro er Zahlen basiert Ein weiterer wich tiger Vertreter ist das ElGamal Verfahren Die Sicherheit von ElGamal beruht auf dem Problem der Berechnung von diskreten Logarithmen Ein Vergleich der Eigenschaften von symmetrischen und asymmetrischen Verfahren fin det sich in Tabelle 2 1 Um die St rken beider Ans tze zu nutzen wird in der Praxis oft eine Kombination aus symmetrischen und asymmetrischen Verfahren verwendet die als Hybridverfahren bezeichnet wird Dabei wird die eigentliche Na
147. w window und fill MenuBar IMenuManager menuBar der Klasse de tud cdc openpgp ApplicationAct ionBarAdvisor erzeugt die beim Start der Anwendung automatisch von der Workbench aufgerufen werden Werkzeugleiste Die Werkzeugleiste Toolbar enth lt die Hauptfunktionen der Anwendung Sie erlaubt das Erzeugen neuer asymmetrischer Schl sselpaare die Verschl sselung und Entschl sse lung sowie das Signieren und Verifizieren von Daten und schlie lich den Import Ex port von Schl sseln und die Auswahl der aktuell in der Benutzeroberfl che verwende ten Sprache Die der Werkzeugleiste zugrundeliegenden Actions werden wie auch die im Men verwendeten Actions innerhalb der Methode makeActions im Application ActionBarAdvisor erzeugt Das Aussehen der Werkzeugleiste wurde speziell f r die Anwendung angepasst siehe Abschnitt 6 6 2 1 daher werden die Toolbar Eintr ge nicht innerhalb der Standardmethode fillCoolBar ICoolBarManager coolBar im ApplicationActionBarAdvisor hinzugef gt sondern stattdessen in der Methode fill CustomizedToolBar ToolBarManager toolBarManager 74 Kapitel 6 Design und Implementierung des OpenPGP Clients Schl ssel bersicht Die Schl ssel bersicht wird im View de tud cdc openpgp ui views KeysView imple mentiert Die grundlegende Idee f r die Umsetzung dieses Views ist dass der Anwender durch alle in der Datenbank gespeicherten ffentlichen Schl ssel mit den zugeh rigen Bestandteilen wie Signaturen Be
148. weight Directory Access Protocol LDAP in selteneren F llen den ITU T Standard X 500 Abbildung 3 2 zeigt eine bersicht der beschriebenen PKI Komponenten Registrierungsstelle Zertifizierungsstelle Zertifikats und RA CA CRL Verzeichnis LDAP X 500 1 Zertifikat beantragen 3 Zertifikat herausgeben Antragssteller 5 Zertifikate und CRLs abfragen Zertifikatsnutzer Abbildung 3 2 Komponenten einer hierarchischen Public Key Infrastruktur 3 2 Netz des Vertrauens Web of Trust Einen komplett anderen Ansatz verfolgen dezentrale verteilte Public Key Infrastruk turen deren bekanntester Vertreter das Netz des Vertrauens Web of Trust darstellt Es wird von PGP GnuPG und anderen OpenPGP L sungen verwendet daher wird es auch als PGP Vertrauensmodell PGP Trust Model AR96 bezeichnet Im Unterschied zu den zentral verwalteten Infrastrukturen existieren in diesem Konzept keine designier ten Zertifizierungsinstanzen Stattdessen kann jeder Teilnehmer des Netzes Zertifikate f r andere Teilnehmer ausstellen Das Vertrauensnetz wird dabei durch die zertifizier ten Schl ssel aufgebaut wobei die Zertifikate als Verbindungen zwischen den Schl sseln fungieren AR96 Das Konzept des Web of Trust wird auch in der zu erstellenden An wendung eingesetzt Die konkrete Implementation wird in Kapitel 6 beschrieben 23Siehe auch http tools ietf org html rfc4510 24Siehe auch http www itu int rec T REC X 500 en 14
149. y Encrypted Session Key Packet 2 Signature Packet 3 Symmetric Key Encrypted Session Key Packet 4 One Pass Signature Packet 5 Secret Key Packet 6 Public Key Packet 7 Secret Subkey Subpacket 8 Compressed Data Packet 9 Symmetrically Encrypted Data Packet 10 Marker Packet 11 Literal Data Packet 12 Trust Packet 13 User ID Packet 14 Public Subkey Packet 17 User Attribute Packet 18 Sym Encrypted and Integrity Protected Data Packet 19 Modification Detection Code Packet 60 63 Private oder experimentelle Pakete Tabelle 4 1 OpenPGP Pakettypen Quelle CDF 07 Die wichtigsten Pakettypen werden im Folgenden kurz vorgestellt F r eine ausf hrliche Beschreibung wird auf CDF 07 verwiesen 27 Kapitel 4 OpenPGP Nachrichten Format 4 1 3 1 Datenpakete Data Packets Pakete diesen Typs speichern die transportierten Daten einer Nachricht Es gibt drei verschiedene Datenpakettypen komprimierte Compressed Data Packet symmetrisch verschliisselte Symmetrically Encrypted Data Packet und literale Datenpakete Literal Data Packet Der Typ des Pakets gibt dabei Aufschluss ber die auf die Daten ange wendete Funktion und wie die enthaltenen Daten interpretiert werden mtissen Kompri mierte und verschl sselte Datenpakete enthalten in der Regel andere Pakete oder kom plette Nachrichten in jedem Fall aber ein literales Datenpaket welches die Rohdaten der Nachricht beinhaltet Wie im vorherigen Abschnitt erw hnt d rfen ausschlie li
Download Pdf Manuals
Related Search
Related Contents
Manual de instrucciones - direct Samsung AZ09FATEA manual de utilizador BoConcept Cantono 1620 Assembly Instruction Œ¼`ÌŒ¢`Ý™è…A†[…g 2 Samsung SPP-2020 用户手册 für Hebräisch-Kundige und Interpretationswillige Whistler 1660 Radar Detector User Manual CT15 User Manual - Stanley Hydraulic Tools BENDIX TCH-005-007 User's Manual Copyright © All rights reserved.
Failed to retrieve file