Windows Vista: Signierte Einheitentreiber

15.12.2006 von Martin Kuppinger
Windows Vista unterstützt nur noch signierte Einheitentreiber. Das bedeutet aber, dass zusätzliche Treiber, die nicht signiert sind, gegebenenfalls vorab entsprechend angepasst werden müssen, um genutzt werden zu können.

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:

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).

Bild 1: Die Schnittstelle für die Freigabe von Treibern zur Installation durch Benutzer.

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.