Mittwoch, 6. Juni 2012


Topthema

Donnerstag, 23. November 2006 | Topthema

About Security #82: Kryptographie — Zertifikate in SSL/TLS

(Link zum Artikel: http://www.entwickler.de/php/kolumnen/032686)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Wie X.509-Zertifikate im Rahmen von SSL/TLS verwendet werden, erfahren Sie in dieser Folge. Den Anfang macht die Beschreibung der beim Handshake ausgetauschten Nachrichten. Mit der 'ClientHello'-Nachricht sendet der Client folgende Informationen an den Server:

  • Version:
    Die h�chste SSL/TLS-Version, die der Client versteht.
  • Random:
    Ein vom Client gew�hlter Zufallswert, gebildet aus einem Zeitstempel und einer Zufallszahl. Er verhindert Replay-Angriffe w�hrend des Schl�sselaustauschs.
  • SessionID:
    Eine Sitzungskennung, um verschiedene Verbindungen/Sitzungen zu unterscheiden.
  • CipherSuite:
    Eine Liste der vom Client unterst�tzten Verschl�sselungsalgorithmen, sortiert nach abnehmender Bedeutung. Jeder Eintrag enth�lt eine Methode zum Schl�sselaustausch und die so genannte CipherSpec mit Angaben �ber Verschl�sselungs- und MAC-Algorithmen, �ber Strom- oder Blockchiffre und Informationen f�r die Verschl�sselung und MAC-Berechnung.
  • Compression Method:
    Eine Liste der vom Client unterst�tzten Komprimierungsalgorithmen.

N E U ! Security aktuell
T�glich aktuelle Security-Infos!

Die daraufhin vom Server gesendete 'ServerHello'-Nachricht enth�lt folgende Informationen:

  • Version:
    Die h�chste SSL/TLS-Version, die sowohl Client als auch Server verstehen.
  • Random:
    Ein von Server gew�hlter Zufallswert, gebildet aus einem Zeitstempel und einer Zufallszahl. Der Wert ist unabh�ngig von dem vom Client gesendeten Random-Wert.
  • SessionID:
    Beim Start einer neuen Sitzung die vom Server vergebene ID, sonst die vom Client gelieferte ID der bestehenden Sitzung.
  • CipherSuite:
    Enth�lt den vom Server aus der Liste des Clients gew�hlten Verschl�sselungsalgorithmus. Dies kann je nach Pr�ferenz z.B. der st�rkste oder schnellste der m�glichen Algorithmen sein.
  • Compression Method:
    Enth�lt den vom Server aus der Liste des Clients gew�hlten Komprimierungsalgorithmus.

Der Server sendet nach der 'ServerHello'-Nachricht sein Zertifikat (oder ggf. auch mehrere) in einer Zertifizierungsnachricht an den Client und signalisiert danach durch eine 'ServerHelloDone'-Nachricht, dass er fertig ist. Danach beginnen die Serverauthentifizierung und der Sch�sselaustausch.

Der Client muss nun das X.509-Zertifikat pr�fen. X.509-Zertifikate sind immer an einen "Distinguished Name" oder "Alternative Name", z.B. eine E-Mail-Adresse oder einen DNS-Eintrag, gebunden. Die meisten Webbrowser bringen eine vorkonfigurierte Liste vertrauensw�rdiger CAs mit, den davon ausgestellten Zertifikaten vertrauen die Browser dadurch automatisch. Kann der Browser das Zertifikat nicht selbst verifizieren, fragt er beim Benutzer nach. Dieser kann dem Zertifikat dann (zweckm��igerweise nach einer gr�ndlichen Pr�fung) einmalig oder auf Dauer sein Vertrauen aussprechen oder die Verbindung abbrechen. Bei Bedarf kann ein vom Browser akzeptiertes Zertifikat auch zus�tzlich vom Benutzer gepr�ft und dessen Fingerprint mit einem auf sicherem Weg erhaltenen Vergleichswert verglichen werden. Ggf. kann ab SSL-Version 3.0 der Server zus�tzlich seinerseits vom Client ein Zertifikat anfordern. Da diese M�glichkeit sehr selten eingesetzt wird, soll hier nicht weiter darauf eingegangen werden.

About Security: Die komplette Serie

Nachdem das Zertifikat erfolgreich gepr�ft wurde, beginnt der Austausch der Schl�ssel f�r die symmetrische Verschl�sselung. Dies soll hier beispielsweise mit RSA geschehen. Dazu erzeugt der Client eine weitere sichere, d.h. nicht vorhersagbare, Zufallszahl, das so genannte Pre-Master-Secret, das mit dem �ffentlichen Schl�ssel des Servers aus dem Zertifikat verschl�sselt und an den Server gesendet wird. Dieser kann es als einziger mit seinem privaten Schl�ssel entschl�sseln und beweist dadurch seine Authentizit�t. Sowohl Client als auch Server k�nnen dann aus dem Pre-Master-Secret und den beiden Random-Werten aus den 'ClientHello'- und 'ServerHello'-Nachrichten das so genannte Master-Secret berechnen. In diesem Punkt unterscheiden sich SSLv3 und TLS: W�hrend SSL f�r die Berechnung des Master-Secrets auf die vorhandenen Hash-Funktionen MD5 und SHA zur�ckgreift, verwendet TLS daf�r eine eigene Zufallszahlenfunktion PRF (Pseudorandom Function). Aus dem Master-Secret werden dann die Schl�ssel f�r die symmetrische Verschl�sselung der Verbindung berechnet.

Grafische Darstellung des Handshake-Ablaufs.

Nutzung von SSL/TLS in eigenen Programmen

Da SSL/TLS zwischen Anwendungs- und Transportschicht sitzt, kann jedes Programm seine Dienste in Anspruch nehmen. F�r Java gibt es z.B. die Java Secure Socket Extensions (JSSE), die SSL 2.0 und 3.0 sowie TLS 1.0 unterst�tzen. JSSE bietet eine vollst�ndige Abstraktion von SSL, sodass sich der Entwickler nicht selbst um die verschiedenen Phasen des Handshake-Protokolls k�mmern muss, sondern nach der Initialisierung direkt �ber entsprechende Sockets eine gesch�tzte Verbindung aufbauen kann. PHP kann bei entsprechender Installation die Funktionen einer vorhandenen OpenSSL-Installation nutzen. Au�erdem unterst�tzen die Socket-Funktionen fsockopen() und stream_socket_client() SSL und TLS.

In der n�chsten Folge werden Aufbau und Nutzung einer Public-Key-Infrastruktur (PKI) beschrieben.

Wenn Sie Fragen oder Themenvorschl�ge haben, k�nnen Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security � �bersicht zum aktuellen Thema "Kryptographie � Anwendungen"

Kommentare

Folgende Links könnten Sie auch interessieren

  • IT-Sicherheit  [19.04.2007]
    [http://entwickler.de/zonen/portale/psecom,id,102,buch,616,.html]
  • Kandidatenschau  [29.04.2003]
    [http://entwickler.de/zonen/portale/psecom,id,101,online,360,.html]
  • Web Security  [05.04.2006]
    [http://entwickler.de/zonen/portale/psecom,id,101,online,396,.html]
  • Security mit Smartcards  [23.06.2006]
    [http://entwickler.de/zonen/portale/psecom,id,101,online,832,.html]
  • From Babylon back to Babylon  [27.06.2005]
    [http://entwickler.de/zonen/portale/psecom,id,101,online,649,.html]