|
SchlüsseltauschEs wurde bisher gezeigt, daß asymmetrische Verschlüsselung aufeinen sicheren Übertragungskanal zum Austausch vonSchlüsseln verzichten kann. Auf der anderen Seite aber sindasymmetrische Verschlüsselungsverfahren wesentlich aufwendigerals symmetrische. Daher werden gerade zur Verschlüsselunglanger Nachrichten nach wie vor gerne symmetrischeVerschlüsselungsverfahren bevorzugt. Hier stellt sich aber,wie bereits gesagt, das Problem des Schlüsseltausches vor dereigentlichen Nachrichtenübertragung. Der häufigste Weg,eine gesicherte Verbindung aufzubauen, ist, daß einer derKommunikationspartner (z.B. Bob) einen secret key an denanderen Kommunikationspartner (Alice) überträgt, in demer ihn mit dem public key von Alice verschlüsselt.Für die eigentliche Dauer der Kommunikationsbeziehung wird nunals Sitzungsschlüssel der secret key verwendet. Hier ist allerdings noch zu klären:- Wie der Sitzungsschlüssel generiert wird
Der Sitzungsschlüssel kann entweder durch Bob selbst erfolgenund dann auf geeignetem Weg zu Alice transportiert werden (z.B.verschlüsselt mit dem public key von Alice) oder aber durchdas Einschalten einer neutralen Stelle, mit der beideKommunikationspartner vorab einen Schlüssel vereinbarthaben. - Wie Bob den public key von Alice erhält
Bob kann den public key entweder von Alice selbst oder aus einerDatenbank für public keys eines Dritten (Trust Center oder CA)
erhalten haben Die letztere Variante hat den Vorteil, daß
eine Kommunikation auch mit einem anderen (auch bisher unbekanntem)
Gesprächspartner erfolgen kann, wenn derjenige einen public
key besitzt, der dem Trust Center bekannt ist.
- Wie Bob sicher sein kann, daß er überhaupt mit Alice kommuniziert
Hier müssen entsprechende Verfahren zur Verteilung
öffentlicher Schlüssel zum Einsatz kommen oder einen
Mechanismus geben, mit dem nachgewiesen werden kann, daß die
Verteilung richtig erfolgt ist.
Eine mögliche Variante des Schlüsseltauschs für
symmetrische Schlüssel ist das Diffie-Hellmann-Verfahren. Es
funktioniert wie folgt:
- Bob und Alice einigen sich auf zwei natürliche Zahlen s und p, wobei p
eine große Primzahl ist und s < p. s und p können auch öffentlich
bekannt sein.
- Bob wählt nun eine sehr große Zahl a < p-1, Alice
entsprechend b < p-1. Diese Zahlen werden geheimgehalten.
- Bob berechnet A = sa MOD p und Alice
berechnet B = sb MOD p. Dann schickt
jeder dem anderen sein Ergebnis.
- Bob berechnet k = Ba MOD p und Alice
berechnet k' = Ab MOD p. k bzw. k' ist
der gemeinsame Schlüssel.
Eläuterung: Es gilt
Ab MOD p = (sa)b MOD p = sab MOD p
und
Ba MOD p = (sb)a MOD p = sba MOD p
sowie
k' = sba MOD p = sab MOD p = k
Die Partner können k direkt als Schlüssel verwenden oder aus
k den Schlüssel eines symmetrischen Verfahrens errechnen.
Statt einer direkten Kommunikation gibt es die Möglichkeit für
den Generation oder aber auch nur den Austausch von Schlüsseln
eine dritte Stelle einzuschalten, der beide vertrauen. Diese Stelle
wird als Schlüsselverteilungszentrum (Key Distribution Center
KDC), Trusted Authority (TA) oder Trust Center bezeichnet.
Beispielsweise kann sich nun einer der Kommunikationspartner (Bob)
an das Trust Center wenden, um einen Sitzungsschlüssel
für die Kommunikation mit einem anderen Teilnehmer (Alice) zu
erhalten. Dieser wird vom Trust Center generiert und in zwei
Versionen (jeweils verschlüsselt mit den öffentlichen
Schlüsseln von Bob und Alice) an Bob gesandt. Bob decodiert
seinen Sitzungsschlüssel und sendet die zweite Version an
Alice, der seine Version des Sitzungsschlüssels ebenfalls
dekodiert. Damit kann der Sitzungsschlüssel für die
nachfolgende Kommunikationsbeziehung verwendet werden.
Eines der grundsätzlichen Probleme bei der Verteilung von public keys
ist das Problem, eine Vetrauenskette zu bilden. PGP geht beispielsweise davon
aus, daß jeder Benutzer seine eigenen Kriterien hat, nach denen er
anderen zertifizierten Schlüsseln vertraut und wie weit er
diesen Zertifikaten vertraut. PGP erlaubt daher eine beliebige
Verflechtung von Zertifikaten. Ein Benutzer signiert nun
zunächst seinen public key selbst und kann nun seinen
Schlüssel mit beliebigen anderen E-Mail Teilnehmern
austauschen und deren Schlüssel ebenfalls signieren. Im Lauf
der Zeit ergibt sich eine Sammlung unterschiedlichster
Schlüssel und Zertifikate die als Key Ring bzw.
Schlüsselbund bezeichnet wird. Zu jedem Schlüssel wird
gespeichert ein Zertifikat gespeichert, das festhält, mit
welchem Algorithmus der Schlüssel erzeugt wurde (RSA, DSS
etc.) und welcher Vertrauensumfang diesem Zertifikat
entgegengebracht wird. Über den Vertrauensumfang wird
sozusagen festgelegt, ob man einer estimmten Person zutraut, das
Verfahren zur Zertifizierung von Schlüsseln zu beherrschen
oder nicht. Je nach Version von pgp werden unterschiedliche
Verschlüsselungsverfahren und Algorithmen verwendet.
Beispiel: E-Mail-Verschlüsselung mit PGP (Kommadozeilenversion)
Um die Verschlüsselung mit PGP zu ermöglichen
muß natürlich zunächst ein Schlüselpaar
erzeugt werden. Dies kann mit dem Befehl "pgp -kg"
geschehen. Nach dem Kommandoaufruf muß man noch einige
Informationen angeben, welche die Erzeugung des Schlüssels
betreffen. Man muß die Schlüssellänge (sinnvoller
Wert: 1024 Bit), Namen und E-Mail-Adresse angeben. Diese
Information wird in den Schlüssel codiert, damit der
Schlüssel einer Person zugeordnet werden kann. Als
nächstes wird nach einer "Pass Phrase" gefragt. Diese Phrase
ist ein Passwort oder ein Satz (PGP erlaubt auch Leerzeichen).
Diese Pass Phrase schützt den privaten Schlüssel vor
unerlaubter Benutzung. Um den Schlüssel zu erzeugen,
benötigt PGP noch einige Zufallszahlen, die PGP aus der Zeit
zwischen den Tastaturanschlägen berechnet. Deshalb fordert PGP
jetzt zur Eingabe eines beliebigen Textes auf. Dann wird das
Schlüsselpaar erzeugt.
Das erzeugte Schlüselpaar ist bei UNIX im Verzeichnis $HOME/.pgp/
zu finden. Der geheime Schlüssel befindet sich in der Datei secring.pgp
(secret key ring) und der öffentliche Schlüssel in der Datei pubring.pgp
(public key ring). Die Datei pubring.pgp kann an alle weitergegeben werden,
die einem mit PGP verschlüsselte E-Mails schreiben wollen. Der "Schlüsselbund"
kann mit dem Befehl pgp -kvv angezeigt werden. Bei diesem Befehl wird immer
der Inhalt der Datei $HOME/.pgp/pubring.pgp angezeigt. Mit
pgp -kvv $HOME/.pgp/secring.pgp kann auch der Inhalt vom geheimen
Schlüsselbund angezeigt werden. Um den eigenen öffentlichen Schlüssel
weitergeben zu können, muß man zunächst den Schlüssel als ASCII-Text
exportieren. Dies ist mit dem Befehl pgp -kxa <userid> möglich.
Diesen ASCII-Text kann man dann per E-Mail verschicken oder auf der eigenen Homepage
zum Download anbieten.
Folgende Kommandos sind zum Verschlüsseln und Signieren notwendig:
- pgp -ea dateiname zum Verschlüsseln,
- pgp -esa dateiname zum Signieren und Verschlüsseln,
- pgp dateiname zum Entschlüsseln.
Am sinnvollsten ist es natürlich, eine E-Mail zu verschlüsseln und
gleichzeitig zu signieren. Wird beim Entschlüsseln auch eine Signatur gefunden,
wird diese automatisch überprüft.
Bei vielen Mail-Programmen wird inzwischen PGP direkt eingebunden und erlaubt so
die automatische Ver- und Entschlüsselung (unter UNIX, Linux und Windows).
Auch bei der Verwendung von Microsft-Outlook und Microsoft-Exchange-Servern
empfiehlt sich die Verwendung von PGP, denn auch wenn man bei Outlook die Option
"verschlüsselt übertragen" wählt, wird zwischen Arbeitsplatz und
Exchange-Server unverschlüsselt übertragen.
|
|
|