SSL verwendet sowohl symmetrische als auch asymmetrische Verschlüsselungsalgorithmen.
Symmetrische Algorithmen verwenden zum Verschlüsseln und Entschlüsseln von Daten denselben Schlüssel.
Sie sind schneller als asymmetrische Algorithmen, können aber ein Sicherheitsrisiko darstellen.
Asymmetrische Algorithmen verwenden ein Schlüsselpaar. Daten, die mit dem einen Schlüssel verschlüsselt wurden, können nur mithilfe des anderen Schlüssels entschlüsselt werden. In der Regel ist einer der Schlüssel nicht öffentlich, während der andere öffentlich gemacht wird. Da einer der Schlüssel stets nicht öffentlich ist, sind asymmetrische Algorithmen in der Regel sicher; sie sind jedoch wesentlich langsamer als symmetrische Algorithmen. Damit die Vorteile beider Algorithmen genutzt werden können, verkapselt SSL einen symmetrischen Schlüssel, der jedes Mal nach dem Zufallsprinzip ausgewählt wird, in einer Nachricht, die mit einem asymmetrischen Algorithmus verschlüsselt wird. Wenn sowohl der Client als auch der Server über den symmetrischen Schlüssel verfügen, wird statt des asymmetrischen Schlüssels der symmetrische verwendet.
Wenn eine Serverauthentifizierung angefordert wird, verwendet SSL folgenden Prozess:
- Zum Anfordern einer sicheren Seite verwendet der Client HTTPS.
- Der Server sendet seinen öffentlichen Schlüssel und das Zertifikat an den Client.
- Der Client überprüft, ob das Zertifikat von einer vertrauenswürdigen Partei ausgestellt wurde (in der Regel eine Zertifizierungsstelle), noch gültig ist und ob das Zertifikat in Beziehung zur kontaktierten Site steht.
- Der Client verwendet den öffentlichen Schlüssel zum Verschlüsseln eines nach dem Zufallsprinzip ausgewählten symmetrischen Verschlüsselungsschlüssels und sendet ihn an den Server, zusammen mit der erforderlichen verschlüsselten URL und anderen verschlüsselten URL-Daten.
- Der Server entschlüsselt den symmetrischen Verschlüsselungsschlüssel mithilfe seines privaten Schlüssels und verwendet den symmetrischen Schlüssel zum Entschlüsseln der URL- und HTTP-Daten.
- Der Server sendet das angeforderte HTML-Dokument und die HTTP-Daten zurück, die mit dem symmetrischen Schlüssel verschlüsselt sind.
- Der Client entschlüsselt die HTTP-Daten und das HTML-Dokument mithilfe des symmetrischen Schlüssels und zeigt die Informationen an.