Ich habe mich nur gefragt. Wir verwenden viele SSL-Zertifikate. Heutzutage verwenden wir fast ausschließlich letsencrypt (danke!). Das Endergebnis dieser Zertifikate ist, dass der Eigentumsnachweis für den Domainnamen auf dem Zertifikat von der Befugnis stammt, entweder die DNS-Einträge oder die Website unter diesen Domains zu manipulieren. Der DNS-Nachweis erfolgt durch Hinzufügen eines Schlüssels (von letsencrypt) als TXT-Eintrag zum DNS.
Wenn es also ausreichend ist, die DNS-Einträge für eine Domain zu ändern, warum nicht selbstsignierte Zertifikate mit dem Fingerabdruck im DNS verwenden?
Ich würde sagen, dies gibt genau die gleiche Menge an Vertrauen wie das DNS-basierte Verfahren von letsencrypt (und anderen Zertifizierungsstellen):
- Erstellen Sie eine selbstsignierte Zertifizierungsstelle (befolgen Sie einfach die Schritte der verschiedenen Vorgehensweisen)
- Erstellen Sie ein Zertifikat für einige Domain (s)
- Signieren Sie das Zertifikat aus Schritt 2 mit der Zertifizierungsstelle aus Schritt 1. Sie haben jetzt ein Basiszertifikat, das von einer nicht vertrauenswürdigen Zertifizierungsstelle signiert wurde
- Fügen Sie dem DNS jeder Domäne einen TXT-Eintrag (oder einen dedizierten Eintrag) hinzu, der besagt: Wir haben das Zertifikat dieser Domäne mit dieser Zertifizierungsstelle signiert. Wie: 'CA = -fingerpint von CA-'
- Ein Browser lädt das Zertifikat herunter und überprüft es, indem er den Fingerabdruck der Zertifizierungsstelle / des Zertifizierungsstellenzertifikats mit den Daten im DNS für die angegebene Domäne vergleicht.
Dies würde es ermöglichen, vertrauenswürdige selbstsignierte Zertifikate ohne Eingriffe Dritter mit demselben Vertrauensniveau wie jedes grundlegende SSL-Zertifikat zu erstellen. Solange Sie Zugriff auf das DNS haben, ist Ihr Zertifikat gültig. Man könnte sogar eine DNSSEC-ähnliche Verschlüsselung hinzufügen, um einen Hash aus der CA und dem SOA-Datensatz zu erstellen, um sicherzustellen, dass die Vertrauenswürdigkeit bei Änderungen im DNS-Datensatz verschwindet.
Wurde dies schon einmal in Betracht gezogen?
Jelmer
quelle
Antworten:
Die Basisinfrastruktur, die dies ermöglichen würde, ist vorhanden und wird als DNS-basierte Authentifizierung von benannten Entitäten (DANE) bezeichnet und in RFC6698 angegeben . Es funktioniert mithilfe eines
TLSA
Ressourceneintrags, der das Zertifikat oder seinen öffentlichen Schlüssel der Endentität oder einer seiner Zertifizierungsstellen in der Kette angibt.Annahme
Eine breite Akzeptanz hat DANE jedoch noch nicht gesehen. VeriSign überwacht die Einführung von DNSSEC und DANE und verfolgt dessen Wachstum im Laufe der Zeit :
Zum Vergleich, laut VeriSign gibt es ungefähr 2,7 Millionen DNS-Zonen, was bedeutet, dass etwas mehr als 1% aller Zonen mindestens einen TLSA-Eintrag haben.
Ich kann keine verbindliche Antwort geben, warum DANE, aber hier sind meine Spekulationen:
DANE hat das gleiche Problem wie Certificate Revocation Lists (CRLs) und das Online Certificate Status Protocol (OCSP). Um die Gültigkeit eines vorgelegten Zertifikats zu überprüfen, muss ein Dritter kontaktiert werden. Hanno Böck gibt einen guten Überblick , warum dies in der Praxis ein großes Problem ist. Es läuft darauf hinaus, was zu tun ist, wenn Sie den Dritten nicht erreichen können. Browser-Anbieter entschieden sich in diesem Fall für Soft-Fail (auch als Erlaubnis bezeichnet), was das Ganze ziemlich sinnlos machte und Chrome schließlich entschied, OCSP im Jahr 2012 zu deaktivieren.
DNSSEC
Es ist anzunehmen, dass DNS eine viel bessere Verfügbarkeit bietet als die CRL- und OCSP-Server von Zertifizierungsstellen, aber dennoch eine Offline-Überprüfung unmöglich macht. Darüber hinaus sollte DANE nur in Verbindung mit DNSSEC verwendet werden. Da normales DNS über nicht authentifiziertes UDP betrieben wird, ist es sehr anfällig für Fälschungen, MITM-Angriffe usw. Die Einführung von DNSSEC ist viel besser als die Einführung von DANE, ist jedoch noch weit davon entfernt, allgegenwärtig zu sein.
Und mit DNSSEC stoßen wir erneut auf das Soft-Fail-Problem. Nach meinem besten Wissen bietet kein wichtiges Server- / Client-Betriebssystem standardmäßig einen validierenden DNSSEC-Resolver an.
Dann gibt es noch das Thema Widerruf. DNSSEC hat keinen Sperrmechanismus und stützt sich stattdessen auf kurzlebige Schlüssel.
Software-Unterstützung
Alle teilnehmenden Softwareprogramme müssen DANE-Unterstützung implementieren.
Theoretisch könnte man meinen, dass Kryptobibliotheken und Anwendungsentwickler nicht viel dafür tun müssten. Fakt ist jedoch, dass kryptografische Bibliotheken in der Regel nur Grundelemente bereitstellen und Anwendungen viel selbst konfigurieren und einrichten müssen (und es gibt leider viele Möglichkeiten, die Dinge falsch zu machen).
Mir ist nicht bekannt, dass ein wichtiger Webserver (z. B. Apache oder Nginx) beispielsweise DANE implementiert hat oder plant, dies zu tun. Webserver sind hier von besonderer Bedeutung, da immer mehr Dinge auf Webtechnologien aufbauen und daher häufig die ersten sind, bei denen Dinge implementiert werden.
Wenn wir CRL, OCSP und OCSP-Heftung als Vergleich betrachten, können wir möglicherweise ableiten, wie die DANE-Adoptionsgeschichte verlaufen wird. Nur einige der Anwendungen, die OpenSSL, libnss, GnuTLS usw. verwenden, unterstützen diese Funktionen. Es hat eine Weile gedauert, bis wichtige Software wie Apache oder Nginx sie unterstützten. Wenn man sich erneut auf Hanno Böck bezieht, ist das falsch und die Implementierung fehlerhaft. Andere große Softwareprojekte wie Postfix oder Dovecot unterstützen OCSP nichtund haben eine sehr eingeschränkte CRL-Funktionalität, die im Grunde genommen auf eine Datei im Dateisystem verweist (was nicht unbedingt regelmäßig neu gelesen werden muss, sodass Sie Ihren Server manuell neu laden müssten usw.). Beachten Sie, dass dies Projekte sind, die häufig TLS verwenden. Dann können Sie sich Dinge ansehen, bei denen TLS weitaus seltener vorkommt, wie beispielsweise PostgreSQL / MySQL, und vielleicht bestenfalls CRLs anbieten.
Ich habe es also nicht einmal auf modernen Webservern implementiert, und die meisten anderen Programme haben noch nicht einmal die Möglichkeit, OCSP und CRL zu implementieren. Viel Glück mit Ihrer 5-jährigen Unternehmensanwendung oder Appliance.
Anwendungsmöglichkeiten
Also, wo könnten Sie DANE wirklich benutzen? Ab sofort nicht im allgemeinen Internet. Wenn Sie den Server und den Client steuern, ist dies möglicherweise eine Option. In diesem Fall können Sie jedoch häufig auf das Pinning mit öffentlichen Schlüsseln zurückgreifen.
Im E-Mail-Bereich erhält DANE eine gewisse Zugkraft, da SMTP die längste Zeit über keine authentifizierte Transportverschlüsselung verfügte. SMTP-Server haben manchmal untereinander TLS verwendet, haben jedoch nicht überprüft, ob die Namen in den Zertifikaten tatsächlich übereinstimmen. Sie beginnen nun, dies über DANE zu überprüfen.
quelle
Verschiedene Arten von Zertifikatsvalidierungsverfahren
Bei den regulären CA-signierten Zertifikaten gibt es mehrere Ebenen der Zertifikatvalidierung:
Nur der Besitz eines Domainnamens wird validiert, nur der Domainname wird im Zertifikat als "Betreff" angezeigt
Domänenname und Eigentümername werden validiert, Domänenname und Eigentümername werden im Zertifikat als "Betreff" angezeigt
Eine strengere Validierung der Eigentümerentität, des Domainnamens und des Eigentümernamens wird im Zertifikat als "Betreff" angezeigt, grüner Balken mit dem Eigentümernamen
Der Prozess, den Sie beschreiben und für den Sie einen Ersatz vorschlagen, gilt nur für die niedrigste Ebene, die Domain Validation (DV).
DV ist die Ebene, auf der die Validierung relativ einfach zu automatisieren ist, z. B. was LetsEncrypt getan hat, und bietet eine ähnliche Vertrauensebene wie DNS, wenn es als einzige Quelle für einen Vertrauensanker verwendet würde (Auswirkungen auf die Benutzeroberfläche, cert may vertrauenswürdig sein, aber zusätzliche Daten enthalten, die in keiner Weise validiert sind).
DNS-basierte Authentifizierung benannter Entitäten (DANE)
DANE baut auf DNSSEC auf (da die Authentizität der DNS-Daten von entscheidender Bedeutung ist), um Vertrauensankerinformationen für TLS-Clients in DNS zu veröffentlichen.
Es verwendet den
TLSA
RR-Typ und kann verwendet werden, um entweder das Zertifikat oder den öffentlichen Schlüssel ( Selektor ) der Endentität oder der Zertifizierungsstelle zu identifizieren , wobei oder auch, um erfolgreich zu sein, die regelmäßige Überprüfung der Zertifikatkette erforderlich ist (Verwendung des Zertifikats ) und wie das Zertifikat / Schlüsseldaten werden im Datensatz dargestellt ( passender Typ ).Der
TLSA
Name des Datensatzinhabers hat ein Präfix, das den Port und das Protokoll (z. B._443._tcp
) angibtcert usage
,selector
und die RData gibt diematching type
Modi und zusätzlich zu den übereinstimmenden Zertifikats- / Schlüsseldaten an. Einzelheiten zu diesen Parametern finden Sie in Abschnitt 2.1 von RFC6698 .Ein
TLSA
Datensatz kann beispielsweise so aussehen:Bei den Verwendungsmodi
2
oder3
(zeigt an, dass nur der TLSA-Vertrauensanker verwendet wird) würde ein DANE-fähiger Client ein Zertifikat akzeptieren, das nicht von einer allgemein vertrauenswürdigen Zertifizierungsstelle signiert ist, das jedoch mit demTLSA
Datensatz übereinstimmt .Dies ist konzeptionell dasselbe wie das, was Sie in Ihrer Frage vorschlagen.
Der Fang? DANE-fähige Clients sind derzeit mehr oder weniger nicht vorhanden. Ein Problem besteht darin, dass DNSSEC selbst nicht so weit verbreitet ist (insbesondere die Validierung auf dem Client-Computer), wie dies wahrscheinlich für den Start von DANE erforderlich wäre. Wahrscheinlich ein kleines Henne-Ei-Problem, wenn man bedenkt, dass DANE einer der ersten potenziell großen neuen Anwendungsfälle ist, die sich auf authentifizierte DNS-Daten stützen.
Es gibt ein Browser-Plugin, das die DNSSEC- und DANE-Validierung hinzufügt. Abgesehen davon gibt es derzeit nicht viel, was dem Mainstream nahe kommt. Und da es sich um ein Plugin handelt, das nicht von Haus aus unterstützt wird, dient es mehr als Proof-of-Concept als alles andere, wenn es um die allgemeine Verwendung geht.
Es könnte getan werden. Es wurde überlegt. Es könnte immer noch passieren, aber es hat nicht viel Bewegung gegeben.
quelle