GPG / PGP: Web of Trust - Eine kleine Liebesgeschichte

Da GPG/PGP auf dem Web of Trust basieren, ist es recht schade, dass dieses "Feature" fast gar nicht genutzt wird, obwohl sich damit sogar die Sicherheit steigern ließe.

Wer regelmäßig PGP einsetzt und damit auch ab und an mal neue Kommunikationspartner hinzufügt, hat natürlich erstmal nur deren öffentliche Schlüssel von einem Keyserver, als Anhang einer Mail oder auch von deren Homepage. Aber wie sicher kann man sein, dass dieser öffentliche Schlüssel auch tatsächlich der Person gehört?

In der echten Welt sollte man sich nicht einfach darauf verlassen, dass die Schlüssel auf dem Keyserver die echten sind, die Mail samt Schlüssel im Anhang nicht von einem falschen Absender gefaked wurde oder auch die Homepage des Kommunikationspartners auch tatsächlich seine ist und dort nicht der Schlüssel getauscht wurde.

Deshalb gibt es ja die Empfehlung, die Fingerprints eines Schlüssels privat von Angesicht zu Angesicht zu vergleichen und dann den Schlüssel des jeweils anderen zu signieren. Theoretisch geht das auch telefonisch, wenn man sich gut genug kennt und anhand der Stimme oder bestimmter Codewörter den anderen eindeutig identifizieren kann. Videochat ist ebenfalls ein Option.

Eine kleine Liebesgeschichte

Damit hat man schon eine Verbindung zwischen 2 Personen erzeugt. Nennen wir sie mal Alicia und Bobby. Nun treffen sich Bobby und Alicia mal auf der Straße und Bobby verliebt sich dabei in Alicias Freundin Chantaline. Er will ihr später einen verschlüsselten Liebesbrief schicken, damit auch nur Chantaline das Geschnulze lesen kann.

Er erfährt ihre Mail-Adresse, kann somit auch auf einem Keyserver z.B. einen Pub-Key dafür finden. Woher weiß er nun aber, dass der Key wirklich ihrer ist? Wenn er seinen Liebesbrief für den Key verschlüsselt, entschlüsselt den Brief womöglich doch jemand anders, weil die Familie sich eine Mail-Adresse teilt (ja, sowas gibt's!), z.B. Chantalines Mutter. Oder schlimmer noch: ihr Vater. Oh oh!

Aber zu Bobbys Glück hat er ja bereits Alicia in seinem Keyring. Und Alicia schickt oft Katzenbilder mit Chantaline hin und her, natürlich verschlüsselt und signiert. Und weil Alicia eine ganz Nette ist, hat sie sogar Chantalines Key signiert, was Bobby auch sehen kann.

Na, das ist doch schonmal was. Damit kann Bobby sich nun schon recht sicher sein, dass der Key auch wirklich stimmt. Außerdem sieht Bobby auch, dass Chantalines Key bereits von seinem Freund Dave signiert wurde. Und weil Dave so ein Wilder ist, kann Bobby sich auch ziemlich sicher sein, dass Dave die Chantaline schon ihrer Entropie beraubt hat.

Aber Bobby weiß ja, dass Alicia in nem Cheerleader-Team eines Schachvereins tanzt und dort paar weitere heiße Schnittchen auf Verschlüsselungspartner warten. Bobby findet da auch fix viele Mail-Adressen anderer Cheerleader, deren Keys er seinem Keyring hinzufügt. Aber jede einzelne davon jetzt separat zu verifizieren wäre ja echt anstrengend.

Aber auch da kommt nun Alicias Key ins Spiel. Weil Bobby nämlich den Trust für Alicia so definiert, dass er ihr sehr stark vertraut, dass Alicia nur persönlich überprüfte Keys signiert, sieht er sofort auch, wie vertrauenswürdig die Schlüssel der Cheerleader sind.

Um nicht nur die Vertrauenswürdigkeit der Schlüssel, sondern auch deren Gültigkeit zu verifizieren, kann Bobby auch noch eine Trust-Signatur für Alicia ausstellen, mit Level 1. Das bedeutet, dass sein GPG/PGP automatisch auch alle Schlüssel als gültig anerkennt, die Alicia signiert hat. Ist das nicht praktisch?!

Und so hilft das Web of Trust dem schüchternen, romantischen Bobby, verschlüsselte Liebesbriefe per Serienbrief an alle Cheerleader zu verschicken. Und Bobby hinterlässt seine Fingerprints an ihren Keygrips. Das ist natürlich nur ein Wortspiel und technisch totaler Quatsch, soll aber ein Happy End suggerieren.

Lasst uns trusten!

So, damit ihr nun auch in die glückliche Situation von Bobby geraten könnt, plane ich den Aufbau einer eigenen "Alicia". Dafür generiere ich einen RSA 4096 und einen ECDH (cv25519) Key. Mit diesen 2 Keys (ich nenne sie mal WoT-Keys) werde ich gerne eure Keys signieren, sodass wir ein kleines Web of Trust aufbauen können. Und wer weiß, dadurch ergeben sich vllt. auch ganz neue Kontakte und Gespräche.

Warum ich 2 Keys verwenden werde? Nunja, ist einfach erklärt. ECDH Keys mit Curve25519 werden erst seit GnuPG 2.1 unterstützt. Und da viele Leute noch auf 2.0 oder gar älter festhängen (aufgrund ihrer Distro z.B.), können diese den RSA Key verwenden. Alle mit modernem GnuPG können stattdessen den ECDH Key nutzen, da dort die Signaturen viel kleiner sind, was natürlich ein bisschen Ressourcen spart (CPU, RAM, Speicher).

Außerdem - sollte irgendwann in der Zukunft eines der beiden Verfahren kryptographisch unbrauchbar werden, weil es dann nicht mehr sicher ist - bleibt noch das andere Verfahren als Sicherheit erhalten. Außerdem könnte so ein Missbrauch auffallen, falls ein Key nur mit einem der beiden Keys signiert wurde.

Damit ich anschließend eure Keys signiere, wird es einen festen Ablauf geben:

  1. Ihr schickt mir euren zu signierenden Pub-Key und ein paar Infos an meine persönliche Mail-Adresse
  2. Ich schreibe an jede Mail-Adresse in eurem Key eine verschlüsselte Mail mit unterschiedlichen Passwörtern
  3. Wir machen einen Videochat, bei dem ihr mir euren Personalausweis zeigt, damit ich euren Namen bestätigen kann
  4. Ebenfalls nennt ihr mir beim Videochat die Passwörter, die ihr erhalten habt
  5. Ich signiere anschließend mit meinen 2 WoT-Keys die UIDs in eurem Key, die ich korrekt bestätigen kann
  6. Ihr erhaltet euren von mir signierten Key per Mail zurück

Darüber hinaus bin ich am Überlegen, ob ich auf irgendeine Art und Weise jährlich von euch bestätigen lasse, dass ihr die Keys noch nutzt und die Mail-Adressen tatsächlich noch euch gehören.

Auf jeden Fall wird das alles manuell von mir persönlich durchgeführt, ich werde da keinen Automatismus oder sonstwas für bauen. Ich habe außerdem ein speziell nur für diesen Zweck vorhandes Gerät mit einem gehärteten Linux, verschlüsselter Festplatte und etlichen weiteren Sicherheitsvorkehrungen, damit da auch wirklich niemand sonst an die Private Keys rankommt.