3 Digitale
Signaturen und Zertifikate
3.1 Digitale Signatur
Die digitalen
Signaturen kombinieren Public Key- Verschlüsselungsverfahren mit
Hashwerten, um die Authentizität eines Dokumentes nachzuweisen.
Dabei wird serverseitig der Hash des Dokumentes mit dem privaten
Schlüssel verschlüsselt. Das Dokument wird mit dem
verschlüsselten Hash erweitert und an den Client gesendet. Die
Kombination aus Test und verschlüsselten Hash wird signiertes
Dokument genannt. Der Client trennt den verschlüsselten Hash
vom Dokument wieder ab. Danach entschlüsselt der Client den Hash
mit seinem öffentlichen Schlüssel und vergleicht diesen mit
dem aktuellen Hash des Dokumentes. Stimmen beide überein, dann
folgt daraus. dass das Dokument während der Übertragung
nicht durch einen Dritten geändert wurde.
3.2 X 509 Zertifikate
X 509 ist ein
Standard zur Verwaltung von öffentlichen Schlüsseln
asymmetrischer Verschlüsselungsverfahren im Netz. Entwickelt
wurde dieser im Rahmen des X 500 Standards für
Netzwerkverzeichnisse (Datenbank zur Verwaltung von
Netzwerkressourcen). Zertifikate können als Objekte aus einem
Verzeichnisdienst betrachtet werden, in denen für
Netzwerkressourcen wie Dienste oder Dokumente die öffentlichen
Schlüssel zur Signierung und Verschlüsselung aufbewahrt
werden.
3.2.1 Was ist mit den privaten Schlüsseln ?
Die privaten
Schlüssel zu den in Zertifikaten veröffentlichten
öffentlichen Schlüssel müssen an einem gut geschützten
Ort im Netz aufbewahrt werden. Sie sind damit kein Bestandteil der
Zertifikate !
Wenn z.B. ein
Webdienst asymmetrische Verschlüsselung für sog. SSL
(Secure Socket Layer) Protokolle zum Einrichten verschlüsselter
Kanäle einsetzt, dann muss er lesenden Zugriff auf die Datei mit
dem privaten Schlüssel haben. Natürlich sollte außer
diesem Dienst niemand weiteres im Netz Zugriff auf diese Datei
besitzen.
Das Paar aus privaten
und öffentlichen Schlüsseln kann durch einen
Zertifikats-dienst (CA, siehe unten) erzeugt werden. Diese können
dann in speziell gesicherten Dateien exportiert werden, um das
Zertifikat samt privaten Schlüssel zum Serversystem zu
transportieren. Dort ist das Zertifikat dann im Zertifikatspeicher
(einer Partition des Verzeichnisdienstes) zu installieren. Dabei wird
der private Schlüssel in eine Datei an einen geheimen Ort
kopiert. Dem Verzeichnis ist der Aufenthaltsort der Datei mit dem
privaten Schlüssel bekannt, und der Dienst, welcher das
Zertifikat einsetzt, kann diese über das Verzeichnis orten und
so den privaten Schlüssel laden. Jedoch ist sicherzustellen,
dass der Dienst auch Leserecht auf die Datei mit dem privaten
Schlüssel hat. Mittels Tools wie FindPrivateKey.exe aus
den Demos von WCF kann man die Datei über den CN des Subjektes
eines Zertifikates orten, und dann die Leserechte für die
Dienstidentität überprüfen (und gegebenenfalls zu
setzen).
3.2.2 Struktur
Ein Zertifikat ist
eine Verzeichnisobjekt. Dieses hat folgenden Aufbau:
Attribut
|
Inhalt
|
Public Key
|
Der öffentliche Schlüssel, mit dem
Datenpakete an den Dienst verschlüsselt werden können,
bzw. Signaturen vom Dienst überprüft werden können.
|
Seriennummer
|
|
Aussteller
|
Name des Ausstellers (z.B. Verisign, Thawte
etc.)
|
Gültigkeitsdatum
|
Nach dem Datum gilt das Zertifikat als
ungültig, und der öffentliche Schlüssel darf nicht
mehr verwendet werden.
|
Subjekt (Antragsteller)
|
Name des
Subjektes, für das das Zertifikat ausgestellt wurde (z.B. der
URL der Webseite oder des Webdienstes).
(L)DAP Elemente
|
CN
|
Common Name
|
URL der Webseite oder des Webdienstes)
|
C
|
Country
|
Land, in dem das Subjekt existiert
|
ST
|
State
|
Staat/ Bundesland, in dem das Subjekt
existiert
|
L
|
Location
|
Ort, in dem das Subjekt existiert
|
O
|
Organisation
|
Organisation/Firma, in der das Subjekt
existiert
|
OU
|
Organisation Unit
|
Abteilung, in der das Subjekt existiert
|
|
Signatur
|
Eine digitale
Signatur. Diese entsteht aus einen MD5 Hash aus öffentlichen
Schlüssel und den restlichen Infos. Der MD5 Hash wird mit dem
privaten Schlüssel des Ausstellers (CA, siehe unten)
verschlüsselt.
|
Verweis auf
Stammzertifikat
|
Zertifikat der CA
(siehe unten), das den öffentlichen Schlüssel zum Prüfen
der Signatur enthält.
|
3.2.3 Prinzip der Vertrauensbildung
Da die öffentlichen
Schlüssel aus Zertifikaten genutzt werden, um die Gültigkeit
digitaler Signaturen zu prüfen und vertrauliche Nachrichten wie
Passwörter an einen Server zu senden, muss sichergestellt
werden, dass die öffentlichen Schlüssel tatsächlich
die Originalen sind. Sonst könnte ein Angreifer (Hacker) im Netz
unbemerkt manipulierte Dienste mit manipulierten öffentlichen
Schlüsseln anbieten. Die Folgen für die Sicherheit wären
fatal.
Die Zertifikate
werden deshalb wieder mit digitalen Signaturen abgesichert. Dabei
wird mit einem besonders gesicherten privaten Schlüssel
signiert, der im Besitz der sogenannten Certificate Authority (CA)
ist. Die CA- s sind gut
geschützte Dienste, welche neue Zertifikate auf Antrag hin
ausstellen, und eine Liste aller bereits ausgestellten Zertifikate
verwalten. Der besondere Schutz und die sorgfältige Verwaltung
der ausgestellten Zertifikate macht diese vertrauenswürdig.
Jeder Client eines
Zertifikatsdienstes (CA) kann prüfen lassen, ob ein gegebenes
Zertifikat vom CA ausgestellt wurde. So stellt der Client sicher,
dass ein öffentlicher Schlüssel zum Verschlüsseln von
Nachrichten an einen Dienst der Originale ist.
3.2.4 Implementierung der Vertrauensbildung
Auch die öffentlichen
Schlüssel einer CA, mit der die Signatur eines Zertifikates
geprüft werden kann, wird bei der CA in einem Zertifikat
aufbewahrt. Auch dieses muss signiert werden. Benutzt die CA dazu den
zum öffentlichen Schlüssel des Zertifikates passenden
privaten Schlüssel, dann spricht man vom "selbssignieren".
Solche Zertifikate werden als Stammzertifikate bezeichnet.
3.3 Schlüsseltausch
Die Verschlüsselung
mit asymetrischen Verfahren ist sehr rechenaufwändig. Deshalb
wird zum Verschlüsseln von Datenströmen in der Regel ein
symmetrisches Verfahren eingesetzt, dessen Aufwand deutlich geringer
ist. Das Problem der symmetrischen Verfahren, im Sender als auch im
Empfänger den gleichen Schlüssel zu installieren, ohne
dabei vom Feind ausgespäht zu werden, wird mittels
asymmetrischer Verfahren und Zertifikaten gelöst.
Dabei generiert der
Client mittels eine Zufallszahlengenerators einen Schlüssel für
die symmetrische Verschlüsselung. Mit dem öffentl.
Schlüssel aus dem Serverzertifikat wird der generierte Schlüssel
verschlüsselt und an den Server gesendet. Dieser entschlüsselt
mit dem zum Zertifikat gehörenden privaten Schlüssel das
empfangene Paket und erhält so den gleichen Schlüssel für
die symmetrische Verschlüsselung wie der Client. Das Verfahren
wird als Schlüsseltausch bezeichnet.
3.4 Einrichten der AD Zertifikatdienste unter Windows
Server 2008
Mit den Zertifikatdiensten wird eine Certificate
Authority (CA) auf einem Windows- Server als Teil des AD (Active
Directory) Verzeichnisdienstes eingerichtet.
3.4.1 Zu installierende Rollendienste
Server Manager
+-> AD-Zertifikatdienste
+-> Rollendienste
+-> Zertifizierungsstelle
+-> Zertifizierungsstellen- Webregistrierung
Die Zertifizierungstelle stellt die CA dar.
Sie gibt Zertifikate aus, führt über die ausgestellten
Zertifikate Buch und definiert die Schemen für
Zertifikatobjekte.
Die Zertifizierungstelle- Webregistrierung
ist eine Webanwendung, die im IIS installiert wird (http://<Default-
Webseite>/CertSrv). Mit dieser können neue Zertifikate
angefordert werden. Wird für die CertSrv- Webanwendung eine
Bindung für https eingerichtet, dann werden die angeforderten
Zertifikate auch heruntergeladen und im lokalen Speicher für
Zertifikate abgelegt.
3.4.1.1 Konsole der Zertifizierungsstelle
Über diese Konsole können z.B. alle
bereits Ausgestellten Zertifikate eingesehen werden. Auch alle
misslungenen Anforderungen werden aufgelistet.
In den Zertifikatsvorlagen sind alle Schemen für
Zertifikatsobjekte aufgelistet. Hier kann man auch eigene Schemen
hinzufügen (allerdings erst in der Enterprise- Version von
Windows Server 2008), um z.B. Zertifikate für Webserver mit
einer längeren Gültigkeitsdauer zu erzeugen.
3.4.1.2 Zertifizierungsstelle- Webregistrierung
Mit diesen Tool können neue Zertifikate von
der Zertifizierungsstelle abgerufen werden. Diese sind dann mit dem
Stammzertifikat der Zertifizierungsstelle signiert (also nicht
selbstsigniert !). Zudem können hier alle möglichen Typen
von Zertifikate beantragt werden. Allerdings setzt dies voraus, daß
keine Anonyme Anmeldung an das Tool möglich ist (IIS-
Authentifizierungseinstellungen überprüfen !).
3.5 Alternative zur selbstverwalteten
Zertifizierungsstelle
Im Intranet sind die selbstverwalteten AD-
Zertifikatsdienste sinvoll. Wenn aber auf Dienste auch über das
Internet zugegriffen werden soll, ist die Nutzung von externen
Dienstleistern, die Zertifikatsdienste im Internet anbieten
(Verisign, GoDaddy etc.) einfacher, da die Administration des
externen Zugriffs auf die eigenen Zertifikatsdienste entfällt.
Auch haben die Browser bereits die Stammzertifikate der Marktführer
vorinstalliert. Mit den öffentlichen Schlüsseln dieser wird
ja die Signatur der ausgestellten Serverzertifikate geprüft.
Dadurch werden die durch diese Dienstleister ausgestellten
Serverzertifikate sofort von den Clients bestätigt, ohne vorher
ein eigenes Stammzertifikat manuell auf diesen installieren zu
müssen. Ein Vorteil insbesondere auf mobilen Clients (z.B.
Smartphones), bei denen die installation eigener Clients u.U.
unmöglich ist.
Allerdings lassen sich die externen Dienstleister
ihre (Lobby-)Arbeit gut bezahlen: die Zertifikate werden meist auf
ein Jahr zeitlich befristeten ausgestellt. Es fallen damit jedes Jahr
erneut Kosten für die Zertifikate an.