Tag 25: Mein Code oder sein Code?
Installieren Sie Software aus dem Internet? Kaufen Sie im Internet ein? Ich schon. Sie wahrscheinlich auch. Ich habe da auch keine Angst vor – zumindest solange ich mir sicher sein kann, dass die Anwendung bzw. Webseite von dem Anbieter ist, von dem ich denke, dass sie ist.
Bösewichte im Internet verdienen mittlerweile Millionen mit dem Fälschen von Webseiten. Grund genug, an der Identität unserer Software zu arbeiten!
Identität ist alles
Benutzern wird es nicht anders gehen als Ihnen: Sie sind wohl kaum in der Lage zu erkennen, ob es sich wirklich um ’unser’ Produkt handelt oder ob jemand bösartigen Code einschleust. Auch die UAC-Meldungen von Vista zeigen den Herstellernamen – soweit bekannt – an.
Damit auch unser Herstellernamen von unseren Dateien abgelesen werden kann, müssen wir die ausführbaren Dateien (.exe, .dll, .ocx, .sys, .cpl, .drv, .scr) signieren. Dazu benötigen wir ein Zertifikat, welches für das sogenannte "Codesigning" taugt (das bekannte SSL-Zertifikat reicht hier also nicht), das wir wiederum bei einer der autorisierten Zertifizierungsstellen – gegen Vorlage unseres Ausweises – beantragen müssen.
Das tatsächliche Signieren der Dateien mit unserem Zertifikat können wir ganz elegant in den Buildprozess einbauen. Aber Achtung: das Zertifikat sollte sehr sicher aufbewahrt werden. Fällt es in die falschen Hände, können andere unter unserem Namen Updates verteilen (glücklicherweise lassen sich Zertifikate auch widerrufen, so wie man auch Kreditkarten sperren kann). Für den Entwicklungs- und Testbetrieb können auch selbstausgestellte Testzertifikate eingesetzt werden.
Welche Tools wir nun für das Signieren benötigen und wie das genau funktioniert, erklärt zum Glück Kollege Dariusz Parys in einem MSDN How-to-Guide. Die Einbindung in einem MSBuild-Buildprozess veranschaulicht uns Wintellect-Mann John Robbins – und berichtet dabei, das Zertifikate gar nicht so teuer sind wie man häufig denkt.
Auswirkungen auf die UAC
Nach dem Signieren kann man unter Vista auch schon erste Veränderungen feststellen, denn der Dialog für das Heraufstufen von Anwendungen unterscheidet zwischen signierten Anwendungen und unsignierten Anwendungen:
1. Für Betriebssystems-Komponenten

2. Für signierte Anwendungen

3. Für unsignierte Anwendungen

Ohne Zertifikat fällt Ihre Software in die dritte Kategorie – zusammen mit jeglichen Programmen und Viren, die man im Internet kostenfrei und zum Teil unfreiwillig erhält.
Interessant ist auch die Beobachtung, dass bei der dritten Variante sowohl der Text der "OK-Schaltfläche" ein anderer ist ("Zulassen" statt "Fortsetzen") als auch – in logischer Konsequenz – die Tastenkombination. Nächste Woche lautet der Schwerpunkt „Neue Programmierschnittstellen in Windows Vista“. Viele der neuen Funktionen bieten unter der Haube nämlich ein API an! Nein, kein .NET, sondern nativ oder, wenn man es richtig gut mit uns gemeint hat, auch mal eine COM-Schnittstelle. Aber auch das sollte den eingefleischten .NET-Entwickler vor keine allzu großen Hürden stellen.
Ein erholsames Wochenende und bis nächste Woche!
Ihr Neno Loje
P.S. Übrigens: Signierte Dateien erkennt man in den Dateieigenschaften durch das Vorhandensein des Tabreiters "Digital Signaturen". 
P.P.S.: Microsoft spielt mit dem Gedanken, in Zukunft nur noch Software mit Adminrechten laufen zu lassen, die auch signiert ist, d.h., wo der Hersteller zweifelsfrei festgestellt werden konnte. |  Neno Loje Freier Berater & Fachautor Sie haben Fragen zu Visual Studio Team System (VSTS) oder Anregungen und Kommentare zu meinem Vista-Tagebuch? Dann freue ich mich auf Ihre Nachricht. 
|