SkillGridInformatik durch Machen lernen

Was HTTPS zu HTTP hinzufuegt

Der TLS-Handshake, Zertifikate und die Vertrauenskette dahinter, was ein Man in the Middle tun kann und was nicht, und warum Forward Secrecy aendert, was ein gestohlener Schluessel wert ist.

16 Min. · 50 XP

HTTP ist Klartext. Alles, was du in ein Formular tippst, jedes Session-Cookie und jedes API-Token reist als lesbare Bytes, und jedes Geraet auf dem Weg kann sie nicht nur lesen, sondern auch veraendern, ohne dass eine Seite es merkt. HTTPS ist dasselbe HTTP, nur innerhalb von TLS. Interessant ist dabei nicht die Verschluesselung, sondern dass sich beide Seiten auf einen geheimen Schluessel einigen koennen, waehrend ein Angreifer jede einzelne Nachricht der Verhandlung hoert.

ClientServerTCP SYNTCP SYN-ACKTCP ACKClientHello: random, cipher list, key shareServerHello: random, chosen cipher, key shareCertificate chainFinishedFinishedhandshake key material is derived on both sidesGET /login HTTP/1.1HTTP/1.1 200 OK

Der Handshake ist diese Verhandlung, und er laeuft vor jeder Anfrage. Der Client oeffnet eine TCP-Verbindung und sendet dann ein ClientHello mit einer Zufallszahl, der Liste unterstuetzter Verfahren und seinem oeffentlichen Schluesselanteil. Der Server antwortet mit seiner eigenen Zufallszahl, dem gewaehlten Verfahren und seinem Schluesselanteil. Danach leiten beide Seiten dieselben Sitzungsschluessel ab, aus dem eigenen geheimen Wert und dem oeffentlichen der Gegenseite, und niemand, der das Gespraech mithoert, kann diese Rechnung wiederholen. Am Ende senden beide eine Finished-Nachricht, einen Hash ueber alles bisher Gesagte, sodass jede Aenderung waehrend des Handshakes die Pruefung sofort bricht.

Ein Zertifikat ist eine signierte Aussage, die einen oeffentlichen Schluessel an einen Hostnamen bindet. Darin stehen der Name, der oeffentliche Schluessel, ein Gueltigkeitszeitraum und eine Signatur einer Zertifizierungsstelle. Genau diese Signatur macht den Schluessel vertrauenswuerdig — der Schluessel allein beweist nichts. Wer jeden angebotenen Schluessel akzeptiert, bekommt vom Angreifer einfach dessen eigenen.

Chain
  1  leaf        CN=example.org
                 SAN: example.org, www.example.org
                 valid 2026-01-01 .. 2026-04-01
  2  intern     CN=R3 Intermediate CA
  3  root        CN=ISRG Root X1  (already on the device)

Validation
  signature of 1  checked with public key of 2    ok
  signature of 2  checked with public key of 3    ok
  signature of 3  checked with public key on device  ok
  name in SAN matches the host that was requested   ok
  current time inside the validity window           okEine Zertifikatskette und die fuenf Pruefungen, die ein Client durchfuehrt.

Die Kette ist der Grund, warum wenige Wurzeln fuer das ganze Netz reichen. Eine Wurzelinstanz signiert eine Zwischenstelle, die Zwischenstelle signiert das Zertifikat, das du erhaeltst, und dein Geraet muss nur der Wurzel bereits vertrauen — Wurzelzertifikate werden mit Betriebssystem und Browser ausgeliefert. Die Pruefung laeuft die Kette nach oben: Signatur des Endzertifikats mit dem Schluessel der Zwischenstelle pruefen, Zwischenstelle mit der Wurzel pruefen, pruefen dass die Wurzel vertrauenswuerdig ist, dann vergleichen, ob der Name im Zertifikat zum angefragten Host passt und ob das heutige Datum im Gueltigkeitszeitraum liegt. Jeder einzelne Fehlschlag beendet die Verbindung.

Ein Angreifer auf dem Weg, der kein gueltiges Zertifikat vorlegen kann, hat ein echtes Problem. Er kann Pakete verwerfen oder verzoegern, er kann sich als Adresse ausgeben, aber er kann die verschluesselten Bytes nicht lesen und den Handshake nicht faelschen, solange ihm kein Zertifikat zur Verfuegung steht, das dein Client akzeptiert. Ein veraendertes verschluesseltes Byte kippt kein Bit im Klartext — es scheitert die Authentifizierung, und die Verbindung endet. Deshalb ist es keine gute Idee, eine Zertifikatswarnung wegzuklicken: Entweder ist die Warnung ein echter Konfigurationsfehler, oder du hast gerade deine Sitzung dem uebergeben, der sie verursacht hat.

$ curl -v https://example.org
*  SSL certificate problem: self-signed certificate in certificate chain
*  Closing connection

$ curl -vk https://example.org
*  Server certificate: CN=mitm-proxy.local
*  subjectAltName does not match example.org
<  HTTP/1.1 200 OKDieselbe Anfrage mit und ohne Zertifikatspruefung.

Forward Secrecy beantwortet eine konkrete Frage: Was passiert mit Verkehr, der vor Jahren mitgeschnitten wurde, wenn heute der private Schluessel des Servers leckt? Im klassischen Verfahren wurde der Sitzungsschluessel mit dem oeffentlichen Schluessel des Servers verschluesselt, also genuegen aufgezeichneter Handshake und geleckter Schluessel fuer alles. Bei ephemerem Diffie-Hellman wird der Schluesselanteil fuer genau diese eine Verbindung erzeugt und danach verworfen, sodass ein spaeterer Schluesselverlust gegen alten Verkehr nutzlos ist. Gegen einen aktiven Angreifer hilft es nicht, und gegen den Diebstahl des Sitzungsschluessels selbst auch nicht. Es aendert den Wert eines gestohlenen Schluessels: statt der ganzen Geschichte eine einzige Sitzung.

Praxis

  1. Ordne die Ereignisse einer ersten HTTPS-Anfrage an einen Host, den du noch nie kontaktiert hast.

    1. 1die verschluesselte HTTP-Anfrage und die Antwort werden ausgetauscht
    2. 2der Server praesentiert seine Zertifikatskette
    3. 3der Client sendet ein ClientHello mit Zufallsdaten und einem Key Share
    4. 4der Client oeffnet eine TCP-Verbindung zu Port 443
    5. 5beide Seiten schliessen den Handshake ab und leiten dieselben Sitzungsschluessel ab
    6. 6der Server antwortet mit seinem eigenen Zufallswert, seiner gewaehlten Cipher Suite und seinem Key Share
    Hinweise
    • Nichts Verschluesseltes kann gesendet werden, bevor sich beide Seiten geeinigt haben, womit verschluesselt wird.
    • Das Zertifikat kommt vom Server, nachdem beide Hallo-Nachrichten ausgetauscht wurden.
    • Anwendungsdaten kommen ganz zuletzt: Der Handshake muss auf beiden Seiten abgeschlossen sein.
  2. Ein Server praesentiert ein Zertifikat, das von einer vertrauenswuerdigen Zertifizierungsstelle fuer den korrekten Hostnamen ausgestellt wurde, aber vor drei Tagen abgelaufen ist. Der Browser verweigert die Verbindung. Was bedeutet diese Verweigerung tatsaechlich?

    Hinweise
    • Frag, was das Zertifikat beweist: Es ist eine Signatur einer Stelle, kein Versprechen ueber die Server-Software.
    • Ein Zertifikat mit voellig gueltiger Signatur kann trotzdem fuer einen anderen Hostnamen gelten.
    • Ein abgelaufenes oder zurueckgezogenes Zertifikat ist eine normale, erwartete Ablehnung, und der Browser meldet sie deutlich.
  3. Ordne jedem Angreifer oder Fehlerfall zu, was er gegen eine moderne HTTPS-Verbindung tatsaechlich erreichen kann.

    Hinweise
    • Trenne die Angreifer nach ihren Moeglichkeiten: Bytes lesen und aendern oder nur kopieren und warten.
    • Forward Secrecy betrifft Verkehr, der lange aufgezeichnet und erst spaeter entschluesselt wird, nach einem Schluesselleck.
    • Ein passiver Beobachter auf dem Weg erfaehrt weiterhin die Namen der besuchten Seiten, der Inhalt bleibt jedoch verborgen.

Fragen zu dieser Lektion

Warum überhaupt Netzwerke lernen?

Fast alles, was du baust, spricht irgendwann mit etwas anderem. Wer weiß, wie Daten wirklich wandern, macht aus „es funktioniert nicht“ eine Liste von Dingen, die man der Reihe nach prüfen kann.

Was ist der echte Unterschied zwischen TCP und UDP?

TCP sorgt dafür, dass alles ankommt, in der richtigen Reihenfolge, und wiederholt Verlorenes — das kostet Zeit. UDP sendet und schaut nicht zurück, deshalb bevorzugen Video und Spiele es: Ein verspätetes Bild ist schlechter als ein fehlendes.

Was ist DNS in einfachen Worten?

Es ist das Telefonbuch des Internets. Du kennst den Namen, der Rechner braucht die Nummer. DNS macht aus einem Namen wie example.org eine IP-Adresse und merkt sich die Antwort, damit nicht jedes Mal gefragt wird.

Ist das kostenlos?

Ja. Die erste Ebene jedes Fachs ist kostenlos und braucht kein Konto. Tiefere Ebenen und die höheren Stufen sind kostenpflichtig — genau das hält das Projekt am Leben.

Für welches Alter ist das gedacht?

Für neugierige Jugendliche ab etwa 12 Jahren und für Erwachsene, die bei null anfangen. Programmiererfahrung wird nicht vorausgesetzt; die Lektionen zu Netzwerken und Physik brauchen keine Mathematik über Schulniveau.

Muss ich schon programmieren können?

Nein. Logik, Physik und Netzwerke beginnen bei null. Code schreibst du im Bereich Programmiersprachen — und auch der fängt vorne an.

Muss ich etwas installieren?

Nein. Alles läuft im Browser: Theorie, Übungen und die interaktiven Simulationen. Es gibt nichts herunterzuladen und nichts einzurichten.

Wie lange dauert ein Fach?

Eine Lektion dauert 10 bis 15 Minuten. Eine Junior-Stufe umfasst etwa 12 bis 20 Lektionen, also einige Wochen regelmäßiger Übung statt eines Abends.

Muss ich der Reihenfolge folgen?

Innerhalb einer Stufe öffnen sich die Ebenen nacheinander, weil jede auf der vorherigen aufbaut. Zwischen den Fächern bist du frei: beginne mit Logik, Physik oder Netzwerken.