Web of Trust oder "Wie funktioniert das Netz des Vetrauens ?"

Wenn jemand Public Keys dazu benutzen will, um verschlüsselte Kommunikation zu betreiben, muß er zwei Dinge voraussetzen können:

1. die Public Keys seiner Kommunikationspartner sind echt.
2. sein Public Key kann nicht gefälscht werden.

Deshalb fängt das Web of Trust schon bei der Schlüsselerzeugung an.

Fälschung

Bei der Keyerzeugung wird der eigene Public Key mit dem eigenen Secret Key signiert.
Wenn man unter PGPkeys nachsieht, befinden sich unter dem Keysymbol zwei weitere Einträge, dem ersten Eintrag ist ein symbolisierter Briefumschlag vorangestellt und steht für die User-ID, dem zweiten Eintrag ist eine Feder oder eine Stiftspitze vorangestellt ist und steht für die Signatur.
Sieht man sich mal die "Key Properties (Eigenschaften)" des eigenen Public Keys an, fällt eines auf:
Sowohl die "Key-ID" als auch der "Key-Fingerprint" sind bei dem Keypaar, der User-ID und der Signatur gleich.
Kontrollieren wir den Public Key eines Kommunikationspartners (was immer der Fall sein muß), muß das Ergebnis genauso aussehen, ansonsten ist der Public Key gefälscht.
PGP unterschreibt also selbst unseren eigenen Public Key, um damit auszuweisen, daß der Public Key mit dieser speziellen Key-ID und User-ID mit dem richtigen Secret Key unterschrieben wurde, der Verbreiter des Public Key mit User-ID wx und Key-ID yz im Besitz des passenden Secret Keys und der passenden Passphrase ist.
Die ID's der Signatur sind nicht zu editieren, wie es beim Public Key möglich ist.

Fälschungswege

A.
Der Fälscher versieht den ursprünglichen Public Key mit seiner User-ID/E-mail Adresse und um nicht aufzufallen, entfernt er alle Signaturen.

Da die Keyserver nur einmal einen Key mit einer spezifischen Key-ID speichern können, kann der Fälscher versuchen, den Key vor dem ursprünglichen Key des Erstellers auf dem Keyserver abzulegen, so daß der Ersteller nicht mehr in der Lage ist den ursprünglichen, erzeugten Key zu hinterlegen.
Die Fälschung fällt auf, da der Key keine Signatur hat.
Denkbar ist, daß der Fälscher eine Signatur erstellt und deren Fingerprint fälscht, dann aber unterscheidet sich der gefälschte Key vom originalen, signierten Key in der Länge.

B.
Der Fälscher erstellt einen neuen Public Key, der die User-ID und die Key-ID des ursprünglichen Keys des Angegriffenen trägt und versieht den Key mit seiner Signatur und zusätzlich eventuell noch mit seiner E-mail Adresse.

Aus der Sicht des Fälschers hofft dieser, daß Personen annehmen werden, dieser Key gehoere dem originalen User und diesen Key benutzen um E-mails an den eigentlichen Empfänger verschlüsseln.
Der Fälscher kann sich nun zwischen dem gutgläubigen Absender und den eigentlichen Empfänger schalten, die Korrespondenz abfangen und entschlüsseln.
Ist die E-mail Adresse des Keys durch die Adresse des Fälschers ersetzt worden, kann er sich diesen Schritt sogar sparen und bekommt die E-mails direkt zugeschickt.
Andernfalls erhält der ursprüngliche Empfänger zwar die E-mails, kann diese aber nicht mehr entschlüsseln.
Wurde der Fingerprint nicht gefälscht, ist die Fälschung am unterschiedlichen Fingerprint von Key und Signatur zu erkennen.

Weitere Informationen, welche Gefahren durch Fälschungsmöglichkeiten entstehen können, finden sich in der:

Was deutlich wird, ist, daß man nur dann ziemlich sicher von der Echtheit eines Keys ausgehen kann, wenn die Kombination aus Keylänge, die ID's, die Fingerprints und die Signatur stimmt und diese Kombination persönlich beim Keybesitzer überprüft wurde.

Somit kann zwar nicht ausgeschlossen werden, daß jemand einen Public Key fälscht, aber, daß er dies unentdeckt tun kann.

Validity

Die Echtheit ("Validity")eines Public Keys wird durch die Signatur anderer User (das "Schlüsselzertifikat") "bezeugt".
Wir können einen anderen Public Key mit unserer eigenen Signatur versehen.
In PGP 5/6 wird dieser Key sogleich "valid", d.h. "gültig" oder "authentisch".
Solange er nicht von uns signiert ist, bleibt der Key grundsätzlich gesehen "ungültig" oder "nicht authentisch". Als Folge bleibt der Besitzer des Keys auch als "untrusted" oder "nicht vertrauenswürdig" eingestuft. Mit der Signierung bezeugen wir, daß wir uns überzeugt haben, daß dieser Public Key wirklich zum angegebenen User gehört oder anders:
Wir wissen mit 100% Sicherheit, daß der Public Key echt ist, unabhängig davon, ob unter diesem Key bereits Signaturen von Leuten stehen, denen wir vertrauen oder die uns bekannt sind.
Zu diesem Zweck überprüfen wir schon mal, wie oben angegeben, den bereits vorliegenden Public Key auf Unstimmigkeiten.
Dann überprüfen wir persönlich oder telefonisch die Angaben, die uns der Key liefert (User-ID, Key-ID, Fingerprint, Keylänge, Keytyp) anhand der Angaben, die uns der Kontaktierte auf Anfrage liefert.
Zusätzlich können auf die gleiche Weise eine oder mehrere der unter dem Key befindlichen Signaturen gegengeprüft werden.
Wenn im Idealfall, davon ausgegangen wird, daß jeder PGP-Benutzer so verfährt, wären idealerweise alle Public Keys echt.
Da wir die Realität kennen, kann sich jeder PGP-Benutzer ausrechnen, welche Kontrollen er durchführen muß und wie verantwortlich er zu handeln hat.

Trust

Neben der "Validity" hat PGP 5/6 auch eine weitere interne "Trust"-Skala zu bieten, die sich auf unsere Einschätzung des Keybesitzers bezieht. Der "Trust" oder "Vertrauensgrad" gibt in drei Stufen von "untrusted-nicht vertrauenswürdig" über "marginal-begrenzt vertrauenswürdig" bis zu "complete-voll vertrauenswürdig" an, inwieweit das Vertrauen in das verantwortliche Handeln und die Fähigkeit eines Keybesitzer vorhanden ist, selbst wiederum für die "Validity" eines anderen Public Keys zeugen zu können.
Bekommt man irgendwann einen Public Key, der mit der Signatur einer Person versehen ist, die man selbst eines von Dir nach "Trust" eingestuften PGP-Benutzers signiert ist, wird dieser Public Key entsprechend als gültig eingestuft, auch wenn Du diesen neuen Key selbst noch nicht signiert hast.
Beachte: Der Trustlevel eines PGP-Benutzers kann erst höher als "untrusted" eingestuft werden, wenn Du den Key dieses Benutzers selbst signiert hast. So hängt also das Vetrauen in einen User von der Gültigkeit seines Keys ab.
Oder anders formuliert: Ein Key kann zwar "gültig", der Benutzer aber "nicht vertrauenswürdig" sein.

Die Konfiguration des "Web of Trust" bei PGP 2.6.3: wird durch die Vergabe der eigenen Signatur und/oder der Vergabe eines von vier Trustlevels bestimmt.
PGP 2.6.3 kennt zur eigenen Kennzeichnung des Vertrauens in die Aufrichtigkeit der Person und in die Kompetenz einer Person, verantwortlich sowohl mit den eigenen, wie mit anderen PGP-Keys umzugehen, folgende Stufen:

  • 1 = ich weiß nicht
  • 2 = Nein
  • 3 = in der Regel
  • 4 = Ja, immer

über die man der Datei config.txt in zwei Einträge den eigenen Bereich des Web of Trust regeln kann:

  1. Completes_Needed = X
    PGP sieht dann einen Public Key als echt an, wenn er X Signaturen trägt,
    deren User die Vertrauensstufe 4 besitzen
  2. Marginals_Needed = Y
    PGP sieht dann einen Public Key als echt an, wenn er Y Signaturen trägt,
    deren User die Vertrauensstufe 3 besitzen

Zur direkten Einstellung des Trustparameters bei PGP 2.6.3 für einen User:

PGP 2.6.3> pgp -ke User-ID

Zertifizierungsstellen ("Certification Authorities")

Einen weiteren, neuen Ansatz stellen die sogenannten Zertifizierungsstellen ("Certification Authorities"/CA) und Trustcenter dar, also anerkannte Institutionen, Organisationen, Firmen oder Vereine, die den Public Key nach bestimmten Prüf- und Kontrollverfahren mit ihrer eigenen Signatur versehen.
Damit entfällt der doch etwas aufwendige und mit Unsicherheiten belastete Weg der Sammlung von Signaturen unter den eigenen Public Key und die Notwendigkeit der persönlichen Kontaktaufnahme mit dem Keybesitzer, wenn man einen anderen Public Key zertifizieren will.
Aber auch bei den CA's ist es meistens notwendig, persönlich mit dem Personalausweis zu erscheinen, damit diese den eigenen Public Key zertifizieren.
Der Vorteil der CA-Signatur liegt trotzdem im allgemeinen Bekanntsheitsgrad, der es leichter macht, einem Public Key zu vertrauen, der mit einer CA-Signatur versehen ist, als einem Public Key, der zwar von einer Person signiert wurde, deren Name mir aber nicht bekannt ist.
Die Bedeutung der CA's wird deshalb mit einer steigenden Anzahl von PGP Benutzern zunehmen.

Auch der Staat denkt an die Einrichtung dieser Zertifizierungsstellen, in eigener Regie und durch Lizenzvergabe, allerdings ist diese Idee oft mit der Hinterlegung eines "Generalschlüssels" bei staatlichen Stellen oder "Trusted Third Parties" (TTP), dem sogenannten "Key Escrow" (im Falle von PGP könnte man auch sagen: Hinterlegung von Secret Key und Passphrase) verbunden, mit dessen Hilfe staatliche Organe, wie die Geheimdienste, nach einem juristischen Genehmigungsverfahren verschlüsselte Dateien oder E-mails bei Verdacht wieder entschlüsseln können oder mit der Zulassung von Verschlüsselungsprogrammen, die es erlauben, den Verschlüsselungskey, der bei der Verschlüsselung benutzt wurde, wiederherstellen zu können, sogenanntes "Key Recovery".
Bei dieser Form der CA kommt mir persönlich ein ganz anderer Verdacht...und Carl Ellison von der Firma CyberCash nennt diese Vorstellungen beim Namen: "Govermental Access to Keys (GAK)".

Beispiele für CA's

Weitere Informationen zur PGP-Zertifizierung und Kurzinfos zu den angegebenen CA's finden sich über
Skylla: PGP-Schlüssel-Zertifizierung von Alexander Svensson

Daneben muß für die Sicherheit des Public Keys, Secret Keys und der Passphrase gesorgt werden.
Eine sichere Verwahrung von Pubring, Secring und Passphrase gehören dazu.
Ein zusätzlicher Sicherheitsgewinn kann die wöchentliche oder monatliche Änderung der Passphrase sein, was ein Errechnen/Erraten der Passphrase zusätzlich erschwert, wenn man davon ausgeht, daß dieser Vorgang einige Zeit und einige Rechnerkapazitäten voraussetzt.

Es ist auch sinnvoll, sofort nach der Erstellung von Public und Secret Key, die Schlüsselrückzugsurkunde ("Key Revocation") für den Public Key zu erzeugen und gesichert abzulegen. Das hat den Vorteil, daß sofort die Key Revocation an einen Keyserver gesendet und die Kommunikationspartner informiert werden können, wenn Secret Key und/oder die Passphrase in die Hände anderer gelangt ist (was immer geschehen muß, wenn dieser Fall eintreten sollte).
Was noch wichtiger ist:
Wenn der Keybesitzer aus irgendeinem Grund nicht mehr im Besitz des Secret Keys und der Passphrase ist, kann er seinen Public Key zurückziehen.
Siehe auch Key Revocation

 

Schlüsselzertifikate oder "Wie signiere ich die Public Keys anderer Personen ?"

Voraussetzung für das Signieren anderer Public Keys ist das Lesen des Kapitels "Web of Trust".

Vorgehensweise

  1. Aufruf von PGPkeys
  2. a) Menü "Keys - Sign" oder
    b) 1xMKrT auf den betreffenden Key und im Kontextmenü "Sign" wählen
  3. Button "More Choices" anklicken

    Signiermöglichkeiten (Signature Type)

    • Non-Exportable

      bei der nicht exportierbaren Signatur verbleibt die Signatur nur im eigenen Pubring, sie wird nicht mit übertragen, wenn man den Key abspeichert, in eine E-mail Nachricht einfügt oder an einen Keyserver sendet.
      Diese Signatur sollte man wählen, wenn man z.B. schon einen dauerhaften E-mailverkehr mit einer Person pflegt und sich daraufhin ziemlich sicher ist, daß der Key dem Keybesitzer gehört und deshalb im PGPkeys Window und den Bestätigungsfenstern den Key als echt ausgewiesen sehen möchte.

    • Exportable

      die exportierbare Signatur ist die eigentliche Signatur im herkömmlichen Sinne, wie wir sie auch von PGP 2.6.3 kennen.
      Sie wird beim Abspeichern eines Keys, beim Versenden des Keys per E-mail oder an einen Keyserver mit übertragen und bestätigt somit gegenüber der Öffentlichkeit, daß der Key wirklich dem Keybesitzer gehört und nicht gefälscht ist.
      Aus diesem Grund sind bei Wahl der exportierbaren Signatur die Prinzipien des "Web of Trust" unbedingt zu beachten und anzuwenden !

    • Meta-Introducer Non-Exportable und
      Trusted Introducer Exportable

      durch unsere Signatur wird der Key eines Meta-Introducers (oberster, vertrauenswürdiger Bürge) und die Keys, die der Meta-Introducer signiert zu Trusted-Introducers (vertrauenswürdiger Bürge). D. h. der Meta-Introducer erhält unser volles Vertrauen (Trust) und sein Key volle Gültigkeit (Validity).
      Die Signatur des Meta-Introducers ist nicht exportierbar, da er eine herrausragende Stellung besitzt und seine Funktion innerhalb eines geschlossenen Rahmens (wie dem Netzwerk einer Firma oder unserem Pubring) verbleiben muß.

      Seine Auszeichnung (und damit seine Eigenschaften) durch unsere Signatur kann der Meta-Introducer quasi an weitere Personen, bzw. Keys (die Trusted Introducer) durch dessen Signierung "vererben", so daß auch alle Keys, die der Meta-Introducer signiert voll gültig (valid) und die Keybesitzer unser volles Vertrauen (trust) genießen, der Meta-Introducer "handelt" also quasi "stellvertetend" für uns selbst.
      Die Trusted-Introducer können diese Eigenschaft nicht weiter vererben, aber sich stellvertretend für den Meta-Introducer für die Gültigkeit von Public Keys (Validity) verbürgen.

      Im PGPkeys Fenster findet sich unter dem Key des Meta-Introducers als Ausweis unsere Signatur mit der Beschreibung: "RSA,DH/DSS meta-introducer signature", bei dem Trusted-Introducer "RSA,DH/DSS trusted-introducer signature".

      Die Signatur eines Trusted-Introducers ist exportierbar, d. h. er kann auch außerhalb unseres geschlossenen Rahmens für die Gültigkeit anderer Public Keys bürgen, allerdings kann man den Domainbereich einschränken, in dem er für Keys bürgen kann, in dem man unter "Domain restriction" die E-mail Domains der Keys eingibt.

      Erhalten wir jetzt aber einen Public Key, der von einem Trusted-Introducer signiert wurde, so ist der neue Key sogleich als gültig (valid) eingestuft, ohne daß wir den Key überprüft oder selbst signiert hätten, bzw. müssten.

  4. Expiration (Verfallsdatum)

    hier kann noch angegeben werden, ob unsere Signatur immer gültig (never) oder zu einem bestimmten Datum ungültig werden soll.

  5. Eingabe der Passphrase

Hinweise

Zu den Begriffen Vertrauen in einen Keybesitzer (Trust) und Gültigkeit des Keys des Keybesitzers (Validity) siehe Web of Trust

Es ist mit PGP 5/6 möglich, einen RSA Public Key mit einer DSS Signatur zu versehen.
Aus Gründen der Kompatibilität sollte man aber einen RSA Public Key auch mit einem RSA Key signieren.

Nach dem Signieren kann der unterschriebene Key an den Besitzer und/oder die Keyserver versendet werden, je nach Typ wie in den Erklärungen der vorhergehenden Kapitel.

Das Konzept der Hierarchie von Meta-Introducer und Trusted-Introducer zielt auf Bereiche ab, in dem große Mengen an Public Keys und verschiedene Bereiche (Domains), aus dem diese Keys stammen, verwaltet werden müssen.
So wäre es denkbar, daß der Personalleiter oder Prokurist einer Firma von der Geschäftsführung zum Meta-Introducer ernannt wird und der Personalleiter dann seine direkten Untergebenen, z. B. die Abteilungsleiter zu Trusted-Introducern macht.
Oder der Hauptverkaufsleiter ernennt als Meta-Introducer die Gebietsverkaufsleiter zu Trusted-Introducern.
Für einen lokalen Pubring auf einem Einzelplatz-PC ist dieses Konzept überdimensioniert, da man ja selbst quasi der Meta-Introducer ist.
Es kann aber sinnvoll sein, die Zertifizierungskeys von anerkannten oder bekannten Zertifizierungsstellen (Certification Authorities), deren Gültigkeit man nach den Prinzipien des Web of Trust überprüft hat und deren Zertifizierungstechnik man vertraut, mit einer Trusted-Introducer Signatur auszustatten, wodurch alle aktuellen und zukünftigen Public Keys, die von diesen Stellen zertifiziert wurden, sogleich gültig sind und von uns nicht mehr überprüft werden müssen.

Signieren eines Public Keys bei PGP 2.6.3:

PGP 2.6.3> pgp -ks User-ID-des-Keys Eigene-User-ID LW:\pubring.pgp