Es bleiben zwei offene Fragen:
- Wie können wir unseren öffentlichen Schlüssel veröffentlichen?
- Wie können wir sicher sein, dass ein öffentlicher Schlüssel wirklich vom deklarierten Absender kommt?
Dafür gibt es Zertifikate. Ein Zertifikat ist eigentlich ein von einer Zertifizierungsstelle (engl. CA: Certificate Authority) unterschriebener öffentlicher Schlüssel. So werden Eigenschaften und der Eigentümer des Schlüssel bestätigt. Mit der Unterschrift bürgt die Zertifizierungsstelle für die «Echtheit» des öffentlichen Schlüssels.
# Zertifikat ausstellen
Um ein Zertifikat zu erhalten muss man seinen öffentlichen Schlüssel von einer Zertifizierungsstelle signieren lassen. Je nach «Sicherheitsstufe» wird dabei ein Identitätsnachweis verlangt.
Im folgenden Beispiel lässt sich die Bank ein Zertifikat ausstellen:
# Zertifikat überprüfen
Das Zertifikat der Bank kann nun von den Kunden verwendet werden: Einerseits lässt sich so sicherstellen, dass man den korrekten öffentlichen Schlüssel der Bank erhält. Andererseits kann man mit diesem eine symmetrische verschlüsselte Verbindung aufbauen.
# Zertifikatskette
Zertifikate können hierarchisch verkettet werden. So muss man nur wenigen Root-Zertifikaten vertrauen. Diese Root-Zertifikate unterschreiben ihrerseits Zwischenzertifikate welche wiederum weitere Zwischenzertifikate oder dann schlussendlich ein «Endzertifikat» unterschreiben. So kann die Echtheit eines «Endzertifikates» durch Zurückverfolgen der Kette zu einem gültigen Root-Zertifikat verifiziert werden.
# https
Bei https kommen SSL-Zertifikate zum Einsatz. Bei einer Verbindungsanfrage liefert der Webserver dem Browser ein Zertifikat. Der Browser kann nun die Zertifikatskette nachvollziehen und schauen ob mit dieser alles in Ordnung ist.
Warnungen bei Zertifikaten können ganz verschiedene Gründe haben:
- Zertifikat ist abgelaufen
- Zertifikat hat kein gültiges Root-Zertifikat
- Zertifikat wurde für einen andere URL ausgestellt
- Zertifikat erfüllt nicht die geforderten Eigenschaften
- …
Mit dem im Zertifikat enthaltenen öffentlichen Schlüssel kann der Client einen zufällig generierten Session Key verschlüsseln und an den Server übermitteln. Somit sind beide Partien im Besitz des symmetrischen Schlüssels: Der Server kann die gewünschten Webseiteninhalte symmetrisch verschlüsselt an den Browser schicken. Der Browser seinerseits verschlüsselt Formulareingaben (wie z.B. Login-Passwort und anderes) und Dateiuploads.
Aufgaben
Vergleiche die Zertifikate der folgenden Webseiten und bewerte ihre Sicherheit.
- https://www.gymkirchenfeld.ch (opens new window)
- https://www.postfinance.ch (opens new window)
- https://www.pcwebshop.co.uk (opens new window)
- https://cacert.org (opens new window)
- https://revoked.grc.com (opens new window)
Besuche die Webseiten mit unterschiedlichen Browsern: Wie stellen die Browser die Sicherheit der Zertifikate dar?
Auf der Seite badssl.com (opens new window) lassen sich alle möglichen Zertifikats-Probleme testen. Nicht immer reagieren die verschiedenen Browser gleich auf die Fehler.
← Signatur Blockchain →