Eines der größten Probleme für die Sicherheit und Stabilität von Windows sind bisher die Einheitentreiber. Sie werden als Kernel-Komponenten ausgeführt und können damit eben auch viel Schaden im System anrichten. Um das Risiko zu verringern, hat Microsoft bei Windows Vista die Anforderungen erhöht und verlangt signierte Einheitentreiber. Dafür wird die Nutzung aber einfacher, weil normale Benutzer auf Treiber zugreifen können, die in einem so Driver Store gehalten werden, der von Administratoren konfiguriert werden kann. Die dort abgelegten Speicher lassen sich auch ohne administrative Berechtigungen installieren.
Die Driver Stores können auf dem lokalen System, aber auch im Netzwerk liegen. Für den Zugriff auf Treiber sind in diesem Fall keine zusätzlichen Datenträger erforderlich. Gleichzeitig hat das Konzept auch den Vorteil, dass Benutzer nur die explizit bereitgestellten Treiber installieren dürfen.
Treiber selbst signieren
Solange man nur mit Komponenten arbeitet, die bereits über einen signierten Treiber verfügen, ist der Umgang mit den Einheitentreiber unproblematisch. Wenn aber ein Treiber verwendet werden muss, der nicht signiert ist, muss man diesen – solange man ihn freigeben möchte – selbst signieren.
Außerdem muss man als Administrator in der Lage sein, ausgewählte Treiber im Driver Store bereitzustellen und die Clients so zu konfigurieren, dass sie auf diesen speziellen Speicherbereich zugreifen können.
Wenn ein Treiber in einem solchen Speicher vorhanden ist, wird er automatisch von den Plug- and- Play-Funktionen bei der Erkennung eines neuen Geräts erkannt und installiert. Das geschieht im Kontext des Benutzers und ohne weitere Eingriffe.
Um Treiber selbst signieren zu können, ist das Windows Driver Kit (WDK) zu installieren. Es enthält die Werkzeuge, die man für die digitale Signatur von Treibern benötigt. Konkret handelt es sich um drei Tools:
-
Makecert für die Erstellung von Zertifikaten.
-
Signability für die Erstellung eines nicht signierten Katalogs für ein Treiberpaket.
-
SignTool für die eigentliche Signatur der Treiber.
Um die Signatur durchführen zu können, benötigt man ein entsprechendes digitales Zertifikat, dessen Verwendungszweck auch die Signatur von Code umfasst. Ein solches Zertifikat kann intern über eine CA erstellt werden, wenn die Treiber nur intern genutzt werden sollen. Ansonsten ist ein Zertifikat einer externen CA erforderlich, der vertraut wird.
Paket bereitstellen
Das Zertifikat kann mit MakeCert erstellt werden, wenn nur ein Zertifikat für den internen Einsatz benötigt wird. Das Zertifikat muss bei den vertrauenswürdigen Stammzertifizierungsstellen eingefügt werden, um es nutzen zu können.
Um einen Einheitentreiber signieren zu können, ist es erforderlich, mit dem Tool Signability auf Basis der .inf-Datei des Treibers einen Katalog zu erstellen, der das Treiberpaket beschreibt und zunächst noch nicht signiert ist. Dieser Schritt entfällt, wenn das Treiberpaket bereits vom Hersteller signiert war und nur eine andere Signatur benötigt wird, weil beispielsweise die Herstellersignatur im internen Netzwerk nicht akzeptiert wird. Erst danach kann eine Signatur mit dem SignTool erstellt werden, die das Paket damit als vertrauenswürdig kennzeichnet.
Die Bereitstellung von Paketen in einem Driver Store erfolgt anschließend mit dem Werkzeug pmputil.exe. Damit kann es zunächst in einen lokalen Driver Store aufgenommen werden.
Um auf einen solchen Driver Store auf einem Server zuzugreifen, muss ein Registry-Parameter modifiziert werden. Es handelt sich um den Parameter DevicePath in
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
Dieser Pfad enthält alle Laufwerke, in denen sich Treiber befinden können und die automatisch durchsucht werden sollen. Hier können auch UNC-Pfadnamen für den Zugriff auf das Netzwerk angegeben werden.
Gruppenrichtlinien anpassen
Damit Benutzer die Geräte selbst installieren können, müssen abschließend noch die Gruppenrichtlinien angepasst werden. Dazu wird zunächst aus der .inf-Datei die ClassGUID ermittelt, also der eindeutige Identifier für die Klasse von Geräten. Im Bereich Computerkonfiguration/Administrative Vorlagen/System/Treiberinstallation kann hierzu die Option Installation von Treibern für diese Gerätesetupklassen ohne Administratorrechte zulassen bearbeitet und die GUID für die Klasse von Geräten angegeben werden (Bild 1).
Damit sind Benutzer in der Lage, Treiber zu installieren. Der letzte Schritt ist auch erforderlich, um andere, bereits korrekt signierte Treiber freizugeben, während die davor genannten Schritte nur bei nicht signierten Treibern durchgeführt werden müssen.