Zertifikate Teil 1

| Foto von Alp Duran auf Unsplash

Rund um digitale Zertifikate Teil 1

In diesem Artikel möchte ich eine Zusammenfassung darüber geben, was Zertifikat sind, was eine Key Infrastruktur ausmacht und warum das wichtig ist. Der Artikel richtet sich an Einsteiger, enthält aber vielleicht auch nützliche Informationen für Fortgeschrittene.

Grundlagen - Hashfunktionen, Schlüsselpaare, Digitale Signaturen

Ein paar kryptografische Grundlagen sind notwendig um zu verstehen, was ein Zertifikat überhaupt ist, und warum es so nützlich ist.

Hashfunktionen

Eine Hashfunktion ist eine Funktion, die aus einem gegebenem Input einen anderen Input generiert. Das besondere ist, dass Transformation nur in die eine Richtung funktioniert (Einwegfunktion). Es ist also (fast) nicht möglich, aus dem generierten Wert, den ursprünglichen Eingangswert zu erlangen. Hashfunktionen werden dazu genutzt, die Integrität von Daten zu gewährleisten. Ist eine Datei integer, ist sie nicht ungewollt verändert worden. Veröffentlicht man zum Beispiel eine Datei mitsamt ihres Hashwerts kann jeder die Datei prüfen, indem er versucht mit dem gleichen Algorithmus den gleichen Hashwert zu generieren. Klappt das, ist die Datei nicht ungewollt verändert worden.

Schlüsselpaare und asymmetrische Kryptographie

Schlüsselpaare bestehen aus einem öffentlichen Schlüssel und einem privaten Schlüssel. Die beiden Schlüssel sind miteinander verbunden. Der öffentlichen Schlüssel kann guten Gewissens veröffentlicht werden und von anderen Personen gesehen und genutzt werden. Der private Schlüssel muss immer geheim gehalten werden und darf nur vom Besitzer verwendet werden. Verschlüsselt man eine Nachricht mit einem dieser Schlüssel, erlaubt es mir nur der gepaarte Schlüssel, diese Nachricht zu entschlüsseln. Das ist die Grundlage für asymmetrische Kryptographie, die typischerweise so abläuft:

1) Bob erstellt ein Schlüsselpaar und veröffentlicht seinen öffentlichen Schlüssel.
2) Alice nimmt Bobs öffentlichen Schlüssel und verschlüsselt eine Nachricht für Bob damit.
3) Alice sendet Bob die verschlüsselte Nachricht.
4) Bob kann die Nachricht nun mit seinem privaten Schlüssel entschlüsseln. Mit Bobs öffentlichem Schlüssel ist das Entschlüsseln nicht möglich.

Digitale Signaturen

Digitale Signaturen kombinieren die beiden obenstehenden Konzepte miteinander und werden verwendet, um sowohl die Integrität und die Authentizität zu garantieren.

1) Alice erzeugt einen Hash ihrer Nachricht.
2) Alice verschlüsselt diesen Hash mit ihrem privaten Schlüssel und erzeugt somit die digitale Signatur.
3) Alice nimmt die digitale Signatur und sendet sie mit ihrer Nachricht an Bob.
4) Bob entschlüsselt die digitale Signatur mit Alices öffentlichem Schlüssel und erhält den Hashwert.
5) Bob generiert den Hashwert für die Nachricht und vergleicht die beiden Hashwerte (Verifizierung).

Digitale Zertifikate

Digitale Zertifikate sollen die Identität einer bestimmten Einheit bei der digitalen Kommunikation sicherstellen. Im Internet werden Zertifikate üblicherweise von einer Institution, einer sog. Certificate Authority (CA) ausgestellt. Diese sollen die Identität der Nutzer sicherstellen, die von der CA ein Zertifikat bekommen. Sie sind die Grundpfeiler der Public Key Infrastructure (PKI).

Was ist ein digitales Zertifikat?

Ein digitales Zertifikat ist im Grund nur eine informative Verpackung für einen öffentlichen Schlüssel, der zu einem Schlüsselpaar gehört. Ein Zertifikat beinhaltet neben dem Schlüssel insbesondere Informationen zur Person, der das Schlüsselpaar gehört.

Warum brauchen wir überhaupt Zertifikate?

Möchten wir Nachrichten über öffentliche Netzwerke senden, wollen wir in den meisten Fällen, dass diese nicht jeder Dritte im Klartext lesen kann, insbesondere, wenn es um sensible Daten, wie beispielsweise ein Login ins Online-Banking, geht. Daher brauchen wir verschlüsselten Datentransfer. Und damit wir nicht jedes Mal, bevor wir ein Datenpaket versenden, unseren Kommunikationspartner anrufen, oder auf einen anderen Weg, einen gemeinsamen Schlüssel zum Verschlüsseln verabreden müssen, nutzen wir anstelle eines symmetrischen ein asymmetrisches Verschlüsselungssystem. Nun können wir einfach unsere Schlüsselpaare generieren und uns gegenseitig verschlüsselte Nachrichten senden… nur, dass wir nicht wirklich wissen, ob wir unsere Nachrichten auch an die richtige Person senden. Jemand könnte sich ja einfach als unser Kommunikationspartner ausgeben. Ein digitales Zertifikat soll Parteien im Netzwerk identifizieren, sodass wir uns sich sicher sein können, mit wem wir kommunizieren. An dieser Stelle brauchen wir eine dritte Partei, die CA.

Certificate Authorities

Die Certificate Authorities sind Institutionen, die verschiedene Aufgaben übernehmen, die mit dem Ziel die Zugehörigkeit eines öffentlichen Schlüssels zu einer Identität zu garantieren. Dafür übernimmt die CA insbesondere die Aufgabe, eine Partei zu identifizieren und ihr dann ein Zertifikat auszustellen, mit der die Partei ihre Identität anderen Parteien gegenüber beweisen kann.

Chain of Trust und das Root Zertifikat

Für diesen Zweck besitzt die CA ein sogenanntes “Root Zertifikat”. Von diesem Zertifikat aus, werden alle anderen Zertifikate ausgestellt. “Vertraut” man dem Root, vertraut man automatisch allen Zertifikaten, die das Root ausgestellt hat. Diese Verfahren nennt man Chain of Trust und es ist der Grund, warum es unheimlich wichtig ist, das Root Zertifikat zu schützen. Bekommt es eine böswillige Partei in die Hände, ist sie in der Lage Zertifikate auszustellen, denen wir automatisch vertrauen würden.

Um das Root Zertifikat besser schützen zu können, besitzen CAs mehrere, sogenannte Intermediate Zertifikate, die vom Root Zertifikat ausgestellt wurden und sich um das Ausstellen der restlichen, eigentlichen Zertifikate (sogenannte Leafs) kümmern. Das erlaubt es dem Root Zertifikat sogar, komplett vom Netzwerk genommen zu werden, um Angriffen vorherzukommen. Internetbrowser vertrauen standardmäßig einigen CAs. Sollte ein Zertifikat gefunden werden, welches nicht von diesen CAs ausgestellt wurde, muss der Nutzer manuell bestätigen, dass er dem Zertifikat vertraut, bevor der Browser Zugriff auf die Webseite zulässt.

Die Registration Authority

Um ein Zertifikat von einer CA ausgestellt zu bekommen muss eine Partei sich vorerst bei einer CA anmelden. Die CA prüft dann die Identität. Ist die Identität bestätigt, kann die Partei nun Zertifikate von dieser CA anfragen. Der Registrierungsprozess kann auch von einer Registration Authority (RA) übernommen werden. Die RA übernimmt dann die Überprüfung der Identität und fragt für den Nutzer der RA ein Zertifikat bei der CA an.

sequenceDiagram Client->>+CA: Certificate Signing Request CA->>+RA: Identifiziere Client RA-->>-CA: Client identifiziert CA->>CA: Signiert Client Zertifikat CA-->>-Client: Sendet signiertes Zertifikat

Certificate Signing Requests

Eine Anfrage für ein digitales Zertifikat nennt man Certificate Signing Request (CSR). Hierfür schickt die zu registrierende Person ihren öffentlichen Schlüssel an die CA und bittet sie, diesen zu signieren.

Die CA nimmt nun ihren privaten Schlüssel und signiert den öffentlichen Schlüssel des CSR damit. Das bedeutet nun, dass alle, die den öffentlichen Schlüssel der CA haben, diesen nutzen können um die Signatur zu verifizieren. Wenn dieser Vorgang funktioniert, weiß man, dass die CA den öffentlichen Schlüssel wirklich signiert hat.

sequenceDiagram Client->>+Client: Erstellt Schlüsselpaar Client->>-Client: Erstellt CSR mit
öffentlichem Schlüssel Client->>+CA: Sende CSR CA->>+RA: Identifiziere Client RA-->>-CA: Client ist identifiziert CA->>+CA: Privater Schlüssel (CA)
signiert
öffentlichen Schlüssel
des Clients CA-->>Client: sende signierten
öffentlichen Schlüssel Dritte Partei->Client: nutzt öffentlichen Schlüssel der CA um signierten
öffentlichen Schlüssel des Client zu entschlüsseln