Zum Inhalt

DNS-Eintrag für PGP-Key erstellen

Wer einen PGP-Key mit GnuPG oder ähnlichen Tools nutzt, möchte erreichen, dass andere Personen den eigenen Key leicht erhalten und prüfen können. Neben der üblichen Prüfung von Signaturen und Fingerprints bietet das Domain Name System (DNS) eine einfache Möglichkeit, zumindest eine kleine Prüfung vorzunehmen.

Verschlüsselung - Carola Langer / pixelio.de
Welcher Schlüssel ist der richtige? Verschlüsselung – Carola Langer / pixelio.de

Das funktioniert zwar nur mit einer eigenen Domain – aber den DNS-Einträgen vertraut man beim Senden einer E-Mail nunmal auch. Sie stehen unter der Kontrolle des Empfängers. Stimmt ein speziell formartierter Eintrag nun also mit dem Schlüssel des Empfängers überein, so gewinnt man ein wenig Sicherheit.

PGP-Fingerprint im DNS

Das Prinzip ist recht einfach. Tools wie GnuPG fragen beim Verschlüsseln an eine beliebige E-Mailadresse zunächst einen speziell formartierten DNS-Eintrag ab. In diesem ist der Fingerprint des Schlüssels, sowie die URL zu einem PGP-Keyblock enthalten. Hat der Keyblock, den GnuPG automatisch herunterlädt, die entsprechende E-Mailadresse sowie den gleichen Fingerprint, so wird diesem Schlüssel ein bisschen mehr vertraut.

Der DNS-Eintrag lautet  localpart._pka.domain  und ist ein TXT-Eintrag. Als Wert enthält er diese Zeichenfolge:

Dabei ist der Teil hinter  fpr=  mit dem Fingerprint des eigenen Keys zu ersetzen, und der Teil hinter  uri=  mit der URL, unter der der eigene Keyblock zu erreichen ist.

Howto: Einen DNS-Eintrag für den GnuPG-Key erstellen

Nun soll also der eigene GnuPG-Key ins DNS gestellt werden. Kein Problem, das ist in wenigen Schritten erledigt.

1. Öffentlichen Schlüssel in eine Datei exportieren

Zunächst exportiert man den eigenen öffentlichen Schlüssel in eine Datei. Dazu ist es ratsam, nicht unbedingt viele ungültige Signaturen mitzunehmen, vielleicht höchstens ein paar von denen man die Schlüssel gerade sowieso lokal vorhält, oder einfach gar keine.

Der Schlüssel liegt nun als Datei bereit. Möchte man gar keine Fremdsignaturen hochladen, um etwa Kommunikationsgewohnheiten zu verbergen, nutzt mal die Option export-minimal :

2. Exportierten Schlüssel hochladen

Die exportierte Datei (in diesem Fall heißt sie 0xfd580cc0.gpg.asc ) lädt man nun an eine beliebige Stelle hoch. Das kann der eigene Blog, die eigene Homepage, oder auch ein Dropbox-Link sein. Das Vertrauen wird durch Fremdseiten nicht geschmälert, da ja die URL im DNS ist. Für höchste Sicherheit nutzt man aber eine eigene Seite mit SSL-Zertifikat.

Der oben genannte Befehl kopiert den lokal abgelegten Public-Schlüssel auf einem Uberspace-Webspace ab, sofern man entsprechende Symlinks angelegt hat. Der Pfad ist natürlich passend zu den eigenen Servergegebenheiten anzupassen. Mein Schlüssel ist daher unter https://www.bmarwell.de/0xfd580cc0.gpg.asc erreichbar.

3. Fingerabdruck des Schlüssels bestimmen

Damit im DNS nicht nur eine (angreifbare) URL mit der Schlüsselblockdatei steht, wird zusätzlich der Fingerabdruck (engl. Fingerprint) abgelegt. Dieser identifiziert den Schlüssel. Da der Fingerabdruck an einer anderen Stelle steht, nämlich im DNS und nicht auf dem Hoster, ist diese Verifikation vertrauenswürdiger als ein Fingerabdruck auf der Homepage ausgeschrieben.

Wer den Fingerabdruck gleich im passenden Format (ohne Leerzeichen) sehen möchte, nutzt das maschinenlesbare Format mit  --with-colons  und greppt sich die entsprechende Zeile heraus, mit  cut  schneidet man sich das entsprechende (zehnte) Feld heraus:

Den Fingerprint kopiert man sich in einen Editor oder eine Zwischenablage, den brauchen wir später. Wichtig: Die Großschreibung muss beibehalten werden.

4. DNS-TXT-Record anlegen

Nun wird der eigentliche DNS-Record erstellt. Das Format hatte ich oben bereits erläutert. In meinem Falle sieht der Eintrag mit eingesetztem Fingerprint und der URL wie folgt aus:

Der Eintrag sieht bei meinem DNS-Provider INWX wie folgt aus:

INWX: Nameserver-TXT-Eintrag für PGP-Key
INWX: Nameserver-TXT-Eintrag für PGP-Key

Den darunterliegenden Eintrag habe ich nur Testweise angelegt, die anderen Einträge stammen aus Google-Webmastertools und können ebenfalls ignoriert werden. Kontrolliert werden kann der Eintrag über das Befehl  dig  oder  host  abgefragt werden.

Die GnuPG-Konfiguration anpassen und testen

Der eigentliche Eintrag für den Key ist nun angelegt und kann getestet werden. Das lässt sich leicht über die Konfigurationsdatei bewerkstelligen.

gpg.conf für pka anpassen

Die Datei  ~/.gnupg/gpg.conf  wird nun wie folgt angepasst:

Die Keyserver-Optionen sorgen dafür, dass der Schlüssel automatisch eingeladen wird und bei einem Aktualisieren (via --refresh ) über das DNS geprüft wird. Die Option auto-key-locate sorgt hingegen dafür, dass bei einer ersten, unbekannten Verwendung der Schlüssel über das DNS ermittelt wird, sofern möglich. Und zum Schluss wird der Schlüssel über die Prüf-Optionen laufend geprüft und eine erfolgreiche Prüfung erhöht das Vertrauen in den Schlüssel. Mit diesen Optionen kann nun getestet werden, ob ein Empfänger den eigenen Schlüssel empfangen kann.

Den DNS-Abruf des PGP-Schlüssels testen

Damit der Schlüssel nicht aus dem eigenen Keyring genutzt wird, nutzen wir diesen explizit nicht. Um weitere Abfragen zu vermeiden, wird ein einziges Wort verschlüsselt — das beendet GnuPG automatisch nach erfolgreicher Verschlüsselung.

Wichtig ist etwa die Zeile zwei, weil dort ersichtlich ist, dass der Schlüssel von (m)einem Server heruntergeladen wird. Man kann dann noch den Schlüsselfingerabdruck vergleichen, falls man diesen noch anderweitig zur Hand hat — kann aber auch sonst eher getrost mit ja Antworten. Warum habe ich ja oben bereits ausführlich erläutert.

Nachteile der DNS-Methode

  • Leider scheint GnuPG in der Version 1.4.x keine https-URLs zu unterstützen. Dazu muss man nun explizit GnuPG 2.0 oder 2.1 verwenden. Das ist aber unproblematisch, da man beide Tools auch gleichzeitig installieren kann. Im zweifelsfall lassen sich die Schritte auch manuell durchführen.
  • Das DNS ist nicht komplett sicher, vor allem nicht ohne DNSSEC.
  • Das DNS ist nicht für sehr viele Abfragen ausgelegt.
  • Das DNS kann abgehört werden und damit die Kommunikationsgewohnheiten.
  • Enigmail kann nicht mit PKA umgehen, siehe diesen Supporteintrag bei Sourceforge.

Insgesamt überwiegen aber die Vorteile dieser Methode, auch wenn sie derzeit noch kaum Verbreitung findet. Das wird sich mit der Verbreitung von GnuPG 2 ändern. Zudem gibt es noch weitere Möglichkeiten, die auf gushi.org beschrieben sind.

 

 

Published inHow Tos

Schreibe den ersten Kommentar

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.