PGP
Grundlagen der Mailverschlüsselung
Es gibt 2 Arten der Verschlüsselung, symmetrische und asymmetrische.
Symmetrische Verschlüsselung
Bei der symmetrischen Verschlüsselung wird zum ver- und entschlüsseln der gleiche Schlüssel (Key) genutzt. Der benutzte Key muss vorher mit allen Beteiligten vereinbart bzw. ausgetauscht werden und darf nicht in fremde Hände gelangen. Einfaches Beispiel: wir verabreden, dass wir einen Text verschlüsseln wollen, indem wir jeden Buchstaben durch einen anderen Buchstaben ersetzen, der im Alphabet 5 Zeichen weiter hinten steht. Aus ABC wird dann FGH. Zum entschlüsseln gehen wir dann einfach 5 Buchstaben zurück. Der Key wäre in diesem Fall 5. Jeder der den Key kennt kann die Nachricht entschlüsseln.
Das Problem hierbei ist, dass der Key vorher mit allen Beteiligten auf einem sicheren Weg ausgetauscht werden muss, was schwierig ist, wenn sich die Beteiligten nicht persönlich treffen können und keinen sicheren Kommunikationskanal besitzen. Dieses Problem löst
Asymmetrische Verschlüsselung
Bei der asymmetrischen Verschlüsselung gibt es 2 Schlüssel A und B (ein Schlüsselpaar). Alles was mit A verschüsselt wurde kann mit B entschlüsselt werden (aber nicht mit A), und umgekehrt. Wir machen einen der beiden Schlüssel zum privaten (geheimen) Schlüssel (z.B. A) und den anderen (B) zum öffentlichen Schlüssel. Den öffentlichen Schlüssel können wir z.B. auf unsere Webseite stellen, und jeder kann uns eine Nachricht mit dem Schlüssel B verschlüsselt schicken, aber nur wir selbst können Sie mit unserem geheimen Schlüssel A wieder entschlüsseln. Nicht einmal der Sender der Nachricht kann sie selbst wieder entschlüsseln, da er ja den benötigten Schlüssel A nicht besitzt.
Problem: wollen wir eine Nachricht an mehrere Empfänger verschicken, so müssen wir sie für jeden Empfänger mit seinem öffentlichen Key verschlüsseln. Bei 3 Empfängern wäre die Nachricht 3 mal so groß. Und uns selbst sollten wir ebenfalls als Empfänger betrachten, falls wir die Nachricht später nochmal lesen wollen (z.B. im Gesendet-Ordner unseres Mailprogramms).
Um das genannte Problem zu umgehen gibt es einen einfachen aber genialen Trick: wir erzeugen einen zufälligen symmetrischen Schlüssel und verschlüsseln die Nachricht damit. Aber wie teilen wir den Empfängern den Key mit? Ganz einfach: wir legen den symmetrischen Schlüssel bei, verschlüsseln ihn aber mit dem öffentlichen Schlüssel der Empfänger. Auf die Art müssen wir nicht die ganze Nachricht für jeden Empfänger verschlüsseln, sondern nur den beigefügten symmetrischen Key. Weiterer Vorteil: symmetrische Verschlüsselung ist einfacher, braucht weniger Rechenleistung, und geht daher viel schneller.
Signieren
Ok, verschlüsseln haben wir jetzt (hoffentlich) verstanden, aber was ist denn "signieren" bzw. eine "Signatur"? Wir haben noch ein weiteres Problem: da unser Key B ja öffentlich ist, kann uns jeder eine verschlüsselte Nachricht schicken, oder unterwegs abfangen und den Inhalt durch einen anderen Inhalt ersetzen. Wie können wir erkennen ob die Nachricht unverfälscht ist, und von dem Absender stammt der auf dem Umschlag steht? Hier kommt die Signatur ins Spiel. Der Absender erzeugt eine Art Prüfsumme (den sogenannten Hash-Wert) über alle relevanten Teile der Nachricht, also z.B. den Textinhalt und den Absender. Diese Prüfsumme verschlüsselt er mit seinem privaten Key A und legt sie bei. Nun kann jeder diese Prüfsumme mit dem öffentlichen Key B des Absenders entschlüsseln, und feststellen ob die Nachricht echt und unverfälscht ist. Da sein Key A ja geheim ist, kann kein anderer diese verschlüsselte Prüfsumme erzeugen als er selbst.