[Hauptseite Server] [Hauptseite PGP] [Key Signing Sessions] [Session Februar 2006]
UK flag [the english version]

Das web of trust (Vertrauensnetz)

Jeder kann einen PGP-Schlüssel selber generieren. Wer nun wissen will, ob dieser Schlüssel auch wirklich der angegebenen Person gehört, muss dies überprüfen. Das ist aber schwierig, wenn man diese Person gar nicht kennt.

Im folgenden erkläre ich, wie PGP dieses Problem löst. Im wesentlichen besteht diese Lösung aus Zertifikaten, die in etwa aussagen: Ich bestätige, dass dieser Schlüssel der angegebenen Person gehört.

Zudem zeige ich, wie PGP bestimmt, ob ein Schlüssel gültig ist, oder nicht und wie das Vertrauen festgelegt wird.

Wozu?

Bei jedem Public Key Verfahren ist die Authentizität ("Echtheit") der Public Keys ein Problem. Ein kleines Beispiel: Ich erhalte von Germano Caronni eine elektronisch unterschriebene Mail. Um die Unterschrift zu prüfen, brauche ich seinen public key.

Eine Mail an pgp-public-keys@keys.ch.pgp.net mit dem Subject GET caronni@tik liefert mir seinen public key. Aber ist das wirklich sein public key? Jemand (ein Betrüger) könnte einen Key mit dem Namen Germano Caronni erzeugt und auf dem Keyserver deponiert haben.

Ich muss nun die Echtheit dieses public keys überprüfen. Dazu habe ich verschiedene Möglichkeiten, z.B:

  1. Ich suche im offiziellen Telefonbuch nach seiner Telefonnummer, rufe ihn an und lasse mir von ihm seine Schlüsseldaten geben. Dazu muss ich ihn aber kennen (Stimmenidentifikation), denn es könnte sich ja eine andere Person als Germano Caronni ausgeben.
  2. Ich gehe bei ihm vorbei, lasse mir seinen Ausweis zeigen und die Schlüsseldaten geben.
  3. Ich schaue, ob jemand den ich kenne, seine Identität elektronisch bestätigt.

Die ersten beiden Möglichkeiten sind aufwendig und zum Teil undurchführbar (wenn der Key z.B. einer Person weit weg gehört). Die Dritte ist dagegen relativ einfach. Dazu gibt es sogar eine Hilfe, den AT&T PathServer. Dort kann ich die Schlüssel-ID meines public keys (DD934139) eingeben und die Schlüssel-ID des public keys von Germano (7B7AE5E1). Als Resultat erhalte ich dieses Bild:

[web of trust]

Der oberste Kreis steht für meinen Schlüssel DD934139, der unterste Kreis für den Schlüssel von Germano Caronni 7B7AE5E1.
Ein Pfeil von A nach B bedeutet, dass A den Schlüssel von B unterschrieben hat.

Aus dem Bild ersehe ich nun: Marcel Waldvogel bestätigt, dass der Schlüssel 7B7AE5E1 Germano Caronni gehört (Marcel hat den Schlüssel von Germano unterschrieben). Ich wiederum habe den Schlüssel von Marcel Waldvogel unterschrieben und bestätige, dass der Schlüssel AB96E86D ihm gehört. Daneben gibt es noch einen weiteren Pfad über das ct‘magazin und Hanno Wagner.

Damit solche Pfade existieren können (und möglichst kurz und disjunkt sind), müssen möglichst viele Schlüsselinhaber die Schlüssel anderer Schlüsselinhaber unterschreiben und diese Unterschriften auf den Keyservern (siehe Glossar) veröffentlichen, damit Dritte diese Bestätigungen auch nutzen können. Das Ganze wird dann web of trust (Vertrauensnetz) genannt.

Warum müssen die Pfade kurz und disjunkt sein? Die Pfade sind Ketten von Bestätigungen. Je länger der Pfad zwischen meinem Schlüssel und dem Schlüssel vom Germano ist, desto weniger sicher kann ich mir über die Echtheit des Schlüssel von Germano sein. Pfade, die keinen gemeinsamen Schlüssel zwischen dem Start- und Endschlüssel haben, sind disjunkt. Je mehr disjunkte Pfade existieren, desto geringer ist die Wahrscheinlichkeit, dass ein schwarzes Schaf durch eine falsch ausgestellte Unterschriften eine Bestätigungskette vortäuscht, die so gar nicht existiert. (Durch mehrere Schlüssel, die von derselben Person stammen, ist das dennoch möglich).

Gültigkeit von Schlüsseln

Jeder Benutzer von PGP hat seinen eigenen Schlüsselbund mit öffentlichen Schlüsseln.

In diesem Schlüsselbund ist auch gespeichert, welche Schlüssel als gültig (valid) betrachtet werden. Ein Schlüssel ist gültig, wenn er

Ein Schlüssel, der im Schlüsselbund als nicht gültig gekennzeichnet ist, wird von PGP nur mit Vorbehalt verwendet:

Vertrauen in die Schlüssel

Jeder Schlüssel ist in genau einer Vertrauenstufe. Hat ein Schlüssel einen anderen Schlüssel signiert, wird anhand der Vertrauensstufe bestimmt, ob der signierte Schlüssel als gültig anerkannt wird.
bei PGP 2.x.x bei PGP 5.x Bedeutung
undefiniert (undefined) untrusted Unterschriften mit diesem Schlüssel werden ignoriert.
teilweise (marginal) marginal Es müssen mindestens 2 solche Schlüssel einen dritten Schlüssel signieren, damit dieser (der dritte Schlüssel) als gültig anerkannt wird.
voll (complete) complete Es muss mindestens 1 solcher Schlüssel einen anderen Schlüssel signieren, damit dieser (der andere Schlüssel) als gültig anerkannt wird.
absolut (ultimate) ultimate Zu diesem Schlüssel besitzt man auch den geheimen Schlüssel. Jeder Schlüssel, der mit diesem Schlüssel signiert wird, ist sofort als gültig anerkannt.

Die Anzahl benötigten Unterschriften, damit ein Schlüssel als gültig anerkannt wird, habe ich von PGP 5.0i für Windows genommen. Bei der Unix-Version und bei PGP 2.6.x können diese Werte in der Konfigurationsdatei selber eingestellt werden. So halte ich z.B. die Werte 2 und 4 (statt wie oben 1 und 2) für angebrachter. Die Werte 2 und 4 sind die Defaultwerte bei PGP 2.6.x.

Welche Schlüssel gültig sind und welches Vertrauen die Schlüssel geniessen kann wie folgt festgestellt werden:
PGP 5.x (Windows) PGPKeys.exe zeigt in den Spalten 'Validy' und 'Trust' die Werte graphisch an.
PGP 5.x (Unix) pgpk -c überprüft alle Unterschriften und zeigt die Werte für jeden Schlüssel.
PGP 2.x.x pgp -km zeigt die Werte an, pgp -kc überprüft voher noch alle Unterschriften.

Links


Hinweise, Kommentare per mail an Patrick Feisthammel <pafei@rubin.ch>
Letzte Änderung: 19. Juni 2002, Patrick Feisthammel no mail to sammler@rubin.ch