Das Domain Name System ist für eine Reihe interessanter Anwendungszwecke zu gebrauchen. Eine Möglichkeit ist etwa das Abfragen öffentlicher Schlüssel und ihrer Fingerprints. Das in RFC 4398 standardisierte DNS-CERT ist vergleichsweise komplex und erfreut sich bislang keiner großen Verbreitung. Das von Werner Koch vorgeschlagene Verfahren namens „Public Key Association“ (PKA) erfreut sich ebenfalls keiner weiten Verbreitung, ist aber sehr einfach zu realisieren, sofern man Zugriff auf die relevanten Zonefiles hat.
Die Idee von PKA ist einfach: statt eine neue Public Key Infrastructure aufzubauen wird einfach eine bestehende Struktur benutzt, um öffentliche Schlüssel zu verteilen und ggf. zu prüfen. Das DNS ermöglicht es auf verhältnismäßig einfache Art Informationen zu Benutzerschlüsseln abzulegen. PKA macht sich dies zu Nutze um Informationen zur PKA-Protokollversion, zum Fingerprint und einer URI, über die der passende Nutzerschlüssel beschafft werden kann, verfügbar zu machen. Mit diesen Informationen kann man nun verschiedenes anfangen: Organisationen können das (idealerweise durch DNSSEC gesicherte) DNS zur Überprüfung der Schlüssel verwenden. Endanwender können PKA benutzen, um sich fehlende Schlüssel zu beschaffen, und Systeme die Mails transportieren, können bei signierten Mails prüfen, ob diese tatsächlich von dem System stammen, von dem sie vorgeben zu stammen.
Ich empfehle, das kurze, neunseitige PKA-Papier von Werner Koch gerne zur Lektüre weiter. PKA ist ab GnuPG 1.4.3 implementiert. Endanwender seien insbesondere auf folgende neue GnuPG-Optionen hingewiesen:
gpg --sig-notation pka-address@gnupg.org=USER@domain.invalid
(fügt eine PKA-Notation hinzu, die angibt wo im DNS die PKA-Daten zu finden sind. Nützlich bei der Verwendung mehrerer E-Mail-Adressen.)
gpg --auto-key-locate pka --recipient USER@domain.invalid --encrypt -a
(Weist GnuPG an, den Schlüssel für den Empfänger via PKA zu holen)
gpg --verify --verify-options pka-lookups SIGNATUR-DATEI SIGNIERTE-DATEI
(prüft die Signatur einer Datei mittels PKA)
PKA-Unterstützung ist in der aktuellen Sylpheed und Sylpheed-Claws implementiert. mutt unterstützt PKA seit Version 1.5.14, sofern es mit GPGME-Unterstützung kompiliert wurde.