Dieser Beitrag wurde von Roland Portmann für secnovum verfasst.
Wir hören in letzter Zeit vermehrt von «Man-In-The-Middle» Attacken oder von DNS-Angriffen. Bei Massnahmen gegen diese Attacken wird der Einsatz von Zertifikaten und von HTTPS empfohlen. In diesem Beitrag möchten wir deshalb folgende Fragen klären: Was ist ein Zertifikat? Wie wird es erstellt? Welchen Schutz bietet ein Zertifikat? Was bringt HTTPS? Wieso sollten alle Netzwerk-Devices und alle Webseiten mit Zertifikaten geschützt werden? Wieso sollen wir den Zertifikaten überhaupt vertrauen?
Ein Zertifikat beruht auf asymmetrischer Kryptographie
Bei der asymmetrischen Kryptographie gibt es immer zwei Schlüssel: Den öffentlichen Schlüssel darf jeder kennen, den privaten Schlüssel gibt man nie aus der Hand. Dabei gibt es zwei wichtige Anwendungen der asymmetrischen Verschlüsselung:
- Bei der asymmetrischen Verschlüsselung wird eine Meldung mit dem öffentlichen Schlüssel des Empfängers verschlüsselt. Der Empfänger kann mit seinem privaten Schlüssel die Meldung entschlüsseln und lesen. Die asymmetrische Verschlüsselung wird häufig eingesetzt, interessiert aber in diesem Artikel nicht.
- Bei der digitalen Unterschrift unterschreibt man mit dem privaten Schlüssel eine Meldung bzw. einen Datensatz. Jeder, der den öffentlichen Schlüssel einer Person besitzt, kann verifizieren, dass diese Meldung von dieser Person stammt. Das Problem ist: Wie weiss jemand, dass ein bestimmter öffentlicher Schlüssel einer Person zugeordnet ist? Hier kommen Zertifikate ins Spiel. Bei einem Zertifikat bestätigt eine vertrauenswürdige Stelle (Trusted Party), dass ein öffentlicher Schlüssel einer bestimmten Person (bzw. einer Webseite) tatsächlich zugeordnet ist. Die vertrauenswürdige Stelle verspricht also, dass bestimmte Identitätsangaben und ein öffentlicher Schlüssel zusammengehören.
Die Identitätsangaben können je nach Anwendung unterschiedlich sein:
- Die Identitätsangaben beziehen sich auf eine Person. Die Person kann mit Namen, Vornamen, E-Mail-Adresse, Firmenzugehörigkeit usw. identifiziert werden. Damit können beispielsweise in der Schweiz Dokumente rechtsgültig unterschrieben werden.
- Bei Webseiten wird typischerweise die URL (z.B. www.secnovum.ch) einem öffentlichen Schlüssel zugeordnet. Das Protokoll «https» überprüft, ob die URL der Webseite mit der URL im Zertifikat übereinstimmt. Das Protokoll «https» definiert, dass die Webseite das entsprechende Zertifikat zur Verfügung stellen muss.
- Bei einem Device oder einem Server wird der Servername als Identifikation verwendet.
- Bei einem Programm kann die Herausgeberfirma als Identifikation verwendet werden. Damit kann sichergestellt werden, dass diese Firma das Programm erstellt hat. Man spricht von Code Signing.
Wer sind diese vertrauenswürdigen Stellen, auch PKI (Public Key Infrastructure) genannt?
Diese sind Firmen oder Organisationen, die typischerweise vertrauenswürdig sind. Eine PKI kann sein:
- Eine private Firma, die von allen Beteiligten als vertrauenswürdig bezeichnet wird. Beispielsweise sind dies Firmen wie Verisign, SwissSign oder Quovadis. Diese Firmen nehmen einen Antrag für die Erstellung eines Zertifikates entgegen, prüfen mit unterschiedlichen Methoden die Identität des Antragstellers, stellen bei positiver Prüfung das Zertifikat aus und signieren es selbst mit ihrem eigenen privaten Schlüssel.
- Eine öffentliche Stelle, wie beispielsweise der Bund, der Zertifikate für bundesnahe Stellen ausstellt.
- Die eigene Firma (bzw. der IT-Provider), die nur Zertifikate für den internen Gebrauch ausstellt.
Vertrauen ist gut, Kontrolle besser
Auf jedem Rechner ist nun eine Liste von allen vertrauenswürdigen Stellen vorhanden. Sie können diese Liste selbst anschauen:
Im Windows-Menü «Zertifikate» eintippen und «Benutzerzertifikate verwalten» auswählen.
Unter «Vertrauenswürdige Stammzertifizierungsstellen» finden Sie alle Stammzertifizierungsstellen, denen ihr Computer vertraut.
Nun kommt das Problem: Vertrauen Sie wirklich all diesen Firmen? Vertrauen Sie chinesischen, südamerikanischen, russischen, amerikanischen PKI’s. Ziemlich undurchsichtig ist zudem auch die Art und Weise, wie diese Liste der PKI-Stellen gepflegt wird. Das Betriebssystem (resp. die Firma, die das Betriebssystem herstellt) möchte nicht, dass Sie ein Problem haben, weil die Liste nicht aktuell ist. Sie werden vermutlich feststellen, dass gleiche Rechner im Unternehmen eine unterschiedliche Liste haben. Auf meinen eigenen Rechnern habe ich zwischen 50 und 300 Einträge. Ich habe aber nie irgendwelche Angaben gemacht, welchen Firmen (PKI’s) ich explizit vertraue. Es wird noch komplizierter: Viele Browser (z.B. Firefox) haben eigene Listen und verwenden nicht die Liste vom Betriebssystem. Ziemlich abenteuerlich sind die Methoden, mit denen das Betriebssystem oder der Browser versucht, vor PKI’s zu warnen, die gehackt worden sind, also ungültige Zertifikate ausgestellt haben.
In der Praxis ist es aber für normale Hacker recht aufwändig, ein gefälschtes, aber gültiges Zertifikat von einer vertrauenswürdigen PKI (was das auch immer heisst) zu bekommen. Daher kann in der Praxis die Sicherheit in einer Firma erhöht werden, wenn konsequent mit Zertifikaten gearbeitet wird.
Wenn bei einem Webzugriff eine verschlüsselte Verbindung gewählt wird («https» anstelle «http»), kommen automatisch Zertifikate ins Spiel. Dabei wird primär überprüft, ob die eingetippte URL der URL im Zertifikat entspricht. Ansonsten wird die Warnung ausgegeben, dass mit dem Zertifikat etwas nicht korrekt ist. Aktuell verwenden immer mehr Webseiten das Protokoll «https».
Wichtig: Browser-Warnungen beachten!
Heute werden aber typischerweise auch viele Netzwerk-Devices über das Protokoll «https» administriert. Zudem geschieht heute die Administration von Servern über das Remote Desktop Protokoll, das ebenfalls mit Zertifikaten arbeitet. In diesen Zertifikaten müsste eigentlich der Hostname des Devices oder des Servers stehen. Dieser wird aber erst bei der Installation eingestellt. Eine korrekte Konfiguration des Netzwerk-Devices bedingt, dass auch ein entsprechendes Zertifikat installiert werden muss. Erfahrungen von Audits zeigen, dass dies viele Firmen nicht machen. Der Browser gibt dann eine Warnung aus. Die Administratoren gewöhnen sich daran, die Warnungen wegzuklicken und nicht ernst zu nehmen. Dies ist ein grundsätzliches Problem, das «Man-In-the-Middle-Angriffe» und «DNS-Spoofing» stark erleichtert. Bei einer korrekten Installation wird ein Request für das Zertifikat vom Device erstellt. Eine interne PKI erstellt daraus ein firmenweit gültiges Zertifikat, das anschliessend auf dem entsprechenden Device installiert wird. Der Zusatzaufwand ist gering, der Sicherheitsgewinn jedoch hoch. Die entsprechenden Funktionen unterstützt jedes Device, das «https» anbietet. Die Software für eine interne PKI ist gratis (resp. im Betriebssystem inbegriffen). Es ist also sinnvoll, jetzt dafür zu sorgen, dass keine Warnung mehr weggeklickt werden muss. Gemäss Browserhersteller sollen noch dieses Jahr Browserversionen veröffentlicht werden, die das Wegklicken nicht mehr erlauben. Spätestens dann müssen Sie handeln.