Email-System und Email-Sicherheit

Transcription

Email-System und Email-Sicherheit
Rheinisch-Westfälische Technische Hochschule Aachen
Lehrstuhl für Informatik IV
Prof. Dr. rer. nat. Otto Spaniol
E-Mail-Systeme und E-Mail-Sicherheit
Seminar: Kommunikationsprotokolle
Sommersemester 2003
Schamil Wackenhut
Matrikelnummer: 232502
Betreuung:
Yuri Babich
Lehrstuhl für Informatik IV, RWTH Aachen
Inhaltsverzeichnis
1
Einführung
1
2
Grundlagen
1
2.1
Mail User Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
2.2
Mail Transport Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.3
Mail Delivery Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
3
4
5
Protokolle
3
3.1
SMTP - Simple Mail Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . .
3
3.2
POP3 - Post Office Protocol 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.3
IMAP - Internet Message Access Protocol . . . . . . . . . . . . . . . . . . . . . . .
8
3.4
Aufbau einer E-Mail, Attachments (multi-part) . . . . . . . . . . . . . . . . . . . .
10
3.5
Probleme der Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
Sicherheit
13
4.1
Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
4.1.1
Symmetrische Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . .
13
4.1.2
Public Key Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
4.1.3
Hybride Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
4.2
Digitale Signatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.3
TLS/SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.3.1
Aufbau der Verbindung bei TLS . . . . . . . . . . . . . . . . . . . . . . . .
20
4.3.2
STARTTLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.3.3
Grenzen von STARTTLS im SMTP . . . . . . . . . . . . . . . . . . . . . .
21
Zusammenfassung
22
Abbildungsverzeichnis
1
E-Mail System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2
Symmetrische Verschlüsselung
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3
Hybride Verschlüsselung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
4
POP3 Plain Text Kommunikation
. . . . . . . . . . . . . . . . . . . . . . . . . . .
19
5
TLS Schicht
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
1
Einführung
Diese Arbeit beschreibt das wohl am weitesten verbreitete Medium der elektronischen Kommunikation im Internet, die ,,E-Mail”. E-Mail hat sicherlich jeder schon einmal benutzt oder zumindest etwas
davon gehört.
Diese Arbeit versucht die Grundlagen und die Funktionsweise der E-Mail-Systemen sowie die Sicherheitsaspekte zu erklären. Es werden Beispielsessions zur Kommunikation einzelner Komponenten des
Systems vorgestellt, unter anderem wird auf die Verschlüsselung von E-Mail-Inhalten, sowie auf die
Verschlüsselung bei der Kommunikation eingegangen.
Diese Ausarbeitung fasst die wichtigsten Informationen zum Thema zusammen, versucht aber, nicht
zu technisch zu wirken, so dass die Personen, die sich mit dem Thema noch nicht auseinander gesetzt
haben, motiviert sind, sich diese Arbeit durchzulesen.
Der erste Teil beschäftigt sich mit der grundlegenden Funktionsweise des E-Mail-Systems und dem
Aufbau einer E-Mail.
Im zweiten Teil wird es ein wenig technischer. Es werden Protokolle vorgestellt, die während des
Verschickens bzw. Abholens der E-Mail verwendet werden. Der zweite Teil beinhaltet viele Beispiele,
die die vorgestellte Theorie veranschaulichen.
Im dritten und letzten Teil werden die gängigen Verschlüsselungsmechanismen und -verfahren vorgestellt und erklärt.
2
Grundlagen
Sehen wir uns zuerst einmal die Grundlagen an, auf welche Weise eine E-Mail vom Absender zum
Empfänger gelangt.
2.1 Mail User Agent
Zuerst wird ein Text mit Hilfe eines Editors erstellt, der verschickt werden soll. Der Editor wird meistens bei dem verwendeten Mail User Agent (MUA)1 mitgeliefert. Mail User Agents stellen also sozusagen die Mensch-Maschine Schnittstelle dar, die dem User hilft E-Mails zu verfassen, verschlüsseln,
verwalten und zu ,,verschicken”. Den eigentlichen Versand der E-Mail übernimmt der sogennante
Mail Transport Agent (MTA), der dafür sorgt, dass die E-Mail beim Empfänger ankommt, gegebenenfalls auch über mehrere Stationen. Das heißt, dass E-Mails evtl. zuerst an andere Mail Transport
Agents weitergegeben werden, bis sie beim gewünschten Client ankommen.
1
z.B. mutt, Outlook Express etc.
1
2.2 Mail Transport Agent
Die Mail Transport Agents (MTA) sind so genannte Mailserver. Der Weg vom Mail User Agent
zum Mail Transport Agent sieht nicht immer gleich aus. Manchmal wird ein eigener Mail Transport
Agent betrieben, an den die E-Mail weitergegeben wird und der dann für die Zustellung sorgt. Nicht
jeder hat die Möglichkeit, einen eigenen Mail Transport Agent zu betreiben, also muss der Mail User
Agent in der Lage sein, eine TCP/IP Verbindung zu einem Server, z.B. SMTP.gmx.de, aufzubauen.
Die anschließende Übergabe erfolgt über das Simple Mail Transfer Protocol (SMTP), auf das ich im
zweiten Teil näher eingehen werde.
Sobald die E-Mail an den MTA übergeben wurde, wird sie verschickt, und wandert per SMTP von
einem Mail Transport Agent zum nächsten, bis irgendwann der MTA erreicht ist, der die Mailbox
des Empfängers betreibt. Der Versand erfolgt direkt von einem Client-MTA zu einem Server-MTA,
wenn die beiden direkt verbunden sind (z.B. LAN). Ist dies nicht der Fall, erfolgt der Versand über
ein oder mehrere Relay-MTAs. Der zwischenliegende Host kann entweder ein Relay-MTA oder ein
Gateway sein, das das Ganze in eine andere Versandumgebung einpackt (z.B. statt TCP wird NITS2
oder X.25 benutzt). Dieser Host wird mit Hilfe der DNS3 Mail eXchanger Funktion ausgewählt.
Üblicherweise werden diese Hosts nicht per explizitem ,,source routing” ausgewählt, sondern durch
die oben genannten DNS MX records.
Sobald die E-Mail bei dem zuständigen Mail Transport Agent angekommen ist, so übergibt dieser die
angenommene E-Mail an den Mail Delivery Agent.
2.3 Mail Delivery Agent
Der Mail Delivery Agent kümmert sich um die endgültige Auslieferung der E-Mails an die Mailbox. Er sorgt dafür, dass sich zwei gleichzeitige Zugriffe auf die Mailbox gegenseitig nicht in die
Quere kommen. Einige Mail Delivery Agents erledigen zusätzlich komplexere Aufgaben, z.B. Filtern
von Werbung bzw. Spam, Verwaltung von Mailinglisten (lokal), Scannen der E-Mails aif Viren oder
automatische Beantwortung bestimmter Anfragen. Ein klassisches Beispiel für einen Mail Delivery
Agent ist das Programm ,,mail”, das auf jedem UNIX System vorhanden ist. Ein wenig mächtiger ist
,,procmail”.
Falls die E-Mails über einen Provider, wie z.B GMX, empfangen werden, müssen die E-Mails, nachdem sie auf dem GMX Server in eine für den User vorgesehene Mailbox geschrieben wurden, abgeholt werden. Dazu wird wieder eine TCP/IP Verbindung zum Server aufgebaut, die E-Mails mit Hilfe
von Post Office Protocol Version 3 (POP3) abgeholt und entweder in die lokale Mailbox geschrieben
oder an den lokalen Mail Transport Agent (MTA) übergeben. Dieser leitet die E-Mails an den lokalen
Mail Delivery Agent (MDA) weiter, der die E-Mails in die entsprechende lokale Mailbox schreibt.
Alternativ zu POP3 kann Internet Message Access Protocol (IMAP) verwendet werden. Im Gegensatz zu POP3 werden die E-Mails hier nicht abgeholt, sondern es wird direkt auf die Mailbox auf
2
3
Network Independent Transport Service
Domain Name Service
2
MTA
MDA
MUA
Mehrere
MTAs
POP3/IMAP
Mailbox
lokal
POP3/IMAP
Mailbox
Anbieter
MDA
MTA
Abbildung 1: E-Mail System
dem Server zugegriffen. Dies ist z.B. für vielreisende Leute vorteilhaft, da von jedem Rechner mit
Internetzugang die gesamte Korrespondenz verwaltet werden kann.
Der schematische Aufbau ist in Abb.1 dargestellt.
3
Protokolle
Nun verfolgen wir eine E-Mail von ihrem Startpunkt aus bis zum Ende. Zunächst muss vom MUA
eine E-Mail erstellt werden. Der Benutzer gibt die Information, die verschickt werden soll, sowie den
Empfänger und evtl. Dateien, die mit der E-Mail verschickt werden sollen ein.
Eine E-Mail sieht danach (minimal) folgendermaßen aus:
From: Schamil Wackenhut <[email protected]>
To: [email protected]
Subject: test
Hallo, das ist ein test
Danach wird diese E-Mail vom MUA über eine TCP/IP Verbindung an den MTA übergeben. Und
zwar wird eine TCP Verbindung aufgebaut. Die Kommunikation zwischen MUA und MTA ist in
Simple Mail Transfer Protocol (SMTP) [1] festgelegt.
3.1 SMTP - Simple Mail Transfer Protocol
SMTP ist das Protokoll, welches für Mailtransport und -zustellung verantwortlich ist. Die Übergabe
der E-Mail vom MUA an den MTA kann am einfachsten mit einer telnet Sitzung nachgespielt werden:
$ telnet mail 25
Trying 10.0.0.2...
3
Connected to mail.wackes.netz.
Escape character is ’ˆ]’.
220 mail.wackes.netz ESMTP Sendmail 8.12.7/8.12.4; \
Thu, 20 Mar 2003 14:41:12 +0100
Nachdem die Verbindung aufgebaut wurde, meldet sich der Mailserver mit einer Zeile, die als erstes
den Erfolgsstatuscode 220 und danach den Rechnernamen sowie Informationen zum verwendeten
MTA, in unserem Fall Sendmail, enthält. Anschließend gibt der Client seinen Rechnernamen mit
dem Befehl helo4 bekannt:
helo localhost
250-mail.wackes.netz Hello localhost [127.0.0.1], pleased to meet you
Die Antwort besteht aus einer Zeile. Der MTA teilt mit, dass er für die Kommunikation bereit ist.
Somit ist der SMTP Handshake abgeschlossen.
Falls es sich um einen MTA handelt, der eine erweiterte Version von SMTP unterstuetzt (ESMTP)
(dies erkennt man an der Begrüßungszeile, falls dort das Schlüßelwort ESMTP vorkommt), so vertauscht man die ersten beiden Buchstaben in dem String helo:
ehlo localhost
250-mail.wackes.netz Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
Nun teil der MTA teilt, welche Optionen bei der Übergabe der E-Mail zusätzlich benutzt werden
dürfen. Zum Beispiel können die E-Mails dank 8BITMIME in einem 8-Bit Format vorliegen und
müssen nicht vor dem Transport auf 7-Bit ASCII-Transport-Format [2] gebracht werden. SIZE erlaubt die Frage, ob eine evtl. überlange E-Mail zum Versand angenommen wird. DSN steht für Delivery Status Notification und ermöglicht eine Feineinstellung für den Versand von Fehler- und Erfolgsmeldungen.
Heutzutage wird aufgrund der zahlreichen Zusatzoptionen vorwiegend die erweiterte Version von
SMTP eingesetzt.
4
alle SMTP Befehle bestehen aus 4 Buchstaben
4
Als nächstes wird der Envelope der E-Mail übermittelt. Dieser enthält die Adresse des Empfängers
und die Adresse des Senders. Dabei werden die From: und To: Informationen aus dem Header der
E-Mail vom MTA in den Envelope übernommen. Während der Übertragung beachten die MTAs nur
das, was im Envelope steht. Der Headerinhalt ist nicht von Bedeutung, er wird ignoriert.
Der Unterschied zwischen Header und Envelope wird bei Mailinglisten ziemlich deutlich. Hier steht
die Mailingliste selbst im Header. Im Envelope werden aber die einzelnen Empfänger aufgeführt.
mail from:<[email protected]>
250 2.1.0 <[email protected]>... Sender ok
rcpt to:<[email protected]>
250 2.1.5 <[email protected]>... Recipient ok
MTA prüft die Adressen auf Fehler und reagiert jeweils mit einer Erfolgsmeldung mit dem Status
250.
data
354 Enter mail, end with "." on a line by itself
Der Befehl data leitet die eigentliche E-Mail ein. Dabei wechselt der MTA vom KommandozeilenModus zum Datenmodus, der durch eine Zeile abgeschlossen wird, die nur aus einem Punkt ”.” besteht.
From: Schamil Wackenhut <[email protected]>
To: [email protected]
Subject: test
Hallo das ist ein test
.
250 2.0.0 h2KDfCUZ001079 Message accepted for delivery
Zur E-Mail gehört wiederum ein Header und ein Body (der eigentliche Inhalt der Mail). Die E-Mail
wird mit einem Punkt abgeschlossen und die Nachricht vom MTA in die Warteschlange aufgenommen. Ab jetzt beginnt der Weg der E-Mail von einem MTA zum anderen. Nach der Übertragung der
E-Mail wird die Sitzung mit dem Befehl quit beendet:
quit
221 2.0.0 mail.wackes.netz closing connection
5
Nach einiger Zeit erreicht die E-Mail den für sie zuständigen MTA, der sie annimmt und an den MDA
übergibt, der sie wiederum in eine für den User vorgesehene Mailbox schreibt.
Da die E-Mails normalerweise nicht direkt in die lokale Mailbox geschrieben werden, sondern zunächst
beim Provider landen, müssen diese E-Mails von dort abgeholt werden. Dafür sind die beiden Protokolle Post Office Protocol 3 (POP3) [3] und Internet Message Access Protocol (IMAP) [5] zuständig.
Der Abholvorgang funktioniert folgendermaßen: Ein Programm auf dem Rechner des Empfängers
(zum Beispiel ,,fetchmail”) oder eine besondere Routine des MUA baut eine TCP Verbindung zum
Mailserver des Providers auf, wo sich die Mailbox des Users befindet. Es holt die E-Mails dort ab
und schreibt sie in die lokale Mailbox oder übergibt sie an den lokalen MTA, der sie wiederum an den
lokalen MDA weiterleitet, der die E-Mails dann auch in die lokale Mailbox schreibt.
Im Folgenden werden die beiden Protokolle vorgestellt.
3.2 POP3 - Post Office Protocol 3
Bei POP3 handelt es sich um ein relativ einfaches Protokoll, das zum Abholen der E-Mails von einem
entfernten Server auf die lokale Maschine eingesetzt wird.
Dazu wird im Folgenden einmal eine Beispielsitzung gezeigt:
$ telnet pop3 110
Trying 10.0.0.2...
Connected to pop3.wackes.netz.
Escape character is ’ˆ]’.
+OK
Nach dem Aufbau der Verbindung meldet sich der Server mit einer Erfolgsmeldung +OK. Danach
muss sich der Client authentifizieren. Sind die Angaben korrekt, so meldet der Server +OK, falls nicht
antwortet er mit -ERR.
USER test
+OK May I have your password, please?
PASS [S<8pfI5
+OK mailbox has 3 messages (4383 octets)
Die Anzahl und Gesamtgröße der wartenden E-Mails in der Mailbox lässt sich mit dem Befehl STAT
abfragen.
STAT
+OK 3 4383
6
Ähnlich lässt sich mit LIST entweder die Größe jeder E-Mail oder die Größe einer bestimmten Mail
anzeigen.
LIST
+OK mailbox has 3 messages (4383 octets)
1 1100
2 1343
3 1940
.
LIST 1
+OK mailbox has 3 messages (4383 octets)
1 1100
.
Zum Abholen der Mails vom Server dient der Befehl RETR. Daraufhin zeigt der Server die angegebene E-Mail an, welche von einer Zeile, die aus einem Punkt besteht, beendet wird.
RETR 1
+OK message follows
Return-Path: <[email protected]>
Received: ...
Date: Thu, 20 Mar 2003 17:10:55 +0100
From: Schamil Wackenhut <[email protected]>
To: [email protected]
Subject: test
Message-ID: <20030320161055.GA1574@fckp>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.3i
Hallo das ist ein test
.
Zum Löschen wird das Kommando DELE benutzt, zum Beenden der Verbindung dient QUIT
DELE 1
7
+OK message deleted
QUIT
+OK bye
Connection closed by foreign host.
$
Wie man sieht, sind Aufbau und Funktionsweise von POP3 recht einfach.
3.3 IMAP - Internet Message Access Protocol
Komplizierter als POP3, dafür aber auch leistungsfähiger, ist IMAP [5]. Das Protokoll beinhaltet
auch Funktionen wie die dauerhafte Zuordnung und Speicherung der Attributen (Flags) zu einzelnen
E-Mails oder die Verwaltung komplexer hierarchischer Verzeichnisstrukturen und damit aller MailOrdner auf dem Server.
Innerhalb gewisser Grenzen kann ein IMAP Server mehrere Befehle gleichzeitig bebarbeiten. Noch
bevor die Antwort auf den ersten Befehl angekommen ist, sendet der Client bereits den nächsten.
Damit dabei nichts durcheinander kommt, schickt der Client am Anfang des Befehls ein eindeutiges
Tag mit, das der Server in der letzten Zeile der zugehörigen Antwort wiederholt.
Oft wird dazu ,,a0001”, ,,a0002”, ,,a0003”, ,,a0004” etc. benutzt. Ein IMAP Login mit dem vom
Client gewählten und vom Server fuer die Antwort übernommenen Tag sieht beispielsweise so aus:
$ telnet kasten 143
Trying 10.0.0.1...
Connected to kasten.
Escape character is ’ˆ]’.
* OK [CAPABILITY IMAP4REV1 LOGIN-REFERRALS STARTTLS AUTH=LOGIN]\
KASTEN.wackes.netz IMAP4rev1 2002.336 at Thu, 20 Mar 2003 22:15:35\
+0100 (CET)
Der erste Befehl fragt den Funktionsumfang (capability) des Servers ab. Dieser reagiert zunächst mit
einer unmarkierten Antwort. An Stelle des Tags steht hier ein Sternchen.
Danach folgt der Login des Benutzers, wobei der Benutzername und Passwort mitgeteilt werden:
a01 capability
* CAPABILITY IMAP4REV1 IDLE NAMESPACE MAILBOX-REFERRALS BINARY SCAN\
SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND LOGIN-REFERRALS\
STARTTLS AUTH=LOGIN
a01 OK CAPABILITY completed
a02 login test /H),%$Da8!\g
8
a02 OK [CAPABILITY IMAP4REV1 IDLE NAMESPACE MAILBOX-REFERRALS BINARY\
SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND] User\
test authenticated
Anschließend wählt der Befehl select einen Ordner aus. Neben den benutzerdefinierten Ordnern
gibt es immer einen virtuellen Ordner namens ,,INBOX”, in dem ankommende und ungefilterte EMails abgelegt werden. Der IMAP Server schickt daraufhin eine Reihe von Informationen über diesen
Ordner an den Client, unter anderem die Anzahl der neuen Nachrichten:
a03 select INBOX
* 1 EXISTS
* 1 RECENT
* OK [UIDVALIDITY 1048194957] UID validity status
* OK [UIDNEXT 2] Predicted next UID
* FLAGS (\Answered \Flagged \Deleted \Draft \Seen)
* OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft \Seen)]\
Permanent flags
* OK [UNSEEN 1] first unseen message in /var/mail/test
a03 OK [READ-WRITE] SELECT completed
fetch überträgt eine E-Mail, wobei Art und Umfang der gewünschten Daten angegeben sind. Das
hier verwendete Schlüsselwort RFC822 fordert eine dementsprechend formatierte E-Mail [2] an. Eine
Alternative wäre zum Beispiel ENVELOPE, wodurch die Daten aus dem SMTP Envelope angezeigt
werden. Der Befehl BODY.PEEK[HEADER], fordert nur den Header der E-Mail an. Damit kann
zum Beispiel ein Filterprogramm schon vor der Übertragung entscheiden, ob diese E-Mail überhaupt
erwünscht ist.
a04 fetch 1 RFC822
* 1 FETCH (RFC822 {335}
Return-Path: <[email protected]>
Received: (from freak@localhost)
by KASTEN.ram.rwth-aachen.de (8.11.6/8.11.3) id h2KLFN210203
for test; Thu, 20 Mar 2003 22:15:23 +0100 (CET)
Date: Thu, 20 Mar 2003 22:15:23 +0100 (CET)
From: Schamil Wackenhut <[email protected]>
Message-Id: <[email protected]>
To: test
hallo
FLAGS (\Recent \Seen))
a04 OK FETCH completed
9
Nach dem Text werden die aktuellen Flags der E-Mail angezeigt. Zum Löschen fügt man hier ein
Flag \Deleted hinzu und räumt anschließend die Mailbox mit expunge auf:
a05
* 1
a05
a06
* 1
* 0
* 0
a06
store 1 +FLAGS(\Seen \Deleted)
FETCH (FLAGS (\Recent \Seen \Deleted))
OK STORE completed
expunge
EXPUNGE
EXISTS
RECENT
OK Expunged 1 messages
Die Verbindung zum Server wird durch das Kommando logout beendet:
a07 logout
* BYE KASTEN.ram.rwth-aachen.de IMAP4rev1 server terminating connection
a07 OK LOGOUT completed
Connection closed by foreign host.
3.4 Aufbau einer E-Mail, Attachments (multi-part)
Im Folgenden ist Aufbau der E-Mail gezeigt:
From [email protected] Thu Mar 20 13:12:05 2003
Return-Path: <[email protected]>
Die erste Zeile zeigt den Absender aus dem Envelope der E-Mail. Die zweite Zeile gibt den ReturnPath an. An diese Adresse wird die E-Mail zurückgesendet, wenn der Empfänger nicht erreicht werden kann.
Received: from myhost.wackes.netz (localhost [127.0.0.1])
by myhost.wackes.netz (8.12.7/8.12.4) with ESMTP id h2KCC4UZ000730
for <[email protected]>; Thu, 20 Mar 2003 13:12:04 +0100
Received: (from sw@localhost)
by myhost.wackes.netz (8.12.7/8.12.4/Submit) id h2KCC4H2000729
for test@myhost; Thu, 20 Mar 2003 13:12:04 +0100
Diese beiden Zeilen beschreiben die Route der E-Mail durch die Mail Transport Agents (MTA). Die
Reihenfolge ist umgekehrt, d.h man liest von unten nach oben. Es ist zu sehen, dass die E-Mail
zuerst von dem User ,,sw” an den MTA (myhost.wackes.netz) übergeben wurde. Der MTA hat diese
akzeptiert, und hat sie in die Warteschlange gelegt. Die E-Mail ist an den User ,,test” adressiert. Der
hier verwendete MTA betreibt eine Mailbox für diesen User, also übergibt er diese an sich selbst, die
E-Mail wird also zugestellt.
10
Date: Thu, 20 Mar 2003 13:12:04 +0100
From: Schamil Wackenhut <[email protected]>
To: [email protected]
Subject: test
In diesem Abschnitt erkennt man die Zeit, wann die E-Mail abgeschickt wurde, den Absender (From:)
und den Empfänger (To:) sowie eine Betreffzeile (Subject:).
Message-ID: <20030320121204.GA726@fckp>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Dies ist ein sehr wichtiger Teil der E-Mail. Zuerst wird der E-Mail mit der Message-ID ein eindeutiger
String zugewiesen. Dies ist besonders für Mailinglisten mit Archiven oder im Usenet5 wichtig, damit
jede E-Mail eindeutig identifiziert und gefunden werden kann.
Mime-Version: 1.0 steht für ,,Multipurpose Internet Mail Extensions” [4] und sagt dem Client,
dass diese E-Mail eine erweiterte Kodierung des Inhalts benutzen darf.
Content-Type: text/plain; charset=us-ascii besagt, dass es sich um eine nach RFC822
[2] standardisierte E-Mail handelt.
Content-Disposition: inline sagt dem Client, dass sich die komplette E-Mail inklusive
Attachments in einer Datei befinden, d.h. sobald der User diese E-Mail betrachtet, bekommt er auch
die Attachments zu sehen. Eine Variation davon wäre:
Content-Disposition: attachment, filename=datei.bsp
In diesem Fall kann der User entscheiden, ob er das Attachment ansehen möchte oder nicht.
Möchte man eine E-Mail mit Attachments verschicken, sieht die Content-Type Zeile zum Beispiel
folgendermaßen aus:
Content-Type: multipart/mixed; boundary="JgQwtEuHJzHdouWu"
Hier richtet sich der Inhalt der E-Mail nach dem String, der hinter boundary steht. Jeder Teil der
E-Mail begint mit diesem String, zum Beispiel:
--JgQwtEuHJzHdouWu
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hallo das ist eine Mail mit Attachment
5
http://isc.faqs.org/faqs/usenet/what-is/part1/
11
Hier wird der Content-Type sowie Content-Disposition für dieses Teil deklariert. Das
eigentliche Attachment sieht wie folgt aus:
--JgQwtEuHJzHdouWu
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="fs.c"
void main(void){
printf("%08x.%08x.%08x.%08x.%08x.%08x.%08x\n");
}
--JgQwtEuHJzHdouWu
Hier ist zu sehen, dass Content-Disposition ein Attachment beschreibt, dessen Name ,,fs.c”
ist. In diesem Fall handelte es sich um eine Textdatei, die durch Content-Type: text/plain;
charset=us-ascii bezeichnet wird. Sollen zum Beispiel Binaries, also Programme, Archive etc.
verschickt werden, so sieht das Attachment-Abschnitt etwas anders aus:
--JgQwtEuHJzHdouWu
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=test
Content-Transfer-Encoding: base64
f0VMRgEBAQAAAAAAAAA....
Content-Type wird nun anders codiert, und die folgende Zeile wird hinzugefügt:
Content-Transfer-Encoding: base64
Diese Zeile beschreibt, wie dieses Attachment in 7-Bit Form gebracht wurde. Dies ist aus Rücksicht auf alte SMTP-Versionen nötig. Dafür gibt es die acht Möglichkeiten. 7bit, 8bit, binary, quotedprintable, base64, ietf-token und x-token. Die Erklärung dieser Kodierungsverfahren würde den Rahmen dieser Ausarbeitung sprengen, deshalb verweise ich an dieser Stelle auf RFC2045 zur Beschreibung dieser Verfahren.
Zurück zu unserer E-Mail, die keine Attachments beinhaltete. Auf den Header folgt der Rest der EMail, der Body. Im Body stehen die Informationen, die übermittelt werden sollen, also der eigentliche
Inhalt der E-Mail.
Hallo,
heute sind’s 16 Grad draussen!
3.5 Probleme der Protokolle
Der Nachteil dieser teilweise einfachen Protokolle ist die Klartextübertragung der Passwörter im Netz,
wodurch die Möglichkeit der Manipulation der Daten und des Verkehrs erleichtert wird.
12
So können zum Beispiel ohne Probleme in einem lokalen Netz die Passwörter ausspioniert werden.
Der Header der E-Mail kann manipuliert werden, wodurch die Vertrauenswürdigkeit der E-Mail abnimmt. Der Inhalt der E-Mail kann sozusagen ,,on the fly” verändert werden.
Um Manipulationen zu verhindern, werden die im nächsten Kapitel vorgestellten Verschlüsselungsmechanismen, die beim Transport und beim Versand bzw. Empfang der E-Mails eingesetzt werden,
verwendet.
4
Sicherheit
Jeder, der eine E-Mail abschicken möchte, benötigt einen Internetzugang. Das Internet ist eine Infrastruktur, die viele Schwächen und Angriffspunkte aufweist. Betrachten wir zuerst einmal folgende
fiktive Situation:
Person1 trifft auf Person2, er will ihm Information mitteilen über seinen neuen Plan, wie man kostengünstig Wasserbomben herstellen kann. Es ist nun ein leichtes Spiel für Person3, das komplette
Gespräch mitzuverfolgen, um selbst die Wasserbomben zu basteln. Genau das will Person1 vermeiden. Also muss das Gespräch in einer Sprache ablaufen, der Person3 nicht mächtig ist.
Genauso ist es auch im Internet. Es ist sehr leicht, fremde E-Mails zu lesen bzw. manipulieren. Soll
vermieden werdem, dass Informationen an Dritte gelangen, kann der Inhalt der E-Mail auf unterschiedliche Weisen verschlüsselt werden.
Da man sich im Internet nicht gegenüber steht und demzufolge eine gewisse Anonymität herrscht, ist
oft nicht klar, ob die vorliegende E-Mail auch wirklich von dem richtigen Gesprächspartner, der in
der From:-Zeile steht, abgeschickt wurde.
Um die E-Mails durch Verschlüsselung und Signatur vertrauenswürdig zu machen, wurde PGP6 entwickelt, eine Später wurden OpenPGP und GnuPG entwickelt, die frei erhältlich sind. Diese beiden
Softwarepakete ermöglichen es dem Benutzer, seine E-Mails zu verschlüsseln und zu signieren.
4.1 Verschlüsselung
OpenPGP und GnuPG basieren auf dem [10]Prinzip der Public Key Kryptosysteme, der klassischen
symmetrischen Kryptosysteme sowie Einweg-Hashing.
4.1.1 Symmetrische Verschlüsselung
Der Sinn der symmetrischen Verschlüsselung [7] besteht darin, dass sich der Sender und der Empfänger
vor dem Informationsaustausch auf einen Schlüssel einigen, der zum Ver- und Entschlüsseln gebraucht wird. Solange dieser Schlüssel nur den beiden bekannt ist, ist diese Kommunikation sicher.
6
Pretty Good Privacy
13
Schluessel
verschluesseln
Sender
entschluesseln
Krypto−
text
Krypto−
text
Empfaenger
Angreifer
Abbildung 2: Symmetrische Verschlüsselung
Es ist also für einen Angreifer nahezu unmöglich, aus dem Kryptotext auf den ursprünglichen Text zu
schließen (Abb.2). Da die gesamte Sicherheit dieses Verfahrens auf der Geheimhaltung des Schlüssels
basiert, muss besonderer Wert darauf gelegt werden, dass dieser Schlüssel nicht zu erraten ist. Das
bedeutet insbesondere, dass eine große Anzahl von Schlüsseln existieren muß (key space). Aktuelle
Rechner haben solch große Rechenleistung, dass sie innerhalb einer kurzen Zeit große Key Spaces
überprüfen können, deshalb ist es besonders wichtig, sehr lange Schlüssel zu verwenden. Die DES7
Verschlüsselung [14] verwendet zum Beispiel Schlüssel der Länge 256 , die aber für einen normalen
Desktop PC kein wirkliches Problem darstellt. Spezialisierte Rechner brauchen für die Prüfung des
Key Spaces ca. 2-3 Stunden. Die modernen Algorithmen, so wie z.B. blowfish [15], setzen Schlüssel
der Länge 2128 ein. Dieser Key Space ist derart groß, dass es nicht möglich ist ihn in einer annehmbaren Zeit zu überprüfen. Sogar dann nicht, wenn dazu die komplette Rechneleistung der Welt benutzt
wird. Die Zeit, die dafür nötig ist, übersteigt das Alter unseres Universums.
Eins der einfachsten Beispiele für die symmetrische Verschlüsselung ist CAESAR. Dieser Algorithmus wird nachfolgend vorgestellt:
7
Data Encryption Standard
14
#define ALPHABET_LAENGE 26
int i=0;
int c=0;
lese String und k ein;
initialisiere Alphabet mit Buchstaben a-z;
for(i=0; i < strlen(String); i++){
while (String[i] != Alphabet[c])
c++;
String[i] = Alphabet[(c+k) mod ALPHABET_LAENGE];
}
return String;
Nun übergeben wir diesem Algorithmus z.B. den String:
DASISTDERKLARTEXT
und unseren Schlüssel k = 1337. Als erster Buchstabe des Kryptotextes ergibt sich ein O. D ist der
4.te Buchstabe im Alphabet ⇒ 4 + 1337 mod 26 = 15, 15.ter Buchstabe ist O. Der vollständige
Kryptotext lautet also
OLDTDEOPCVWLCEPIE
Der Entschlüsselungsvorgang läuft umgekehrt ab. Zur Entschlüsselung muss lediglich der Schlüssel
k bekannt sein.
4.1.2 Public Key Verfahren
Ein großes Problem bei symmetrischen Verschlüsselungsverfahren ist der Schlüsselaustausch. Deshalb ist es für einen Angreifer viel effizienter, den Schlüssel beim Austausch abzufangen, als jedes
Element des Key Space auszuprobieren. Problematisch ist weiterhin, dass für jede Sender-Empfänger n
Paarung ein Schlüssel ausgetauscht werden muss: Für n Personen benötigt man also
Schlüssel.
2
Dies führt schon bei recht wenigen Teinehmern zu einer großen Anzahl von erforderlichen Schlüsseln.
Um diese Problematik zu umgehen greift man auf die sogenannte Public Key Verfahren zurück. Hierbei wirde sogenannte Einweg-Funktion f eingesetzt, die folgende Eigenschaften erfüllt:
- f ist effizient berechenbar
- f −1 ist nicht effizient berechenbar
- f −1 ist effizient berechenbar, mit geheimer Information
15
Gibt nun der Empfänger seinen öffentlichen Schlüssel, der mit Einweg-Funktion f berechnet wurde, an den Sender, so kann dieser seine Nachrichten für diesen Empfänger verschlüsselt abschicken.
Durch die zweite Eigenschaft der Einweg-Funktion ist garantiert, dass niemand außer dem Empfänger
f −1 effizient berechnen kann. Somit stellt es keine Gefahr dar, öffentlichen Schlüssel zu veröffentlichen.
Die Lösung des zweiten Problems ist einfach, da jeder, der mit dem Empfänger kommunizieren
möchte, zum Verschlüsseln den Public Key des Empfängers verwendet, so braucht man bei n Benutzern n Schlüssel.
Wie bei der symmetrischen Verschlüsselung beruht die Sicherheit des Public Key Verfahrens auf
dem Schlüssel. Es wird empfohlen, Schlüssel der Länge 2048 Bit zu benutzen, um den Key Space
möglichst groß zu halten.
Dieses Verfahren soll nun anhand eines Beispiels erläutert werden:
Man sucht für jeden Buchstaben des Klartextes einen Namen aus dem Telefonbuch, der mit diesem Buchstaben anfängt, und setzt für diesen Buchstaben die Telefonnummer ein, die mit Nullen
aufgefüllt wird, falls die Länge kleiner als 10 ist. Das Ganze wird für den kompletten Klartext durchgeführt. Am Ende hat man einen Kryptotext der aus Telefonnummern der Länge 10 besteht. Da die
gesamten Telefonbücher nach Namen und nicht nach Telefonnummern sortiert sind, und nur der
Empfänger ein Telefonbuch hat, was nach Telefonnummern sortiert ist, so ist er der Einzige, der
den Kryptotext effizient entschlüsseln kann.
4.1.3 Hybride Verschlüsselung
OpenPGP und GnuPG benutzen hybride Verschlüsselungsverfahren, die eine Mischung der oben aufgeführten Verfahren darstellen. Es wird pro Verschlüsselung ein einzigartiger, zufallsgenerierter Sitzungsschlüssel benutzt, der mit dem Public Key des Empfängers verschlüsselt wird und mit welchem
die Nachricht symmetrisch kodiert wird. Beides wird in eine Nachricht zusammengefasst und abgeschickt. Mit dem Private Key des Empfängers kann nun der Sitzungschlüssel entschlüsselt und die
eigentliche Nachricht dann endgültig dekodiert werden. Abb. 3.
Die Vorteile bestehen darin, dass:
- die Anzahl der Schlüssel n beträgt
- keine gleichen Schlüssel zum Kodieren - Dekodieren benutzt werden
- und potentielle Angreifer jedes mal den Sitzungsschlüssel dekodieren müssten, um an die Informationen heran zu kommen.
Eine nach diesem Verfahren verschlüsselte Nachricht sieht folgendermaßen aus:
16
KRYPTOTEXT
Public−Key
(Empfaenger)
3.
Sitzungs−
schluessel
/dev/random
2.
KLARTEXT
1.
1. Sitzungschluessel randomisiert erstellen
2. KLARTEXT mit dem erstellten Key verschluesseln
3. Sitzungsschluessel mit dem Public−Key verschluesseln
Abbildung 3: Hybride Verschlüsselung
$ echo Hallo Welt | gpg -e -a -r 2A8037EA
-----BEGIN PGP MESSAGE----Version: GnuPG v1.0.7 (GNU/Linux)
hQQOA6beKBbn7I6ZEBAAwlzZoB/pnfZVboJCsruj94l19Mygmn+XiV/AcJylB40s
zp+klV81pABtzAbjsEyrd+g7MreRP8C+43qt1WwlxF1Cf2ODUflFn5H5+jLFqEyP
1KoPhqyMALHuDDK/Qg9YnHOjHtAxkPKTPf+T72QJ54eEsCoBtxPzzT7MgSTs4CbR
DECc8xMxndy+3HQ8Eoi1fBYjbWO/Y6wlQtpZB8fUXMM3VfYPBrq1Sgy8F0018HB8
TWb1DzE/qSzoWihdlOkhqPs5wuORvsMDBzgHhXfFZFmafUMkfwPXCnWV8G8e3Jx6
eutnOiM+iReymdny+lFBla8czE1go0hxTWk+wmbOX5GFeLTnXG5kRKK9PD0aydhK
fEzoIO9jhz4hFfGbXJzfjo7NYvLZlBwXgwsxI34lh/lIRQ97wzwAAiN5JF8SuswZ
fXE/zZoG89i+mFoNmy5OkCoOh7LZyBe+QKnvJzHfrLxk8nkkeCDn9Znlyb3PhSaJ
GFfiUCuj7btiNaT/y31xGcZr+i94Inj2h3PVVTiikF9B73UQKVvSzD1gVCXXlxsl
cScxTf+jgEKCi8ygSLw4X6pS85VVU6jeKLPoJdB6M8gdHFZuNJQg4otVNwzc5pLz
0g04/3/k6Nbv1dpBdU9kJYtnmFJsCvUI5JXN6meUyjH7qSNQTu+Bk0seOkjq//UP
/ieQlrnuPZvMkVZULlLvy9BScdWK+Rzlvt/K0A6Q0vWimQpXWWc/lv5eODbEjhK6
x3azapdlvpNP+/hquLEAEYU/PyivvPHLjovxukKSiIicnop7mkMIjCtCNYNZXOK3
Y3HrEywYDiuQ7qGOaWaujIDOY+lz1G0E8I3uum4l5iC9RyGTZcnjBlS1huBWR4oU
joTNwlwq7hAECzqwvf9xNCoh7CDETdvLuQL7P1QJKVctbUj5Ztg9MJba3xP/pRw3
RP8Oz4TB0tWoZlbTbIPA86houHn25yOy6jPku8Szl0XNRJZ04hvHSvC780qxR1ZK
ggNJ4WfbGL0BYNLrVHxs59I+nLGprQz3oHcITlDNMogQIfDNW4vAqutKxwUJ2rbJ
4ltDGP/7r/AxsVv1gQQ+TXoH0N+meFXU2M+h5hMhxx2tUalSjOpf+HpocpAiHIOP
csl9FX09JxL0JlS0MWJ89w93JLWa7htclJW66scKj/62wDT+in8AKdToi4kascc0
2wmrWb6VkDWThJo+h+Sc5dA9PijNKAVv9S76NK2SDXChW4FKH9J39Ic3KTnc47l7
7XxENLuiQl6p0JRUyXmxu1EemFFn0ECXIifeJv39m0n/GAINgeMxyYm+0TbzI5aN
guPZzcKxckQCB2Pqkw4pcSMM"oLhZ+tmZP/ssp9V9T7IySEXygM9FOXrSQemK1gj
n/YhUnwDd+POBrvvssP0PDSRw30=
=l+ds
-----END PGP MESSAGE-----
17
Auf Anhieb ist es nicht leicht, einen Zusammenhang zu dem ursprünglichen Text herzustellen, deswegen ist es nicht trivial zu entschlüsseln.
4.2 Digitale Signatur
Jeder Mensch hinterlässt Fingerabdrücke, die jeweils einmalig sind. So kann z.B. das Bundeskriminalamt prüfen, ob Verbrecher 1 oder Verbrecher 2 die Bank ausgeraubt hat. Problematisch wird es z.B.
bei Dateien, die keine Fingerabdrücke hinterlassen. Wie kann man also prüfen, ob eine Datei genau
die ist, die man erwartet? Man kann den Inhalt einer Datei mit Hilfe einer Hash-Funktion injektiv auf
eine kürzere eindeutige Datensequenz abbildeni, d.h., sobald der Inhalt einer Datei modifiziert wird,
ändert sich das Ergebnis der Hash-Funktion für diese Datei. Dies bezeichnet man in der Computerwelt als Fingerprinting. Dazu wurden auch einige Algorithmen entwickelt, wie z.B. US Secure Hash
Algorithm 1 (SHA1) [11] oder Message Digest Algorithm 5 (MD5) [12]. Die digitale Unterschrift ist
nichts anderes als das Fingerprinting der zu versendenden Nachricht. Mit einer Einschränkung, dass
die Hash-Funktion die beide folgenden Eigenschaften erfüllen muss:
• es ist unwahrscheinlich, zwei Dokumente mit gleichem Hash-Wert zu finden
• bei einem gegebenen Hash-Wert soll es möglichst schwer sein, das Dokument zu bestimmen.
Das eigentliche Signieren läuft dann wie folgt ab: Der Inhalt wird auf einen Hash-Wert abgebildet,
der nach dem Public Key Verfahren mit dem Private Key des Senders verschlüsselt wird. Danach kann
jeder mit dem Public Key des Senders diese Unterschrift überprüfen. Das bedeutet also: Auch wenn
der Sender die Nachricht mit seiner Unterschrift signiert hat, die Nachricht danach bearbeitet und
dann erst abschickt, wird die Überprüfung der Unterschrift eine Nichtübereinstimmung bemerken.
Auf diese Weise funktioniert der Digital Signature Algorithm (DSA) [13] der bei GnuPG/OpenPGP
zum Signieren eingesetzt wird.
4.3 TLS/SSL
Das Transport-Layer-Security-Protokoll (TLS) sowie sein Vorgänger Secure Socket Layer (SSL) wurden von Netscape mit der Funktion entwickelt, die Kommunikation zwischen Server und Client zu
sichern. Die meisten Protokolle übertragen die Daten im Klartext. Dadurch sind sie (Abb. 4) natürlich
leicht abzuhören oder zu manipulieren.
TLS fügt zwischen TCP und Anwendung eine weitere Protokollschicht ein, die von der Anwendung
transparent verwendet werden kann. Diese Schicht sorgt für folgendes:
- Verschlüsselung der Daten
- Authentifizierung des Servers (einseitig) oder von Server und Client (beidseitig)
18
USER test
+OK
Client
PASS 6;x2,Ru%}
POP3
Server
+OK
Abbildung 4: POP3 Plain Text Kommunikation
TLS Handshake Application
Protokoll
− IMAP
− Handshake
− POP3
− Alert
− HTTP
− Change
Cipher Spec − SMTP
TLS Record Protocol
TCP
IP
Abbildung 5: TLS Schicht
- Sicherstellen der Integrität der Daten
Diese TLS Schicht besteht aus mehreren Teilprotokollen (Abb. 5). Als Basis dient das TLS Record
Protocol, welches für die Zerteilung der Daten in handliche Pakete (Fragmentierung) zuständig ist,
sowie für die Verschlüsselung und Sicherstellung der Integrität der Daten. Optional kann auch eine
Kompression der Daten vorgenommen werden. Da die verschlüsselten Daten nicht mehr komprimierbar (Aufgrund der hohen Entropie dieser Daten) sind, muss die Komprimierung vor der Verschlüsselung durchgeführt werden.
Nach dem TLS Record Protocol folgen zwei weitere Protokolle, das TLS Handshake Protocol und
das Applikations-Protokoll. Das TLS Handshake Protocol besteht wiederum aus drei Teilprotokollen:
- Handshake Protocol - Bestimmung der Sicherheitsparameter
- Alert Protocol - Weitergabe der Fehlermeldungen innerhalb der TLS Schicht
- Change Cipher Protocol - Umschaltung auf die neuen Sicherheitsparameter
19
4.3.1 Aufbau der Verbindung bei TLS
Zunächst wissen Client und Server nichts voneinander, daher ist die verschlüsselte Kommunikation
erst nach der Handshake-Phase möglich. Erst mit den ,,ChangeCipherSpec”-Paketen wird auf eine
verschlüsselte Verbindung umgeschaltet.
Zu den Aufgaben des Handshake-Protocols gehört die Authentifikation. Dazu werden X.509-Zertifikate
eingesetzt, die von diesem Protokoll mit übertragen werden. Es legt auch fest, welche Verschlüsselungsalgorithmen verwendet werden und aus welchen Zufallswerten der Sitzungsschlüssel berechnet
wird.
Zertifikate kann man sich als eine Verknüpfung des Public Key mit dem Namen des Besitzers vorstellen, die von einem vertrauenswürdigen Dritten bestätigt wurde. Bei X.509 ist dieser dritte eine
Certification Authority (CA). Ein Zertifikat kann auch weitere Informationen beinhalten, z.B. Gültigkeitszeitraum, DNS-Name des Rechners etc.
Bei der Authentifizierung des Servers prüft der Client folgende Punkte:
- Gültigkeit des Zertifikats
- Vertrauenswürdigkeit der CA (Vergleich mit eigener Liste)
- Gültigkeit der Signatur des Zertifikats (Prüfung mit dem Public Key der CA)
- Übereinstimmung des angegebenen Rechners mit dem antwortenden Rechner.
- Fähigkeit des Servers sich mit seinem Private Key zu authentifizieren
Bevor ein Paket über die Leitung geht, müssen sich Server und Client einig sein, ob TLS eingesetzt
wird. Diese Problematik ist einfach lösbar, indem man bestimmte Ports für Dienste nimmt, die TLS
einsetzen. Beispiele dafür sind HTTP - Port 80 und HTTPS - Port 443, POP3 - Port 110 und POP3S
- Port 995 und IMAP - Port 143 und IMAPS - Port 993.
4.3.2 STARTTLS
TLS lässt sich auch ohne zusätzlichen Port einbinden. Um zu normalen Clients kompatibel zu bleiben,
startet SMTP zunächst mit einer normalen Verbindung über TCP. Wenn ein ESMTP-Server TLS
unterstützt, teilt er dies dem Client in seiner EHLO Antwort [9] mit. Das Schlüsselwort ist STARTTLS.
Unterstützt der Client TLS, schickt er dem Server den Befehl STARTTLS und beide schalten auf TLS
Betrieb um. Dieses Umschalten ist keineswegs trivial, da beide Seiten während der Verbindung eine
weitere Protokollschicht einbinden müssen, während SMTP weiter abläuft.
STARTTLS ist auch für andere Protokolle wie IMAP oder POP3 definiert. Hier zeigen sich die Vorteile von TLS: Es sichert die Datenübertragung vom Server bis zum Client und authentifiziert Server
und Client. Nach der Zustellung liegen E-Mails jedoch in unverschlüsselter Form vor, so dass TLS
keinesfalls eine Alternative zu OpenPGP/GnuPG darstellt.
20
4.3.3 Grenzen von STARTTLS im SMTP
Bei SMTP ergeben sich einige Probleme, die mit der Architektur des E-Mail-Systems zusammenhängen.
Bei SMTP gibt es keine Ende-zu-Ende Verbindung zwischen Sender und Empfänger einer E-Mail.
Die Nachrichten werden stattdessen in einem oder mehreren MTAs zwischengespeichert. Die einzelnen Abschnitte kann TLS zwar absichern, ein MUA oder MTA kann aber nicht wissen, ob nachfolgende Abschnitte auch durch TLS abgesichert werden können.
Die Authentifizierung ist bei SMTP nur bedingt sinnvoll: Ein Client kann zwar prüfen, ob der Server
authentisch ist, die Information, welchen Server er überhaupt ansprechen soll, stammt aber aus dem
(unsicheren) DNS und nicht vom Benutzer. Ein manipulierter MX Record kann eine E-Mail umleiten und ein falscher Server kann sich mit eigenem Zertifikat ausweisen - er wurde ja unter seinem
richtigen Namen angesprochen, er ist nur nicht zuständig.
Dieses Problem ließe sich nur umgehen, indem für Empfänger, die E-Mails über verschlüsseltes
SMTP erhalten sollen, der MX Lookup vermieden und die Zustellung fest konfiguriert wird.
Es ergibt sich ein weiteres Problem. Bevor Client und Server auf TLS umschalten, unterhalten sie
sich über TCP, was von einem Angreifer wiederum leicht zu manipulieren ist. Er kann z.B. aus der
Antwort des MTAs das STARTTLS Schlüsselwort entfernen. Der Client kann nicht erkennen, dass
der Server TLS unterstützt, und die Verbindung wird nicht durch TLS abgesichert.
In einer kontrollierten Umgebung kann STARTTLS einen hohen Schutz bieten, wenn alle beteiligten
MTAs auf MX Lookups verzichten und E-Mails nur dann weiterleiten, wenn eine TLS abgesicherte
Verbindung aufgebaut wurde. Ohne diese Maßnahmen bietet STARTTLS zumindest einen Schutz vor
passiven Angreifern, die das Netz belauschen aber keine Pakete manipulieren.
21
5
Zusammenfassung
Wie man sieht, ist das E-Mail-System recht einfach organisiert, und basierend auf den Standards leicht
zu implementieren. Es sind aber auch, wie wir gesehen haben, viele Schwächen in diesem System,
die teilweise in Erweiterungen der Standards behoben sind.
Es wurden die Grundlagen des E-Mail-Systems vorgestellt, die in diesem System benutzte Protokolle,
der Aufbau einer E-Mail mit und ohne Attachment und auch die Grundlagen der Verschlüsselung der
Daten sowie der sicheren Kommunikation zwischen dem Absender und Empfänger.
Ebenso wurde auf die Schwächen der Protokolle, sowie deren Vorteile und Nachteile eingegangen, so
dass man einen umfassenden Einblick in das Thema erhalten hat.
In the beginning was the word. And the word was ”Content-Type: text/plain”.
22
Literatur
[1] RFC0821, RFC2821 - Simple Mail Transfer Protocol
[2] RFC0822 - Standard for the format of arpa text messages
[3] RFC1939 - Post Office Protocol - Version 3
[4] RFC2045 - RFC2049 - Multipurpose Internet Mail Extension (MIME)
[5] RFC2060 - Internet Message Access Protocol - Version 4rev1
[6] Zwicky, Cooper und Chapman - Einrichten von Internet Firewalls, O’Reilly 2001
[7] Juraj Hromkovic - Algorithmische Konzepte der Informatik, Teubner 2001
[8] RFC2246 - The TLS Protocol - Version 1.0
[9] RFC2487 - SMTP Service Extension for Secure SMTP over TLS
[10] http://www.gnupg.org/(en)/documentation/faqs.html
[11] RFC3174 - US Secure Hash Algorithm (SHA1)
[12] RFC1321 - The MD5 Message Digest Algorithm
[13] RFC2536, RFC2537 - DSA/RSA Algorithmen
[14] http://www.tropsoft.com/strongenc/des.htm
[15] http://www.counterpane.com/bfsverlag.html
23