hmo schrieb am 29. April 2014 20:06
> Aus welchem Grunde sollte man die Zertifikate zwingend validieren
> müssen? Für STARTTLS (um das es hier offentsichtlich geht) reicht
> bereits ein selbst-signiertes Zertifikat, und schon hat man
> Verschlüsselung auf dem Transportweg. Und wenn man dann noch PFS
Für die Verschlüsselung reicht ein selbst-signiertes Zertifikat.
Aber für die Bestätigung, dass das bereitgestellte Zeritifikat auch
von dem ist, der behauptet, dass er es sei, reicht ein
selbst-signiertes Zertifikat nicht. Dazu muss der Empfänger entweder
zuvor das Zertifikat auf anderem Wege als echt bestätigt bekommen
haben (z.B. bei persönlichen Kontakt übergeben), oder er muss
jemanden haben, der das bestätigt und dem er vertraut. Letzteres ist
genau das, wenn jemand einen Schlüssel von einer CA bestätigen lässt,
und es bei der Gegenstelle eine Zertifikatskette zu einem Zertifikat
gibt, das als vertrauenswürdig bestätigt wurde. Letzteres versuchen
beispielsweise Browserhersteller und Betriebssystemhersteller für die
Nutzer zu machen, indem sie einige Zertifikate mit ausliefern. (Ob
man denen vertraut, kann man selbst entscheiden.)
> einschaltet, ist erstmal alles gut. Im Gegenteil: Durch die
> Unabhängigkeit von einer öffentlichen CA läuft man auch nicht Gefahr,
> durch eine kaputte CA kompromittiert zu werden.
Wieso wird man durch eine kaputte CA kompromittiert?
Mit einer kaputten CA bist du nicht schlechter dran als einem
ansonsten unbekannten fremden selbst-signiertes Zertifikat. In diesem
Fall kannst du nicht mehr sicher sein, dass das Zertifikat von dem
stammt, der als Eigentümer eingetragen ist. Die Verschlüsselung
bleibt sicher - denn der private Schlüssel wurde nie an die CA
rausgegeben und kann daher auch nicht durch die CA kompromittiert
werden.
Eine CA bestätigt nur die Echtheit des öffentlichen Schlüssels. Der
private Schlüssel bleibt geheim (sofern der Eigentümer ihn geheim
hält).
> Natürlich hat man dann nicht seinen Kommunikationspartner sicher
> authentisiert, sodass man mit DNS Spoofing angreifbar wäre. Dagegen
> hilft DNSSEC, das ist korrekt dargestellt.
Nein, DNSSEC hilft nur, sicherzustellen, dass man die richtigen DNS
Daten bekommt. Es verifziert nicht den Kommunikationspartner.
Man könnte im DNS signiert auch z.B. Zertifikate oder Hashwerte davon
zum Vergleich hinterlegen. Dann kann man damit den vom Server zur
Verfügung gestellte Zertifikate vergleichen. Man kann dafür aber auch
andere Verzeichnisdienste für Zertifikate verwenden, die als
zuverlässig eingestuft werden, es muss nicht zwingend DNSSEC sein.
> Aus welchem Grunde sollte man die Zertifikate zwingend validieren
> müssen? Für STARTTLS (um das es hier offentsichtlich geht) reicht
> bereits ein selbst-signiertes Zertifikat, und schon hat man
> Verschlüsselung auf dem Transportweg. Und wenn man dann noch PFS
Für die Verschlüsselung reicht ein selbst-signiertes Zertifikat.
Aber für die Bestätigung, dass das bereitgestellte Zeritifikat auch
von dem ist, der behauptet, dass er es sei, reicht ein
selbst-signiertes Zertifikat nicht. Dazu muss der Empfänger entweder
zuvor das Zertifikat auf anderem Wege als echt bestätigt bekommen
haben (z.B. bei persönlichen Kontakt übergeben), oder er muss
jemanden haben, der das bestätigt und dem er vertraut. Letzteres ist
genau das, wenn jemand einen Schlüssel von einer CA bestätigen lässt,
und es bei der Gegenstelle eine Zertifikatskette zu einem Zertifikat
gibt, das als vertrauenswürdig bestätigt wurde. Letzteres versuchen
beispielsweise Browserhersteller und Betriebssystemhersteller für die
Nutzer zu machen, indem sie einige Zertifikate mit ausliefern. (Ob
man denen vertraut, kann man selbst entscheiden.)
> einschaltet, ist erstmal alles gut. Im Gegenteil: Durch die
> Unabhängigkeit von einer öffentlichen CA läuft man auch nicht Gefahr,
> durch eine kaputte CA kompromittiert zu werden.
Wieso wird man durch eine kaputte CA kompromittiert?
Mit einer kaputten CA bist du nicht schlechter dran als einem
ansonsten unbekannten fremden selbst-signiertes Zertifikat. In diesem
Fall kannst du nicht mehr sicher sein, dass das Zertifikat von dem
stammt, der als Eigentümer eingetragen ist. Die Verschlüsselung
bleibt sicher - denn der private Schlüssel wurde nie an die CA
rausgegeben und kann daher auch nicht durch die CA kompromittiert
werden.
Eine CA bestätigt nur die Echtheit des öffentlichen Schlüssels. Der
private Schlüssel bleibt geheim (sofern der Eigentümer ihn geheim
hält).
> Natürlich hat man dann nicht seinen Kommunikationspartner sicher
> authentisiert, sodass man mit DNS Spoofing angreifbar wäre. Dagegen
> hilft DNSSEC, das ist korrekt dargestellt.
Nein, DNSSEC hilft nur, sicherzustellen, dass man die richtigen DNS
Daten bekommt. Es verifziert nicht den Kommunikationspartner.
Man könnte im DNS signiert auch z.B. Zertifikate oder Hashwerte davon
zum Vergleich hinterlegen. Dann kann man damit den vom Server zur
Verfügung gestellte Zertifikate vergleichen. Man kann dafür aber auch
andere Verzeichnisdienste für Zertifikate verwenden, die als
zuverlässig eingestuft werden, es muss nicht zwingend DNSSEC sein.