DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Kerstin Lahr Artikel Drucken
        
Mit dem .NET Framework digitale Signaturen erstellen

Digitale Signaturen werden verwendet, um die Integrität und Authentizität einer Assembly zu gewährleisten.
Eine Assembly mit einem starken Namen hat einen eindeutigen Namen, aber es ist mit keiner Vertrauensebene verknüpft, sprich nicht zertifiziert. Dies kann durch die Verwendung von Signcode erreicht werden. Durch Signcode müssen Publisher ihre Identität gegenüber einer dritten Stelle beweisen und ein Zertifikat anfordern. Anhand von diesem Zertifikat kann dann der Benutzer entscheiden, ob die Assembly vertrauenswürdig ist.

Der starke Name und Signcode können gemeinsam, aber auch einzeln verwendet werden. Wenn Sie beides verwenden wollen, müssen Sie zuerst den starken Namen erstellen.
Während der starke Name in der Datei mit dem Assemblymanifest gespeichert ist, wird die Signcode-Signatur in einem reservierten Slot der PE (Portable Executable, übertragbare ausführbare Datei) mit dem Manifest gespeichert.

Die Common Language Runtime führt darüber hinaus eine Hashüberprüfung durch: Das Assemblymanifest enthält eine Liste aller Dateien, aus denen die Assembly besteht, einschließlich eines Hash für jede Datei, wie sie beim Erstellen des Manifests vorlag. Beim Laden der einzelnen Dateien wird ein Hash des Inhalts erstellt und mit den im Manifest gespeicherten Hashwerten verglichen. Wenn die zwei Hashs nicht übereinstimmen, wird die Assembly nicht geladen.
Alle genannten Technologien (Hashüberprüfung, starke Namen und Signcodes) gewährleisten gemeinsam, dass die Assembly in keiner Weise geändert werden kann.

Die Signcode-Signatur erstellen Sie mit dem File Signing-Tool (Signcode.exe). Zuvor brauchen Sie aber ein gültiges digitales Zertifikat und einen privaten Schlüssel. Das Zertifikat erhalten Sie von einer Zertifizierungsstelle, beispielsweise VeriSign oder Thawte.

Zu Testzwecken können Sie mit dem Certification Creation-Tool(Makecert.exe) und dem Software Publisher Certificate Test-Tool(Cert2spc.exe) selbst eines erstellen.

Dabei wird der Standard X.509 für Zertifikate und Authentifizierungsdienste benutzt. X.509 ist Bestandteil des Verzeichnisdienstes X.500 für weltweite, verteilte und offene Systeme und verwendet die abstrakte Beschreibungssyntax ASN.1 (Abstract Syntax Notation One). Es enthält die Seriennummer, die Ausgabestelle, den Personen- und Server-Namen, das benutzte Public-Key-Verfahren und den öffentlichen Schlüssel der Person und des Servers. Es folgt die digitale Unterschrift sowie die Signatur der Person bzw. des Servers.
S/MIME und SSL basieren auf dem X.509-Format.

Das Certificate Creation-Tool erstellt ein Schlüsselpaar aus einem öffentlichen und einem privaten Schlüssel für digitale Signaturen und speichert diese in einer X.509-Zertifikatsdatei.

Der folgende Befehl erstellt ein Testzertifikat und schreibt dieses in TestZertifikat.cer:

makecert TestZertifikat

Der folgende Befehl erstellt ein Zertifikat mit dem X.500-Namen ?meine Firma? und dem Schlüsselcontainer meinContainer, der den privaten Schlüssel enthält, und schreibt dieses in TestZertifikat.cer:

makecert -sk meinContainer -n "CN=meine Firma" TestZertifikat.cer

Es gibt noch weitere Basis- und auch erweiterte Optionen, die die Signaturerstellung sehr flexibel machen.
Der Befehl

makecert -?

zeigt die Befehlssyntax mit einer Liste der Basisoptionen für das Tool an, während

makecert -!

die Syntax mit einer Liste der erweiterten Optionen für das Tool anzeigt.

Das Software Publisher Certificate Test-Tool erstellt ein SPC (Software Publisher's Certificate, Softwareherausgeberzertifikat) aus einem oder mehreren X.509-Zertifikaten.
Der Befehl dafür ist denkbar einfach. Sie geben den bzw. die Namen eines oder mehrerer X.509-Zertifikate durch Leerzeichen getrennt nacheinander an und am Schluß den Namen des zu erstellenden SPC, z.B.:

cert2spc meinZertifikat.cer meinSPC.spc

bzw.

cert2spc Zertifikat1.cer Zertifikat2.cer meinSPC.spc

Die SPC-Datei können Sie dann als Eingabe für das File Signing-Tool (Signcode.exe) verwenden.

Beim Ausführen von Signcode.exe ohne Parameter wird ein Assistent gestartet, der Sie beim Signieren unterstützt. Das ist sehr praktisch, da ca. zwei Dutzend Optionsparameter zur Verfügung stehen.
Ist der private Schlüssel in einer .pvk (private key) Datei, müssen Sie die Optionen ?spc und ?v angeben:

signcode /spc meinSPC.spc /v meinKey.pvk meineAssembly

Ist er dagegen in einem Schlüsselcontainer, geben Sie ?spc und ?k an:

signcode /spc meinSPC.spc /k meinContainer Signiert.exe

Weitere Optionen sind z. B.:

-a algorithm Gibt den Hashalgorithmus md5 (Standard) oder sha1 für die Signierung an.
-ky keytype Gibt den Schlüsseltyp an (signature, exchange oder eine ganze Zahl).
-r location Gibt den Speicherort für Zertifikate in der Registrierung an.
Dieser muss currentuser (Standard) oder localmachine sein.

Der Befehl

signcode -?

zeigt die Befehlssyntax und alle Optionen für das Tool an.

Wie Sie sehen, stellt das .NET Framework also einige Tools zur Verfügung, um Integrität und Authentizität einer Assembly zu gewährleisten, um somit den Endbenutzern zu beweisen, daß Ihre Anwendung von Ihnen und niemand Anderem erstellt bzw. verändert wurde.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 30.09.2003
  Gültig bis: 29.12.2003
12 Ratings
Bewertung: 68,3%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG