Zertifikate TLS/HTTPS und Zertifikat Pinning HPKP Verständissfrage

Garack

Captain
Registriert
Mai 2006
Beiträge
3.583
Hallo,

Ich habe eine Frage zum Zertifikat Pinning.

So wie ich TLS und Zertifikate verstanden habe:

Ein Zertifikat kommt verschlüsselt mit dem privatem Key der nächst höheren Zertifizierungsstelle (CA) vom Server zu mir.
Ich (Chrome, Windows Zertifikatsstore) prüfe das Zertifikat mit dem öffentlichem Schlüssel der CA. Dieser ist im Zertifikat unverschlüsselt enthalten. Kann ich das Zertifikat entschlüsseln, dann ist es das Zertifikat von der richtigen CA.
Ist es eine Fälschung kann ich es gar nicht entschlüsseln.

Diese Kette geht weiter bis zu einem Root Zertifikat, welches fest in meinem Browser, Windows Zertifikatsspeicher sitzt und dem vertraut werden muss.

So kann kein Man in the Midle, Provider , NSA ein Zertifikat fälschen, da er dazu ein in letzter Instanz von der Root CA unterzeichnetes Zertifikat haben müsste.

Es geschieht aber das eine CA oder UnterCA "falsche" Zertifikate ausgibt. Zum Beispiel einfach einer sagen wir mal Verbrecherfirma vertraut wird, welche aber nicht vertrauenswürdig ist und den privaten Schlüssel an Hacker weitergibt.
Dieser Hacker könnte dann mit dem privaten natürlich den öffentlichen erstellen und ist innerhalb der Chain of Trust.

Ist das soweit korrekt?

Nun kommt Zertifikat Pinning und soll genau das verhindern. Zertifikate werden nicht mehr von einer Ober-CA vertraut sondern nur noch direkt von dem Server/der Domain:

Der sagen wir mal Web-Server gibt über einen HTTP Header seinen öffentlichen Schlüssel heraus. Der Client speichert ihn eine bestimmte Zeit. Ruft er nach einer Zeit wieder den Server an, und dieser ist gefälscht stimmt der öffentliche Key nicht mehr.

Problem hier ist, dass der initiale Aufruf von der legitimen Domain stammen muss.

Stimmt das so?
 
Ja, das stimmt. Das Problem bei self signing ist, daß die Browser trotzdem immer noch nach CAs schauen (deshalb gibt es die CA-Liste in jedem Browser) und ein Warnfenster ausgeben.
 
Zurück
Oben