Das Erhalten eines PGP-Schlüssels ist einfach, aber das Teilen mit anderen kann lästig sein.
Warum man Web Key Directory verwenden sollte
Das Teilen Ihres öffentlichen Schlüssels ist wichtig, um Ihre Kommunikation zu sichern, da es anderen ermöglicht, Nachrichten zu verschlüsseln, die nur Sie mit dem entsprechenden privaten Schlüssel entschlüsseln können, und um zu überprüfen, dass Nachrichten von Ihnen stammen. Dies ist besonders wichtig für E-Mails, da sie standardmäßig nicht verschlüsselt sind und von der Stelle, die die E-Mail bearbeitet, abgefangen und gelesen werden können. Dies erfordert jedoch, dass der Empfänger Ihren öffentlichen Schlüssel hat, der auf irgendeine Weise geteilt werden muss.
Traditionelle Methoden
Der traditionelle Weg, Ihren öffentlichen Schlüssel zu teilen, besteht darin, ihn auf einem Schlüsselserver hochzuladen, aber diese Methode hat ihre Nachteile. Jeder kann einen Schlüssel auf einem Schlüsselserver hochladen, und es gibt keine Möglichkeit zu überprüfen, ob der Schlüssel tatsächlich der Person gehört, zu der er gehört.
Eine andere Möglichkeit wäre, den Schlüssel von der Website der Person herunterzuladen, aber es wäre viel schwieriger, den Schlüssel überhaupt zu finden, da die Websites jedes Einzelnen unterschiedlich wären und immer noch manuelle Arbeit erfordern würden, um den Schlüssel zu erhalten.
Auch das Senden des Schlüssels per E-Mail ist nicht ideal, da die erste E-Mail unverschlüsselt wäre und der Schlüssel abgefangen und durch einen bösartigen ersetzt werden könnte und immer noch manuelle Arbeit erfordern würde, um den Schlüssel zu importieren.
Die Lösung
Hier kommt das Web Key Directory ins Spiel. WKD ist ein Protokoll, das die Entdeckung von OpenPGP-Schlüsseln ermöglicht, die auf den eigenen Servern der Menschen hochgeladen wurden, um die Notwendigkeit dedizierter Schlüsselserver zu umgehen und eine größere Kontrolle über die Schlüssel zu ermöglichen. Wenn Sie HTTPs verwenden, um den Schlüssel zu erhalten, können Sie etwas sicherer sein, dass der für die E-Mail-Adresse verwendete Schlüssel vom Besitzer der Domain verteilt wurde, der möglicherweise dieselbe Person ist.
WKD ermöglicht es E-Mail-Clients wie Thunderbird, den öffentlichen Schlüssel des Empfängers automatisch zu entdecken und ihn direkt im ersten Gespräch zu verwenden.
Einrichten des Web Key Directory
WKD hat zwei Möglichkeiten es Einzurichten: das Direkt-Setup und das Erweiterte-Setup. Trotz ihren Namen erfordern beide ungefähr die gleichen Schritte. Das Direkt-Setup erfordert keine zusätzlichen DNS-Einträge, während das Erweiterte-Setup die Erstellung eines Subdomains mit dem festen Namen openpgpkey
erfordert, die zuerst getestet wird, bevor sie auf das Direkt-Setup zurückfällt.
Anforderungen
Eine Domain:
Die Domain ist erforderlich, um den öffentlichen Schlüssel zu hosten, da Sie sonst WKD nicht verwenden könnten. Für das Basis-Setup müssen Sie nur in der Lage sein, Dateien im
.well-known
-Verzeichnis Ihrer Domain zu platzieren.Für das erweiterte Setup müssen Sie in der Lage sein, eine Subdomain namens
openpgpkey
zu erstellen und Dateien im.well-known
-Verzeichnis dieser Subdomain zu platzieren.Ein öffentlicher Schlüssel, der zur E-Mail-Adresse auf der Domain passt
Ein Webserver:
Der Webserver ist erforderlich, um den öffentlichen Schlüssel zu hosten. Wenn Sie kein Webhosting haben oder den Webserver nicht steuern können, können Sie Openpgp.org’s WKD-as-a-service verwenden. Dieser Service ermöglicht es Ihnen, Ihren öffentlichen Schlüssel auf ihren Servern zu hosten, indem Sie das erweiterte Setup verwenden. Dieser Ansatz hat den Nachteil, dass Sie keine volle Kontrolle über den Schlüssel haben und er alle verfügbaren Schlüssel für diese Identität enthält.
Den Hash erhalten
Der Basismodus erwartet den Schlüssel an diesem Ort:
https://{domain}/.well-known/openpgpkey/hu/{hash}?l={email-name}
wobei {domain} die Domain der E-Mail-Adresse, {hash} der WKD-Hash der E-Mail-Adresse und {email-name} der Namensbestandteil der E-Mail-Adresse vor dem @ unter Verwendung der richtigen Prozentescapierung ist.
Der erweiterte Modus ist ähnlich, verwendet aber die openpgpkey-Subdomain und enthält die Domain in Kleinbuchstaben im Pfad, wie folgt:
https://openpgpkey.{domain}/.well-known/openpgpkey/{domain}/hu/{hash}?l={email-name}
Der Hash wird berechnet, indem die E-Mail-Adresse in Kleinbuchstaben umgewandelt und mit dem SHA-1-Algorithmus gehasht wird. Der resultierende 160-Bit-Hash wird mit der Z-Base-32-Methode codiert, um eine 32-Oktett-Zeichenfolge zu erstellen. Diese Zeichenfolge wird dann als Hash in der URL verwendet. Sie müssen dies jedoch nicht von Hand tun, da das gpg-Befehlszeilentool dies für Sie tun kann.
|
|
Das Ergebnis wird so aussehen:
|
|
Der Hash befindet sich vor dem @ in der E-Mail-Adresse, in diesem Fall yhdyrs3mzusb7sgsjytxj5gp1aaw1qgo
.
Jetzt, da Sie den Hash haben, müssen Sie eine binäre ungerüstete Version des öffentlichen Schlüssels an den Speicherort des Hash speichern, was Sie mit dem folgenden Befehl tun können:
|
|
Seien Sie vorsichtig bei Windows, da es den Umleitungsoperator bei eigenen Versuchen >
nicht korrekt funktioniert hatte und die binären Daten durcheinander bringt. Verwenden Sie Git Bash oder WSL, um dies zu verhindern.
DNS
Wenn Sie das erweiterte Setup verwenden, müssen Sie einen Subdomain namens openpgpkey
erstellen und den Webserver so konfigurieren, dass er die Schlüssel von dort aus bedient.
Wenn Sie das Direkt-Setup verwenden, müssen Sie sicherstellen, dass die openpgpkey-Subdomain nicht antwortet. Wenn Sie beispielsweise Wildcard-DNS-Einträge verwenden, stellen Sie sicher, dass die openpgpkey-Subdomain nicht von den Wildcard-DNS-Einträgen beeinflusst wird, indem Sie einen leeren TXT-RR für diese Subdomain einfügen, der die Wildcard-DNS-Einträge daran hindert, den openpgp-DNS-Eintrag zu beeinflussen, da das erweiterte Setup zuerst versucht wird, bevor es auf das Direkt-Setup zurückfällt.
Hochladen des Schlüssels
Der Schlüssel muss an den Webserver an den für das gewählte Setup geeigneten Hash-Ort hochgeladen werden. Er sollte als application/octet-stream
serviert und von überall aus mit dem Access-Control-Allow-Origin: *
-Header zugänglich sein.
Beispielkonfigurationen für nginx könnten so aussehen:
|
|
oder für Clodflare-Seiten, indem Sie eine _headers-Datei im Ausgabeverzeichnis erstellen:
|
|
Hinzufügen der Policy-Datei
Die Spezifikation erfordert, dass eine Policy-Flags-Datei bedient wird. Diese Datei ist auch dann erforderlich, wenn das Web Key Directory Update Protocol nicht unterstützt wird, was ein Protokoll ist, das die automatische Aktualisierung des öffentlichen Schlüssels ermöglicht. Das wird jedoch nicht benötigt, da die Schlüssel statisch gehostet wird.
Die Policy-Flags-Datei kann einfach eine leere Datei sein, muss aber für das Direkt- und das Erweiterte-Setup unter /.well-known/openpgpkey/policy
erreichbar sein.
Testen des Setups
Sie können Ihr Setup mit dem folgenden GnuPG-Befehl testen, der versucht, den Schlüssel vom Server abzurufen:
|
|
|
|
Für den täglichen Gebrauch können Sie einfach das --locate-keys
in gpg verwenden, um den Schlüssel automatisch vom Server abzurufen, oder in Ihrem E-Mail-Client nach der entsprechenden Option suchen.
Fazit
Die Einrichtung des Web Key Directory ist eine großartige Möglichkeit, Ihren öffentlichen Schlüssel mit anderen zu teilen. Es ermöglicht die automatische Entdeckung des öffentlichen Schlüssels, zum Beispiel in E-Mail-Clients, und ermöglicht eine größere Kontrolle über den Schlüssel, da er auf Ihrem eigenen Server gehostet und bedient wird und die Kommunikation ohne manuellen Schlüsselaustausch ermöglicht. Es ermöglicht Ihnen auch, alte oder widerrufene Schlüssel vom Server zu entfernen, was mit traditionellen Schlüsselservern nicht möglich ist, die den Schlüssel für immer behalten und den Schlüsselserver mit alten Schlüsseln überfüllen.
Quellen: