Verschlüsselte E-Mails?

Ein GPG/PGP How-To von Andreas Bierfert
- 06.07.2004
- 24.12.2003

Warum Verschlüsselte E-Mails?

Am Anfang steht wie immer die Frage, warum man überhaupt E-Mails verschlüsseln will. Die Antwort ist eigentlich recht einfach: Wenn wir über die Post einen Brief verschicken, so haben wir das Vertrauen, dass niemand auf dem Weg Sender ⇔ Empfänger unseren Brief liest. Dies mag auf dem Postweg funktionieren, betrachten wir nun den Weg einer E-Mail, so arbeiten wir nicht wie bei der Post nur mit vertrauten Mitarbeitern, sondern haben oftmals viele Zwischenstationen zwischen Sender und Empfänger, die nicht vertrauenswüdig sind.

Ich denke jedem ist klar, wenn es nur darum geht eine kurze Mail mit Hallo Schatz, mir geht es gut! zu senden, dann ist dies in den meisten Fällen keine sensible Information und somit ist es auch nicht wichtig, ob ein Dritter diese Information 'mithören' kann oder nicht. Handelt es sich aber um wichtige Informationen z.B. einer Firma, so kann es sinnvoll sein die E-Mail zu verschlüsseln, so dass nur der richtige Empfänger die Mail wieder entschlüsseln kann.

PGP vs. GPG

An dieser Stelle wollen wir an zwei weit verbreiteten Systemen zeigen, wie einfach es ist Daten zu verschlüsseln oder zu signieren. Der bekannteste Hersteller ist PGP. Seit vielen Jahren produziert PGP Software zum verschlüsseln von Daten. Die englisch sprachige Homepage ist unter www.pgp.com zu erreichen. Neben kostenpflichtigen Packeten für Firmen steht dort auch für Windows ein kostenloser Download zur Verfügung.

Den selben Standart wie PGP unterstützt auch GPG/GnuPG. Der Unterschied zu PGP ist, dass GPG unter der GPL frei verfügbar ist, und somit unabhängig von jeder Firma ist. Die Webseite ist unter www.gnupg.org zu finden. Ein weiterer Vorteil ist, dass GPG sowohl für Windows als auch für Linux erhältlich ist.

Das Fazit ist: Hauptsache eine der beiden Möglichkeiten wird sinnvoll im täglichen E-Mail Verkehr eingesetzt um die Sicherheit wichtiger Daten zu erreichen.

Was ist ein Key?

Wie funktioniert das Ganze nun? GPG/PGP nutzt dazu folgendes Verfahren:

Jeder Person wird ein Schlüssel (Key) zugeordnet, der für diese Person einmalig ist. Dabei ist dieser Key in zwei Teile aufgeteilt:

  1. öffentlicher Schlüssel (Public Key)
  2. geheimer Schlüssel (Secret Key)

Um eine E-Mail zu verschlüsseln benötigt man, neben GPG/PGP, nur den Public Key der Person an die man eine Email verschicken möchte. Der Empfänger benötigt dann seinen Key um das ganze mit seinem Passwort zu entschlüsseln.

Um den Public Key einer Person zu bekommen, kann man natürlich diese Person fragen, oder eine öffentliche Datenbank kontaktieren. Zu einer der größten Datenbanken (Keyring) gehöhrt der Server pgp.mit.edu. Hier z.B. der Link zu meinem Public Key.

Neben dem einfachen Verschlüsseln von Mails bietet GPG/PGP desweiteren eine Art Bewertungssystem. So ist es möglich bestimmten Schlüsseln sein Vertrauen (Trust) auszusprechen und somit zu zeigen, dass ein bestimmter öffentlicher Schlüssel wirklich zu einer bestimmten Person gehört. Bei meinem Public Key sieht das ganze dann ungefähr so aus.

Aus dem Bewertungssystem ergibt sich noch eine weitere Interessante Möglichkeit: Signiert man eine E-Mail mit seinem Public Key kann der Empfänger, ob Verschl¨sselung oder nicht, besser nachvollziehen, ob der Sender wirklich die Person ist, für die er behauptet zu sein.

Anders als beim Public Key darf der Secret Key niemals an andere Personen weitergegeben werden und sollte wenn möglich an einer sicheren Stelle im System aufgehoben werden.

Erstellen eines Keys

Im Folgenden wird für GPG und PGP getrennt gezeigt, wie man die Software bekommt und wie man einen Key anlegt. Für den Windows-Benutzer ist sicherlich PGP die einfachere Wahl, da alles (fast) automatisch über eine graphische Oberfläche erledigt werden kann. Für Linux-Butzer und erfahrerene User ist sicher GPG die richtige Wahl, da GPG sowohl unter Linux als auch Windows genutzt werden.

GPG

Wie eben schon erwähnt kann GPG von www.gnupg.org bezogen werden. Den meisten Linux Distributionen sollte gnupg allerdings schon beiliegen. Sollte dies der Fall sein, muß gegebenen Falls einfach das entsprechende Paket nachinstalliert werden.

Distribution:Packetname:
RedHat/Fedoragnupg
Debiangnupg
Susegpg

Die Windows-Version kann z.B. von hier heruntergeladen werden. Da es sich um eine gepackte Datei handelt, wird ein ZIP Programm zum entpacken benötigt (z.B. Winzip www.winzip.com. Nun sollte das ganze ZIP-Archiv in ein Verzeichnis entpackt werden und ein MS-DOS Fenster, bzw. unter 2000 und XP eine Eingabeaufforderung gestartet werden und in das entsprechende Verzeichnis gewechselt werden.

Nun erzeugen wir einen Schlüssel in dem wir gpg wie folgt aufrufen:

gpg --gen-key

Nun gibt es drei Möglichkeiten einen Key zu erzeugen.

Please select what kind of key you want:
   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection?

Hierbei handelt es sich um verschiedene Verschlüsselungsverfahren. In diesem Beispiel wollen wir nicht weiter auf die Unterschiede eingehen sondern Option (1) nehmen.

DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
              minimum keysize is  768 bits
              default keysize is 1024 bits
    highest suggested keysize is 2048 bits
What keysize do you want? (1024)

Es ist möglich verschieden starke Verschlüsselung zu verwenden. Hierbei gilt: Je größer der Key um so besser ist die Verschlüsselung aber auch der benötigte Rechenaufwand um Daten zu ver- oder entschlüsseln. Daher ist 1024 bits für normale Zwecke vollkommen ausreichend.

Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 5y

Als nächstes ist es wichtig zu überlegen wie lange ein Key gültig sein soll. Für eine Privatperson ist diese Frage nicht von großer Bedeutung, jedoch kann dieses Frage bei verschiedenen Anwendungen eine große Bedeutung erlangen. Daher entscheiden wir uns in diesem Beispiel für 5 Jahre (5y).

Key expires at Mon 22 Dec 2008 03:08:03 PM CET
Is this correct (y/n)?

Nach dieser Zeit (also dem 22.12.2008 15.08 Uhr GMT ) ist der Key nicht mehr gültig und ein neuer muß erstellt werden.

Nun müssen Name, Emailadresse etc. angegeben werden...

You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) "

Real name: Hans Mustermann
Email address: mustermann@localhost
Comment:                           
You selected this USER-ID:
    "Hans Mustermann "

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? 

Als wichtigster Teil, muß nun das Passwort für den Secret Key gewählt werden (Hinweis: Das Passwort wird nicht beim eintippen ausgegeben, auch nicht durch Sterne...).

You need a Passphrase to protect your secret key.    

Enter passphrase:

Nun sollte das erzeugte Keypaar von Public Key und Secret Key im Verzeichnis .gnupg liegen. Fügt man in der Datei gpg.conf folgende Zeile ein, können mit gpg --send-keys alle in der Datenbank befindlichen Public Keys zum Keyring geschickt werden (benötigt eine Internetverbindung).

in gpg.conf:
keyserver x-hkp://pgp.mit.edu

PGP

Um einen PGP-Key zu erstellen benötigt man die Software PGPfreeware welche in deutscher Version von PGP bezogen werden kann. Die Datei selber ist ähnlich GPG auch ein ZIP-Archiv welches z.B. mit Winzip (www.winzip.com) entpackt werden kann. Innerhalb dieses Archives befindet sich ein Installationsprogramm für Windows. Nachdem die Software installiert ist (einfach den Anweisungen des Installationsprogramms folgen), können wir anfangen einen Key zu erstellen. Bei der aktuellen Version wird während der Installation nachgefragt, ob man schon einen Schlüssel erstellt hat. Wird diese Frage mit nein beantwortet, so öffnet sich nach dem Neustart automatisch ein Assistent zur Installationshilfe.

1. Schritt

Dies ist das Startfenster der Installationshilfe. Mit Next wird die Schlüsselerzeugung gestartet.

2. Schritt

Hier nun einfach Namen und E-mail Adresse angeben und auf Next klicken.

3. Schritt

Hier muß nun das Passwort für den Schlüssel angegeben werden. Dabei gibt die blaue Anzeige an, wie 'gut' das Passwort ist (Achtung: Mindestens 8 Zeichen). Auch hier geht es mit Next weiter.

4. Schritt

Nach wenigen Sekunden Rechenzeit (je nach Prozessor) sollte der Key erzeugt sein.

Kommunikation mit GPG/PGP

Um über GPG/PGP kommunizieren zu können benötigt der Kommunikationspartner wie anfangs erwähnt den Public Key seines gegenübers. Diesen kann man bedenkenlos über Mail verschicken oder auf seiner Webseite zum Download bereitstellen.

Es gibt mehrere Möglichkeiten die eigentliche Mail zu verschicken. Es gibt Mail Programme, die automatisch verschlüsseln und signieren. Dies kann mit installierter PGP Software z.B. schon Outlook Express:
OE mit Signierung und Verschlüsselung

Es gibt andere Programme (wie z.B. sylpheed-claws), dass selbiges mit gpg kann.

Eine andere Möglichkeit ist es einen Text zu schreiben, ihn dann zu verschlüsseln und dann per Mail zu verschicken. Dies ist jedoch deutlich umständlicher als das ganze direkt per Mail Software zu machen...

Fragen und Anregungen

Habt ihr Fragen oder Anregungen zu diesem Thema? Dann schickt mir eine Mail an andreas[dot]bierfert[at]lowlatency.de und ich werde versuchen zu helfen...