03. Jun. 2016
Geschrieben wurde diese Anleitung ursprünglich für PGP 6.5.8 unter Windows 95. Auch alle Bildschirmfotos stammen aus dieser Version.
Die gängigen Public-Key-Verfahren wie PGP oder GPG unterscheiden sich allerdings voneinander nicht besonders stark. Das Prinzip ist bei allen gleich, und auch die Bedien-Oberflächen sehen ähnlich aus. Wer sich an PGP 6 unter Windows gewöhnt hat, wird auch mit GPGShell oder WinPT klarkommen – oder auch mit KGPG auf einem Linux-System mit KDE (an so einem schreibe ich das hier). Die Menüpunkte mögen anders heißen, aber man wird sich zurechtfinden.
„Präambel“ | Vorstellung | Einführung | Download | Schlüsselverwaltung | Anwendung | Der Haken | Web Of Trust | Weiteres
Das Recht auf Privatsphäre steht eigentlich jedem zu. Nicht umsonst gibt es schließlich das Brief- oder das Fernmeldegeheimnis, deren Verletzung wir alle als Eingriff in persönliche Angelegenheiten empfinden.
Um so erstaunlicher finde ich es, wie sorglos viele Leute persönlichste Dinge per E-Mail schreiben – ohne sich darüber im klaren zu sein, daß eine E-Mail nichts anderes ist als eine völlig offene Textdatei, die auf allen Systemen, die für den Transport zuständig sind, nicht nur gelesen, sondern sogar problemlos automatisch kopiert und archiviert werden kann. Eine elektronische Postkarte sozusagen.
Das läßt sich nicht vermeiden, aber etwas anderes kannst du machen: den Text so verschlüsseln, daß er nur mit bestimmten Schlüsseln wieder zu öffnen ist, für alle anderen Leute aber nur sinnlosen Zeichensalat darstellt. Programme zur Verschlüsselung gibt es genug, PGP ist nur eines unter vielen.
Nichts? Vor niemandem? Sorry, aber das glaube ich nicht. Du hättest also nichts dagegen, wenn dein Chef (oder ein ungeliebter Kollege) sämtliche privaten E-Mails, die Du letztes Jahr geschrieben hast, mitgelesen, ausgedruckt, in einem dicken Ordner abgeheftet und diesen bei E-Bay zum Verkauf angeboten hätte? Technisch ist das überhaupt kein Problem. Vielleicht geschieht es sogar ;-)
Groschen gefallen? Natürlich behandelst du keine Staatsgeheimnisse. Es geht hier auch nicht um dunkle Geschäfte. Es geht schlicht und einfach um deine Privatsphäre!
Daher habe ich diese Anleitung bewußt so formuliert, daß auch in Computerdingen weniger Beschlagene halbwegs schlau daraus werden können. Denn nicht nur Cracks haben ein Recht auf Privatsphäre im Internet. Aber die brauchen diese Anleitung sowieso nicht – für die gibts geeignetere Seiten!
Noch was, liebe Kinderinnen und Kinder: auf die (angeblich) frauenfreundlichere „inklusive Form“ verzichte ich aus Gründen der sprachlichen Einfachheit und, nun ja, Eleganz … es heißt nicht, daß PGP nichts für Frauen wäre. Mit Worten wie „Inhaber“ darf sich also auch jede Inhaberin angesprochen fühlen.
nach oben | voriger Abschnitt | nächster Abschnitt
Der Sinn von PGP besteht, wie gesagt, darin, deine Privatsphäre zu schützen – deine elektronische Korrespondenz soll privat bleiben, und Texte bzw. Dateien sollen vor Manipulation geschützt werden. PGP bietet dir dafür im Wesentlichen zwei Funktionen:
nach oben | voriger Abschnitt | nächster Abschnitt
Das früheste mir bekannte Verschlüsselungssystem ist das von Julius Cäsar. Um seine Botschaften vor neugierigen Augen zu schützen, verschob er darin alle Buchstaben um drei Alphabet-Stellen nach hinten. Statt A schrieb er D, statt B E und so weiter. Schwierig genug für damalige Verhältnisse – für heutige Dechiffrier-Systeme wäre es natürlich eine leichte Übung.
Aber an diesem einfachen Beispiel erkennen wir schon die wichtigsten Grundbegriffe der Kryptographie:
Begriff | Bedeutung allgemein | an Cäsars Beispiel |
---|---|---|
Klartext | die Information, die verschlüsselt werden soll | z.B. occultandum (dt: „das zu Verbergende“) |
Algorithmus | das zur Verschlüsselung grundsätzlich angewendete Verfahren | alphabetische Rotation |
Schlüssel | die Vorschrift, nach der der Algorithmus im einzelnen vorgeht | drei Zeichen vorwärts |
Kryptogramm | die fertig verschlüsselte Information | rffxowdqgxp |
(Vigenère hat später das Verfahren der alphabetischen Rotation weiterentwickelt – das relativ sichere Vigenère-Verfahren war 200 Jahre lang kryptographischer Standard.)
Diese Verfahren haben eine große Schwäche: Der Schlüssel, mit dem verschlüsselt wird, ist auch zum Entschlüsseln zu verwenden (das nennt man ein „symmetrisches Verfahren“) und muß daher peinlich geheim gehalten werden, denn sonst wären auf einen Schlag alle Botschaften lesbar. Zur Weitergabe des Schlüssels an seine Korrespondenzpartner mußte der große Imperator also zuverlässige Boten haben oder sich selbst hinbemühen.
Die Menschheit hat in den letzten 200 Jahren nicht nur komplexere Schlüssel entwickelt, sondern auch ein Verfahren, das einem den Geheimtransport von Schlüsseln erspart, weil ein solcher neuartiger Schlüssel immer aus zwei Teilen besteht: einem öffentlichen (public key), mit dem man nur verschlüsseln kann, und einem geheimen (private key), den man zum Entschlüsseln benötigt. Details zum Rechenverfahren …
Auch PGP arbeitet nach diesem sicheren Verfahren.
Betrachten wir die einige kryptographische Verfahren mal an einem einfachen Beispiel:
Diese Mitteilung ist nicht fuer jedermanns Augen bestimmt. Bitte vertraulich behandeln und nach dem Lesen sofort vernichten.
Glhvh Plwwhloxqj lvw qlfkw ixhu mhghupdqqv Dxjhq ehvwlppw. Elwwh yhuwudxolfk ehkdqghoq xqg qdfk ghp Ohvhq vriruw yhuqlfkwhq.
Nachteil: Klartext- und Kryptobuchstaben sind einander fest zugeordnet – ein E ist immer ein H, ein M immer ein P und so weiter. Mit heutigen Methoden wäre das sehr leicht zu knacken.
Schlüssel: buschwindroeschen
Ecwul Uvwksmdwuk jml uekuw tywt nreyjohjvf Rikwp frtnaotp. Favai wyjvywcyltv tgoeaeydp qvq eogz kiz Fwulj frwcvl cieocujaav.
Vorteil: Die Zuordnung der Buchstaben ist nicht mehr fest. Das „e“ im ersten Wort ist erst als „w“ und dann als „l“ verschlüsselt worden. Nachteil: Die Wortgrenzen sind immer noch erkennbar, der Inhalt läßt sich möglicherweise hier und da erraten.
mit meinem Schlüssel #5D75A61B
-----BEGIN PGP MESSAGE----- hQQOA2LvdFB/YDlREA/9EBVggsHNtRI7QhQOEzAbGONtqKABxAkLUu5cn8lTsFfh UjTCmRQFe2feKqLQBdYj0iCAeeDCVv7tI5TvEyLR30E5PxmOGSB32vZR0FVIvkw+ pAFlLTcmYfnomA1p2RAaUB3HeL5TW1uO2JJlbPKUq+H5NTNaMeoxYBDlTi+nQmc6 eAwG9Ltut9RcKSI04ozpMEFAogLIEmZX+DzvDTD2Ock0goKoTjAs6ylh6j9ad/3g ahOaredGJvWC96H7fsboUmbxswrRhBF02DqUduCg5s9NsgsHbGyEupWL99oBPFx4 IfyPTNnbew4sO345dgrsDOFvRzWpmiPpU6P5M2BIROua+hmw089wSAJQZotAsazI lWqe3JG2ZPfA/sVoKwbUDMWewN/S5/ycfvc3wcFjQJOx5X0DHksO+SmmcfX3SzEh y4Nes+7VD2xHAGBn/BSZYUxZ1wuD6KGbLsfa7yrSSvhHa+46sqrqinIFxsQlu82f uf5MjCU79cHAP5Uby9n+xbrDXXY1RzRegijeTW9/WsIV5MEqRvUF2aEWexD76kkK qLg/5Q+u4w8R40QQKL2OY/lg3c2hna4scTQs/ete7SUjiCBXMpt9DwaoLwLA8f7Q OGCYGdZIBIyqZXLSS+9pjCzgui7V3ydgZAcM4StE8Gmje7vKlB178nmFiQ1jsjAP /0GIsvVB/N71Lq7MuBh0Adhcg6lnv9EL5NrP81ysbULFTpKNPzvmZVQbUwaaiWid B+ivmA3qdoBXsNoo8bmRiz/HbDJPDH58pmi7rdtAp9efdkS6TyowVPeDmqYJ/eH2 H4beDhkFiMp14ZgicJ/IYQZ6trFRQFC2RS3gGXEstdPqRDOqPft2HmAyVLii7Zg5 JKhkMx0YwvUK45VbvIQzK7FBnoR4GiZDTyOl7kunJ/moxftpu4adk1f/TODxgXYP QViZG+wmShQGVPG+FJfb6s2tiDce4D6nYYhuhn2uKiUZccjF8mkx6Y0oIYpkqK+7 QKqW68mtOua75ow+IV6t0eXSo68eHyVwj5iPFmM5/hY8+/fK0WdS4kRc9Nlp6qQ9 QkQihKrqKaV/xv5ESZ/52n5TS8F4yn+1q1z+/WaJd7ol1hrNUng4i53uXudHA6RU 5VZJyQZuzhOUpztEU0/HxNqPZAfYGSU10p9dTcHAUMH3VLKMBOKnUPPLIz+IS15b gNaVO/Bixf/ppePtSc4LM2Denf72hmRK3D8PnEblP5ZVCbplgQTCqS6zQA3lB275 C4PfPUGcLRwsVdpmwCDCy1TFUfDg6DAaGYZRA53pd1NIpzWhqDPtgfCmgFbVapEf PWFL7WMkzhuvKgIbvJ8421EU9XQBEfjUwQmFwXucPgXFyYodjpYPIuH7OL0QZSYL j4cpkiI4J2nPaYmmzTY0JLeRr2fk6/GI0ejm0IYtFATlBmUKFDPHgapl2E3xHe8N 69a515/8ax01uMfMR6tBCnnyWlaFVzLwfglxgYYSWMpLX1PMEfuWlHYXw0pTg+DC dxGL1aHjSHT75gZwREb+UrN+LvDXAnhlGIbTUII= =7Wr6 -----END PGP MESSAGE-----
Du siehst: PGP liefert den „konfusesten“, aber auch den größten Output. Das hat technische Gründe – in dem Zeichensalat steckt nämlich nicht nur die Nachricht selbst drin, sondern auch ein kompletter weiterer Schlüssel.
Aber auf die technischen Details des Verfahrens will ich hier nicht weiter eingehen, Dich interessiert ja mehr die Anwendung. Gehen wir also gleich mal in die Praxis.
nach oben | voriger Abschnitt | nächster Abschnitt
PGP ist gewissermaßen das „Original“, aber mittlerweile kommerzielle Software. Als freie Alternative gibt es GPG oder GnuPG. Die Systeme sind kompatibel.
nach oben | voriger Abschnitt | nächster Abschnitt
Ich gehe im Folgenden einfach mal davon aus, daß du PGP heruntergeladen und installiert hast. Dabei hast du wahrscheinlich auch schon einen eigenen Schlüssel erzeugt. (Wenn nicht, kannst du dich hier schlau machen, wie die Schlüsselerstellung geht.) Was du damit genau anfangen kannst, erfährst du in den nächsten fünf Minuten.
Überraschung: Dein Schlüssel ist eigentlich gar kein Schlüssel, sondern genaugenommen ein Schlüsselpaar, das aus einem „private key“ und einem „public key“ besteht:
Der public key ist für alle Aktionen zuständig, die jedermann machen darf:
Der private key (auch secret key genannt) ist für alle Aktionen zuständig, die nur du machen kannst:
Ich werde mich auch weiterhin an die englischen Begriffe halten, weil sie allgemein üblich sind.
Ein private key und sein public key bilden ein Paar wie Schlüssel und Schloß: Ein private key kann immer nur die Nachrichten entschlüsseln, die auch mit dem dazu gehörenden public key verschlüsselt wurden. Wenn ein private key verlorengeht, ist der dazugehörige public key nicht mehr zu gebrauchen. Und umgekehrt.
Deinen public key gibst du nun also an alle Leute weiter, mit denen du in Verbindung stehst. Weil man mit diesem Schlüssel die Nachricht nur verschlüsseln, aber nicht wieder entschlüsseln kann, brauchst du dir überhaupt keine Gedanken darum zu machen, wem du den geben willst – jeder darf ihn haben. Du kannst ihn auch gern auf Deiner Website zum Herunterladen bereitstellen (das mache ich ja auch).
Umgekehrt besorgst du dir auch die public keys aller Leute, denen du verschlüsselte Nachrichten schicken willst.
Wie das Schlüssel-Verschicken im Einzelnen geht, erfährst du gleich.
Deinen private key dagegen hast du auf deinem Rechner und hütest ihn wie deinen Augapfel, denn der ist für das Entschlüsseln zuständig! Du solltest sehr aufpassen, daß der nicht in falsche Hände gerät. Falls das doch einmal passieren sollte, gibts dann als allerletzte Sicherheit die „Passphrase“, die du dir bei der Schlüsselherstellung ausdenken mußt. Die schaltet den Schlüssel sozusagen frei und wird vor jedem Gebrauch des private key abgefragt. Details zur Passphrase …
Die Schlüssel sind eigentlich (riesengroße) Zahlen, werden aber als Textdateien dargestellt und können daher problemlos gespeichert oder verschickt werden, zur Not auch mal ausgedruckt und eingescannt.
Für die Schlüsselverwaltung ist ein Programm namens PGPkeys zuständig.
Gleich merken: Alle PGP-Funktionen erreicht man am einfachsten über das Icon in der Taskleiste rechts unten, das ein Bügelschloß darstellt (orangefarbener Kreis im Bild unten). Wenn man draufklickt, klappt ein Menü auf. Ich werde es im Folgenden einfach das „Taskleistenmenü“ nennen.
PGPkeys anwählen, und das Schlüsselfenster erscheint:
Bei einem frisch installierten PGP finden sich da schon eine ziemliche Menge Schlüssel diverser Mitarbeiter des Vertreibers. Die kann man getrost löschen, wenn man nicht zufällig mit denen im E-Mail-Kontakt steht. (Dazu einfach alle zu löschenden Schlüssel mit gehaltener Strg-Taste nacheinander anklicken und dann Entf drücken oder Edit → Delete wählen.)
Aber hier findest du auch deinen eigenen Schlüssel, der bei der Installation von PGP normalerweise gleich erstellt wird. Den solltest du natürlich drin lassen … ja, und wie verschickst du den jetzt an andere Leute?
Da hast du verschiedene Möglichkeiten:
Klick ihn einmal an, um ihn zu markieren, und wähle im Edit-Menü den Befehl Copy. Das kopiert deinen public key (der, wie gesagt, ein ganz normaler Text ist, wenn auch ziemlicher Zeichensalat) in die Zwischenablage, von wo du ihn weitertransportieren kannst, z.B. als Text in ein E-Mail einfügen.
Oder wähle im Menü Keys den Befehl Export. Dann erscheint ein „Speichern unter …“-Fenster, das eine ASC-Datei (Textdatei) erzeugt:
Diese ASC-Datei verschickst du dann z.B. als E-Mail-Anhang an deine Korrespondenzpartner.
Schau dabei mal in die linke untere Ecke des Export-Fensters: da gibt es eine Option „Include private key(s)“ Die sollte tunlichst nicht angehakt sein, denn sonst wird das ganze Schlüsselpaar, also auch der private key, exportiert!
Und wie bekommst du nun umgekehrt fremde Schlüssel in dein Verzeichnis? (den „Schlüsselring“ – der heißt wirklich so!)
Entweder hast du den fremden Schlüssel als Text auf dem Bildschirm. Dann markiere diesen Text komplett und kopiere ihn in die Zwischenablage. Wichtig ist dabei immer, daß du die Kopfzeile (-----BEGIN PGP PUBLIC KEY BLOCK-----) und die entsprechende Fußzeile mit erwischst, mit sämtlichen Minuszeichen. Sonst wird das nicht als PGP-Datei erkannt!
Nun brauchst du nur im Taskleisten-Menü Clipboard → Decrypt & Verify zu wählen. Diesen Menüpunkt brauchst du oft – er heißt ungefähr: „Da ist was PGP-mäßiges in der Zwischenablage, guck mal, was du damit anfangen kannst.“ PGP bemerkt, daß es sich um einen neuen Schlüssel handelt, und ein Importfenster erscheint:
Wähl den gewünschten Schlüssel aus (das erübrigt sich, wenns nur einer ist) und klick auf Import – fertig.
Der neue Schlüssel erscheint nun im Fenster von PGPkeys und ist sofort benutzbar. Ohne Anmeldefrist, ohne Grundgebühr. Wie das geht, erfährst du im nächsten Abschnitt.
nach oben | voriger Abschnitt | nächster Abschnitt
Manche E-Mail-Programme besitzen entweder ein eingebautes PGP oder ein Plug-In, das die Benutzung eines „externen“ PGP innerhalb des Mail-Programms ermöglicht. Dann mußt du dich in der Dokumentation deines E-Mail-Programms schlau machen, wie es funktioniert – das kann ich dir hier leider nicht erklären, weil es für jedes Programm anders ist.
Außerdem gibt es mehrere Möglichkeiten, eine Mail mit PGP zu verschlüsseln. Die heute zeitgemäße Methode nennt sich PGP/Mime und hat den Vorteil, daß nicht nur der Mailtext verschlüsselt wird, sondern automatisch auch angehängte Dateien. Auch aus anderen technischen Gründen ist es stabiler. Es funktioniert aber nur dann, wenn sowohl der Absender als auch der Empfänger Software benutzen, die dieses Verfahren beherrscht. Meine Empfehlung dafür ist im Zweifelsfall Thunderbird (das Mozilla-Mailprogramm) mit dem Plug-In Enigmail.
Ich werde jetzt jedoch die einfache Methode beschreiben, „zu Fuß“ mit dem älteren Standard PGP/Inline. Das geht in jedem Fall, auch mit E-Mail-Programmen, an die sich PGP nicht andocken kann. Und sogar dann, wenn man ganz ohne Mailsoftware arbeitet, zum Beispiel auf einer Web-Oberfläche wie etwa GMX. Und dank der genialen „Current-Window“-Funktion von PGP ist es auch gar nicht schwer.
Nehmen wir mal an, du hast gerade eine Mail fertig geschrieben und willst sie jetzt verschlüsseln, bevor du sie abschickst bzw. in den Ausgangskorb legst. Dann geht das so:
Das „Schreibfenster“ muß noch geöffnet sein, die Mail darf also noch nicht versandfertig im Ausgangskorb liegen, und der Cursor blinkt irgendwo im Text deiner Mail.
Wähle im Taskleistenmenü den Punkt Current Window → Encrypt. PGP markiert jetzt den Text in deinem Schreibfenster, schneidet ihn aus und fragt dich dann, mit welchem Schlüssel das denn jetzt verschlüsselt werden soll:
Überleg dir, wer den Text hinterher wieder lesen können soll (du selbst und der Empfänger, normalerweise) und zieh die Schlüssel dieser Leute ins untere Teil-Fenster (unter „Recipients“).
Klick auf OK. PGP rechnet kurz und baut dann das fertige Kryptogramm in dein Schreibfenster ein.
Verschicke den Buchstabensalat als ganz normale Mail, aber ohne innerhalb des Kryptogramms noch etwas zu ändern! Schon ein neuer Zeilenumbruch macht das Kryptogramm komplett unbrauchbar.
Wenn du die Mail mit mehreren Schlüsseln verschlüsselst, bedeutet das, daß jeder einzelne der Empfänger sie entschlüsseln kann. Ein Tipp dazu …
Nun gehen wir vom umgekehrten Fall aus: Du hast eine verschlüsselte Mail bekommen und möchtest sie lesen.
Nimm irgendeinen Text, meinetwegen diesen Absatz, und probiers ein paar Mal. Es ist wirklich nicht schwer!
nach oben | voriger Abschnitt | nächster Abschnitt
Es gibt tatsächlich einen Pferdefuß – in einem Punkt ist das PGP-System leicht angreifbar, aber auch leicht zu schützen, wenn man weiß, wie.
Dieser Abschnitt wird etwas länger, aber bitte lies ihn trotzdem durch. Du wirst verstehen, wieso dieser Schwachpunkt unvermeidbar ist und wie du dich dagegen absichern kannst.
Ich habe oben gesagt, daß der Vorteil des public-key-Verfahrens darin liegt, daß man seinen Verschlüsselungs-Schlüssel, also den, den die anderen bekommen, nicht geheimhalten muß. Der Nachteil ist die Kehrseite davon: Ein PGP-Schlüssel ist ganz einfach zu fälschen! Er ist ja nur an seiner Bezeichnung, seiner User-ID, erkennbar, die aus Name und E-Mail-Adresse des Schlüsselinhabers besteht. Und diese beiden Angaben werden bei der Schlüsselherstellung ganz normal eingetippt. Jeder kann daher Schlüssel unter einem beliebigen Namen erstellen. Daher kannst du dich zunächst einmal nicht darauf verlassen, daß ein Schlüssel wirklich echt ist – außer du warst bei der Erzeugung dabei und hast ihn selbst transportiert.
Stellen wir uns zwei Leute vor, Anja und Martin. Die wollen sich PGP-verschlüsselte Mails schicken.
Anja erzeugt also einen Schlüssel, den wir mal Anja-1 nennen, und schickt ihn per Mail an Martin.
Martin erzeugt auch einen – Martin-1, den er per Mail an Anja schickt.
So weit die Theorie. Die Schlüssel wurden abgeschickt und liegen auf irgendeinem Mailserver im Netz. Und jetzt wirds spannend.
Nehmen wir mal an, bei Martins E-Mail-Provider sitzt jemand, der alle Mails von und für Martin abfängt und speichert, um Informationen über Martins Privatleben zu sammeln. Der sieht jetzt Martins Mail mit dem Schlüssel drin und denkt sich: „Hoppla, der will seine Mails jetzt geheimhalten? Na warte!“
Weil dieser Mensch (in Wirklichkeit wird das natürlich ein automatisch arbeitendes Softwareprogramm sein, aber bleiben wir mal dabei) sehr raffiniert ist, blockiert er den Weitertransport der Mail (mit dem Schlüssel) an Anja, startet dann PGP auf seinem Computer und erzeugt einen neuen Schlüssel, wobei er als Benutzerkennung Martins Namen und Mailadresse eingibt (die kennt er ja aus Martins Schlüssel). Nennen wir dieses komplett neue Schlüsselpaar mal Martin-2. In Martins Mail an Anja ersetzt er den originalen Martin-1-Schlüssel durch den neuen Martin-2 und schickt diese geänderte Mail an Anja. Und Anja freut sich – sie hat wie verabredet von Martin eine Mail gekriegt, in der ein Schlüssel war, der Martins Name und Adresse trägt. Daß der Schlüssel, den sie bekommen hat, nicht der ist, den Martin erzeugt hat, ahnt sie nicht!
Dasselbe macht der Fälscher natürlich auch mit Anjas Schlüssel.
Und jetzt mach dir mal klar, wer welche Schlüssel hat. Der „Man-in-the-middle“ (so heißt dieser Fälscher im PGP-Jargon) hat nämlich jetzt schon die komplette Verschlüsselung ausgehebelt!
Machen wir es uns an einem Beispiel klar: Anja schickt eine (wahrscheinlich sehr persönliche) Mail an Martin, die sie natürlich mit dem Schlüssel Martin-2 verschlüsselt – einen anderen Schlüssel hat sie ja nicht. Der Fälscher fängt die Mail ab, entschlüsselt sie (das kann er ja – er hat den private key zu Martin-2), archiviert den Klartext, verschlüsselt ihn wieder mit Martin-1 (er tut also Martin gegenüber so, als wäre er Anja) und schickt das an Martin weiter. Der kann das entschlüsseln, und alles scheint in Ordnung zu sein – keiner der beiden merkt, daß noch ein Entschlüsselungs-Verschlüsselungs-Vorgang dazwischen liegt!
Weil das natürlich auch andersherum geht (mit Anjas Schlüsseln), ist die gewollte Geheimhaltung komplett im Eimer.
Ich hoffe, du bist gedanklich einigermaßen mitgekommen. Fazit: Es kommt alles darauf an, daß die beiden zuallererst überprüfen, ob der Schlüssel, den sie vom anderen erhalten haben, auch wirklich der ist, den der andere erzeugt hat.
Daß man diese Prüfung nicht per Mail, sondern auf einem anderen Kommunikationskanal vornimmt, sollte klar, sein, oder? Sonst kann der Man-in-the-middle ja wieder dazwischenfunken …
Das müssen sie natürlich nicht jedes Mal machen; es genügt, einen per Mail empfangenen Schlüssel einmalig auf seine Echtheit zu prüfen. Denn daß der Man-in-the-middle direkt auf Anjas Rechner einen bereits überprüften Schlüssel austauschen kann, ist sehr unwahrscheinlich.
Wie oft ein Man-in-the-middle-Angriff vorkommt, weiß ich nicht. Aber darauf kommt es überhaupt nicht an – dieser Angriff ist die bei weitem leichteste und billigste Methode, ein public-key-Verfahren auszuhebeln. Es ist systembedingt der größte Schwachpunkt von PGP, doch wenn du das Thema ernst nimmst, dann hast du dieses Loch schon gestopft. PGP ist sicher, wenn man richtig damit umgeht.
Die Echtheit von Schlüsseln spielt bei PGP also eine (genauer: die) entscheidende Rolle. Gewöhn dir an, niemals einen Schlüssel zu benutzen, von dessen Echtheit du nicht überzeugt bist!
Davon überzeugt sein kannst du auf verschiedenen Wegen, der beste ist die persönliche Überprüfung. Ein anderer ist das Web of Trust; dazu kommen wir gleich.
Und jetzt willst du bestimmt wissen, wie man das machen kann.
Das Beste wäre natürlich: die beiden besuchen sich, erzeugen ihre Schlüssel gemeinsam und nehmen sie (auf einem Datenträger, den sie währenddessen nie aus den Augen lassen) mit nach Hause. Eine weitere Möglichkeit wäre: die beiden schicken sich die Schlüssel zwar per Mail, rufen sich aber dann sofort an und buchstabieren sich gegenseitig die Textversionen ihrer Schlüssel vor. Viel Spaß auch dabei! „Groß Q klein L klein A Vier Klein Ypsilon Zwei Fünf Klein X Klein f …“
Bißchen mühsam, meinst du? Stimmt, und deshalb hat man sich bei PGP was Feines ausgedacht: den Fingerprint. Das ist eine Art Quersumme, die aus dem Schlüssel errechnet wird und ziemlich garantiert weltweit nur auf deinen Schlüssel paßt (theoretisch können zwar zwei unterschiedliche Schlüssel mit demselben Fingerprint existieren, aber es ist praktisch unmöglich, gezielt einen funktionierenden Schlüssel mit einem bestimmten Fingerprint zu erstellen). Diesen Fingerprint kann du du dir anzeigen lassen, indem du in PGPkeys einen Schlüssel markierst und dann im Keys-Menü den Punkt Key properties auswählst:
Einklich ist der Fingerprint eine Folge von Hexadezimalzahlen, aber es gibt seit PGP 6.5 eine Erleichterung: Damit man sich nicht diese kryptische Zeichenfolge durchlesen muß (auch das ist ja mißverständlich – hat er jetzt „B“ oder „D“ gesagt?), ersetzt PGP auf Wunsch diese Zahlen durch englische Wörter (man hat einfach jeder zweistelligen Zahl willkürlich ein Wort zugeordnet), die mündlich natürlich viel leichter zu vergleichen sind. Umschalten kannst du das mit dem Ankreuzkästchen „Hexadecimal“
Probier es mal aus: Den Hexzahlen-Fingerprint meines DH/DSS-Schlüssels findest du hier. Die dazugehörigen Wörter siehst du oben. Stimmts noch?
Achtung: Die Angabe meiner Fingerprints auf dieser Website hier ist keine 100%-ige Sicherheit, da die Site natürlich theoretisch von meinem Webhoster manipuliert worden sein kann!
Also, wenn Martin jetzt Anja anruft und ihr den Fingerprint seines Martin-1-Schlüssels und die Schlüssellänge vorliest, wird Anja feststellen, daß sie einen komplett anderen Fingerprint vor sich hat – nämlich den von Martin-2! Und damit fliegt der Schwindel sofort auf – die beiden wissen, daß die Schlüssel, die sie erhalten haben, nicht echt sind. Und um diese Sicherung zu umgehen, müßte der Fälscher schon die Telefonleitung anzapfen und einen ziemlich guten Stimmenimitator anstellen. (Deswegen ist es auch üblich, daß der Empfänger des public key den Inhaber des private key anruft und sich von diesem den Fingerprint vorlesen läßt. So ist am besten gesichert, daß man auch den Richtigen an der Strippe hat!)
Wenn du dir (hundertprozentig!) sicher bist, daß ein Schlüssel echt ist, solltest du ihn elektronisch unterschreiben. Was hat es mit dieser Unterschrift auf sich?
Eine Unterschrift ist, bei PGP wie im wirklichen Leben, die Bestätigung der Echtheit – mehr dazu erfährst du im nächsten Kapitel. Im Bild oben siehst du Sebastians Schlüssel und zwei Unterschriften darunter – eine von ihm selbst, eine von mir. Die Selbstunterschrift wird übrigens bei der Schlüsselerstellung vorgenommen.
Solange ein Schlüssel aber nur mit sich selbst unterschrieben wurde, ist er noch nicht glaubwürdig (das ist so, als würdest du bei der Paßkontrolle keinen Paß vorlegen, sondern einen von dir selbst unterschriebenen Zettel, auf dem steht, daß du wirklich so heißt). PGPkeys setzt deshalb erst einmal einen grauen Punkt in die „Validity“- (Gültigkeit-) Spalte – der Schlüssel gilt noch als fragwürdig.
Echtheit muß immer von einem glaubwürdigen Dritten bestätigt werden – und niemand ist für dich (anders als für den Zollbeamten) glaubwürdiger als du selbst! Unterschreib daher den fremden Schlüssel jetzt noch mal mit deinem eigenen private key:
Jetzt akzeptiert PGP den fremden Schlüssel als glaubwürdig (grüner Punkt). Das System prüft nämlich deine Unterschrift unter dem fremden Schlüssel an Hand deines public key und stellt fest, ob die Unterschrift gilt oder nicht.
Und weil Unterschriften mit dem public key geprüft werden, kann das auch jeder andere, der deinen public key hat. Und dadurch wird eine tolle Sache möglich: das Web of Trust. Ich möchte dir mal kurz erzählen, was das ist und wie es funktioniert. Wenn dir schon der Kopf raucht, kannst du das überspringen und hier weiterlesen.
nach oben | voriger Abschnitt | nächster Abschnitt
Mit der Unterschrift bestätigst du die Echtheit des Schlüssels nicht nur dir selbst, sondern du kannst sie auch anderen bestätigen. Oder dir die Echtheit anderer Schlüssel von anderen bestätigen lassen.
Guck dir noch mal das Schlüssel-Unterschreiben an: Wenn du im Unterschreiben-Fenster einen Haken bei „Allow signature to be exported“ machst, wird deine Unterschrift immer mitgeschickt, wenn du den Schlüssel an jemanden weiterleitest. Dieser kann, wenn er deinen public key besitzt, die Echtheit deiner Unterschrift zweifelsfrei feststellen und weiß damit, daß du den Schlüssel geprüft hast – er braucht ihn nicht noch einmal zu überprüfen. Diese Konstruktion gegenseitigen Vertrauens bei der Schlüsselunterzeichnung nennt man im PGP-Jargon „Web of Trust“ (auf deutsch: „Vertrauensnetz“). Man verläßt sich auf die Unterschriften anderer, sofern man sie mit dem dazugehörigen public key prüfen kann.
Hier hast du ein kleines Beispiel:
Arthur | Birthe | Christoph | Doris | Erkan |
---|---|---|---|---|
erzeugt seinen Schlüssel und schickt ihn an Birthe | prüft Arthurs Schlüssel, schickt Arthurs Schlüssel unterschrieben weiter | schickt Arthurs Schlüssel unterschrieben weiter; dessen Echtheit ist von Birthe glaubhaft bestätigt | schickt Arthurs Schlüssel unterschrieben weiter; dessen Echtheit ist von Christoph bestätigt, der sich auf Birthes Unterschrift verlassen hat | Arthurs Schlüssel ist von Doris bestätigt, die sich auf Christophs Unterschrift verlassen hat, der sich auf Birthes Unterschrift verlassen hat |
erzeugt ihren Schlüssel und schickt ihn an Christoph | prüft Birthes Schlüssel, vertraut auf Birthes Unterschrift | |||
erzeugt seinen Schlüssel und schickt ihn an Doris | prüft Christophs Schlüssel, vertraut auf Christophs Unterschrift | |||
erzeugt ihren Schlüssel und schickt ihn an Erkan | prüft Doris’ Schlüssel, vertraut auf Doris’ Unterschrift |
Arthur hat nur mit Birthe einen Fingerprint-Vergleich gemacht, dennoch ist sein Schlüssel auch bei Erkan garantiert echt, weil alle anderen sich aufeinander verlassen und die Schlüssel ihres jeweiligen Vorgängers überprüft haben. Beispiel: Doris muß mit Christoph einen Fingerprint-Vergleich machen, bevor sie weiß, daß Christophs Unterschrift unter Arthurs Schlüssel echt ist.
Wenn Arthur jetzt einen Schlüssel von Simon erhält und ihn unterschrieben an Erkan schickt, muß Erkan mit Simon keine Fingerprint-Kontrolle machen, wenn er Arthurs Unterschrift vertraut. Arthurs echten Schlüssel hat er ja.
Das ist nur ein winzig kleines Beispiel, aber unter den Zigtausenden PGP-Benutzern funktioniert es genauso.
Wie sehr du den Unterschriften eines bestimmten Benutzers vertraust, kannst du in den Eigenschaften seines Schlüssels in deinem Schlüsselring einstellen. Der Trusted-Schieber ist dafür da.
Wenn du diesen Schieber auf „Trusted“ stellst und dann von irgendwoher einen Schlüssel erhältst, der mit diesem bei dir „getrusteten“ Schlüssel unterschrieben wurde, dann wird der neue Schlüssel auch ohne deine Unterschrift auf „valid“ gesetzt – es gibt ja eine glaubwürdige Bestätigung der Echtheit, nämlich die Unterschrift mit dem Schlüssel, dem du vertraust!
Wenn du einen Schlüssel genau geprüft und dann exportierbar unterschrieben hast, garantierst du dessen Echtheit. Auch anderen gegenüber, daher sei hier bitte doppelt vorsichtig. Ebenso, wie du mit dem Trusted-Schieber vorsichtig sein solltest. Vertrau nur den Unterschriften von Leuten, von denen du weißt, daß sie das Web of Trust ernst nehmen.
Eine gute Idee ist es, einen Schlüssel mit deiner Unterschrift dem Besitzer zurückzuschicken. Der kann dann deine Unterschrift importieren – viele Leute sammeln Unterschriften unter ihre Schlüssel.
Wenn du eine Nachricht im Klartext schreibst, damit sie jeder lesen kann, aber sicherstellen willst, daß keiner sie ändert bzw. jeder Empfänger prüfen kann, ob die Nachricht wirklich von dir stammt, kannst du sie mit deinem private key unterschreiben (wie beim Verschlüsseln, nur jetzt Sign statt Encrypt wählen) – das erzeugt lesbaren Klartext mit einer digitalen Signatur darunter, die wie ein kleines Kryptogramm aussieht. Jeder, der deinen public key hat, kann die Unterschrift prüfen (das geht genauso wie Entschlüsseln – Decrypt & Verify). Probieren wir es doch mal aus:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dieser Text hier wurde mit meinem DH/DSS-Schlüssel unterschrieben. Du kannst daher, wenn du meinen public key in deinem Schlüsselring hast, die Unterschrift prüfen und damit die Echtheit des Textes feststellen - also, dass dies wirklich der Text ist, den ich geschrieben habe. Leider geht das nicht im Netscape Navigator, weil er beim Kopieren Leerzeichen an die Zeilenanfänge baut - aber mit dem Internet Explorer geht's hervorragend. Markiere den kompletten Textblock, kopiere ihn in die Zwischenablage und wähle im Taskleistenmenü "Clipboard - Decrypt & Verify". Dann erscheint ein Fenster, das den verifizierten Text enthält und dir mitteilt, wann der Text von welchem Schlüssel unterschrieben ist und ob die Signatur in Ordnung ist ("PGP Signature Status: good"). - -- -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkottIAACgkQXL7B/111phuNhwCg327mKdJs+BKCZY/aqAWR3lCo /t8An1p+2M3M8tQVh1QPsDt10hims6P5 =Yi1l -----END PGP SIGNATURE-----
Die Unterschrift wird aus deinem private key (deshalb mußt du, wenn du etwas unterschreibst, auch immer deine Passphrase eingeben) und dem Text selbst erzeugt. Jede nachträgliche Änderung des Textes, auch nur ein zusätzlicher Leerschritt, zerstört sofort die Übereinstimmung mit der Unterschrift. PGP meldet „Signature Status: bad“ (Unterschrift ungültig).
Du kannst auch beliebige ganze Dateien verschlüsseln oder unterschreiben, Word-Dokumente, Bilder, was du willst. Du brauchst die Datei nur im Windows-Explorer mit der rechten Maustaste anzuklicken und PGP → Encrypt zu wählen. Das übliche Schlüsselauswahlfenster erscheint, und dann wird eine gleichnamige Datei mit dem zusätzlichen Namens-Anhängsel .pgp erzeugt, die sich wieder nur mit dem passenden private key lesbar machen läßt.
Das Datei-Unterschreiben ist noch raffinierter: Wenn du nämlich das selbe mit dem Untermenüpunkt Sign machst und in dem Fenster, das dich nach der Passphrase fragt, die Option „Detached Signature“ ankreuzt, wird die Originaldatei nicht angetastet – es wird nur noch eine Unterschriftsdatei erzeugt, die den gleichen Namen wie die unterschriebene Datei und die zusätzliche Extension .sig trägt. Du verschickst dann beide Dateien zusammen, und der Empfänger kann durch einen Doppelklick auf diese .sig-Datei die Unterschrift überprüfen, wenn er deinen public key hat.
Empfehlenswert für verschlüsselte Dateien, die du als E-Mail-Anhang verschicken willst, ist die Option „Text Output“, die du ankreuzen kannst. Dann lautet die zusätzliche extension .asc statt .pgp und das Ganze ist eine reine ASCII-Textdatei. Da passiert dann garantiert nichts beim E-Mail-Transport – bei Binärdateien als Mailanhang weiß man das nie. („Binärdatei“ heißt im Computerdeutsch alles, was kein reiner Text ist. Irgendein amerikanischer Server gewisser Provider [nein, ich will jetzt keinen User vergrAOLen] fühlt sich mit Sicherheit berufen, vermeintliche Umlaute im vermeintlichen Text automatisch durch was anderes zu ersetzen – und schon ist nichts mehr lesbar …) .asc-Dateien sind aber etwas größer als .pgp-Dateien.
A propos: Du wirst feststellen, daß die verschlüsselten Dateien im Allgemeinen kleiner sind als die Originale. Das liegt daran, daß PGP alles, was es verschlüsselt, zunächst einmal komprimiert.
Falls du einmal Schlüssel von irgendwelchen Leuten suchst: dafür gibt es ein weltweites Netz von Key-Servern im Internet. Zum Beispiel http://pgp.mit.edu/. Wenn du deinen asc-Schlüsselextrakt da hinschickst, kann ihn morgen jeder in Neuseeland abrufen … und das geht noch weiter, man kann Schlüssel, die man nicht mehr benutzt, widerrufen, so daß sie bei jedem PGP, das am Netz hängt, wieder gelöscht/updatet werden.
Nur eines kann man nicht: Einmal veröffentlichte Schlüssel lassen sich nie wieder vom Server löschen. Stattdessen kannst du ein Widerrufszertifikat ausstellen (revocation certificate), indem du in der Schlüsselverwaltung Keys → Revoke anwählst und den widerrufenen Schlüssel dann neu auf den Server lädst.
Zum Widerrufen brauchst du natürlich deinen private key, sonst könnte ja jeder deine Schlüssel widerrufen. Solltest du also dummerweise einen Schlüssel auf den Server geladen und dann bei dir gelöscht haben, hast du keine Chance mehr; er wird als gültiger Schlüssel bis zum Ende der Tage des PGP-Schlüsselnetzes darin liegen bleiben.
Das Widerrufen-statt-Löschen hat natürlich einen guten Grund: Dann merkt nämlich jeder andere Benutzer bei der nächsten Schlüssel-Aktualisierung, daß dein alter Schlüssel widerrufen wurde. Könntest du deinen Schlüssel einfach vom Server löschen, könnte er nichts merken (Schlüssel werden nicht auf Vorhandensein geprüft!).
PGPkeys kann sich sogar direkt mit diesem Server unterhalten, ohne Umweg über das WWW. Auf der Seite ist beschrieben, wie du das einstellst.
Seit PGP Version 6.x bestehen noch weitere Möglichkeiten. Zum Beispiel kann man einen private key splitten, und bei jeder Entschlüsselung müssen sämtliche Teile (die z.B. unterschiedlichen Personen gehören) vorliegen. Man kann in einen Schlüssel sein Paßbild einbauen, das mit exportiert und bei den Schlüsseleigenschaften angezeigt wird; das kann einem Schlüsselfälscher die Arbeit etwas erschweren. Aber das geht jetzt langsam zu weit in die Einzelheiten – wir wollten ja eigentlich nur eine E-Mail verschlüsseln …
(© V. Gringmuth 1999–2009 <vgringmuth@gmx.net> Original liegt auf http://einklich.net/anleitung/pgp2.htm)