die raven homepage
Deutsche GnuPG Anleitung / Seite 9
Zertifizieren von Schlüsseln

Über das Zertifizieren von User-IDs eines fremden, öffentlichen Schlüsseln, bzw. das Zertifizieren von User-IDs der eigenen, öffentlichen Schlüsseln durch andere Schlüsselbesitzer (und Zertifizierungsstellen) bestätigen sich GnuPG Anwender gegenseitig nach Prüfvorschriften die Echtheit ihrer Schlüssel und bilden darüber das Web of Trust ("Netz von Vertrauensbeziehungen"), Zertifikate stellen also "Echtheitssigel" dar.

Der Hintergrund der Zertifikate und des Web of Trust wird auf der Seite Das OpenPGP Web of Trust erläutert und sollte durchgelesen werden, bevor man ein einziges Zertifikat unter einen anderen öffentlichen Schlüssel setzt.

Zertifikate können einem Schlüssel exportierbar zugeordnet werden oder nur lokale Gültigkeit besitzen. Im ersten Fall kann das Zertifikat zusammen mit dem Schlüssel in eine Datei exportiert oder auf einen Schlüsselserver hochgeladen werden, was zur Bildung des globalen Web of Trust, an dem andere GnuPG Anwender mitwirken, beiträgt. Im letzteren Fall verbleibt das Zertifikat immer im eigenen, öffentlichen Schlüsselring. Außer dem GnuPG Anwender erfährt kein anderer GnuPG Anwender von den Zertifikaten. Sie bilden sozusagen ein lokales Web of Trust, das nur dem einzelnen GnuPG Anwender zur Einschätzung und Bewertung von Schlüsseln dient.

Außerdem gibt es Zertifikate verschiedener "Qualitätsstufen", deren Vergabe sich danach richtet, wie sorgfältig ein Schlüssel vor der Zertifizierung auf seine Echtheit hin überprüft wurde.

Zur Erläuterung des Zertifizierens wird GPGkeys der GPGshell verwendet, weil das Prozedere sowohl grafisch als auch in der Konsole abläuft.
Die Screenshots machen auch deutlich, dass nicht jeder Aspekt der GnuPG Shells mit einer Abbildung dokumentiert werden kann, weil dies den Rahmen der Anleitung sprengen würde. Jeder Anwender kann aber davon ausgehen, dass es für fast jedes GnuPG Kommando eine Entsprechung bei den GnuPG Shells gibt, nur wird der Anwender je nach GUI mehr oder weniger trotzdem mit der Arbeit in der Konsole konfrontiert werden.

GPGkeys

Ausgangspunkt: Der fremde, öffentliche Schlüssel mit der Key-ID 17645CB6, der drei verschiedene User-IDs besitzt, soll mit dem eigenen Schlüssel mit der User-ID Kai Raven… zertifiziert werden.
GPGkeys

GPGkeys

Auswahl des Schlüssels und des Signieren Buttons für exportierbare Zertifikate oder des Signieren (lokal) Buttons für lokale Zertifikate.

In der Konsole würde man einen Schlüssel direkt mit GnuPG so zertifizieren:

  1. Mit gpg --list-keys Angaben der User-ID den betreffenden Schlüssel mit der Key-ID Key-ID ermitteln.
  2. Mit gpg --sign (exportierbar) oder --lsign (nur lokal) Key-ID den Zertifizierungsablauf starten.

Besitzt man mehrere Hauptsignierschlüssel, kann ein bestimmter Schlüssel mit gpg -u Key-ID in der Konsole oder über die Option default-key Key-ID in der gpg.conf festgelegt werden.

GnuPG Konsole

GPGkeys öffnet die GnuPG Konsole und da der Schlüssel drei User-IDs trägt, fragt GnuPG, ob alle User-IDs gleichzeitig zertifiziert werden sollen. Bei nur einer User-ID unterbleibt die Abfrage.
In diesem Beispiel wird davon ausgegangen, dass der Schlüsselbenutzer den Schlüsselbesitzer nur unter der 2. User-ID kennt, bzw. nur eine User-ID zertifizieren möchte.
GnuPG Konsole

Mit uid n wird diejenige User-ID ausgewählt, die zertifiziert werden soll. Nach der Auswahl wird die User-ID mit einem * markiert, d. h. die nächsten Operationen beziehen sich auf diese User-ID.
GnuPG Konsole

Mit Befehl> sign wird die Zertifizierung mit exportierbarem Zertifikat gestartet. Will man ein nur lokal gültiges, nicht-exportierbares Zertifikat, gibt man Befehl> lsign ein.
Wer sehen möchte, was es noch für Zertifikatsarten gibt, gebe einfach Befehl> help ein.
Nach Eingabe des Befehls zeigt GnuPG noch einmal die Details des Schlüssels und der User-ID an. Anschließend wird gefragt, wie lange das Zertifikat gültig sein soll.
GnuPG Konsole

Nach Bestätigung der Angaben erfolgt die Abfrage nach der Genauigkeit, mit der man die Echtheit des Schlüssels geprüft hat, wenn in der gpg.conf die Option ask-cert-level gesetzt ist [siehe Baukasten C]. Die Angabe bestimmt anschließend auch den Wert, den das Zertifikat für andere Anwender im Web of Trust hat.
GnuPG Konsole

Zum Abschluß erfolgt noch eine Bestätigung und die Eingabe der Passphrase.
GPGkeys

Um sich das Zertifikat anzusehen, wählt man in GPGkeys den Schlüssel und im Kontextmenü Signaturen… aus.
GPGkeys
GPGkeys

Unter der betreffenden User-ID ist das eigene Zertifikat zu sehen, bei einem lokalen Zertifikat wird zusätzlich ein "L" angezeigt.

Nach dem Zertifizieren kann bei einem Schlüssel mit exportierbarem Zertifikat der Schlüssel an den Schlüsselbesitzer gesendet werden, der ihn ggf. an einen Schlüsselserver weiterleitet.

Schlüsselbesitzern Vertrauen schenken

Ein weiteres wichtiges Merkmal, das zusammen mit den Zertifikaten Bestandteil des Web of Trust ist, ist das Vertrauen, das man einem GnuPG Anwender in seiner Eigenschaft als Zertifizierer anderer Schlüssel zuordnen kann und das den Wert seiner Zertifikate mitbestimmt.

Indirekt beeinflusst das primär ausgesprochene Vertrauen auch die Aussage zur Echtheit eines Schlüssels, den der GnuPG Anwender oder ein anderer GnuPG Anwender, der seinerseits vom ersten GnuPG Anwender zertifiziert wurde, zertifiziert hat.

Bei der Zuordnung des Vertauensgrades ("Trust Level") über den trust Befehl treten Vertrauensgrade nur lokal in Erscheinung - bei GnuPG Shells z. B. in Form eines grafischen Trust Anzeigebalkens, werden von GnuPG in der Trust-Datenbank trustdb.gpg gespeichert und nicht in den Angaben zu einem Schlüssel, den sich ein GnuPG Anwender vom Schlüsselserver holt.
Anders sieht es aus, wenn man für den Schlüsselbesitzer mit dem tsign Befehl ein Trust-Zertifikat ausstellt. In einem Trust-Zertifikat, das mit dem Schlüssel exportiert wird, ist gespeichert, ob man dem Schlüsselbesitzer voll oder nur marginal vertraut, verantwortungsvoll und korrekt die Echtheit anderer Schlüssel zu prüfen, bevor er andere Schlüssel zertifiziert.

Außerdem wird im Trust-Zertifikat angegeben, bis zu welcher Zertifizierungstiefe der zuerst Zertifizierte unseren Vertrauensgrad an weitere Zertifizierer bis zum zuletzt Zertifizierten weiterreichen oder "vererben" kann. D. h. welche Zertifikate von indirekt zertifizierten Schlüsseln ebenfalls für uns Geltung besitzen.

Bei PGP wird das Konzept des Trust-Zertifikats als "Trusted Introducer" bezeichnet.

Ein optimaler, öffentlicher Schlüsselring sieht so aus, dass alle Schlüssel Zertifikate tragen, die man selbst ausgestellt hat (mindestens als lokales Zertifikat) oder die von Schlüsseln stammen, die man ebenfalls zertifiziert hat oder deren Zertifikate von anderen vertrauenswürdigen Schlüsselbesitzern stammen. Außerdem besitzen viele öffentlichen Schlüssel einen zugeordneten Vertrauensgrad.

Während eine Aussage zur Echtheit eines Schlüssels in Form eines Zertifikats aufgrund formaler Prüfkriterien ohne Kenntnis der Person des Schlüsselbesitzers möglich ist, ist die Einschätzung seiner Vertrauenswürdigkeit, ebenfalls diese formalen Prüfkriterien zu befolgen, an die Kenntnis der Person gebunden.

Ablauf für lokalen Vetrauensgrad (Trust Level)
  • gpg --edit-key Key-ID
  • Befehl> trust (Zuordnung eines lokalen Trust-Levels)

    GnuPG zeigt nun folgende Liste von Einstufungen an. In der zweiten Spalte sind die Kürzel angegeben, mit denen GnuPG später in der Form
    Vertrauen: ownertrust/gnupgtrust den vom GnuPG Anwender vergebenen Wert ("Owner Trust") links vom / und den von GnuPG berechneten Wert rechts vom / anzeigt, wenn man erneut den trust Befehl eingibt.
    Bei dem berechneten Wert fließt die Existenz von Zertifikaten und ihre Qualität ein und eine Reihe von Optionen in der gpg.conf, mit denen man das Web of Trust einstellt [siehe Baukasten C].

    Befehlseingabe Anzeige Ich vertraue dem Schlüsselbesitzer
    - -/- nicht berechnet
    1 q/- unbekannt/nicht genug Infos zur Berrechnung
    2 n/- nein
    3 m/- marginal
    4 f/- voll
    5 u/- ultimativ
  • Ihre Auswahl? n (n = 1 bis 5)
  • quit
Ablauf für Trust-Zertifikat
  • gpg --edit-key Key-ID
  • Befehl> tsign
  • GnuPG fragt nun ab, wie genau man den Schlüssel auf Echtheit hin überprüft hat, denn generell sollte nur ein Schlüssel, der echt ist, zertifiziert werden und nur ein echter Schlüssel kann für andere Schlüssel Zertifikate ausstellen, deren Aussage wir u. U. vertrauen und andere Schlüsselbesitzer zu Zertifizierern machen, deren Zertifikate wir ebenfalls u. U. vertrauen.

    (0) Ich antworte nicht.
    (1) Ich habe es überhaupt nicht überprüft.
    (2) Ich habe es flüchtig überprüft. (default)
    (3) Ich habe es sehr sorgfältig überprüft.

    Your selection? (enter `?' for more information): n (n = 0 bis 3)

    Wobei sich 0 bis 1 von selbst erübrigen, weil solch ein Schlüssel nie mit einem Trust-Zertifikat versehen werden sollte.
  • Im nächsten Schritt fragt GnuPG wie beim lokalen Vertrauengrad ab, wie stark wir dem Schlüsselbesitzer vertrauen. Beim Trust-Zertifikat gibt es nur die beiden Stufen marginal oder vollständig.

    1 = I trust marginally
    2 = I trust fully

    Ihre Auswahl? n (n = 1|2)
  • Dann folgt die Festlegung der Zertifizierungstiefe.

    Ihre Auswahl? n (n >= 1)

    Ab Tiefengrad 2 kann der zertifizierte Schlüsselbesitzer andere Schlüssel mit Trust-Zertifikaten versehen, die das gleiche Gewicht haben, wie unser eigenes Trust-Zertifikat, d. h. er kann quasi "in unserem Namen" an fremde Schlüssel Trust-Zertifikate vergeben.
    Die fremden Schlüsselbesitzer können bei entsprechender Tiefe wiederum Trust-Zertifikate an andere Schlüsselbesitzer vergeben…usw.

    D. h. man sollte sich genau überlegen, wem man mit welcher Tiefe ein Trust-Zertifikat ausstellt.
  • Soll der zertifizierte Schlüsselbesitzer nur für Schlüssel, deren User-ID bestimmte Domains enthalten, Trust-Zertifikate ausstellen können, erfolgt die Angabe der Domain, andernfalls die Bestätigung mit der Eingabetaste für alle Domains.

    Ihre Auswahl? [domain.tld]
  • Zum Schluß folgt eine Bestätigungsabfrage.

    Wirklich unterschreiben? (j/N) j
  • Befehl> save
[ Inhalt | Top | Zurück | Weiter ]