V. Digitale Signaturen mithilfe von Asymmetrischer Kryptographie
Neben dem sicheren Verschlüsseln einer Nachricht interessiert man sich oft auch für die Integrität und die Authentizität einer Nachricht.
Integrität bedeutet: Die Nachricht wurde unterwegs nicht durch eine Drittperson (Eve) verändert.
Authentizität bedeutet: Die Nachricht stammt tatsächlich vom vorgegebenen Absender. D.h. Eve kann nicht Nachrichten im Namen von Alice oder Bob verschicken.
Mithilfe der Public-Key-Kryptographie kann sowohl das Problem der Integrität, als auch dasjenige der Authentizität gelöst werden. Vom Prinzip her läuft dies folgendermassen:
Alice berechnet z.B. mit SHA256 den Hash-Wert ihrer Nachricht und verschlüsselt diesen mit ihrem privaten Schlüssel (Signatur) und fügt diesen und auch den unverschlüsselten Text zu ihrer Nachricht hinzu. Nun kann jeder mit dem öffentlichen Schlüssel von Alice den Hash entschlüsseln und dadurch prüfen, ob die Nachricht von Alice denselben Hashwert generiert. Dadurch ist sichergestellt, dass die Nachricht tatsächlich von Alice stammt (nur ihr öffentlicher Schlüssel entschlüsselt den Hashwert korrekt) und dass die Nachricht nicht verändert wurde (sonst würde der Hashwert nicht übereinstimmen).
Das Ganze funktioniert, da die Ver- bzw. Entschlüsselung reziprok ist, d.h. wenn man eine Nachricht mit dem öffentlichen Schlüssel verschlüsselt, kann man sie nur durch den privaten Schlüssel entschlüsseln und wenn eine Nachricht mit dem privaten Schlüssel verschlüsselt wird, kann man sie nur durch den öffentlichen Schlüssel entschlüsseln.
1 Zertifizierungsstellen (Certificate Authorities) und Zertifizierungsketten
1.1 Digitale Signatur durch Asymmetrische Kryptographie
Ein digitales Zertifikat für eine Webseite enthält typischerweise den Domainnamen und den öffentlichen Schlüssel der Webseite, ein Ablaufdatum und und die Signatur einer Zertifizierungsstelle. Es bestätigt, dass der öffentliche Schlüssel tatsächlich zur entsprechenden Webseite gehört (Authentizität).
Die Erstellung einer digitalen Signatur mit einem asymmetrischen Verfahren wie RSA funktioniert im Prinzip umgekehrt zur Verschlüsselung:
- Signieren: Eine Nachricht wird mit dem privaten Schlüssel des Absenders verschlüsselt. Da nur der Absender im Besitz dieses Schlüssels ist, kann auch nur er diese Operation durchführen. In der Praxis wird oft nicht die gesamte Nachricht, sondern deren Hashwert signiert.
- Verifizieren: Der Empfänger kann die Signatur mit dem öffentlichen Schlüssel des Absenders entschlüsseln. Ist das Ergebnis ein kohärenter Text (oder stimmt der Hashwert überein), hat der Empfänger die Gewissheit über die Authentizität und Herkunft der Nachricht.
1.2 Zertifizierung einer Webseite mit Signatur einer Zertifizierungsstelle (CA)
Eine Zertifizierungsstelle ist eine vertrauenswürdige dritte Partei, die die Echtheit von öffentlichen Schlüsseln bestätigt. Eine Website muss beispielsweise gegenüber einer CA beweisen, dass sie der Inhaber einer Domain ist. Daraufhin signiert die CA das Zertifikat der Website, welches den öffentlichen Schlüssel und den Domainnamen enthält.
Dieses Signieren geschieht folgendermassen: Die CA verschlüsselt die zu bestätigenden Informationen (in der Praxis oftmals nur den Hashwert) mit ihrem privaten Schlüssel . Nun kann jeder das Zertifikat nehmen und mit dem öffentlichen Schlüssel der Zertifizierungsstelle prüfen, ob die Informationen korrekt sind.
1.3 Chain of Trust
Es gibt sogenannte Stammzertifizierungsstellen (Root CAs), z.B. DigiCert Inc, Global Sign, Entrust, Sectigo, Let's Encrypt etc. Diesen Ausstellern vertraut der Browser per Definition, d.h. er hat die öffentlichen Schlüssel und kann damit prüfen, ob ein Zertifikat von diesen Root CAs signiert wurde.
Die Root-CAs können ihrerseits Zertifikate für Zwischenzertifizierungsstellen (Intermediate CAs) signieren. Wenn ein Browser sich mit einer Webseite verbindet, erhält er eine Kette von Zertifikaten. Der Browser prüft die Signatur jedes Zertifikats in der Kette, bis er auf ein Zertifikat stößt, das von einer ihm bekannten Root CA signiert wurde. Dieses Prinzip des transitiven Vertrauens (Wenn A B vertraut und B C vertraut, dann kann A auch C vertrauen) ermöglicht es, Vertrauen in großem Maßstab zu skalieren und wird Public-Key-Infrastruktur (PKI) genannt.
Dieses System, das insbesondere bei TLS/SSL-Verbindungen im Internet (HTTPS) zum Einsatz kommt, bildet die Grundlage für die Authentifizierung im Web. In der Abbildung unten ist der Chain-of-Trust der Seite nzz.ch dargestellt (Zertifikat war am Tag des Besuchs seit einigen Stunden abgelaufen).
