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